Cesium加载Supermap的wmts服务
最近使用cesium 加载supermap的wmts 服务,多次遇到加载异常与白页面问题,纠结好久最后才搞定[特此记录]
1、首先找到方法加载wmts 的api 文档
官方提示使用WebMapTileServiceImageryProvider加载wmts

2、然后编辑加载代码
//1.新建ImageryProviderlet wmtsImageryProvider = new Cesium.WebMapTileServiceImageryProvider({url: 'http://localhost:8080/iserver/services/agscachev-Layers/wmts', //服务地址,如:'http://localhost:8080/geoserver/gwc/service/wmts'layer: 'Layers', //图层名称,如:'tasmania'style: 'default',format: 'image/png',tileMatrixSetID: 'ChinaPublicServices_Layers',tileMatrixLabels: ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23"],tilingScheme: new Cesium.GeographicTilingScheme({ numberOfLevelZeroTilesX: 2,numberOfLevelZeroTilesY: 1}),});viewer.imageryLayers.addImageryProvider(wmtsImageryProvider);
【重点】其中查找layer 、tileMatrixSetID、format相当关键,当初就是因为这个参数没对一直400
还有一个是tilingScheme一定要给,否则加载后一直白页面
手动查找方法:网页打开http://localhost:8080/iserver/services/agscachev-Layers/wmts如下分别找到layer 、tileMatrixSetID、format值填入以上方法中

3、测试加载结果

测试wmts 已经加载成功,但是手动查找wmts 参数的确不利于生产,那有没有自动获取参数的方法呢?答案时有的,我们可以使用大佬的 xml-js吧xml 解析为json 获取想要的参数即可
4、自动解析xml
我们参考这个博客将xml解析为json建一个util.js
const xmlContent = require("xml-js");
/*** 将xml转换为json*/
const TransferXmlToJson = {// 把_text属性直接改为值,见xml-js issueRemoveJsonTextAttribute(value, parentElement) {try {var keyNo = Object.keys(parentElement._parent).length;var keyName = Object.keys(parentElement._parent)[keyNo - 1];parentElement._parent[keyName] = value;} catch (e) {}},// 以文本方式获取xml文件getWMTSParamsFromUrl(xmlUrl) {var option = {ignoreDeclaration: true,compact: true,trim: true,ignoreInstruction: true,ignoreComment: true,ignoreCdata: true,ignoreDoctype: true,};return new Promise((resolve, reject) => {fetch(xmlUrl).then((res) => res.text()).then((res) => {try {// 解析xml为JS对象var xmlObj = xmlContent.xml2js(res, { ...option, textFn: this.RemoveJsonTextAttribute });var info = this.getWMTSInfo(xmlObj);resolve(info);} catch (e) {console.error(e);resolve(null);}}).catch((e) => {console.error(e);resolve(null);});});},// 获取服务需要的参数getWMTSInfo(obj) {const WMTSXML = "http://www.opengis.net/wmts/1.0";const wmstList = [];if (obj.Capabilities) {const { _attributes, Contents } = obj.Capabilities;if (_attributes?.xmlns !== WMTSXML) {return;}const { Layer, TileMatrixSet } = Contents;if (!Layer || !TileMatrixSet) {return;}const info = {url: null,layer: null,style: null,tileMatrixSetID: null,format: null,tileMatrixLabels: null,crs: null,center: null,};const tileSet = TileMatrixSet[0] || TileMatrixSet;info.tileMatrixSetID = tileSet["ows:Identifier"];info.crs = tileSet["ows:SupportedCRS"];info.tileMatrixLabels = tileSet.TileMatrix.map((s) => s["ows:Identifier"]);let LayerInfo = Layer;if (!Array.isArray(LayerInfo)) {LayerInfo = [LayerInfo];}LayerInfo.forEach((layer) => {let resourceURL = layer?.ResourceURL;if (!Array.isArray(resourceURL)) {resourceURL = [resourceURL];}info.format = "image/png" || layer?.Format;const resourceURLItem = resourceURL.filter((s) => s._attributes.resourceType === "tile");let pngResource = resourceURLItem.find((s) => s._attributes.format.endsWith("png")) || resourceURLItem[0];if (pngResource) {info.url = pngResource?._attributes?.template;info.format = pngResource?._attributes?.format;}info.layer = layer["ows:Identifier"];info.style = layer.Style["ows:Identifier"];const wgsBox = layer["ows:WGS84BoundingBox"];const lower = wgsBox["ows:LowerCorner"].split(" ").map((s) => Number(s));const upper = wgsBox["ows:UpperCorner"].split(" ").map((s) => Number(s));const center = [lower[0] + (upper[0] - lower[0]) / 2, lower[1] + (upper[1] - lower[1]) / 2];info.center = center;wmstList.push({ ...info });});return wmstList;}},
};
然后直接调用即可
import { TransferXmlToJson } from '@/utils/index'const serviceUrl ='http://localhost:8080/iserver/services/agscachev-Layers/wmts';TransferXmlToJson.getWMTSParamsFromUrl(serviceUrl).then((rxml) => {if (rxml) {console.log("获取解析结果:",rxml);}});
🆗现在任何wmts服务都可以自动读取参数加载服务了
相关文章:
Cesium加载Supermap的wmts服务
最近使用cesium 加载supermap的wmts 服务,多次遇到加载异常与白页面问题,纠结好久最后才搞定[特此记录] 1、首先找到方法加载wmts 的api 文档 官方提示使用WebMapTileServiceImageryProvider加载wmts 2、然后编辑加载代码 //1.新建ImageryProviderlet…...
C/C++:C/C++在大数据时代的应用,以及C/C++程序员未来的发展路线
目录 1.C/C在大数据时代的应用 1.1:C/C数据处理 1.2:C/C数据库 1.3:C/C图像处理和计算机视觉 1.3.1:导读 2.C/C程序员未来的发展路线 2.1:图导 1.C/C在大数据时代的应用 C/C在大数据时代中仍然是一种被广泛应用的编…...
linux RabbitMQ-3.8.5 安装
软件版本操作系统CentOS Linux release 7.9.2009erlangerlang-23.0.2-1.el7.x86_64rabbitMQrabbitmq-server-3.8.5-1.el7 RabbitMQ的安装首先需要安装Erlang,因为它是基于Erlang的VM运行的。 RabbitMQ安装需要依赖:socat和logrotate,logrotate操作系统已经存在了&…...
单链表Single-LinkList
0、节点结构体定义 typedef struct LNode{int data;struct LNode *next;} Lnode, *LinkList; 1、初始化 bool InitList(LinkList &L) //初始化 {L new LNode;if(!L){return false;}L->next NULL;return true; } 2、创建 (1)头插法 void Cr…...
AI嵌入式全景:各厂商、系列和开发工具的综合概览
要看几个方面 1 算力: 2 支持何种模型: 3 是否支持可视化的窗口系统: 一般而言各个平台均采用linux操作系统,官方提供对应SDK,安装好后可使用硬件加速资源。 而且如果要使用其硬件加速,一般都要完成模型转…...
mysql Left Join on条件 where条件的用法区别
数据准备 SELECT t1.id,t1.name,t2.local FROM t1 LEFT JOIN t2 ON t1.idt2.id; 执行结果 SELECT t1.id,t1.name,t2.local FROM t1 LEFT JOIN t2 ON t1.idt2.id and t2.localbeijing; SELECT t1.id,t1.name,t2.local FROM t1 LEFT JOIN t2 ON t1.idt2.id where t2.localbeijing…...
Redis中的淘汰策略
前言 本文主要说明在Redis面临key过期和内存不足的情况时,可以采用什么策略进行解决问题。 Redis中是如何应对过期数据的 正如我们知道的Redis是基于内存的、单线程的一个中间件,在面对过期数据的时候,Redis并不会去直接把它从内存中进行剔…...
MyBatis进阶:掌握MyBatis动态SQL与模糊查询、结果映射,让你在面试中脱颖而出!!
目录 一、引言 二、MyBatis动态SQL 2.1.if元素使用 2.2.foreach元素使用 三、MyBatis模糊查询 ①使用#{字段名} ②使用${字段名} ③使用concat{%,#{字段名},%} 总结 四、MyBatis结果映射 4.1.案例演示 4.1.1.resultType进行结果映射 4.1.2.resultMap进行结果映射 …...
C++ 写入txt文件内容并追加内容
咨询通义千问的“C 写入txt文件内容并追加内容”: 可以使用ofstream类来写入txt文件内容。若想追加内容,可以使用ios::app标志来创建输出流对象,然后在写入时将其设置为ios::app。以下是一个示例代码: #include <iostream>…...
Leetcode---359周赛
题目列表 2828. 判别首字母缩略词 2829. k-avoiding 数组的最小总和 2830. 销售利润最大化 2831. 找出最长等值子数组 一、判断首字母缩略词 纯模拟,代码如下 class Solution { public:bool isAcronym(vector<string>& words, string s) {string tmp…...
Keras三种主流模型构建方式:序列模型、函数模型、子类模型开发实践,以真实烟雾识别场景数据为例
Keras和PyTorch是两个常用的深度学习框架,它们都提供了用于构建和训练神经网络的高级API。 Keras: Keras是一个高级神经网络API,可以在多个底层深度学习框架上运行,如TensorFlow和CNTK。以下是Keras的特点和优点: 优点…...
objective-v 获取iPhone系统当前时间字符串适配12小时制和24小时制
我们最开始获取系统当前时间,如下,这种方式存在一个问题,当iPhone关闭了24小时制时,获取的时间格式是:iPhone11上:20230822下午210568760;iPhone7 plus上:2023082240043851 PM&#…...
并查集及其简单应用
文章目录 一.并查集二.并查集的实现三.并查集的基本应用 一.并查集 并查集的逻辑结构:由多颗不相连通的多叉树构成的森林(一个这样的多叉树就是森林的一个连通分量) 并查集的元素(树节点)用0~9的整数表示,并查集可以表示如下: 并查集的物理存储结构:并查集一般采用顺序结构实…...
基于web的服装商城系统java网上购物商店jsp源代码mysql
本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 基于web的服装商城系统 系统有1权限:前台…...
.NET Core发布到IIS
项目介绍 1、开发工具Visual Studio 2017,语言C#,SQL SERVER,WIN10 2、本地IIS,手机上或其他用户在和本地在同一个局域网内访问,同时要把防火墙关掉 3、IIS全名Internet Information Services,用来发布网站 先决条件 安…...
Spring的基本概念
前言 Spring 究竟是什么?其实Spring简单来说就是一个包含众多工具方法的IOC容器。 那么什么是IOC呢? IoC Inversion of Control 翻译成中⽂是“控制反转”的意思. 既然Spring 是⼀个IoC(控制反转)容器,重点还在“容…...
设计模式之原型模式
文章目录 一、介绍二、实现步骤三、案例四、应用五、细胞分裂六、改造细胞分裂逻辑七、总结 一、介绍 原型模式属于创建型设计模式,用于创建重复的对象,且同时又保证了性能。 该设计模式的好处是将对象的创建与调用方分离。 其目的就是**根据一个对象…...
正则表达式在网页处理中的应用四则
正则表达式在网页处理中的应用四则 正则表达式(Regular Expression)为字符串模式匹配提供了一种高效、方便的方法。几乎所有高级语言都提供了对正则表达式的支持,或者提供了现成的代码库供调用。本文以ASP环境中常见的处理任务为例,介绍正则表达式的应用技巧。 一、检验密…...
ping使用方法
文章目录 1、Ping的基础知识2、Ping命令详解3、怎样使用Ping这命令来测试网络连通?4、如何用Ping命令来判断一条链路好坏?5、对Ping后返回信息的分析1.Request timed out2.Destination host Unreachable 1、Ping的基础知识 ping命令相信大家已经再熟悉不…...
“心理健康人工智能产学研创新联盟”揭牌成立|深兰科技
8月14日上午,“2023树洞救援年会”在上海举行,会上举行了“心理健康人工智能产学研创新联盟”的签约和揭牌仪式。“树洞行动救援团”创始人深兰科技科学院智能科学首席科学家、荷兰阿姆斯特丹自由大学人工智能系终身教授黄智生,深兰科技集团创…...
国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
