Cesium初探-实体

news2024/11/16 6:41:21

在 Cesium 中,"实体"(Entity)是一个核心概念,它代表了可以在场景中渲染的任何东西,从简单的点、线、多边形到复杂的模型和图像。实体可以用来表示地理空间数据,如地标、轨迹、卫星轨道等。

以下是一些关于 Cesium 实体的关键知识点:

  1. 定义:

    • 实体是 Cesium 中用于描述地理空间对象的数据结构。
    • 每个实体都有一组属性,这些属性定义了它的外观、位置和其他特性。
  2. 属性:

    • 实体可以拥有多种属性,包括但不限于:
      • name: 实体的名称。
      • position: 实体的位置,通常使用 Cartesian3 对象表示。
      • orientation: 实体的方向,可以使用 Quaternion 或 EulerAngles 表示。
      • ellipsoid: 如果实体是一个椭球体,则可以定义其大小和形状。
      • polygon: 定义一个多边形。
      • polyline: 定义一条或多条折线。
      • point: 定义一个点。
      • label: 可以添加文本标签。
      • model: 加载并显示 3D 模型。
      • availability: 定义实体何时可见。
      • availabilityClock: 定义可用性的时钟范围。
      • interval: 实体的有效时间间隔。
      • description: 提供有关实体的详细信息,通常显示为弹出框的内容。
      • properties: 用户自定义的属性集合。
  3. 时间动态性:

    • 实体可以随时间变化,例如,位置可以是时间的函数。
    • 这种时间变化可以通过 SampledPositionProperty 或 SampledProperty 类来实现。
  4. 层次结构:

    • 实体可以组织成树状结构,其中父实体可以包含子实体。
    • 这样的层次结构有助于管理复杂场景和实现继承行为。
  5. 事件监听器:

    • 可以为实体添加事件监听器来响应用户交互,例如点击或悬停。
  6. 样式和外观:

    • 实体的各种视觉属性(颜色、透明度等)可以被设置。
    • 样式也可以随时间变化。
  7. 与场景的交互:

    • 实体可以与场景中的其他元素进行交互,比如与其他实体之间的碰撞检测。
  8. 性能优化:

    • 大量实体可能会对性能造成影响,因此需要考虑使用批处理、LOD (Level of Detail) 等技术来提高效率。
  9. API 和文档:

    • Cesium 的官方文档提供了详细的 API 文档和教程,可以帮助开发者更好地理解和使用实体功能。

接下来看实例!

创建实体

点实体

// 添加实体
  // 方法1
  const point1 = new Cesium.Entity({
    id: 'point1',
    position: new Cesium.Cartesian3.fromDegrees(117, 39),
    point: {
      color: Cesium.Color.RED,
      pixelSize: 20
    }
  })
  viewer.entities.add(point1)
  // 推荐写法
  const point2 = viewer.entities.add({
    id: 'point2',
    position: Cesium.Cartesian3.fromDegrees(117, 40, 50),
    point: {
      color: Cesium.Color.RED,
      pixelSize: 20
    }
  })
  // 选择合适视角聚焦实体
  viewer.zoomTo(point2)

线实体

// 添加线段
  const line1 = viewer.entities.add({
    id: 'line1',
    polyline: {
      positions: Cesium.Cartesian3.fromDegreesArray([117,40,117,41]),
      width: 2,
      material: Cesium.Color.BEIGE
    }
  })

标签实体

// 添加label
  const label1 = viewer.entities.add({
    id: 'label1',
    position: Cesium.Cartesian3.fromDegrees(117, 40),
    label: {
      text: '我的股票',
      fillColor: Cesium.Color.GOLD,
      showBackground: true,
      backgroundColor: new Cesium.Color([254, 25, 36]),
      scale: 1,
      // 相对于position的偏移:前者控制左右,正为右移;后者控制上下,正为下移
      pixelOffset: new Cesium.Cartesian2(0, -70)
    }
  })
  viewer.zoomTo(label1)

面实体(平面 or 有厚度滴)

