Cesium & QGIS加载图新地球LRC自定义图层
近期接触到一个新的地理数据信息格式——lrc,在网上没查到具体的标准定义文件,只查到它是一个类似XML的文本文件[1],我需要将lrc文件描述的图层加载到Cesium场景中。
1.文件格式一览
起初我并不知道它就是一个XML文档。根据网上找到的相关文档,我下载了一个图新地球,使用它可以正常加载lrc图层,从加载结果上看目标图层不是矢量类型,更像是WMS或WMTS,而在这款软件里,则称之为“自定义图层”。
使用文本软件打开其中一个lrc[2],里面是一些图层信息,结构有点类似OGC的capability描述。
<?xml version="1.0" encoding="GB18030"?><DataDefine> <Version>0</Version> <Name>img</Name> <GeoGridType>WebMercatorWGS84</GeoGridType> <SampleSize>256</SampleSize> <FileExt></FileExt> <DataVersion></DataVersion> <DataType>urlformat</DataType> <TileRowDir>NorthToSouth</TileRowDir> <LocalPath></LocalPath> <MapSpaceType>GCJ02</MapSpaceType> <UrlParamOrder>z,x,y</UrlParamOrder> <NetPath>http://mapservices.u-care.net.cn/V1/UcareLimitedFlightArea_Test/?z=%d&x=%d&y=%d&tilesize=256&layer=no_flyregion&token=</NetPath> <Range> <West>-180</West> <East>180</East> <South>-85</South> <North>85</North> <LevelBegin>1</LevelBegin> <LevelEnd>20</LevelEnd> </Range> </DataDefine>
其中NetPath
这个标签的值就是图层源地址,
http://mapservices.u-care.net.cn/V1/UcareLimitedFlightArea_Test/?z=%d&x=%d&y=%d&tilesize=256&layer=no_flyregion&token=
乍一看和标准的XYZ地图URL很像,如果直接复制到QGIS里是无法获取地图瓦片的,需要做一些修改,因为格式不对,修改为如下。
http://mapservices.u-care.net.cn/V1/UcareLimitedFlightArea_Test/?z={z}&x={x}&y={y}&tilesize=256&layer=no_flyregion&token=
2.添加到QGIS地图
在QGIS里,添加上述XZY图层源
接着将图层添加到地图画布里,成功显示。
3.添加到Cesium场景
对于XZY地图,Cesium有专门的支持,以下是添加该类型图层的示例伪代码。
const viewer = new Cesium.Viewer({...}); viewer.imageryLayers.addImageryProvider( new Cesium.UrlTemplateImageryProvider({ url: 'http://mapservices.u-care.net.cn/V1/UcareLimitedFlightArea_Test/?z={z}&x={x}&y={y}&tilesize=256&layer=no_flyregion&token=', }) );
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了