Ich habe zwei formschöne MultiPolygon-Instanzen (aus lon, lat punkten), die sich an verschiedenen Stellen schneiden. Ich versuche, eine Schleife zu durchlaufen, zu bestimmen, ob ein Schnittpunkt zwischen zwei Polygonen besteht, und ein neues Polygon zu erstellen, das diesen Schnittpunkt ausschließt. Aus dem angehängten Bild möchte ich grundsätzlich nicht, dass sich der rote Kreis mit der gelben Kontur überschneidet. Ich möchte, dass die Kante genau dort ist, wo die gelbe Kontur beginnt.Erstellen Sie ein neues formschönes Polygon, indem Sie den Schnittpunkt mit einem anderen Polygon subtrahieren
Ich habe versucht, die Anweisungen here zu folgen, aber es ändert meine Ausgabe überhaupt nicht, und ich möchte sie nicht zu einer Kaskadenverbindung zusammenführen. Ich erhalte keine Fehlermeldungen, aber wenn ich diese MultiPolygons zu einer KML-Datei hinzufüge (nur Rohtextmanipulation in Python, kein schickes Programm), werden sie immer noch als Kreise ohne irgendwelche Modifikationen angezeigt.
# multipol1 and multipol2 are my shapely MultiPolygons
from shapely.ops import cascaded_union
from itertools import combinations
from shapely.geometry import Polygon,MultiPolygon
outmulti = []
for pol in multipoly1:
for pol2 in multipoly2:
if pol.intersects(pol2)==True:
# If they intersect, create a new polygon that is
# essentially pol minus the intersection
intersection = pol.intersection(pol2)
nonoverlap = pol.difference(intersection)
outmulti.append(nonoverlap)
else:
# Otherwise, just keep the initial polygon as it is.
outmulti.append(pol)
finalpol = MultiPolygon(outmulti)
Vielen Dank, das hat geholfen! Ich erkannte, dass der Fehler teilweise darauf zurückzuführen war, dass ich später in meinem Code eine andere Schleife eingerichtet hatte ... Ups. – edub
Froh, dass Sie Ihr Ergebnis erhalten haben! – mgc