文章中所有操作均是在 Cesium 1.91 版本下进行的,其它版本差异请自行适配

地形服务

一些应用场景中我们需要操作地形数据,为此 Cesium 还提供方便的地形服务 TerrainProvider 基类,基于此类,Cesium 封装了5个现成的继承类操作地形图层数据。

可以通过帮助文档搜索 TerrainProvider 可以看到 Cesium 提供的一些接口,如下图:

其中针对 TerrainProvider 基类还要一些比较关键的属性和函数:

  • tilingScheme,Provider 内部地球网格的剖分方式,通常是 WGS84 坐标,也可以选择墨卡托坐标系。
  • hasWaterMask,是否支持水面效果。
  • hasVertexNormals,地形数据中是否包含法向量(光照是否支持)。
  • heightmapTerrainQuality,地形显示的精度。

在介绍地形服务之前,需要简单的说一下坐标系,地形,影像图层的之前的差异。Cesium 中目前支持 WGS1984和墨卡托投影两种。地形 Terrain 和影像 Imagery 分别采用自己的坐标系,比如 Terrain 默认采用 WGS1984 的坐标系,这和经纬高的差不多,而目前 Imagery 影像服务基本都是墨卡托投影。

EllipsoidTerrainProvider

EllipsoidTerrainProvider 是 Globe 默认采用的地形 Provider,该 Provider 不支持水面,没有法向量,开启光照对 Tile 也是无效的。它提供了一个全球范围内高度为 0 的地形,不需要额外的地形文件,就可以实时的自己来构建这个高度为 0 的 Mesh。对那些没有网络环境,或网络不理想,或不需要地形的应用,EllipsoidTerrainProvider 提供了最简单的,无需额外负担的地形数据来构网。EllipsoidTerrainProvider 具有其它 TerrainProvider 不具备的属性 tileScheme,支持 WGS1984 和墨卡托投影两种。一般情况下,可以让 Terrain 的坐标系和 Imagery 的保持一致,都设置成墨卡托投影。

代码片段:

