wiki:OSGeo4W_jp/WMSandcachesystem

Version 5 (modified by yukatohhana, 15 years ago) ( diff )

--

WMS と cacheシステム

TileCache

MapServerは画像の表示、WMSやそれぞれのWFSプロトコルを使用している GMLファイルとしての全データソースの提供ができます。

CDで提供された独自のOSMデータを使用してMapServerインストールと相互に作用するためのインターフェースを作成できますが、どのようにOpenLayers と他のJavaScript APIがWMSサーバーと相互作用するのかを説明します。それらはWMS-Cを使用します。つまり、底辺が2のピラミッド階層です。そこでは、Level 0(最上階)は20 個のタイル、level 1 では21 個、level 2 では22 個…となります。level 12 を表示することを考えてみると、このレベルでは、アプリケーションが表示されたデータ範囲を削除していても212 個のタイルを入手します。それは潜在的にWMSサーバーにたくさんの要求をします。中にはデータの複雑さ次第で返答が長いものや、何度も要求を繰り返すものもあります。

特定のデータセットを考える場合、それらのデータは静的であり、行政区は時間によらず静的であると考えることができます。よって、それらの画像描写も静的で、ピラミッドレベル用の事前生成されたWMSの要求結果のcacheを作成することができます。

この目標を達成するため、TileCacheを使用することができます。

TileCacheのインストール

OSGeo4Wディストリビューションを使用して TileCacheをインストールするためにPythonをインストールしておかなければなりません。

はじめに、公式ウェブサイトのダウンロードセクションから TileCache 2.10 zip ファイルをダウンロードしてください。

次にローカル C: \OSGeo4W\apps\ ディレクトリに tilecache-2.1.0.zip ファイルを解凍すると C: \OSGeo4W\apps\tilecache -2.10 ディレクトリが作成されますが、読み込みを簡単にするためにそれを C: \OSGeo4W\apps\tilecache という名前に変更してください。

Tilecache のインストールを終了するために、次のコマンドを実行してください。

# cd C: \OSGeo4W\apps\tilecache
# python ez_setup.py
# cd C:\OSGeo4W\apps\Python25\Scripts
# python easy-install-2.5-sc ript.py TileCache

これで TileCache のインストールが完了しました。

TileCache インストールを展開する

C: \OSGeo4W\apps\tilecache ディレクトリから cgi スクリプトtilecache.cgi を実行できるようにする前に、このファイルの最初の行を python full path に正しく設定されるよう修正するためにC: \OSGeo4W\apps\tilecache からファイルを編集しなければなりません。

最終的にファイルは次のようになります。

from TileCache import Service , cgiHandler, cfgfiles

If __name__ == '__main__':
svc = Service.load(*cfgfiles)
cgiHandler(svc )

次のコンテンツに従って、c : \OSGeo4W\httpd.d\ ディレクトリに httpd_loc al.conf ファイルを作成してください。

Alias /tilecache/ "/OSGeo4W/apps/tilecache/"

<Directory "C: \OSGeo4W/apps/tilecache/">
SetEnv PYTHONPATH"C: \\OSGeo4W\\apps\\Python25\\lib\\site -packages\\setuptools-0.6c7-
py2.5.egg;C: \\OSGeo4W\\bin\\python25.zip;C: \\OSGeo4W\\apps\\Python25\\DLLs;C: \\OSGeo4W\\
apps\\Python25\\lib;C: \\OSGeo4W\\apps\\Python25\\lib\\platwin;
C: \\OSGeo4W\\apps\\Python25\\lib\\libtk;
C: \\OSGeo4W\\bin;C: \\OSGeo4W\\apps\\Python25; C: \\OSGeo4W\\apps\\Python25\\lib\\site -
packages;C: \\OSGeo4W\\apps\\Python25\\lib\\site -
packages\\win32;C: \\OSGeo4W\\apps\\Python25\\lib\\site -
packages\\win32\\lib;C: \\OSGeo4W\\apps\\Python25\\lib\\site -
packages\\Pythonwin;C: \\OSGeo4W\\apps\\Python25\\lib\\site -packages\\wx-2.8-msw-unicode"
Options ExecCGI Indexes FollowSymLinks Multiviews
AllowOverride All
AddHandler cgi-script .cgi
Order allow,deny
Allow from all
</Directory>

ここではmod_fastcgiを含んでいないOSGeo4W Apacheデフォルトインストールとしてcgiバージョンを使用していることに注意してください。実用のプロジェクトの最適化に fastcgiあるいはmod_pythonとしてTileCacheを使用します。この部分に関する公式のドキュメントのリンク

パス情報を入手するために、コマンドラインからpythonを実行しなければなりません。一度python環境で以下を使用し、前に表示されたPYTHONPATH値と比較してください。

