2014-05-20 10 views
5

Ich versuche, eine Reihe von Punkten auf einem Stadtplan zu zeichnen und habe Probleme, ein Paket zu finden, das gut funktioniert. Es scheint, dass Matplotlib Basemap nicht genügend Details für viele Punkte enthält, die einen Radius von 30 Meilen umfassen, z. Ich sehe keine Möglichkeit, Autobahnen und andere Unterscheidungsmerkmale in kleinem Maßstab hinzuzufügen.Gutes Python-Toolkit zum Zeichnen von Punkten auf einem Stadtplan?

Ich frage daher, ob Sie vorschlagen können, wie diese Art von Stadtplan Features zu Basemap hinzufügen oder ob es ein anderes Paket, das gut für 30-Meilen-Scale-Plots über eine Stadtkarte funktioniert. Danke für Ihre Hilfe!

Antwort

4

Basemap würde gut funktionieren, denke ich. Das Hinzufügen von Postleitzahlengrenzen und primären/sekundären Straßen (und vielen anderen Daten) ist kein Problem, wenn Sie die geographischen Shapefiles erhalten können. Hier ist ein Beispiel für die Ausgabe: enter image description here

Wenn Sie in Abbildung einen Platz in den USA interessiert sind, diese Seite hat frei Shape-Dateien: http://www.landsat.com/free-gis-data.html

I verwendet Texas Postleitzahl und Straßendaten (und eine Reihe von lat/lange Coords), um die obige Karte zu generieren.

Sie würden die Shape-Dateien wie folgt laden:

self.map = Basemap(projection='merc', lat_0=mlat, lon_0=mlon, resolution = 'l', area_thresh = 1.0, 
llcrnrlon=-num, llcrnrlat=num, 
urcrnrlon=-num, urcrnrlat=num) 

map.readshapefile('/home/person/zipfolder/rds/tl_2010_48_prisecroads', 'Streets',drawbounds = False) 

for shape in self.map.Streets: 
    xx, yy, = zip(*shape) 
    self.map.plot(xx, yy, linewidth = 1.5, color='green', alpha=.75) 
##Same for zip codes 
+0

Ist irgendetwas gibt, die mehr dynamisch funktioniert? Ich bearbeite viele verschiedene Regionen und kann daher nicht alle Karten laden, die ich benötige. – user3654387

+0

Sie könnten Pymaps/Google Maps verwenden. https://code.google.com/p/pymaps/wiki/PymapsHowto – Ryan

+0

Vielen Dank für diesen Vorschlag. Ich werde es überprüfen und über meine Fortschritte berichten. – user3654387