Cesium入门之七:Cesium加载地形数据

news2024/11/26 7:52:00

Cesium加载地形数据

  • 一、什么是地形数据
  • 二、TerrainProvider类
    • 常用属性
    • 常用方法
  • 三、TerrainProvider子类
    • CesiumTerrainProvider类
      • 常用属性
      • 常用方法
    • CustomHeightmapTerrainProvider类
    • ArcGISTiledElevationTerrainProvider类
      • 常用属性
      • 常用方法
    • EllipsoidTerrainProvider类
      • 常用属性
      • 方法
  • 四、使用CesiumTerrainProvider加载地形数据实例

一、什么是地形数据

地形数据是描述地球表面和地形高度的数字模型或图像。在三维可视化应用中,地形数据通常用于创建真实感强的地形表面,以便用户可以更好地了解地球表面的特征和地貌。
在Cesium中,可以使用TerrainProvider类的子类来加载地形数据,通过把某个子类实例化的TerrainProvider赋值给Viewer.terrainProvider来实现地形数据的显示

二、TerrainProvider类

TerrainProvider类是Cesium中用于加载地形数据的基本类。它定义了一组接口,用于请求和获取地形高度数据以及其他地形信息

常用属性

  1. availability : 可用性,表明地形数据是否可用,以及对于特定区域和层次的细节级别(LOD),哪些数据是可用的。可用性可以是常量或动态计算
  2. errorEvent : 事件对象,当加载地形数据出现错误时触发
  3. credit : 当前TerrainProvider的信息
  4. tilingScheme : 瓦片方案,描述了如何将地球表面划分为瓦片并创建坐标系
  5. hasVertexNormals : 指示该TerrainProvider是否提供每个顶点的法向量(垂直于表面)
  6. hasWaterMask : 指示该TerrainProvider是否提供水体区域掩码,即指示哪些区域是水体的二进制图像

常用方法

  1. requestTileGeometry(x, y, level, throttleRequests):请求一个指定层次级别(x, y, level)的瓦片的几何数据
  2. getLevelMaximumGeometricError(level):获取指定层次级别的最大几何误差
  3. getTileDataAvailable(x, y, level):获取瓦片是否可用

三、TerrainProvider子类

Cesium中的TerrainProvider有多个子类,每个子类都支持不同类型的地形数据源和/或渲染技术。Cesium中常见的TerrainProvider子类主要有下面几种:

  1. CesiumTerrainProvider:使用STK World Terrain数据源加载高程数据,支持地形纹理贴图。CesiumTerrainProvider是Cesium默认的地形提供者。
  2. CustomHeightmapTerrainProvider:Cesium中用于自定义高程数据的地形提供器,它允许开发人员使用程序生成或者从其他来源导入高程数据来创建自定义的地形。
  3. GoogleEarthEnterpriseTerrainProvider:加载Google Earth Enterprise服务器上的高程和图像数据。
  4. ArcGISTiledElevationTerrainProvider:使用ArcGIS Server提供的切片瓦片服务作为高程数据的地形。它可以访问由ArcGIS Server发布的预先生成的高程切片,并支持动态获取和缓存切片
  5. VRTheWorldTerrainProvider:加载VR-TheWorld的高程和图像数据。
  6. EllipsoidTerrainProvider:使用椭球体作为地形模型,不提供任何高程数据。

在Cesium中常用的TerrainProvider子类主要是CesiumTerrainProvider类

CesiumTerrainProvider类

CesiumTerrainProvider使用STK World Terrain数据源加载高程数据,支持地形纹理贴图。数据源提供全球30米分辨率的高程数据和地表覆盖材料图层。CesiumTerrainProvider支持动态地形数据获取、卸载和缓存,并可以在运行时更改LOD级别和地形贴图。CesiumTerrainProvider适用于需要高精度和高性能地形渲染的应用程序

常用属性

  1. url:加载地形数据的URL地址。
  2. requestVertexNormals:布尔类型,表示是否请求顶点法线信息
  3. requestWaterMask:一个布尔类型,表示是否请求水面遮罩信息
  4. hasVertexNormals:只读布尔值,表示该地形提供器是否包含顶点法线信息
  5. hasWaterMask:只读布尔值,表示该地形提供器是否包含水面遮罩信息
  6. errorEvent:Event类型,当地形数据请求错误时触发
  7. availability:定义地形数据可用性的TimeIntervalCollection对象

常用方法

  1. requestTileGeometry(x, y, level, request):请求给定坐标和级别的地形几何数据。该方法返回Promise对象,可以在其完成时获得地形几何数据
  2. getLevelMaximumGeometricError(level):获取指定级别的最大地形几何误差
  3. getTileDataAvailable(x, y, level):查询给定坐标和级别的地形数据是否可用

CustomHeightmapTerrainProvider类

CustomHeightmapTerrainProvider继承自HeightmapTerrainProvider类,因此具有HeightmapTerrainProvider的所有功能,如同步和异步请求高程瓦片、获取最大几何误差等。此外,CustomHeightmapTerrainProvider还实现了requestHeightmapTerrain方法。这个方法应该由子类实现,以便返回自定义高程数据。

