首页 > 其他分享 >【Cesium杂谈】Cesium的tilingScheme和天地图服务

【Cesium杂谈】Cesium的tilingScheme和天地图服务

时间:2024-02-29 16:12:42浏览次数:32  
标签:墨卡托 经纬度 杂谈 tilingScheme 瓦片 Cesium 影像

Cesium的tilingScheme

Cesium的tilingSchme决定了瓦片的组织方式。内部实现了两种tilingScheme方式:GeographicTilingScheme和WebMercatorTilingScheme。

tilingScheme类有以下一些成员变量

  • ellipsoid:椭球体,这个都是WGS84
  • projection:使用的投影方式,GeographicTilingScheme对应的是GeographicProjection,WebMercatorTilingScheme对应的是WebMercatorProjection
  • numberOfLevelZeroTileX/numberOfLevelZeroTileY:在0级时瓦片的个数,后续的层级的瓦片个数都是依据0级瓦片的个数来决定的。其中,GeographicTilingScheme的值为2/1,即,在0级,X方向有2张瓦片,Y方向有1张瓦片,整个0级有2*1 = 2张瓦片。而WebMercatorTilingScheme都是1,即在0级只有一张瓦片。

天地图的瓦片组织方式

天地图的矢量地图和影像地图都提供了经纬度格式和墨卡托投影的服务。可以通过https://t0.tianditu.gov.cn/img_c/wmts?request=GetCapabilities&service=wmts和https://t0.tianditu.gov.cn/img_w/wmts?request=GetCapabilities&service=wmts获取服务的元数据。

墨卡托投影影像服务

从元数据中可以看到,墨卡托服务可以提供的影像的范围为(-20037508.3427892 -20037508.3427892)到(20037508.3427892 20037508.3427892),即全球范围,其单位为米。

从tileMatrixSet中可以看到,提供的服务的第1级影像的瓦片个数为2×2=4张,影像的宽高为256×256。一共可以提供1-18级的影像,第18级影像一共为262144×262144张。
天地图墨卡托格式的地图影像第1级瓦片数量为4,这个和GeographicTilingScheme是一致的,因此不需要额外处理。

经纬度影像服务

经纬度服务提供的影像的范围以经纬度来表示,范围同样是全球范围

在tileMatrixSet中,可以看到一共可以提供1-18级影像,第1级影像X方向有两张,Y方向有1张,即一共是两张影像。
经纬度格式的影像第1级有2张,而WebMercatorTilingScheme的第1级有8张,第0级才是2张,数量不匹配,因此,要使用tileMatrixLabels来指定对应关系,其值可设置为[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18],即,当我们请求第0级的瓦片(2个)对应的影像时,我们应该请求的对应的天地图影像服务的层级为1(也是2张),这样才能做到瓦片和影像的正确对应。

瓦片影像调度规则

cesium中一个瓦片中有影像数据和地形数据,地形数据用于决定瓦片的顶点信息,影像数据决定瓦片的贴图。在创建地球时,使用地形的tilingScheme规则来创建瓦片,cesium的.terrain格式的地形数据,默认是经纬度形式的,因此,瓦片的顶点数据都是以GeographicTilingScheme规则来创建的,即第0级有2个瓦片,分别是东半球和西半球。cesium中还提供了椭球地形,可以指定其tilingScheme,默认为经纬度。
而影像数据由第三方服务提供或者用户自行切片提供,如天地图影像服务,包含两种格式的影像服务。即第一级有四张影像的墨卡托形式的影像服务,和第一级有2张影像的经纬度形式的影像服务。
地形的瓦片规则和影像的瓦片规则可能是不一致的。例如,地形采用的cesium地形,为经纬度瓦片切分规则,第0级有2张瓦片,但是影像使用的是墨卡托瓦片切分规则,第一级有4张影像。那么,在渲染的时候,一个瓦片需要两张影像图才能全部覆盖这个瓦片,因此,需要计算出对应的两张瓦片的行列号,然后去服务请求。

其他地图服务的瓦片规则

百度地图:百度地图使用BD09坐标,是在火星坐标系GCJ-02的基础上二次加密后的坐标,火星坐标系是基于WGS84加密后得到的坐标。百度地图的tilingScheme是基于墨卡托的,其投影方式需要自定义。
高德地图:高德地图只支持墨卡托格式的WMTS图层。tilingScheme基于墨卡托,投影方式是火星坐标。
星图地球:支持经纬度和墨卡托。从0级开始,经纬度0级1张图,墨卡托0级2张图
腾讯地图:只支持墨卡托,GCJ-02火星坐标系

一个开源库https://github.com/dvgis/cesium-map/tree/master提供了cesium实现的不同地图服务的加载功能,可供参考。

Cesium加载天地图示例

墨卡托投影影像

前面已经说过,墨卡托投影的服务每个层级的影像数量是对应的,因此,不需要额外处理,不需要设置tileMatrixLabels,只需要指定一下tilingScheme(也可以不指定,因为默认就是墨卡托的tilingScheme)

