Я пытаюсь построить простую карту «merc» с границей из файла формы. Общий размер шейп-файла ne_10m_admin_0_countries_lakes.shp
составляет всего 8 МБ. Простой график поверхности mslp из данных GFS занял около 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
Есть ли способ быстро прочитать файл формы? Есть ли какое-нибудь решение/хитрость для этой проблемы?