【Cesium学习(五)】绘制基础形状

Cesium图形绘制 现有的gis开发方向较流行的是webgis开发,其中Cesium是一款开源的WebGIS库,主要用于实时地球和空间数据的可视化和分析。它提供了丰富的地图显示和数据可视化功能,并能实现三维可视化开发。本文介绍Cesium中的坐标系统及相互转换关系,讲解如何在构造的三维场景中交互绘制点、线、面、体等多种空间对象并对这些空间对象进行管理。 阅读详情

Cesium绘制形状

在Cesium上面绘制实体形状有两种方式:一个是通过Entity的方式来绘制,还有一种是通过CZML的JSON格式数据来绘制,下面就演示这两种方式。

第一种 Entity添加实体

首先来看看官网关于Entity的描述,如下图: 点击前往官网
在这里插入图片描述
可以看到,entity可以创建多种实体(立方体,圆柱体,椭圆,点,线等等),每一个实体创建的属性可以自行点击查看
在这里我演示创建(立方体,圆柱,走廊)

添加实体方法是add 官网

在这里插入图片描述

代码实现

话不多说,我直接上代码

// 初始化
let viewer = new Cesium.Viewer('cesiumContainer', {
    animation: true, //是否显示动画控件
    baseLayerPicker: true, //是否显示图层选择控件
    fullscreenButton: true, //是否显示全屏按钮
    vrButton: true, // vr部件
    geocoder: true, // 位置搜索部件
    homeButton: true, //是否显示Home按钮
    infoBox: false, //是否显示点击要素之后显示的信息
    sceneModePicker: true, // 二三维切换部件
    timeline: true, //是否显示时间线控件
    navigationHelpButton: true, //是否显示帮助信息控件
    //> 设置地图
    imageryProvider: new Cesium.UrlTemplateImageryProvider({ url }),
});
//> 绘制一个圆柱体
const blueCylinder = viewer.entities.add({
    name: 'Blue box',
    position: Cesium.Cartesian3.fromDegrees(-114.0, 40.0, 300000.0),
    cylinder: {
        length: 500000.0,
        topRadius: 200000.0,
        bottomRadius: 100000.0,
        material: Cesium.Color.BLUE, //> 设置材料的颜色
    },
});
//> 绘制立方体
const redBox = viewer.entities.add({
    name: 'Red box with black outline',
    position: Cesium.Cartesian3.fromDegrees(-107.0, 40.0, 300000.0),
    box: {
        dimensions: new Cesium.Cartesian3(400000.0, 300000.0, 500000.0), //>一个 Cartesian3 属性,用于指定框的长度,宽度和高度
        material: Cesium.Color.RED.withAlpha(0.5), //>指定用于填充框的材料。 withAlpha: 透明度
        outline: true, //>一个布尔型属性,指定是否对框进行概述。
        outlineColor: Cesium.Color.BLACK, //>指定轮廓的颜色
    },
});
//> 绘制一个走廊
const blueCorridor = viewer.entities.add({
    name: 'Blue extruded corridor with beveled corners and outline',
    corridor: {
        positions: Cesium.Cartesian3.fromDegreesArray([-95.0, 40.0, -100.0, 40.0, -100.0, 35.0]),
        height: 200000.0,
        extrudedHeight: 100000.0,
        width: 200000.0,
        cornerType: Cesium.CornerType.BEVELED,
        material: Cesium.Color.YELLOW.withAlpha(0.5),
        outline: true,
        outlineColor: Cesium.Color.WHITE,
    },
});
viewer.zoomTo(viewer.entities);

这里的zoomTo就是异步设置摄像机以查看提供的一个或多个实体或数据源。
在这里插入图片描述

运行起来就是如下图:**

第二种 CZML添加实体

首先需要写一个czml格式的数据,CZML是一种JSON格式的字符串,用于描述与实践有关的动画场景。
这里我写一个创建广告牌的czml数据

//> 绘制一个广告牌 (采用CZML格式创建)
const czml = [
    {
        id: 'document',
        name: 'Basic CZML billboard and label',
        version: '1.0',
    },
    {
        id: 'some-unique-id',
        name: 'AGI',
        description: "<p><a href='http://www.agi.com' target='_blank'>Analytical Graphics, Inc.</a> (AGI) founded Cesium.</p>",
        billboard: {
            image: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACvSURBVDhPrZDRDcMgDAU9GqN0lIzijw6SUbJJygUeNQgSqepJTyHG91LVVpwDdfxM3T9TSl1EXZvDwii471fivK73cBFFQNTT/d2KoGpfGOpSIkhUpgUMxq9DFEsWv4IXhlyCnhBFnZcFEEuYqbiUlNwWgMTdrZ3JbQFoEVG53rd8ztG9aPJMnBUQf/VFraBJeWnLS0RfjbKyLJA8FkT5seDYS1Qwyv8t0B/5C2ZmH2/eTGNNBgMmAAAAAElFTkSuQmCC',
            scale: 1.5,
        },
        label: {
            fillColor: {
                rgba: [255, 255, 255, 255],
            },
            font: '12pt Lucida Console',
            horizontalOrigin: 'LEFT',
            pixelOffset: {
                cartesian2: [8, 0],
            },
            style: 'FILL',
            text: 'AGI',
            showBackground: true,
            backgroundColor: {
                rgba: [112, 89, 57, 200],
            },
        },
        position: {
            cartesian: [1216361.4096947117, -4736253.175342511, 4081267.4865667094],
        },
    },
   ];

通过czml的方式要创建实体,就需要用到viewer的dataSources属性,来看看官网介绍
在这里插入图片描述
dataSources里面有add属性,可以添加,介绍如下
在这里插入图片描述
如上图所说,add的参数要是一个dataSources的数据源,Cesium里面的CzmlDataSource有一个load方法,可以将czml数据转换
在这里插入图片描述
所以最后将我们上面创造好的czml数据就可以创建实体了

//> 通过CZML来添加模型
 viewer.dataSources.add(Cesium.CzmlDataSource.load(czml));

运行大功告成

在这里插入图片描述

Cesium高阶学习十二、体积云 阅读详情

相关推荐

Cesium学习(二)shp格式转为json格式并叠加到底图上使用

本次介绍两种shp格式转为json格式的数据:一是使用ArcGIS中的转换工具进行转换;二是使用网上的转换工具。并且使用转换后的json数据叠加到Cesium中的底图上。本次介绍两种shp格式转为json格式的数据:一是使用ArcGIS中的转换工具进行转换;二是使用网上的转换工具。并且使用转换后的json数据叠加到Cesium中的底图上。本次介绍两种shp格式转为json格式的数据:一是使用ArcGIS中的转换工具进行转换;二是使用网上的转换工具。并且使用转换后的json数据叠加到Cesium中的底图上。

baidu_34304646的博客 1万+

Cesium矢量编辑绘图(新)

Cesium矢量绘图

qq_40043761的博客 861

Cesium进阶学习一、Primitive

Cesium进阶学习Primitive

程迷学习的博客 2444

Cesium加载3D Tiles模型

最近遇到一个问题,使用大疆无人机做的倾斜摄影三维模型,需要加载到地图上进行显示。从大疆的制图软件导出后,三维模型文件的后缀名为,经查阅资料发现,是3D Tiles格式。3D Tiles是一种开放的三维空间数据标准,其设计目的主要是为了提升大的三维场景中模型的加载和渲染速度,可以理解为三维场景的瓦片。假如要在Web客户端渲染一个非常大的三维模型(如一个大城市的建筑模型),如果把模型全部下载到客户端并且进行渲染,这个过程所消耗的时间对于使用普通电脑的用户来说是不能接受的。然而,在绝大多数的用户交互式的三维场景中

做GIS梦的人 5441

cesium绘制网格_[CesiumJS]Cesium 空间数据可视化(一)

本教程将教读者如何使用Cesium的实体(Entity)API绘制空间数据,如点、标记、标签、线、模型、形状和物体。不需要Cesium的先验知识,但是如果读者完全没有这方面的经验,那么读者可能希望从“新手入门中文教程(原创)”开始学习。##什么是实体(Entity)API?Cesium具有丰富的用于空间数据的API,可以分为两类:面向图形开发人员的低级API(通常称为原始(Primitive)AP...

