Cesium-地球材质-坡度

news2025/2/27 8:16:38

 1. 创建viewer

创建viewer并添加地形

const viewer = new Cesium.Viewer("cesiumContainer", {
  terrainProvider: await Cesium.CesiumTerrainProvider.fromIonAssetId(3956, {
    requestVertexNormals: true
  })
});

2. 创建canvas色条

添加getColorRamp方法,创建canvas,按比例添加颜色值

const elevationRamp = [0.0, 0.045, 0.1, 0.15, 0.37, 0.54, 1.0];
const slopeRamp = [0.0, 0.29, 0.5, Math.sqrt(2) / 2, 0.87, 0.91, 1.0];
const aspectRamp = [0.0, 0.2, 0.4, 0.6, 0.8, 0.9, 1.0];
function getColorRamp(selectedShading) {
  const ramp = document.createElement("canvas");
  ramp.width = 100;
  ramp.height = 1;
  const ctx = ramp.getContext("2d");

  let values;
  if (selectedShading === "elevation") {
    values = elevationRamp;
  } else if (selectedShading === "slope") {
    values = slopeRamp;
  } else if (selectedShading === "aspect") {
    values = aspectRamp;
  }

  const grd = ctx.createLinearGradient(0, 0, 100, 0);
  grd.addColorStop(values[0], "#000000"); //black
  grd.addColorStop(values[1], "#2747E0"); //blue
  grd.addColorStop(values[2], "#D33B7D"); //pink
  grd.addColorStop(values[3], "#D33038"); //red
  grd.addColorStop(values[4], "#FF9742"); //orange
  grd.addColorStop(values[5], "#ffd700"); //yellow
  grd.addColorStop(values[6], "#ffffff"); //white

  ctx.fillStyle = grd;
  ctx.fillRect(0, 0, 100, 1);

  return ramp;
}

3. 创建材质

使用Cesium.Material.fromType方法创建材质

const material = Cesium.Material.fromType("SlopeRamp",{
  image:getColorRamp('slope'),
});

把材质附加到地球上

viewer.scene.globe.material = material;

链接地址

https://sandcastle.cesium.com/#c=jVXbkho3EP0VFXkwVBEx9wsLW0nWl3KVnaS8Lr8YP2hnGlBZSFgS4I2Lf3dLGi5LNlR40IxafU5r+nQ3jZLGki2HHWgyJRJ25A4M36zoJ2/rz3qN398paRmXoGe9Ifkxk4RY0Botf2u15S3oMWE7xu0BHh4fn/rQuVart0r+bgzYt20/rfOiYyNEw7cNGPsJtIXvfyq9YsKMidUbcOf7wUzuBzczOZONvzMI2DLLlfzAVmu8+ueIRkOCS5a7R+wX/5qWbs2zIYlp9OXmQGCEWsMFOKm965C8Z3ZJzTdt+8mAjEjizJXnqeMLHmbW0NhLIrdkbik81COPwPlGNu7qZAH2TgmlHbpv8JMaC+39krVcLgYhMSGIDvStajYrkJY2GpiFVwLczonE5JaZWc9liHhvuuOtXSImjqKTcQl8sbTOenMib+x3tPhzfyGJAjjSpA2EzlMAlgkTqJAH8jm5vC+ZTqdk1jvqgtiDtAGIMZ6I5on2aDNwhc/L9BzXUb//xxNkeo7oJGBgCh8cUrPQLXpggrqMv8MWYPqNRmaXeKf10GUYnyH1CKCsbb2q91at+yHM5+jLEC/xS+R/Lq1kNHoQrPl6DRQHUFJm5asTKDTEf2GSgHmZpn+ULzvMmsurcdIjJkqrDqOhvQbJAuT167rMkg6iNJOLq5fLA2o+b8tjFh5BCLW7hioOKPfrULslt9ApherMuRD39lEAqoU0N+f2D6juuVLxoaY12I2WvvDRsj/NlhUqrTkTSNaNs/edxU+wj49rwPa4PxQgjkRfU3zFFjB+0tMvfJW+GAyP0yvMWmoakEAXQj0APQt3eD13bdgKNKM4Mt1M7vtQLU5KLn0rjc+n9h3D6Wk4k2k/VHlSJXFe0qIuoqqqo7oYBntepLhPaFbkeZ2VUdrZk7qsyrSgcVVkZZrHwT7wq9Ku6LugXRctwTfZmGQUqzQpMFCRZlgUZUe45rZZjsmvOBOTqKjrqsqrvC7iOukctBJiTAqaVFGaRXme5VVZ57k/3Ye89Ya9iXHq3gYIIb/x1VppSzZa9CkdWVitBabOjB42zVfA+WhM6EdCJqNz6KTlW8Lb6TP/a6QRzBg8mW+wmPg/OHVuJyP0/xdUKP/Rf21BC/bo3Jbx7btgpJRORrh9HmmVEg9MXzD/BA

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

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

