在Python中使用smopy在地图上画图

1 简介

在城市规划,交通规划,空间数据分析等相关领域中,很多时候我们需要把一些数据标注在地图上。在地图上标注每条道路的繁忙程度便是其中的一个例子。有很多GIS相关软件以及各种地图API可以实现这个功能,Smopy是一个通过OSM Tile Server获取指定区域内的OSM图像的简单Python包。使用Smopy可以很简单的在Python中实现在地图上作图。

2 使用

首先通过pip安装或者也可以在该项目的Github主页上直接下载安装:

pip install smopy

顺利安装后便可以开始使用,首先创建一个Map实例:

import smopy
hz = smopy.Map((30.0, 119.8, 30.55, 120.5),z=10)

其中需要输入的参数为(lat_min, lon_min, lat_max, lon_max),即区域的经纬度范围。z为缩放程度,如果不指定的话smopy会自动使用最大缩放程度。

接下来看一下获取到的图片:

hz.show_ipython()

得到下图1

Figure 1: 杭州市

使用to_pixels方法可以将特定经纬度转换成图上的像素位置,再结合matplotlib就可以方便的画图了。

x, y = hz.to_pixels(30.25, 120.2)
ax = hz.show_mpl(figsize=(8, 6))
ax.plot(x, y, 'or', ms=10, mew=2)

得到下图2

Figure 2: 杭州市(标注)

3 示例

以下是两张图34是使用Smopy实现的简易2011年杭州市晚高峰出租车行驶轨迹分布图。如果需要在Python中实现复杂的交互式地图操作,可以使用Folium

杭州市晚高峰出租车轨迹图
Figure 3: 杭州市晚高峰出租车轨迹图


杭州市晚高峰出租车轨迹热力图
Figure 4: 杭州市晚高峰出租车轨迹热力图

在手机上阅读或分享本文请扫描以下二维码:
By @Zhengyi Yang in
Tags : #python, #matplotlib, #OSM,

Comments

评论功能已关闭。