Python Folium地理資訊視覺化案例

2021-09-24 17:15:25 字數 3764 閱讀 6993

在研究、挖掘gps位置資料、軌跡資料的過程中,地理資訊的視覺化展示是非常關鍵的一步。

folium是js上著名的地理資訊視覺化庫leaflet.js為python提供的介面,通過它,我們可以通過在python端編寫**操縱資料,來呼叫leaflet的相關功能,基於內建的osm或自行獲取的osm資源和地圖原件進行地理資訊內容的視覺化,以及製作優美的可互動地圖。[1]

folium documentation:

folium examples:

def density_map(self, all_data):

lat = np.array(all_data["lat"][0:len(all_data)])

lon = np.array(all_data["lon"][0:len(all_data)])

# duration is not essential

columns_list = all_data.columns()

if 'duration' in columns_list:

duration = np.array(all_data["duration"][0:len(all_data)], dtype=float)

new_data = [[lat[i], lon[i], duration[i]] for i in range(len(all_data))]

else:

new_data = [[lat[i], lon[i]] for i in range(len(all_data))]

density_map = folium.map(location=[all_data['lat'].mean(), all_data['lon'].mean()],

zoom_start=12,

attr=""

)heatmap(new_data, radius=20).add_to(density_map)

#blur=15, gradient=

return density_map

folium.map引數:modules.html#module-folium.map

location:tuple或list型別輸入,用於控制初始地圖中心點的座標,格式為(緯度,經度)或[緯度,經度],預設為none

width:int型或str型,int型時,傳入的是地圖寬度的畫素值;str型時,傳入的是地圖寬度的百分比,形式為'xx%'。預設為'100%'

height:控制地圖的高度,格式同width

tiles:str型,用於控制繪圖呼叫的地圖樣式,預設為'openstreetmap',也有一些其他的內建地圖樣式;也可以傳入'none'來繪製乙個沒有風格的樸素地圖,或傳入乙個url來使用其它的自選osm

可選的樣式包括:

」openstreetmap」

」stamen terrain」, 「stamen toner」, 「stamen watercolor」

」cartodb positron」, 「cartodb dark_matter」

」mapbox bright」, 「mapbox control room」 (limited zoom)

」cloudmade」 (must pass api key)

」mapbox」 (must pass api key)

max_zoom:int型,控制地圖可以放大程度的上限,預設為18

attr:str型,當在tiles中使用自選url內的osm時使用,用於給自選osm命名

control_scale:bool型,控制是否在地圖上新增比例尺,預設為false即不新增

no_touch:bool型,控制地圖是否禁止接受來自裝置的觸控事件譬如拖拽等,預設為false,即不禁止

weight=5, # 粗細

opacity=0.8, # 透明度

color='orange').add_to(line_map)

return line_map

folium.polyline 引數:

weight:route粗細

opacity:透明度

'#1b1135'] # 37種

for name, row in all_data.iterrows():

if int(row['classlabel']) == -1:

folium.circle(radius=20, location=[row["lat"], row["lon"]], popup="離群--停車點:".format(name),

color='black', fill=true, fill_color='black').add_to(plot_map)

else:

i = int(row['classlabel'])

folium.circle(radius=20, location=[row["lat"], row["lon"]], popup="類--停車點:".format(i, name),

參考資料

[1][2]色域表供參考  by 

微信小程式API 地理位置location

屬性 型別預設值 必填說明 latitude number 是緯度,範圍為 90 90,負數表示南緯。使用 gcj02 國測局座標系 longitude number 是經度,範圍為 180 180,負數表示西經。使用 gcj02 國測局座標系 scale number18否 縮放比例,範圍5 18...

ios地理編碼 反地理編碼

1.地理編碼 給定乙個名字 北京 獲得給定名字對應的位置 經緯度 2反地理編碼 給定義個位置 經緯度 獲得這個位置對應的詳細資訊 國家 省 街道 樓 import viewcontroller.h import inte ce viewcontroller end implementation vi...

python地理 Python教程 地理視覺化

matplotlib是python常用的資料繪製包,其繪圖功能強大 而basemap則是matplotlib的乙個子包,負責地圖繪製。本文簡單介紹如何利用該程式包繪製風向圖。具體操作如下 匯入命令 1 設定工作環境並匯入程式包 cd f dropbox python import numpy as ...