../../_images/logo_mapcache.png ../../_images/OSGeo_project.png

MapCache クイックスタート

MapCache は、 WMS レイヤへのアクセスを高速化するタイルサーバーです。さまざまなWebサーバー上でCGIアプリケーションとして実行することも、Apacheモジュールとして実行することもできます。OSGeoLiveにはMapCacheがインストールされており、Apacheモジュールとして設定されています。

このクイックスタートでは、新しいWMSレイヤをMapCacheのセットアップに追加し、タイルサービスをOpenLayers Webマップに表示し、コマンドラインからタイルキャッシュをシードする方法を示します。

新しいタイルセットを追加してOpenLayersに表示する

MapCacheはXMLファイルを使用して構成されます。OSGeoLiveには、/usr/local/share/mapcache/mapcache-quickstart.xml にサンプル設定ファイルがあります。この例では、ソースとして米国のイタスカ郡のデータを使用し、OSGeoLiveデモのMapServerアプリケーションを使用しています。

このクイックスタートでは、追加のWMSレイヤのタイルキャッシュを設定し、OpenLayersマップを含む単純なHTMLページにタイルを表示します。

まず、FeatherPad(テキストエディタ)でMapCache設定ファイルを開きます。管理者特権でコマンドラインからFeatherPadを開くことで、ファイルを保存することができるようになります。[システムツール] > [QTerminal]を使用して、次のコマンドを実行します。

sudo featherpad

リンク http://localhost/itasca/?service=wms&request=getcapabilities を開くと、ソースWMSサーバで使用可能なレイヤを確認できます。MapCacheは、GetCapabilitiesなど、処理できない要求をMapServerに転送するように設定されています。このとき、次に示す規則が適用されます。

<forwarding_rule name="catch all">
  <http>
    <url>http://localhost/cgi-bin/mapserv?map=/usr/local/www/docs_maps/mapserver_demos/itasca/itasca.map</url>
  </http>
</forwarding_rule>

WMS Capabilitiesドキュメントに記載されているレイヤ名の1つは、dlgstln2 イタスカ郡のストリームです。これを新しいタイルセットとしてMapCacheサービスに追加します。まず <source> ブロックを追加します。これはWMSサーバからデータを取得するための設定です。既存の湖として使用される <source name="lake_source" type="wms">...</source> XMLブロックのあとのブロックに、 mapcache-quickstart.xml を追加します:

<source name="streams_source" type="wms">
  <getmap>
    <params>
      <FORMAT>image/png</FORMAT>
      <LAYERS>dlgstln2</LAYERS>
      <MAP>/usr/local/www/docs_maps/mapserver_demos/itasca/itasca.map</MAP>
    </params>
  </getmap>
  <http>
    <url>http://localhost/cgi-bin/mapserv?</url>
  </http>
</source>

We use the <params> block to pass the WMS layer name, and the image format back to the WMS server, along with the MapServer specific <map> parameter. The URL to the WMS server is in the <http> block. For documentation on all configuration file elements see the Configuration Documentation. Next we will add a <tileset> block, which defines how the source will be stored and served as tiles. Place the following block after the existing <tileset name="lakes">...</tileset> block.

<tileset name="streams">
  <source>streams_source</source>
  <cache>disk</cache>
  <grid>GoogleMapsCompatible</grid>
  <format>PNG</format>
</tileset>

グリッドタイプを、多くのWebマッピングアプリケーションでデフォルトのタイリングスキームとして使用される組み込み GoogleMapsCompatible グリッドに設定します。name=streams は、クライアントアプリケーションがタイルセットにアクセスするためにつかわれます。データベースやクラウド環境にタイルを保存するのではなく、ディスク・ベースのキャッシュを使用しています。

MapCache設定ファイルを変更した場合は、変更を有効にするためにApacheをリロードする必要があります。これは、次のようにコマンドラインから実行できます:

sudo apachectl -k graceful

