如何从地理坐标测量面积?


12

如果我在地理坐标(WGS84)中具有多边形,那么如何考虑到地球的曲率来测量每个在地球表面上的总面积?

Answers:


7

PostGIS 1.5引入了一种新的GEOGRAPHY类型。该GEOGRAPHY类型允许将未投影的球体坐标存储在PostGIS表中,并对它们执行一些分析功能。

ST_Area 可以对GEOGRAPHY类型的多边形执行查询,以计算其面积(以平方米为单位)。

下面的查询使用椭球体(当前仅WGS-84支持椭球体)输出所有多边形的面积,假设它们使用GEOGRAPHY类型存储:

SELECT ST_Area(the_geom) FROM table_of_polygons;

可以从源代码中得出用于计算椭球体上面积的算法。


凉。谢谢(你的)信息。我必须尝试一下。
glennon

PostGIS的功能是什么?
mwalker 2010年

@mwalker我还没有花时间学习,但是如果您愿意的话,我已经添加了指向源代码的链接:)
fmark 2010年

用我未经训练的眼睛,PostGIS正在使用求和法,将区域切成条带并将它们全部加起来。
mwalker 2010年

10

以下是一些代码的链接,这些代码将产生一个简单多边形的区域(最初来自世界风论坛):http : //forum.worldwindcentral.com/showthread.php?t=20724。这大致基于以下关系解决了一个球体上的问题:

替代文字

S =多边形面积;theta是弧度的内角之和;n是顶点数;r是球体的半径。

另请参阅(公式图像的来源):http : //www.geom.uiuc.edu/docs/reference/CRC-formulas/node59.html

我很高兴看到扁球体上多边形区域的链接和/或代码。


1
@glennon在GeographicLib中提供了球体上测地多边形的区域代码。该代码包含指向该算法的论文的链接。
cffk 2011年

这种基于高斯-邦尼公式的方法,具有很大的数学意义,但对地球上的小人物几乎毫无价值:在括号内找到微小的“多余”部分已被大量取消,通常会导致灾难性的精度损失-即使使用双精度算术,也很容易完全失去几乎所有精度。对于常规的GIS计算,它不起作用。
whuber

7

这是我们在OpenLayers中进行的简化计算来源。此方法来自“球面上的多边形的某些算法”(Robert。G. Chamberlain和William H. Duquette,NASA JPL出版物07-03)。上面链接的代码用于确定线性环的面积(具有地理坐标)。从圆环中总结出多边形和多多边形的面积。

var area = 0.0;
var len = ring.components && ring.components.length;
if (len > 2) {
    var p1, p2;
    for (var i=0; i<len-1; i++) {
        p1 = ring.components[i];
        p2 = ring.components[i+1];
        area += OpenLayers.Util.rad(p2.x - p1.x) *
            (2 + Math.sin(OpenLayers.Util.rad(p1.y)) +
            Math.sin(OpenLayers.Util.rad(p2.y)));
    }
    area = area * 6378137.0 * 6378137.0 / 2.0;
}

环形组件是上述代码中x,y(lon,lat)坐标的两个元素数组。OpenLayers.Util.rad方法仅将度转换为弧度(度* PI / 180)。


1
您使用的半径6378137.0 m对应于地球的赤道半径。有什么理由吗?使用中等半径会更精确吗?
2013年

Math.radians =函数(度){返回度* Math.PI / 180.0; }; x =纬度,y =经度
Stefan Steiger

4

您需要将地理坐标转换为具有坐标系的投影,该坐标系允许您使用笛卡尔数学来计算面积。

我相信UTM是公认的标准投影,因为根据您的纬度和经度选择区域非常简单,而且即使在整个区域中,失真也很小。因此,如果您拥有得克萨斯州大小的多边形,则可以使用UTM Zone 14 N,它将仍然非常准确。

如果多边形位于北极或南极上,则应改用UPS,因为UTM投影在两极上的准确性较差,并且随着边界变小,您将快速遍历它们(因为它们遵循经度线)

一旦将点放置在笛卡尔友好的坐标系中,就可以将它们视为网格上的多边形并计算面积。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.