const viewer = new Cesium.Viewer("cesiumContainer");var terrainProvider = new Cesium.EllipsoidTerrainProvider();viewer.terrainProvider = terrainProvider;//设置初始位置 喜马拉雅山随便找了一个地方
viewer.camera.setView({destination: Cesium.Cartesian3.fromDegrees(89.26886, 27.58251, 10000.0),orientation:{//北为0度,90指的是向正东方heading: Cesium.Math.toRadians(0),//平视为0度,-90指的是俯视pitch: Cesium.Math.toRadians(-30),    roll: 0.0}
});

效果如下:

CesiumTerrainProvider

Cesium 标准地形,支持量化网格地形切片,兼容 Cesium ion 所服务的地形数据。

代码片段:

const viewer = new Cesium.Viewer("cesiumContainer");var terrainProvider = new Cesium.CesiumTerrainProvider({url: Cesium.IonResource.fromAssetId(3956),requestWaterMask: true, //请求水体效果所需要的海岸线数据requestVertexNormals: true //请求地形照明数据
});viewer.terrainProvider = terrainProvider;//设置初始位置 喜马拉雅山随便找了一个地方
viewer.camera.setView({destination: Cesium.Cartesian3.fromDegrees(89.26886, 27.58251, 10000.0),orientation:{//北为0度,90指的是向正东方heading: Cesium.Math.toRadians(0),//平视为0度,-90指的是俯视pitch: Cesium.Math.toRadians(-30),    roll: 0.0}
});

效果如下:

CesiumTerrainProvider 还可以处理离线地形数据,作者手里没有现成的地形数据,所以就不在演示了。

VRTheWorldTerrainProvider

可以通过细分高度图来生成地形几何,一般都是从 VT MAK VR-TheWorld Server 服务器调取服务。这里就不进行太多阐述了,用的实在不多(作者找不到太好的示例)。

GoogleEarthEnterpriseTerrainProvider

使用 Google Earth Enterprise REST API 提供地形服务,需要翻墙,也不进行演示。

另外:ArcGISTiledElevationTerrainProvider

ArcGIS 的地形,和 EllipsoidTerrainProvider 差不多,因此同样的不支持法线,水面,但可以选择坐标系,与 EllipsoidTerrainProvider 不一样之处在于每一个切片会根据 ArcGIS 规范请求一张图片。调用 ArcGIS 在线服务需要授权的 token,这里也不演示了。

最后

地形服务,和影像服务不太一样,相对操作简单一些,可以直接某个 TerrainProvider 直接赋值给 Viewer.terrainProvider 即可,需要单独控制它们的显示或隐藏,因为 Cesium 中的地形图层只能有一个。

另外还有基于 Cesium ion 的地形服务,可参考《基于Cesium ion的添加地形》,并且在内置的 BaseLayerPicker 中也有几个自带的地形服务。

14 Cesium—地形服务相关推荐

  1. Cesium本地影像与地形服务发布

    推荐:将 NSDT场景编辑器 加入你的3D开发工具链. 1 数据切片 目前遥感影像及数字高程模型切片主要包括 gdal 和 ctb 两种方式,相应的开源工具包可以在 Cesium 交流群(QQ 群:1 ...

  2. www服务器提供的第一个信息页面,第14章WWW服务

    <第14章WWW服务>由会员分享,可在线阅读,更多相关<第14章WWW服务(48页珍藏版)>请在人人文库网上搜索. 1.第14章 WWW服务,学习本章应掌握: WWW服务系统中 ...

  3. Vue3.0+Cesium+Tomcat服务下倾斜摄影数据加载详细过程

    Vue3.0+Cesium+Tomcat服务下倾斜摄影数据加载 1.Vue-cli 3.0 + cesium 构建 参考资料地址Vue-cli 3.0 + cesium 构建 注意,因为文档中设置默认 ...

  4. 14.1 NFS介绍 14.2 NFS服务端安装配置 14.3 NFS配置选项

    2019独角兽企业重金招聘Python工程师标准>>> 第14章 NFS服务搭建与配置 14.1 NFS介绍 NFS(Network File System)即网络文件系统,是Fre ...

  5. cesium从入门到进阶(一):Viewer、Scene、Camera、加载第三方影像、地形服务

    cesium从入门到进阶(一) 目录 cesium从入门到进阶(一) 视图 Viewer 场景 Scene 相机 Camera viewer Scene Camera 常用

  6. cesium 3dtiles 加载本地数据_记一次Cesium地形数据生成过程

    问题描述 有一小块带高程值的点状数据,需要根据该数据生成Cesium支持的3dtiles数据,在Cesium中显示.经过一周多时间的摸索,终于能够在Cesium中加载成功.现将数据处理流程做个记录,以 ...

  7. 08 Cesium—影像服务-1

    文章中所有操作均是在 Cesium 1.91 版本下进行的,其它版本差异请自行适配 影像服务 1 相关介绍请移步影像服务介绍,这里先介绍其中几个在线服务,包括:ArcGisMapServerImage ...

  8. [cesium] | 地形挖方分析

    效果 github上看到一个挖方的插件,准备改造完善填挖方功能,引入即可使用. 本地示例代码 /*** 创建方量分析* @param {*} options */createCutVolumeAnal ...

  9. Cesium地图服务

    这个就不多写了 根据需要自己选择注释掉的功能  直接上代码: //本地图片 注意图片保存路径 路径计算从App开始imageryProvider: new Cesium.SingleTileImage ...

最新文章

  1. sega+model+3+android,世嘉MODEL2经典老游戏移植登场 追加联网对战
  2. Dbml文件提取建表TSql-CodeSmith
  3. 计算最长公共数字串个数
  4. linux序列比对程序,序列比对软件简单使用教程
  5. Qt学习笔记之样式表
  6. Matlab插值方法大全
  7. java 生成校验验证码_java生成验证码并进行验证
  8. 解决NTKO Office中文文件名保存到服务器时出现乱码的问题
  9. simpledateformat线程不安全_ArrayList为什么线程不安全?
  10. 在Exchange Server 2007中限制部分用户只能收发内部邮件
  11. Spark SQL运行原理和架构
  12. 如何用php饼型图,php绘制饼状图的代码举例
  13. TensorFlow工作笔记002---Centos7.3下TensorFlow使用python创建计算图案例
  14. java第十四次作业
  15. 天天生鲜—创建数据库
  16. EXE文件反编译工具下载
  17. oracle容灾是什么意思,谈谈容灾
  18. 一份超全面的机器学习公共数据集
  19. wpf 动态设置textblock的字体颜色
  20. 5.22 对图层应用多个相同的图层样式(新) [原创Ps教程]

热门文章

  1. GPS 冷启动 热启动 温启动 的区别
  2. 高速不按规定车道行驶_不按规定车道行驶扣几分罚款多少?
  3. SonarQube 安装
  4. 【网络流与线性规划24题】【机器人路径规划问题】【IDA*】【题解】
  5. RED(Random Early Detection/随机早期检测)
  6. 虚拟机mail服务器的安装,Winmail Mail Server邮件服务器软件怎么使用?Winmail Mail Server安装以及使用教程详...
  7. NeurIPS 2022 | 谷歌用贝叶斯优化做巧克力曲奇!还跟自家食堂签了约...
  8. 《C++语言基础》实践参考——旱冰场造价
  9. 计算机知识(1)——为什么32位系统只支持4GB内存?
  10. mysql 行列转换