2017-08-08 30 views
0

我们正在为我们的活动制定标准化报告。我需要的最后一张图是显示活动的地理区域(有近100个地点)。使用OSM或其他shapefile和matplotloib绘制标准化报告地图

这些报告的输出为PDF信纸或A4尺寸

该报告是mplotlib人物,其中:

fig = plt.figure(figsize=(8.5, 11)) 

rect0 = 0, .7,, 0.18, 0.3 
rect1 = .3, .7, .18, .3 
rect2 = .8, .29, .2, .7 
rect3 = 0, 0, .8, .4 

ax1 = fig.add_axes(rect0) 
ax2 = fig.add_axes(rect1) 
ax3 = fig.add_axes(rect2) 
ax4 = fig.add_axes(rect3) 

的内容和布局轴线1-3定居和工作的伟大。然而ax4是地图内容显示的地方(理想情况)。

我希望做这样的事情:

map1 = Basemap(llcrnrlon=6.819087, llcrnrlat=46.368452, urcrnrlon=6.963978, 
       urcrnrlat=46.482906, resolution = 'h', projection='tmerc', 
       lon_0=6.88, lat_0=46.42, ax=4) 

map1.readshapefile('a valid shape file that works') #<----- this is the sticking point 


map1.draw(insert locator coordinates) 
plt.savefig(report to be inserted to document) 
plt.show() 

但是我还没有成功地获得了一个形状文件,从开放街道地图或地理信息系统的工作原理。

我也没有确定从openstreetmaps转换数据的正确过程。

我也没有确定从OSM/xml文档或转换后的GeoJSON文档中提取该信息的过程。

理想情况下,我想从openstreetmaps中获取边界框信息并直接生成地图。

获取与.readshapefile()调用一起使用的shapefile的过程是什么?

或者,我该如何将定义的地图变成Matplotlib轴?

回答

1

使用cartopy.io.img_tiles模块可能是最容易的,该模块将自动提取OSM磁贴以便与cartopy一起使用。使用预渲染的贴图可以避免处理和设计单个shapefile/XML的麻烦。

请参阅cartopy docs关于在cartopy内使用这些瓷砖。

+0

谢谢你会试试看。 –