如何使用地理坐标计算 SQL 中的面积?

How to calculate area in SQL using geographic coordinates?

有谁知道我的查询有什么问题。我正在尝试使用地理坐标计算面积,但结果似乎太小而不真实。 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)

计算的准确度应该是多少? 一种解决方案是将 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))'
    )