cesium加载倾斜影像数据(模拟雨、雪、雾、无人机飞行、测距、箭头标绘、电子围栏等)

实现效果如下:

功能菜单如下:

加载倾斜影像核心代码:

      var palaceTileset = new Cesium.Cesium3DTileset({url: 'http://127.0.0.1:9002/tileset.json',//控制切片视角显示的数量,可调整性能maximumScreenSpaceError: 0.1,maximumNumberOfLoadedTiles: 10000,})//添加到场景viewer.scene.primitives.add(palaceTileset);//控制模型的位置palaceTileset.readyPromise.then(function (palaceTileset) {viewer.scene.primitives.add(palaceTileset);var terrainProvider = new Cesium.EllipsoidTerrainProvider();viewer.terrainProvider = terrainProvider;var heightOffset = -370; //改变3Dtiles的高度var boundingSphere = palaceTileset.boundingSphere;var cartographic = Cesium.Cartographic.fromCartesian(boundingSphere.center);var surface = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, 0.0);var offset = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, heightOffset);var translation = Cesium.Cartesian3.subtract(offset, surface, new Cesium.Cartesian3());palaceTileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation);viewer.zoomTo(palaceTileset, new Cesium.HeadingPitchRange(0.5, -0.2, palaceTileset.boundingSphere.radius *1.0));});

无人机特定方向飞行(按钮实现):

function jxuTime() {// 创建 SampledPositionProperty 对象var positionProperty = new Cesium.SampledPositionProperty();// 添加一系列位置和时间样本positionProperty.addSample(Cesium.JulianDate.now(), Cesium.Cartesian3.fromDegrees(108.927007, 34.256505, 50));positionProperty.addSample(Cesium.JulianDate.addSeconds(Cesium.JulianDate.now(), 5, new Cesium.JulianDate()), Cesium.Cartesian3.fromDegrees(108.929620, 34.252350, 50));// 创建实体并设置模型var entity = viewer.entities.add({name: 'plane',position: positionProperty,model: {uri: ".//Apps//SampleData//image2d//air.glb",scale: 2,minimumPixelSize: 128,maximumScale: 2000,runAnimations: true,clampAnimations: true,show: true}});
}

电子围栏:

//绘制电子围栏
function GetRoute4() {function PolylineTrailLinkMaterialProperty(color, duration) {this._definitionChanged = new Cesium.Event();this._color = undefined;this._colorSubscription = undefined;this.color = color;this.duration = duration;this._time = (new Date()).getTime();}Object.defineProperties(PolylineTrailLinkMaterialProperty.prototype, {isConstant: {get: function () {return false;}},definitionChanged: {get: function () {return this._definitionChanged;}},color: Cesium.createPropertyDescriptor('color')});PolylineTrailLinkMaterialProperty.prototype.getType = function (time) {return 'PolylineTrailLink';}PolylineTrailLinkMaterialProperty.prototype.getValue = function (time, result) {if (!Cesium.defined(result)) {result = {};}result.color = Cesium.Property.getValueOrClonedDefault(this._color, time, Cesium.Color.WHITE, result.color);result.image = Cesium.Material.PolylineTrailLinkImage;result.time = (((new Date()).getTime() - this._time) % this.duration) / this.duration;return result;}PolylineTrailLinkMaterialProperty.prototype.equals = function (other) {return this === other || (other instanceof PolylineTrailLinkMaterialProperty && Property.equals(this._color, other._color))};Cesium.PolylineTrailLinkMaterialProperty = PolylineTrailLinkMaterialProperty;Cesium.Material.PolylineTrailLinkType = 'PolylineTrailLink';Cesium.Material.PolylineTrailLinkImage = "../Cesium-1.75/img/colors1.png";//图片Cesium.Material.PolylineTrailLinkSource = "czm_material czm_getMaterial(czm_materialInput materialInput)\n\{\n\czm_material material = czm_getDefaultMaterial(materialInput);\n\vec2 st = materialInput.st;\n\vec4 colorImage = texture2D(image, vec2(fract(st.s - time), st.t));\n\material.alpha = colorImage.a * color.a;\n\material.diffuse = (colorImage.rgb+color.rgb)/2.0;\n\return material;\n\}"/*"czm_material czm_getMaterial(czm_materialInput materialInput)\n\{\n\czm_material material = czm_getDefaultMaterial(materialInput);\n\vec2 st = materialInput.st;\n\vec4 colorImage = texture2D(image, vec2(fract(st.t - time), st.t));\n\material.alpha = colorImage.a * color.a;\n\material.diffuse = (colorImage.rgb+color.rgb)/2.0;\n\return material;\n\}" //从下向上*/// 着色器从上到下/* "czm_material czm_getMaterial(czm_materialInput materialInput)\n\{\n\czm_material material = czm_getDefaultMaterial(materialInput);\n\vec2 st = materialInput.st;\n\vec4 colorImage = texture2D(image, vec2(fract(-(st.t + time)), st.t));\n\material.alpha = colorImage.a * color.a;\n\material.diffuse = (colorImage.rgb+color.rgb)/2.0;\n\return material;\n\}"//顺时针"czm_material czm_getMaterial(czm_materialInput materialInput)\n\{\n\czm_material material = czm_getDefaultMaterial(materialInput);\n\vec2 st = materialInput.st;\n\vec4 colorImage = texture2D(image, vec2(fract(-(st.s + time)), st.t));\n\material.alpha = colorImage.a * color.a;\n\material.diffuse = (colorImage.rgb+color.rgb)/2.0;\n\return material;\n\}";//逆时针"czm_material czm_getMaterial(czm_materialInput materialInput)\n\{\n\czm_material material = czm_getDefaultMaterial(materialInput);\n\vec2 st = materialInput.st;\n\vec4 colorImage = texture2D(image, vec2(fract(st.s - time), st.t));\n\material.alpha = colorImage.a * color.a;\n\material.diffuse = (colorImage.rgb+color.rgb)/2.0;\n\return material;\n\}"*/Cesium.Material._materialCache.addMaterial(Cesium.Material.PolylineTrailLinkType, {fabric: {type: Cesium.Material.PolylineTrailLinkType,uniforms: {color: new Cesium.Color(1.0, 0.0, 0.0, 0.9),image: Cesium.Material.PolylineTrailLinkImage,time: 2},source: Cesium.Material.PolylineTrailLinkSource},translucent: function (material) {return true;}})three = viewer.entities.add({name: 'yscNoNeedEntity',wall: {positions: Cesium.Cartesian3.fromDegreesArrayHeights([108.92536, 34.25199, 130.0,//左下108.92990, 34.25200, 130.0,//右下108.92973, 34.25477, 130.0,//右上108.92510, 34.25476, 130.0,//左上108.92536, 34.25199, 130.0,//左下]),material: new Cesium.PolylineTrailLinkMaterialProperty(Cesium.Color.BLUE, 3000),}})viewer.flyTo(three)
}

下次再续写吧,忙了!

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

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

相关文章

问题:如何避免子组件传入相同对象时更新

场景 我有一个父组件,里面包含一个子组件,子组件传入了一个对象,假设对象是字面量。当我的父组件更新时,子组件也会更新。导致不必要的渲染。 一些尝试 1.通过使用React.memo包裹子组件,作用是父组件更新&#xff0…

python/pygame 挑战魂斗罗 笔记(三)

感觉最难的部分已经解决了,下面开始发射子弹。 一、建立ContraBullet.py文件,Bullit类: 1、设定子弹速度 Config.py中设定子弹移动速度为常量Constant.BULLET_SPEED 8。 2、载入子弹图片: 图片也是6张,子弹发出后…

【MySQL面试题pro版-8】

MySQL是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的RDBMS (Relational Database Management System,关系数据…

Swagger3 使用示例

Swagger3 使用示例 GET 请求,传递 query-string 参数 Operation(summary "GET 请求", description "GET 请求传递 query-string 参数", tags {"用户管理"}) GetMapping(value "/get-query-string", produces "…

2236: 【数学】 回文质数

题目描述 因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的)&#xff0c;所以 151 是回文质数。 写一个程序来找出范围[a,b](5 < a < b < 10,000,000)间的所有回文质数; 输入 二个整数 a 和 b . 输出 输出一个回文质数的列表&#xff0c;一行一…

成为程序员后你都明白了什么?

成为程序员后你都明白了什么&#xff1f; 自成为一名程序员以来&#xff0c;我的职业生涯就如同一段充满挑战与收获的旅程。在这段长达七年的时光里&#xff0c;我从一名初出茅庐的新手&#xff0c;历经多次角色转换&#xff0c;直至现在成为一家创业公司的技术负责人&#xf…

OceanBase数据库日常运维快速上手

这里为大家汇总了从租户创建、连接数据库&#xff0c;到数据库的备份、归档、资源配置调整等&#xff0c;在OceanBase数据库日常运维中的操作指南。 创建租户 方法一&#xff1a;通过OCP 创建 确认可分配资源 想要了解具体可分配的内存量&#xff0c;可以通过【资源管理】功…

Unity 对APK签名

关键代码 PS D:\UnityProject\YueJie> jarsigner -verbose -keystore D:\UnityProject\YueJie\user.keystore -signedjar D:\UnityProject\YueJie\meizuemptyapk-release-signed.apk D:\UnityProject\YueJie\MeizuEmpty-release-unsigned.apk 1 示例 # jarsigner的命令格…

【C++从练气到飞升】08---模板

&#x1f388;个人主页&#xff1a;库库的里昂 ✨收录专栏&#xff1a;C从练气到飞升 &#x1f389;鸟欲高飞先振翅&#xff0c;人求上进先读书。 目录 一、泛型编程 什么是泛型编程: 二、函数模板 1. 函数模板概念 2. 函数模板格式 3. 函数模板的原理 4. 函数模板的实例…

JAVA学习-并发.线程状态

一、Java中的线程状态可以分为以下五类&#xff1a; 1. 新建&#xff08;New&#xff09;状态&#xff1a; 当我们创建一个Thread对象时&#xff0c;它的状态是新建状态&#xff0c;表示该线程对象已被创建但还没有启动执行。 2. 运行&#xff08;Runnable&#xff09;状态&…

❤ vue 使用原生组件

❤ vue 使用原生组件 1、input输入框 ① 想让我们的input输入框类型为时间&#xff0c;只需要为我们的输入框简单的加一个类型的type即可 <input type"date" id"birthday" name"birthday" placeholder"年/月/日"> 我们还可以…

Ubuntu 传输文件

scp [选项] 源文件 目标路径 以下是一些常用的 scp 命令选项&#xff1a; -r&#xff1a;递归复制目录和子目录。 -P&#xff1a;指定远程 SSH 服务器的端口号。 -i&#xff1a;指定用于身份验证的私钥文件。 -p&#xff1a;保留源文件的时间戳、权限和所有者。 -v&#x…

element-ui合计逻辑踩坑

element-ui合计逻辑踩坑 1.快速实现一个合计 ​ Element UI所提供的el-table中提供了方便快捷的合计逻辑实现&#xff1a; ​ https://element.eleme.cn/#/zh-CN/component/table ​ 此实现方法在官方文档中介绍详细&#xff0c;此处不多赘述。 ​ 这里需要注意&#xff0c…