Zeichnen eines Kartenhintergrunds¶
Basemap enthält den GSHHG Küstenlinien-Datensatz sowie Datensätze für Flüsse, Staats- und Ländergrenzen von GMT. Diese Datensätze können verwendet werden, um Küstenlinien, Flüsse und politische Grenzen auf Karten mit verschiedenen Auflösungen zu zeichnen. Die relevanten Basemap-Methoden sind
drawcoastlines(): zeichnet Küstenlinien.fillcontinents(): färbt das Innere von Kontinenten (durch Ausfüllen der Küstenlinien-Polygone). Leider leistet die fillcontinents-Methode nicht immer das Richtige. Matplotlib versucht immer, die Innenseite eines Polygons auszufüllen. Unter bestimmten Umständen kann das Innere eines Küstenlinien-Polygons mehrdeutig sein, und die Außenseite wird anstelle der Innenseite gefüllt. In diesen Situationen ist die empfohlene Abhilfemaßnahme die Verwendung derdrawlsmask()Methode, um ein Bild mit unterschiedlichen Farben für Land- und Wassergebiete zu überlagern (siehe unten).drawcountries(): zeichnet Ländergrenzen.drawstates(): zeichnet Staatsgrenzen in Nordamerika.drawrivers(): zeichnet Flüsse.
Anstatt Küstenlinien und politische Grenzen zu zeichnen, kann ein Bild als Kartenhintergrund verwendet werden. Basemap bietet hierfür mehrere Optionen
drawlsmask(): zeichnet eine hochauflösende Land-Meer-Maske als Bild, wobei Land- und Ozeanfarben angegeben werden. Die Land-Meer-Maske wird aus den GSHHS-Küstenliniendaten abgeleitet, und es gibt mehrere Optionen für Küstenlinien und Pixelgrößen zur Auswahl.bluemarble(): zeichnet ein NASA Blue Marble Bild als Kartenhintergrund.shadedrelief(): zeichnet ein Schattierungsrelief-Bild als Kartenhintergrund.etopo(): zeichnet ein etopo Relief-Bild als Kartenhintergrund.warpimage(): verwendet ein beliebiges Bild als Kartenhintergrund. Das Bild muss global sein und die Welt in Längen- und Breitengraden vom internationalen Datum entlang nach Osten und vom Südpol nach Norden abdecken.
Hier sind Beispiele für die verschiedenen Möglichkeiten, einen Kartenhintergrund zu zeichnen.
Zeichnet Küstenlinien und füllt Land- und Meeresgebiete.
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
# setup Lambert Conformal basemap.
m = Basemap(width=12000000,height=9000000,projection='lcc',
resolution='c',lat_1=45.,lat_2=55,lat_0=50,lon_0=-107.)
# draw coastlines.
m.drawcoastlines()
# draw a boundary around the map, fill the background.
# this background will end up being the ocean color, since
# the continents will be drawn on top.
m.drawmapboundary(fill_color='aqua')
# fill continents, set lake color same as ocean color.
m.fillcontinents(color='coral',lake_color='aqua')
plt.show()
Zeichnet eine Land-Meer-Maske als Bild.
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
# setup Lambert Conformal basemap.
# set resolution=None to skip processing of boundary datasets.
m = Basemap(width=12000000,height=9000000,projection='lcc',
resolution=None,lat_1=45.,lat_2=55,lat_0=50,lon_0=-107.)
# draw a land-sea mask for a map background.
# lakes=True means plot inland lakes with ocean color.
m.drawlsmask(land_color='coral',ocean_color='aqua',lakes=True)
plt.show()
Zeichnet das NASA-Bild ‚Blue Marble‘.
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
# setup Lambert Conformal basemap.
# set resolution=None to skip processing of boundary datasets.
m = Basemap(width=12000000,height=9000000,projection='lcc',
resolution=None,lat_1=45.,lat_2=55,lat_0=50,lon_0=-107.)
m.bluemarble()
plt.show()
Zeichnet ein Schattierungsrelief-Bild.
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
# setup Lambert Conformal basemap.
# set resolution=None to skip processing of boundary datasets.
m = Basemap(width=12000000,height=9000000,projection='lcc',
resolution=None,lat_1=45.,lat_2=55,lat_0=50,lon_0=-107.)
m.shadedrelief()
plt.show()
Zeichnet ein ETOPO-Relief-Bild.
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
# setup Lambert Conformal basemap.
# set resolution=None to skip processing of boundary datasets.
m = Basemap(width=12000000,height=9000000,projection='lcc',
resolution=None,lat_1=45.,lat_2=55,lat_0=50,lon_0=-107.)
m.etopo()
plt.show()