postgresql 如何使用ST_Intersection获取多个几何图形?

lymgl2op  于 2023-06-22  发布在  PostgreSQL
关注(0)|答案(1)|浏览(197)

我有一个多边形层(lulc)和一个点层(传感器)。我想有所有的多边形内缓冲区周围的点,因为我可以在QGIS
所以我尝试了这个请求:

SELECT ST_Intersection(lulc.geom,ST_Buffer(sensors.geom,200,'quad_segs=50'))
    FROM sensors 
        JOIN lulc ON ST_Intersects (sensors.geom,lulc.geom)

但结果是这样的:



虽然我期待这样的结果:

我知道ST_Intersection只返回一个几何体,但是我应该怎么做才能让所有的多边形都在缓冲区内呢?(子问题ST_Intersection如何选择将作为其结果的几何体?)

x9ybnkn6

x9ybnkn61#

ST_Intersection将返回每个交叉点,它不会过滤掉任何几何体。
在查询中,只选择与传感器点相交的多边形,然后使用这些多边形计算与传感器点缓冲区的交点。
相反,您需要连接传感器点附近的多边形,然后计算交点:

SELECT ST_Intersection(lulc.geom,ST_Buffer(sensors.geom,200,'quad_segs=50'))
    FROM sensors 
        JOIN lulc ON ST_DWITHIN(sensors.geom,lulc.geom,200)

相关问题