相关文章

OpenAI 12连更第一弹:o1完全体,200刀一个月的ChatGPT Pro

来源 | 机器之心 一天前,OpenAI 官方 X 账户的一条推文将 AI 社区的期待值拉满了。这家世界头部 AI 公司宣布将在未来的 12 天进行 12 场直播,发布一些「大大小小的新东西」。 这是 OpenAI 准备的圣诞礼物。 至于这些「大大小小的新东西」究竟是什么&am…

使用C#基于ADO.NET编写MySQL的程序

MySQL 是一个领先的开源数据库管理系统。它是一个多用户、多线程的数据库管理系统。MySQL 在网络上特别流行。MySQL 数据库可在大多数重要的操作系统平台上使用。它可在 BSD Unix、Linux、Windows 或 Mac OS 上运行。MySQL 有两个版本:MySQL 服务器系统和 MySQL 嵌入…

运动模糊效果

1、运动模糊效果 运动模糊效果,是一种用于 模拟真实世界中快速移动物体产生的模糊现象 的图像处理技术,当一个物体以较高速度移动时,由于人眼或摄像机的曝光时间过长,该物体会在图像中留下模糊的运动轨迹。这种效果游戏、动画、电…

三款电容麦的对比

纸面参数 第一款麦克风 灵敏度: -36 dB 2 dB(0 dB1V/Pa at 1 kHz) 灵敏度较低,需要更高的增益来拾取同样的音量。频率响应: 40 Hz - 18 kHz 响应范围较窄,尤其在高频区域。等效噪音级: ≤18 dB(A计权) 噪…

nacos bootstrap.yml 和 spring.config.import 加载配置的流程区别

相关依赖 springboot:2.7.15 nacos:2.2.3 bootstrap.yml加载方式 加载流程如下图所示 从图中可以看出,: 1.bootstrap.yml 的加载是在 BootstrapApplicationListener.onApplicationEvent 接收到 ApplicationEnvironmentPreparedEventEvent 事件后另起一个 Sprin…

数据结构题库12

第六章 图 一、单项选择题 1.下面关于图的存储结构的叙述中正确的是 (1) 。 (1):A.用邻接矩阵存储图占用空间大小只与图中顶点有关,与边数无关 B.用邻接矩阵存储图占用空间大小只与图中边数有关,而与顶点数…

【adb】iqoo系统精简垃圾内置应用

免责声明 这个得谨慎点,虽然我验证过两部手机和不同版本的系统,但是总会有特殊的存在、 本教程来自于互联网搜集整理, 按照本教程造成的用户设备硬件或数据损失,本人概不承担任何责任,如您不同意此协议,请不…

sharedPreference包的使用总结

文章目录 1 概念介绍2 实现方法3 示例代码我们在上一章回中介绍了"如何自定义评分条"相关的内容,本章回中将介绍如何实现本地存储.闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 Flutter是一套跨平台的UI框架,它不像原生SDK一样提供本地存储功能,因此,我们在…

嵌入式蓝桥杯学习4 lcd移植

