2012-05-16 11 views
6

Chcę utworzyć mapę z kilkoma podanymi punktami w Pythonie. Do tego chcę użyć Basemap z matplotlib. Działa dobrze, ale nie wiem, jak uzyskać poprawną mapę tła.Jak narysować png-osm-map ze współrzędnymi

Jak mogę zaimportować mapę OSM? Czy powinienem użyć innego pakietu mapującego? Chcę tylko utworzyć mapę rastrową i zapisać ją jako png.

+0

Duplikat: http://stackoverflow.com/questions/9482335/draw-a-map-with-gps-markers-and-save-this-image-to-file/9485409#9485409 – ChrisP

+1

Ale blog jest powiązany opisuje tylko rozwiązanie, które zmusza mnie do połączenia dwóch obrazów (mapa i punkty) przez photoshop/gimp, potrzebuję pełnego zautomatyzowanego rozwiązania – teGuy

+0

teGuy ... umieść swoje rozwiązanie (z jak największą liczbą szczegółów) jako odpowiedzią ... następnie zaakceptuj to. Więcej niż dobrze, aby odpowiedzieć na własne pytania: http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/ – Yann

Odpowiedz

2

To nie jest moje rozwiązanie; Wkleiłem to pytanie, ponieważ pytający nie ma wystarczającej reputacji, aby odpowiedzieć na własne pytanie.

znalazłem rozwiązanie:

Korzystanie imshow ciągu bazowa zawiera png do działki jako obraz tła. W celu uzyskania odpowiedniego obrazu tła, użyłem export feature of OSM z granicami pobranych od konstruktora bazowa :

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') 
2

znalazłem jakąś dostępną bazowa obrazów z NASA GINB tileserver. Możliwe, że będziesz w stanie użyć tej samej metody dla innych serwerów plików.

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

Thi Używa gdal_translate gdal w podpowłoce Pythona:

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() 

To musi plik TERRA.xml z powyższego linku, choć można wbudować XML, jak również.