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
cartopy.io.shapereader.natural_earthverwenden, um Natural-Earth-Daten herunterzuladen, die die Form von Kenia enthalten- In ein
cartopy.feature.ShapelyFeatureumwandeln - 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")If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow