14 Cesium—地形服务

Cesium入门之七:Cesium加载地形数据 介绍了Cesium加载地形数据的方法,包括地形数据的概念、Cesium中加载地形数据的类,并使用CesiumTerrainProvider加载了一个地形数据到三维地球中 阅读详情

文章中所有操作均是在 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 中也有几个自带的地形服务。

Cesium 加载地形数据 Cesium 添加世界地形 createWorldTerrain方法: requestWaterMask : default false --是否应从服务器请求其他照明信息(如果有) requestVertexNormals : default false – 指示客户端是否应从服务器请求每片水面罩(如果有) // Bing地图影像,可以指定mapStyle,详见BingMapsStyle类 var terrainProvider = Cesium.createWorldTerrain({ 阅读详情

相关推荐

DEM高程地形瓦片数据Cesium使用教程

如何使用Nginx发布地形瓦片数据,并在前端Cesium中将发布后的数据进行接入

cyber_room的博客 5378

Cesium实践(2)—— 加载地形与影像

地形数据用来表示真实的地形起伏;地图数据指的则是真实的影像服务, 本文实践在Cesium中加载地形与影像数据。

qq_37987033的博客 1万+

Cesium 生成terrain地形数据----CTB方式及步骤

后记:如果你只是需要将tif处理成terrain,而不是学习处理过程,可以直接使用这个简单的工具:CesiumLab。不需要拼接成一个TIF,也不需要处理No-Data,地形功能免费。 背景:项目前端使用Cesium,地形服务一直使用外网的,常常因为翻墙访问的问题,导致地形数据取不到,进而导致地球不能加载,故决定搭建自己的地形服务,彻底解决这个问题。博文包含以下几个过程: 目录 一、下载原始...

qq_26891571的博客 4928

从零开始vue使用cesium开发3d地形terrainProvider(二)

先上图: 第一步:使用cesiumlab制作地图切片 cesiumlab官网:Cesium实验室官网 我这里下载的是2.5版本的,3版本有bug不能注册账号 因为是后端提供给我的切片数据,所以我不需要下载直接将数据放进 打开cesiumlab 选择地形切片,点击添加,储存类型选择散列文件其余随意 添加完成后出现这一堆文件 将该文件放在项目中的public里,这只是测试所以我放在了public里,正常需要通过tomcat(推荐nginx发布)来发布引用 在viewer里写如下代..

yinzisang的博客 4638

Cesium实战指南:从零构建高性能TIF地形服务

本文详细介绍了如何使用Cesium从零构建高性能TIF地形服务,涵盖数据准备、切片方案选型、服务发布及Cesium集成与性能调优。通过实战案例,帮助开发者掌握DEM数据处理、地形切片及Web服务配置等关键技术,实现高效地形可视化。特别适合需要处理大规模地形数据的GIS开发者。

weixin_42531128的博客 382

告别平底锅!用Cesium加载真实地形,从在线服务到本地DEM切图全流程(附避坑点)

本文详细介绍了如何使用Cesium加载真实地形数据,从在线服务到本地DEM切图的全流程操作,帮助开发者解决平底锅效应问题。文章涵盖Cesium官方地形服务的快速上手、本地DEM数据处理与切片实战,以及常见避坑点和性能优化技巧,适用于需要高精度地形展示的三维场景开发。

weixin_33508411的博客 357

Cesium在线影像服务和地形服务

Cesium在线影像服务和地形服务 1.地图影像服务 var viewer = new Cesium.Viewer('cesiumContainer',{ imageryProvider: new Cesium.UrlTemplateImageryProvider({ url: "http://mt1.google.cn/vt/lyrs=s&hl=zh-CN&x={x}&y={y}&z={z}&s=Gali" }) })

sinat_41537539的博客 2765

cesium课程第六篇:加载在线与离线地形数据

