../../_images/logo_mapserver.png ../../_images/OSGeo_project.png

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を作成する

  1. 任意のテキストエディタを開きます(例 アプリケーション ‣ アクセサリ ‣ FeatherPad)。

  2. "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 を持つすべての画層に加えてレンダリングされます。結果は次のようになります。

../../_images/mapserver_map.png

注釈

要求のすべてのパラメータは、MapServer固有の "?map=/home/user/mapserver_quickstart.map" を除き、WMS固有です。

コマンドラインを使用してMapServerで地図イメージをレンダリングする

MapServerはウェブアプリケーション向けだが、コマンドラインで画像を生成することもできます。これは、反復マッピングを探している場合やデバッグ中に便利です。

ターミナルを開き(Applications ‣ System Tools ‣ Terminal Emulator)、次のように入力します。

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によってレンダリングされたイメージは、前のマップに似ていますが、新しいレイヤから湖が追加されています。

../../_images/mapserver_lakes.png

マップファイル設定を使用してレイヤのスタイルを設定する

注釈

何を学ベますか? レイヤ内の要素のスタイル設定の例が、データプロパティの一部に応じて表示されます。

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に伝えます。

この新しい追加の結果、地図イメージ内の大きな湖が黒いアウトラインでレンダリングされます。

../../_images/mapserver_lakes_scalerank.png

注釈

MapServerの EXPRESSIONS の詳細をご覧ください。

データをOGC WMS(Web Map Service)としてパブリッシュする

MapServerは、OGC WMS、WFS、WCSなど、さまざまなOGC標準をサポートしています。OGC WMSを使用すると、データをマップサービスとしてパブリッシュし、QGISのようなデスクトップGISや、OpenLayersやMapbenderのようなWebクライアントでサービスを統合できます。

QGISデスクトップを使用したOGC WMSのロード

  1. QGISの起動方法 Geospatial ‣ Desktop GIS ‣ QGIS Desktop Layer ‣ Add Layer ‣ Add WMS/WMTS Layer にいく

  2. ボタン New をクリックし、名前とサービスURLを追加します。

  3. 設定を保存します。

    http://localhost/cgi-bin/mapserv?map=/home/user/mapserver_quickstart.map&SERVICE=WMS&REQUEST=GetCapabilities&VERSION=1.3.0

その後、サービスに接続し、サービスの1つまたは複数のレイヤをQGISプロジェクトに追加できます。ID 0のレイヤを選択すると、すべてのレイヤを含むサービス全体を一度にロードできます。

../../_images/mapserver_load_wms_to_qgis.png

次のステップ

これは簡単な例ですが、できることはたくさんあります。MapServerプロジェクトのWebサイトには、作業を開始に役立つ多くのリソースが用意されています。次に、いくつかのをいくつか紹介しよう。

  • MapServerの概要 を読む

  • MapServerチュートリアル をご覧ください

  • OGC サポートと構成 をチェックして、MapServerのOGC標準(WMS、WFS、SLD、WFS Filter Encoding、WCS、SOSなど)の詳細を確認してください。

  • MapServerを使用する準備はできていますか?次に、メーリングリスト のコミュニティに参加して、アイデアを交換したり、ソフトウェアの改善点について話し合ったり、質問したりします。