减小Matplotlib Basemap大小
在一些运行中的和手动操作的Python脚本里,我每天使用matplotlib的Basemap生成成千上万的加州地图:
mp = Basemap(width=1284000,height=1164000,projection='lcc',lat_1=30.,lat_2=60,\
lat_0=37,lon_0=-120.5,resolution='c',rsphere=6370000.00)
# fill data: lats, lons, grid
cs = orb.pcolor(lons,lats,grid,cmap=cm.jet,norm=colors.LogNorm(),latlon=True)
mp.drawcounties()
不过,我每天都要浪费好几十个小时在加载这些覆盖整个世界的大地图上。我其实只需要加州的县,但我却把全世界的县都加载到内存里。我很喜欢这个库的灵活性,但它的速度实在太慢了。
- 我该如何更快地生成这些地图呢?
- 有没有办法只创建一个包含加州的matplotlib
Basemap
的裁剪版本? - 有没有更快的、不是matplotlib的方法来创建地理参考的图表?
1 个回答
3
我怎么才能更快地生成这些地图呢?
你现在已经在使用最低的分辨率(“c”)。你可以调整“area_thresh”这个参数,但我觉得这帮助不大。你可能需要改进一下你绘制数据的方式。
我能不能只创建一个包含加利福尼亚的裁剪版matplotlib Basemap?
你可以下载一个加利福尼亚的自定义地图,只绘制那部分。Basemap自带一些基本的世界地图,但你也可以使用其他来源的地图。你可以通过搜索“california shapefile”来轻松找到。使用mpl_toolkits.basemap中的“readshapefile”方法来加载它。
这个笔记本展示了如何使用readshapefile和另一种方法(pyshp模块)。
有没有更快的、不是matplotlib的方式来创建地理参考的图?
我听说过Vincent,评价不错,但我自己还没试过。