通常,要查找包含某个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
答案 0 :(得分:1)
您可以在点周围创建Buffer
来表示圆,并检查它是否与多边形相交。它似乎存在于psql和mysql中,但我无法找到mysql的任何文档。
select polygon
from polygons
where ST_Intersects(polygon, ST_Buffer(ST_GeomFromText('POINT(100 90)'), degrees));