【问题标题】:Polygon created using centroid in postgis has incorrect length在 postgis 中使用质心创建的多边形长度不正确
【发布时间】:2020-06-19 20:17:38
【问题描述】:

我正在尝试通过将 4 个点分别投影 2 米来围绕质心创建一个多边形。但多边形边不是4米。我看到的只有 3.7 米和 2.8 米。

SELECT ST_AsText(ST_MakeValid(ST_MakeEnvelope(
    ST_X(ST_Project(ST_SetSRID(ST_MakePoint(-94.308946032318019, 41.189416186516212), 4326), 2,  radians(225))::geometry),
    ST_Y(ST_Project(ST_SetSRID(ST_MakePoint(-94.308946032318019, 41.189416186516212), 4326), 2,  radians(225))::geometry),
    ST_X(ST_Project(ST_SetSRID(ST_MakePoint(-94.308946032318019, 41.189416186516212), 4326), 2,  radians(135))::geometry),
    ST_Y(ST_Project(ST_SetSRID(ST_MakePoint(-94.308946032318019, 41.189416186516212), 4326), 2,  radians(315))::geometry),
    4326
)));

对角线也不是 4m。它是 4.7m。 QGIS

【问题讨论】:

    标签: postgis polygon


    【解决方案1】:

    4m的距离不是盒子的边,而是它的对角线。

    如果您希望盒子边长为 4m,则必须以 0、90、180 或 270 度角投影点质心。

    编辑以下测量注释:对角线确实有 4m 长。您可以在 Postgis 中测量它(项目使用 45 度会导致您使用 2 个不同角度创建的同一点)

    SELECT st_distance(
             ST_Project(ST_SetSRID(ST_MakePoint(-94.308946032318019, 41.189416186516212), 4326), 2,  radians(225))::geography,
             ST_Project(ST_SetSRID(ST_MakePoint(-94.308946032318019, 41.189416186516212), 4326), 2,  radians(45))::geography);
     st_distance
    -------------
               4
    

    在QGIS中,你需要定义和使用椭球距离,否则一个经度被认为与一个纬度的长度相同,这是错误的。

    【讨论】:

    • 连对角线都不是4m。它的长度为 4.7m。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-22
    • 2015-10-29
    • 2012-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多