是否可以将纬度/长度mysql多边形的边界扩展x英里或公里?

时间:2017-11-15 22:39:55

标签: mysql latitude-longitude point-in-polygon

因此在mysql中搜索多边形内的点非常简单,做这样的事情:

SELECT * FROM table WHERE ST_CONTAINS(ST_GEOMFROMTEXT('POLYGON((-72.0429540 42.9949644, -72.0405293 42.9929398, -72.0401645 42.9905541, -72.0353365 42.9888747, -72.0326543 42.9897850, -72.0343494 42.9935990, -72.0344567 42.9969733, -72.0367098 42.9980562, -72.0417953 42.9970361, -72.0429540 42.9949644))'), POINT(lat, long))

但是,我想说我还想找到距离我的多边形边界1英里范围内的物品。在mysql中有一个简单的方法吗?我的另一个想法是,也许我可以以某种方式计算我的多边形的新点,但我不知道如何知道扩展的方向。

1 个答案:

答案 0 :(得分:0)

我想我通过My​​SQL文档找到了自己的答案。我可以使用ST_Distance查询两个几何之间的最短距离(以度为单位),而不是扩展多边形,如下所示:

SELECT * FROM table WHERE ST_DISTANCE(ST_GEOMFROMTEXT('POLYGON((-72.0429540 42.9949644, -72.0405293 42.9929398, -72.0401645 42.9905541, -72.0353365 42.9888747, -72.0326543 42.9897850, -72.0343494 42.9935990, -72.0344567 42.9969733, -72.0367098 42.9980562, -72.0417953 42.9970361, -72.0429540 42.9949644))'), ST_GEOMFROMTEXT(CONCAT('POINT(',lat,' ',long,')'))) < 50;

https://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-object-shapes.html#function_st-distance