译自: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则更为常用。


推荐阅读:
相关文章