Cesium 矢量建筑3DTileset增加建筑属性展示

通过第三方软件下载三维建筑shp文件,确保文件中有需要展示的属性数据。

如果没有,安装arcgis,增删改属性。

1,将shp文件拖到arcgis中

2,右键点击菜单,选择‘打开属性表’,查看shp文件所带属性。

3,此处可以添加字段,右键列header可以关闭字段。

4,上一页中,编辑器-开始编辑,打开编辑功能,即可以在‘3’步中,修改属性值。

5,编辑完成后,编辑器-停止编辑,停止编辑,保存数据。shp文件即为最新文件,即可进行后续操作。

 

### Cesium3D Tiles 的数据格式详解 #### 数据格式概述 Cesium 提供了一种名为 **3D Tiles** 的开放空间数据标准,专门用于海量三维数据的流式传输[^1]。这种格式支持多层次细节(LOD, Level of Detail)技术,能够显著减少浏览器和 GPU 的负载[^2]。 3D Tiles 将复杂的空间数据划分为多个瓦片(Tile),并按照树状结构组织这些瓦片。每个瓦片可以表示不同的几何对象或场景部分,从而实现高效的加载和渲染。以下是常见的几种 3D Tiles 数据类型: --- #### 常见的数据类型及特点 1. **Batched 3D Model (b3dm)** b3dm 是一种批量化的 3D 模型格式,主要用于建筑物或其他静态模型的表达。它的核心是以批处理的方式存储多个相似的对象,利用 glTF 格式来描述模型的几何和材质信息[^3]。 2. **Instanced 3D Model (i3dm)** i3dm 表示实例化的 3D 模型,适用于大量重复使用的对象(如树木、路灯)。相比 b3dm,i3dm 更节省内存,因为它只存储一份基础模型,并通过变换矩阵动态生成其他实例[^3]。 3. **Point Cloud (pnts)** pnts 专为点云数据设计,广泛应用于激光扫描等领域。由于其特殊性,pnts 不依赖于 glTF 格式,而是直接嵌入点的位置、颜色和其他属性信息[^3]。 4. **Vector Data (vctr)** vctr 主要用来表现矢量数据,例如道路网络或行政区划边界。这类数据通常具有较高的精度需求,因此需要特殊的压缩算法以优化存储和传输效率[^1]。 5. **Composite Tile (cmpt)** cmpt 是复合瓦片格式,允许在一个瓦片中组合多种类型的子瓦片(如 b3dm 和 pnts)。这使得复杂的混合场景成为可能[^1]。 --- #### 使用方法说明 ##### 加载 3D Tiles 数据 在 Cesium 中可以通过 `Cesium3DTileset` 类轻松加载 3D Tiles 数据集。以下是一个简单的代码示例: ```javascript var tileset = viewer.scene.primitives.add(new Cesium.Cesium3DTileset({ url : 'path/to/your/tiles.json' })); viewer.zoomTo(tileset); ``` 上述代码片段展示了如何指定一个指向 `.json` 文件的 URL 来初始化 3D Tiles 集合,并自动缩放到视图范围。 ##### 控制 Maximum Screen Space Error (MSE) 为了进一步提升性能,开发者可通过调整最大屏幕误差(Maximum Screen Space Error, MSE)滑动条来管理 LOD 层次切换行为。较低的 MSE 值会优先考虑画质而非速度;反之,则更注重流畅度[^4]。 ##### 添加交互功能 借助 Cesium 的事件监听机制,还可以增强用户体验。比如检测鼠标悬停或单击操作时触发特定逻辑: ```javascript // 设置左键点击回调函数 viewer.screenSpaceEventHandler.setInputAction(function(click) { var pickedFeature = viewer.scene.pick(click.position); if (Cesium.defined(pickedFeature)) { console.log('Selected feature:', pickedFeature.id); } }, Cesium.ScreenSpaceEventType.LEFT_CLICK); // 监听鼠标移动事件 viewer.screenSpaceEventHandler.setInputAction(function(movement) { var ellipsoid = viewer.scene.globe.ellipsoid; var cartesian = viewer.camera.pickEllipsoid(movement.endPosition, ellipsoid); if (cartesian) { var cartographic = ellipsoid.cartesianToCartographic(cartesian); console.log(Cesium.Math.toDegrees(cartographic.longitude), Cesium.Math.toDegrees(cartographic.latitude)); } }, Cesium.ScreenSpaceEventType.MOUSE_MOVE); ``` 此段脚本实现了拾取选中的要素以及实时跟踪鼠标的地理位置坐标变化[^5]。 --- #### 总结 综上所述,Cesium3D Tiles 技术不仅提供了一个灵活且高效的框架去呈现大规模三维地理信息,还赋予了开发人员足够的自由度来自定义应用的行为模式。无论是建筑群还是自然景观,都可以被精确地再现出来。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值