Ein bestimmtes Land mit Cartopy hervorheben

English Deutsch

In unseren vorherigen Beiträgen, z.B. Afrika-Karte mit Cartopy zeichnen, haben wir gezeigt, wie man eine Übersichtskarte eines gesamten Kontinents mit Cartopy zeichnet. Dieser Beitrag zeigt ein Beispiel, wie man ein bestimmtes Land auf dieser Karte hervorhebt. In diesem Beispiel heben wir Kenia hervor

Afrika-Karte mit Kenia in Limettengrün hervorgehoben mit CartopyDer allgemeine Ansatz ist:

  1. cartopy.io.shapereader.natural_earth verwenden, um Natural-Earth-Daten herunterzuladen, die die Form von Kenia enthalten
  2. In ein cartopy.feature.ShapelyFeature umwandeln
  3. Dieses Feature anzeigen

Kenias Natural-Earth-Form in Cartopy anzeigen

Zuerst erstellen wir einen Reader für die Natural-Earth-Daten. Cartopy lädt die Daten automatisch herunter, falls sie nicht zwischengespeichert sind.

highlight_kenya_reader.py
import cartopy.io.shapereader as shpreader

shpfilename = shpreader.natural_earth(resolution='110m',
                                      category='cultural',
                                      name='admin_0_countries')
reader = shpreader.Reader(shpfilename)

Nun kann Kenia nach Name aus den Datensätzen ausgewählt werden:

highlight_kenya_select.py
kenya = [country for country in reader.records() if country.attributes["NAME_LONG"] == "Kenya"][0]

Um diese Geometrie anzuzeigen, verwenden wir

highlight_kenya_draw.py
shape_feature = ShapelyFeature([kenya.geometry], ccrs.PlateCarree(), facecolor="lime", edgecolor='black', lw=1)
ax.add_feature(shape_feature)

Vollständiger Beispielcode

highlight_kenya_complete.py
import cartopy.crs as ccrs
import cartopy.feature as cf
from cartopy.feature import ShapelyFeature
from matplotlib import pyplot as plt

proj = ccrs.PlateCarree()
ax = plt.axes(projection=proj)
# Nur Afrika anzeigen
ax.set_extent([-23, 55, -35, 40])
ax.stock_img()

ax.add_feature(cf.COASTLINE, lw=2)
# Abbildung vergrößern
plt.gcf().set_size_inches(20, 10)

# Natural-Earth-Daten lesen
import cartopy.io.shapereader as shpreader

shpfilename = shpreader.natural_earth(resolution='110m',
                                      category='cultural',
                                      name='admin_0_countries')
reader = shpreader.Reader(shpfilename)
kenya = [country for country in reader.records() if country.attributes["NAME_LONG"] == "Kenya"][0]

# Kenias Form anzeigen
shape_feature = ShapelyFeature([kenya.geometry], ccrs.PlateCarree(), facecolor="lime", edgecolor='black', lw=1)
ax.add_feature(shape_feature)

# Abbildung als SVG speichern
plt.savefig("Africa-Highlight-Kenya.svg")

Check out similar posts by category: Cartopy, Geography, Python