MapServer クイックスタート¶
MapServer is an Open Source server based application that allows you to publish geographic map images and vector data through the Internet using OGC Standards such as Web Map Service (WMS), Web Feature Service (WFS) and Web Coverage Service (WCS).
目次
Mapfile設定ファイルを使用してMapServerを設定する¶
注釈
何を学べますか? ここでは、Mapfileの概要と、MapServerがWMS要求を使用してシェープファイルをイメージとして処理できるように設定する方法について説明します。
Mapfileとは¶
Mapfile は、MapServerが空間データをイメージまたはベクタデータとしてレンダリングするために使用する設定ファイルです。その主な目的は、描画できるレイヤ、必要なデータの読み方、レンダリング方法(色、シンボル、ラベルなど)を定義することです。
はじめてMapfileを作成する¶
任意のテキストエディタを開きます(例
)。Create the file "mapserver_quickstart.map" at the following location:
/home/user/mapserver_quickstart.map
次の内容を入力します:
MAP NAME "MAPSERVER_QUICKSTART" EXTENT -137 29 -53 88 UNITS DD SHAPEPATH "/usr/local/share/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: sets a base path for file-based data (e.g. shapefiles or GeoTIFF images).
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&STYLES=&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はウェブアプリケーション向けだが、コマンドラインで画像を生成することもできます。これは、反復マッピングを探している場合やデバッグ中に便利です。
ターミナルを開き(
)、次のように入力します。map2img -m /home/user/mapserver_quickstart.map -o /home/user/Documents/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&STYLES=&SRS=EPSG:4326&BBOX=-137,29,-53,88&FORMAT=PNG&WIDTH=800&HEIGHT=600
MapServerによってレンダリングされたイメージは、前のマップに似ていますが、新しいレイヤから湖が追加されています。
マップファイル設定を使用してレイヤのスタイルを設定する¶
注釈
何を学ベますか? レイヤ内の要素のスタイル設定の例が、データプロパティの一部に応じて表示されます。
In a Mapfile, a LAYER object can contain an infinite number of CLASS objects. These are used to style the elements contained in the spatial data file (DATA). For example, if we look closer at our "ne_10m_lakes" data file using a tool such as ogrinfo, we'll see the geometry and attribute definitions it contains. These attribute values can be used as a way to draw the elements inside a dataset differently using multiple CLASS objects.
In our "ne_10m_lakes" dataset, we have a ScaleRank attribute, which defines the significance of the lakes. We can use this as a way to render the lakes differently. In the LAYER object, we'll add another CLASS object just before our current one:
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のレイヤを選択すると、すべてのレイヤを含むサービス全体を一度にロードできます。
What next?¶
これは簡単な例ですが、できることはたくさんあります。MapServerプロジェクトのWebサイトには、作業を開始に役立つ多くのリソースが用意されています。次に、いくつかのをいくつか紹介しよう。
MapServerの概要 を読む
Run through the Getting Started with MapServer workshop.
MapServerチュートリアル をご覧ください
OGC サポートと構成 をチェックして、MapServerのOGC標準(WMS、WFS、SLD、WFS Filter Encoding、WCS、SOSなど)の詳細を確認してください。
MapServerを使用する準備はできていますか?次に、メーリングリスト のコミュニティに参加して、アイデアを交換したり、ソフトウェアの改善点について話し合ったり、質問したりします。