示例数据为美国 怀俄明州 边界 谷歌他的实际面积为253,300 平方公里(25.3 万 平方公里),谷歌地球地球计算为253,694.01 平方公里,以下算法计算的面积为254427.11970185622
package com.ky.area;
import java.util.ArrayList;
import java.util.List;
public class PolygonAreaCalculator {
// 将经纬度转换为弧度
private static double toRadians(double degrees) {
return degrees * Math.PI / 180;
}
// 使用 Haversine 公式计算两个经纬度点之间的距离
private static double haversine(double lat1, double lon1, double lat2, double lon2) {
final double R = 6371.0; // 地球半径,单位为公里
double dLat = toRadians(lat2 - lat1);
double dLon = toRadians(lon2 - lon1);
double a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
Math.cos(toRadians(lat1)) * Math.cos(toRadians(lat2)) *
Math.sin(dLon / 2) * Math.sin(dLon / 2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
return R * c; // 距离,单位为公里
}
// 计算多边形的
JAVA 通过经纬度点(边界)计算面积
最新推荐文章于 2024-10-30 13:42:13 发布