/**
* 类差路径在模型上的位置信息
* @param [{"lat": 30.521671031597158,"lng": 114.1501589995521,"height": 28.563461324337183,"distance": 0},
{"lat": 30.521322561586604,"lng": 114.15004507936005,"height": 28.553566562444328,"distance": 40}]
* list:经纬度坐标组成的数组
* @param {*} minSpacing:最小单位间距m
* @returns 采集结果:笛卡尔坐标组成的数组
*/
const getHeightByModle = async (scene, list, minSpacing) => {
//类差集合
let cartesians = []
cartesians.push(Cesium.Cartesian3.lerp(
new Cesium.Cartesian3.fromDegrees(list[0].lng, list[0].lat, list[0].height),
new Cesium.Cartesian3.fromDegrees(list[0].lng, list[0].lat, list[0].height),
list[0].distance,
new Cesium.Cartesian3()
))
for(let j = 0; j < list.length; j++) {
if (j !== 0){
let startPoint = list[j-1]
let endPoint = list[j]
//线段的起始点
let cartesian1 = new Cesium.Cartesian3.fromDegrees(startPoint.lng, startPoint.lat, startPoint.height)
let cartesian2 = new Cesium.Cartesian3.fromDegrees(endPoint.lng, endPoint.lat, endPoint.height)
for(let i = 0; i < (endPoint.distance - startPoint.distance); i += minSpacing) {
let offset = i / ((endPoint.distance - startPoint.distance) - 1)
cartesians.push(Cesium.Cartesian3.lerp(cartesian1, cartesian2, offset > 1 ? 1 : offset, new Cesium.Cartesian3()))
}
}
}
//生成模型上类差点的高度信息
let resultList = []
const clampedCartesians = await scene.clampToHeightMostDetailed(cartesians)
clampedCartesians.forEach(item => {
let latLngHeight = Cesium.Cartographic.fromCartesian(item)
resultList.push({
"lat": Cesium.Math.toDegrees(latLngHeight.latitude),
"lng": Cesium.Math.toDegrees(latLngHeight.longitude),
"height": parseFloat(latLngHeight.height.toFixed(3)),
"distance": 0 //预留的起点到该点的路径总长。
})
})
return resultList
}
类差
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 狗狗不是一件物品,虽然狗狗不像人类那样会想很复杂的东西,但是它们还是会有自己的思想,当然狗狗想的东西都比较简单,而...
- 【蝴蝶效应】 蝴蝶效应:上个世纪70年代,美国一个名叫洛伦兹的气象学家在解释空气系统理论时说,亚马逊雨林一只蝴蝶...