Blog der Heimetli Software AG

Punkte und Beschriftungen auf der Karte

Dieser Post setzt voraus dass Sie die Artikel ab einfache Karte mit geopandas gelesen haben.

import geopandas
import matplotlib.pyplot as plt
from shapely.geometry import Point

# Read the shapefile and related data
gdf = geopandas.read_file( "swissBOUNDARIES3D_1_3_TLM_KANTONSGEBIET.shp" )

# Plot the map
ax = gdf.plot()

# Definitions for the cities
cities = geopandas.GeoDataFrame(
        { "name": ["Regensdorf", "Bern", "Basel", "Brig", "Zürich"],
          "position": [Point(2677911.365,1254622.585),Point(2599859.275,1199633.166),
                       Point(2611328.186,1267660.365),Point(2642300.939,1129536.286),
                       Point(2682771.071,1247998.554)],
          "tx": [2677849,2599858,2617802,2640000,2685000],
          "ty": [1259315,1190000,1257500,1120000,1236000]
        }, geometry="position" ) ;

# Plot the points
cities.plot( ax=ax, color="red", markersize=5 )

# Name the points
cities.apply( lambda r: ax.annotate(r[0],xy=(r[2],r[3]),color="white",horizontalalignment="center"), axis=1 )

# Remove axes and margins
ax.margins( 0 )
plt.axis( "off" )

# Save plot as SVG
plt.savefig( "gpthird.svg", bbox_inches="tight", pad_inches=0.1 )

Um den Code zu vereinfachen habe ich die Koordinaten der Ortschaften in LV95 umgerechnet.

Wie Sie sehen ist ein DataFrame von Geopandas ein erweiterter Datenframe von Pandas. Der Parameter geometry gibt an in welcher Spalte sich die Geometrie befindet.

Karte der Schweiz mit benannten Markierungspunkten

Weiter geht es mit der Choroplethen-Karte: Cororplethenkarte mit Geopandas