使用ST_Union与ST_contains结合使用

问题描述 投票:0回答:1

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

enter image description here

数据库中也有一组多线。我的目的是将所有的多边形合并成一个,然后提取所有这些完全属于大多边形的多线,我只是想使用一个选择查询来达到这个目的。我试过下面的脚本,但我可以在这个脚本补丁中实现ST_Union。

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

上面的脚本返回每个多边形内的多条线,但是那些一半在深绿色多边形内,一半在紫色多边形内的多条线没有被检索到。我相信ST_Union在这里会有帮助,但我不知道如何实现它。谢谢你的帮助。

mysql sql postgresql postgis spatial-query
1个回答
0
投票

你可以使用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)
© www.soinside.com 2019 - 2024. All rights reserved.