2016-05-31 214 views
1

有人知道我的查询有什么问题。我正在尝试使用地理坐标来计算面积,但结果似乎太小而不真实。 0.00118平方米。任何人都可以帮忙吗?如何使用地理坐标计算SQL中的面积?

SELECT ST_Area(the_geom) As sqm 
FROM (SELECT 
ST_GeomFromText('POLYGON 
(
    (14.604514925547997 121.0968017578125, 
    14.595212295624522 121.08512878417969, 
    14.567302046916149 121.124267578125, 
    14.596541266841905 121.14761352539062, 
    14.604514925547997 121.0968017578125) 
)',4326)) As foo(the_geom) 
+0

这看起来像它在这里的GIS堆栈交换一些信息: http://gis.stackexchange.com/questions/26461/calculating-area-of-an-epsg4326-polygon – bcollins

+0

另外看看这个:http://gis.stackexchange.com/questions/139292/why-does- st-area-return-different-results-for-geog-vs-geom – bcollins

+0

如下面的回答,你需要ST_Area的geography版本; [见手册](http://postgis.net/docs/ST_Area.html)了解更多详情。 –

回答

2

该计算应该有多准确? 一种解决方案是投几何体GEOGRAPHY,这是最普遍使用的情况下可接受精度:

SELECT ST_Area(the_geom::GEOGRAPHY) As sqm 
FROM (SELECT 
     ST_GeomFromText('POLYGON 
(
    (14.604514925547997 121.0968017578125, 
    14.595212295624522 121.08512878417969, 
    14.567302046916149 121.124267578125, 
    14.596541266841905 121.14761352539062, 
    14.604514925547997 121.0968017578125) 
)',4326)) As foo(the_geom) 

的地理类型自动转换度米。根据您的情况

你也可以直接使用地理构造St_GeographyFromText,它接受一个WKT字符串作为参数,非常类似于ST_GeomFromText

ST_GeographyFromText('POLYGON((14.604514925547997 121.0968017578125, 
     14.595212295624522 121.08512878417969, 
     14.567302046916149 121.124267578125, 
     14.596541266841905 121.14761352539062, 
     14.604514925547997 121.0968017578125))' 
    )