类差

 /**
     * 类差路径在模型上的位置信息
     * @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
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容