MySQL的空間擴展(MySQL Spatial Extensions),它容許在MySQL中直接處理、保存和分析地理位置相關的信息,看起來這是使用MySQL處理地理位置信息的「官方解決方案」。 但偏偏很惋惜的是:它卻不支持某些最基本的地理位置操做,好比查詢在半徑範圍內的全部數據。它甚至連兩座標點之間的距離計算方法都沒有(MySQL Spatial的distance方法在5.*版本中不支持)spa
官方指南的作法是這樣的:code
GLength(LineStringFromWKB(LineString(point1, point2)))
這條語句的處理邏輯是先經過兩個點產生一個LineString的類型的數據,而後調用GLength獲得這個LineString的實際長度。orm
這麼作雖然有些複雜,貌似也解決了距離計算的問題,但讀者須要注意的是:這種方法計算的是歐式空間的距離,簡單來講,它給出的結果是兩個點在三維空間中的直線距離,不是飛機在地球上飛的那條軌跡,而是筆直穿過地球的那條直線。ci
因此若是你的地理位置信息是用經緯度進行存儲的,你就沒法簡單的直接使用這種方式進行距離計算。it
目前用到的一個數據信息io
SELECT *, GLENGTH(LINESTRINGFROMWKB(LINESTRING(ss.GPS_LOCATION, GEOMFROMTEXT('POINT(102.749938 25.105486)')))) AS DISTANCE FROM senic_spot ss WHERE GLENGTH(LINESTRINGFROMWKB(LINESTRING(ss.GPS_LOCATION, GEOMFROMTEXT('POINT(102.749938 25.105486)')))) < 5.0 ORDER BY DISTANCE;擴展