GIS中面积的近似计算

default

赤道上经纬度和长度换算

$$ length = 2 * π * R * 1° / (360°) $$

$$ R = 6378137m $$

$$ 1° ≈ 111319.5m $$

赤道上经纬度和面积换算

$$ 1° * 1° ≈ 111319.5 * 111319.5 ≈ 12,392,031,080㎡ $$

任意纬度处

图 0

长度计算:

$$ 1° ≈ 111319.5m * cos(latitude) $$

面积计算:

$$ 1° ≈ 12,392,031,080㎡ * (cos(latitude))² $$

代码实现

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
/**
 * 计算面积/平方米(仅支持小范围近似计算)
 *
 * @param geometry 几何学
 * @return double
 * @throws Exception 例外
 */
public static double calculateArea(Geometry geometry) {
    double area = geometry.getArea();
    return area * Math.pow(111319.5, 2) * Math.pow(Math.cos(geometry.getCentroid().getY() * Math.PI / 180), 2);
}

/**
 * 计算长度/米(仅支持小范围近似计算)
 *
 * @param geometry 几何学
 * @return double
 */
public static double calculateLength(Geometry geometry) {
    double length = geometry.getLength();
    return length * 111319.5 * Math.cos(geometry.getCentroid().getY() * Math.PI / 180);
}
Licensed under CC BY-NC-SA 4.0
Gear(夕照)的博客。记录开发、生活,以及一些不足为道的思考……