【问题标题】:How to calculate area in SQL using geographic coordinates?如何使用地理坐标在 SQL 中计算面积?
【发布时间】:2016-09-30 01:08:38
【问题描述】:

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

【问题讨论】:

标签: sql postgresql geolocation postgis


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    • 2015-04-13
    • 2012-06-09
    • 1970-01-01
    • 2019-03-31
    • 2014-05-12
    • 2018-02-19
    相关资源
    最近更新 更多