Cesium专栏-填挖⽅分析(附源码下载)
Cesium 是⼀款⾯向三维地球和地图的,世界级的JavaScript开源产品。它提供了基于JavaScript语⾔的开发包,⽅便⽤户快速搭建⼀款零插件的虚拟地球Web应⽤,并在性能,精度,渲染质量以及多平台,易⽤性上都有⾼质量的保证。
关于填挖⽅分析
从百度百科查找到的关于填⽅和挖⽅的定义如下:
填⽅:填⽅指的是路基表⾯⾼于原地⾯时,从原地⾯填筑⾄路基表⾯部分的⼟⽯体积。
超级翻译挖⽅:指的是路基表⾯低于原地⾯时,从原地⾯⾄路基表⾯挖去部分的⼟⽯体积。
在简书⾥,也找到⼀篇的⽂章,并给出了在ArcGIS软件中的实操。
本⽂着重要介绍的是在Cesium中如何计算填⽅与挖⽅,其中会借鉴⼩专栏⾥的另外⼀篇⽂章中关于地形⾼度采样的内容。
需要注意的是:本⽂使⽤的计算⽅式只是⼀种研究⾏⽅案,⽤于拓展思路,并不是最准确的计算⽅式,请评估后慎⽤!
偏食
具体做法
1.定义地形服务,绘制施⼯区域
// 在使⽤地形服务前,请设置好 Cesium.Ion.defaultAccessToken
var terrainProvider = ateWorldTerrain({
requestWaterMask: true,
requestVertexNormals: true
});
// 定义填挖⽅的基准⾯⾼度
var excavateHeight = 2300; // 开挖⾼度
var buryHeight = 6000; // 填埋⾼度
// 定义施⼯区域
var scope = [
Cesium.Cartesian3.fromDegrees(99, 29),
Cesium.Cartesian3.fromDegrees(100, 29),
Cesium.Cartesian3.fromDegrees(100, 30),
Cesium.Cartesian3.fromDegrees(99, 30)
];
2.剖分施⼯区域,计算每个区域的⾯积与填挖⾼度
核⼼思想:计算开挖/填埋的开挖量/填⽅量的核⼼思想就是剖分微积分
// 设置剖分最⼩单元 0.01°
var subdivisionCell = 0.01; // 剖分精度⾃定义
sponsor
// 存储所有的剖分矩形
var subRectangles = [];
for (var i = 99; i <= 100; i = i + subdivisionCell) {
西安作品集培训for (var j = 29; j <= 30; j = j + subdivisionCell) {
var subRectangle = new Cesium.Rectangle(
Radians(i),
Radians(j),
Radians(i + subdivisionCell),
Radians(j + subdivisionCell)
);
育才教育怎么样subRectangles.push(subRectangle);
}
}
// 计算每个矩形的中⼼点作为这个矩形的代表
var subRectanglesCenterPoints = [];
subRectangles.forEach(subRectangle => {
var centerPoint = Cesium.Cartographic.fromRadians((subRectangle.west + subRectangle.east) / 2, (subRectangle
landway
.north +
subRectangle.south) / 2);
subRectanglesCenterPoints.push(centerPoint);
delay是什么意思
});netbios
// 采样每个中⼼点到达地表的⾼度
var promi = Cesium.sampleTerrainMostDetailed(terrainProvider, subRectanglesCenterPoints);广州美容学校
Cesium.when(promi, function (updatedPositions) {
// 所有⾼度
stampvar heights = [];
updatedPositions.forEach(point => {
heights.push(point.height);
});
});
3.计算填挖⽅
更多详情见下⾯链接⽂章:
⽂章提供源码,对本专栏感兴趣的话,可以关注⼀波