GeoServer 2.0.2 (Java で書かれたオープンソースの Web Mapping Service (WMS))が Metacat に同梱されており、 空間データをウェブ配布地図として表示するのに使用できる。 Metacat は OpenLayers (http://openlayers.org/) を使って 生成された地図の操作ができるウェブベースのユーザインタフェイスを 提供する。 どんな WMS互換クライアントであっても使うことができる。 (たとえば ArcGIS, QGIS, JUMP, UDig, OpenLayers, Mapbender, Map Builder)
重要: この地図機能を使うつもりがあるかどうかにかかわらず、 安全のため、初期パスワードを使用しないようにするために GeoServer の設定を実行するべきである。 そのやり方については「Geoserver の設定」を参照のこと。
GeoServer はさまざまな種類のベクトル GIS データをサポートしており、 それを Styled Layer Descriptors (SLDs) を使って整形したり、画像として 出力したり(初期状態)、未加工のベクトルデータ(GML や KML)として 出力できる。
現時点では、GeoServer には下記の制限がある。
Metacat の開発者たちは Metacat の地図機能を拡張し改良し続けるつもりである。 もしこのような活動に貢献することに関心があるなら、または 地図化ソフトウェアのアーキテクチャと将来的な計画についてより学ぶことに 関心があるなら、ぜひ Metacat 開発チームに連絡して欲しい (metacat-dev@ecoinformatics.org).
GeoServer ウェブアプリは Metacat の兄弟としてインストールされるべきである。 GeoServer を実行したくない場合は、配置作業を省くことができる。 しかしその場合は地図を使用するスキンは正しく表示されないだろう。 (註: GeoServer は PermGen 空間として最低でも 128MB を設定するように 推奨している)
Metacat は GeoServer 用に予め設定されたデータディレクトリを用意している。 これには、世界の国々の基本レイヤーと、Metacat の空間キャッシュを見るように 設定した初期設定が含まれている。 Metacat の設定インタフェイスを使ってGeoServer がこの共有データディレクトリを 使用するように設定できる。 GeoServer を更に設定するには、ウェブベースの設定ユーティリティを使う。 これは http://your.server.com/context/geoserver.jsp で使用可能である (たとえば http://knb.ecoinformatics.org/knb/geoserver.jsp)。
一般設定には以下のものが含まれる。
註: いくつかの設定は XML ファイルにも作る必要があるかもしれない。
OpenLayers(Metacat はこれを GeoServer の WMS サービスのフロントエンドとして 使用する)はインタフェイス用部品や「ウィジェット」(たとえば、地図、 拡大/縮小、レイヤ一覧、「場所を選ぶ」ドロップダウンメニュー、縮尺、 緯度経度座標、検索フォーム)を提供し、ウェブベースの地図アプリケーションを 最小の労力で簡単に配置できるようにしてくれる。
OpenLayers は地図インタフェイスを調整するために 3つの設定ファイルを持っている。 初期設定は以下にある:
$METACAT/lib/style/common/spatial/
文書 | 場所 | 説明 |
---|---|---|
地名ファイル | locations.jsp | 予め定義された場所の一覧(名前と緯度経度の境界) |
主地図表示機能 | maps.js | 地図、ウィジェットとそれらの振る舞いを定義 |
地図表示とページレイアウト | map.jsp | 地図の読み込みとウィジェットのレイアウトの制御 |
註: 初期状態では、Metacat の初回再起動時に、Metacat はリポジトリ内の 文書についての地理的情報を含む「空間キャッシュ」を生成する。 その振る舞いは lib/metacat.properties に指定されており、 regenerateCacheOnRestart パラメータが true に設定されている。 その空間キャッシュ内の情報は GIS互換のフォーマット (ESRI シェイプファイル)で格納されており、文書名と地理的範囲が含まれている。 文書が Metacat リポジトリに追加、削除、更新された時、 Metacat は自動的に空間キャッシュに変更を反映させる。 キャッシュの生成にはかなりの時間がかかる(数千の文書の場合、 数分)ため、Metacat は空間キャッシュが生成されたら regenerateCacheOnRestart プロパティを false に再設定する。 なお、Metacat をアップグレードしたり再インストールした場合は、 空間キャッシュは再度生成される。
地図をウェブページに追加するには、単に iframe を使って地図インタフェイスを 読み込ませる:
<iframe scrolling="no" frameborder="0" width="780" height="420"
src="/knb/style/common/spatial/map.jsp">
</iframe>
地図のURL /knb/style/common/spatial/map.jsp はデフォルトの地図 インタフェイスである。 地図インタフェイスを調整するつもりの場合は、この map.jsp ファイルを 各自のスキンのディレクトリにコピーする (default または独自スキンのディレクトリに)。
cp -r style/common/spatial/map.jsp /style/skins/<myskin>/spatial
調整された地図には /knb/style/skins/<myskin>/spatial/map.jsp というURLでアクセスできる。
地図の大きさと初期範囲を設定する前に、 地図のレイアウトページを各自のスキンディレクトリにコピーしておくこと。 (ディレクトリについては Metacat の設定 を参照) ファイルをコピーしたら、 ${skin.dir}/spatial/map.jsp にある地図の初期範囲を修正する。
地図の初期範囲を変更するには、境界線を編集する。 初期状態では地球全体が見えるようになっている。 また initMap() 関数にスキン名が与えるようにし、 空間検索の結果が正しく整形できるようにするべきである。
<script type="text/javascript">
function init() {
var bounds = new OpenLayers.Bounds(-180,-90,180,90);
// make the map for this skin
initMap("<%=GEOSERVER_URL%>", "<%=SERVLET_URL%>", "default", bounds);
}
</script>
地図の大きさ(高さ/幅)は、 map.jsp ページ内にある #map という CSS 項目によって制御できる。
地図の大きさと初期範囲は ${skin.dir}/spatial/map.jsp で編集できる。
map.jsp は単純なコンテナであるが、他のより複雑なページの中に 読み込ませることができる。 map.jsp には地図、ウィジェットと場所ドロップダウンメニューが含まれている。
「場所を選ぶ」ドロップダウンメニューに出て来る場所は locations.jsp ファイルに指定されている。 locations.jsp は共通の空間テンプレートから各自のスキンディレクトリにコピー できる。 それぞれの場所は HTML の <option/> タグによって定義される。 値とラベルを編集して新しい場所を編集したり追加する。
<option value=“-149.725,68.475 -149.3254,68.725”> Arctic LTER (ARC)</option>
地理空間データは Styled Layer Descriptors (SLD) を使って整形する。 データの点や境界線用のデフォルトの SLD は /lib/spatial/geoserver/data/styles/ 内の data_points_style.sld とdata_bounds_style.sld である。
GeoServer で SLD を使うための詳しい解説については GeoServer の説明書を見ること。:
http://docs.geoserver.org/
サーバ上にベクトルGISデータ(たとえば気象情報や地形情報)があり、 それを地図に読み込ませたい場合は、 まずそのデータを GeoServer に登録しなければならない。 データを登録したら、地図にそのレイヤを追加することができる。 また WMS を通じて誰でも利用できる空間レイヤを追加することもできる (何百もの空間データが利用可能である。wms-sites.com に良いカタログがあるので 調べてみなさい)。 誰でも使えるレイヤを追加するやり方についてはこの節の最後に記す。
データを登録して地図に追加するには、
WMS を通じて誰でも利用できる空間データが何百もある。 (wms-sites.com に良いカタログがあるので調べてみなさい)。 これらのデータソースを地図に追加するには、各自のスキンの spatial/map.js ファイルにそのレイヤを追加する。
指定された地理的な区域の中に入る文書を Metacat リポジトリから見つけ出すには、 Metacat の spatial_query 操作を使って空間キャッシュを検索する。 Metacat は WFS/WMS 標準によってサポートされている検索ならどのようなものでも 実行できる。
空間検索文字列の例は、:
http://localhost/knb/metacat?action=spatial_query&xmin=-117.5&xmax=-64&ymin=3&ymax=46&skin=default
ここで xmin, xmax, ymin, ymax は、それぞれ、 西、東、南、北の境界座標(境界区画)を表している。 空間検索操作は、指定された空間座標に重なるか、その中に含まれる全文書を 返す。 検索結果は指定されたスキンのスタイルを用いてHTML化されて返される (この例では、default スキン)。