MapServer クイックスタート¶
MapServerは、 オープンソース サーバーベースのアプリケーションであり、 Web Map Service (WMS) 、 Web Feature Service (WFS) 、 Web Coverage Service (WCS) などの OGC Standards を使用して、インターネットを介して地理的地図の画像やベクタデータを公開できます。
目次
Mapfile設定ファイルを使用してMapServerを設定する¶
注釈
何を学べますか? ここでは、Mapfileの概要と、MapServerがWMS要求を使用してシェープファイルをイメージとして処理できるように設定する方法について説明します。
Mapfileとは¶
Mapfile は、MapServerが空間データをイメージまたはベクタデータとしてレンダリングするために使用する設定ファイルです。その主な目的は、描画できるレイヤ、必要なデータの読み方、レンダリング方法(色、シンボル、ラベルなど)を定義することです。
はじめてMapfileを作成する¶
任意のテキストエディタを開きます(例
)。"mapserver_quickstart.map"を、ホームディレクトリ:
/home/user/mapserver_quickstart.map
に作成します。次の内容を入力します:
MAP NAME "MAPSERVER_QUICKSTART" EXTENT -137 29 -53 88 UNITS DD SHAPEPATH "/home/user/data/natural_earth2/" SIZE 800 600 IMAGETYPE PNG24 PROJECTION "init=epsg:4326" END WEB METADATA ows_title "MapServer Quickstart" ows_enable_request "*" ows_srs "EPSG:4326 EPSG:25832 EPSG:25833" END END LAYER NAME "Countries" STATUS ON TYPE POLYGON DATA "ne_10m_admin_0_countries" CLASS STYLE COLOR 246 241 223 OUTLINECOLOR 0 0 0 END END END END
注釈
この例では、既にOSGeoLive上の
~/data/natural_earth2
(/usr/local/share/data/natural_earth2
へのショートカット)にある自然地球データセットを使用しています。
Mapfile内の各オブジェクトは、名前(MAP など)で始まり、 END で終わります。Mapfileは常に MAP オブジェクトで始まり、Mapfileが読み取って描画できる LAYER オブジェクトのリストを含む必要があります。このMapfileでは、いまのところ1つのレイヤのみが定義されています。
Mapfileで定義されているオブジェクト(およびプロパティ)をいくつか見てみましょう。
EXTENT:この設定のデフォルトの空間境界ボックスを設定します。
LAYER: 空間データセットのアクセスプロパティと表示プロパティを定義します。レイヤは後で追加します。
SHAPEPATH:ファイルベースのデータ(シェープファイルやTIFFイメージなど)のベースパスを設定します。
Mapfileの LAYER をよく見ると、このファイルにはたくさんのプロパティーとオブジェクトも含まれていることがわかります。その中には次のようなものがあります
STATUS: レイヤを描画できる(ON)か、描画できない(OFF)か、常に描画する(DEFAULT)かを定義します。
TYPE: MapServerがデータをイメージとしてレンダリングするときに使用するジオメトリタイプ。このMapfileでは、データは ポリゴン として描画されます。
DATA:このレイヤが使用する空間データファイル(この場合はシェープファイル)の名前。
CLASS: レイヤの描画方法(スタイル設定)を決定します。このオブジェクトについては、後で詳しく説明します。
注釈
Mapfileで使用できるオブジェクトとプロパティの完全なリストは、 MapServerドキュメントページ にあります。
WMSの GetMap 要求を使用してMapServerで地図イメージをレンダリングする¶
注釈
何を学べますか? OGC WMS要求を使用して、MapServerを使用してMapfileからレイヤを含むイメージをレンダリングする方法を学習します。
Webブラウザを開き、次のURLを入力します。
http://localhost/cgi-bin/mapserv?map=/home/user/mapserver_quickstart.map&SERVICE=WMS&REQUEST=Getmap&VERSION=1.1.1&LAYERS=Countries&SRS=EPSG:4326&BBOX=-137,29,-53,88&FORMAT=PNG&WIDTH=800&HEIGHT=600
上記はどういう意味ですか? 簡単に言うと、これは Web Map Service (WMS) の GetMap 要求であり、 "次のMapfileを使用して、イメージサイズ、地理的範囲、投影などのユーザ指定のパラメータに基づいて、指定されたレイヤをpngイメージとしてレンダリングする" ようMapServerに指示します。Mapfileで STATUS ON を持つ "&LAYERS=..." プロパティで指定されたすべてのレイヤは、 STATUS DEFAULT を持つすべての画層に加えてレンダリングされます。結果は次のようになります。
注釈
要求のすべてのパラメータは、MapServer固有の "?map=/home/user/mapserver_quickstart.map" を除き、WMS固有です。
コマンドラインを使用してMapServerで地図イメージをレンダリングする¶
MapServerはウェブアプリケーション向けだが、コマンドラインで画像を生成することもできます。これは、反復マッピングを探している場合やデバッグ中に便利です。
ターミナルを開き(
)、次のように入力します。shp2img -m mapserver_quickstart.map -o mymap.png
このコマンドが正常に実行されると、file:///home/user/mymap.png でレンダリングされたマップを表示できます。
新しいレイヤをMapfileに追加して、ローカルシェープファイルを提供する¶
注釈
何を学べますか? 新しいレイヤオブジェクト定義をMapfileに追加する方法を学習します。
次に、新しいレイヤをMapfileに追加します。Mapfileの最後の END 文の前に、次のレイヤ設定を追加します。
LAYER
NAME "Lakes"
STATUS ON
TYPE POLYGON
DATA "ne_10m_lakes"
CLASS
STYLE
COLOR 153 179 204
END
END
END
これで、Mapfileに2つのレイヤ定義が作成されました。ここで追加した新しいオブジェクトの "STATUS" プロパティが "ON" に設定されていることに注意してください。具体的にお願いしないと出せないということですね。
前述のWMSの GetMap 要求を受け取り、レンダリングしたイメージに新しい "Lakes" レイヤを追加します。 "LAYERS" プロパティリストに新しいレイヤ名を追加するだけです。
http://localhost/cgi-bin/mapserv?map=/home/user/mapserver_quickstart.map&SERVICE=WMS&REQUEST=Getmap&VERSION=1.1.1&LAYERS=Countries,Lakes&SRS=EPSG:4326&BBOX=-137,29,-53,88&FORMAT=PNG&WIDTH=800&HEIGHT=600
MapServerによってレンダリングされたイメージは、前のマップに似ていますが、新しいレイヤから湖が追加されています。
マップファイル設定を使用してレイヤのスタイルを設定する¶
注釈
何を学ベますか? レイヤ内の要素のスタイル設定の例が、データプロパティの一部に応じて表示されます。
Mapfileでは、LAYERオブジェクトに無限個のCLASSオブジェクトを含めることができます。これらは、空間データファイル(DATA)に含まれる要素のスタイルを設定するために使用されます。たとえば、 ogrinfo などのツールを使用して "ne_10m_lakes" データファイルを詳しく調べると、このファイルに含まれるジオメトリと属性定義がわかります。 これらの属性値は、複数のCLASSオブジェクトを使用してデータセット内の要素を異なる方法で描画する方法として使用できます。
"ne_10m_lakes" データセットには、湖の大きさに関係すると思われる ScaleRank 属性がある。これを使って湖を違った形にレンダリングすることができます。LAYERオブジェクトでは、現在のオブジェクトの直前に別のCLASSオブジェクトを追加します。
LAYER
NAME "Lakes"
STATUS ON
TYPE POLYGON
DATA "ne_10m_lakes"
CLASSITEM "ScaleRank"
CLASS
EXPRESSION /0|1/
STYLE
COLOR 153 179 204
OUTLINECOLOR 0 0 0
END
END
CLASS
STYLE
COLOR 153 179 204
END
END
END
新しいCLASSオブジェクトは何をしますか?基本的には、MapServerに対して、 "0" または "1" に等しい "ScaleRank" プロパティを持つ要素を黒いアウトラインで描画するように指示します。クラスオブジェクトは、描画されるフィーチャごとに常に上から下に読み込まれます。フィーチャがクラスで指定された "EXPRESSION" に一致すると、そのクラスはフィーチャをレンダリングします。フィーチャがクラスと一致しない場合、次のクラスがチェックされます。フィーチャがどのクラスとも一致しない場合、フィーチャはまったくレンダリングされませんが、レイヤの最後のクラスにEXPRESSIONが含まれていない場合、そのクラスがデフォルト値として機能します。LAYERの "CLASSITEM" プロパティは、CLASSオブジェクトで定義された式を評価するときに使用する属性をMapServerに伝えます。
この新しい追加の結果、地図イメージ内の大きな湖が黒いアウトラインでレンダリングされます。
注釈
MapServerの EXPRESSIONS の詳細をご覧ください。
データをOGC WMS(Web Map Service)としてパブリッシュする¶
MapServerは、OGC WMS、WFS、WCSなど、さまざまなOGC標準をサポートしています。OGC WMSを使用すると、データをマップサービスとしてパブリッシュし、QGISのようなデスクトップGISや、OpenLayersやMapbenderのようなWebクライアントでサービスを統合できます。
QGISデスクトップを使用したOGC WMSのロード¶
QGISの起動方法
にいくボタン New をクリックし、名前とサービスURLを追加します。
設定を保存します。
その後、サービスに接続し、サービスの1つまたは複数のレイヤをQGISプロジェクトに追加できます。ID 0のレイヤを選択すると、すべてのレイヤを含むサービス全体を一度にロードできます。
次のステップ¶
これは簡単な例ですが、できることはたくさんあります。MapServerプロジェクトのWebサイトには、作業を開始に役立つ多くのリソースが用意されています。次に、いくつかのをいくつか紹介しよう。
MapServerの概要 を読む
MapServerチュートリアル をご覧ください
OGC サポートと構成 をチェックして、MapServerのOGC標準(WMS、WFS、SLD、WFS Filter Encoding、WCS、SOSなど)の詳細を確認してください。
MapServerを使用する準備はできていますか?次に、メーリングリスト のコミュニティに参加して、アイデアを交換したり、ソフトウェアの改善点について話し合ったり、質問したりします。