2016-05-12 361 views
0

我試圖讓我的頭在mysql中的地理空間索引,我無法獲得簡單的查詢工作,我認爲這是由於我缺乏理解。基本上,我想一經/緯度我通過在10英里半徑範圍內獲得多個位置mysql 5.7 geospatial地理位置距離查詢

表結構非常簡單

點: 名(爲varchar) 位置(點)

目前還只有一排 的名字 - 「點1」的位置:POINT(31.5 42.2)

現在,我想下面的SQL,我已經在這裏https://www.percona.com/blog/2013/10/21/using-the-new-mysql-spatial-functions-5-6-for-geo-enabled-applications/

解除
set @lat= 31.5; 
set @lon = 42.2; 
set @dist = 10; 
set @rlon1 = @[email protected]/abs(cos(radians(@lat))*69); 
set @rlon2 = @[email protected]/abs(cos(radians(@lat))*69); 
set @rlat1 = @lat-(@dist/69); 
set @rlat2 = @lat+(@dist/69); 

select astext(location), name from Points 
where st_contains(location, envelope(linestring(point(@rlon1, @rlat1), point(@rlon2, @rlat2)))) 
order by st_distance(point(@lon, @lat), location) limit 10; 

但它返回一個空的結果集。任何人有任何想法或指針? 感謝

回答

0

我設法得到這個工作

我是假設一個「點」的對象是緯度,經度,但它不是,據我可以告訴它的經度,緯度。所以理論上這個問題是我在表中錯誤地存儲了我最初的'點'座標值,儘管我認爲標準方法是經緯度: