三维引擎cesium学习经验

三维引擎cesium学习经验:

1、初始化viewer对象

在这里插入图片描述

2、对entity的操作:添加,隐藏,修改,去除,居中显示

在这里插入图片描述在这里插入图片描述

3、去除掉entity的双击事件

在这里插入图片描述

4、获取当前视角高度

在这里插入图片描述

5、获取经纬度在屏幕上的位置

在这里插入图片描述

6、获取三维场景屏幕中心点坐标

在这里插入图片描述

7、响应鼠标单击事件,获取屏幕点击坐标

在这里插入图片描述

8、跟踪相机视角的改变

在这里插入图片描述

9、让视角到达一个地点

在这里插入图片描述

10、加载GeoJson文件数据

在这里插入图片描述

 addGeoJson() {let res = await Cesium.GeoJsonDataSource.load("sichuan.json", {stroke: Cesium.Color.WHITE,fill: Cesium.Color.BLUE.withAlpha(0.3), //注意:颜色必须大写,即不能为bluestrokeWidth: 5,});this.viewer.dataSources.add(res);let entities = res.entities.values;let colorHash = {};for (let i = 0; i < entities.length; i++) {let entity = entities[i];let name = entity.name;let color = colorHash[name];if (!color) {color = Cesium.Color.fromRandom({alpha: 1,});colorHash[name] = color;}entity.polygon.material = color;entity.polygon.outline = false;entity.polygon.extrudedHeight = entity.properties.childrenNum * 5000; //高度扩大5000倍,便于观察}},},

11、获取实体位置并转化为经纬度坐标

/*** 获取实体的位置 并转换成string* @param {\} entity 多边形 矩形 点 圆形 多段线* @returns*/getPositionsByEnity(entity) {if (entity) {if (entity.polygon) {return JSON.stringify(this.getLngLatByCartesian3(entity.polygon.hierarchy.getValue().positions));} else if (entity.rectangle) {let rectangle = entity.rectangle.coordinates.getValue();let result = [];Cesium.Rectangle.subsample(rectangle,Cesium.Ellipsoid.WGS84,rectangle.height,result);return JSON.stringify(this.getLngLatByCartesian3(result));} else if (entity.point) {return JSON.stringify(this.getLngLatByCartesian3(entity.position._value));} else if (entity.ellipse) {let res = {center: this.getLngLatByCartesian3(entity.position._value),radius: entity.ellipse.semiMajorAxis.getValue(),};return JSON.stringify(res);} else if (entity.polyline) {return this.getLngLatByCartesian3(entity.polyline.positions.getValue(), 'polyline')}}return undefined;},/*** 笛卡尔坐标转换经纬度坐标* @param {*} car3_ps* @returns*/getLngLatByCartesian3(car3_ps, type) {let result = null;if (car3_ps instanceof Cesium.Cartesian3) {let _cartographic = Cesium.Cartographic.fromCartesian(car3_ps);let _lat = Cesium.Math.toDegrees(_cartographic.latitude);let _lng = Cesium.Math.toDegrees(_cartographic.longitude);let _alt = _cartographic.height;if (type == 'polyline') {result = { longitude: _lng, latitude: _lat, elevation: _alt }} else {result = { lng: _lng, lat: _lat, alt: _alt }}return result;} else if (car3_ps instanceof Array) {let res = [];for (let i = 0; i < car3_ps.length; i++) {let _cartographic = Cesium.Cartographic.fromCartesian(car3_ps[i]);let _lat = Cesium.Math.toDegrees(_cartographic.latitude);let _lng = Cesium.Math.toDegrees(_cartographic.longitude);let _alt = _cartographic.height;if (type == 'polyline') {res.push({ longitude: _lng, latitude: _lat, elevation: _alt })} else {res.push({ lng: _lng, lat: _lat, alt: _alt })}}return res;}},

12、获取entity的事件触发时返回视图坐标

// 获取entities实体
let entitie = viewer.entities.getById('id');
let Cartesian3 = entitie.position._value;// 添加地形后,用scene把Cartesian3重新转换一下
let cartographic= viewer.scene.globe.ellipsoid.cartesianToCartographic(Cartesian3);
cartesian3 = Cesium.Cartesian3.fromDegrees(Cesium.Math.toDegrees(cartographic.longitude),Cesium.Math.toDegrees(cartographic.latitude),Math.round((viewer.scene.globe.getHeight(cartographic)) * 100) / 100
);// 获取视图坐标
let position = Cesium.SceneTransforms.wgs84ToWindowCoordinates(viewer.scene, cartesian3);//获取的pick对象
let pick = viewer.scene.pick(position);

13、动态修改添加的实体entity的透明度

1 添加实体
this.shape = this.viewer.entities.add({name: "Redrectangle",rectangle: {coordinates: Cesium.Rectangle.fromDegrees(-110.0,20.0,-80.0,25.0),material: Cesium.Color.RED.withAlpha(0.5),},
});
2使用滑块组件控制透明度
<el-slider v-model="value" :format-tooltip="formatTooltip" @input="changeSlide"></el-slider>export default {data() {return {value:50,rectangleAlpha:0.5, //矩形透明shape:null,};},methods:{//滑块归一化formatTooltip(val){return val/100;},//滑块改变时触发改变透明度changeSlide(val){this.rectangleAlpha = val/100let color = this.shape.rectangle.material.color.getValue().clone();     this.shape.rectangle.material.color.setValue(color.withAlpha(this.rectangleAlpha));}}
}

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

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

相关文章

虚拟机VMware的安装问题ip错误,虚拟网卡

要么没有虚拟网卡、有网卡远程连不上等 一般出现在win11 家庭版 1、是否IP错误 ip addr 2、 重置虚拟网卡 3、查看是否有虚拟网卡 4、如果以上检查都解决不了问题 如果你之前有vmware 后来卸载了&#xff0c;又重新安装&#xff0c;一般都会有问题 卸载重装vmware: 第一…

图片和媒体资源的优化:提升Web应用性能与用户体验的关键

文章目录 前言一、为什么需要优化图片和媒体资源二、图片优化策略三、媒体资源优化策略四、案例研究&#xff1a;实际效果展示结语 前言 在现代Web开发中&#xff0c;图片和媒体资源&#xff08;如音频、视频&#xff09;的质量和加载速度对用户体验有着直接影响。高质量的媒体…

裸机LED 灯实验

G1、硬件原理分析 2、寄存器说明 a、主要配置寄存器 使能 GPIO1 时钟—CCM_CCGR1 设置 GPIO1_IO03 的复用功能—IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03 配置 GPIO1_IO03—IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03 设置GPIO GPIO1_GDIR 的 bit3 要设置为 1,表示输出 控制GPIO输出电平,…

LSTM长短期记忆网络

LSTM&#xff08;长短期记忆网络&#xff09;数学原理 LSTM&#xff08;Long Short-Term Memory&#xff09;是一种特殊的递归神经网络&#xff08;RNN&#xff09;&#xff0c;解决了标准RNN中存在的梯度消失&#xff08;Vanishing Gradient&#xff09; 和**梯度爆炸&#x…

FastApi教程

FastApi&#xff0c;一个用于构建 API 的现代、快速&#xff08;高性能&#xff09;的web框架。 FastApi是建立在Starlette和Pydantic基础上的&#xff0c;Pydantic是一个基于Python类型提示来定义数据验证、序列化和文档的库。Starlette是一种轻量级的ASGI框架/工具包&#x…

C++进阶-1-单继承、多继承、虚继承

C单继承详解 1. 基础概念 继承是面向对象编程中的一个核心概念&#xff0c;允许一个类&#xff08;子类或派生类&#xff09;继承另一个类&#xff08;父类或基类&#xff09;的属性和方法。单继承意味着一个类只能直接继承一个父类。这种简单的结构在许多情况下是足够的&…

C语言 文件操作——按行读写文件

目录 按行写文件 按行读文件 按行读写文件 按行写文件 int puts ( const char *s ); 将字符串 s 写入标准输出流 stdout &#xff0c;并在其后添加一个换行符 按字符串&#xff08;行&#xff09; 写 文件 int fputs ( const char *s, FILE *fp); 将字符串 s 写入 fp 所…

轻松上手:使用 Vercel 部署 HTML 页面教程

&#x1f600; 在学习前端的过程中&#xff0c;部署项目往往是一个令人头疼的问题。然而&#xff0c;Vercel 为我们提供了一个便捷且免费的解决方案。 Vercel 是一个强大的云平台&#xff0c;专门用于前端项目的部署和托管。它不仅支持多种前端框架和静态网站生成器&#xff0…

【AI系列】Paddle Speech安装指南

文章目录 环境依赖1. 安装Python1.1 下载Python安装包1.2 安装gcc1.3 安装依赖库1.4 编译和安装Python1.5 配置环境变量 2. 安装PaddlePaddle3. 安装PaddleSpeech4. 运行PaddleSpeech5. 解决常见问题5.1 错误&#xff1a;libssl.so.1.1解决方法&#xff1a; 5.2 错误&#xff1…

2-6-1 关于“QNX Neutrino 编程入门”的前言

阅读前言 本文以QNX系统官方的文档英文原版资料“Getting Started with QNX Neutrino: A Guide for Realtime Programmers”为参考&#xff0c;翻译和逐句校对后&#xff0c;对在QNX操作系统下进行应用程序开发及进行资源管理器编写开发等方面&#xff0c;进行了深度整理&…

【中标麒麟服务器操作系统实例分享】java应用DNS解析异常分析及处理

了解更多银河麒麟操作系统全新产品&#xff0c;请点击访问 麒麟软件产品专区&#xff1a;https://product.kylinos.cn 开发者专区&#xff1a;https://developer.kylinos.cn 文档中心&#xff1a;https://documentkylinos.cn 情况描述 中标麒麟服务器操作系统V7运行在 ARM虚…

StarRocks 排查单副本表

文章目录 StarRocks 排查单副本表方式1 查询元数据&#xff0c;检查分区级的副本数方式2 SHOW PARTITIONS命令查看 ReplicationNum修改副本数命令 StarRocks 排查单副本表 方式1 查询元数据&#xff0c;检查分区级的副本数 # 方式一 查询元数据&#xff0c;检查分区级的副本数…

基于Transformer的自编码器模型在故障检测中的应用

在现代工业和制造领域&#xff0c;故障检测是保证设备和生产线安全、高效运行的关键。传统的故障检测方法往往依赖于人工经验或规则&#xff0c;然而&#xff0c;这些方法的准确性和泛化能力有限。随着深度学习技术的迅速发展&#xff0c;越来越多的智能故障检测方法应运而生&a…

《XML》教案 第2章 使第4章 呈现XML文档

《XML》教案 第2章 使第4章 呈现XML文档 主讲人&#xff1a; 回顾上一章: [10分钟] 2 课程知识点讲解&#xff1a; 2 通过级联样式表转换XML文档&#xff1a;[15分钟] 3 通过可扩展样式表语言转换XML文档 &#xff1a;[5分钟] 4 嵌套 for 循环 &#xff1a;[20分钟] 5 本章总结…

HBase、Hive、Redis 和 MongoDB的对比

1. 数据库管理 操作HBaseHiveRedisMongoDB创建数据库N/A (HBase 没有数据库概念)CREATE DATABASE db_name;N/A (Redis 没有数据库命名功能)use db_name; (自动创建)查看数据库N/ASHOW DATABASES;INFO 查看全局信息show dbs;删除数据库N/ADROP DATABASE db_name CASCADE;N/Adb.…

Sigrity System Explorer Snip Via Pattern From Layout模式从其它设计中截取过孔模型和仿真分析操作指导

Sigrity System Explorer Snip Via Pattern From Layout模式从其它设计中截取过孔模型和仿真分析操作指导 Sigrity System Explorer Snip Via Pattern From Layout模式支持从其它设计中截取过孔模型用于仿真分析,同样以差分模板为例 具体操作如下 双击打开System Explorer软件…

数据结构_平衡二叉树

结点类 构造函数分为有参和无参&#xff0c;相同点都是初始化树高为1 class Node { public:int data; // 用于输出int val; // 数据域&#xff0c;用于排序int height; // 树高Node* left;Node* right;Node();Node(int v, int d);static int max(int a, int b); };Node::N…

2024年度个人总结

一转眼已经2024年度最后一个月了&#xff0c;今年基本没有在CSDN发布内容&#xff0c;包括其他平台&#xff08;B站&#xff09;&#xff0c;倒是在其他地方&#xff08;我的个人网站和V2EX&#xff09;发布一些零碎的东西&#xff0c;主要是因为今年换了工作后太累了&#xff…

汽车IVI中控开发入门及进阶(42):OpenVG

概览: OpenVG是一个无版权、跨平台的API,它为高级用户界面和矢量图形库(如SVG)提供了一个低级硬件加速接口。OpenVG主要针对需要便携式加速高质量矢量图形以获得引人注目的用户界面和文本的消费电子产品、手持设备、可穿戴设备和汽车设备,同时使硬件加速能够在非常低的功…

基于微信小程序的消防隐患在线举报系统

博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;熟悉各种主流语言&#xff0c;精通java、python、php、爬虫、web开发&#xff0c;已经做了多年的设计程序开发&#xff0c;开发过上千套设计程序&#xff0c;没有什么华丽的语言&#xff0c;只有实…