14 Cesium—地形服务
文章中所有操作均是在 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—地形服务相关推荐
- Cesium本地影像与地形服务发布
推荐:将 NSDT场景编辑器 加入你的3D开发工具链. 1 数据切片 目前遥感影像及数字高程模型切片主要包括 gdal 和 ctb 两种方式,相应的开源工具包可以在 Cesium 交流群(QQ 群:1 ...
- www服务器提供的第一个信息页面,第14章WWW服务
<第14章WWW服务>由会员分享,可在线阅读,更多相关<第14章WWW服务(48页珍藏版)>请在人人文库网上搜索. 1.第14章 WWW服务,学习本章应掌握: WWW服务系统中 ...
- Vue3.0+Cesium+Tomcat服务下倾斜摄影数据加载详细过程
Vue3.0+Cesium+Tomcat服务下倾斜摄影数据加载 1.Vue-cli 3.0 + cesium 构建 参考资料地址Vue-cli 3.0 + cesium 构建 注意,因为文档中设置默认 ...
- 14.1 NFS介绍 14.2 NFS服务端安装配置 14.3 NFS配置选项
2019独角兽企业重金招聘Python工程师标准>>> 第14章 NFS服务搭建与配置 14.1 NFS介绍 NFS(Network File System)即网络文件系统,是Fre ...
- cesium从入门到进阶(一):Viewer、Scene、Camera、加载第三方影像、地形服务
cesium从入门到进阶(一) 目录 cesium从入门到进阶(一) 视图 Viewer 场景 Scene 相机 Camera viewer Scene Camera 常用
- cesium 3dtiles 加载本地数据_记一次Cesium地形数据生成过程
问题描述 有一小块带高程值的点状数据,需要根据该数据生成Cesium支持的3dtiles数据,在Cesium中显示.经过一周多时间的摸索,终于能够在Cesium中加载成功.现将数据处理流程做个记录,以 ...
- 08 Cesium—影像服务-1
文章中所有操作均是在 Cesium 1.91 版本下进行的,其它版本差异请自行适配 影像服务 1 相关介绍请移步影像服务介绍,这里先介绍其中几个在线服务,包括:ArcGisMapServerImage ...
- [cesium] | 地形挖方分析
效果 github上看到一个挖方的插件,准备改造完善填挖方功能,引入即可使用. 本地示例代码 /*** 创建方量分析* @param {*} options */createCutVolumeAnal ...
- Cesium地图服务
这个就不多写了 根据需要自己选择注释掉的功能 直接上代码: //本地图片 注意图片保存路径 路径计算从App开始imageryProvider: new Cesium.SingleTileImage ...
最新文章
- sega+model+3+android,世嘉MODEL2经典老游戏移植登场 追加联网对战
- Dbml文件提取建表TSql-CodeSmith
- 计算最长公共数字串个数
- linux序列比对程序,序列比对软件简单使用教程
- Qt学习笔记之样式表
- Matlab插值方法大全
- java 生成校验验证码_java生成验证码并进行验证
- 解决NTKO Office中文文件名保存到服务器时出现乱码的问题
- simpledateformat线程不安全_ArrayList为什么线程不安全?
- 在Exchange Server 2007中限制部分用户只能收发内部邮件
- Spark SQL运行原理和架构
- 如何用php饼型图,php绘制饼状图的代码举例
- TensorFlow工作笔记002---Centos7.3下TensorFlow使用python创建计算图案例
- java第十四次作业
- 天天生鲜—创建数据库
- EXE文件反编译工具下载
- oracle容灾是什么意思,谈谈容灾
- 一份超全面的机器学习公共数据集
- wpf 动态设置textblock的字体颜色
- 5.22 对图层应用多个相同的图层样式(新) [原创Ps教程]
热门文章
- GPS 冷启动 热启动 温启动 的区别
- 高速不按规定车道行驶_不按规定车道行驶扣几分罚款多少?
- SonarQube 安装
- 【网络流与线性规划24题】【机器人路径规划问题】【IDA*】【题解】
- RED(Random Early Detection/随机早期检测)
- 虚拟机mail服务器的安装,Winmail Mail Server邮件服务器软件怎么使用?Winmail Mail Server安装以及使用教程详...
- NeurIPS 2022 | 谷歌用贝叶斯优化做巧克力曲奇!还跟自家食堂签了约...
- 《C++语言基础》实践参考——旱冰场造价
- 计算机知识(1)——为什么32位系统只支持4GB内存?
- mysql 行列转换