Как нарисовать png-osm-карту с координатами

Я хочу создать карту с несколькими заданными точками в Python. Для этого я хочу использовать Basemap из matplotlib. Это работает хорошо, но я не знаю, как получить правильную фоновую карту.

Как я могу импортировать карту OSM? Или мне следует использовать другой пакет сопоставления? Я просто хочу создать растровую карту и сохранить ее в формате png.


person teGuy    schedule 16.05.2012    source источник
comment
Дубликат: stackoverflow.com/questions/9482335/   -  person ChrisP    schedule 16.05.2012
comment
Но сообщение в блоге, указанное там, описывает только решение, которое заставляет меня объединять два изображения (карту и точки) с помощью фотошопа/гимпа, мне нужно полностью автоматизированное решение.   -  person teGuy    schedule 16.05.2012
comment
teGuy ... опубликуйте свое решение (как можно подробнее) в качестве ответа ... затем примите его. Более чем нормально отвечать на свои вопросы: блог .stackoverflow.com/2011/07/   -  person Yann    schedule 16.05.2012


Ответы (2)


Это не мое решение; Я вставил его из вопроса, потому что у автора вопроса недостаточно репутации, чтобы ответить на собственный вопрос.

Я нашел решение:

Использование imshow в базовой карте включает png в график в качестве фонового изображения. Чтобы получить правильное фоновое изображение, я использовал функцию экспорта OSM с границами, взятыми из конструктора базовой карты:

m = Basemap(llcrnrlon=7.4319, urcrnrlat=52.0632, urcrnrlon=7.848, llcrnrlat=51.8495,
        resolution='h', projection='merc')

im = plt.imread('background.png')
m.imshow(im, interpolation='lanczos', origin='upper')
person Ramchandra Apte    schedule 15.07.2012

Я нашел несколько доступных изображений базовой карты с тайлового сервера NASA GIBS. Вы можете использовать тот же метод для других тайловых серверов.

http://earthdata.nasa.gov/wiki/main/index.php/GIBS_Supported_Clients#Script-level_access_to_imagery

Thi использует GDAL gdal_translate в подоболочке Python:

import subprocess
import matplotlib.pyplot
import mpl_toolkits.basemap

l,u,r,d=(7.4319,52.0632,7.848,51.8495)

subprocess.call ('gdal_translate -of GTiff -outsize 400 400 -projwin {l} {u} {r} {d} TERRA.xml Background.tif'.format(l=l,u=u,r=r,d=d),shell=True )

im=matplotlib.pyplot.imread('Background.tif')

m = mpl_toolkits.basemap.Basemap(llcrnrlon=l, urcrnrlat=u, urcrnrlon=r, llcrnrlat=d,
    resolution='h', projection='merc')
m.imshow(im, interpolation='lanczos', origin='upper')

matplotlib.pyplot.show()

Для этого нужен файл TERRA.xml из приведенной выше ссылки, хотя вы также можете встроить XML.

person Dave X    schedule 14.09.2012