2016-04-21 10 views
3

Ich habe eine Liste von wohlgeformten PolygoneMerging eine Liste von Polygonen zu Multipolygone

myList = [[<shapely.geometry.polygon.Polygon object at 0x110e09d90>], [<shapely.geometry.polygon.Polygon object at 0x110e09f90>], [<shapely.geometry.polygon.Polygon object at 0x110ec9150>]] 

Wie würde ich einen MultiPolygon aus ihnen zu schaffen? Ich kann meinen Kopf nicht drum herum bekommen

+0

Ihre Liste enthält mehrere Einzelelementlisten, die ein Polygon jedes . Ihre Frage weist darauf hin, dass Sie stattdessen eine Liste mit Polygonen erwarten. –

+0

@Pythonista cascaded_union erstellt ein Polygon aus einer Polygonliste (wie ich es hier geschrieben habe?) – Stophface

+2

Hier ist ein Beispiel für 'cascaded_union' Verwendung. Einfacher auf den Code zu sehen und zu sehen, ob es das ist, was Sie brauchen http://deparkes.co.uk/2015/02/28/how-to-merge-polygons-in-python/ – Pythonista

Antwort

2

Es sieht so aus, als ob Sie eine Liste von Listen haben (jeweils mit einem Element). Bevor Sie etwas tun, eine flache Liste von Geometrien machen:

myGeomList = [x[0] for x in myList] 

Es gibt tatsächlich ein paar Möglichkeiten, sie zu kombinieren. Am besten führt man eine kaskadierte Vereinigung in einer Liste von Geometrien durch, was zu unterschiedlichen Geometrietypen führen kann, z. B. MultiPolygon, aber nicht immer.

from shapely.ops import cascaded_union 
cu = cascaded_union(myGeomList) 

Oder man könnte die Liste MultiPolgyon() oder GeometryCollection() geben, aber diese könnten präsentieren Probleme (ungültig, Unfähigkeit Overlay ops zu verwenden, etc.)

+1

Große Antwort! Die direkte Übernahme von MultiPolgyon() führt nicht zu Fehlern, sondern zu fehlerhaften Ergebnissen. Getestet, wenn Polygone und Multipolygone zu neuen Multipolygonen kombiniert werden. –