Was ist eine symmetrische Differenz in GIS?
Die symmetrische Differenz (auch XOR oder exklusives Oder genannt) ist eine Vektor-Overlay-Operation, die nur die Teile zweier Polygon-Layer behält, die sich nicht überlappen, und die gemeinsame Fläche vollständig verwirft. Überall dort, wo Sie herausfinden müssen, was sich zwischen zwei Grenzen geändert hat, sei es eine alte Zonierungslinie gegenüber einer neuen oder zwei Abdeckungsgebiete, die Sie vergleichen möchten, liefert dieses Tool die Antwort. Es führt die gesamte Berechnung lokal in Ihrem Browser aus: Zeichnen Sie zwei Formen direkt auf der Karte oder laden Sie eine GeoJSON-Datei oder ein gezipptes Shapefile hoch, und es arbeitet als eigenständiges GeoJSON- und Shapefile-Symmetric-Difference-Tool, ohne Ihre Daten irgendwohin zu senden. Die Karte selbst lädt standardmäßig ohne Basiskarte, damit das Tool schnell und schlank startet. Schalten Sie eine Basiskarte in der Seitenleiste nur dann ein, wenn Sie Straßen- oder Satellitenkontext unter Ihren Layern haben möchten.
Häufig gestellte Fragen
Praxisbeispiele
Schritt für Schritt: Eine symmetrische Differenz finden





