最新要闻
- 百度预告3月16日召开发布会:主题围绕文心一言
- 全球信息:“假苍耳”入侵中国!剧毒杀死牛羊、改变土壤、减产60%
- 和AI谈恋爱之后 她忘掉了相恋5年的前男友:结局心酸
- 环球快看:苹果供应商印度工厂突发大火:损失超8300万!一半机器烧毁
- 全球关注:“春天一把豆,胜过吃猪肉”,常吃4豆,高营养高蛋白,增强免疫
- 我国累计落实补偿补助资金近270亿元用于长江禁渔退捕渔民安置
- NVIDIA RTX VSR脑补网络视频:标清秒变4K超高清!
- 每日资讯:离谱!男子邮政寄房产证71天仍未送达
- 今日热门!AMD锐龙9 7000X3D正式开卖!价格、性能、功耗三杀13900KS
- 热讯:restaurants怎么读英语发音_restaurants怎么读
- 当前要闻:90后女孩奋斗14年从服务员到博士生 要释放所有潜力:网友感慨太强
- 热门看点:地铁告示牌提醒“严禁黑车及马自达占用停放”引争议 南京官方解释尴尬
- 日本女歌手黑崎真音因病去世 年仅35岁
- 每日关注!沙特土豪要造巨型科幻建筑了:这次是世界最大立方体
- 当前信息:搭载全新12代酷睿N200处理器轻薄本仅 2599元!攀升笔记本开学季促销
- 数学家的小故事五十字_50 100字数学家的小故事
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
【全球新要闻】记一次 CesiumJS 中非 4326/3857 WMTS 数据的加载
- 既有 WMTS 的现状
- 兵来将挡水来土掩 - 问题解决
- url 参数
- tileMatrixSetID 和 layer 参数
- tileMatrixLabels 参数
- rectangle 参数
- tilingScheme 参数
- 小结
记一次 CesiumJS 中 WMTS 数据的加载
CesiumJS 能用的 WMTS 目前只支持两种切片方案(TilingScheme
):
(相关资料图)
- 0 级瓦片有 2 个的
GeographicTilingScheme
- 0 级瓦片只有 1 个的
WebMercatorTilingScheme
光说很抽象,上图:
0 级瓦片有 2 个的投影,是直接以经纬度数值展平成平面,众所周知:
\[纬度跨度:经度跨度 = 180:360 = 1:2\]所以 GeographicTilingScheme
的样子就是一个一比二的 矩形,刚好就在 0 级瓦片时有两个,后续就按常规的四叉树切分即可。而 WebMercator
投影后的坐标系 xy 值域是 \([-20037508.34,20037508.34]^2\),是一个 正方形,所以可以按单个 0 级瓦片进行四叉树切分。
以上,是技术前提,CesiumJS 只能支持这两种切分方案,也就是说,我国常用的其他投影方法,例如高斯投影、兰伯特投影等是不支持的,主要是形状不太满足构造四叉树瓦片。
既有 WMTS 的现状
需求是这样的,这一份 WMTS 的起切等级并不是 0 级,通过观察能力文档,我可以得出如下几个结论:
- 它是自定义切片方案,但满足
GeographicTilingScheme
方案的形状,是1:2
的矩形 - 它的 0 级瓦片与
EPSG:4326
的 0 级瓦片不同 - 它的 0 级瓦片分辨率与
EPSG:4326
的 9 级瓦片相同 - 它的 0 级瓦片共有 1024 列 × 512 行,而
EPSG:4326
是 2 列 × 1 行,是 4326 的 \(512^2\) 倍
如果读者足够敏锐,可以得知这个 WMTS 的起切瓦片实际上几乎就是 4326 的第 9 级瓦片:
EPSG:4490:0 190 192 835 838 eMatrix>
比对广东省省界数据的 4326 坐标系第 9 级瓦片阵(TileMatrix)定义:
EPSG:4326:9 183 198 823 845
最大最小行列号略有差别,是因为数据所跨的范围略有不同,前者范围较后者(广东省省界)小。
我只能说比较庆幸,这样的 WMTS 基本还是可以满足加载要求的,现有 API 可以满足加载调整。
兵来将挡水来土掩 - 问题解决
先给代码,然后解释:
const provider = new WebMapTileServiceImageryProvider({ url: new Resource({ url: "http://127.0.0.1/server/wmts", // 简写 url,会意即可 headers: { "tk": "aaaaaaaaa", // 数据保密,需要传递 token } }), tileMatrixSetID: "EPSG:4490", format: "image/png", tileMatrixLabels: Object.keys(new Array(11).fill(0)).map(v => `EPSG:4490:${v}`), layer: "demo", rectangle: Rectangle.fromDegrees(113.75549, 22.383494, 114.662777, 22.888641), style: "", tilingScheme: new GeographicTilingScheme({ numberOfLevelZeroTilesX: 1024, numberOfLevelZeroTilesY: 512, })})viewer.imageryLayers.addImageryProvider(provider)
url 参数
WebMapTileServiceImageryProvider
的 url
可以是两种类型的值:string
或 Resource
,这个 WMTS 数据需要在所有请求头中加上访问令牌(token),所以我选择创建一个 Resource
对象来传递 token。
tileMatrixSetID 和 layer 参数
这里设为 EPSG:4490
,指的是能力文档中该图层(layer: "demo"
)下的
的瓦片阵集ID(TileMatrixSetID):
EPSG:4490
tileMatrixLabels 参数
这个没什么好说的,就是每一层瓦片阵的访问标签,我这里使用 JavaScript 的数组语法糖快速生成了 11 级(0到10,共11层)瓦片阵的 ID,即:
Object.keys(new Array(11).fill(0)).map(v => `EPSG:4490:${v}`)// ["EPSG:4490:0", "EPSG:4490:1", ..., "EPSG:4490:10"]
这样,网络请求瓦片的链接:
http://127.0.0.1/server/wmts?tilematrix=EPSG%3A4490%3A1&layer=ZT%3ATDYT&style=&tilerow=382&tilecol=1671&tilematrixset=EPSG%3A4490&format=image%2Fpng&service=WMTS&version=1.0.0&request=GetTile
中的 tilematrix
参数的值:EPSG:4490:1
就是正确的了。tileMatrixLabels 数组默认是数字 0 ~ 最大等级,如果图层在能力文档中定义的 tilematrix
的 ID 不是 0 ~ 最大等级的数字的话,就需要这样构造一个数组来告诉 CesiumJS,要以什么样的 tilematrix 发出请求。
rectangle 参数
加上这个参数,就可以最大优化 WMTS 的请求性能,如果不加这个参数限制请求范围,就会取相机视角下的所有筛选到的瓦片,这对这个例子十分有效,主要还是要加上最后一个参数:
tilingScheme 参数
上文已经提及,这个 WMTS 的切片方案与 4326 的是几乎一致的,只不过其 0 级相当于 4326 的 9 级。
那么,当 CesiumJS 发出第 0 级瓦片请求时,默认的 TilingScheme
是只有 1 行 2 列的瓦片的,但是在能力文档中,我注意到了一个定义:
EPSG:4490 urn:ogc:def:crs:EPSG::4490 EPSG:4490:0 545978.7734655447 90.0 -180.0 256 256 1024 512
这是这个 WMTS 服务下的 EPSG:4490
的瓦片阵集(TileMatrixSet)的第 0 个瓦片阵(TileMatrix)的定义,这里定义了几个比较重要的参数:
Identifier
:瓦片阵的 IDScaleDenominator
:比例(分母)TileWidth
/TileHeight
:该瓦片阵的瓦片的像素宽高MatrixWidth
/MatrixHeight
:该瓦片阵的瓦片行列数
要用于前端的就是最后一个,行列数:
new GeographicTilingScheme({ numberOfLevelZeroTilesX: 1024, numberOfLevelZeroTilesY: 512,})
这样就能在 CesiumJS 发出第 0 级瓦片请求时,行列号能与 WMTS 的瓦片行列号对应上了,TilingScheme
API 的这两个参数就是这么个用法,前提是切片的形状满足 CesiumJS 支持的这两个:GeographicTilingScheme
、WebMercatorTilingScheme
小结
通过这次实践,我又进一步学习了老旧但是又不得不用的 WMTS 规范,以及这种非标准 4326、3857 切片数据的加载细节,那就是精确地根据能力文档中各项参数(瓦片阵集的选择、瓦片阵的范围等),配合 JsAPI 控制发出准确的请求。
如果真遇上那种不满足 CesiumJS 这俩切片方案的,估计就难搞了,水平有限。
-
【全球新要闻】记一次 CesiumJS 中非 4326/3857 WMTS 数据的加载
记一次CesiumJS中WMTS数据的加载CesiumJS能用的WMTS目前只支持两种切片方案(TilingScheme):0级瓦片有...
来源: 【全球新要闻】记一次 CesiumJS 中非 4326/3857 WMTS 数据的加载
百度预告3月16日召开发布会:主题围绕文心一言
全球信息:“假苍耳”入侵中国!剧毒杀死牛羊、改变土壤、减产60%
和AI谈恋爱之后 她忘掉了相恋5年的前男友:结局心酸
环球快看:苹果供应商印度工厂突发大火:损失超8300万!一半机器烧毁
全球关注:“春天一把豆,胜过吃猪肉”,常吃4豆,高营养高蛋白,增强免疫
快资讯丨Spring IOC官方文档学习笔记(十三)之环境概要
我国累计落实补偿补助资金近270亿元用于长江禁渔退捕渔民安置
NVIDIA RTX VSR脑补网络视频:标清秒变4K超高清!
每日资讯:离谱!男子邮政寄房产证71天仍未送达
今日热门!AMD锐龙9 7000X3D正式开卖!价格、性能、功耗三杀13900KS
热讯:restaurants怎么读英语发音_restaurants怎么读
【天天播资讯】SpringBoot项目多层级多环境yml设计
天天热头条丨Kubernetes(K8S)应用案例
当前要闻:90后女孩奋斗14年从服务员到博士生 要释放所有潜力:网友感慨太强
热门看点:地铁告示牌提醒“严禁黑车及马自达占用停放”引争议 南京官方解释尴尬
日本女歌手黑崎真音因病去世 年仅35岁
世界时讯:04if分支语句
每日关注!沙特土豪要造巨型科幻建筑了:这次是世界最大立方体
当前信息:搭载全新12代酷睿N200处理器轻薄本仅 2599元!攀升笔记本开学季促销
Rust 知识积累(2)
环球观速讯丨Luffy项目:3、前端调整(全局css、全局配置、全局axios...),后端主页轮播图表设计,接口部分代码编写
世界热消息:pycharm破解版
环球精选!变量处理中的标准化方法
数学家的小故事五十字_50 100字数学家的小故事
焦点播报:曾致2死3伤 特斯拉潮州事故鉴定结果已出:目前不会进行公布
微软与谷歌正面扳手腕:计划推出自家移动应用商店
【世界时快讯】放生大鱼游回岸边“致谢”放生者?别自作多情了 800万粉大V科普
焦点热议:卷死燃油车!新能源价格战打起来了:“迪王”都已坐不住
长安控诉银河之光抄袭背后 两家车企的设计师都是陈政
高并发场景下常见的限流算法及方案介绍
组合数学笔记-计数原理
索尼WF-1000XM4降噪豆发布新固件:可同时连接2台设备
全球报道:女子帮网友表白:单日收入过万
享36个月超长质保!魅族20系列1元超前预订开启:立省699元
《福星小子》新动画角色公开 3月2日最新话登场
身材抢眼!75岁“终结者”施瓦辛格首演电视剧:经典台词“我回来了”
记录--如何优雅地校验后端接口数据
世界今亮点!New Bing怼人、说谎、PUA,ChatGPT已经开始胡言乱语了
要闻:全新起亚K3开启预售 新款起亚K3怎么样?
今热点:只要78元!《元能失控》登陆任天堂国行Switch:支持多人联机 太罕见
今日热闻!累计订单已超5万!比亚迪豪华MPV腾势D9 EV官宣涨价6000元
送女神绝佳好礼 好吃还能发圈!榴芒一刻礼盒大促:立减179元
环球速讯:恐怖!男子酒后吃布洛芬致皮肤大面积剥脱 医生:重度药疹
焦点滚动:另起炉灶?马斯克怒批ChatGPT 欲开发替代品
全球播报:Rust 知识积累(1)
世界百事通!让WPF中的DataGrid像Excel一样可以筛选
全球头条:Codeforces Round #854 by cybercats (Div. 1+2) 1799 A~G 题解
全球报道:2363. 合并相似的物品
【天天速看料】c语言运算符优先级实例解析
资讯:建设银行e路通不用了直接扔了吗_建设银行e路通
恐怕人类永远也搞不定真正的AI!
环球时讯:黄仁勋带着NVIDIA新品发布会来了!RTX 4070梦碎
大量年轻人成为“果粉” :苹果连三星大本营都快攻陷了
精选!AGM G2 Guardian发布:全球首款500米范围热成像手机
全球时讯:不怕停电了?董明珠:格力开始研究将储能技术应用冰箱上
新消息丨.NET MAUI
外敷仙人掌的禁忌和副作用_外敷仙人掌的禁忌
环球热文:官宣定档3月6日 领创科技旗舰荣耀Magic5系列即将国内亮相
需要去看医生的呼噜声什么样?这三种情况要特别注意:有危险
蔚来:阿尔卑斯全系车型采用800V方案 还将共享使用三代换电站
【全球新视野】男子反复发烧20多天被诊出黑热病:发病率仅0.0108/10万
环球快报:一加Buds Pro 2轻享版上架:48dB深度降噪
今热点:11 款顶级 MySQL 图形化工具汇总,总有一款适合你!(建议收藏)
【速看料】Python实战项目3-前后端连接/首页轮播图表设计
热头条丨剑指 Offer 55 - II. 平衡二叉树(java解题)
焦点速讯:安装node并创建vue项目
报告称每天工作超8小时心脏病风险增8成:很多公司拒绝996、启用四天工作制
比亚迪专业个性化品牌曝光:首车性能对标奔驰大G 年内发布
苹果将成本转嫁给果粉!2024年iPad Pro要大涨价
LOL帧率近乎翻倍!Intel Arc A750新驱动测试:大幅提升、最大短板没有了
丰田有队友了!宝马氢燃料SUV将路试:16磅氢能跑500公里
世界速读:CSS中的BFC、IFC、GFC、FFC
环球即时:Synchronized,我要一层一层剥开你的心
全球视点!轻松玩转makefile|基础知识
环球聚焦:曝吴秀波儿子家暴成性,女方晒照满嘴是血,指证男方出轨乱约
周杰伦演唱会数百万人疯抢!演唱会门票30秒卖光
环球新资讯:长安发律师函控诉银河之光抄袭 吉利回应:毫无根据、误导公众
环球微速讯:【同步、共享和内容协作软件】上海道宁与ownCloud让您的团队随时随地在任何设备上轻松处理数据
全白外观拥有硬核实力!影驰Z790金属大师D5 Wi-Fi白金版主板评测:内存轻松提速10%
环球快讯:越来越多PC用户不愿买显卡了:2022年Q4桌面独显销量暴跌43%
世界第一次!中国空间站看到了在轨航天员的“三维皮肤”
【时快讯】89元 小米无线键鼠套装2上架:鼠标轻至45g
环球精选!运酒撞破酒缸1分钟损失5万!男子:一坛酒1000斤 1斤50块钱
天天快看点丨易基因|独家分享:高通量测序后的下游实验验证方法——DNA甲基化篇
IPO参考:联域光电拟深市主板IPO 郝氏控股二次递表港交所
【全球快播报】感冒的食疗偏方秘方_感冒的食疗偏方
8尺夫人面对面!《生化危机8 VR》IGN 8分 MTC用户9.7分
环球热点评!40多万的车没有语音控制功能!宝马遭X3车主集体投诉
今日聚焦!一加Ace 2V搭载旗舰级2.8D微弧玻璃:手感温润如玉
世界讯息:续航1整年!小米智能门锁M20大屏猫眼版开售:首发1899元
世界要闻:《艾尔登法环》原子之心机械姐妹花Mod 性感吸睛
自得其乐是什么意思?自得其乐的名人例子有哪些?
12%是零点几?12%公积金是什么档次?
给据邮件是什么意思?给据邮件如何填写?
男主角性格冰冷的小说有哪些?男主角性格冰冷的小说推荐
兔子能喝牛奶吗?兔子吃的食物有哪些?
小米手机屏幕校准在哪里?小米手机屏幕有多大?
集成显卡可以玩英雄联盟吗?集成显卡和独立显卡有什么区别?
华为mate9哪一年生产的?华为mate9参数配置