D.2 WMTS操作
MapViewerは、OGC WMTS 1.0.0標準で指定されたGetCapabilities、GetTileおよびGetFeatureInfo操作をサポートします。
また、この標準では定義されていないが、MapViewerのWMTS操作の柔軟性を高めるいくつかのMapViewer固有のパラメータもサポートされます。
D.2.1 GetCapabilities操作のサポート
MapViewerサーバーがWMTS GetCapabilitiesリクエストを受信すると、そのWMTSサーバーはOGC WMTS仕様に従って使用可能なマップ・キャッシュ・タイル層の定義をXML文書に変換します。(アクセス可能なキャッシュ・タイル層は、wmtsConfig.xmlポリシー・ファイルによって定義されています(存在する場合)。そうでない場合は、WMTSサーバーに使用可能なすべてのデータソースからのすべてのマップ・キャッシュ・タイル層が使用されます。)次に、XML文書がクライアントに返されます。wmtsConfig.xmlポリシー・ファイルにサービス・プロバイダに関する情報が指定されている場合、返されるXML文書内にその情報が提供されます。
この項には、KVPエンコーディングのGetCapabilitiesリクエストとそのレスポンス、およびRESTエンコーディングのGetCapabilitiesリクエストとそのレスポンスが含まれています。KVPまたはRESTエンコーディングのどちらのリクエストの場合にも、次の形式のベースURLが必要です。
http://<host>:<port>/mapviewer/wmts
<host>および<port>は、MapViewerサーバーのホストおよびHTTPポートを表します。コンテキスト・パス/mapviewer/wmtsは、MapViewerのWMTSインタフェースです。
例D-3は、次のKVPコーディングのGetCapabilitiesリクエスト例からのレスポンスです。
http://localhost:8088/mapviewer/wmts?REQUEST=GetCapabilities&SERVICE=WMTS&VERSION=1.0.0
例D-4は、次のRESTコーディングのGetCapabilitiesリクエスト例からのレスポンスです。
http://localhost:8088/mapviewer/wmts/1.0.0/WMTSCapabilities.xml
例D-3および例D-4で、<ows:Value>要素の太字テキストは、リクエストのエンコーディングが異なる場合のそれぞれのレスポンスの違いを示しています。(使用するエンコーディングは、アプリケーション固有の設定です。)これらのレスポンス例で、GetTile操作のエンコーディングはGetCapabilitiesリクエストのエンコーディングと同じですが、GetFeatureInfo操作は常にKVPエンコーディングです。
MapViewer WMTSサーバーでは、使用する2つのエンコーディング間に大きなパフォーマンスの違いはありません。
例D-3 KVPエンコーディングのGetCapabilitiesリクエストからのレスポンス
<?xml version="1.0" encoding="UTF-8"?>
<Capabilities xmlns="http://www.opengis.net/wmts/1.0"
xmlns:ows="http://www.opengis.net/ows/1.1"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:gml="http://www.opengis.net/gml"
xsi:schemaLocation="http://www.opengis.net/wmts/1.0 http://schemas.opengis.net/wmts/1.0/wmtsGetCapabilities_response.xsd"
version="1.0.0">
<ows:ServiceIdentification>
<ows:Title>Web Map Tile Service by myCorp</ows:Title>
<ows:Abstract>U.S. maps for state and county boundaries, highway networks, and big cities.</ows:Abstract>
<ows:Keywords>
<ows:Keyword>Maps</ows:Keyword>
<ows:Keyword>U.S. State and County Boundaries</ows:Keyword>
<ows:Keyword>U.S. Interstate Highways</ows:Keyword>
<ows:Keyword>U.S. Cities</ows:Keyword>
</ows:Keywords>
<ows:ServiceType>OGC WMTS</ows:ServiceType>
<ows:ServiceTypeVersion>1.0.0</ows:ServiceTypeVersion>
<ows:Fees>none</ows:Fees>
<ows:AccessConstraints>none</ows:AccessConstraints>
</ows:ServiceIdentification>
<ows:ServiceProvider>
<ows:ProviderName>provider's name</ows:ProviderName>
<ows:ProviderSite xlink:href="http://www.myCorp.com/mySite" />
<ows:ServiceContact>
<ows:PositionName>technical support specialist</ows:PositionName>
<ows:ContactInfo>
<ows:Phone>
<ows:Voice>+1 800 321 1234</ows:Voice>
<ows:Facsimile>+1 800 321 1235</ows:Facsimile>
</ows:Phone>
<ows:Address>
<ows:DeliveryPoint>123 My Street</ows:DeliveryPoint>
<ows:City>Nashua</ows:City>
<ows:AdministrativeArea>New Hampshire</ows:AdministrativeArea>
<ows:PostalCode>12345-4321</ows:PostalCode>
<ows:Country>U.S.</ows:Country>
<ows:ElectronicMailAddress>myname@mycompany.com</ows:ElectronicMailAddress>
</ows:Address>
</ows:ContactInfo>
</ows:ServiceContact>
</ows:ServiceProvider>
<ows:OperationsMetadata>
<ows:Operation name="GetCapabilities">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="http://localhost:8088/mapviewer/wmts?">
<ows:Constraint name="GetEncoding">
<ows:AllowedValues>
<ows:Value>KVP</ows:Value>
</ows:AllowedValues>
</ows:Constraint>
</ows:Get>
</ows:HTTP>
</ows:DCP>
</ows:Operation>
<ows:Operation name="GetTile">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="http://localhost:8088/mapviewer/wmts?">
<ows:Constraint name="GetEncoding">
<ows:AllowedValues>
<ows:Value>KVP</ows:Value>
</ows:AllowedValues>
</ows:Constraint>
</ows:Get>
</ows:HTTP>
</ows:DCP>
</ows:Operation>
<ows:Operation name="GetFeatureInfo">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="http://localhost:8088/mapviewer/wmts?">
<ows:Constraint name="GetEncoding">
<ows:AllowedValues>
<ows:Value>KVP</ows:Value>
</ows:AllowedValues>
</ows:Constraint>
</ows:Get>
</ows:HTTP>
</ows:DCP>
</ows:Operation>
</ows:OperationsMetadata>
<Contents>
<Layer>
<ows:Title>TEST_TL</ows:Title>
<ows:Abstract>datasource:MVDEMO,layer:TEST_TL</ows:Abstract>
<ows:WGS84BoundingBox>
<ows:LowerCorner>-180.0 -90.0</ows:LowerCorner>
<ows:UpperCorner>180.0 90.0</ows:UpperCorner>
</ows:WGS84BoundingBox>
<ows:Identifier>MVDEMO:TEST_TL</ows:Identifier>
<Style isDefault="true">
<ows:Identifier>_null</ows:Identifier>
</Style>
<Format>image/png</Format>
<TileMatrixSetLink>
<TileMatrixSet>MVDEMO:TEST_TL:EPSG:4326</TileMatrixSet>
<TileMatrixSetLimits>
<TileMatrixLimits>
. . . . . . <!-- omitted to save space -->
<TileMatrixLimits>
<TileMatrix>MVDEMO:TEST_TL:EPSG:4326:8</TileMatrix>
<MinTileRow>0</MinTileRow>
<MaxTileRow>128</MaxTileRow>
<MinTileCol>0</MinTileCol>
<MaxTileCol>256</MaxTileCol>
</TileMatrixLimits>
. . . . . . <!-- omitted to save space -->
</TileMatrixSetLimits>
</TileMatrixSetLink>
</Layer>
<TileMatrixSet>
<ows:Identifier>MVDEMO:TEST_TL:EPSG:4326</ows:Identifier>
<ows:SupportedCRS>urn:ogc:def:crs:EPSG:4326</ows:SupportedCRS>
<TileMatrix>
<ows:Identifier>MVDEMO:TEST_TL:EPSG:4326:0</ows:Identifier>
<ScaleDenominator>5.590822641167623E8</ScaleDenominator>
<TopLeftCorner>-180.0 90.0</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>2</MatrixWidth>
<MatrixHeight>2</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>MVDEMO:TEST_TL:EPSG:4326:1</ows:Identifier>
<ScaleDenominator>2.7954113205838114E8</ScaleDenominator>
<TopLeftCorner>-180.0 90.0</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>3</MatrixWidth>
<MatrixHeight>2</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>MVDEMO:TEST_TL:EPSG:4326:2</ows:Identifier>
<ScaleDenominator>1.3977056602919057E8</ScaleDenominator>
<TopLeftCorner>-180.0 90.0</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>5</MatrixWidth>
<MatrixHeight>3</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>MVDEMO:TEST_TL:EPSG:4326:3</ows:Identifier>
<ScaleDenominator>6.988528301459529E7</ScaleDenominator>
<TopLeftCorner>-180.0 90.0</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>9</MatrixWidth>
<MatrixHeight>5</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>MVDEMO:TEST_TL:EPSG:4326:4</ows:Identifier>
<ScaleDenominator>3.494264150729764E7</ScaleDenominator>
<TopLeftCorner>-180.0 90.0</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>17</MatrixWidth>
<MatrixHeight>9</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>MVDEMO:TEST_TL:EPSG:4326:5</ows:Identifier>
<ScaleDenominator>1.747132075364882E7</ScaleDenominator>
<TopLeftCorner>-180.0 90.0</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>33</MatrixWidth>
<MatrixHeight>17</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>MVDEMO:TEST_TL:EPSG:4326:6</ows:Identifier>
<ScaleDenominator>8735660.37682441</ScaleDenominator>
<TopLeftCorner>-180.0 90.0</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>65</MatrixWidth>
<MatrixHeight>33</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>MVDEMO:TEST_TL:EPSG:4326:7</ows:Identifier>
<ScaleDenominator>4367830.188412205</ScaleDenominator>
<TopLeftCorner>-180.0 90.0</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>129</MatrixWidth>
<MatrixHeight>65</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>MVDEMO:TEST_TL:EPSG:4326:8</ows:Identifier>
<ScaleDenominator>2183915.0942061027</ScaleDenominator>
<TopLeftCorner>-180.0 90.0</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>257</MatrixWidth>
<MatrixHeight>129</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>MVDEMO:TEST_TL:EPSG:4326:9</ows:Identifier>
<ScaleDenominator>1091957.5471030513</ScaleDenominator>
<TopLeftCorner>-180.0 90.0</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>513</MatrixWidth>
<MatrixHeight>257</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>MVDEMO:TEST_TL:EPSG:4326:10</ows:Identifier>
<ScaleDenominator>545978.7735515257</ScaleDenominator>
<TopLeftCorner>-180.0 90.0</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>1025</MatrixWidth>
<MatrixHeight>513</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>MVDEMO:TEST_TL:EPSG:4326:11</ows:Identifier>
<ScaleDenominator>272989.38677576283</ScaleDenominator>
<TopLeftCorner>-180.0 90.0</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>2049</MatrixWidth>
<MatrixHeight>1025</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>MVDEMO:TEST_TL:EPSG:4326:12</ows:Identifier>
<ScaleDenominator>136494.69338788142</ScaleDenominator>
<TopLeftCorner>-180.0 90.0</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>4097</MatrixWidth>
<MatrixHeight>2049</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>MVDEMO:TEST_TL:EPSG:4326:13</ows:Identifier>
<ScaleDenominator>68247.34669394071</ScaleDenominator>
<TopLeftCorner>-180.0 90.0</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>8193</MatrixWidth>
<MatrixHeight>4097</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>MVDEMO:TEST_TL:EPSG:4326:14</ows:Identifier>
<ScaleDenominator>34123.673346970354</ScaleDenominator>
<TopLeftCorner>-180.0 90.0</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>16385</MatrixWidth>
<MatrixHeight>8193</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>MVDEMO:TEST_TL:EPSG:4326:15</ows:Identifier>
<ScaleDenominator>17061.836673485177</ScaleDenominator>
<TopLeftCorner>-180.0 90.0</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>32769</MatrixWidth>
<MatrixHeight>16385</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>MVDEMO:TEST_TL:EPSG:4326:16</ows:Identifier>
<ScaleDenominator>8530.918336742589</ScaleDenominator>
<TopLeftCorner>-180.0 90.0</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>65537</MatrixWidth>
<MatrixHeight>32769</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>MVDEMO:TEST_TL:EPSG:4326:17</ows:Identifier>
<ScaleDenominator>4265.459168371294</ScaleDenominator>
<TopLeftCorner>-180.0 90.0</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>131073</MatrixWidth>
<MatrixHeight>65537</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>MVDEMO:TEST_TL:EPSG:4326:18</ows:Identifier>
<ScaleDenominator>2132.729584185647</ScaleDenominator>
<TopLeftCorner>-180.0 90.0</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>262145</MatrixWidth>
<MatrixHeight>131073</MatrixHeight>
</TileMatrix>
</TileMatrixSet>
</Contents>
<ServiceMetadataURL xlink:href="http://localhost:8088/mapviewer/wmts?SERVICE=WMTS&VERSION=1.0.0&REQUEST=getCapabilities"/>
</Capabilities>
例D-4 RESTエンコーディングのGetCapabilitiesリクエストからのレスポンス
<?xml version="1.0" encoding="UTF-8"?>
<Capabilities xmlns="http://www.opengis.net/wmts/1.0"
xmlns:ows="http://www.opengis.net/ows/1.1"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:gml="http://www.opengis.net/gml"
xsi:schemaLocation="http://www.opengis.net/wmts/1.0 http://schemas.opengis.net/wmts/1.0/wmtsGetCapabilities_response.xsd"
version="1.0.0">
<ows:ServiceIdentification>
<!-- omitted to save space, the same as in KVP encoding -->
</ows:ServiceIdentification>
<ows:ServiceProvider>
<!-- omitted to save space, the same as in KVP encoding -->
</ows:ServiceProvider>
<ows:OperationsMetadata>
<ows:Operation name="GetCapabilities">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="http://localhost:8088/mapviewer/wmts">
<ows:Constraint name="GetEncoding">
<ows:AllowedValues>
<ows:Value>RESTful</ows:Value>
</ows:AllowedValues>
</ows:Constraint>
</ows:Get>
</ows:HTTP>
</ows:DCP>
</ows:Operation>
<ows:Operation name="GetTile">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="http://localhost:8088/mapviewer/wmts">
<ows:Constraint name="GetEncoding">
<ows:AllowedValues>
<ows:Value>RESTful</ows:Value>
</ows:AllowedValues>
</ows:Constraint>
</ows:Get>
</ows:HTTP>
</ows:DCP>
</ows:Operation>
<ows:Operation name="GetFeatureInfo">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="http://localhost:8088/mapviewer/wmts?">
<ows:Constraint name="GetEncoding">
<ows:AllowedValues>
<ows:Value>KVP</ows:Value>
</ows:AllowedValues>
</ows:Constraint>
</ows:Get>
</ows:HTTP>
</ows:DCP>
</ows:Operation>
</ows:OperationsMetadata>
<Contents>
<Layer>
<ows:Title>TEST_TL</ows:Title>
<ows:Abstract>datasource:MVDEMO,layer:TEST_TL</ows:Abstract>
<ows:WGS84BoundingBox>
<ows:LowerCorner>-180.0 -90.0</ows:LowerCorner>
<ows:UpperCorner>180.0 90.0</ows:UpperCorner>
</ows:WGS84BoundingBox>
<ows:Identifier>MVDEMO:TEST_TL</ows:Identifier>
<Style isDefault="true">
<ows:Identifier>_null</ows:Identifier>
</Style>
<Format>image/png</Format>
<TileMatrixSetLink>
<TileMatrixSet>MVDEMO:TEST_TL:EPSG:4326</TileMatrixSet>
<TileMatrixSetLimits>
. . . . . . <!-- omitted to save space -->
<TileMatrixLimits>
<TileMatrix>8</TileMatrix>
<MinTileRow>0</MinTileRow>
<MaxTileRow>128</MaxTileRow>
<MinTileCol>0</MinTileCol>
<MaxTileCol>256</MaxTileCol>
</TileMatrixLimits>
. . . . . . <!-- omitted to save space -->
</TileMatrixSetLimits>
</TileMatrixSetLink>
<ResourceURL format="image/png" template="http://localhost:8088/mapviewer/wmts/MVDEMO:TEST_TL/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.png" resourceType="tile"/>
</Layer>
<TileMatrixSet>
<ows:Identifier>MVDEMO:TEST_TL:EPSG:4326</ows:Identifier>
<ows:SupportedCRS>urn:ogc:def:crs:EPSG:4326</ows:SupportedCRS>
<TileMatrix>
<ows:Identifier>0</ows:Identifier>
<ScaleDenominator>5.590822641167623E8</ScaleDenominator>
<TopLeftCorner>-180.0 90.0</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>2</MatrixWidth>
<MatrixHeight>2</MatrixHeight>
</TileMatrix>
. . . . . . <!-- omitted to save space -->
</TileMatrixSet>
</Contents>
<ServiceMetadataURL xlink:href="http://localhost:8088/mapviewer/wmts?SERVICE=WMTS&VERSION=1.0.0&REQUEST=getCapabilities"/>
</Capabilities>
親トピック: WMTS操作
D.2.2 GetTile操作のサポート
MapViewerサーバーがWMTS GetTileリクエストを受信すると、そのWMTSサーバーはリクエストされたタイルをマップ・キャッシュ・サーバーに要求します。マップ・キャッシュ・サーバーはWMTS層のアクセスを最初にチェックし、層にアクセスできる場合は、リクエストされたWMTSタイルのタイル行、タイル列およびその他のパラメータをMapViewerマップ・キャッシュ・タイル層の仕様に変換します。次に、マップ・キャッシュ・サーバーがそのタイルを準備し、MapViewerのWMTSサーバーに返します。言い換えると、WMTS GetCapabilities XML文書に公開されるMapViewer WMTS層は、MapViewerマップ・キャッシュ・サーバーによって管理されるMapViewerマップ・キャッシュ・タイル層に物理的にマップされる「仮想の」層として見ることができます。
WMTSサーバーはGetTileリクエストを受信すると、MapViewerマップ・キャッシュ・サーバーにそのタイルを作成するように要求し、WMTSサーバーがそれをクライアントに返します。マップ・キャッシュ・サーバーはWMTSサーバーからこのようなリクエストを受信すると、常に仕様に従って(画像サイズや枠ボックスなど)、画像を生成します。マップ・キャッシュ・サーバーの画像生成プロセスは、キャッシュから必要なタイルを取得して要求されたWMTSタイルを「アセンブルする」(モザイク操作や切取り)といった、きわめて簡単なものです。また、キャッシュにタイルがない場合、マップ・キャッシュ・サーバーは別のサーバー(MapViewerのマップ・サーバー)にタイルの生成を要求します。
この項には、KVPおよびRESTエンコーディングのGetTileリクエストおよびレスポンスが含まれています。
次はKVPコーディングのGetTileリクエストです(すべてのWMTSリクエストは1行である必要があることに注意してください)。
http://localhost:8088/mapviewer/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=MVDEMO:TEST_TL&STYLE=_null&format=image/png&TileMatrixSet=MVDEMO:TEST_TL:EPSG:4326&TileMatrix=MVDEMO:TEST_TL:EPSG:4326:8&TileRow=33&TileCol=77
図D-1は、このリクエストに対するレスポンスのタイル画像を示しています。
次は同じ基本GetTileリクエストですが、RESTエンコーディングです(すべてのWMTSリクエストは1行である必要があることに注意してください)。
http://localhost:8088/mapviewer/wmts/MVDEMO:TEST_TL/MVDEMO:TEST_TL:EPSG:4326/8/33/77.png
レスポンス画像は、図D-1に示したものと同じです。
D.2.2.1 WMTS層およびマップ・キャッシュ・タイル層のマップ・タイル
MapViewerマップ・キャッシュ・サーバーはタイル層のマップ・タイルをキャッシュできますが、WMTSサーバーはWMTS層のマップ・タイルをキャッシュしません。言い換えると、WMTSサーバーのマップ・タイルは物理的に存在するものではなく、むしろMapViewerマップ・キャッシュ・タイル層にマップされています。
たとえば、「WMTS層およびマップ・キャッシュ・タイル層のマップ・タイル」のWMTS GetTileリクエストを送信する前にマップ・キャッシュ・タイル層のキャッシュを空にした場合は、次の処理が発生します。
-
WMTSサーバーはリクエストを受信すると、それをマップ・キャッシュ・サーバーに渡します。
-
マップ・キャッシュ・サーバーは、リクエストを内部画像マップ・リクエストに変換してタイル画像を生成します(タイルの枠ボックスで定義された空間ディメンション、画像サイズで定義された256x256などのサイズを使用)。
-
必要なマップ・キャッシュ・タイル層のタイルが識別されます。
-
各マップ・キャッシュ・タイル層のタイルについて、マップ・キャッシュ・サーバーはキャッシュからの取得を試みます。キャッシュからタイルを得られない場合は、別のサーバー、つまりMapViewerマップ・サーバーにマップ・リクエストを送信してタイル画像を生成します(この事例ではキャッシュを空にした直後であるため、こうなります)。
-
すべての必要なマップ・キャッシュ・タイル層のマップ・タイルがフェッチされると、WMTSタイル画像がレンダリングされ、返されます(必要に応じて、モザイク操作および切取りが行われる)。
その後クライアントが同じWMTSタイルのリクエストを送信した場合、前述のステップが繰り返されますが、唯一の違いはステップ4です。ステップ4で、必要なマップ・キャッシュ・タイル層のタイルはキャッシュから得られます。同じタイルの再度の要求では、ステップ4の最も高価な処理が回避されるため、はるかに高速になります。
通常、マップ・キャッシュ・タイル層のタイルと、GetTileリクエストで指定されるWMST層のタイルの間には、1対1の一致はありません。それは、MapViewerマップ・キャッシュ・タイル層が使用する座標系は左下隅に原点がありますが(tile_x, tile_y)、WMTSでは左上隅を原点とする座標系を使用するためです(tile_column, tile_row)。たとえば、(tile_x=0, tile_y=0)のMapViewerの画像タイルは左下隅のタイルですが、(tile_column=0, tile_row=0)のWMTSタイルは左上隅にあります。
データ領域全体は、その対応する原点から始まる、複数のタイルに分割されています。また各ズーム・レベルの最後のタイル(tile_x, tile_y)または(tile_column, tile_row)は、常にデータの上限(MapViewerタイルの座標系の場合)または下限(WMTSタイルの座標系の場合)で正確に位置合せされるとは限りません。したがって、2つのシステム間にはタイルの1対1の一致がない場合もあります。ただし、最後のタイルがデータの境界で正確に位置合せされている場合は、1対1の一致が存在します。
たとえば、「WMTS層およびマップ・キャッシュ・タイル層のマップ・タイル」のGetTileリクエストを使用してズーム・レベル8のWMTSタイル(tile_column=77, tile_row=33)を要求した場合、そのタイルはマップ・キャッシュ・タイル層の(tile_x=77, tile_y=94)のタイルと正確に一致します。これらの2つのタイルが一致する理由は次のとおりです。
-
タイル層の定義により(例D-2を参照)、どちらの座標系も最後のタイルがデータ境界で正確に位置合せされているため、WMTSタイルとマップ・キャッシュ・タイル層のタイルには1対1の一致があることが確実になります。
-
WMTSのtile_row 33は、総タイル行が128となるように、マップ・キャッシュ・サーバーのtile_y 94を補完します(一方の原点は左上隅で、他方は左下です)。例D-3に示すように、
<MaxTileRow>要素の値は128です。また、tile_xおよびtile_columnの値はどちらも西の境界から開始して右方向に進むため、これらの値が同じであることにも注意してください。
MapViewerにWMTSサービス用のタイル層を作成する場合は、<tile_dpi>要素の値を0.28 mmにする必要があります。この値は、ドット/インチ(dpi)表記で<tile_dpi value="90.7142857"/>と同等です。この要素が指定されていない場合、MapViewerのマップ・キャッシュ・タイル層では、タイルを生成するときにタイル層に対して異なる値が使用される場合があります(たとえば、dpiを96に設定するなど)。WMTSが使用するdpi値は90.7142857であるため、この値が異なると、WMTSサービスが遅くなり、マップ・タイルの品質が低下する場合があります。
WGS84 (経度・緯度)測地基準系を使用してWMTSサービス用のタイル層をMapViewerに作成する場合、<tile_meters_per_unit>要素には、赤道に沿って1度の弧長に対応する値(<tile_meters_per_unit value="111319.49079327358"/>)を指定する必要があります。<tile_meters_per_unit>要素が指定されていない場合は、MapViewerが内部で値を計算します。ただし、111319.49079327358の値は、WGS84測地基準系で他のWMTSサービス・プロバイダによって一般的に使用されているため、<tile_meters_per_unit value="111319.49079327358"/>を指定すると、MapViewerのWMTS層と他のサービス・プロバイダのタイル層が一致するようになります。
親トピック: GetTile操作のサポート
D.2.3 GetFeatureInfo操作のサポート
MapViewerでは、次のGetFeatureInfo操作オプションがサポートされます。
-
標準OGC GetFeatureInfoリクエスト
-
ポイント(x,y)でのMapViewer固有のGetFeatureInfoリクエスト
-
枠ボックス内のMapViewer固有のGetFeatureInfoリクエスト
これらの操作によって返される地物情報は、MapViewerのベース・マップ定義、テーマ定義、および対象領域に応じて選択された地物に基づいています。ベース・マップには、各テーマの参照可能なスケール範囲が定義され、各テーマの情報列は<styling_rules>要素の子要素である<hidden_info>の子要素<field>に定義されます。テーマの<styling_rules>要素に情報列が指定されていない場合、GetFeatureInfoレスポンスにはそのテーマの地物に関する情報が含まれません。
GetFeatureInfoプロセスの各オプションの対象領域は次のように計算されます。
-
標準OGC GetFeatureInfoリクエストの場合、ピクセルの列と行、および与えられたズーム・レベルでのそのタイルの位置を、ピクセルの重心でマップ・キャッシュ・タイル層の座標系のポイント(x,y)に変換できます。このポイントを中心とした、このズーム・レベルの5x5ピクセルのウィンドウにより対象領域が定義されます。
-
MapViewer固有の(x, y)ポイントでのリクエストの場合も、指定された(x,y)値を中心とした、そのレベルの5x5ピクセルのウィンドウが対象領域として使用されます。
-
MapViewer固有の枠ボックスのGetFeatureInfoリクエスト・オプションの場合、指定された枠ボックス(min_x, min_y, max_x, max_y)と、そのズーム・レベルの画像タイルのそれらに対応する(column, row)の値が対象領域として使用されます。
MapViewerでは、GetFeatureInfoリクエストで追加のMapViewer固有のパラメータであるchildLayer属性を指定できます(たとえば、childLayer=myTheme1, myTheme2)。このパラメータが指定されている場合、指定されたテーマ(この例ではmyTheme1およびmyTheme2のみ)の地物情報のみが含まれます。このパラメータが指定されていない場合は、ベース・マップ定義内のすべてのテーマがGetFeatureInfoリクエスト用として考慮されます。
内容は次のとおりです。
これらのサブトピックの例(例D-5および例D-6)では、TEST_TLというタイル層のベース・マップ定義およびテーマ定義が使用されています。
例D-5 タイル層TEST_TLのベース・マップ定義
<?xml version="1.0" standalone="yes"?>
<map_definition>
<theme name="THEME_DEMO_STATES" min_scale="" max_scale="0.0" scale_mode="RATIO"/>
<theme name="THEME_DEMO_COUNTIES" min_scale="8500000.0" max_scale="0.0" scale_mode="RATIO"/>
<theme name="THEME_DEMO_HIGHWAYS_LINE" min_scale="1.0E8" max_scale="4.5E7" scale_mode="RATIO"/>
<theme name="THEME_DEMO_HIGHWAYS" min_scale="4.5E7" max_scale="0.0" scale_mode="RATIO"/>
<theme name="THEME_DEMO_BIGCITIES" min_scale="" max_scale="0.0" scale_mode="RATIO"/>
<theme name="THEME_DEMO_CITIES" min_scale="7500000.0" max_scale="0.0" scale_mode="RATIO"/>
</map_definition>例D-6 タイル層TEST_TLのテーマの名前およびスタイリング・ルール
THEME_DEMO_STATES
<?xml version="1.0" standalone="yes"?>
<styling_rules>
<hidden_info>
<field column="STATE" name="Name"/>
<field column="STATE_ABRV" name="Abrv."/>
<field column="TOTPOP" name="Population"/>
</hidden_info>
<rule>
<features style="C.S02_COUNTRY_AREA"> </features>
<label column="STATE_ABRV" style="T.S02_STATE_ABBREVS"> 1 </label>
</rule>
</styling_rules>
THEME_DEMO_COUNTIES
<?xml version="1.0" standalone="yes"?>
<styling_rules>
<hidden_info>
<field column="COUNTY" name="County"/>
<field column="FIPSSTCO" name="Fips"/>
<field column="TOTPOP" name="Population"/>
<field column="STATE_ABRV" name="State"/>
</hidden_info>
<rule>
<features style="L.S06_BORDER_STATE"> </features>
</rule>
</styling_rules>
THEME_DEMO_CITIES
<?xml version="1.0" standalone="yes"?>
<styling_rules>
<hidden_info>
<field column="CITY" name="City"/>
<field column="POP90" name="Population"/>
</hidden_info>
<rule>
<features style="M.ALL_CITY_L2"> (pop90 between 200000 AND 1000000 ) </featu
res>
<label column="city" style="T.S07_CITIES_L2"> 1 </label>
</rule>
<rule>
<features style="M.ALL_CITY_L3"> (pop90 < 200000) </features>
<label column="city" style="T.S07_CITIES_L3"> 1 </label>
</rule>
</styling_rules>
THEME_DEMO_HIGHWAYS
<?xml version="1.0" standalone="yes"?>
<styling_rules>
<hidden_info>
<field column="HIGHWAY" name="Name"/>
<field column="ROUTEN" name="No."/>
</hidden_info>
<rule>
<features style="L.S04_ROAD_INTERSTATE"> </features>
<label column="routen" style="M.HWY_USA_INTERSTATE_NARROW"> (3-length(routen
)) </label>
</rule>
</styling_rules>- OGC GetFeatureInfoリクエスト
- ポイント(x,y)でのMapViewer GetFeatureInfoリクエスト
- 枠ボックス内のMapViewer GetFeatureInfoリクエスト
親トピック: WMTS操作
D.2.3.1 OGC GetFeatureInfoリクエスト
次はOGC標準を使用したサンプルGetFeatureInfoリクエストです(すべてのWMTSリクエストは1行である必要があることに注意してください)。
http://localhost:8088/mapviewer/wmts?SERVICE=WMTS&REQUEST=GetFeatureInfo&VERSION=1.0.0&LAYER=MVDEMO:TEST_TL&STYLE=_null&format=image/png&TileMatrixSet=MVDEMO:TEST_TL:EPSG:4326&TileMatrix=MVDEMO:TEST_TL:EPSG:4326:8&TileRow=33&TileCol=76&I=238&J=240&InfoFormat=application/gml%2bxml; version=3.1
例D-7は、このリクエストからのレスポンスを示しています。
例D-7 OGC GetFeatureInfoリクエストからのレスポンス
<?xml version="1.0" encoding="UTF-8"?>
<layers>
<layer name="THEME_DEMO_CITIES">
<feature id="1">
<City>Worcester</City>
<Population>169759</Population>
</feature>
</layer>
<layer name="THEME_DEMO_BIGCITIES">
</layer>
<layer name="THEME_DEMO_HIGHWAYS">
</layer>
<layer name="THEME_DEMO_HIGHWAYS_LINE">
</layer>
<layer name="THEME_DEMO_COUNTIES">
<feature id="1">
<County>Worcester</County>
<Fips>25027</Fips>
<Population>709705</Population>
<State>MA</State>
</feature>
</layer>
<layer name="THEME_DEMO_STATES">
<feature id="1">
<State>Massachusetts</State>
<Abrv.>MA</Abrv.>
<Population>6016424</Population>
</feature>
</layer>
</layers>親トピック: GetFeatureInfo操作のサポート
D.2.3.2 ポイント(x,y)でのMapViewer GetFeatureInfoリクエスト
次のサンプルMapViewer GetFeatureInfoリクエストは、経度および緯度(xおよびy)の値によって識別されるポイント(この例ではボストン市内のポイント)でのテキスト/HTML形式によるすべてのテーマに関する情報を要求しています(WMTSリクエストは1行である必要があることに注意してください)。
http://localhost:8088/mapviewer/wmts?SERVICE=WMTS&REQUEST=GetFeatureInfo&VERSION=1.0.0&infoformat=text/html&LAYER=MVDEMO:TEST_TL&zoomlevel=8&x=-71.01522133879438&y=42.33731136863662&SRID=8307
このリクエストでは、ポイントの(x,y)座標がパラメータとして指定されています。このポイントはMapViewerによって、ポイントを中心とする、指定されたズーム・レベル(この例では8)の5x5ピクセルの矩形領域に変換され、地物情報を取得する対象領域とされます。リクエストにはchildLayerパラメータがないため、デフォルトで対象領域内のすべての地物が考慮されます。
座標(x, y)が、タイル層で使用されているものとは異なる座標系である場合(空間参照システム)、座標をタイル層の系に変換するためにオプションのSRIDパラメータを指定する必要があります。デフォルト値は、タイル層のSRID値です。
図D-2は、このリクエストからのレスポンスです。
図D-2 ポイント(x,y)でのMapViewer GetFeatureInfoリクエストからのレスポンス