Die GIS-Bibliotheken hinter Symmetric Difference
Die symmetrische Differenz ist so verbreitet, dass die meiste GIS-Software sie als einzelnes benanntes Werkzeug anbietet, obwohl sie im Hintergrund fast immer aus denselben Vereinigungs- und Differenz-Grundfunktionen aufgebaut ist, die auf dieser Seite gerade beschrieben wurden.
- Turf.js (difference + union): Die eigene Engine dieses Tools. Turf.js hat keine einzelne symmetricDifference-Funktion, daher ruft dieses Tool @turf/difference zweimal und @turf/union zum Auflösen mehrteiliger Layer auf, alles als reines JavaScript direkt in Ihrem Browser-Tab.
- PostGIS ST_SymDifference: Die räumliche Erweiterung von PostgreSQL bietet ST_SymDifference als einzelne SQL-Funktion, die auf der GEOS-Bibliothek basiert, derselben C++-Engine, die auch ST_Intersection und ST_Difference berechnet.
- QGIS Symmetrische Differenz: Die Processing-Toolbox von QGIS enthält unter Vektor-Overlay einen eigenen Algorithmus "Symmetrische Differenz", der ebenfalls unter der Oberfläche GEOS aufruft.
- ArcGIS Symmetrische Differenz: Esris ArcGIS Pro bietet ein Symmetrische-Differenz-Geoverarbeitungswerkzeug mit demselben Verhalten, zwei Layer als Eingabe, das XOR als Ergebnis, allerdings implementiert mit Esris eigener Geometrie-Engine statt GEOS.
- Shapely (symmetric_difference): Pythons Shapely-Bibliothek stellt eine .symmetric_difference()-Methode direkt an ihren Geometrieobjekten bereit, die wie fast alles in Shapely intern an GEOS delegiert.
Alle fünf Werkzeuge stimmen in derselben zugrunde liegenden Mathematik überein, denn die symmetrische Differenz hat für ein gegebenes Geometriepaar genau ein richtiges Ergebnis. Der praktische Unterschied liegt, wie bei den anderen Overlay-Tools dieser Website, darin, wo die Berechnung läuft: GEOS-basierte Werkzeuge benötigen PostgreSQL, QGIS oder eine Python-Umgebung, während die Turf.js-Engine dieses Tools als Polygon-XOR-Finder direkt auf Ihrem Gerät läuft, sodass keine Datei irgendwohin hochgeladen wird.
Ihre Ergebnisse exportieren
Jeder Layer kann einzeln exportiert werden, oder Sie exportieren alles auf einmal:
- Export eines einzelnen Layers: Das Download-Symbol neben einem Layer exportiert nur dessen Features als eigenständige .geojson-Datei.
- Alles exportieren: Die Schaltfläche "Alle Layer herunterladen" kombiniert Layer A, Layer B und das Symmetric-Difference-Ergebnis in einer einzigen GeoJSON-FeatureCollection und kennzeichnet jedes Feature mit seinem Herkunfts-Layer.
- GeoJSON-Format: Die Ausgabedateien sind Standard-GeoJSON nach RFC 7946, das direkt in QGIS, ArcGIS, Google Earth, Mapbox und praktisch jedem anderen GIS-Werkzeug geöffnet werden kann.
Da die Ausgabe reines GeoJSON ist, lässt sie sich später problemlos wieder in dieses Tool oder in jeden anderen GeoJSON- oder Shapefile-Workflow einer Desktop-GIS-Software importieren.
Mehrere Layer verwalten
Der Layer-Manager in der Seitenleiste sammelt jeden hinzugefügten Polygon-Layer sowie jedes erzeugte Symmetric-Difference-Ergebnis in einer Liste. Sie können das Tool mehrmals mit unterschiedlichen Layer-Paaren ausführen, alle Ergebnisse gleichzeitig auf der Karte behalten und jeden nicht mehr benötigten Layer löschen, ohne die anderen zu beeinflussen, nützlich, um zu prüfen, wie sich mehrere Kandidatengrenzen jeweils von einem Basis-Layer unterscheiden.
Ihre Layer stylen
Jeder Layer, einschließlich des Ergebnisses, kann unabhängig neu gestaltet werden, und die Basiskarte selbst ist vollständig optional:
- Farbauswahl: Klicken Sie auf das Farbfeld neben einem Layer in der Seitenleiste, um dessen Füll- und Umrissfarbe sofort zu ändern.
- Sichtbarkeit umschalten: Deaktivieren Sie einen Layer, um ihn auf der Karte auszublenden, ohne ihn zu löschen, nützlich, um Layer A und Layer B einzeln mit dem Ergebnis zu vergleichen.
- Basiskarte umschalten: Die Karte lädt standardmäßig ohne Basiskarte, damit das Tool schnell bleibt und der Fokus auf Ihren Formen liegt. Aktivieren Sie jederzeit "Basiskarte anzeigen" in der Seitenleiste, um eine Straßen- oder Satellitenkarte unter Ihren Layern hinzuzufügen, und schalten Sie sie ebenso einfach wieder aus.
Keine dieser Stileinstellungen wird außerhalb Ihrer Sitzung gespeichert, sie steuern nur, wie die Karte während der Arbeit aussieht.
Wie der Symmetric-Difference-Algorithmus funktioniert
Die symmetrische Differenz hat eine einfache mengentheoretische Definition: Sie umfasst jeden Punkt, der zu Polygon A oder Polygon B gehört, aber nicht zu beiden. Als Formel geschrieben: A ⊕ B = (A ∪ B) − (A ∩ B), also die Vereinigung der beiden Formen minus ihrer Schnittmenge. Es gibt eine zweite, gleichwertige Schreibweise derselben Operation, die sich in der Praxis zuverlässiger berechnen lässt: A ⊕ B = (A − B) ∪ (B − A), also die Teile von A ohne B, kombiniert mit den Teilen von B ohne A. Dieses Tool verwendet die zweite Form.
Diese Wahl ist wichtig, denn erst eine vollständige Vereinigung zu berechnen und dann eine Schnittmenge davon abzuziehen bedeutet, zwei separate boolesche Overlay-Operationen hintereinander auszuführen, wobei sich jeder Rundungsfehler aus der ersten in die zweite fortpflanzt. Führt man stattdessen zwei unabhängige Differenz-Operationen aus, eine für A minus B und eine für B minus A, und legt beide Ergebnisse einfach in denselben Ausgabe-Layer, braucht es überhaupt keine gemeinsame Zwischengeometrie, und jede Hälfte kann unabhängig von der anderen fehlschlagen. Hat ein realer Datensatz einen fehlerhaft geformten Ring, liefert dieses Tool trotzdem die Hälfte zurück, die erfolgreich war, entsprechend gekennzeichnet.
Die Pipeline, die dieses Tool ausführt
- Jeden Eingabe-Layer auflösen: Enthält ein Layer mehr als ein Feature, werden zunächst alle Polygone darin mit einer booleschen Vereinigung zu einer einzigen Geometrie zusammengeführt, sodass der Layer wie eine einzige Form und nicht wie eine Liste getrennter Teile behandelt wird.
- A minus B berechnen: Die aufgelöste Geometrie von Layer A und die aufgelöste Geometrie von Layer B werden demselben Sweep-Line-Boolean-Differenz-Algorithmus übergeben, den auch das Polygon-Differenz-Tool dieser Website verwendet, wobei nur der Teil von A außerhalb von B erhalten bleibt.
- B minus A berechnen: Derselbe Algorithmus läuft ein zweites Mal mit vertauschten Layern und behält nur den Teil von B, der außerhalb von A liegt.
- Beide Hälften kennzeichnen und zusammenführen: Jeder verbleibende Teil wird in seinen Eigenschaften als Nur A oder Nur B gekennzeichnet und in einen gemeinsamen Ausgabe-Layer gelegt, sodass das Ergebnis immer genau zeigt, wo sich die beiden Eingaben unterscheiden.
- Die exklusive Fläche summieren: Die Fläche jedes Ausgabe-Features wird mit einer sphärischen Flächenformel summiert und in Hektar, Quadratkilometern und Acres angezeigt, sodass Sie neben der Form auch eine konkrete Zahl erhalten.
Jeder der beiden Differenz-Durchläufe ist für sich genommen ein boolescher Sweep-Line-Clipping-Algorithmus nach Martinez-Rueda-Art: Er sortiert jeden Kantenendpunkt von links nach rechts, führt eine vertikale Linie über die Daten und klassifiziert jedes entstehende Segment anhand von Winding-Regeln als innerhalb oder außerhalb des anderen Polygons, genau dieselbe Engine und dieselbe Mathematik, die auch das Polygon-Intersection-Tool und das Polygon-Differenz-Tool dieser Website verwenden. Für die symmetrische Differenz braucht es keinen neuen Clipping-Algorithmus, sondern nur den vorhandenen, zweimal mit vertauschten Operanden aufgerufen.
So fügen Sie Ihre Polygon-Layer hinzu
Es gibt zwei Wege, Polygone in das Tool zu bringen, bevor Sie eine symmetrische Differenz berechnen, und beide akzeptieren GeoJSON oder ein gezipptes Shapefile:
- Auf der Karte zeichnen: Klicken Sie auf "Polygon zeichnen", klicken Sie auf die Karte, um Ecken zu setzen, dann doppelklicken Sie, drücken Sie Enter oder klicken Sie auf Fertigstellen, um die Form zu schließen. Wiederholen Sie dies für ein zweites Polygon.
- Eine Datei hochladen: Ziehen Sie eine .geojson-Datei oder ein gezipptes Shapefile (.zip mit .shp/.dbf/.shx darin) irgendwo auf die Karte, oder verwenden Sie die Schaltfläche Hochladen. Es werden nur Polygon- und MultiPolygon-Features eingelesen, Punkte und Linien werden übersprungen.
Sobald Sie mindestens zwei Polygon-Layer haben, wählen Sie einen als Layer A und den anderen als Layer B in der Seitenleiste aus und klicken Sie auf "Symmetrische Differenz berechnen", um nur die nicht überlappende Fläche zu behalten.
Verwandte Geoverarbeitungswerkzeuge
Map tiles © OpenStreetMap contributors and CARTO, Esri (satellite, opt-in). Symmetric difference math powered by Turf.js. Shapefile parsing by shpjs. Map rendering by Leaflet. All drawing, file reading and calculation is local, no data is uploaded to any server.
