SuperMap iClient3D for WebGL 用 WebMapTileServiceImageryProvider 接口加载天地图 WMTS 服务

本文主要是介绍SuperMap iClient3D for WebGL 用 WebMapTileServiceImageryProvider 接口加载天地图 WMTS 服务,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

SuperMap iClient3D for WebGL 用 WebMapTileServiceImageryProvider 接口加载天地图 WMTS 服务

  • 申请天地图开发者 token
  • 读懂能力文档和 WMTS 接口参数
    • 1. WebGL 接口 API
    • 2. 天地图能力文档
    • 3. 对照能力文档填写 WMTS 参数
  • 完整代码和加载效果
  • 不能正常加载的情况
    • 1. tileMatrixLabels 未设置或者设置错误
    • 2. tilingScheme 未设置或者设置错误
    • 3. tilingScheme 类设置错误
  • 实用链接

作者:jjz

  在GIS三维前端项目中,很多人有使用天地图 WMTS 服务作为底图的需求,但是超图 WebGL 中没有用到 WMTS 接口的示例,天地图的层级和其他 WMTS 服务也略有区别,常常导致加载错误。本文针对以上问题,提供在三维球上加载天地图地图瓦片服务的示例,并详细阐释加载 WMTS 的注意事项,帮助大家在 Cesium 或者 WebGL 中正确加载天地图。

申请天地图开发者 token

这一部分已经在 iDesktop 加载天地图教程中详细说明,注意行业选择其他,应用类型选择浏览器端即可。包括验证服务url的可用性,以及不可用时的解决办法,也在这篇教程中。各位务必按照步骤进行检查,确保服务可用。

读懂能力文档和 WMTS 接口参数

1. WebGL 接口 API

首先提供接口的总体图片,如果图片看不清,下文有详细解释。橙色为必填,黄色为建议填写。其他内容请查看接口的 API 链接

WMTS API

2. 天地图能力文档

这一部分的填写需要对照天地图能力文档,例如:
https://t0.tianditu.gov.cn/vec_c/wmts?service=wmts&tk=您的token&request=GetCapabilities
在这里插入图片描述

3. 对照能力文档填写 WMTS 参数

接口属性的详细说明如下:

  • url: 服务的地址
    https://t0.tianditu.gov.cn/vec_c/wmts?service=wmts&tk=您的token
  • format: 瓦片的格式
    对应能力文档中 Format 标签,此例中是 tiles。
  • layer: 图层名
    对应 Layer 标签,此例中图层名为 vec。
  • style: 样式或者风格
    对应 Style 标签,本例中是 default.
  • tileMatrixSetID: 瓦片集的唯一标识符
    对应 TileMatrixSet 标签中的 Identifier,本例中是 c。
  • tileMatrixLabel: 层级的集合
    对应 TileMatrix 中的 Identifier,一般重点查看开始层级,天地图中是1;大部分服务是从0开始,注意区别。
let matrixIds = [];
for (let i = 0; i < 19; i++) {// 此处天地图为 i + 1,因为开始层级为 1;开始层级为 0 的写 i 即可matrixIds[i] = i + 1; 
}
  • tilingScheme: 几何图形在椭球表面的平铺方式
    以天地图为例,vec_c 服务的 EPSG 是4490,所以椭球体要设置为 CGCS2000,一般默认是 WGS1984 的椭球体,Cesium.Ellipsoid.CGCS2000 这个参数是超图WebGL自己定义的,原生 Cesium 没有。第零层的瓦片数量参考能力文档中 MatrixWidthMatrixHeight 即可,宽是 X,长是 Y。
tilingScheme: new Cesium.GeographicTilingScheme({ellipsoid: Cesium.Ellipsoid.CGCS2000,numberOfLevelZeroTilesX: 2,numberOfLevelZeroTilesY: 1
})

示例的 vec_c 是地理坐标系的服务,所以用 GeographicTilingScheme,如果是 vec_w 这样的投影坐标系服务,需要用 WebMercatorTilingScheme,参数填写是一样的。

  • maximumLevel: 显示的最大层级
    天地图服务最大层级为19,更大的级别没有图,如果不设置最大层级,到了20层后就加载不出来了。
    最大层级

完整代码和加载效果

