2013-05-04 77 views
0

的範圍內緣點我想查詢500米給定點的半徑範圍內的所有可能的街道名稱。 多篇帖子正在使用Haversine公式或其某個版本的Google Store定位器示例。 但我也遇到過一些更簡化的解決方案最快的方式找到在MySQL

他們只是將點視爲x,y座標,通過將變量添加到lat和long變量中,如下所示。

我徘徊,如果這將是最快的方式來查詢mysql沒有變得非常複雜,仍然得到一個好的結果。我還沒有很多數據,所以我想知道我是否在正確的軌道上。 使用這種方法有沒有缺點或不準確的

我不明白的是如何能像半徑範圍的,它看起來更像是一個方向性 查詢?

Distance = 0.1; // Range in degrees (0.1 degrees is close to 11km) 
LatN = lat + Distance; 
LatS = lat - Distance; 
LonE = lon + Distance; 
LonW = lon - Distance; 

...Query DB with something like the following: 
SELECT * 
FROM table_name 
WHERE 
(store_lat BETWEEN LatN AND LatS) AND 
(store_lon BETWEEN LonE AND LonW) 

回答

0

您可能要問這個問題上the GIS site。我自己使用了this answer來解決類似的問題。我可以看到你提出的解決方案可能會更快,但請注意,你的四點描述的是一個正方形而不是圓形,所以它不會被認爲是「半徑」。

+0

我知道該怎麼從上面的COORDS現在要做的,第一過濾器,把haversine公式在哪裏條款。我只需要弄清楚我是否有找到矩形的座標(upleft和直立)的正確公式。我在其他帖子中看到了計算結果,上面只是增加/減去了一個半徑,這可能不太準確? – Richard 2013-05-07 23:36:00

0

你可以使用ElasticSearch,MySQL總是比ES慢。