【问题标题】:PostGIS find linestrings that are connectedPostGIS 查找连接的线串
【发布时间】:2020-04-24 08:45:11
【问题描述】:

您好,我正在尝试获取所有靠近其他线串节点的线串

我试过了:

SELECT * 
FROM lines p
JOIN lines ps ON( ST_Buffer(p.geom, 0.01) && ps.geom 
AND ST_Intersects(st_buffet(p.geom, 0.01), ps.geom))

但我也得到相交的线。

有函数ST_Touches() 但是我不知道如何添加一些容差。也许有一种方法可以在线串节点上制作缓冲区?

【问题讨论】:

    标签: sql postgresql postgis


    【解决方案1】:

    您需要使用st_dumpPoints 提取节点,然后您可以将线连接到这些点。最好使用st_dwithin 而不是不精确的缓冲区。

    查询类似于

    SELECT * 
    FROM lines p 
     JOIN 
       (SELECT *, (ST_DumpPoints(geom)).geom 
        FROM lines ps) as pts 
      ON st_dwithin(p.geom, ps.geom, 0.1);
    

    您可能想要选择 * 以外的其他内容,因为您将获得每行 3 个几何图形(第 1 行、第 2 行、接触节点)

    PS:关于st_touch,两条线仍然可以在2个顶点之间相互接触。

    【讨论】:

    • 谢谢,这正是我所需要的!我在这个例子中选择了 *。 St_dwithin 似乎要快很多,感谢您的提示。
    猜你喜欢
    • 1970-01-01
    • 2015-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-02
    相关资源
    最近更新 更多