Gibt es eine einfache Möglichkeit, Shapely-Objekte (dh Polygone und MultiPolygone) von einer Projektion in eine andere zu transformieren, ohne die Koordinaten von Hand verschieben und extrahieren zu müssen?
Eigentlich ist es mir egal, ob es sich an dieser Stelle um Shapely-Objekte handelt, ich möchte lediglich Features und eine Projektion übergeben und einen neu projizierten Satz von Features zurückerhalten.
Existiert diese Art von Funktionalität oder muss sie von Hand codiert werden?
python
coordinate-system
shapely
pyproj
Chris Fonnesbeck
quelle
quelle
fiona.transform
scheint zu haben, was du brauchst.Antworten:
Während shapely Koordinatensysteme nicht von Haus aus versteht,
shapely.ops.transform()
kann es das auchpyproj
. Wennpyproj.Proj
Sie beide Koordinatensysteme verstehen können, können Sie daraus eine Funktion machen, mit der Sie sich formschön verwandeln können.Aus den wohlgeformten Dokumenten :
quelle
itertools
Modul nicht verwenden möchten, können Sieproject = lambda x, y: pyproj.transform(pyproj.Proj(init='epsg:4326'), pyproj.Proj(init='epsg:26913'), x, y)
und dann tung2 = transform(project, g1)
.Transformer
. Siehe hier: pyproj4.github.io/pyproj/stable/gotchas.htmlDie Verwendung von GeoPandas ist zwar keine formschöne Lösung, ermöglicht jedoch eine relativ einfache Projektion. Wenn wir beispielsweise ein Shapefile in ESPG 4326 konvertieren möchten:
quelle
Wenn Sie pyproj2 verwenden, ist es viel einfacher, einen Transformer zu verwenden. Hier ist ein Beispiel:
Dies ist auch viel schneller, da pyproj die Projektion nicht für jeden Punkt neu erstellen muss.
quelle