2014-02-28 35 views
0

我發現以下mysql空間函數它可以檢查給定的經度和緯度是否在多邊形內。哪個函數可以檢查給定的lat&lng是否在多邊形內?

1 - MBR_Contains

2 - MBR_Within

請指引我,這將給快速準確結果檢查給定點的內部或多邊形的外MySql服務器通過查詢本身。

另外建議我,如果你找到了比這更好的解決方案(它應該通過查詢在Mysql服務器中檢查。)?

問候, ArunRaj

+0

嘿ArunRaj,你是否想在一個特定的距離內簡單地找到位置,也就是說一個圓也可以作爲一個圓周工作,或者你是否需要它成爲一個ploygon? – Daan

+0

@達安:大安,感謝您的回覆。僅供參考,我不計算距離。對於我的用例,我需要**檢查一個點(lat,lng)**是否在** POLYGON **之內或之外。 – ArunRaj

回答

1

他們可能是相同的(在速度方面),但你應該運行使用兩種功能自己的測試。

這就是說,假設你可以使用MySQL 5.6.1,你應該從MBR避免功能和使用功能ST:

ST_Contains() 
ST_Within() 

究其原因,MBR代表最小外接矩形,因此一個點可在最小邊界矩形內,但實際上不在多邊形內。 ST方法的形狀是精確的,並會給你一個更準確的答案。

編輯,解決我應該使用哪一個?我相信你可以在測試多邊形中的一個點時使用它,但是爲了安全起見,再次測試一個你知道在多邊形中的點。

+0

只是爲了好奇,是否可以使用HibernateSpatial API構造ST_Contains()方法? – ArunRaj

+1

@ user2959196老實說,我不完全確定,我不使用NHibernate,但如果當前版本不允許你,因爲他們從相當早的時間就支持空間類型,我會感到驚訝。 –

相關問題