在MySQL / PostgreSQL中查找属于纬度/经度组合的多边形,其中N边距为度

时间:2014-07-03 23:46:50

标签: mysql postgresql gps

通常,要查找包含某个GPS点的多边形,您可以使用如下查询:

SELECT * FROM `polygons` WHERE ST_CONTAINS(`polygon`, POINT(-33.874087, 151.207865)));

然而,如果你想给GPS点一定的度数,你会怎么做?我目前唯一能想到的方法是创建一个MySQL函数,它执行一个遍历每个纬度/经度组合的循环,直到它达到边距并最终返回它找到的多边形。但我希望有更好的方法来做到这一点。我很高兴在MySQL或PostgreSQL中这样做。用于查找罗盘多边形的示例输入:

latitude = 33.8275
longitude = 151.2695
latitude_span = 0.0216
longitude_span =0.0437

1 个答案:

答案 0 :(得分:1)

您可以在点周围创建Buffer来表示圆,并检查它是否与多边形相交。它似乎存在于psql和mysql中,但我无法找到mysql的任何文档。

select polygon
from polygons
where ST_Intersects(polygon, ST_Buffer(ST_GeomFromText('POINT(100 90)'), degrees));