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 der drawlsmask() 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.

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

(Quellcode)

../_images/background1.png
  1. 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()

(Quellcode)

../_images/background2.png
  1. 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()

(Quellcode)

../_images/background3.png
  1. 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()

(Quellcode)

../_images/background4.png
  1. 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()

(Quellcode)

../_images/background5.png