>>> import sys
>>> print sys.path

このpython環境とApacheインストールから同じパス設定を入手してください。

httpd_local.conf ファイルを追加すると、PYTHONPATHが正常に処理されたかを正しく検証します。これでブラウザーからTileCacheインストールを使用することができるでしょう。

先に進む前に、変更をアカウントに反映させるためにApachウェブサーバーを再起動させてください。

C: \OSGeo4W\apps\tilecache ディレクトリに進み、これらの行を置き換えるために tilecache.cfg ファイルを編集してください。

[basic ]
type=WMS
url=http: //labs.metacarta.com/wms/vmap0
extension=png

テーマによって(metacartaサーバーではなくローカルWMS サーバーを使用できるようにするために)

[Administrative]
type=WMS
url=http: //localhost/cgi-bin/mapserv.exe?map=c : /OSGeo4W/maps/mapfile.map
layers=Administrative ,Highway	# WMS layers list to display, your own layer names here .
extension=png 			# WMS image type

それから、C: \OSGeo4W\apps\tilecache ディレクトリからindex.htmlファイルを編集し、basicストリングを検索してください。basicのストリングをAdministrativeのストリングに置き換えるだけで、テストの準備ができます。

最後の行は次のようになります。

layer = new OpenLayers.Layer.WMS("VMap0","tile cache.cgi?",
				{layers: 'Administrative', format: "image/png" } );

TileCacheインストールをテストする

任意のブラウザーへ進み、次のURLを入力してください:http://localhost/tilecache/

下のスクリーンショットのような相互作用的なウェブアプリケーションを入手できます。それはWMSサーバーとして動作しているMapServerを通してTileCacheインストールと相互作用している最初のオープンレイヤークライアントインターフェースです。既定のOpenLayersコントローラーを使用している表示されたマップを参照できますが、次で詳細を見ることができます。

TileCacheインストールの使用方法を最適化する

以下の説明で、TileCacheの使用ができます。 cacheはそれと関連性のあるユーザーのリクエスト次第で満たされるでしょう。しかし、タイルの表示の高速化を図るためにcacheのようなシステムを事前に作成すると良いでしょう。

それを行うために、新たに開いた TileCacheインストールからtilecache_seed.py Pythonスクリプトを使用することができます。

そのためには、次のコマンドを使用してください。

# cd c : \OSGeo4W\apps\tilecache
# python tilecache_seed.py Administrative 1 6

これで、以前に引用されたピラミッドを覚えている場合、多数のタイルを作成することがわかります。

しかしながら、このtitlecache_seed.pyの使用方法と、どの境界ボックスも定義しないことは、whole world extentionのcacheを作成することです。これらはベトナムのエリアだけを見る場合は必要ありません。

高いレベルの範囲を扱うには、次のコマンドラインを使用してください。

# cd c : \OSGeo4W\apps\tilecache
# python tilecache_seed.py Administrative 6 9 -b 102.148611,8.633287,109.453599,23.377778

これで、6から8までのレベルを作成します。

ブラウザー制限情報とトリック

デフォルトの設定では、ブラウザーは同じサーバー、URLに同時に送られる要求の数を制限します。この問題を解決するために、サーバーが多数の要求を扱う容量がある場合のみ、TileCache experience を向上するための次のトリックを使用できます。

その実体が同じものであっても、行政レイヤーに複合的な WMSサーバーリストを使用するためにOpenLayersを設定します。タイルのロードをより速くさせます。

layer = new OpenLayers.Layer.WMS("VMap0",
          ["tilecache .cgi? ",
          "http://localhost1/tilecache/tilecache.cgi? ",
          "http://localhost2/tilecache/tilecache.cgi? ",
          "http://localhost3/tilecache/tilecache.cgi? "],
		{layers: 'Administrative', format: "image/png" } );

ここではlocalhost1、localhost2、localhost3を定義しました。よって、既存のファイルの最後に次の行を追加するために、C: \Windows\System32\drivers\etc\hosts ファイルのホストを定義しなければなりません。

127.0.0.1 localhost localhost1 localhost2 localhost3

動作する場合、ping localhost3 コマンドを使用してみてください。次のページを再ロードできます。

http://localhost/tilcache/

アプリケーションのデバッグのためのFireBug

どのようにOpenLayersがサーバーをクエリするか、ウェブアプリケーションのデバッグをするかについての詳細を知りたい場合、FireFoxブラウザーからFireBugプラグインを使用することができ、このページを起動します。そして次のようなスクリーンショットを入手し、多数の要求は多重のホスト名を使用しているサーバーに送られたということに気付くことができます。

Note: See TracWiki for help on using the wiki.