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。
使用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。
3 示例
以下是两张图3和4是使用Smopy实现的简易2011年杭州市晚高峰出租车行驶轨迹分布图。如果需要在Python中实现复杂的交互式地图操作,可以使用Folium。
在手机上阅读或分享本文请扫描以下二维码:
Comments