重要
すべてのWMSレイヤが地図のPROJECTIONと全く同じ単一の投影法をサポートしていることを確認できない限り、 PROJECTIONはMAPオブジェクトに対して必ず設定されなければならない。 MAPオブジェクトのPROJECTIONは"init=epsg:xxxx"コードを用いるか、通常のPROJ4パラメータを用いて設定される。 MAPオブジェクトのPROJECTIONの設定に失敗すると、リモートのWMSサーバから空の地図が来る可能性がある (接続先のWMSのURLで用いられるBBOX+SRSの組合せの不一致が原因)。
3.1 一時ファイルの格納
WEBオブジェクト内部で正しく書き込み可能なディレクトリを指し示すIMAGEPATHを設定しなければならない。 Mapserverはこのディレクトリをリモートサーバからダウンロードした一時ファイルの格納に使用する。一時ファイルはMapserverにより自動的に削除されるので、その点を気にする必要はない…が妥当なIMAGEPATHは必要である。
例 3. IMAGEPATHパラメータ
MAP ... WEB IMAGEPATH "/tmp/ms_tmp/" IMAGEURL ... END ... END
もし一時ファイルをデバッグ目的で保持しつづけたいのであれば、LAYERオブジェクトにおいて以下の文を追加する必要がある。
LAYER .... DEBUG ON ... END
3.2 WMSレイヤの追加
WMSレイヤはWMSコネクションタイプを経由してアクセスされる。ここにこのコネクションタイプを使用する例を示す。
LAYER NAME "prov_bound" TYPE RASTER STATUS ON CONNECTION "http://www2.dmsolutions.ca/cgi-bin/mswms_gmap?" CONNECTIONTYPE WMS METADATA "wms_srs" "EPSG:4236" "wms_name" "prov_bound" "wms_server_version" "1.1.1" "wms_format" "image/gif" END END
3.2.1 必須のレイヤパラメータとメッタデータ
CONNECTIONTYPE WMS
CONNECTION
これはリモートサーバの、WMSパラメータを取り除いたオンラインリソースURLである。サーババージョン、画像フォーマット、レイヤ名称などはメタデータとして提供される。
"wms_format" metadata
GetMapリクエストで使われる画像フォーマット。
wms_formatlistが提供されるのであれば、wms_formatはオプションとなり、MapserverはGetMapリクエストにおいてwms_formatlistにあるサポートされているフォーマットのうち最初のフォーマットを取り上げる。もしwms_formatとwms_formatlist両方が提供された場合、wms_formatが優先される。
そしてまたWMSサーバはgd/gdalライブラリでサポートされているフォーマットの一部のみを配信することに注意しよう。
"wms_name" metadata
リモートWMSサーバからフェッチするレイヤ名をカンマで区切ったリスト。この値はWMS URLのLAYERSとQUERY_LAYERSパラメータで用いられる。
"wms_server_version" metadata
リモートWMSサーバでサポートされているWMSプロトコルのバージョン。GetMapリクエストで用いられる。
"wms_srs" metadata
リモートサーバでサポートされているEPSG投影法コードをスペースで区切られた記述する。たいていはこれをサーバのcapabilities出力から取得するだろう。大文字小文字を区別するプラットフォームでのトラブルを回避するために、この値は大文字で書かれなければならない(EPSG: 42304…..のように。epsg:42304ではだめである)。この値はWMS URLのSRSパラメータに用いられる。
3.2.2 オプションレイヤパラメータとメッタデータ
MINSCALE, MAXSCALE
もしリモートサーバのcapabilitiesがこのレイヤに対するScaleHint?値を含んでいれば、マップファイル中のLAYERオブジェクトでMINSCALEとMAXSCALE値を設定したいと思うかもしれない。これはMapserverに意味がある場合にのみそのレイヤをリクエストするようになっている。
PROJECTION object
この点ではオプションである。MapServerは必要であれば内部的に生成する。
"wms_connectiontimeout" metadata
リモートのWMSレイヤをロードするために待つ最大の時間を秒単位で設定する(デフォルトでは30秒である)。このメタデータはレイヤレベルで追加することができ、そのレイヤのみに影響を与える。もしくはマップレベル(Webオブジェクトにおいて)追加した場合、全てのレイヤに影響を与える。レイヤレベルでのwms_connectiontimeoutはマップレベルのものより優先される。
METADATA ... "wms_connectiontimeout" "60" ... END
"wms_exceptions_format" metadata
例外のフォーマットを設定する(MapServer V4.6より)。 MapServerのディフォルト値は application/vnd.ogc.se_inimage (picture format)。GetCapabilitiesで利用可能のフォーマットをサーバから取得できる。例外フォーマットapplication/vnd.ogc.se_inimageは実際WMS 1.1.1で必須ではない、その為、サーバはサポートされない可能性がある。このケースは下記を利用:
LAYER ... METADATA "wms_exceptions_format "application/vnd.ogc.se_xml" END ... END
MS_ERRORFILEにxml例外を返します。
Tue Jan 17 18:05:13 2006 - msDrawWMSLayerLow(): WMS server error. WMS GetMap request got XML exception for layer 'prov_bound': <?xml version='1.0' encoding="ISO-8859-1" standalone="no" ?><!DOCTYPE ServiceExceptionReport SYSTEM "http://schemas.opengeospatial.net/wms/1.1.1/exception_1_1_1.dtd"> <ServiceExceptionReport version="1.1.1"><ServiceException code="LayerNotDefined"> msWMSLoadGetMapParams(): WMS server error. Invalid layer(s) given in the LAYERS parameter. </ServiceException> </ServiceExceptionReport>
"wms_force_separate_request" metadata
これを"1"に設定すると、WMSのレイヤに対してそれぞれの別の分離したGetMap?リクエストへと強制する。デフォルトではMapserverはリモートサーバからのロードするデータを減らしレスポンスを向上させるため、同一サーバからの複数の隣接したWMSレイヤを一つの複数レイヤに対するGetMap?リクエストへと統合する。このメタデータはこの挙動を回避するために用いられる。
"wms_formatlist" metadata
リモートのWMSサーバによりサポートされている画像フォーマットをカンマ区切りで記述したリスト。
wms_formatlistはwms_formatが設定されていない場合のみ利用されることに注意。もしwms_formatとwms_formatlistの双方が提供されている場合、wms_formatが優先される。
"wms_latlonboundingbox" metadata
このレイヤの地理座標系によるバウンディングボックスで、"最小経度 最小緯度 最大経度最大緯度"という形式で記述される。もしこれが設定されている場合、Mapserverは地図のビューがバウンディングボックスと重なっている場合のみリクエストを発行する。通常はサーバのcapabilities出力から取得できる。
METADATA "wms_latlonboundingbox" "-124 48 -123 49" END
"wms_style" metadata
GetMapリクエストにおいてSTYLESパラメータに用いられるスタイルの名称。
"wms_style_<stylename>_sld" metadata
GetMapリクエストにおいて用いられるSLDのURL。メタデータの名称の<stylename>を適用されるSLDの名称に置き換える。
METADATA ... "wms_style" "mystyle" "wms_style_mystyle_sld" "http://my.host.com/mysld.xml" ... END
MapserverでのSLDについてのより詳細な情報は SLD HOWTOドキュメント を参照のこと。
"wms_time" metadata
GetMap?リクエストにおいて用いられるTIMEパラメータの値。より詳細な情報はWMS Time サポートHOWTO参照のこと。
"wms_bgcolor" metadata
背景の色を指定する。
""wms_transparent" metadata
背景を透過するかどうか設定する。設定値は"TRUE"或いは"FALSE"。指定されない場合は、ディフォルトは"TRUE"を適用する。
注記
上記のメタデータはそれぞれ"wms_*"に代わり"ows_*"という形でも参照できる。 Mapserverは"wms_*"メタデータを最初に探し、見付からなければ"ows_*"に一致するものを探す。 "ows_*"メタデータはほとんどどこでも複数のOGCインターフェースによって共有される共通のメタデータとして用いられるので、複数のOGCインターフェースをサポートしているマップファイルでの重複する項目を減らすために用いられる。
3.2.3 バージョン3.5と3.6での古いCONNECTIONパラメータ(非推奨)
Mapserverのバージョン3.5と3.6において、CONNECTIONパラメータが最小限のWMSパラメータ、VERSION、LAYERS、FORMAT、TRANSPARENTを含んでいた。このモードはまだサポートされているが非推奨でああり、上記セクションで解説したメタデータパラメータの使用を奨める。
ここに非推奨のCONNECTIONパラメータの形式を使用したレイヤの定義の例を示す:
LAYER NAME bathymetry METADATA "wms_title" "Elevation/Bathymetry" "wms_srs" "EPSG:4269 EPSG:4326" END TYPE RASTER STATUS ON CONNECTIONTYPE WMS CONNECTION "http://www2.dmsolutions.ca/cgi-bin/mswms_gmap?VERSION=1.1.0&LAYERS=bathymetry&FORMAT=image/png" PROJECTION "init=epsg:4236" END END





