【问题标题】:Using ST_Union combined with ST_contains将 ST_Union 与 ST_contains 结合使用
【发布时间】:2023-03-11 00:57:01
【问题描述】:

我有一个多边形特征数据库,其中每个多边形都是由相同类型的较小无缝多边形构成的。这些多边形中的每一个(由较小的多边形组成)有时也与另一个多边形特征相交,另一个多边形特征也由它们自己的子多边形组成。

数据库中还有一组折线。我的目标是将所有多边形合并为一个,然后提取它们完全包含大多边形的所有折线。 我只想为此目的使用选择查询。我试过下面的脚本,但我可以在这个脚本补丁中实现 ST_Union。

> Select * From tbl.A a, tbl.b b  where
> ST_Contains(a.geometry,b.geometry) and pol_id in ('1','2','3')

Above 返回每个多边形内的折线,但不检索那些一半为深绿色多边形,一半为紫色多边形的折线。我确信 ST_Union 会在这里提供帮助,但我不确定如何实现它。感谢您的帮助。

【问题讨论】:

    标签: sql postgresql postgis spatial-query


    【解决方案1】:

    您可以使用 CTE 来建立“联合”多边形:

    WITH polygon AS (
       SELECT ST_Union(polygon_table.geometry) from polygon_table
    )
    SELECT
      *
    FROM
        linestring_table
      JOIN
        polygon ON ST_Contains(polygon.geometry, linestring_table.geometry)
    

    【讨论】:

    • 如果polygon_tabletbl.A 并且linestring_tabletbl.b 那么这不起作用或者我不能让它起作用。我也不确定polygon 在第一行是什么。
    • polygonWITH 查询的别名,它保存查询的结果,所以我们可以在下面的连接中使用它。您可以发布 tbl 的架构吗?我对如何从它们中进行选择感到有些困惑,例如:select * from tbl.A。此外,如果您使用的是 postgres,则应从问题中删除 mysql 标签。
    猜你喜欢
    • 1970-01-01
    • 2012-07-16
    • 2019-08-15
    • 2018-10-03
    • 2017-04-15
    • 2010-11-06
    • 2017-01-11
    • 2021-06-06
    • 2012-11-14
    相关资源
    最近更新 更多