在自定义高程数据时,需要确定数据的分辨率、范围和格式。可以使用数字高程模型(DEM)文件、图像文件、数据库或其他格式存储高程数据,并将其转换为CustomHeightmapTerrainProvider可以处理的格式。

使用CustomHeightmapTerrainProvider可以实现各种自定义地形效果,例如在虚拟环境中加载真实世界的高程数据、制作类似Minecraft的方块式地形等

CustomHeightmapTerrainProvider类的常用属性和方法与CesiumTerrainProvider相似,这里不再赘述,详细内容请参考官方文档

ArcGISTiledElevationTerrainProvider类

ArcGISTiledElevationTerrainProvider是Cesium中用于加载ArcGIS Server提供的切片瓦片服务作为高程数据的地形提供器。

常用属性

  1. errorEvent:一个事件,当地形数据请求错误时触发
  2. credit:一个Credit对象,描述了数据源和/或版权信息
  3. availability:定义地形数据可用性的TimeIntervalCollection对象

常用方法

  1. requestTileGeometry(x, y, level, request):请求给定坐标和级别的地形几何数据。该方法返回Promise对象,可以在其完成时获得地形几何数据
  2. getLevelMaximumGeometricError(level):获取指定级别的最大地形几何误差
  3. getTileDataAvailable(x, y, level):查询给定坐标和级别的地形数据是否可用

EllipsoidTerrainProvider类

EllipsoidTerrainProvider是Cesium中的一个内置地形提供器,它提供了一个基于椭球体的模型来呈现地球表面的近似几何形状。与其他地形提供器不同的是,EllipsoidTerrainProvider并不依赖于实际的地形数据,而是根据其定义的椭球体模型生成地球表面的高程网格。

EllipsoidTerrainProvider继承自TerrainProvider类,具有TerrainProvider的所有功能,例如异步加载地形数据、请求地形数据等

EllipsoidTerrainProvider适用于需要快速渲染地球表面的应用场景,例如在展示全球范围的卫星图像或者天气数据时,可以通过EllipsoidTerrainProvider快速生成一个近似的地球表面几何模型,并将数据贴合到这个模型上,从而实现快速、流畅的地球表面展示效果。

常用属性

  • tilingScheme:一个TileTilingScheme对象,描述了该地形提供器使用的切片方案。
  • ellipsoid:描述地球近似几何形状的Ellipsoid对象

方法

  • getLevelMaximumGeometricError(level):获取指定级别的最大地形几何误差
  • requestTileGeometry(x, y, level, request):请求给定坐标和级别的地形几何数据。该方法返回Promise对象,可以在其完成时获得地形几何数据

四、使用CesiumTerrainProvider加载地形数据实例

在Cesium中加载地形数据非常简单,只需要创建一个CesiumTerrainProvider对象,配置相关参数,并将其赋值给viewer.terrainProvider 就可以完成加载地形数据

// 加载地形数据
const terrainProvider = new Cesium.CesiumTerrainProvider({
  url:Cesium.IonResource.fromAssetId(3956),
  requestWaterMask:true,//请求水体效果所需要的海岸线数据
  requestVertexNormals:true,//请求地形照明数据
})
viewer.terrainProvider = terrainProvider 

刷新页面,将地球缩放的一定级别,可以看到地形数据已经加载进来了,起伏的山脉还是比较明显的。
在这里插入图片描述
OK,关于Cesium加载地形数据的内容,就介绍到这里了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/525441.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

bash shell脚本常用代码记录

任何编程语言,常用的语法和代码结构其实不多的,如果为了快速的掌握入手一门编程语言,我认为只需要把该语言的常见语法和代码记下来,再结合实际需求去拼接成新的代码。这篇博客主要是记录bash shell的一些用法,便于日后…

机器学习指标: F1分数

动动发财的小手,点个赞吧! F1 score 简介 在本文[1]中,您将了解 F1 分数。 F1 分数是一种机器学习指标,可用于分类模型。尽管分类模型存在许多指标,但通过本文,您将了解 F1 分数的计算方式以及何时使用它有…

腾讯云语音合成

用腾讯云 AI 语音合成打造有声书制作工具 代码开发 第一步:电子书文件解析 第二步:有声语音合成 第三步:完成有声书制作脚本 第四步:脚本可视化 产品体验 腾讯云 AI 语音合成服务已经非常成熟,基于开源工具整合 TTS P…

JAVA135-185

JAVA135-185 多线程多线程成员方法线程优先级eg,卖票(线程的安全问题)需要解决线程同时抢的问题 同步方法LOCK锁等待唤醒机制阻塞队列实现等待唤醒机制多线程的六种状态红包抽奖箱抽奖比较 线程池最大并行数网络编程InetAdress端口号协议练习…

Mutipart

含义: 多部分的、复合 场景: 位置:package org.springframework.boot.autoconfigure.web.servlet; Springboot中autoconfigration包下web包下servlet下DispatcherServletAutoConfiguration中: 有一个默认加载的Bean Bean …

stm32通用外部spi下载算法实现

