1. 程式人生 > >使用folium對地理資訊視覺化

使用folium對地理資訊視覺化

    Hi,我是老鼠屎。最近在做地理資訊視覺化進度基本為龜速。但是探索的過程中發現了folium神器,在這裡進行一些整理。

    Folium可以讓你用Python強大生態系統來處理資料,然後用Leaflet地圖來展示。Folium內建一些來自OpenStreetMap、MapQuest Open、MapQuest Open Aerial、Mapbox和Stamen的地圖元件(tilesets),並且支援用Mapbox或者Cloudmade API keys來自定義地圖元件。Folium支援GeoJSON和TopJSON疊加(overlays),繫結資料來創造一個分級統計圖(Choropleth map)。

 1 安裝

    關於folium的安裝,直接pip install即可。然而這裡需要注意的是,folium的安裝依賴於branca、jinja2、requests和six等庫。具體可以參考一下下圖。

2 使用

2.1 關於地圖的顯示

    根據其官方demo,我們可以先建立一個非常基本的地圖看一下效果。

import folium
m = folium.Map(location=[45.5236, -122.6750])

    location是地圖中心的位置。然而當我們想在jupyter notebook裡面展示地圖時,卻無法顯示。

     這裡老鼠屎的解決方案是:先把地圖儲存為html的格式,再通過webbrowser將其開啟。

import folium
import webbrowser

m = folium.Map(location=[45.5236, -122.6750])
m.save("1.html")
webbrowser.open("1.html")

    之後就可以在網頁上顯示地圖。

 

 2.2 地圖型別的載入

    預設的地圖型別是OpenStreetMap,當然,其他型別的地圖(Stamen Terrain,Stamen Toner,Mapbox Bright,Mapbox Control Room等)也是可以使用的。通過tiles引數即可進行選擇。

import folium
import webbrowser

m = folium.Map(location=[45.5236, -122.6750],tiles='Stamen Toner',zoom_start=13)
m.save("1.html")
webbrowser.open("1.html")

    這裡加了zoom_start引數,表示地圖的初始縮放級別。載入後的地圖如下所示。

2.3 在地圖上新增標記

    我們通過folium.Marker()方法,建立了一個簡單的標記小部件,並通過add_to()將定義好的部件施加於先前建立的Map物件m之上。  

import folium
import webbrowser

m = folium.Map(location=[45.5236, -122.6750],zoom_start=13)
folium.Marker([45.488869,-122.571034], popup='<i>Mt. Hood Meadows</i>').add_to(m)
m.save("1.html")
webbrowser.open("1.html")

    這裡,location:同folium.Map()中的同名引數,用於確定標記部件的經緯位置;popup:str型或folium.Popup()物件輸入,用於控制標記部件的具體樣式(folium內部自建了許多樣式),預設為None,即不顯示部件;icon:folium.Icon()物件,用於設定popup定義的部件的具體顏色、圖示內容等。效果如下圖所示。

2.4 在地圖上畫線

import folium
import webbrowser

m = folium.Map(location=[100.0, 0.0],
              zoom_start=6,
              control_scale=True)

gj = folium.GeoJson(data={ "type": "MultiLineString",
  "coordinates": [
      [ [100.0, 0.0], [101.0, 1.0] ],
      [ [102.0, 2.0], [103.0, 3.0] ]
    ]
  })


gj.add_to(m)


m.save("1.html")
webbrowser.open("1.html")

     效果如下圖。

3 推薦資料