mysql兩點間的距離簡便算法

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;擴展

相關文章
相關標籤/搜索