cesium 地形开挖
时间: 2023-09-21 09:05:14 浏览: 161
基于Cesium+VUE实现完整的地形开挖功能组件,完整demo和源代码,代码未加密/未压缩,可直接调用运行
5星 · 资源好评率100%
Cesium是一个基于Web的地球浏览器和开发平台,可以用于可视化和分析地理空间数据。在Cesium中进行地形开挖,可以通过添加一个基于地形的形状来模拟挖掘,并将其从地形模型中减去。这可以通过使用地形剖面和Cesium的3D Tiles技术实现。以下是一个基本的地形开挖示例:
```javascript
var viewer = new Cesium.Viewer('cesiumContainer');
// 添加地形
var terrainProvider = new Cesium.CesiumTerrainProvider({
url : 'https://assets.agi.com/stk-terrain/world',
requestVertexNormals : true
});
viewer.terrainProvider = terrainProvider;
// 添加模型
var modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(
Cesium.Cartesian3.fromDegrees(-75.62898254394531, 40.02804946899414, 100)
);
var model = viewer.scene.primitives.add(
Cesium.Model.fromGltf({
url: './models/CesiumMilkTruck.glb',
modelMatrix: modelMatrix,
scale: 200.0
})
);
// 添加挖掘形状
var excavationPolygon = new Cesium.PolygonHierarchy(
Cesium.Cartesian3.fromDegreesArray([
-75.62898254394531, 40.02804946899414,
-75.62909698486328, 40.02804946899414,
-75.62909698486328, 40.028167724609375,
-75.62898254394531, 40.028167724609375
])
);
var excavationPrimitive = new Cesium.Primitive({
geometryInstances: new Cesium.GeometryInstance({
geometry: new Cesium.PolygonGeometry({
polygonHierarchy: excavationPolygon,
height: 0.0,
extrudedHeight: 100.0
})
}),
appearance: new Cesium.PerInstanceColorAppearance({
flat: true,
translucent: false
})
});
viewer.scene.primitives.add(excavationPrimitive);
// 进行挖掘
var tileset = new Cesium.Cesium3DTileset({
url: 'https://assets.cesium.com/3816/tileset.json'
});
viewer.scene.primitives.add(tileset);
var clippingPlane = new Cesium.ClippingPlane(
new Cesium.Cartesian3(0.0, 0.0, -1.0),
0.0
);
tileset.clippingPlanes = new Cesium.ClippingPlaneCollection({
planes: [clippingPlane]
});
```
这个示例在Cesium中添加了一个地形模型、一个模型和一个多边形形状。然后,它使用ClippingPlane对3D Tileset进行剖面,以模拟挖掘。这个示例只是一个基本的示例,你可以根据具体的需求进行修改和扩展。
阅读全文