Ich habe ein Geopanda GeoDataFrame
mit Hunderten von Formen Polygon
und MultiPolygon
Geometrien. Die Polygone überlappen sich an vielen Stellen. Ich möchte eine neue Geometrie erstellen, die angibt, wie viele sich überlappen. Etwas wie das:
Hat jemand Ideen, wie man das angeht? Ich kann nicht mal einen Weg hinein sehen.
Schließlich möchte ich besonders die Polygone gewichten können, damit einige Polygone für sich genommen 2 wert sind. Dies mit shapely
dem Z-Feld von zu tun, könnte nett sein.
Übrigens: Ich bin an keine dieser Bibliotheken besonders gebunden, ich bin nur dort gelandet, wo ich gelandet bin. Die Koordinaten in diesen Geometrien sind eigentlich Pixelkoordinaten - ich stolpere dahin, ein Raster zu erstellen, um ein anderes Bild zu überlagern. Ich würde es vorziehen, meinen Footprint so klein wie möglich zu halten, da ich dieses Zeug auf Cloud-Servern usw. bereitstellen möchte, auf denen ich möglicherweise keine zufälligen Sachen installieren kann.
Antworten:
Kann vom Thema abweichen, da es sich um eine postgresql / postgis-Lösung handelt:
In postgres / postgis handelt es sich um eine einfache O (N ^ 2) -Abfrage, die auf Geopanda angewendet werden kann / könnte.
und definiert 5 Rechtecke:
Die Schnittmenge mit der Tabelle selbst:
zeigt, welche Bereiche sich überschneiden:
Auf dieser Basis können Sie die Anzahl für jedes ID-Objekt über die Gruppe nach Clausel aggregieren:
Das Ergebnis zeigt das gewünschte Muster.
quelle