【问题标题】:Calculate length of a shared edge of two polygones in PostGIS在 PostGIS 中计算两个多边形的共享边的长度
【发布时间】:2015-10-29 18:28:49
【问题描述】:

我有一个包含多个多边形的数据库。每个多边形都有很多定义它的节点。此外,每个多边形至少有一个邻居。对于计算,我需要确定两个相邻多边形的共享边的长度。在示例图片中显示了这种情况。这两个多边形共享红色边缘。如何在 PostGIS 的帮助下计算红边的长度?我没有找到相应的功能。

【问题讨论】:

    标签: polygon postgis


    【解决方案1】:

    您可以获取两个多边形的intersection,然后获取任何 LineStrings 的长度。例如,取两个几何图形:

    SELECT ST_Length(ST_CollectionExtract(ST_Intersection(a_geom, b_geom), 2))
    FROM (
      SELECT
        'POLYGON((70 170,160 250,240 220,270 130,185 62,90 80,70 170))'::geometry AS a_geom,
        'POLYGON((160 250,236 314,380 290,390 150,270 130,240 220,160 250))'::geometry AS b_geom
    ) f;
    

    或者对表mypolytouch 中的所有多边形对执行此操作:

    SELECT a.gid AS gid_a, b.gid AS gid_b,
      ST_Length(ST_CollectionExtract(ST_Intersection(a.geom, b.geom), 2))
    FROM mypoly a, mypoly b
    WHERE a.gid < b.gid AND ST_Touches(a.geom, b.geom);
    

    您还可以探索 Topology extension,它是 PostGIS 2.x 的一部分。

    【讨论】:

      猜你喜欢
      • 2018-01-02
      • 2016-02-16
      • 2023-01-26
      • 2019-05-14
      • 1970-01-01
      • 2020-10-06
      • 1970-01-01
      • 2021-10-23
      • 2016-07-01
      相关资源
      最近更新 更多