Geodätische Auflösung / Genauigkeit / Glätte in Cartopy erhöhen
In unserem vorherigen Beitrag haben wir ausführlich gezeigt, wie man eine Geodäte in Cartopy zeichnet. Wie jedoch auf der resultierenden Karte zu sehen ist, ist die geodätische Linie in mehrere deutlich sichtbare Segmente unterteilt:
Um dies zu beheben, müssen wir die ursprüngliche Projektion des Plots ableiten (subclass). In diesem Beispiel leiten wir ccrs.Mollweide() ab:
import cartopy.crs as ccrs
class HighResMollweide(ccrs.Mollweide):
@property
def threshold(self): return 100.0Beachten, dass der Standard-Schwellenwert für die Mollweide-Projektion 100000.0 beträgt – dies kann mit print(ccrs.Mollweide().threshold) überprüft werden
Nun kann diese Projektion in plt.axes() verwendet werden:
ax = plt.axes(projection=HighResMollweide())Vollständiger Beispielcode
Dieser Code reproduziert das oben gezeigte hochauflösende geodätische Bild:
import cartopy.crs as ccrs
import cartopy.feature as cf
from matplotlib import pyplot as plt
class HighResMollweide(ccrs.Mollweide):
@property
def threshold(self): return 100.0
ax = plt.axes(projection=HighResMollweide())
ax.stock_img()
ax.add_feature(cf.BORDERS)
# Geodäte zwischen zwei Punkten hinzufügen
# Format: plot([lon1, lon2], [lat1, lat2])
plt.plot([-75, 77.23], [43, 28.61],
color='blue', linewidth=2,
transform=ccrs.Geodetic()
)
# Abbildung vergrößern
plt.gcf().set_size_inches(20, 10)
# Abbildung als SVG speichern
plt.savefig("Cartopy-Geodetic-HiRes.svg")Dank an @ajdawson auf StackOverflow für den ursprünglichen Hinweis zur Lösung dieses Problems!