Cesium Vue(九)— 模拟飞机飞行

1. CZML

CZML是一种用来描述动态场景的JSON架构的语言,主要用于Cesium在浏览器中的展示。它可以用来描述点、线、布告板、模型以及其他的图元,同时定义他们是怎样随时间变化的。

  • CZML 是基于JSON的。
  • CZML可以准确的描述值随时间变化的属性。
  • CZML通过增量流的方式传送到客户端。

文件结构:

 [{id: "document",name: "box",version: "1.0",},{id: "shape1",name: "Blue box",position: {cartographicDegrees: [-114.0, 40.0, 300000.0],},box: {dimensions: {cartesian: [400000.0, 300000.0, 500000.0],},material: {solidColor: {color: {rgba: [0, 0, 255, 255],},},},},},]

2. 加载czml

  let czmlUrl = "./Assets/box.czml";// 加载czml数据let promiseData = Cesium.CzmlDataSource.load(czmlUrl);promiseData.then((dataSource) => {console.log(dataSource);viewer.dataSources.add(dataSource);viewer.flyTo(dataSource);});

3. 模拟飞机跨洋飞行

需要先导入模拟路径的JSON文件

import planeData from "@/assets/json/plane.json";

请添加图片描述

具体脚本

  const positionProperty = new Cesium.SampledPositionProperty();// 时间间隔 30秒const timeStepInSeconds = 30;// 整个飞行花费的时间const totalSeconds = (planeData.length - 1) * timeStepInSeconds;// 设置起点时间const time = new Date("2023-10-17T18:37:00Z");// cesium,默认使用的是儒略日的时间// 所以需要起点时间转换成儒略日的时间const startJulianDate = Cesium.JulianDate.fromDate(time);// 设置终点时间const stopJulianDate = Cesium.JulianDate.addSeconds(startJulianDate,totalSeconds,new Cesium.JulianDate());// 将查看器的时间调整到起点和结束点的范围viewer.clock.startTime = startJulianDate.clone();viewer.clock.stopTime = stopJulianDate.clone();viewer.clock.currentTime = startJulianDate.clone();viewer.timeline.zoomTo(startJulianDate, stopJulianDate);planeData.forEach((dataPoint, i) => {// 当前点的时间const time = Cesium.JulianDate.addSeconds(startJulianDate,i * timeStepInSeconds,new Cesium.JulianDate());// 设置当前点的位置const position = Cesium.Cartesian3.fromDegrees(dataPoint.longitude,dataPoint.latitude,dataPoint.height);// 添加轨迹采样点positionProperty.addSample(time, position);// 添加点viewer.entities.add({position: position,point: {pixelSize: 10,color: Cesium.Color.RED,outlineColor: Cesium.Color.WHITE,outlineWidth: 2,},});});// 创建飞机const planeEntity = viewer.entities.add({availability: new Cesium.TimeIntervalCollection([new Cesium.TimeInterval({start: startJulianDate,stop: stopJulianDate,}),]),name: "飞机",// 设置飞机的可用position: positionProperty,// VelocityOrientationProperty会自动根据采样点,计算出飞机的速度和方向orientation: new Cesium.VelocityOrientationProperty(positionProperty),model: {uri: "./model/Air.glb",// minimumPixelSize: 128,// maximumScale: 20000,},// 绘制轨迹线path: new Cesium.PathGraphics({width: 5,}),});// 相机追踪运动的问题viewer.trackedEntity = planeEntity;// 设置时间速率viewer.clock.multiplier = 60;

效果展示

请添加图片描述

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

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

相关文章

linux性能分析(四)性能优化导轮

一 别再让Linux性能问题成为你的绊脚石 ① 学习历程 备注: 跟我的学习经历很相像刚工作时遇到的场景跟我现在一样,深深的无力感驱使我继续前行目标: 性能优化成为我的肌肉记忆,写代码的潜意识 ... ② 常见的问题 ③ 性能问题为什么这么难呢 思考&#xff1a…

