【问题标题】:PostGIS - Merge buffers geometry in different groups (when intersecting)PostGIS - 合并不同组中的缓冲区几何(相交时)
【发布时间】:2016-05-20 04:29:47
【问题描述】:

我在这个表中存储了一些几何图形 (140k)

CREATE TABLE 缓冲区 (pk integer NOT NULL,geom geometry(MultiPolygon,4326),)

我想创建(如果可能的话)一个新表(缓冲合并),其中包含预览在其中 分组 相交之间的结果几何彼此。

我的预期输出,就像在 QGIS 中使用 Buffer(s) 工具检查“溶解缓冲区结果”时一样,但我希望,而不只是一个大的独特几何作为输出,更多的小组(每个小组一个相交几何组)

您能帮我理解如何构建一个允许我这样做的查询吗? (启用 Postgres + PostGIS) 谢谢你

斯特凡诺

【问题讨论】:

    标签: sql postgresql geometry postgis qgis


    【解决方案1】:

    你也需要属性吗?

    如果没有,这个查询应该可以完成这项工作:

    CREATE TABLE buffersmerged AS 
    SELECT (ST_dump(ST_union(a.geom))).geom 
    FROM buffers a, buffers b 
    WHERE ST_intersects(a.geom,b.geom) AND a.id != b.id;
    

    【讨论】:

    • 首先,感谢您的快速回复。不,我不需要任何属性,只需要几何。运行您的代码后,我得到了一张看起来不错但没有任何几何形状的表格。我为解决这个问题所做的(也许不是一种性感的方式)是创建一个已经定义了两列(pk,geom)的表,其中第二列已经定义为 POLYGON。现在它起作用了!谢谢
    • 奇怪,我的说法奏效了。也许您可以编辑我的答案并添加您的解决方法吗?如果它有效,请不要忘记接受答案。
    • 在编辑之前,我将向您展示解决方法: >CREATE TABLE buffersmerged (pk serial NOT NULL PRIMARY KEY,geom geometry(POLYGON,4326));然后: >INSERT INTO buffersmerged (geom) >SELECT (ST_dump(ST_union(a.geom))).geom >FROM 缓冲区 a,缓冲区 b >WHERE ST_intersects(a.geom,b.geom) AND a.pk != b.pk;可能有一种方法可以进行单个查询,但我不知道如何。如何接受答案?上箭头?
    • 你需要 a.id
    猜你喜欢
    • 1970-01-01
    • 2018-10-03
    • 2017-03-27
    • 1970-01-01
    • 2022-01-20
    • 2018-10-08
    • 1970-01-01
    • 2019-07-07
    • 1970-01-01
    相关资源
    最近更新 更多