参考硬汉嵌入式:【实战技能】任何支持SWD接口的单片机都可以方便移植的SPI Flash烧写算法制作_哔哩哔哩_bilibili 该up主提供的stm32H7的模板工程,目前需求是实现基于正点原子探索者stm32f407zet6W25Q128 下载算法实现步骤 使用cubemx建立一个LED工程…

postgresql walsender源码分析

专栏内容:postgresql内核源码分析个人主页:我的主页座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. 目录 前言 介绍 数据结构 WAL对端的状态 walsender进程 WALsender交互流程 在…

【连续介质力学】张量分量的变换定律

张量分量的变换定律 张量的分量是依赖于坐标系的,所以当坐标系发生旋转,张量分量也会发生改变,张量分量与坐标系通过分量变换规律互相关联起来的。 考虑在正交基 ( e ^ 1 , e ^ 2 , e ^ 3 ) (\hat e_1, \hat e_2, \hat e_3) (e^1​,e^2​,…

【51单片机】串口通信使用串口通信控制LED灯

🎊专栏【51单片机】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【51单片机】 🥰大一同学小吉,欢迎并且感谢大家指出我的问题🥰 目录 🍔串口通信 😎代码…

HTTP1.1(四)URI

一 URI的基本格式以及与URL的区别 ① URI直观感受 1)URI是HTTP协议的重要组成部分2)ABNF如何严格定义URI ② URL、URN、URI ③ URI细讲 ④ URI的组成 ⑤ ABNF关于URI定义 blob:http 地址的原理及生成方法 video 标签 src 带有blob:http data…

NetCore发布到Docker-单机

一.git安装 1.下载 https://github.com/git/git/releases/tag/v2.40.1 2.将本地的安装包上传到 linux 服务器上,我这里放在 /opt/git/ 目录下 3.解压压缩包,得到目录 git-2.40.1,位置在 /opt/git/git-2.40.1 tar -zxvf git-2.40.1.tar.gz 4.…

【刷题之路】LeetCode 225. 用队列实现栈

【刷题之路】LeetCode 225. 用队列实现栈 一、题目描述二、解题1、主要思路解析2、先实现栈3、实现各个接口3.1、初始化接口3.2、push接口3.3、pop接口3.4、myStackTop接口3.5、myStackEmpty接口3.6、myStackFree接口 一、题目描述 原题连接: 225. 用队列实现栈 题…

如何选择合适的自动化测试工具? 我教你

目录 前言 选择最佳自动化测试工具的重要性 自动化测试工具的种类 选择自动化测试工具时要考虑的因素 自动化测试工具的选择标准 前言 自动化测试是高质量软件交付领域中最重要的实践之一。在今天的敏捷开发方法中,几乎任一软件开发过程都需要在开发阶段的某个…

测试工具-JIRA

软件测试工具—JIRA使用 1.创建 项目:一般为业务线名称 问题类型:任务、故事、缺陷等 概要:bug的简要描述,一般写出定位地方和目前现状 Sprint:一般为业务线迭代简称 测试阶段:按照各公司的测试流程对应标…

vlc搭建rtsp直播Demo

文章目录 学习链接本地视频文件作为数据源推流步骤拉流步骤 本地摄像头作为数据源拉流步骤 学习链接 ffmpeg 使用VLC亲手搭建RTSP直播点播 本地视频文件作为数据源 推流步骤 点击媒体->流 点击添加,选择视频文件,后点击串流 点击串流后&#xf…

linux异步通知实验

一、异步通知简介 中断是处理器提供的一种异步机制,配置好中断后就可以让处理器去处理其他的事情,当中断发生以后会执行中断服务函数,在中断服务函数中做具体的处理。 Linux 应用程序可以通过阻塞或者非阻塞两种方式来访问驱动设备&#xff0…

04:mysql--DCL

目录 1:介绍 2:语法 3:DCL的使用 4:权限 1:介绍 DCL英文全称是Data ControlLanguage(数据控制语言),用来管理数据库 用户、控制数据库的访问 权限。 2:语法 DCL-管理用户 查询用户 use mysql; select * from user; 创建用户 create user "用户名&quo…

缓存服务器概述

一、概述 主要功能:应用解耦,异步消息,流量削锋等问题 架构设计:实现高性能,高可用,可伸缩和最终一致性架构 常用消息队列:ActiveMQ,RabbitMQ,ZeroMQ,Kafka…

谷歌chrome浏览器升级新版后字体显示不清楚解决方案

谷歌chrome浏览器升级新版后字体显示不清楚解决方案 参考图片: Chrome更新至版本Chrome 109.0.5414.120 字体看不清 浏览器症状与表现 Chrome更新至版本Chrome 109.0.5414.120 字体看不清;会很细,在设置中选择自定义的字体,仍无法…

MySQL数据库笔记-基础篇

文章目录 MySQL概述数据库相关概念小总结 MySQL数据库版本:启动与停止客户端连接关系型数据库数据模型小总结 SQLSQL通用语法SQL分类DDL数据库操作查询创建数据类型数据类型的使用练习 修改删除小总结 DML添加数据修改数据删除数据小总结 DQLDCL MySQL概述 数据库相…