当前位置: 首页 > news >正文

三维GIS开发cesium智慧地铁教程(6)添加模型

一、项目初始化引导

1. 创建基础场景

  1. 在HTML中创建<font style="color:rgb(38, 38, 38);"><div id="cesiumContainer"></font>容器
  2. 引入Cesium库文件(注意路径正确性)
  const viewer = new Cesium.Viewer('cesiumContainer')

2. 安全认证配置

 Cesium.Ion.defaultAccessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIwYzhiZTM4ZC0yN2NiLTQ5MjQtOWRjMS1hOGY2Y2ZhMGQ3MzAiLCJpZCI6MTE1MTg3LCJpYXQiOjE2OTIzNDczMzh9.Ealj0HH4x_WU4fG5dI2XvnBNeNNhq5rXjBFsmDgt-mg'

二、模型加载

1. 空间坐标转换

const position = Cesium.Cartesian3.fromDegrees(114, 30, 300);
  1. 理解WGS84坐标系的组成:
    • 经度114°(武汉大致经度)
    • 纬度30°(武汉大致纬度)
    • 高度300米(模型海拔)
  2. 坐标转换数学原理:

其中N为基准椭球体的曲率半径

2. 模型姿态控制

const orientation = Cesium.Transforms.headingPitchRollQuaternion(position, Cesium.HeadingPitchRoll.fromDegrees(0, 0, 0)
);

3. 实体创建与参数配置

const entity = viewer.entities.add({position,orientation,model: {uri: './Cesium_Air.glb',minimumPixelSize: 20}
});

深度配置指南:

参数作用推荐值注意事项
uri模型路径相对路径需确认文件实际存在
minimumPixelSize最小渲染尺寸20-100px影响性能
maximumScale最大缩放比例2.0防止模型过大
show显示开关true动态控制显示

三、场景控制

1. 镜头飞行控制

viewer.zoomTo(entity);

四、智慧城市

  1. 动态路径规划
// 创建模型移动路径
const path = new Cesium.SampledPositionProperty();
// 添加路径关键点...
entity.position = path;
  1. 数据驱动可视化
// 根据数据动态更新模型
function updateModel(status) {entity.model.color = status === 'alert' ? Cesium.Color.RED : Cesium.Color.GREEN;
}
  1. 交互事件处理
viewer.screenSpaceEventHandler.setInputAction(function(movement) {const picked = viewer.scene.pick(movement.endPosition);if (picked && picked.id === entity) {// 显示信息框...}},Cesium.ScreenSpaceEventType.MOUSE_MOVE
);

完整代码:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="../cesium1.99/Build/Cesium/Cesium.js"></script><link rel="stylesheet" href="../cesium1.99/Build/Cesium/Widgets/widgets.css"><style>* {margin: 0;padding: 0;}#cesiumContainer {width: 100vw;height: 100vh;overflow: hidden;}</style></head><body><div id="cesiumContainer"></div></body><script>Cesium.Ion.defaultAccessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIwYzhiZTM4ZC0yN2NiLTQ5MjQtOWRjMS1hOGY2Y2ZhMGQ3MzAiLCJpZCI6MTE1MTg3LCJpYXQiOjE2OTIzNDczMzh9.Ealj0HH4x_WU4fG5dI2XvnBNeNNhq5rXjBFsmDgt-mg'const viewer = new Cesium.Viewer('cesiumContainer')const position = Cesium.Cartesian3.fromDegrees(114, 30, 300)const orientation = Cesium.Transforms.headingPitchRollQuaternion(position, Cesium.HeadingPitchRoll.fromDegrees(0, 0, 0))const entity = viewer.entities.add({position,orientation,model: {uri: './Cesium_Air.glb',minimumPixelSize: 20  //模型最小像素尺寸}})viewer.zoomTo(entity)</script></html>

http://www.xdnf.cn/news/352711.html

相关文章:

  • 31【干货】Arcgis属性表常用查询表达式实战大全
  • 基于Java和GeoTools的根据矢量BBOx自动生成格网文件实践
  • 基于C++的多线程网络爬虫设计与实现(CURL + 线程池)
  • Java游戏服务器开发流水账(3)游戏数据的缓存简介
  • 第04章—技术突击篇:如何根据求职意向进行快速提升与复盘
  • 数据库索引
  • 使用Java处理多客户端服务器:从传统线程到虚拟线程
  • [250509] x-cmd 发布 v0.5.11 beta:x ping 优化、AI 模型新增支持和语言变量调整
  • kotlin 数据类
  • Electron知识框架
  • 基于SSM + JSP 的个人通讯录管理系统
  • 使用 ANSYS AEDT(单向耦合)进行高功率同轴射频滤波器的热分析
  • 前端取经路——性能优化:唐僧的九道心经
  • 橡胶制品行业质检管理的痛点 质检LIMS如何重构橡胶制品质检价值链
  • STM32外设-串口UART
  • 项目高压生存指南:科学重构身体与认知系统的抗压算法
  • 计算机二级WPS Office第三套电子表格
  • 排序算法-插入排序
  • Linux快速入门
  • 排序算法-归并排序
  • 在线caj转换word
  • 安全核查基线-2.nfslock服务
  • 密码学--AES
  • 解密火星文:LeetCode 269 题详解与 Swift 实现
  • Uskin阵列式三轴力触觉传感器:驱动机器人智能的触觉数据专家
  • 达梦、PostgreSQL数据库讲json解析成临时表(json_table函数的使用)
  • HunyuanCustom, 腾讯混元开源的多模态定制视频生成框架
  • PostgreSQL 的 pg_advisory_lock 函数
  • 输入顶点坐标输出立方体长宽高的神经网络
  • Microsoft Azure DevOps针对Angular项目创建build版本的yaml