Angesichts einer geopandasGeoDataFrameReihe von Polygonen möchte ich die Fläche der einzelnen Elemente in meiner Liste in km² anzeigen.
Dies ist ein ziemlich häufiges Problem, und die in der Vergangenheit übliche Lösung bestand darin, shapelyund pyprojdirekt zu verwenden (z. B. hier und hier ).
Gibt es eine Möglichkeit, dies in rein zu tun geopandas?
Wenn die crs des GeoDataFrame bekannt sind (EPSG: 4326 unit = degree, hier), benötigen Sie weder Shapely noch Pyproj in Ihrem Skript, da GeoPandas sie verwendet.
import geopandas as gpd
test = gpd.read_file("test_wgs84.shp")print test.crs
test.head(2)
Kopieren Sie nun Ihren GeoDataFrame und ändern Sie die Projektion in ein kartesisches System (EPSG: 3857, Einheit = m wie in der Antwort von ResMar)
Ihr Text ist epsg:3857, aber Ihr Code ist epsg:3395, welcher der beiden ist korrekt?
Aleksey Bilogur
4
Die .to_crsFunktion wird pyprojtrotzdem weitergereicht. Ein gutes Beispiel für eine flächengleiche Projektion: proj4.org/projections/cea.html , die wie folgt übergeben werden kann:.to_crs({'proj':'cea'})
Swier
Zumindest für die Shapefiles der US-Volkszählungsdaten kann ich bestätigen, {'proj':'cea'}dass die nächstgelegenen Flächenschätzungen erstellt werden.
Dadurch wird die Geometrie in eine flächengleiche Projektion konvertiert, die Fläche abgerufen shapely(zurückgegeben in m ^ 2) und auf km ^ 2 abgebildet (dieser letzte Schritt ist optional).
epsg:3857
, aber Ihr Code istepsg:3395
, welcher der beiden ist korrekt?.to_crs
Funktion wirdpyproj
trotzdem weitergereicht. Ein gutes Beispiel für eine flächengleiche Projektion: proj4.org/projections/cea.html , die wie folgt übergeben werden kann:.to_crs({'proj':'cea'})
{'proj':'cea'}
dass die nächstgelegenen Flächenschätzungen erstellt werden.Ich glaube ja Folgendes sollte funktionieren:
Dadurch wird die Geometrie in eine flächengleiche Projektion konvertiert, die Fläche abgerufen
shapely
(zurückgegeben in m ^ 2) und auf km ^ 2 abgebildet (dieser letzte Schritt ist optional).quelle
epsg:3395
CRS des Gens angepasst. Vielen Dank.