weixin_39929918的博客 1239

Cesium:绘图工具v1.0

基于Cesium.js封装的绘图工具,目前支持:点、文本标签、线、面、矩形的绘制与编辑操作。

席木木的博客 992

cesium学习记录08-鼠标绘制实体(点,线,矩形,圆,多边形)

cesium,鼠标绘制多边形

木卯彳亍的博客 7471

Cesium教程(八):绘制几何形体

三维几何形体所涉及的几何要素种类丰富,从类型上划分为点、线、面、体四大类。

WwLK123的博客 1031

Cesium学习笔记——动态水体及修改高度

        在Cesium中,动态水体可以通过primitive来实现。因为水体有反射效果,流动效果,所以我们可以通过修改primitive的材质来模拟。

mingyu_mingyu的博客 1999

逆变器并联--下垂控制引入虚拟阻抗

说明传统下垂控制的缺点、分析虚拟阻抗的原理和实现方法

weixin_58670090的博客 1万+

TMC5160 StallGuard2调参避坑指南:从SG_RESULT飘忽不定到稳定检测堵转

本文详细解析了TMC5160的StallGuard2功能在堵转测试中的调参技巧,从SG_RESULT波动问题到稳定检测的完整解决方案。通过电流环与反电动势分析、电源噪声处理及低速校准法等实用方法,帮助工程师实现工业级可靠的堵转检测,避免误触发和检测失效问题。

weixin_28727975的博客 378

【Cesium学习笔记】三、画点、画线、画多边形

对Cesium画点、画线、画多边形、组合图形

jg10000119的博客 2120

永磁同步电机矢量控制——电流内环前馈解耦策略

在采用永磁同步电机矢量控制时,ud和uq的指令值存在耦合项。需要对其进行解耦,目前,常用的解耦设计方法有前馈解耦、偏差解耦以及内模控制,本文主要分享电流内环前馈解耦控制策略。

a12312341ll的博客 8691

【Cesium学习(八)】Cesium设置材质

今天我们将学习Cesium对entity实体设置材质,在Cesium中为实体及几何行状设置材质有多个方法。我们可以在创建实体的时候直接构件Cesium.Material对象,再通过设置Material的属性来进行各种材质的控制,具有实例和API我们可以看官网的描述。颜色材质是我们最常用到的材质,他可以将实体设置成不同的颜色,以到达实体醒目的作用及其他作用,通常和鼠标移动或者点击事件来联动展示。

HAI_GUI的博客 4291

Python爬虫实战:爬取国家气象局台风路径数据的完整教程

国家气象局(如中国气象局)一般会在官方网站公布台风的实时路径,包括台风编号、名称、时间点、经纬度、中心气压、最大风速等信息。这些数据以图形和表格的形式呈现,有时以JSON或CSV文件形式下载。爬取这类数据,有助于构建台风数据库、历史路径分析、趋势预测等应用。本文详细介绍了如何通过Python爬取国家气象局发布的台风路径数据,涵盖了数据采集、解析、存储和可视化全流程。通过实践,你可以构建自己的台风数据库,结合机器学习开展路径预测和风险评估等高级分析。后续可结合深度学习技术,实现台风轨迹预测;

2201_76125261的博客 1023

传感器校准与标定:传感器的灵敏度校准_(11).常见传感器的灵敏度校准方法

线性校准:适用于传感器输出与输入之间存在线性关系的情况。通过收集数据并使用最小二乘法拟合线性方程,可以确定斜率和截距,从而实现校准。非线性校准:适用于传感器输出与输入之间存在非线性关系的情况。通过收集数据并使用非线性拟合方法(如最小二乘法),可以确定多项式或其他非线性方程的参数,从而实现校准。温度补偿校准:适用于传感器在不同温度下输出特性变化的情况。通过收集不同温度下的数据并使用温度补偿方程,可以提高传感器在不同温度下的测量精度。其他校准方法。