// 添加面(体)
  const ploygon1 = viewer.entities.add({
    id: 'polygon1',
    polygon: {
      hierarchy: {
        positions: Cesium.Cartesian3.fromDegreesArray([117,40,117,41,118,40.5])
      }, 
      material: Cesium.Color.BEIGE,
      height: 20,
      extrudedHeight: 10,
      outline: true,
      outlineColor: Cesium.Color.BLUE
    }
  })

立方体(以给定点为中心,设置长宽高)

// 添加立方体,以点为中心,设置长宽高
  const box1 = viewer.entities.add({
    id: 'box1',
    position: Cesium.Cartesian3.fromDegrees(117, 40),
    box: {
      dimensions: new Cesium.Cartesian3(20,10,50),
      material: Cesium.Color.ALICEBLUE
    }
  })

椭球体(以给定点为球心,设置长短半轴及厚度)

// 添加椭圆
  const ellipse1 = viewer.entities.add({
    id: 'ellipse1',
    position: Cesium.Cartesian3.fromDegrees(117, 40),
    ellipse: {
      semiMajorAxis: 50,
      semiMinorAxis: 30,
      material: Cesium.Color.BISQUE,
      extrudedHeight: 50,
      rotation: Math.PI / 2
    }
  })
  viewer.zoomTo(ellipse1)

删除实体

如果你想从场景中移除实体,可以使用 remove 方法,亦可以使用removeAll方法全部移除。

// 删除实体
const del = ()=>{
  viewer.entities.remove(label1)
}
const delAll = ()=>{
  viewer.entities.removeAll()
}

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

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

相关文章

【数据结构】栈的概念、结构和实现详解

本文来介绍一下数据结构中的栈,以及如何用C语言去实现。 1. 栈的概念及结构 栈:一种特殊的线性表,它只允许在固定的一端进行插入和删除元素的操作。 进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。 栈中元素遵循后进先出…

PXE实现linux系统批量自动安装

实验环境: 1、RHEL7主机 2、主机图形化 3、配置网络可用 4、关闭vmware dhcp功能 一、实验环境准备 1、主机图形化 在安装安装RHEL7系统时,选择图形化安装,如果没有选择,可以在后面通过命令安装,如下&#xff1…

Pinia状态管理库

为了跨组件传递JWT令牌,我们就会利用Pinia状态管理库,它允许跨组件或页面共享状态。 使用Pinia步骤: 安装pinia:cnpm install pinia 在vue应用实例中使用pinia 在src/stores/token.js中定义store 在组件中使用store 1.在main.js文…

sql注入靶场sqli-labs常见sql注入漏洞详解

目录 sqli-labs-less1 1.less1普通解法 1.在url里面填写不同的值,返回的内容也不同,证明,数值是进入数据库进行比对了的(可以被注入) 2.判断最终执行的sql语句的后面还有内容吗,并且能够判断是字符型的拼接…

MySQL增删改查(基础)

