如何根據經緯度計算地面上某點在XYZ空間直角坐標系中的坐標


如何根據經緯度計算地面上某點在XYZ空間直角坐標系中的坐標

/**
     * @param r: number 到地心的距離
     * @param lon: number 經度
     * @param lat: number 緯度
     * @return {[number, number, number]}
     */
    getXYZByLonLat = (r, lon, lat) => {
        const {sin, cos, PI} = Math;
        const lonRadian = lon / 180 * PI;
        const latRadian = lat / 180 * PI;

        const y = r * sin(latRadian); // 在經線圈平面上, 計算y

        const rOnEquatorialPlane = r * cos(latRadian); // 在赤道面上, 計算r的投影距離
        const x = rOnEquatorialPlane * sin(lonRadian); // 在俯視圖中, 計算x
        const z = rOnEquatorialPlane * cos(lonRadian); // 在俯視圖中, 計算z

        /**
         x = R * cos(lat) * sin(lon)
         y = R * sin(lat)
         z = R * cos(lat) * cos(lon)
         */
        return [x, y, z];
    };


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM