在群裡面遇到一個gps空間查詢計算的問題,查詢過程中發現兩個坐标點的空間距離越近,距離計算的越不準。
車子在圓中,但是算出來的不在
範圍變大計算結果正确
導緻這個問題的原因之一:地圖坐标系統。
坐标系統就是對一個坐标的描述。要描述一個坐标就需要空間參考系統。假設問你一個坐标(1024,720)在你螢幕的什麼位置。你首先要确定的就是起算點在那裡,左上角還是左下角。同理(102.13,34.24)這在地球的上的什麼地方。起算點是本初子午線和赤道的交點麼?
問題沒有那麼簡單。螢幕坐标是笛卡爾坐标系。但是地圖上用的坐标可是角度,60進一位的角度。它是用來描述球面上某點的。
知道了坐标(102.13,34.24)的空間參考系統是個球。如果這個球的名字叫 wgs84
那它的球心就是地球的質心,他的長半軸6378137±2m。在準确點其實它還有扁率,因為這個球是個橢球體。地球本身也不是個正圓體。
我們在來看一下百度地圖的距離計算函數
在計算兩點距離時用到了球體的半徑。問題就在這個半徑上。資料庫裡面存的gps資料的坐标系統,使用的橢球半徑是6378137±2m。從前台傳入查詢的坐标是百度地圖的坐标參考系統,用的球半徑是6370996.81。兩個坐标不是一個空間參考系統,誤差肯定很大。想要得到準确的值那就要進行坐标轉換。從
wgs84->百度坐标,百度裡面提供了這樣的接口。但是想把百度坐标->wgs84,這個基本不可以,至少百度地圖是不允許的。
擴充一下-------------
常用的坐标系統主要有兩種。
1.地理坐标系:以橢球體為基礎建立的坐标系,用經緯度度量坐标。上面說的就是這種。
2.投影坐标系:在特定橢球體基礎之上經過地圖投影建立的平面坐标系。在測繪行業最常用的。
簡單來說,雖然我們生活的地球是圓的,但是人力所及的地球環境都是平的。是以直接在一個平面上繪制地圖更簡單而且更有利于測量還可以提高繪制精度。不過你也不能随便來,還要通過一套複雜的方法把地球投影到平面上然後分塊繪制。這樣才能友善的把各地的地圖整合拼接起來。
地圖投影幾何分類主要包括
最後說一下,如果有人給你說 北京54,西安80,wgs84.這些名字主要指不同的橢球體,與地理坐标系還是投影坐标無關。