「図D-2 ポイント(x,y)でのMapViewer GetFeatureInfoリクエストからのレスポンス」の説明
親トピック: GetFeatureInfo操作のサポート
D.2.3.3 枠ボックス内のMapViewer GetFeatureInfoリクエスト
次のサンプルMapViewer GetFeatureInfoリクエストは、枠ボックスで定義された対象領域内(この例ではボストン市および一部の周辺コミュニティを含む矩形領域)の2つのテーマ(THEME_DEMO_CITIESおよびTHEME_DEMO_COUNTIES)に関する情報を要求しています(WMTSリクエストは1行である必要があることに注意してください)。
http://localhost:8088/mapviewer/wmts?SERVICE=WMTS&REQUEST=GetFeatureInfo&VERSION=1.0.0&infoformat=text/xml&LAYER=MVDEMO:TEST_TL&childLayer=THEME_DEMO_COUNTIES,THEME_DEMO_CITIES&zoomlevel=8&bbox=-71.32151786220001,42.19361670333521,-70.96354167846667,42.52386233762441&SRID=8307
座標(x, y)が、タイル層で使用されているものとは異なる座標系である場合(空間参照システム)、枠ボックスの座標をタイル層の系に変換するためにオプションのSRIDパラメータを指定する必要があります。デフォルト値は、タイル層のSRID値です。
図D-2は、このリクエストの枠ボックスを示しています。
例D-8は、このリクエストからのXML形式のレスポンスです。
例D-8 枠ボックス内のMapViewer GetFeatureInfoリクエストからのレスポンス
<layers>
<layer name="THEME_DEMO_CITIES">
<feature id="1">
<City>Boston</City>
<Population>574283</Population>
</feature>
</layer>
<layer name="THEME_DEMO_COUNTIES">
<feature id="1">
<County>Middlesex</County>
<Fips>25017</Fips>
<Population>1398468</Population>
<State>MA</State>
</feature>
<feature id="2">
<County>Norfolk</County>
<Fips>25021</Fips>
<Population>616087</Population>
<State>MA</State>
</feature>
<feature id="3">
<County>Suffolk</County>
<Fips>25025</Fips>
<Population>663906</Population>
<State>MA</State>
</feature>
<feature id="4">
<County>Essex</County>
<Fips>25009</Fips>
<Population>670080</Population>
<State>MA</State>
</feature>
</layer>
</layers>親トピック: GetFeatureInfo操作のサポート