1、. 新增(Create) 语法: INSERT [INTO] table_name[(column [, column] ...)] VALUES (value_list) [, (value_list)] ... 例子: -- 创建一张学生表 DROP TABLE IF EXISTS student; CREATE TABLE student (id INT,sn INT com…

电子琴——Arduino

音调有7个音调,分别是哆来咪发索莱西;如果用蜂鸣器来发出这七个音调就要分别设置这七个音调对应频率。 电子琴实现需要物品有,arduino开发板一个,按键7个,蜂鸣器1个,杜邦线若干 重点讲一下按键原理 按键开…

linux运维一天一个shell命令之vim详解

前言: 在日常运维工作中,掌握好 Vim 的使用可以极大地提高工作的效率。Vim 作为一个强大的文本编辑器,广泛应用于各种运维场景 一、定义 Vim 是一个非常强大的文本编辑器,在 Unix/Linux 环境中非常流行。它具有许多高级功能和快…

【神软大数据治理平台-高级动态SQL(接口开发)】

1、背景 业务部门需大数据平台按照所提需求提供企业数据接口,基于神软大数据治理平台-高级动态SQL功能,满足业务需求,如下: (1)业务系统需求: 输入: enterpriseName:…

【抖音卡片】在抖音私信的时候给对方发送抖音卡片链接

效果展示 效果说明 在默认情况下,给对方发送连接的时候是以文本的形式展示的可点击的超链接,但是经过处理之后可以将你发送的连接一样卡片的形式展示。 实现步骤 第一步:打开微信云托管 微信云托管 (qq.com)https://cloud.weixin.qq.com/c…

原装二手MSO5204B泰克DPO5204B混合信号示波器

泰克 MSO5204B混合信号示波器,2 GHz,4 16 通道,10 GS/s Tektronix MSO5204B 具有出色的信号保真度和高级分析和数学功能。 当今数据速率更快、时间裕度更严格,因此设计时需要具有出色信号采集性能和分析功能的示波器。Tektronix…

电源芯片负载调整率测试方法、原理以及自动化测试的优势-纳米软件

在芯片设计研发领域,负载调整率作为稳压电源芯片的关键性能指标,直接关系到芯片的稳定性和可靠性,因此其测试和优化显得尤为重要。以下是对负载调整率测试原理、方法以及使用ATECLOUD-IC芯片测试系统优势的进一步阐述: 负载调整率…

阿里云oss存储之定期删除

存储到OSS中文件基于存储费用的考虑需要将存储指定时间的文件进行删除,如果想实现定期删除,有以下方法可以处理,简单记录一下: 1、oss控制台 配置生命周期策略删除,如附件1截图 2、通过sdk,调用DeleteObject请求删除文件 如client.delete(ossdemo/some-not-exists-object); …

matlab的strel()函数的使用方法(OK)

这个函数 是形态学的结构元素 使用方法如下 SE strel(nhood) SE strel("diamond",r) SE strel("disk",r) SE strel("disk",r,n) SE strel("octagon",r) SE strel("line",len,deg) SE strel("rectangle",…

电脑运行库问题怎么修复?电脑运行库修复工具分享与实操

在我们日常使用电脑的过程中,经常会遇到一些因为运行库缺失或损坏而导致软件无法正常运行的问题。这些问题不仅影响工作效率,还可能导致数据丢失或程序崩溃。那么,电脑运行库怎么修复呢?本文将为您详细介绍如何使用运行库修复工具…

ETL数据集成丨将GreenPlum数据同步至Doris数仓

在当今数据驱动的时代,高效、可靠的数据集成成为企业数字化转型的关键一环。ETLCloud作为一款创新的数据集成平台,通过其强大的零代码配置能力,为企业提供了从数据抽取、转换到加载(ETL)的全链条解决方案,尤…

简单数学题——492、29、507 快速幂——50、372

简单数学题 492. 构造矩形(简单) 作为一位web开发者, 懂得怎样去规划一个页面的尺寸是很重要的。 所以,现给定一个具体的矩形页面面积,你的任务是设计一个长度为 L 和宽度为 W 且满足以下要求的矩形的页面。要求&#…

排序算法2:直接选择排序与快速排序

目录 1.直接选择排序 1.1直接选择排序的优化 2.快速排序 2.1基准值的置位(Hoare版) 2.2挖坑法 2.3lomuto前后指针 前言 前面我们进入了排序算的讲解。今天我们将继续学习几种重要的排序思想,好,咱们三连上车开始今天的内容。…

Modern C++ 智能指针

Why? 原始指针存在缺陷,不符合现代编程语言的需要。 原始指针的缺陷: 指针指向一片内存,使用者无法得知到底是指向了什么,是数组还是对象?使用完指针是否需要销毁?什么时候销毁?如…

B1.2 AArch64 执行状态下的寄存器

B1.2 AArch64 执行状态下的寄存器 在AArch64的执行状态下,在 EL0 上可见的寄存器如下: (1)、R0-R30 31 个通用寄存器,R0 到 R30。每个都可以做为: 一个 64 位的通用寄存器,命名为 X0 到 X30。 一个 32 位的通用寄存器,命名为 W0 到 W30。 (2)、LR X30 通用寄存器用…

文件的读写

一、IO 标准io (输入输出)站在计算机角度来确定输入输出,在linux里面io都是对文件操作。 so 动态库函数(共享库),(公共的,用的很多),在user里面存储。 man手…