MapViewerでは、Open GIS Consortium (OGC)のWeb Map Service (WMS)プロトコル、特にWMS 1.1.1および1.3.0の実装仕様を使用した、配信データのレンダリングをサポートしています。MapViewerでは、OGCドキュメント01-068r3および06-042で定義されているように、GetMap、GetFeatureInfoおよびGetCapabilitiesリクエストがサポートされます。
現在のMapViewerではオプションのStyled Layer Descriptorの機能はサポートされていません。また、このリリースのMapViewerは、カスケード・マップ・サーバーとして機能しません。
この付録の主な項目は、次のとおりです。
MapViewerは、WMSサービスとして動作するように事前に設定されています。MapViewerは、内部では受信WMSリクエストをすべて、MapViewerサーバーへの適切なXMLリクエストに変換します。たとえば、次のHTTPリクエストは、MapViewerサーバーのGetCapabilitiesサービスを起動します。
http://localhost:8888/mapviewer/wms?REQUEST=GetCapabilities&SERVICE=WMS&VERSION=1.1.1 or http://localhost:8888/mapviewer/wms?REQUEST=GetCapabilities&SERVICE=WMS&VERSION=1.3.0
この例で示したように、MapViewer WMSサービスのURLは通常http://host:port/mapviewer/wms?です(hostおよびportは、MapViewerサーバーのホストおよびHTTPポートを指す)。コンテキスト・パス/mapviewer/wmsは、MapViewerのWMSインタフェースです。
|
注意: すべてのWMSリクエストは1行で入力する必要があります。この付録でWMSリクエストの例が改行されているように見える場合でも、改行は無視してください。 |
MapViewer WMSのサポートには、WMSFilter.jarファイルおよびclassgen.jarファイルが必要です。
サーブレット・フィルタおよびその必須クラスは、WMSFilter.jarにパッケージされます。これは、$MAPVIEWER_HOME/web/WEB-INF/libディレクトリにあります。
サーブレット・フィルタではclassgen.jarも必要です。これは、XML Developer's Kit (XDK) for Javaに含まれます。Oracle DatabaseまたはOracle Fusion Middlewareの完全インストールには、すでにこのファイルが含まれます。
システムにclassgen.jarファイルがない場合は、スタンドアロンのWebLogic Serverバージョンに付属しているものと同じXDK for Javaバージョンのclassgen.jarファイルを使用します。このファイルを$MAPVIEWER_HOME/web/WEB-INF/libディレクトリか、WebLogic Serverのライブラリ・パスに含まれるディレクトリに配置します。
classgen.jarおよびxmlparserv2.jarファイルは同じリリースのXDKのものである必要があります。これは、classgen.jarファイルがxmlparserv2.jarファイルに依存するためです。
各受信WMSリクエストでCGIパラメータdatasourceを明示的に指定していないかぎり、wmsという名前のMapViewerデータソースを定義する必要があります。datasourceパラメータを指定していないリクエストはすべて、デフォルトでwmsという名前のデータソースに渡されます。たとえば、GetCapabilitiesリクエストはデフォルトで、wmsデータソース内の利用可能なテーマをすべてリストします。(GetCapabilitiesリクエストから返される情報を構成するには、1.6.2.12項を参照してください。)
デフォルト時、MapViewerはOracle Spatial and Graph (SDO)ネイティブのSRID(空間参照ID)値を使用します(GetCapabilitiesのようなWMSリクエストでそのような情報が必要になった場合)。ただし、WMSアプリケーションでは、EPSG SRID値の方が広く使用されています。WMSリクエストを処理してレスポンスを生成する場合にEPSG SRID値をMapViewerで使用するには、マッピング・ファイルを指定します。このマッピング・ファイルは、テキスト・ファイルであり、SDO SRID値とEPSG SRID値の対応をMapViewerに教えます。(合致するSRID値の各ペアは、同一の空間参照システムを指します。)
マッピング・ファイルに含まれる行のそれぞれでは、対応するSRID値の各ペアが次の形式で定義されます。
sdo_srid=epsg_srid
たとえば、次の行では、SDO SRID 8307がEPSG SRID 4326と等価であり、SDO SRID 81922がEPSG SRID 20248と等価であることを定義しています。
8307=4326 81922=20248
SDOからEPSGへのマッピング・ファイルは、作成し終えたら、MapViewerが動作しているサーバーに保存できます。また、その場所は、1.6.2.12項で説明したように、<wms_config>要素内の<sdo_epsg_mapfile>要素を使用して、MapViewer構成ファイル内で指定できます。
この項では、WMS 1.1.1および1.3.0仕様、またMapViewerで使用される用語および概念の対応付けや解釈について説明します。MapViewer固有であり、WMS 1.1.1および1.3.0仕様には含まれないパラメータについても説明しています。
この項では、MapViewerでサポートされるGetMapリクエストのパラメータおよびその解釈について説明します。(MapViewer固有でWMS 1.1.1および1.3.0仕様に含まれないパラメータについては、MapViewerのみと記載します。)サポートされるパラメータを、個別のサブ項目としてアルファベット順に紹介します。例E-1に、GetMapリクエストを示します。(各URLは一行で入力してください。)
例E-1 GetMapリクエスト
http://localhost:8888/mapviewer/wms?REQUEST=GetMap&VERSION=1.1.1&FORMAT=image/gif& SERVICE=WMS&BBOX=-121,37,-119,35&SRS=EPSG:4326&LAYERS=theme_demo_states,theme_ demo_counties,theme_demo_highways,theme_demo_cities&WIDTH=580&HEIGHT=500 http://localhost:8888/mapviewer/wms?REQUEST=GetMap&VERSION=1.3.0&FORMAT=image/gif& SERVICE=WMS&BBOX=-121,37,-119,35&CRS=EPSG:4326&LAYERS=theme_demo_states,theme_ demo_counties,theme_demo_highways,theme_demo_cities&WIDTH=580&HEIGHT=500 http://localhost:8888/mapviewer/wms?request=GetMap&version=1.3.0&crs=none &bbox=-122,36,-121,37&width=600&height=400&format=image/png&layers=theme_us_ states&mvthemes=<themes><theme%20name="theme_us_counties"/><theme%20name="theme_ us_road1"/></themes>&legend_ request=<legend%20bgstyle="fill:%23ffffff;stroke:%23ff0000"%20profile="medium"%20p osition="SOUTH_EAST"><column><entry%20style="v.rb1"%20tab="1"/></column></legend>&
GetMapリクエストのデフォルトのデータソースはWMSです。つまり、GetMapリクエストでDATASOURCEパラメータを指定しない場合、MapViewer管理リクエストの<add_data_source>要素(5.1.1項を参照)を使用して、WMSという名前のデータソースが事前に作成されているとみなされます。
現在のリリースのMapViewerでは、GetMapの次のオプション・パラメータはサポートされていません。
TIME(時間ディメンション)
ELEVATION(高度ディメンション)
SLDおよびWFS URL
MapViewerのみのパラメータには、有効なXMLフラグメントを含める必要があります。これらはHTTP GETリクエストで提供されるため、URLエンコーディング・メカニズムを使用して正しくエンコードする必要があります。たとえば、各空白( )を%20に置き換え、各番号記号(#)を%23に置き換えます。次の例に、そのようなエンコーディングの使用例を示します。
http://localhost:8888/mapviewer/wms?request=GetMap&version=1.1.1&srs=none&bbox=-12 2,36,-121,37&width=600&height=400&format=image/png&layers=theme_us_ states&mvthemes=<themes><theme%20name="theme_us_counties"/><theme%20name="theme_ us_road1"/></themes>&legend_ request=<legend%20bgstyle="fill:%23ffffff;stroke:%23ff0000"%20profile="medium"%20p osition="SOUTH_EAST"><column><entry%20style="v.rb1"%20tab="1"/></column></legend>&
BASEMAPパラメータでは、指定した(またはデフォルトの)データソースに対する名前付きベース・マップを指定します。BASEMAPパラメータとLAYERSパラメータの両方を指定すると、LAYERSパラメータで指定したすべてのテーマがベース・マップに追加されます。このため、名前付きベース・マップを使用してマップの取得のみ行う場合は、BASEMAPパラメータを指定しますが、次の例に示すように、空のLAYERSパラメータを指定します。
REQUEST=GetMap&VERSION=1.1.1&BASEMAP=demo_map&LAYERS=&WIDTH=500&HEIGHT=560&SRS=SDO:8307&BBOX=-122,36,-120,38.5&FORMAT=image/png REQUEST=GetMap&VERSION=1.3.0&BASEMAP=demo_map&LAYERS=&WIDTH=500&HEIGHT=560&CRS=SDO:8307&BBOX=-122,36,-120,38.5&FORMAT=image/png
ベース・マップ名をLAYERSパラメータに含めることもできます。この場合、BASEMAPパラメータをURLで定義する必要はありません(詳細はE.2.1.9項「LAYERSパラメータ」を参照)。
BBOXパラメータでは、データソースのデータが表示される枠ボックスの左下および右上の座標を指定します。形式は、BBOX=minX,minY,maxX,maxYです。たとえば、BBOX=-122,36,-120,38.5のようになります。
BGCOLORパラメータでは、RBG色値を使用して、マップ表示のバックグラウンド・カラーを指定します。形式は、0xHHHHHH(各Hは0からFの16進の値)です。たとえば、BGCOLOR=0xF5F5DC(ベージュ)のようになります。
DATASOURCEパラメータでは、GetMapリクエストまたはGetFeatureInfoリクエストのデータソース名を指定します。デフォルト値はWMSです。指定したデータソースは、GetMapリクエストまたはGetFeatureInfoリクエストの以前から存在している必要があります。つまり、<add_data_source> MapViewer管理リクエストを使用して作成されているか、またはMapViewer構成ファイル(mapViewerConfig.xml)で定義されている必要があります。
DYNAMIC_STYLESパラメータでは、GetMapリクエストに含まれる<styles>要素を指定します。<styles>要素の詳細は、3.1.2.19項を参照してください。
EXCEPTIONSパラメータでサポートされる値はデフォルトのみであり、WMS1.1.0ではEXCEPTIONS=application/vnd.ogc.se_xml、またWMS1.3.0ではEXCEPTIONS=XMLです。例外は、次のURLで入手可能なサービス例外DTDに準拠したXML文書としてレポートされます。
http://schemas.opengis.net/wms/1.1.1/WMS_exception_1_1_1.dtd
http://schemas.opengis.net/wms/1.3.0/exception_1_3_0.xsd
application/vnd.ogc.se_inimage (Exceptionメッセージで上書きされた画像)およびapplication/vnd.ogc.se_blank(例外が発生したためのブランク画像)オプションはサポートされません。
FORMATパラメータでは、画像形式を指定します。サポートされる値は、image/gif、image/jpeg、image/png、image/png8およびimage/svg+xmlです。
デフォルト値はimage/pngです。
LAYERSパラメータでは、表示に使用する事前定義済テーマ名をカンマ区切りリストで指定します。指定された値は、デフォルトのデータソース(WMS)またはパラメータDATASOURCE=<name>で指定した名前付きデータソース内にある、大/小文字が区別され、順序に意味があり、カンマで区切られている事前定義済テーマ名のリストとみなされます。たとえば、LAYERS=THEME_DEMO_STATES,theme_demo_counties,THEME_demo_HIGHWAYSは、MapViewerのマップ・リクエスト内の次の<themes>要素に変換されます。
<themes> <theme name="THEME_DEMO_STATES"/> <theme name="theme_demo_counties"/> <theme name="THEME_demo_HIGHWAYS"/> </themes>
ベース・マップ名をLAYERSリストに含めることもできます。次の例は、DEMO_MAPというベース・マップから画像を取得します。
http://localhost:7001/mapviewer/wms?VERSION=1.1.1&REQUEST=GetMap&SRS=EPSG:4326&BBOX=-101.19489559164734,27.0,-78.80510440835268,37.0&WIDTH=965&HEIGHT=431&FORMAT=image/gif&BGCOLOR=0xA6CAF0&TRANSPARENT=TRUE&LAYERS=DEMO_MAP&STYLES=&EXCEPTIONS=application/vnd.ogc.se_xml&datasource=mvdemo
E.2.1.1項「BASEMAPパラメータ(MapViewerのみ)」も参照してください。
LEGEND_REQUESTパラメータでは、GetMapリクエストの一部として<legend>要素を指定します。<legend>要素の詳細は、3.1.2.11項を参照してください。
MVTHEMESパラメータは、GetMapリクエストの一部として<themes>要素を指定します。<themes>要素の詳細は、3.1.2.21項を参照してください。MVTHEMESパラメータは、主にMapViewerリクエストでJDBCテーマをサポートするために使用します。MVTHEMESパラメータは、LAYERSパラメータの代替またはシノニムではありません。LAYERSパラメータも指定する必要があります。
REQUESTパラメータでは、リクエスト・タイプを指定します。値はGetMap、GetFeatureInfoまたはGetCapabilitiesである必要があります。
SRSパラメータ(WMS 1.1.1)またはCRSパラメータ(WMS 1.3.0)では、MapViewerが使用する空間参照システム(座標系)を指定します。値は、SDO:srid-value (srid-valueは数値でのOracle Spatial and GraphのSRID値)、EPSG:4326 (SDO:8307に相当)またはnone (SDO:0に相当)のいずれかである必要があります。
EPSG:4326(標準のWGS 84経度/緯度座標系)を除き、EPSG数値識別子はサポートされません。任意の投影中心を持つ投影のための名前空間AUTO (WMS 1.1.1)またはAUTO2 (WMS 1.3.0)はサポートされません。
MapViewerへのWMS GetCapabilitiesリクエストでは、次のパラメータのみを指定します。
REQUEST=GetCapabilities
VERSION=1.1.1またはVERSION=1.3.0
SERVICE=WMS
例:
http://localhost:8888/mapviewer/wms?REQUEST=GetCapabilities&VERSION=1.1.1&SERVICE=WMS or http://localhost:8888/mapviewer/wms?REQUEST=GetCapabilities&VERSION=1.3.0&SERVICE=WMS
レスポンスは、VERSIONパラメータ(1.1.1または1.3.0)値に応じて、次の場所で入手可能なWMS機能DTDに準拠したXML文書です。
http://schemas.opengis.net/wms/1.1.1/WMS_MS_Capabilities.dtd
http://schemas.opengis.net/wms/1.3.0/capabilities_1_3_0.xsd
ただし、現在のリリースのMapViewerでは、次の情報を持つ<Service>要素および<Capability>要素を含むXML文書が返されます。
<Service>要素はほとんど空です。<Service.Name>要素にOGC:WMSの必須値のみが含まれます。MapViewerの今後のリリースでは、より多くの情報を持つサービス・メタデータがサポートされる予定です。
<Capability>要素には、<Request>要素、<Exception>要素および<Layer>要素があります。
<Request>要素には、HTTP GET操作またはPOST操作でサポートされる形式およびURLを記述するGetCapabilities要素およびGetMap要素が含まれます。
<Exception>要素は例外の書式を定義します。このリリースでは、サービス例外XMLの書式のみがサポートされます。<Exception>要素はサービス例外DTDに準拠したXML文書を返しますが、実装仕様で指定されている例外はレポートしません。現在のリリースでは、単に<ServiceException>要素のCDATAセクションを使用して、MapViewerサーバーにより返されたOMSExceptionを返します。
<Layer>要素には、ネストされた一連の<Layer>要素が含まれます。最初の(一番外側の)層(layer)には、名前(WMS)、タイトル(Oracle WebMapServer Layers by data source)および定義済データソースごとに1つの<Layer>要素が含まれます。各データソース層には、各定義済ベース・マップに対する<Layer>要素と、どのベース・マップにもリストされていない有効なテーマ(層)ごとに1つのエントリが含まれます。各ベース・マップ層には、ベース・マップ内の事前定義テーマごとに<Layer>要素が含まれます。
USER_SDO_THEMESビューで定義され、実表およびジオメトリ列のUSER_SDO_GEOM_METADATAビューに有効なエントリを持ち、どのベース・マップでも使用されていないテーマが、データソースのベース・マップの後にリストされます。これらのテーマには<ScaleHint>要素はありません。これらには独自の<LatLonBoundingBox>要素および<BoundingBox>要素があります。
WMS実装仕様のとおり、レスポンスのコンテンツ・タイプはapplication/vnd.ogc.wms_xmlに設定します。
層のリストはベース・マップによる出力なので、特定の層またはテーマがGetCapabilitiesレスポンスに何度も出現することがあります。たとえば、テーマTHEME_DEMO_STATESはDEMO_MAPおよびDENSITY_MAPという名前のベース・マップの一部ですが、例E-2では2回出現します。例E-2は、GetCapabilitiesレスポンスの抜粋です(読みやすいようにリフォーマットされています)。
例E-2 GetCapabilitiesレスポンス(抜粋)
<Title>Oracle WebMapServer Layers by data source</Title>
<Layer>
<Name>mvdemo</Name>
<Title>Datasource mvdemo</Title>
<Layer>
<Name>DEMO_MAP</Name>
<Title>Basemap DEMO_MAP</Title>
<SRS>SDO:8307</SRS>
<LatLonBoundingBox>-180,-90,180,90</LatLonBoundingBox>
. . .
<Layer>
<Name>DENSITY_MAP</Name>
<Title>Basemap DENSITY_MAP</Title>
<SRS>SDO:8307</SRS>
<LatLonBoundingBox>-180,-90,180,90</LatLonBoundingBox>
<Layer>
<Name>THEME_DEMO_STATES</Name>
<Title>THEME_DEMO_STATES</Title>
<SRS>SDO:8307</SRS>
<BoundingBox SRS="SDO:8307" minx="-180" miny="-90" maxx="180"
maxy="90" resx="0.5" resy="0.5"/>
<ScaleHint min="50.0" max="4.0"/>
</Layer>
. . .
</Layer>
<Layer>
<Name>IMAGE_MAP</Name>
<Title>Basemap IMAGE_MAP</Title>
<SRS>SDO:41052</SRS>
<LatLonBoundingBox>-180,-90,180,90</ LatLonBoundingBox>
<Layer>
<Name>IMAGE_LEVEL_2</Name>
<Title>IMAGE_LEVEL_2</Title>
<SRS>SDO:41052</SRS>
<BoundingBox SRS="SDO:41052" minx="200000" miny="500000" maxx="750000"
maxy="950000" resx="0.5" resy="0.5"/>
<ScaleHint min="1000.0" max="0.0"/>
</Layer>
. . .
</Layer>
例E-2では、最も内側の層がIMAGE_LEVEL_2テーマを記述しています。<ScaleHint>要素は、ベース・マップ定義におけるテーマのmin_scale値およびmax_scale値(存在する場合)をリストします。たとえば、IMAGE_MAPのベース・マップ定義は次のとおりです。
SQL> select definition from user_sdo_maps where name='IMAGE_MAP'; DEFINITION ------------------------------------------------------------------------ <?xml version="1.0" standalone="yes"?> <map_definition> <theme name="IMAGE_LEVEL_2" min_scale="1000.0" max_scale="0.0"/> <theme name="IMAGE_LEVEL_8" min_scale="5000.0" max_scale="1000.0"/> <theme name="MA_ROAD3"/> <theme name="MA_ROAD2"/> <theme name="MA_ROAD1"/> <theme name="MA_ROAD0"/> </map_definition>
最も内側の層では、<SRS>要素および<BoundingBox>要素は、次のSpatial and Graphメタデータ問合せに示すように、そのテーマの実表のSRIDおよびDIMINFO情報を識別します。
SQL> select srid, diminfo from user_sdo_geom_metadata, user_sdo_themes
2 where name='IMAGE_LEVEL_2' and
3 base_table=table_name and
4 geometry_column=column_name ;
SRID
----------
DIMINFO(SDO_DIMNAME, SDO_LB, SDO_UB, SDO_TOLERANCE)
--------------------------------------------------------------------------------
41052
SDO_DIM_ARRAY(SDO_DIM_ELEMENT('X', 200000, 500000, .5), SDO_DIM_ELEMENT('Y', 750
000, 950000, .5))
例E-2では、ベース・マップの<Layer>要素には、<SRS>要素および<LatLonBoundingBox>要素があります。ベース・マップ定義のすべての層がUSER_SDO_GEOM_METADATAビューで指定された同一のSRID値を持たない場合、<SRS>要素は空になります。すべての層が同一のSRID値(たとえば、41052)を持つ場合は、SRS要素にその値(たとえば、SDO:41052)が指定されます。必須の<LatLonBoundingBox>要素には、現在、デフォルト値(-180,-90,180,90)が入っています。MapViewerでこの機能がサポートされている場合、実際にはこの要素はその層のUSER_SDO_GEOM_METADATAビューのDIMINFO列で指定された境界となり、必要に応じ、可能であれば測地座標に変換されます。
現在、すべての層は不透明かつ問合せ可能とみなされます。つまり、すべての層はGeoRaster、論理ネットワークまたは画像層ではなく、ベクター層とみなされます。
この項では、MapViewerでサポートされるGetFeatureInfoリクエストのパラメータおよびその解釈について説明します。例E-3に、GetFeatureInfoリクエストを示します。
例E-3 GetFeatureInfoリクエスト
http://localhost:8888/mapviewer/wms?REQUEST=GetFeatureInfo&VERSION=1.1.1&BBOX=0,-0 .0020,0.0040&SRS=EPSG:4326&LAYERS=cite:Lakes,cite:Forests&WIDTH=200&HEIGHT=100&INF O_FORMAT=text/xml&QUERY_LAYERS=cite:Lakes,cite:Forests&X=60&Y=60 http://localhost:8888/mapviewer/wms?REQUEST=GetFeatureInfo&VERSION=1.3.0 &BBOX=0,-0.0020,0.0040&CRS=EPSG:4326&LAYERS=cite:Lakes,cite:Forests&WIDTH=200&HEIGHT=100 &INFO_FORMAT=text/xml&QUERY_LAYERS=cite:Lakes,cite:Forests&I=60&J=60
レスポンスはXML文書であり、レスポンスのコンテンツ・タイプはtext/xmlです。例E-4は、例E-3のGetFeatureInfoリクエストに対するレスポンスです。
例E-4 GetFeatureInfoレスポンス
<?xml version="1.0" encoding="UTF-8" ?> <GetFeatureInfo_Result> <ROWSET name="cite:Lakes"> <ROW num="1"> <ROWID>AAAK22AAGAAACUiAAA</ROWID> </ROW> </ROWSET> <ROWSET name="cite:Forests"> <ROW num="1"> <FEATUREID>109</FEATUREID> </ROW> </ROWSET> </GetFeatureInfo_Result>
次の項では、主にGetFeatureInfoリクエストでサポートされるパラメータについて説明します。(MapViewer固有でWMS 1.1.1仕様に含まれないパラメータについては、MapViewerのみと記載します。)E.2.3.10項では、GetFeatureInfoリクエストの属性の問合せ方法について説明します。
GetFeatureInfoリクエストには、GetMapリクエスト(BBOXパラメータ、SRS (1.1.1)またはCRS (1.3.0)パラメータ、WIDTHパラメータ、HEIGHTパラメータおよびオプションのLAYERSパラメータ)のサブセットが含まれます。これらのパラメータは、画面座標のX、Y (1.1.1)またはI、J (1.3.0)ポイントを、問合せ中の層の座標系のポイントに変換するために使用します。すべての層の座標系は、SRSパラメータで指定された同一の座標系であるとみなされます。
EXCEPTIONSパラメータでサポートされる値は、デフォルトのapplication/vnd.ogc.se_xml (WMS 1.1.1)または xml (WMS 1.3.0)のみです。つまり、サービス例外XMLのみがサポートされます。例外は、バージョン(1.1.1または1.3.0)に応じて、次の場所で入手可能なサービス例外DTDに準拠したXML文書としてレポートされます。
http://schemas.opengis.net/wms/1.1.1/WMS_exception_1_1_1.dtd
FEATURE_COUNTパラメータでは、結果セット内の地物の最大数を指定します。デフォルト値は1です。パラメータの値より多くの地物が問合せポイント(X, Y)と相互作用する場合、地物の適当なサブセット(パラメータ値のサイズ)が結果セットで返されます。つまり、GetFeatureInfoコールが次のような一般的な書式の問合せに変換します。
SELECT <info_columns> FROM <layer_table>
WHERE SDO_RELATE(<geom_column>,
<query_point>, 'mask=ANYINTERACT')='TRUE'
AND ROWNUM <= FEATURE_COUNT;
QUERY_LAYERSパラメータでは、問い合せる層のカンマ区切りリストを指定します。LAYERSパラメータが指定されている場合、QUERY_LAYERSの指定はLAYERSパラメータで指定されたリストのサブセットである必要があります。
QUERY_LAYERSパラメータが指定されている場合、すべてのBASEMAPパラメータ値が無視されます。
QUERY_TYPEパラメータは、次のいずれかの値を指定することにより、結果セットを、必要条件を満たすことのできる地物のサブセットに制限します。
at_point: 指定されたポイントの地物のみ返します。
nn: 最も近い近隣の地物のみ返します。結果数は、FEATURE_COUNTパラメータ値(E.2.3.3項を参照)により異なります。結果セットは、距離順に並べ替えられません。
within_radius(またはシノニムであるwithin_distance): RADIUSパラメータ(E.2.3.7項を参照)の値によって指定された距離内にある結果を、FEATURE_COUNTパラメータ(E.2.3.3項を参照)の値に合致する数まで返します。結果セットは、指定された半径内にあると思われる地物の回答セットの任意のサブセットです。結果セットは、距離順に並べ替えられません。
RADIUSパラメータでは、QUERY_TYPEパラメータ値がwithin_radius(E.2.3.6項を参照)である、円形の問合せ用検索領域の半径を指定します。RADIUSパラメータを指定する場合は、UNITパラメータ(E.2.3.8項を参照)も指定する必要があります。
UNITパラメータでは、QUERY_TYPEパラメータ値がwithin_radius(E.2.3.6項を参照)である、円形の問合せ用検索領域の半径の測定単位を指定します。値は、SDO_UNITS_OF_MEASURE表のSHORT_NAME列の有効な長さの単位値(meter、kmmileなど)である必要があります。
UNITパラメータを指定する場合は、RADIUSパラメータ(E.2.3.7項を参照)も指定する必要があります。
XパラメータおよびYパラメータ(WMS 1.1.1)、IパラメータおよびJパラメータ(WMS 1.3.0)では、それぞれ問い合せポイントのX軸およびY軸座標系(ピクセル単位)を指定します。
GetFeatureInfoリクエストでは、問合せ可能な各層(テーマ)のスタイリング・ルールに、問合せ対象であり、XMLレスポンスで返される属性を指定する<hidden_info>要素を含める必要があります。<hidden_info>要素は、SVGマップ・リクエストで返される属性の決定に使用される要素と同じです。
そのようなスタイリング・ルールの例を次に示します。
SQL> select styling_rules from user_sdo_themes where name='cite:Forests';
STYLING_RULES
--------------------------------------------------------------------------------
<?xml version="1.0" standalone="yes"?>
<styling_rules>
<hidden_info>
<field column="FID" name="FeatureId"/>
</hidden_info>
<rule>
<features style="C.PARK FOREST"> </features>
<label column="NAME" style="T.PARK NAME"> 1 </label>
</rule>
</styling_rules>
このスタイリング・ルールでは、cite:ForestsがGetFeatureInfoリクエストのQUERY_LAYERSパラメータ値の1つである場合、FIDという名前の列を検索し、レスポンス・ドキュメントでのタグが<FEATUREID>となることを指定しています。タグは常に大文字です。テーマの問合せ層のスタイリング・ルールで<hidden_info>要素が指定されていない場合は、ROWIDが返されます。例E-4では、cite:Lakes層のスタイリング・ルールに<hidden_info>要素がないため、XMLレスポンスではデフォルト属性ROWIDが返されます。ただし、cite:Forests層には<hidden_info>要素があります。この要素は属性列がFIDであること、レスポンス文書でのそのタグの名前が<FEATUREID>であることを指定しています。
WMSマップ・テーマを現行マップ・リクエストに追加できます。WMSマップ・テーマは、GetMapリクエストの結果であり、MapViewerでレンダリングされた一連の層(テーマ)では画像層となります。
WMSマップ・テーマを追加するには、XML API(E.3.1項を参照)またはJavaBeanベースAPI(E.3.4項を参照)のいずれかのWMS固有の機能を使用します。
MapViewer XML APIを使用して、WMSマップ・テーマを現行マップ・リクエストに追加するには、<theme>要素内で<wms_getmap_request>要素を使用します。
パフォーマンスを向上させるため、<wms_getmap_request>要素は、Web Map Server (WMS)実装からのmap画像のリクエストにのみ使用する必要があります。つまり、<wms_getmap_request>要素内の<service_url>要素では、MapViewerインスタンスではなく、WMS実装を指定する必要があります。MapViewerインスタンスを指定する場合(http://mapviewer.mycorp.com:8888/mapviewer/wmsの値で<service_url>を指定する場合など)は、<wms_getmap_request>要素を使用するかわりに、<themes>要素でMapViewerの事前定義済テーマまたはJDBCテーマの使用を検討してください。
次の例では、<theme>要素内の<wms_getmap_request>要素の一般的な書式を、サンプル要素の値および説明コメントとともに示します。
<themes>
<theme>
<wms_getmap_request isBackgroundTheme="true">
<!-- The wms_getmap_request theme is rendered in the order it
appears in the theme list unless isBackgroundTheme is "true".
-->
<service_url> http://wms.mapsrus.com/mapserver </service_url>
<version> 1.1.1 </version>
<!-- version is optional. Default value is "1.1.1".
-->
<layers> Administrative+Boundaries,Topography,Hydrography </layers>
<!— layers is a comma-delimited list of names.
If layer names contain spaces, use '+' instead of a space -->
<!— styles is optional. It is a comma-delimited list, and it must
have the same number of names as the layer list, if specified.
If style names contain spaces, use '+' instead of a space -->
<styles/>
<srs> EPSG:4326 </srs>
<format> image/png </format>
<transparent> true </transparent>
<bgcolor> 0xffffff </bgcolor>
<exceptions> application/vnd.ogc.se_inimage </exceptions>
<vendor_specific_parameters>
<!-- one or more <vsp> elements each containing
a <name> <value> pair -->
<vsp>
<name> datasource </name>
<value> mvdemo </value>
</vsp>
<vendor_specific_parameters>
<wms_getmap_request>
</theme>
</themes>
<wms_getmap_request>要素では、次の属性および要素を使用できます。
isBackgroundTheme属性: ベクター層の前にこのテーマをレンダリングするかどうかを指定します。デフォルト値はfalseです。
<service_url>要素: WMSサービスのURL(サービス・パラメータなし)を指定します。例: http://my.webmapserver.com/wms
<version>要素: WMSバージョン番号を指定します。値は、1.0.0、1.1.0、1.1.1(デフォルト)、1.3.0のいずれかである必要があります。
<layers>要素: マップ・リクエストに含まれる層名のカンマ区切りリストを指定します。
<styles>要素: layersの層名に適用するスタイル名のカンマ区切りリストを指定します。
<srs>要素: 座標系(空間参照システム)の名前を指定します。デフォルト値はEPSG:4326です。
<format>要素: 結果のマップ画像の形式を指定します。デフォルト値はimage/pngです。
<transparent>要素: 追加する層(1つまたは複数)を結果のマップ画像で透明にするかどうかを指定します。デフォルト値はfalseです。層を透明にする場合は、trueを指定します。
<bgcolor>要素: マップのバックグラウンド・カラーのRGB値を指定します。値には、0xAE75B1などの16進法を使用します。デフォルト値は0xFFFFFF(白)です。
<exceptions>要素: サーバー例外の書式を指定します。デフォルト値はapplication/vnd.ogc.se_inimageです。
<vendor_specific_parameters>要素には、1つ以上の<vsp>要素が含まれ、それぞれの要素にはパラメータ名を指定する<name>要素およびパラメータ値を指定する<value>要素が含まれます。
例E-5は、マップ・リクエストの<wms_getmap_request>要素を示しています。
例E-5 WMSマップ・テーマの追加(XML API)
<?xml version="1.0" standalone="yes"?>
<map_request
title="Raster WMS Theme and Vector Data"
datasource="mvdemo" srid="0"
width="500"
height="375"
bgcolor="#a6caf0"
antialiase="true"
mapfilename="wms_georaster" format="PNG_URL">
<center size="185340.0">
<geoFeature>
<geometricProperty typeName="center">
<Point>
<coordinates>596082.0,8881079.0</coordinates>
</Point>
</geometricProperty>
</geoFeature>
</center>
<themes>
<theme name="WMS_TOPOGRAPHY" user_clickable="false" >
<wms_getmap_request isBackgroundTheme="true">
<service_url> http://wms.mapservers.com:8888/mapserver/wms </service_url>
<layers> TOPOGRAPHY </layers>
<srs> EPSG:29190 </srs>
<format> image/png </format>
<bgcolor> 0xa6caf0 </bgcolor>
<transparent> true </transparent>
<vendor_specific_parameters>
<vsp>
<name> ServiceType </name>
<value> mapserver </value>
</vsp>
</vendor_specific_parameters>
</wms_getmap_request>
</theme>
<theme name="cl_theme" user_clickable="false">
<jdbc_query spatial_column="geom" render_style="ltblue"
jdbc_srid="82279" datasource="mvdemo"
asis="false">select geom from classes where vegetation_type = 'forests'
</jdbc_query>
</theme>
</themes>
<styles>
<style name="ltblue">
<svg width="1in" height="1in">
<g class="color"
style="stroke:#000000;stroke-opacity:250;fill:#33ffff;fill-opacity:100">
<rect width="50" height="50"/>
</g>
</svg>
</style>
</styles>
</map_request>
WMSテーマの事前定義済のXML定義は、E.3.1項と同じパラメータ構造を使用し、オプションのcapabilities_url属性を追加します。これは、WMSテーマの編集時にMap Builderによって使用されます。capabilities_url属性が定義されている場合、Map BuilderはGetCapabilitiesリクエストを発行して、エディタ・ページにいくつかのUI要素を移入します。
例E-6は、メタデータで事前定義済のWMSテーマを作成する方法を示します。実表名および列名には任意の値を使用できます。この例では、どちらにも'WMS'が使用されます。
例E-6 事前定義されたWMSテーマの作成
INSERT INTO user_sdo_themes VALUES (
'PRED_WMS_THEME',
'WMS data',
'WMS',
'WMS', '<?xml version="1.0" standalone="yes"?>
<styling_rules theme_type="wms">
<service_url> http://sampleserver1b.arcgisonline.com/arcgis/services/Specialty/ESRI_StateCityHighway_USA/MapServer/WMSServer </service_url>
<layers> 0,1,2 </layers>
<version> 1.3.0 </version>
<srs> CRS:84 </srs>
<format> image/png </format>
<bgcolor> 0xA6CAF0 </bgcolor>
<transparent> false </transparent>
<styles> +,+,+ </styles>
<exceptions> xml </exceptions>
<capabilities_url> http://sampleserver1.arcgisonline.com/ArcGIS/services/Specialty/ESRI_StateCityHighway_USA/MapServer/WMSServer? </capabilities_url>
</styling_rules>');
WMSデータへのアクセスに認証を必要とするWMSサーバーの場合、テーマ定義に次のものを含める必要があります。
<user>要素: ユーザー名を指定
<password>要素: ユーザー・パスワードを指定
Map Builderツールを使用してWMSマップ・テーマを作成する場合、パスワード値は自動的に暗号化されます。図E-1は、Map Builderツールを使用した、認証情報でのWMSテーマの作成を示しています。この図では、認証オプションが選択され(有効化され)、ユーザーとパスワードが指定されています。
例E-7は、認証情報を含むWMSテーマの作成方法を示しています。
例E-7 指定した認証を持つWMSテーマ
<?xml version="1.0" standalone="yes"?>
<styling_rules theme_type="wms">
<service_url> http://localhost:7001/mapviewer/wms </service_url>
<user> wmsuser </user>
<password> ******* </password>
<layers> THEME_DEMO_STATES </layers>
<version> 1.1.1 </version>
<srs> EPSG:4326 </srs>
<format> image/png </format>
<bgcolor> 0xA6CAF0 </bgcolor>
<transparent> true </transparent>
<exceptions> application/vnd.ogc.se_xml </exceptions>
<vendor_specific_parameters>
<vsp>
<name> datasource </name>
<value> mvdemo </value>
</vsp>
</vendor_specific_parameters>
<capabilities_url> http://localhost:7001/mapviewer/wms? </capabilities_url>
</styling_rules>
MapViewer JavaBeanベースAPIを使用して、WMSマップ・テーマを現行マップ・リクエストに追加するには、addWMSMapThemeメソッドを使用します。
このメソッドは、Web Map Server (WMS)実装からmap画像をリクエストする場合にのみ使用する必要があります。つまり、serviceURLパラメータでは、MapViewerインスタンスではなく、WMS実装を指定する必要があります。
addWMSMapThemeメソッドの書式は、次のとおりです。
addWMSMapTheme(String name, String serviceURL, String isBackgroundTheme,
String version, String[] layers, String[] styles,
String srs, String format, String transparent,
String bgcolor, String exceptions,
Object[] vendor_specific_parameters
);
nameパラメータでは、テーマ名を指定します。
serviceURLパラメータでは、WMSサービスのURL(サービス・パラメータなし)を指定します。例: http://my.webmapserver.com/wms
isBackgroundThemeパラメータでは、該当するテーマをベクター層の前にレンダリングするかどうかを指定します。デフォルト値はfalseです。
versionパラメータでは、WMSバージョン番号を指定します。値は、1.0.0、1.1.0または1.1.1(デフォルト)のいずれかである必要があります。
layersパラメータでは、マップ・リクエストに含まれる層名のカンマ区切りリストを指定します。
stylesパラメータでは、layersの層名に適用するスタイル名のカンマ区切りリストを指定します。
srsパラメータでは、座標系(空間参照システム)の名前を指定します。デフォルト値はEPSG:4326です。
formatパラメータでは、結果のマップ画像の形式を指定します。デフォルト値はimage/pngです。
transparentパラメータでは、追加する層(1つまたは複数)を結果のマップ画像で透明にするかどうかを指定します。デフォルト値はfalseです。層を透明にする場合は、trueを指定します。
bgcolorパラメータでは、マップのバックグラウンド・カラーのRGB値を指定します。値には、0xAE75B1などの16進法を使用します。デフォルト値は0xFFFFFF(白)です。
exceptionsパラメータでは、サーバー例外の書式を指定します。デフォルト値はapplication/vnd.ogc.se_inimageです。
vendor_specific_parametersパラメータでは、ベンダー固有のパラメータのリストを指定します。オブジェクト配列の各要素は、2つの文字列(パラメータ名および値)を持つString配列です。例: vsp = new Object[]{new String[]{"DATASOURCE", "mvdemo"}, //param 1 new String[]{"antialiasing", "true"} //param 2
MapViewerのメイン構成ファイルには、GetCapabilitiesレスポンスの一部の情報をカスタマイズするセクションがあります(1.6.2.12項「WMS GetCapabilitiesレスポンスのカスタマイズ」を参照)。ただし、このMapViewerのメイン構成ファイルで定義できるプロパティの数は限られており、またGetCapabilitiesレスポンスに含まれる層のいくつかの属性はカスタマイズできません。
リリース12.1.3から、MapViewerにWMS構成ファイル(wmsConfig.xml)が追加されました。このWMS構成ファイルに定義された設定は、MapViewerのメイン構成ファイルで定義された類似のWMS設定をオーバーライドします。
wmsConfig.xmlには、次の要素を含めることができます。
<custom_parameter> (E.3.5.1項を参照)
<service_attributes> (E.3.5.2項を参照)
<layer_attributes> (E.3.5.3項を参照)
<get_feature_info> (E.3.5.4項を参照)
<custom_parameters>要素では、次の属性を使用できます。
host属性では、該当するMapViewerサーバーに発行される今後のWMSリクエストでクライアントが使用するサービス・リクエストURLのホスト部を指定します。
port属性では、該当するMapViewerサーバーに発行される今後のWMSリクエストでクライアントが使用するサービス・リクエストURLのポート部を指定します。
protocol属性では、該当するMapViewerサーバーに発行される今後のWMSリクエストでクライアントが使用するサービス・リクエストURLのプロトコル部を指定します。
default_datasource属性は、Capabilitiesのレスポンスの取得に使用されるベース・データソースを指定します。この属性が定義されていない場合、データソースWMSが使用され、そのデータソースがこのMapViewerサーバーに存在する必要があります。
public_datasources属性には、getCapabilitiesレスポンスにどのデータソースのコンテンツをリストするかを指定します。この属性が定義されていない場合、サーバーに存在するすべてのデータソース・コンテンツがリストされます。
use_text_xml属性では、デフォルトで、getCapabilitiesの場合にも標準text/xmlが使用されます。この属性をfalseに設定すると、OGC 1.1.1仕様が使用されます(例: application/vnd.ogc.wms_xml)。
例:
<custom_parameters
host="www.my_corp.com" port="80" protocol="http"
default_datasource="mvdemo"
public_datasources="mvdemo, wms">
</custom_parameters>
<service attributes>要素は、MapViewerのメイン構成ファイルに定義されたこれらの値をオーバーライドします。例:
<service_attributes>
<title>
WMS interface provided by OracleFMW MapViewer
</title>
<abstract>
This WMS service is for demonstration.
</abstract>
<keyword_list>
<keyword>Oracle</keyword>
<keyword>MapViewer</keyword>
<keyword>Spatial and Graph</keyword>
</keyword_list>
<online_resource>
http://localhost:7001/mapviewer/wms
</online_resource>
<contact_information>
<ContactPersonPrimary>
<ContactPerson>John Doe</ContactPerson>
<ContactOrganization>My Corp.</ContactOrganization>
</ContactPersonPrimary>
<ContactPosition>Sr. Manager</ContactPosition>
<ContactAddress>
<AddressType>US Street</AddressType>
<Address>1 MyCorp drv</Address>
<City>Nashua</City>
<StateOrProvince>NH</StateOrProvince>
<PostCode>03062</PostCode>
<Country>USA</Country>
</ContactAddress>
<ContactVoiceTelephone>18001122333</ContactVoiceTelephone>
<ContactFacsimileTelephone></ContactFacsimileTelephone>
<ContactElectronicMailAddress>jdoe@my_corp.com</ContactElectronicMailAddress>
</contact_information>
<Fees>None</Fees>
<AccessConstraints>None whatsoever</AccessConstraints>
</service_attributes>
WMS OGC仕様では、いくつかの層属性が定義されています。層の属性リストには、要約、キーワード・リスト、SRSリスト、スタイル、属性およびその他が含まれます。
<layer_attributes>要素を使用してMapViewerメタデータ(ベース・マップおよびテーマ)のカスタム属性を定義できます。WMS層は、MapViewerのテーマおよびベース・マップに関連付けられています。すべての層属性はオプションであり、定義されている場合、それらはGetCapabilitiesレスポンスを補完します。
例E-8は、ベース・マップおよびテーマのカスタム・パラメータを持つ<layer_attributes>要素を示しています。この例では、ベース・マップDEMO_MAPにはカスタム要素<abstract>が定義されていますが、テーマTHEME_DEMO_STATESにはカスタム要素<abstract>、<keywordlist>、<srs>および<style>が定義されています。<metadata>要素のタイプ属性では、MapViewerのテーマには値themeを、MapViewerのベース・マップには値basemapを使用します。type属性が定義されていないか、値がthemeまたはbasemapに等しくない場合は、デフォルトでthemeが使用されます。
例E-8 カスタムWMS層属性
<layer_attributes>
<datasource name="mvdemo">
<metadata name="DEMO_MAP" type="basemap">
<abstract>Collection of US States</abstract>
</metadata>
<metadata name="THEME_DEMO_STATES" type="theme"
queryable="1" cascaded="0" opaque="1" noSubsets="0"
fixedWidth="500" fixedHeight="400">
<abstract>US States</abstract>
<keywordlist>keyword1,keyword2,keyword3</keywordlist>
<srs>EPSG:4203,EPSG:20248</srs>
<style>
<title>Style title</title>
<name>Style name</name>
<abstract>Style abstract</abstract>
<stylesheeturl>
<format>Stylesheet format</format>
<onlineresource>
<href>http://www.yoururl.com/styledata.html</href>
<type>simple</type>
</onlineresource>
</stylesheeturl>
<styleurl>
<format>Styles format</format>
<onlineresource>
<href>http://www.yoururl.com/style.html</href>
<type>simple</type>
</onlineresource>
</styleurl>
<legendurl>
<format>Legend format</format>
<width>500</width>
<height>500</height>
<onlineresource>
<href>http://www.yoururl.com/legendurl.html</href>
<type>simple</type>
</onlineresource>
</legendurl>
</style>
...
</metadata>
</datasource>
</layer_attributes>
例E-9は、これらのカスタム属性を含むGetCapabilitiesレスポンスの一部を示しています。
例E-9 カスタム属性を含むGetCapabilitiesレスポンス
<Layer>
<Name>DEMO_MAP</Name>
<Title>Basemap DEMO_MAP</Title>
<Abstract>Collection of US States</Abstract>
<SRS>EPSG:4326</SRS>
<LatLonBoundingBox maxy="90.0" maxx="180.0" miny="-90.0" minx="-180.0"/>
<Layer fixedHeight="400" fixedWidth="500" noSubsets="0" opaque="1" cascaded="0" queryable="1">
<Name>THEME_DEMO_STATES</Name>
<Title>THEME_DEMO_STATES</Title>
<Abstract>US States</Abstract>
<KeywordList>
<Keyword>keyword1</Keyword>
<Keyword>keyword2</Keyword>
<Keyword>keyword3</Keyword>
</KeywordList>
<SRS>EPSG:4326</SRS>
<SRS>EPSG:4203</SRS>
<SRS>EPSG:20248</SRS>
<BoundingBox resy="5.0E-8" resx="5.0E-8" maxy="71.33268128071118" maxx="180.0" miny="-14.605189123107024" minx="-180.0" SRS="EPSG:4326"/>
<BoundingBox resy="5.0E-8" resx="5.0E-8" maxy="2.06926736125942E7" maxx="5.5812377162013E7" miny="-1.54158038049741E9" minx="-5.74425799715062E8" SRS="EPSG:4203"/>
<BoundingBox resy="5.0E-8" resx="5.0E-8" maxy="2.06929693795843E7" maxx="6.15958436393193E7" miny="-1.74609707025816E9" minx="-6.32398501646291E8" SRS="EPSG:20248"/>
<Style>
<Name>Style name</Name>
<Title>Style title</Title>
<Abstract>Style abstract</Abstract>
<LegendURL height="500" width="500">
<Format>Legend format</Format>
<OnlineResource xlink:href="http://www.yoururl.com/legendurl.html" xlink:type="simple"/>
</LegendURL>
<StyleSheetURL>
<Format>Stylesheet format</Format>
<OnlineResource xlink:href="http://www.yoururl.com/styledata.html" xlink:type="simple"/>
</StyleSheetURL>
<StyleURL>
<Format>Stylesheet format</Format>
<OnlineResource xlink:href="http://www.yoururl.com/style.html" xlink:type="simple"/>
</StyleURL>
</Style>
<ScaleHint max="1.5E8" min="0.0"/>
</Layer>
...
</Layer>
次の要素は、<get_feature_info>要素で使用できます。これらは、事前定義済MapViewerテーマに対するデフォルトの半径(値および単位)の定義に使用できます。
name属性は、事前定義済テーマの名前を指定します。
datasource属性は、MapViewerデータソースを指定します。
radius属性は、radiusパラメータが定義されていない場合にwithin_radius GetFeatureInfoリクエストで使用されるテーマのデフォルトの半径の値を指定します。
unit属性は、デフォルトの半径の単位を指定します。デフォルトは、m (メートル)です。
例:
<get_feature_info> <theme name="theme_demo_states" datasource="mvdemo" radius="500" unit="km" /> </get_feature_info>