如何解决计算地球表面多边形的面积
出于教育目的,我正在尝试编写一个 TS 函数,该函数将接受坐标数组并计算多边形的面积。
function getArea(lat_long: Array<LAT_LONG>){
lat_long.push(lat_long[0])
const n = lat_long.length
const cart = lat_long.map((point) => convertToCartesian(point));
let sum1 = 0;
let sum2 = 0;
cart.map((point,i,cart) => {
if(cart[i + 1]) {
const {X: lat1,Y: long1} = point;
const {X: lat2,Y: long2} = cart[i + 1]
sum1 += <number>lat1 * <number>long2
sum2 += <number>long1 * <number>lat2
}
})
return Math.abs(sum1 -sum2) / 2;
}
我正在使用鞋带算法成功计算多边形的面积。在运行算法之前,我将纬度/经度坐标转换为笛卡尔格式。
[
-30.755695508016164,139.58931179712357,-31.026745675780326,139.67720242212357,-30.929020409557967,139.9243948049360,-30.563139898321857,140.02052517602982,-30.500447229869152,139.79530544946732,])
Results in 774321690.7109375 from my function.
我将其与 https://www.mathopenref.com/coordpolygonareacalc.html 的结果进行了比较,后者输出:774321690.7119141。
但是,当我将其与谷歌地图等工具进行比较时,它是不正确的(答案为 1513405095.71 平方米)。我应该应用地球的球形特性来获得准确的答案,但我不确定如何。 我试过 S = [θ - (n - 2)π]R^2 其中 θ 是角的总和,n 是角的数量。
任何帮助将不胜感激,谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。