Matplotlib底图读取shapefile非常慢

时间:2016-02-08 17:40:24

标签: python matplotlib matplotlib-basemap

我正在尝试绘制一个简单的“merc”'从形状文件边界映射。形状文件ne_10m_admin_0_countries_lakes.shp的总大小仅为8mb。来自GFS数据的简单mslp曲面图大约花了28秒,我认为太多了。经过调查,我发现它是读取形状文件消耗大约10秒。用于演示该问题的简单代码如下所示: -

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap


south = 0
north = 5
west = 70
east = 85

m = Basemap(projection='merc', llcrnrlat=south, urcrnrlat=north,
        llcrnrlon=west, urcrnrlon=east, resolution='c')
m.readshapefile('data/gis-data/world_countries/'
    'ne_10m_admin_0_countries_lakes', 'ne_10m_admin_0_countries_lakes', linewidth=0.7)

plt.savefig('map.png')

为了显示我面临的问题,我已经运行了上述代码,并且没有注释形状文件的路径。以下是从形状文件中读取脚本后的时间: -

$ time python test.py 
real    0m18.234s
user    0m17.832s
sys 0m1.020s

这是没有读取形状文件的结果: -

$ time python test.py 
real    0m2.506s
user    0m2.360s
sys 0m0.324s

有没有办法快速读取形状文件?这个问题有什么解决方案/技巧吗?

1 个答案:

答案 0 :(得分:0)

我也会把这个问题放到地理信息系统中,有些人可以帮助你。如果底图很慢,您是否尝试过cartopy,我在matplotlib网站上看到了这一点,请参阅http://matplotlib.org/1.4.1/mpl_toolkits/index.html