cubemx配置 复制前面配置过的文件 打开cubemx,将PB8,PB9配置为GPIO-Output。 点击GENERATE CODE. 文件移植 1.打开比赛提供的文件包,点击Inc文件夹 2.点击Inc文件夹。复制fonts.h和lcd.h,粘贴到我们自己的工程文件夹的bsp中&#xff08…

基于Matlab扩展卡尔曼滤波的GPS与DME组合无人机导航系统设计与实现

随着无人机(UAV)在农业监测、环境保护、物流运输、灾害救援等各个领域的广泛应用,精准且可靠的导航系统已成为提升无人机性能和任务执行能力的关键因素。传统的导航方法依赖于单一传感器,往往难以在复杂和动态的环境中提供足够的定…

仿真键盘输入遇到Edge环境不识别 回车符如何处理

这个问题我也是最近才遇到,可能现在大家都喜欢用新架构,基于网页来写应用管理软件。 当遇到Edge环境下,文本框不识别回车符如何处理,根据笔者经验可通过配置Edge 基于键盘管理设置来解决这个事情。如图 即在Edge浏览器环境下&…

黑马redis

Redis的多IO线程只是用来处理网络请求的,对于读写操作命令Redis仍然使用单线程来处理 Redisson分布式锁实现15问 文章目录 主线程和IO线程是如何协作的Unix网络编程中的五种IO模型Linux世界一切皆文件生产上限制keys *、flushdb、flushall等危险命令keys * 遍历查询100W数据花…

JDK 并发编程工具类详解:CountDownLatch、Semaphore、Exchanger、CyclicBarrier 和 Phaser

在 Java 并发编程中,JDK 提供了一些强大的工具类来帮助开发者处理线程间的同步和通信问题。这些工具类主要包括 CountDownLatch、Semaphore、Exchanger、CyclicBarrier 和 Phaser,它们都位于 java.util.concurrent 包下,统称为 JUC&#xff0…

实现RAGFlow-0.14.1的输入框多行输入和消息框的多行显示

一、Chat页面输入框的修改 1. macOS配置 我使用MacBook Pro,chip 是 Apple M3 Pro,Memory是18GB,macOS是 Sonoma 14.6.1。 2. 修改chat输入框代码 目前RAGFlow前端的chat功能,输入的内容是单行的,不能主动使用Shift…

电子商务人工智能指南 4/6 - 内容理解

介绍 81% 的零售业高管表示, AI 至少在其组织中发挥了中等至完全的作用。然而,78% 的受访零售业高管表示,很难跟上不断发展的 AI 格局。 近年来,电子商务团队加快了适应新客户偏好和创造卓越数字购物体验的需求。采用 AI 不再是一…

基于STM32F103RCT6的PS2手柄控制舵机转向小车

一、PS2 (1)当接收器上的绿灯常亮时,证明手柄和接收器配对成功,可以正常进行数据通讯。如果手柄和接收器断开了,按手柄上的START键即可恢复配对; (2)当手柄上的MODE指示灯没有点亮的…

电脑投屏到电脑:Windows,macOS及Linux系统可以相互投屏!

本篇其实是电脑远程投屏到另一台电脑的操作介绍。本篇文章的方法可用于Windows,macOS及Linux系统的相互投屏。 为了避免介绍过程中出现“这台电脑”投屏到“那台电脑”的混乱表述,假定当前屏幕投出端是Windows系统电脑,屏幕接收端是Linux系统…

软件测试环境搭建与测试流程

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 1.软件测试环境搭建 思考: 在什么条件下做软件测试?怎么做软件测试? 1.1 搭建测试环境前 确定测试目的 功能测试&#xff…

实战 | C# 中使用YOLOv11实现实例分割 (步骤 + 源码)

导 读 本文主要介绍在C#中使用YOLOv11实现实例分割,并给详细步骤和源码。 C# YOLO11实例分割——本文实现效果:

C#窗体程序学生管理

代码如下: public static string constr "Data SourceFUSHUAI;Initial Catalogproduct;Integrated SecurityTrue"; public static SqlConnection con new SqlConnection(constr); private void Form1_Load(object sender, EventArgs e) { gettable…