我有以下的緯度和經度: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