2401_87715305的博客 915

Cesium为军工助力!动态绘制各类交互式态势图

态势图(Situation Map)是一种用于表示空间环境中动态或静态信息的地图,它能够展示事件资源威胁和其他关键因素的地理位置及其变化情况。通过可视化的方式,态势图帮助决策者在复杂环境中迅速获取关键信息,从而做出及时而准确的决策。随着地理信息系统(GIS)的不断发展,态势图在军事应急管理和地理规划等领域中扮演着越来越重要的角色。以上主要介绍了在Cesium中实现态势图的一些关键代码以及解释,更多细节请参考项目源码,如果有帮助也请给一个免费的star。

2398

11.1华为OD机试真题 新系统 - 整理学生编号 (Java/Py/C/C++/Js/Go)

11.1华为OD机试真题 新系统 - 整理学生编号 (Java/Py/C/C++/Js/Go)

算法大师! 322

Cesium学习笔记(五)自定义几何形状和外观

自定义几何形状和外观 有关Primitive API可用的Geometry & Appearance系统的信息,这是使用自定义网格、形状、体积和外观扩展CesiumJS的高级主题,并不适合典型的Cesium用户。 几何概述 Geometry定义了图元的结构,即构成图元的三角形、直线或点。 Appearance定义了图元的着色,包括其完整的GLSL顶点和片段着色器以及渲染状态。 使用Geometry和Appearance的好处是: 性能:当绘制大量静态图元时,直接使用Geometry可以使我们将它们

Lafiteee的博客 3278

基于Solidworks的三维光路结构示意图绘制实例演示-技术细节

基于Solidworks的三维光路结构示意图绘制实例演示-技术细节

简单光学 1万+

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Cesium 入门教程(五):利用Primitive生成图形(暂9个示例)

在Cesium中,`Primitive` 是一种高效渲染大量几何图形的方法。它们被设计用于处理大量的几何数据,并且可以在保持高性能的同时提供对这些数据的细粒度控制。使用 `Primitive` 可以直接操作底层图形API,因此对于性能要求较高的应用来说是非常理想的。

大剑师兰特的GIS世界 1756

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【WebGIS】Cesium:Viewer 初始化、地图加载与基础交互

Cesium 是一个功能强大、基于 WebGL 的开源三维地球引擎,它允许用户在浏览器中渲染高性能的三维地图和地球。本文将带领新手入门 Cesium,学习如何初始化 Cesium Viewer,加载地图和地形,了解地球的基础交互操作,并掌握如何添加标记、线条、几何图形和标签等基本功能。

2303_80346267的博客 1850

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Vue3+Cesium学习教程系列(22)---一种更加实用的椭圆绘制与编辑方法

本文介绍了基于Cesium+Vue3技术栈实现三点法绘制椭圆形的方法,通过三个控制点确定椭圆的长短轴和旋转角度,利用Cesium的Entity.ellipse属性实现绘制功能。文章详细展示了核心代码实现步骤,包括计算椭圆参数、处理旋转角度以及实现编辑功能,最终效果可精准控制椭圆形状和方向。

XTTX110的博客 856

CESIUM例子学习(九)——Primitive(1)

在学习Primitive前,首先感谢GISEarth大神的https://blog.youkuaiyun.com/happyduoduo1/article/details/51868042这篇博文。下面的Cesium支持的几何图形,是直接从他的博文中截图的,再次感谢。 cesium加载数据方式多种多样,一般用entity、dataSources和Primitive。其中entity是最高级的,基本上是统一的使用样式,比较容易上手。之前学习过程中都是用entity,今天学习一下Primitive加载。 在看CESIU

luoyun620的博客 4172

cesium编程入门(五)绘制形状

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34186128的博客 486
上一篇: 【Cesium学习(三)】Viewer界面基础介绍及组件显影
下一篇: 【Cesium学习(六)】Cesium加载3D模型(3D tiles和glTF模型)
龟中的程序员
博客等级 码龄7年 328粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

龟中的程序员

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

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

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

打赏作者

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

抵扣说明:

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

余额充值