Cesium 问题:二三维切换矩形区域展示不够完整

2023-09-22 13:33:56

文章目录

问题

设置影响图层覆盖范围时,出现三维和二维切换后展示不够完整的情况,
Cesium.Rectangle.fromDegrees(-180, -90, 180, 90)创建的矩形区域,按理说是已经设置了全覆盖,但切换二维后并不全覆盖
例如

  • 三维下
    在这里插入图片描述
  • 切换到二维
    在这里插入图片描述

分析

  • Cesium.Rectangle.fromDegrees(-180, -90, 180, 90)会创建一个经纬网的矩形区域,表示覆盖了全球范围的矩形区域。然而,在二维显示中,由于地球是一个三维的球体,所以无法将整个矩形区域在一个平面上完整展示出来。

  • 在二维地图或屏幕上,经纬网通常以平面投影的方式呈现,像是将地球表面展开在一个平面上。这种投影方式会导致较远离地球赤道的地区在视觉上被拉长或压缩,从而使得经纬网的矩形区域在二维显示中可能看起来不够完整。

  • 这是由于地球的曲率和二维投影之间的差异所导致的。为了更准确地表示地球的表面,通常需要使用三维地球模型或球面投影来展示地球的形状和地理区域。如果你需要更完整地显示经纬网的矩形区域,可以考虑使用三维地球视图或者其他具有球形投影的工具来实现。比如如下:

// 创建Cesium Viewer
var viewer = new Cesium.Viewer('cesiumContainer');

// 创建PolylineCollection来存储网格线
var gridLines = new Cesium.PolylineCollection();

// 设置网格线的样式
var gridMaterial = Cesium.Material.fromType(Cesium.Material.ColorType);
gridMaterial.uniforms.color = new Cesium.Color(1.0, 0.0, 0.0, 0.5);

// 绘制经线
for (var i = -180; i <= 180; i += 15) {
    var positions = [];

    for (var j = -90; j <= 90; j += 1) {
        positions.push(Cesium.Cartesian3.fromDegrees(i, j));
    }

    var gridLine = gridLines.add({
        positions: positions,
        width: 1,
        material: gridMaterial
    });
}

// 绘制纬线
for (var k = -90; k <= 90; k += 15) {
    var positions = [];

    for (var l = -180; l <= 180; l += 1) {
        positions.push(Cesium.Cartesian3.fromDegrees(l, k));
    }

    var gridLine = gridLines.add({
        positions: positions,
        width: 1,
        material: gridMaterial
    });
}

// 将网格线添加到场景中
viewer.scene.primitives.add(gridLines);

移除

viewer.entities.remove(this.gridRectangle)

但使用该方法时发现viewer.scene.primitives如下,是无法进行移除的,因此使用数组的 pop() 方法即可:

viewer.scene.primitives._primitives.pop()

在这里插入图片描述

更多推荐

GE IS220PAICH2A 336A4940CSP11 控制脉冲模块

GEIS220PAICH2A336A4940CSP11控制脉冲模块是一种用于工业自动化和控制系统的模块,通常用于监测和生成脉冲信号,以控制各种设备和过程。以下是可能与该控制脉冲模块相关的一些产品功能:脉冲生成:GEIS220PAICH2A336A4940CSP11控制脉冲模块通常具有脉冲生成功能,可以生成具有特定频率、

基于STM32的简化版智能手表

一、前言本文的OLED多级菜单UI为一个综合性的STM32小项目,使用多传感器与OLED显示屏实现智能终端的效果。项目中的多级菜单UI使用了较为常见的结构体索引法去实现功能与功能之间的来回切换,搭配DHT11,RTC,LED,KEY等器件实现高度智能化一体化操作。后期自己打板设计结构,可以衍生为智能手表等小玩意。目前,

java学习--day10 (继承)

文章目录day9作业今天的内容1.继承1.1.生活中的继承1.2.Java中继承1.3关于父类子类的内存分析1.4重写【重点】1.5重载【overload】day9作业1.构造代码块和构造方法的区别{代码块}public类名(){}都是实例化一个对象的时候执行的只不过构造代码块先于构造方法执行的2.局部变量和成员变量区

软件测试/测试开发丨ChatGPT在测试计划中的应用策略

点此获取更多相关资料简介测试计划是指描述了要进行的测试活动的范围、方法、资源和进度的文档。它主要包括测试项、被测特性、测试任务和风险控制等。所以在使用ChatGPT输出结果之前,我们需要先将文档的内容框架梳理好,以及将内容范围划定好,必要的时候,可以添加对应的角色。实践演练提示词:如果我是一个测试经理,现在需要输出一个

软件测试/测试开发丨利用人工智能ChatGPT自动生成架构图

点此获取更多相关资料简介架构图通过图形化的表达方式,用于呈现系统、软件的结构、组件、关系和交互方式。一个明确的架构图可以更好地辅助业务分析、技术架构分析的工作。架构图的设计是一个有难度的任务,设计者必须要对业务、相关技术栈都非常清晰才能设计出来符合需求的架构图。实践演练1.有明确的业务的需求:业务需求必须要清晰不能模棱

ArcGIS 10.3软件安装包下载及安装教程!

【软件名称】:ArcGIS10.3【安装环境】:Windows【下载链接】:链接:https://pan.baidu.com/s/1K5ab7IHMYa23HpmuPkFa1A提取码:oxbb复制这段内容后打开百度网盘手机App,操作更方便哦软件解压码点击原文获取:ArcGIS10.3软件安装包下载及安装教程软件介绍:

网络初识

一IP地址概念:IP地址主要用于表示网络主机、其他网络设备(如路由器)的网络地址。简单说,IP地址用于定位主机的网络地址格式IP地址是一个32为的二进制数,通常被分割为4个“8位二进制数“(也就是4个字节),通常用”点分十进制“的方式来表示,即a.b.c.d的形式(a,b,c,d都是0~255之间的十进制整数)。如:1

mysql 备份和还原 mysqldump

因window系统为例在mysql安装目录中的bin目录下cmd备份备份一个数据库mysqldump-uroot-hhostname-p数据库名>备份的文件名.sql备份部分表mysqldump-uroot-hhostname-p数据库名[表[表2…]]>备份的文件名.sql##多个表空格隔开,中间没有逗号备份单表的部

数据工程中的单元测试完全指南

在数据工程领域中,经常被忽视的一项实践是单元测试。许多人可能认为单元测试仅仅是一种软件开发方法论,但事实远非如此。随着我们努力构建稳健、无错误的数据流水线和SQL数据模型,单元测试在数据工程中的价值变得越来越清晰。本文带你深入探索如何将这些成熟的软件工程实践应用到数据工程中。1单元测试的重要性在数据工程的背景下,采用单

【Android取证篇】华为设备跳出“允许USB调试“界面方法的不同方法

【Android取证篇】华为设备跳出"允许USB调试"界面方法的不同方法华为设备在鸿蒙OS3系统之后,部分设备启用"允许USB调试"方式会有所变化,再次做个记录—【蘇小沐】1.实验环境系统版本Windows11专业工作站版22H2(22621.2134);HarmonyOS3;(一)【Android取证篇】华为设备无法

dockerfile文件详解(常用命令)

在编写Dockerfile时,考虑以下最佳实践:最小化镜像大小:尽量使用轻量级的基础镜像,并在构建过程中尽量减少不必要的层。合理使用缓存:Docker会尝试重用缓存的层,如果一个步骤发生变化,后续步骤将失去缓存。因此,将频繁变化的步骤放在最后,以便充分利用缓存。清理不必要的文件:在构建镜像时,删除不必要的文件和缓存以减

热文推荐