譯自:marknagelberg.com/overv

理解數據常常要基於地圖。因此,數據科學家應該要了解主要的地圖工具。

我以前就常用到地圖工具。如今,作為溫尼伯市的交通資產數據科學家,我更要好好了解各類地圖工具了。

可介紹的工具有很多。不過我的主要語言是Python,所以會從Python地圖生態說起,後面再介紹其他的地圖類軟體。


Python地圖工具

GeoPandas

GeoPandas是一個很棒的庫,從Python中提取地理數據非常簡單。

GeoPandas的核心庫就是大家熟知的Pandas。實際上,它一開始就是在pandas基礎上封裝的,擴展出類似於「GeoSeries」和」GeoDataFram」這樣的數據結構,自然也就有了類似Pandas的操作便利。

GeoPandas還封裝了地理數據分析

工具sharply和fiona,而地理繪圖功能則來與descartes和matplotlib。

在GeoPandas里讀取空間數據和在pandas里是一樣的,並且讀取常見的空間數據GeoJSON和ESRI文件都沒有問題。下載數據後,可以方便地製作投影、進行幾何操作、以地理形式聚合數據、在空間節點合併數據及採取地理編碼(基於地理編碼包geopy)。

Basemap

Basemap是一個基於matplotlib的地理畫圖庫,matplotlib可是python畫圖庫里的祖師爺了。和matplotlib相似,basemap很強大、靈活,而代價就是比較需要花時間倒騰。

注意了,2016年出了個協議,basemap將逐步被Cartopy取代。儘管basemap會被維護到2020年,Matplotlib官網已經說明了所有的開發力量將會集中到Cartopy,用戶應該轉而使用Cartopy了。所以如果你準備開始使用Basemap,那麼考慮使用……

Cartopy

用Cartopy可以實現幾何轉化和映射。和Basemap類似,Cartopy也是基於matplotplib來繪製地圖的。功能強大,幾乎什麼都可以實現,不過缺點也是類似的:畫一個好看的地圖頗為耗費時間,需要更多的代碼來搗鼓。

Geoplotlib

Geoplotlib也是另一個靈活、強大的Python地圖畫圖庫,能創建地圖、製作交互地圖和可視化動畫。我從未用過這個新庫,不過大家今後可以多關注。

gmplot

Gmplot可以方便地在谷歌地圖上繪製三角形、線條和點,交互與matplotlib相似,這樣就可以方便地在谷歌地圖上對數據可視化。畫圖種類包括填充的三角形,打點,散點圖,網格線和熱圖等,是快速簡易的互動式地圖可視化的好選擇。

Maplink

Maplink是用C++寫成、Python封裝的工具包,用於專業的地圖類應用。其目標是開發網路地圖應用。目前網路中大量的地圖應用如Open-StreetMap和MapBox等,都得益於Mapnik。

Folium

用Folium讓你不需要寫任何JavaScript代碼,就可以使用上流行的leaflet.js框架製作互動式地圖。這是一個我最近幾個月常常用到的好庫。

用Folium可以在地圖上畫點、線、三角形,創建地區分布圖、熱圖、分層地圖(用戶可以自行啟用或禁用),還可以創建地理數據彈出提示框(這些提示框還支持html,你可以把它們設計得很好看)。還有大量用戶可靈活創建和調整的標記和線條,可以用於地圖繪製。

總之,Foliium在用途多樣、靈活性和編程方便性之間,找到了一個很好的平衡。

Plotly

Plotly是一個公司,他們提供了許多在線的數據分析和可視化工具。Plotly的中心是幫助用戶方便地在網路上可視化。用戶可以通過Python或R代碼,實現基於強大的D3.js庫的可視化。大家可以通過他們的網站的展示感受一下多種地圖繪製選擇。

除了圖表和地圖工具,他們還有許多相關相關的產品值得了解。其中我特別有興趣的是Dash,你可以只用Python(不需要JavaScript或HTML),在Dash創建互動式的數據驅動網路應用(主要用來設計儀錶板)。我肯定會進一步了解Dash的功能,日後可能還會寫一篇相關的博客。

Bokeh

Bokeh是個專門用來創建用於瀏覽器展示的可視化的庫,其中包含了地理數據和地圖。和Dash相似,Bokeh可以創建互動式的網路應用,數據實時更新,並對用戶輸入作出反應(通過「Bokeh Server」實現)。


其他非Python地圖工具

顯然在非Python生態里也有許多地圖工具,我將簡單介紹其中的一些你可能想要關注的。請記得有許多工具沒有介紹,我熟悉的只是其中的一部分而已。

Kepler.gl

Kepler是一個基於網路的地理數據探索應用。這個工具很新,在2018年5月末才由Uber發布。你可以在它的網站上在線使用——這是一個用戶端的應用,沒有伺服器後端,所以所有數據都保存在你的本地機器/伺服器上。你也可以下載Kepler應用,在本地機器或伺服器上運行,或嵌入你已有的網路應用中。

這個工具有很多好的功能,你想要的互動式地圖應用功能幾乎一應俱全。網站上展示的例子都很好看,軟體也很易用(對於非編程用戶很友好)。

用戶指南里提供了很多Kepler的信息,它能做什麼,要怎麼做。我希望之後的一些項目可以用到這些工具。

Mapbox

Mapbox提供了一系列的地圖工具,幫助開發者創建需要地圖與空間數據分析的應用。它提供了從製作漂亮的網站地圖,到地理信息處理應用的多種功能。

這個概述介紹了Mapbox可以做些什麼,你可以製作個性化地圖,添加數據,創建網路和手機應用等。它還提供了額外的功能,如地理編碼、導向、空間分析等。儘管Mapbox需要付費,他們好像也有提供有限的免費API服務(價格在此)。

重型地理信息系統(GIS)應用

還有一類很重要的地圖工具就是成熟的GIS應用,如ArcGIS和QGIS。它們極其強大,地理數據分析師應該要對它們有所了解。ArcGIS很貴,不過是行業標準,所以值得了解。而免費和開源的QGIS則更為常用。


推薦閱讀:
相关文章