我有以下的纬度和经度:MySQL无法检查点是否在距离内... MBRContains查询错误或错误?
lat - 18.9802767
lng - 72.8142511
我想下面的查询为地方withint从关注点10公里。
select mbrcontains(geomfromtext(
'LINESTRING(72.8993663648088 19.0702857,72.72913583519122 18.8902677)'
),
geomfromtext(
'point(18.9802767 72.8142511)'
) );
的线串几何对象是从我试图确定确切点导出是内使用下式使用该方法的MySQL 5.1及以上从 this例如:
linestring(point(@lng+10/(111.1/cos(radians(@lat))),@lat+10/111.1), point(@lng-10/(111.1/cos(radians(@lat))),@lat-10/111.1))
从我所理解的点属于最小边界矩形(MBR)。但是查询返回0
作为答案。以上是遵循 this示例中给出的原则。
查询有什么问题?我怎么知道这个点是否在特定的地理空间距离之内(在这种情况下,MBR点是使用坐标给出的10 kms来计算的:lat - 18.9802767, lng - 72.8142511
)。
顺便说一句,我正在使用MySQL 5.5.32。
这是我用作给定的公式[这里](http://stackoverflow.com/questions/1006654/fastest-way-to-find-distance-between-two-lat-long-points?lq= 1):线串(点(@ lng + 10 /(111.1/cos(弧度(@lat))),@ lat + 10/111.1),点(@ lng-10 /(111.1/cos(弧度(@lat ))),@ lat-10/111.1))' 所以'Linestring'几何对象是从我试图确定的确切点派生而来的。我在这里做错了什么? – woofmeow
您的线串可能是正确的,但是您传递给geomfromtext的点将x和y翻转,这使得它远离线串。我已经更新了我的答案,以使其更加清晰 – lreeder
谢谢我认为它现在的工作。尽管表中的问题仍然存在:-(无论如何,你能否通过cos解释除法背后的逻辑? – woofmeow