GPS軌跡可視化


寫在前面:所有數(shù)據(jù)記得選擇對應(yīng)的坐標系,例如百度地圖和原始GPS坐標系就不同,需要轉(zhuǎn)化再將它投射到地圖上,否則就會造成偏差,導致"汽車從你家客廳穿過"


第一種是用python。

這里原理是用matplotlib里面的scatter畫散點圖,設(shè)置好橫軸和縱軸的單位距離,然后把橫軸和縱軸數(shù)據(jù)放在兩個列表里面就行,具體可以看看matplotlib的官方文檔,或者參照這篇博客,且看代碼:

import matplotlib.pyplot as plt  

import os  

#定義讀取txt的函數(shù) 返回一個列表 列表里包含經(jīng)度  

def get_longitude(filename,i):  

fopen = open(filename,'r')  

    longitude = []  

for eachline in fopen:  

group = eachline.split(",")  

        longitude.append(float(group[i]))  

    fopen.close()  

return longitude  

#定義讀取txt的函數(shù) 返回一個列表 列表里包含緯度  

def get_latitude(filename,i):  

fopen = open(filename,'r')  

    latitude = []  

for eachline in fopen:  

group = eachline.split(",")  

        latitude.append(float(group[i]))  

    fopen.close()  

return latitude  

#filename文件路徑 size點的大小 color為點的顏色 i為自己定義 如果每一行前面有代表行數(shù)的數(shù)字,i為1否則i為0  

def draw_image(filename,size,color,i):  

latitude = get_latitude(filename, i)# 緯度  

longitude = get_longitude(filename, i+1)  # 經(jīng)度  

    plt.scatter(longitude, latitude, size,color)  

plt.ylim(Ymin,Ymax)#Ymin和Ymax表示縱軸的最大值和最小值  

plt.xlim(Xmin,Xmax)#同上  

plt.plot(longitude,latitude,'b')#顏色的設(shè)置 'r' 紅色 'm' 粉紅'g' 綠色 'c' 青色'b' 藍色 'w' 白色'y' 黃色 'k' 黑色  

    plt.show()  
image

這里的可視化的容易懂,但有個不好的地方就是背景不是地圖,效果不太好。不過python有個庫是可以在地圖上標點的,叫BaseMap,但我這里沒寫的原因,一是當時沒時間學,二是這個網(wǎng)上資料不多,不想看英文文檔,就沒寫,這回我有空就去學一學,之后也寫一篇博客,這里貼一篇可以參考的,感興趣的小伙伴可以看看BaseMap

第二種可視化,就是用百度地圖了,百度地圖API提供了很多東西,只要注冊申請密鑰之后就能用。

值得注意的是,如果你要可視化的是海量數(shù)據(jù),個人建議,還是用LBS麻點,百度地圖API,在控制臺里找數(shù)據(jù)管理那部分,然后上傳數(shù)據(jù),不過切記別把上傳的格式搞錯了,先把百度提供的模板下下來然后自己錄入數(shù)據(jù)生成csv文件,然后再上傳。最后還有一個要注意的地方就是,百度地圖的坐標跟原始的GPS坐標是不同的,如果不轉(zhuǎn)換的話,點標就標得不準,百度官方提供了轉(zhuǎn)換方法原始GPS轉(zhuǎn)百度坐標

上傳數(shù)據(jù)成功后會有一個geotableId,然后就是顯示了,這里可以直接在地圖上看了

image

之前的geotableId在前端頁面調(diào)用的時候會要用到

請看代碼

// 百度地圖API功能   

varmap = new BMap.Map("l-map");          // 創(chuàng)建地圖實例   

varpoint = new BMap.Point(116.403694,39.927552);  // 創(chuàng)建點坐標   

map.centerAndZoom(point, 15);                 // 初始化地圖,設(shè)置中心點坐標和地圖級別   

varcustomLayer=new BMap.CustomLayer({   

    geotableId: 30960,//換成你自己的數(shù)據(jù)表geotableId   

    q: '', //檢索關(guān)鍵字   

    tags: '', //空格分隔的多字符串   

    filter: '' //過濾條件   

});   

map.addTileLayer(customLayer);   

customLayer.addEventListener('hotspotclick',callback)

如果數(shù)據(jù)不多,可以用這個例子,多個點示例,不難,這里就不贅述了,效果還不錯,但是要注意性能問題,點太多會造成瀏覽器卡頓甚至卡死

image

第三種方法,就是地圖無憂,如果你不想理睬上面的那些代碼,那么,地圖無憂可以暫時解決一下你的問題,不過問題就是他不免費,試用是七天。不過他的便利之處就是他只用你上傳數(shù)據(jù)文件(支持Excel和csv),樣式等也可以自己隨意設(shè)置,很方便。送上網(wǎng)址地圖無憂,效果也很好

image.png

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Matplotlib 入門教程 來源:Introduction to Matplotlib and basic l...
    布客飛龍閱讀 32,268評論 5 162
  • 1、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明AI閱讀 16,206評論 3 119
  • 阿顏是我在微博上認識的一個朋友,說起兩個人的相識,現(xiàn)在想想,倒也是緣分。很狗血的劇情,去年6月初,剛剛失戀的我,只...
    后來與其閱讀 2,459評論 1 1
  • 瀟湘梨語閱讀 197評論 0 0
  • “喂,你相信神嗎?” 這個時代的人們倡導相信科學 所以他們不相信有“神”這種東西 一切都是由科學主導的 “據(jù)說神是...
    飛飛寺閱讀 321評論 0 1

友情鏈接更多精彩內(nèi)容