es sieht aus wie eine dumme Frage, aber ich kann keine klare Antwort darauf finden: Welche Einheiten Geopandas / Formulare verwenden die Berechnung der Entfernung / Fläche zwischen Objekten?
Verwendet Shapely ein kartesisches Ebenensystem zur Berechnung von Geometrien (Abstand = euklidischer Abstand)
Shapely unterstützt keine Koordinatensystemtransformationen. Alle Operationen an zwei oder mehr Merkmalen setzen voraus, dass die Merkmale in derselben kartesischen Ebene vorhanden sind.
GeoPandas verwendet Fiona zum Lesen von Shapefiles (und anderen) und Pyproj für kartografische Transformationen.
Auf das Koordinatenreferenzsystem (CRS) der Vektordaten der Sammlung wird über ein schreibgeschütztes crs-Attribut zugegriffen.
import fiona
c = fiona.open("test.shp")
print c.crs['units']
m
Die Einheit zur Berechnung der Entfernung / Fläche zwischen Objekten mit Shapely ist in diesem Fall Meter.
Bei GeoPandas ist es genauso
import geopandas as gp
df = gp.GeoDataFrame.from_file('test.shp')
print df.crs['units']
m
Das heißt, wenn Sie mit einem crs.unit = Grad arbeiten (z. B. WGS84), sind alle Berechnungen falsch. Sie müssen zuerst Ihre Ebene neu projizieren ( Wie konvertiere ich die Eastings- und Northings-Projektion in Geopandas in WSG84? )
read_postgis
der resultierende Datenrahmen nur ein Attribut hatcrs
, das eine Zeichenfolge ist. Es hat kein Attributcrs['units']
; Der Versuch, dies anzufordern, führt zu einem TypeError.Welche Einheiten auch immer durch die Koordinaten in Ihren Geometrien dargestellt werden.
Formschöne Geometrien sind kartesisch und machen keine Annahmen darüber, Lon / Lat oder irgendetwas anderes zu sein.
quelle
Bei Geopandas hängt dies vom dem GeoDataFrame zugewiesenen Koordinatenreferenzsystem ab.
Für Shapely in den gleichen Einheiten der kartesischen Ebene unterstützt Shapely keine CRS- Quelle .
quelle