const viewer = new Cesium.Viewer("cesiumContainer", {
   imageryProvider:new Cesium.WebMapTileServiceImageryProvider({
    url: "https://{s}.tianditu.gov.cn/img_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={TileMatrix}&TILEROW={TileRow}&TILECOL={TileCol}&tk=你的tk",
    layer: "img_w",
    style: "default",
    format: "tiles",
    tileMatrixSetID: "w",
    subdomains:["t0","t1","t2","t3","t4","t5","t6","t7"],
    tilingScheme: new Cesium.WebMercatorTilingScheme(),
  })
})

经纬度影像

经纬度影像需要指定tileMatrixLabels

const viewer = new Cesium.Viewer("cesiumContainer", {
  imageryProvider:new Cesium.WebMapTileServiceImageryProvider({
    url: "https://{s}.tianditu.gov.cn/img_c/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=c&FORMAT=tiles&TILEMATRIX={TileMatrix}&TILEROW={TileRow}&TILECOL={TileCol}&tk=你的tk",
    layer: "img_c",
    style: "default",
    format: "tiles",
    tileMatrixSetID: "c",
    subdomains:["t0","t1","t2","t3","t4","t5","t6","t7"],
    tilingScheme: new Cesium.GeographicTilingScheme(),
    tileMatrixLabels: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18"],
  })
})

两种影像的结果是一样的

标签:墨卡托,经纬度,杂谈,tilingScheme,瓦片,Cesium,影像
From: https://www.cnblogs.com/masakulayou/p/18044522

相关文章

  • Cesium之Webpack配置指南
    源码:https://gitee.com/chenxiangzhi/cesium_webpack1.获取Token注册Cesium账号,点击AccessTokensTab并复制默认token2.安装依赖包npminitnpminstallcesiumnpminstall--save-devwebpackwebpack-clinpminstall--save-devstyle-loadercss-loader#处......
  • 「杂谈」逆元
    问题:求\(a^{-1}\bmodm\),其中\((a,m)=1\),\(m>1\)。快速幂当\(m\)是质数时,由费马小定理,\(a^{m-1}\equiv1\pmodm\),因此\(a^{m-2}\equiva^{-1}\pmodm\)。EXGCD解方程\(ax+my=(a,m)=1\),则\(a^{-1}\equivx\pmodm\)。多项式牛顿迭代当\(m......
  • cesium加载地形,倾斜摄影,wmts切片服务
    一、wmts切片渲染样例constmap=newHGZH3D.Map('map')//可加载ArcGISMapServer服务的网址,如下为部分服务路径:// 影像图层-https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer// 物理地图-https://services.arcgisonline.com/arcgis/......
  • 杂谈 —— 或许是旷野
    浑浑噩噩假期也算快结束了。基本上没学什么内容,打打游戏,和朋友出去玩玩也算结束了。 没什么意外和惊喜的假期,当然努力一个学期反倒更低的分还算是意外的,本想去学习但是不知道学什么,很迷茫也很懒。投了几份简历,没收获什么结果,因为做tx的智力测试题还破防了... 写这篇博客的......
  • gal game 杂谈——前言
    galgame杂谈——前言大年三十凌晨(早上)打算开始写了吧,作为第一篇先写一些前言好了。第一次接触galgame还是在B站上看到有人玩《我和她的世界末日》当时觉得挺有意思的,加上本来也是一个经营控,直接原价入了。打通后感受到了极大的震撼,后来gal打多了以后发现,其实《我和她的世界......
  • gal game 杂谈——《GINKA》
    galgame杂谈——《GINKA》剧情梳理Ps:女主分为小学阶段和高中阶段,这里称小学阶段为小时候的女主,高中阶段为大女主,分离出来爱的为GINKA(长相是小时候的女主)。1.乘船回忆女主及关键信息这里流了一个伏笔,写男主在船上晕过去。和后面剧情有关。回忆起女主,小学时俩人约定在夏日......
  • gal game 杂谈——《候鸟》
    galgame杂谈——《候鸟》剧情梳理高三背景,男主叶雨萧,女主梁芷柔。叶雨萧是个废柴,在一次偶然机会救下梁芷柔后,梁芷柔开始给自发给叶雨萧补课,后来叶雨萧在梁芷柔的帮助下明确了志向,尽管经历了千辛万苦却终有遗憾。但经过复读后,叶雨萧最终追上了梁芷柔的脚步……感想明明是国......
  • Cesium
    HelloWorld-CesiumSandcastleCesium的主要特点如下:高性能:Cesium使用WebGL技术来实现3D地球渲染,具有优异的性能和效果。跨平台:Cesium支持Windows、Linux、macOS和iOS等多个操作系统,同时也可以在各种浏览器中运行。开放性:Cesium是一个完全开源的项目,任何人都可......
  • Cesium常用知识点
    构建四元数//地理位置坐标(三维)constposition=Cesium.Cartesian3.fromDegrees(-123.0744619,44.0503706,height);constheading=Cesium.Math.toRadians(135);//航向constpitch=0;//俯仰constroll=0;//横滚角consthpr=newCesium.Headi......
  • cesium billboard 方式 绘制echart
    动态创建dom绘制echart//绘制echartfunctiondrawChart(){constcontainer=document.createElement('canvas')container.width=450;container.height=450;constoption={}//按照实际情况配置constchart=echarts.init(container)chart.setOption(o......