本文介绍了Cesium加载地形数据的两种主流格式:STK World Terrain(基于Quantized-Mesh格式)和Heightmap高程图。重点讲解了在线地形数据加载方法,包括使用Cesium官方地形服务(通过CesiumTerrainProvider.fromIonAssetId或fromUrl方法)以及自定义DEM地形文件的上传与转换流程(通过Cesium ion平台将DEM数据转换为Quantized-Mesh格式)。文中提供了详细的操作步骤截图和示例代码,帮助开发者快速实现地形数据加载功

God's asylum的博客 38

Cesium学习笔记——dem/tif地形的分块与加载

在Cesium项目中,在平坦坦地球中加入三维地形不仅可以增强真实感与可视化效果,还可以​​提升用户体验与交互性,今天,我们来学习一下如何将dem/tif格式的地形数据进行分块和加载。

mingyu_mingyu的博客 5052

cesium根据坐标位置获取地形高度(cesium篇.64)

听老人家说:多看美女会长寿 地图之家总目录(订阅之前建议先查看该博客) 文章末尾处提供保证可运行完整代码包,运行如有问题,可“私信”博主。 效果如下所示: 下面献上完整代码,代码重要位置会做相应解释 <html lang="en"> <head> <meta charset="UTF-8"/> <script src="Build/Cesium/Cesium.js"></script> <link rel="st

地图之家 2755

64.(cesium之家)cesium根据坐标位置获取地形高度

听老人家说:多看美女会长寿 地图之家总目录(订阅之前建议先查看该博客) 文章末尾处提供保证可运行完整代码包,运行如有问题,可“私信”博主。 效果如下所示: 下面献上完整代码,代码重要位置会做相应解释 <html lang="en"> <head> <meta charset="UTF-8"/> <script src="Build/Cesium/Cesium.js"></script> <link rel="st

GIS之家家长 689

Cesium离线地形加载

目录 前言 一、工具 二、地形数据源 2.1 高程数据获取 2.2 高程数据合并 2.3 地形数据切片 三、 地形服务加载 3.1 发布地形数据 3.2 加载地形数据重新访问我们的广东大鸡腿 ​​​​​​​ 前言 鉴于之前把离线地图给加载出来,但是如果没有地形数据的话,我们的cesium地球看起来还不够完美。为了要搭建出离线地形,我找了一圈的资料,终于总结出了如何搭建离线地形。毕竟碰了壁还是蛮多的,反正终于还是解决了。结果是好的。 电脑环境:win10 用到的工具如下: Glo

zhh763984017的博客 5572

64.(cesium篇)cesium根据坐标位置获取地形高度

听老人家说:多看美女会长寿 地图之家总目录(订阅之前建议先查看该博客) 文章末尾处提供保证可运行完整代码包,运行如有问题,可“私信”博主。 效果如下所示: 下面献上完整代码,代码重要位置会做相应解释 <html lang="en"> <head> <meta charset="UTF-8"/> <script src="Build/Cesium/Cesium.js"></script> <link rel="st

GIS之家家长 1705

cesium-------地形服务

1.createWorldTerrain(创建地形) 2.EllipsoidTerrainProvider(操作地形数据的接口)提供了最简单的,无需额外负担的地形数据来构网 var worldTerrain = Cesium.createWorldTerrain({ requestWaterMask: true, requestVertexNormals: true }); var ellipsoidProvider = new Cesiu

一星程序饲养员 1024

ESP32+MAX7219二进制时钟设计与嵌入式时间映射实践

二进制时钟是嵌入式系统中数据表示与物理呈现深度耦合的典型范例,其核心在于将时间语义(年月日时分秒)解构为比特位,并通过LED点阵的空间权重布局实现直观识别。该设计依托RTC模块提供时间基准,依赖SPI协议完成微控制器与专用驱动芯片(如MAX7219)的可靠通信,涉及寄存器级配置、位图坐标变换、软硬件时序对齐等关键原理。技术价值体现在低资源占用下的高可读性人机交互,适用于教学演示、极客项目及嵌入式UI原型开发。本文聚焦ESP32平台在MicroPython环境下,结合MAX7219驱动8×8点阵实现高可靠性二

