0

在我的数据库中,我存储了多边形。现在我需要搜索一定半径内的所有多边形。即使多边形只是区域内的一小部分,那么它也应该包含在结果中(所以一旦有最小匹配,就会有匹配)。

做这个的最好方式是什么?我一直在考虑创建另一个多边形并搜索与之相交的所有内容,但不知道这是否是一种有效的方法?

4

2 回答 2

0

是的,我认为这是最好的方法。您可以使用ST_BUFFER创建一个多边形,然后您可以使用ST_INTERSECT来查找多边形是否会与您的多边形相交。

也许你也可以使用ST_DISTANCE来做到这一点。它将计算点到多边形的最小距离。

Select ST_DISTANCE(polygons,POINT(x, y)) as distance, polygon_id from your_polygon_table WHERE distance <= 10 
于 2018-08-07T15:41:57.603 回答
0

我在同样的问题上苦苦挣扎,并提出了以下效果很好的方法。

select this.poly, other.poly
from table this, table other
where this.name = 'name of subject polygon'
  and ST_Distance(ST_Centroid(this.polygon),ST_Centroid(other.polygon)) < 'desired distance';

这将适用于初始点与其他多边形在同一个表中。如果您有一个固定的初始点,您可以将查询简化如下:

select poly from table
where ST_Distance('26.36, -81.07',ST_Centroid(other.polygon)) < 'desired distance';
于 2021-08-26T20:31:20.970 回答