LinkedList与链表

目录 1、链表 1.1 链表的概念及结构 1.2 链表的实现 2、LinkedList的模拟实现 3、LinkedList的使用 3.1 什么是LinkedList 3.2 LinkedList的使用 3.3 LinkedList的遍历 4、ArrayList和LinkedList的区别 在上一篇文章中,我们介绍了ArrayList与…

【C++进阶(九)】C++多态深度剖析

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:C从入门到精通⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习C   🔝🔝 多态 1. 前言2. 多态的概念以及定义3. 多态的实…

spring6-国际化:i18n | 数据校验:Validation

文章目录 1、国际化:i18n1.1、i18n概述1.2、Java国际化1.3、Spring6国际化1.3.1、MessageSource接口1.3.2、使用Spring6国际化 2、数据校验:Validation2.1、Spring Validation概述2.2、实验一:通过Validator接口实现2.3、实验二:B…

【刷题-牛客】出栈、入栈的顺序匹配 (代码+动态演示)

【刷题-牛客】出栈、入栈的顺序匹配 (代码动态演示) 文章目录 【刷题-牛客】出栈、入栈的顺序匹配 (代码动态演示) 解题思路 动图演示完整代码多组测试 💗题目描述 💗: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个…

【机械臂视觉抓取从理论到实战】

首先声明一下,此项目是参考B站哈萨克斯坦UP的【机械臂视觉抓取从理论到实战】 此内容为他研究生生涯的阶段性成果展示和技术分享,所有数据和代码均开源。所以鹏鹏我特此来复现一下,我采用的硬件与之有所不同,UP主使用UR5,我实验室采用的是UR3,下面列出相关材料 UR3CB3.12…

UnitTest框架的使用

文章目录 一、UnitTest框架是什么?二、UnitTest核心要素三、TestCase四、TestSuite & TestRunner 一、UnitTest框架是什么? UnitTest框架是python自带的一个单元测试框架,主要用它来做单元测试,它有以下特点: 能…

Inbound marketing | LTD入站营销是对Hubspot集客营销的升级

你如何理解Inbound marketing? 你如何理解Inbound marketing。 集客营销抑或是入站营销。 2006年,MIT的在校学生BrianHalligan和DharmeshShah(hubspot的创始人)首次提出Inbound marketing,有别于推广式营销的一种全…

React之render

一、原理 首先&#xff0c;render函数在react中有两种形式&#xff1a; 在类组件中&#xff0c;指的是render方法&#xff1a; class Foo extends React.Component {render() {return <h1> Foo </h1>;} }在函数组件中&#xff0c;指的是函数组件本身&#xff1a…

【Mysql】Mysql中的B+树索引(六)

概述 从上一章节我们了解到InnoDB 的数据页都是由7个部分组成&#xff0c;然后各个数据页之间可以组成一个双向链表 &#xff0c;而每个数据页中的记录会按照主键值从小到大的顺序组成一个单向链表 &#xff0c;每个数据页都会为存储在它里边儿的记录生成一个页目录 &#xff…

如何查看SSL证书是OV还是DV?

网站的安全性与信任度对于用户来说至关重要&#xff0c;它决定着用户是否继续浏览以及是否与您开展业务。SSL证书则是确保网站能够通过HTTPS加密安全传输数据的基础&#xff0c;可确保网站的安全可信。部署了SSL证书的网站打开后&#xff0c;在浏览器地址栏处会有安全锁标志。而…

台灯显色指数多少好?推荐显色指数优秀的护眼台灯

台灯的显色指数是其非常重要的指标&#xff0c;它可以表示灯光照射到物体身上&#xff0c;物体颜色的真实程度&#xff0c;一般用平均显色指数Ra来表示&#xff0c;Ra值越高&#xff0c;灯光显色能力越强。常见的台灯显色指数最低要求一般是在Ra80以上即可&#xff0c;比较好的…