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
次に、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が提供するあたらしいストリームレイヤが見えるようになりました。
マップをブラウズしていきますと、タイルキャッシュフォルダの /var/cache/mapcache
が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/mapcache と http://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 inmapcache-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 を参照してください。
キャッシュフォルダを削除するには、次のコマンドを実行します。
sudo rm -r /var/cache/mapcache/lakes
What next?¶
MapCache 文書 を読む。
メーリングリスト のコミュニティ(ここではMapCacheがその対象の一部です)に参加して、アイデアを交換したり、ソフトウェアの改善点について話し合ったり、質問したりできます。