因此在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中有一个简单的方法吗?我的另一个想法是,也许我可以以某种方式计算我的多边形的新点,但我不知道如何知道扩展的方向。
答案 0 :(得分:0)
我想我通过MySQL文档找到了自己的答案。我可以使用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;