这里贴上这个功能的完整代码

let viewer = new Cesium.Viewer('cesiumContainer');
let matrixIds = [];
for (let i = 0; i < 19; i++) {matrixIds[i] = i + 1;
}let wmtsImageryProvider = new Cesium.WebMapTileServiceImageryProvider({url: 'https://t0.tianditu.gov.cn/vec_c/wmts?service=wmts&tk=您的token',layer: 'vec',style: 'default',format: 'tiles',tileMatrixSetID: 'c',tileMatrixLabels: matrixIds,tilingScheme: new Cesium.GeographicTilingScheme({ellipsoid: Cesium.Ellipsoid.CGCS2000,numberOfLevelZeroTilesX: 2,numberOfLevelZeroTilesY: 1}),
});let tdtLayer = viewer.imageryLayers.addImageryProvider(wmtsImageryProvider);
// 设置叠加天地图图层的透明度,方便观察偏移情况
tdtLayer.alpha = 0.5;

加载的效果:
加载效果

局部放大(天地图图层设置了透明度):
局部放大

不能正常加载的情况

如果遇到以下错误的加载效果,请仔细对照前文进行修改。如果完全加载不出来,可能不止一个参数填写错误,或者 url 当前无法访问。

1. tileMatrixLabels 未设置或者设置错误

如果出现类似下图的情况,需要注意 tileMatrixLabels 的设置:
错位效果1

2. tilingScheme 未设置或者设置错误

错位效果2

3. tilingScheme 类设置错误

注意地理坐标系如4490用 GeographicTilingScheme,投影坐标系如3857用 WebMercatorTilingScheme。
错位效果3

实用链接

  1. 将影像地图发布成 wmts 服务,并在客户端加载影像地图
  2. WebMapTileServiceImageryProvider API
  3. GeographicTilingScheme API
  4. WebMercatorTilingScheme API

这篇关于SuperMap iClient3D for WebGL 用 WebMapTileServiceImageryProvider 接口加载天地图 WMTS 服务的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/744978

相关文章

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三

从入门到精通详解LangChain加载HTML内容的全攻略

《从入门到精通详解LangChain加载HTML内容的全攻略》这篇文章主要为大家详细介绍了如何用LangChain优雅地处理HTML内容,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录引言:当大语言模型遇见html一、HTML加载器为什么需要专门的HTML加载器核心加载器对比表二

RabbitMQ消息总线方式刷新配置服务全过程

《RabbitMQ消息总线方式刷新配置服务全过程》SpringCloudBus通过消息总线与MQ实现微服务配置统一刷新,结合GitWebhooks自动触发更新,避免手动重启,提升效率与可靠性,适用于配... 目录前言介绍环境准备代码示例测试验证总结前言介绍在微服务架构中,为了更方便的向微服务实例广播消息,

浅析Spring如何控制Bean的加载顺序

《浅析Spring如何控制Bean的加载顺序》在大多数情况下,我们不需要手动控制Bean的加载顺序,因为Spring的IoC容器足够智能,但在某些特殊场景下,这种隐式的依赖关系可能不存在,下面我们就来... 目录核心原则:依赖驱动加载手动控制 Bean 加载顺序的方法方法 1:使用@DependsOn(最直

Android ClassLoader加载机制详解

《AndroidClassLoader加载机制详解》Android的ClassLoader负责加载.dex文件,基于双亲委派模型,支持热修复和插件化,需注意类冲突、内存泄漏和兼容性问题,本文给大家介... 目录一、ClassLoader概述1.1 类加载的基本概念1.2 android与Java Class

关于DNS域名解析服务

《关于DNS域名解析服务》:本文主要介绍关于DNS域名解析服务,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录DNS系统的作用及类型DNS使用的协议及端口号DNS系统的分布式数据结构DNS的分布式互联网解析库域名体系结构两种查询方式DNS服务器类型统计构建DNS域

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试

Spring如何使用注解@DependsOn控制Bean加载顺序

《Spring如何使用注解@DependsOn控制Bean加载顺序》:本文主要介绍Spring如何使用注解@DependsOn控制Bean加载顺序,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录1.javascript 前言2. 代码实现总结1. 前言默认情况下,Spring加载Bean的顺