如何使用地理坐标计算SQL中的区域?

时间:2016-05-31 21:02:39

标签: sql postgresql geolocation postgis

有人知道我的查询有什么问题吗?我试图使用地理坐标计算面积,但结果似乎太小而不实。 0.00118平方米。有人可以帮忙吗?

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)

1 个答案:

答案 0 :(得分:2)

计算的准确程度如何? 一个解决方案是将GEOMETRY转换为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))'
    )