weixin_42160645的博客 301

Vue3+Vite+Electron桌面应用开发:从零到打包的完整避坑指南

本文是一份详尽的Vue3+Vite+Electron桌面应用开发实战指南。文章从项目初始化、环境配置、主进程构建、Vite深度优化,到最终的打包配置与优化,系统性地讲解了使用现代前端技术栈开发跨平台桌面应用的完整流程,并重点分享了开发与打包过程中的常见“坑点”与解决方案,旨在帮助开发者高效构建稳定可交付的桌面端应用。

hh234的博客 109

cesium简介

Cesium简介(Cesium的特点、功能、参考资料)

专注GIS开发 5万+

《AI大模型评测与智能测试》

第三篇“实践蓝图”(第6-7章)着眼于测试领域AI应用,重点介绍了RAG、AI Agent开发及构建端到端智能测试系统的方法。本书聚焦AI时代的“质量”核心,以“AI赋能测试”(AI For Testing)与“AI模型评测”(Testing For AI)为双轮驱动。内容不仅深入剖析如何科学度量AI大模型的内在质量,还系统讲解如何利用AI赋能传统软件测试,帮助读者贯通从模型原理、评测到应用开发的全链路知识。

酌沧 1140

cesium 设置时间_Cesium之地形制作与合并

前言我相信使用过Cesium的小伙伴一定不会陌生CesiumLab,将DEM数据导入CesiumLab的地形切片模块工具,设置一下切片参数,喝杯咖啡,等待任务完成,然后发布服务,最后使用API调用服务,大功告成......一开始,我也是如此的成功,不就是将DEM切成Cesium指定的地形格式嘛,CesiumLab是最佳的选择(毕竟是CesiumLab团队深耕的免费工具)。但是,这只是开始,试想一下...

weixin_28683065的博客 697

在macOS上使用GitHub的超详细指南

GitHub:免费的远程仓库,可用来托管自己的开源项目。它利用了Git强大的克隆和分支功能,让我们参与别人的开源项目和让别人参与自己的开源项目变得简单高效。

Mars的博客 3391

Android 车联网——CarAudioService介绍(六)

CarAudioService 是 Android Automotive OS 中的一个重要组件,用于管理车辆中的音频功能。它是 Android Auto 的一部分,负责处理车辆音频的播放、控制和路由。CarAudioService 使用标准的 Android 组件架构,基于 Binder 通信机制,提供了一组 API,用于管理车辆音频。它包括以下主要功能:音频路由管理:CarAudioService 可以让开发者控制音频的路由,即将音频发送到不同的输出设备,例如车辆的扬声器、耳机等。

小旭的专栏 3202

Cesium离线地图与地形部署实战:从数据获取到本地服务发布

本文详细介绍了Cesium离线地图与地形部署的全流程,从数据获取到本地服务发布。通过对比不同地图数据下载工具和地形数据获取渠道,结合CesiumLab切片处理和Nginx服务配置,帮助开发者快速搭建自主可控的离线三维地理信息系统。特别适合网络不稳定或需要数据保密的应用场景。

weixin_30790841的博客 493

Python对象的基本组成和内存示意图及引用的本质

在Python中,变量也称为:对象的引用(reference)。变量存储的就是对象的地址。变量不需要显式声明类型。根据变量引用的对象,Python解释器自动确定数据类型。一个内存块,拥有特定的值,支持特定类型的相关操作。变量位于:栈内存(压栈出栈等细节,后续再介绍)。⚠️Python是动态类型语言。变量通过地址引用了“对象”。

Calor13的博客 557
上一篇: 13 Cesium—影像服务-多影像图层
下一篇: 15 Cesium—地形服务-地形数据采样
WorkLee
博客等级 码龄19年 3174粉丝 216原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WorkLee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值