我有一个多边形特征数据库,其中每个多边形都是由相同类型的较小的无缝多边形构成的。每一个多边形(由较小的多边形组成)有时也会与另一个多边形特征相交,也由它们自己的子多边形组成。
数据库中也有一组多线。我的目的是将所有的多边形合并成一个,然后提取所有这些完全属于大多边形的多线,我只是想使用一个选择查询来达到这个目的。我试过下面的脚本,但我可以在这个脚本补丁中实现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在这里会有帮助,但我不知道如何实现它。谢谢你的帮助。
你可以使用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)