Shapefile-Daten in Cartopy darstellen
English
Deutsch
Um Shapefile-Daten in Cartopy anzuzeigen, kann zuerst das Paket cartopy.io.shapereader verwendet werden, um die Shape-Daten zu lesen, und dann die anzuzeigende Geometrie in ein cartopy.feature.ShapelyFeature umgewandelt werden.
Im folgenden Beispiel lesen wir die Natural Earth-Datei ne_110m_admin_0_countries.shp und
Beachten, dass es einen einfacheren Weg gibt, Natural-Earth-Daten mit shpreader.natural_earth darzustellen – siehe Ein bestimmtes Land mit Cartopy hervorheben – und wir verwenden den Natural-Earth-Datensatz nur als Beispiel!
how-to-plot-shapefile-data-in-cartopy.py
import cartopy.io.shapereader as shpreader
# Shape-Datei lesen
reader = shpreader.Reader("ne_110m_admin_0_countries.shp")
# Nach bestimmtem Land filtern
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)Vollständiges Codebeispiel
cartopy_shapefile_complete_example.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)
import cartopy.io.shapereader as shpreader
# Shape-Datei lesen
reader = shpreader.Reader("ne_110m_admin_0_countries.shp")
# Nach bestimmtem Land filtern
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