0

我在德国中部创建了一个非常简单的多边形来演示我的问题。

您可以使用以下 GeoJSON 在 geojsonlint 中对其进行可视化

{"type":"Polygon","coordinates":[[
[10.439844131469727,51.17460781257472],
[10.430574417114258,51.1753073564544],
[10.429565906524658,51.17179607723465],
[10.438792705535889,51.170706315523866],
[10.439372062683105,51.17267055874809],
[10.43975830078125,51.17439256616884],
[10.439844131469727,51.17460781257472]]]G}

使用在线工具(例如http://www.daftlogic.com/projects-google-maps-area-calculator-tool.htm,但我尝试了几个)计算表面时,我得到以下数字(这些是基于多边形的类似绘图,但不完全相同,因为我无法将其复制到这些工具中):

  • 276583.39 平方米
  • 0.28 平方公里
  • 68.35 英亩
  • 27.66 公顷
  • 2977118.86 英尺²
  • 0.08平方海里

现在我想使用 POSTGIS 计算这些区域,但我总是出错并且数字不匹配。

首先,我使用此处给出的示例开始不进行转换:

http://postgis.net/docs/ST_Area.html

 SELECT ST_Area(the_geom) As sqft, ST_Area(the_geom)*POWER(0.3048,2) As sqm
 FROM (SELECT ST_GeomFromText('
 POLYGON ((51.17460781257472  10.439844131469727,
 51.1753073564544 10.430574417114258, 
 51.17179607723465 10.429565906524658,
 51.170706315523866 10.438792705535889,
 51.17267055874809 0.439372062683105,
 51.17439256616884 10.43975830078125,
 51.17460781257472 10.439844131469727))',4326) ) As foo(the_geom);

--> sqft = 3.52643124351653e-05 和 sqm = 3.27616182873666e-06

我该如何解释这些数字?然后我尝试将其转换为 WGS 84 / UTM zone 33N 32633

SELECT ST_Area(the_geom) As sqft, ST_Area(the_geom)*POWER(0.3048,2) As sqm
FROM (SELECT ST_Transform(ST_GeomFromText('
POLYGON ((51.174661624019286 10.440187454223633,
51.17067940750161 10.438899993896484,
51.17197097486416 10.429544448852539, 
51.17536116708255 10.430488586425781,
51.174661624019286 10.440187454223633))',4326),32633) ) As foo(the_geom);

--> 平方英尺 = 662918.939349234 和平方米 = 61587.1847391195

但即使是这些数字也没有接近。

4

2 回答 2

2

多边形的坐标被意外加载为 lat,lon 而不是 lon, lat。

http://postgis.net/2013/08/18/tip_lon_lat

在空间数据库中,空间坐标为 x = 经度,y = 纬度

于 2014-05-14T16:19:44.400 回答
1

我将坐标转换为 EPSG: 31467,请参见epsg:31467,它被投影到米并适用于您的几何图形所覆盖的德国区域。

select st_area(st_transform(st_setsrid(st_geomfromtext('POLYGON((10.439844131469727    
  51.17460781257472,10.430574417114258 51.1753073564544,10.429565906524658
  51.17179607723465,10.438792705535889 51.170706315523866, 10.439372062683105 
  51.17267055874809, 10.43975830078125 51.17439256616884, 10.439844131469727 
  51.17460781257472))'),4326),31467));

并得到了答案:274442.27 m 2,在原始答案的 0.007% 以内。

在使用适合该区域的大地水准面的投影坐标系中,测量通常更准确。如果您在 Postgis 中对该投影的空间参考系统表运行此查询:

 select * from spatial_ref_sys where srid=31467;

您将看到更多细节,例如它使用 Bessel 1841 椭球体。

编辑:您原来的 geojson 在 x/y 中有坐标,但由于某种原因,您在将它们放入 Postgis 时翻转了它们。

于 2014-05-14T11:23:26.450 回答