次の URLにアクセスすることで、見ることができるようになりました: http://localhost/itasca/gmaps/streams@GoogleMapsCompatible/12/987/1433.png

../../_images/stream_tile.png

次に、OpenLayersマップにタイルセットを追加しましょう。次のコマンドを使用してHTMLページを開きます:

sudo featherpad /var/www/html/mapcache-quickstart/index.html

次のJavaScriptコードのコメントを外します:

,new ol.layer.Tile({
    source: new ol.source.XYZ({
        url: 'http://localhost/itasca/gmaps/streams@GoogleMapsCompatible/{z}/{x}/{y}.png'
    })
})

次のページをリフレッシュします: http://localhost/mapcache-quickstart/ - MapCacheが提供するあたらしいストリームレイヤが見えるようになりました。

../../_images/openlayers.png

マップをブラウズしていきますと、タイルキャッシュフォルダの /var/cache/mapcache がPNGイメージで埋められている様子が確認できます。

../../_images/tilecache.png

キャッシュの場所とタイプは、構成ファイル内の次のブロックによって設定されます:

<cache name="disk" type="disk">
  <base>/var/cache/mapcache</base>
  <symlink_blank/>
</cache>

新規サービスの追加

/etc/apache2/conf-enabled/mapcache.conf ファイルを編集することで、それぞれが独自の設定ファイルを持つ、多数の異なるMapCacheサービスを実行するようにApacheを設定できます。スーパーユーザ権限が必要なので、次のコマンドを実行してFeatherPadで編集用に開くことができます。

sudo featherpad /etc/apache2/conf-enabled/mapcache.conf

OSGeoLiveには2つのMapCacheサービスがあり、それぞれにエイリアスと設定ファイルがあります。エイリアスはサーバ上で使用するURLです。例 http://localhost/mapcachehttp://localhost/itasca

<IfModule mapcache_module>
   <Directory /path/to/directory>
      Order Allow,Deny
      Allow from all
   </Directory>
   MapCacheAlias /mapcache "/usr/share/doc/libapache2-mod-mapcache/examples/mapcache.xml"
   MapCacheAlias /itasca "/home/user/mapcache.xml"
</IfModule>

新しいサービスを追加するには、WEB_PATHおよびPATH_TO_CONFIG_FILEを関連パラメータで置き換えて、次のフォーマットで新しい行を追加します:

MapCacheAlias WEB_PATH "PATH_TO_CONFIG_FILE"

Apacheモジュールの設定の詳細は、 Apache Module Instructions を参照してください。

シーダー・アプリケーション

マップタイルは、Webサーバーから要求されたときに動的に作成されます。要求時間を短縮するために、コマンドラインアプリケーションを使用してタイルを生成できます。この処理は、 シーディング として知られており、 MapCache コマンドラインアプリケーションは mapcache_seed です。

シーダーアプリケーションによって作成されたタイルがウェブサーバアカウントからアクセスできるようにするために、 mapcache_seed アプリケーションを実行する前に sudo-u www-data を追加します。

以下の例では、 mapcache_seed に三つのオプションを与えています:

  • config: /home/user/mapcache/mapcache-quickstart.xml - これは、MapCacheの設定ファイルのパスです。

  • tileset: lakes - this is the tileset name we are going to seed, and is found in mapcache-quickstart.xml - zoom: 0,5 - this is the range of zoom levels we are going to seed, from zoom level 0 (the extent of the world in a single tile) to zoom level 5

sudo -u www-data mapcache_seed --config /home/user/mapcache/mapcache-quickstart.xml --tileset lakes --zoom 0,5

他の mapcache_seed オプションについては、Seeder Documentation を参照してください。

../../_images/seeder.png

キャッシュフォルダを削除するには、次のコマンドを実行します。

sudo rm -r /var/cache/mapcache/lakes

What next?

  • MapCache 文書 を読む。

  • メーリングリスト のコミュニティ(ここではMapCacheがその対象の一部です)に参加して、アイデアを交換したり、ソフトウェアの改善点について話し合ったり、質問したりできます。