前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >高质量编码-conf.xml生成TileInfo

高质量编码-conf.xml生成TileInfo

原创
作者头像
MiaoGIS
修改2019-04-02 12:27:25
1.1K1
修改2019-04-02 12:27:25
举报
文章被收录于专栏:Python in AI-IOT

使用Arcgis API时,如果我们要使用地图下载器下载的切片来作为图层服务,可以使用WMTSLayer。

使用WMTSLayer时,需要layerInfo参数,通常自定义的wmts服务如果不是arcgis server发布的,layerInfo参数中还需要tileInfo参数。

WMTSLayer构造函数中需要layerInfo参数
WMTSLayer构造函数中需要layerInfo参数
tileInfo中lods参数定义了缩放层级以及各个层级对应的分辨率和比例尺信息
tileInfo中lods参数定义了缩放层级以及各个层级对应的分辨率和比例尺信息
tileInfo作为layerInfo参数,layerInfo作为WMTSLayer参数
tileInfo作为layerInfo参数,layerInfo作为WMTSLayer参数

通过地图下载器下载的切片可以导出为Arcgis Server缓存瓦片并生成ESRI world file,下载的原始切片和导出的Arcgis Server缓存瓦片都是根据level(缩放级别),row(行),col(列)组织的文件夹目录,只不过两者的组织方式和文件夹名字稍有不同。同时导出Arcgis Server缓存瓦片时会生成conf.xml和conf.ci两个文件,里面定义了tileInfo和fullExtent信息,我们在js中指定WMTSLayer参数时需要使用。

Arcgis Server缓存瓦片以level-row-col组织的图片,同时row和col是以16进制命名
Arcgis Server缓存瓦片以level-row-col组织的图片,同时row和col是以16进制命名
下载的切片目录和Arcgis Server缓存瓦片目录
下载的切片目录和Arcgis Server缓存瓦片目录
导出为Arcgis Server缓存瓦片并生成ESRI world file时生成的conf.xml和conf.ci
导出为Arcgis Server缓存瓦片并生成ESRI world file时生成的conf.xml和conf.ci

conf.xml中的瓦片信息
conf.xml中的瓦片信息
conf.xml中的瓦片信息
conf.xml中的瓦片信息
conf.cdi文件中时瓦片服务的fullExtent信息,可以提供给layerInfo的fullExtent参数
conf.cdi文件中时瓦片服务的fullExtent信息,可以提供给layerInfo的fullExtent参数

使用Arcgis API时,通常我们使用WMTSLayer时需要的tileInfo里各个参数是从这个xml文件里得到的,既然这样,何不直接写一个程序,直接根据这个conf.xml文件生成我们的tileInfo Json格式。

Arcgis Server缓存瓦片xml文件导出为TileInfo Json格式
Arcgis Server缓存瓦片xml文件导出为TileInfo Json格式

使用Python的xml.etree.ElementTree库实现XML解析

代码语言:python
代码运行次数:0
复制
import xml.etree.ElementTree as ET

def genTileInfo(xmlPath,levelPrefix):
        root=ET.parse(xmlPath)
        dpi=root.find('TileCacheInfo/DPI').text
        imageFormat=root.find('TileImageInfo/CacheTileFormat').text
        compressionQuality=root.find('TileImageInfo/CompressionQuality').text
        spatialReference=root.find('TileCacheInfo/SpatialReference/WKID').text

        xOrigin=root.find('TileCacheInfo/TileOrigin/X').text
        yOrigin=root.find('TileCacheInfo/TileOrigin/Y').text
        rows=root.find('TileCacheInfo/TileRows').text
        cols=root.find('TileCacheInfo/TileCols').text

        levelInfos=root.findall('TileCacheInfo/LODInfos/LODInfo')
        levelInfos=map(lambda x:{"level": levelPrefix+x.find('LevelID').text,"scale": float(x.find('Scale').text),"resolution": float(x.find('Resolution').text)},levelInfos)


        tileInfo={
                 "dpi": int(dpi),
                 "format": "image/%s"%imageFormat.lower(),
                 "compressionQuality": int(compressionQuality),
                 "spatialReference": int(spatialReference),
                 "rows": int(rows),
                 "cols": int(rows),
                 "origin": {
                 "x": float(xOrigin),
                 "y": float(yOrigin)
                 },
                 "lods": list(levelInfos)
         }
        return tileInfo

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档