WMTS-切片地圖Web服務

I. WMTS-切片地圖Web服務

· 概述

WMTS(OpenGIS® Web Map Tile Service)當前版本是1.0.0。WMTS標準定義了一些操作,這些操作允許用戶訪問切片地圖。WMTS可能是OGC首個支持RESTful訪問的服務標準。

· WMTS的原理和操作

WMTS的切片座標系統和其組織方式可參考圖 17:

image

圖 23 WMTS的座標系統和組織方式

如果知道一個請求的邊界範圍,可以根據以下的算法獲取切片的序號:

// 計算切片序號範圍

epsilon = 1e-6[1] //一個不影響座標精度的小數值

tileMinCol = floor((bBoxMinX - tileMatrixMinX) / tileSpanX + epsilon)

tileMaxCol = floor((bBoxMaxX - tileMatrixMinX) / tileSpanX - epsilon)

tileMinRow = floor((tileMatrixMaxY - bBoxMaxY) / tileSpanY + epsilon)

tileMaxRow = floor((tileMatrixMaxY - bBoxMinY) / tileSpanY - epsilon)

// 避免超出範圍

if (tileMinCol < 0) tileMinCol = 0

if (tileMaxCol >= matrixWidth) tileMaxCol = matrixWidth-1

if (tileMinRow < 0) tileMinRow = 0

if (tileMaxRow >= matrixHeight) tileMaxRow = matrixHeight-1

在一個WMTS服務中包括以下3個操作:

1. GetCapabilities(獲取服務的元信息)

2. GetTile(獲取切片)

3. GetFeatureInfo(可選,獲取點選的要素信息)

可以看到這些操作和WMS的操作非常的異曲同工。

· GetCapabilities操作

1. KVP格式請求

GetCapabilities操作需要以下的參數:

參數

是否必須

默認值

SERVICE

WMTS

REQUEST=GetCapabilities

 

以下是一個WMTS使用KVP格式的GetCapabilities操作示例:

http://www.maps.bob/maps.cgi?

service=WMTS&

request=GetCapabilities

2. SOAP格式請求

以下是一個WMTS使用SOAP格式的GetCapabilities操作示例:

xml version="1.0" encoding="UTF-8"?>

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">

<soap:Body>

<GetCapabilities service="WMTS"

xmlns="http://www.opengis.net/ows/1.1">

<AcceptVersions>

<Version>1.0.0Version>

AcceptVersions>

<AcceptFormats>

<OutputFormat>application/xmlOutputFormat>

AcceptFormats>

GetCapabilities>

soap:Body>

soap:Envelope>

3. RESTful格式請求

GetCapabilities返回的就是服務的元信息(ServiceMetadata),因此RESTful格式請求就是一個指向元信息的資源地址,下面是一個WMTS使用RESTful格式的GetCapabilities操作示例:

http://www.maps.bob/1.0.0/WMTSCapabilities.xml

· GetTile操作

1. KVP格式請求

GetTile操作需要以下的參數:

參數

是否必須

默認值

SERVICE

WMTS

REQUEST=GetTile

 

VERSION

1.0.0

LAYER

 

STYLE

 

FORMAT

 

TILEMATRIXSET

 

TILEMATRIX

 

TILEROW

 

TILECOL

 

Sample dimensions參數

   

以下是一個WMTS使用KVP格式的GetTile操作示例:

http://www.maps.bob/maps.cgi?

service=WMTS&

request=GetTile&

version=1.0.0&

layer=etopo2&

style=default&

format=image/png&

TileMatrixSet=WholeWorld_CRS_84&

TileMatrix=10m&

TileRow=1&

TileCol=3

2. SOAP格式請求

以下是一個WMTS使用SOAP格式的GetTile操作示例:

xml version="1.0" encoding="UTF-8"?>

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">

<soap:Body>

<GetTile service="WMTS" version="1.0.0"

xmlns="http://www.opengis.net/wmts/1.0">

<Layer>etopo2Layer>

<Style>defaultStyle>

<Format>image/pngFormat>

<TileMatrixSet> WholeWorld_CRS_84TileMatrixSet>

<TileMatrix>10mTileMatrix>

<TileRow>1TileRow>

<TileCol>3TileCol>

GetTile>

soap:Body>

soap:Envelope>

3. RESTful格式請求

以下是一個WMTS使用RESTful格式的GetTile操作示例:

http://www.maps.bob/etopo2/default/WholeWorld_CRS_84/10m/1/3.png

· GetFeatureInfo操作

1. KVP格式請求

GetFeatureInfo操作需要以下的參數:

參數

是否必須

默認值

SERVICE

WMTS

REQUEST=GetFeatureInfo

 

VERSION

1.0.0

GetTile請求參數

   

I

 

J

 

INFOFORMAT

 

以下是一個WMTS使用KVP格式的GetFeatureInfo操作示例:

http://www.maps.bob/maps.cgi?

service=WMTS&

request=GetFeatureInfo&

version=1.0.0&

layer=coastlines&

style=default&

format=image/png&

TileMatrixSet=WholeWorld_CRS_84&TileMatrix=10m&TileRow=1&TileCol=3&

J=86&I=132&

InfoFormat=application/gml+xml; version=3.1

2. SOAP格式請求

以下是一個WMTS使用SOAP格式的GetFeatureInfo操作示例:

xml version="1.0" encoding="UTF-8"?>

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">

<soap:Body>

<GetFeatureInfo service="WMTS" version="1.0.0"

xmlns="http://www.opengis.net/wmts/1.0">

<GetTile service="WMTS" version="1.0.0"

xmlns="http://www.opengis.net/wmts/1.0">

<Layer>etopo2Layer>

<Style>defaultStyle>

<Format>image/pngFormat>

<TileMatrixSet> WholeWorld_CRS_84TileMatrixSet>

<TileMatrix>10mTileMatrix>

<TileRow>1TileRow>

<TileCol>3TileCol>

GetTile>

<J>86J>

<I>132I>

<InfoFormat>application/gml+xml; version=3.1InfoFormat>

GetFeatureInfo>

soap:Body>

soap:Envelope>

3. RESTful格式請求

以下是一個WMTS使用RESTful格式的GetFeatureInfo操作示例:

http://www.maps.bob/etopo2/ default/WholeWorld_CRS_84/10m/1/3/86/132.xml


[1] 標準文檔如是說,但我覺得這個地方應該取一負值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章