GeoServer-WMTS,TMS
2016年8月23日创建
功能是根据Level/x/y.type来获取切片。
参考:http://www.cnblogs.com/TechSnail/p/3205454.html
注意:只有DefaultStyle的切片才是默认切片,其它样式的切片都带有GUID后缀,不能被TMS请求直接获取。
可以配置切片的线程数,生成方法,策略,级别,样式等。使用RefreshList可以查看当前的切片进度。
切片在数据目录下的gwc文件夹下。
需要使用GDAL的VRT格式,设置TMS,并以栅格方式加载。参见:GDAL_OGR\GDAL应用.docx
示例:
http://localhost:8080/geoserver/gwc/service/tms/1.0.0/testShp%3Astates@testTms@png/3/2/5.png
参考:http://www.opengeospatial.org/standards/wmts/
WMTS1.0.0规范要求在请求中指明一些必须的key(value如果为空,则不填),例如:
service=WMTS,rquest=GetTile,version=1.0.0,图层layer=图层名,样式style=样式名,瓦片格式format=image/png或者image/jpg等,瓦片集tileMatrixSet=切片方案,瓦片名称tileMatrix=瓦片级别名称,所在行数tileRow,所在列数tileCol。
Layer=nurc:Img_Sample,style使用默认,可以不填。Format=image/png或者image/jpg。
tileMatrixSet=Test,tileMatrix=EPSG:4326:5。
从GridSet页面,可以看到左上角为(-180,90),标记位置为(-66.02,48.58)
TILECOL=((-66.02)-(-180))/ (0.02197265625*256)= 20.26,从0起算,去20。
TILEROW=|48.58-90|/(0.02197265625*256)=7.36, 从0起算,去7。
WMTS1.0.0 标准附录H(资料性)伪代码
本资料性附录提供了根据范围框获取图块和获取图块范围框坐标的伪代码。
H.1 根据BBOX计算图块行列号
以下伪代码片段可用于把具有特定CRS坐标的范围框(bBoxMinX, bBoxMinY, bBoxMaxX, bBoxMaxY)转换为图块集的行列范围。该伪代码使用了6.1中的标记方法。该伪代码中,假定bBoxMinX, bBoxMinY,bBoxMaxX, bBoxMaxY, tileMatrixMinX, tileMatrixMinY, tileMatrixMinY,tileMatrixMaxY, tileSpanX 和tileSpanY均为浮点变量(IEEE-754),它具有源于有限精度表示法的准确性问题。典型情况下,如果使用了floor()函数向下取整,这些准确性问题可能会被放大,可能返回的值为期望值±1。为了避免这一问题,本代码使用一个极小值(epsilon),在不被CRS坐标精度影响的地方加上或减去该值。
// 为补偿浮点计算的不准确性
epsilon = 1e-6
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
要获取所有覆盖该范围框的图块,客户端可以扫描tileMinCol到tileMaxCol,和tileMinRow到tileMaxRow的整个范围,包括界点。累计(tileMaxCol- tileMinCol+1) ×(tileMaxRow- tileMinRow+1)个图块将被获取。
H.2 根据图块行列号计算BBOX
以下伪代码可用来把一对图块下标(tileCol, tileRow)转换为该图块用CRS坐标表示的范围框。图块左上角点坐标:
leftX = tileCol *tileSpanX + tileMatrixMinX
upperY =tileMatrixMaxY - tileRow * tileSpanY
图块右下角点坐标:
rightX =(tileCol+1) * tileSpanX + tileMatrixMinX
lowerY =tileMatrixMaxY – (tileRow+1) * tileSpanY
http://localhost:8080/geoserver/gwc/service/wmts?format=image/png&styles=&tileMatrixSET=TEST&request=GetTile&layer=nurc:Img_Sample&TILEMATRIX=EPSG:4326:5&TileROW=7&TILECOL=20
获取WMTS地址:在首页上点击WMTS,从中找到ProviderName,取出其值。
在QGIS新建WMTS连接,从输入相应的地址,设置名称。连接后从瓦片集中找到需要服务,添加。将显示所选的WMTS瓦片。
这里要注意,需要翻转轴方向。
TMS有OSGeo(OpenSourceGeospatial Fundation)发布,WMTS有OGC(Open Geospatial Consortium)发布,2009两者签订兼容协议。WMTS的支持更广泛一下。
OSGeo的目标开源地理软件之间的规范合作。
OGC的目标是制定地理标准。
TMS只支持Restful,WMTS支持KVP、Restfu、SOAP。
参考:http://www.opengeospatial.org/pressroom/pressreleases/944
http://wenku.baidu.com/link?url=Wf3dEo4x1ZjCahGULFWUMSyDOcEwTPopxFBzPLGiv-DjB2OzuNhvRRSwkMbTyJPPcIQ0m9n19azsRSwl_1JlyrO_Z8jXNBoykTpsSjstdBG