Cesium加载TMS切片

13 篇文章 4 订阅

今天刚好有时间看了这个问题,关于Cesium加载TMS切片。要想实现这个功能,首先要明确使用

ImageryProvider

  • ArcGisMapServerImageryProvider

  • BingMapsImageryProvider

  • OpenStreetMapImageryProvider

  • TileMapServiceImageryProvider

  • GoogleEarthEnterpriseImageryProvider

  • GoogleEarthEnterpriseMapsProvider

  • GridImageryProvider

  • MapboxImageryProvider

  • MapboxStyleImageryProvider

  • SingleTileImageryProvider

  • TileCoordinatesImageryProvider

  • UrlTemplateImageryProvider

  • WebMapServiceImageryProvider

  • WebMapTileServiceImageryProvider

中的哪个子类,TMS,顾名思义,使用的是TileMapServiceImageryProvider

其中核心代码如下:

var layers = viewer.scene.imageryLayers;var tmsLayer = layers.addImageryProvider(       new Cesium.TileMapServiceImageryProvider({            url : 'http://127.0.0.1:8020/spgisgdp/preData/BIGMAP_TMS'     //url为文件夹地址       }));

url为你下载的tms数据的路径。数据有了,代码有了,接着进入调试,调试中会报一个错“tilemapresource.xml”不存在。此xml就是一个关于切片层级的配置文件,在此我提供tilemapresource.xml的具体代码:​​​​​​​

<?xml version="1.0" encoding="utf-8"?> <TileMap version="1.0.0" tilemapservice="http://tms.osgeo.org/1.0.0"> <Title>NE2_HR_LC_SR_W_DR_recolored.tif</Title> <Abstract></Abstract> <SRS>EPSG:4326</SRS> <BoundingBox miny="-90.00000000000000" minx="-180.00000000000000" maxy="90.00000000000000" maxx="180.00000000000000"/> <Origin y="-90.00000000000000" x="-180.00000000000000"/> <TileFormat width="256" height="256" mime-type="image/png" extension="png"/> <TileSets profile="geodetic"> <TileSet href="0" units-per-pixel="0.70312500000000" order="0"/> <TileSet href="1" units-per-pixel="0.35156250000000" order="1"/> <TileSet href="2" units-per-pixel="0.17578125000000" order="2"/> <TileSet href="3" units-per-pixel="0.08789062500000" order="3"/> <TileSet href="4" units-per-pixel="0.0439453125" order="4"/> <TileSet href="5" units-per-pixel="0.02197265625" order="5"/> <TileSet href="6" units-per-pixel="0.010986328125" order="6"/> <TileSet href="7" units-per-pixel="0.0054931640625" order="7"/> <TileSet href="8" units-per-pixel="0.00274658203125" order="8"/> <TileSet href="9" units-per-pixel="0.001373291015625" order="9"/> <TileSet href="10" units-per-pixel="0.0006866455078125" order="10"/> <TileSet href="11" units-per-pixel="3.4332275390625e-4" order="11"/> <TileSet href="12" units-per-pixel="1.71661376953125e-4" order="12"/> <TileSet href="13" units-per-pixel="8.58306884765625e-5" order="13"/> <TileSet href="14" units-per-pixel="4.291534423828125e-5" order="14"/> <TileSet href="15" units-per-pixel="2.145767211914063e-5" order="15"/> <TileSet href="16" units-per-pixel="1.072883605957031e-5" order="16"/> <TileSet href="17" units-per-pixel="5.364418029785156e-6" order="17"/> </TileSets> </TileMap>

以为有了它就可以水到渠成了,有的地图下载器下载的tms切片文件夹,切片层级会有差距,需要将文件夹命名数字减去1即可

最后效果:

请关注我的微信公众号:一位更懂IT的GISER,一位更懂GIS的IT

PS:后续小编的主要精力放到GIS理论开发知识的大众化的道路了,通过浅显易懂的语言,结合多年行业应用开发,通过微信订阅号传播(每周更新三篇文章及相关GIS编码知识),为GIS的发展尽微博之力。终极目标是让GIS不再专业,让GIS更加大众,使得GIS深入各行业应用,让每位GISER都有一股自豪感!以下是我的微信订阅号二维码,感兴趣的可以交流沟通!

加载 TMS(Tile Map Service)服务到 Cesium 中,你可以按照以下步骤进行操作: 1. 首先,确保你已经安装了 Cesium 平台,并且有一个可用的地图服务供加载。 2. 在你的 HTML 文件中,引入 CesiumJavaScript 文件。你可以通过以下代码来引入: ```html <script src="https://cesium.com/downloads/cesiumjs/releases/1.83/Build/Cesium/Cesium.js"></script> ``` 3. 创建一个 Cesium 的 Viewer,并指定要显示地图的容器元素。你可以使用以下代码来创建 Viewer: ```javascript var viewer = new Cesium.Viewer('cesiumContainer'); ``` 这里的 `'cesiumContainer'` 是一个 HTML 元素的 ID,用来指定 Cesium 的 Viewer 将显示在哪个元素中。 4. 在 Viewer 中添加一个 TMS 图层。你可以使用 `ImageryLayer` 来加载 TMS 服务。例如,加载一个名为 `tmsLayer` 的 TMS 图层,可以使用以下代码: ```javascript var tmsLayer = new Cesium.ImageryLayer(new Cesium.UrlTemplateImageryProvider({ url: 'http://example.com/tms/{z}/{x}/{y}.png' })); viewer.imageryLayers.add(tmsLayer); ``` 这里的 `url` 是 TMS 服务的 URL 模板,其中 `{z}`、`{x}` 和 `{y}` 分别代表缩放级别、瓦片的行号和列号。 5. 运行你的应用程序,你应该能够在 Cesium 的 Viewer 中看到加载TMS 服务地图。 请注意,以上代码仅为示例,实际情况可能因你使用的具体 TMS 服务而有所不同。你需要根据你的 TMS 服务的要求来调整代码中的 URL 和其他参数。同时,确保你遵循了 TMS 服务的使用条款和许可证要求。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dinxin横刀一笑

意思不意思那是你的意思

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值