OnlineMapMaker logo

Symmetric Difference Tool : GeoJSON et Shapefile

Dessinez ou importez deux couches de polygones et ne conservez que les parties qui ne se chevauchent pas entre elles. Ouvrir en plein écran ↗

Rate this tool:
Advertisement
Loading map…
Besoin d'aide pour votre projet SIG ?Découvrir Nos Services

Qu'est-ce qu'une différence symétrique en SIG ?

La différence symétrique (aussi appelée XOR, ou ou exclusif) est une opération d'overlay vectoriel qui ne conserve que les parties de deux couches de polygones qui ne se chevauchent pas, en écartant entièrement la zone commune. Chaque fois que vous devez savoir ce qui a changé entre deux limites, qu'il s'agisse d'une ancienne ligne de zonage face à une nouvelle, ou de deux zones de couverture que vous voulez comparer, cet outil répond à la question. Il exécute l'intégralité du calcul localement dans votre navigateur : dessinez deux formes directement sur la carte, ou importez un fichier GeoJSON ou un Shapefile compressé, et il fonctionne comme un outil autonome de différence symétrique GeoJSON et Shapefile sans envoyer vos données où que ce soit. La carte elle-même se charge sans fond de carte par défaut, afin que l'outil démarre vite et léger ; activez un fond de carte depuis le panneau latéral uniquement si vous voulez un contexte de rues ou de satellite sous vos couches.

Styliser vos couches

Chaque couche, y compris le résultat, peut être restylée indépendamment, et le fond de carte lui-même est entièrement optionnel :

  • Sélecteur de couleur: Cliquez sur la pastille de couleur à côté de n'importe quelle couche dans le panneau latéral pour changer instantanément sa couleur de remplissage et de contour.
  • Bascule de visibilité: Décochez une couche pour la masquer sur la carte sans la supprimer, utile pour comparer la Couche A et la Couche B au résultat séparément.
  • Bascule du fond de carte: La carte se charge sans fond de carte par défaut afin que l'outil reste rapide et que l'attention reste sur vos formes. Cochez « Afficher le fond de carte » dans le panneau latéral à tout moment pour ajouter un fond de carte Rue ou Satellite sous vos couches, et désactivez-le tout aussi facilement.

Aucun de ces styles n'est enregistré en dehors de votre session, ils contrôlent uniquement l'apparence de la carte pendant que vous travaillez.

Gérer plusieurs couches

Le gestionnaire de couches du panneau latéral conserve dans une seule liste chaque couche de polygones que vous ajoutez, ainsi que chaque résultat de différence symétrique que vous générez. Vous pouvez exécuter l'outil plusieurs fois avec différentes paires de couches, garder tous les résultats sur la carte en même temps, et supprimer toute couche dont vous n'avez plus besoin sans affecter les autres, utile pour vérifier comment plusieurs limites candidates diffèrent chacune d'une couche de base.

Questions fréquentes

Puis-je utiliser plusieurs polygones par couche ?
Oui. Si une couche comporte plus d'un feature, ils sont d'abord fusionnés en une seule forme via une union booléenne, de sorte que la différence symétrique est calculée entre les deux couches prises comme des ensembles, et non feature par feature.
En quoi diffère-t-elle d'une différence classique (erase) ?
Une différence classique est unidirectionnelle : elle soustrait la Couche B de la Couche A et ne conserve que ce qui reste de A. La différence symétrique est bidirectionnelle : elle conserve la partie exclusive de A et la partie exclusive de B, afin que vous voyiez ce qui a changé des deux côtés, pas seulement d'un seul.
Mes données sont-elles téléversées quelque part ?
Non. Le dessin, la lecture de fichiers, l'étape de dissolution, les deux passes de différence, et le calcul final de surface se déroulent tous localement dans votre navigateur en JavaScript. Rien n'est envoyé à un serveur.
Quel algorithme calcule la différence symétrique, et est-il précis ?
L'outil exécute deux fois un algorithme de différence booléenne par balayage de ligne de type Martinez-Rueda, une fois pour A moins B et une fois pour B moins A, le même moteur qu'utilisent l'Outil de différence de polygones et l'Outil d'intersection de polygones de ce site. Il gère correctement les polygones concaves et les polygones à trous.
Comment trouver les parties de deux polygones qui ne se chevauchent pas ?
Dessinez ou importez deux couches de polygones, choisissez-les comme Couche A et Couche B dans cet outil, et cliquez sur « Calculer la différence symétrique ». La zone de chevauchement est entièrement écartée, et seules les deux parties non chevauchantes subsistent dans le résultat.
Pourquoi la carte démarre-t-elle sans fond de carte, et comment en activer un ?
La carte se charge sans tuiles de rue ou de satellite par défaut afin que l'outil s'ouvre vite et que l'attention reste sur vos polygones. Cochez la case « Afficher le fond de carte » dans le panneau latéral dès que vous avez besoin d'un contexte géographique, puis choisissez Rue ou Satellite une fois activé.
Qu'est-ce qu'une différence symétrique en SIG ?
La différence symétrique est une opération d'overlay vectoriel qui ne conserve que la zone appartenant à exactement une des deux couches de polygones, pas aux deux. Elle s'écrit A ⊕ B = (A ∪ B) − (A ∩ B) : tout ce qui se trouve dans l'une ou l'autre forme, moins ce qu'elles partagent.
Quel logiciel SIG possède un outil de différence symétrique intégré ?
PostGIS propose ST_SymDifference comme fonction SQL, QGIS a un algorithme « Différence symétrique » dans sa boîte à outils de traitement, ArcGIS Pro a un outil de géotraitement Différence symétrique, et Shapely en Python a une méthode .symmetric_difference(). Tous calculent le même résultat que cet outil.
Puis-je importer un GeoJSON ou un Shapefile, ou seulement dessiner ?
Les deux. Dessinez directement sur la carte, déposez un fichier .geojson, ou déposez un Shapefile compressé (.zip contenant .shp, .dbf et .shx). Les trois méthodes de saisie peuvent être combinées pour la Couche A et la Couche B.
Cet outil affiche-t-il aussi la zone de chevauchement, ou seulement les parties non chevauchantes ?
Seulement les parties non chevauchantes. La zone partagée et chevauchante est délibérément écartée, c'est tout l'intérêt d'une différence symétrique. Si vous avez besoin du chevauchement lui-même, l'Outil d'intersection de polygones de ce site calcule exactement cela.

Comment ajouter vos couches de polygones

Il existe deux façons d'apporter des polygones dans l'outil avant de calculer une différence symétrique, et les deux acceptent le GeoJSON ou un Shapefile compressé :

  • Dessiner sur la carte: Cliquez sur « Dessiner un polygone », cliquez sur la carte pour placer des sommets, puis double-cliquez, appuyez sur Entrée, ou cliquez sur Terminer pour fermer la forme. Répétez pour ajouter un second polygone.
  • Importer un fichier: Glissez-déposez un fichier .geojson ou un Shapefile compressé (.zip contenant .shp/.dbf/.shx) n'importe où sur la carte, ou utilisez le bouton Importer. Seuls les features de type Polygon et MultiPolygon sont lus ; les points et les lignes sont ignorés.

Une fois que vous avez au moins deux couches de polygones, choisissez l'une comme Couche A et l'autre comme Couche B dans le panneau latéral, puis cliquez sur « Calculer la différence symétrique » pour ne conserver que la zone où elles ne se chevauchent pas.

Advertisement

Cas d'usage réels

🗺️
Détection des changements de zonage et de limites
Chargez une ancienne limite de zonage comme Couche A et la nouvelle limite proposée comme Couche B pour voir précisément quelles zones ont été ajoutées et lesquelles ont été retirées dans un résultat combiné, plutôt que de comparer deux cartes à l'œil nu.
📡
Comparaison de couverture télécom
Comparez les polygones de couverture de deux opérateurs pour isoler les zones desservies par exactement un réseau et non par l'autre, les parties qui comptent le plus dans une analyse concurrentielle de couverture.
📐
Litiges de bornage et de limites de titre
Superposez une limite de propriété relevée par un géomètre à la limite enregistrée dans un acte pour isoler la bande exacte de terrain litigieux où les deux divergent.
🌊
Mises à jour des cartes de zones inondables
Comparez une ancienne limite de zone inondable de type FEMA à une version mise à jour pour mettre en évidence précisément quelles propriétés ont été ajoutées ou retirées de la zone à risque d'inondation.
🗳️
Redécoupage électoral et révision des limites
Chargez une limite de circonscription électorale actuelle et un redécoupage proposé pour voir précisément quelles zones, et quels électeurs, changeraient de circonscription.
🛰️
Détection satellite des changements d'occupation du sol
Comparez une couche de classification du sol d'une année à la même zone pour une année ultérieure afin d'isoler précisément quelles parcelles ont changé de classification, sans inspecter chaque polygone à la main.

Comment fonctionne l'algorithme de différence symétrique

La différence symétrique a une définition simple issue de la théorie des ensembles : c'est chaque point qui appartient au Polygone A ou au Polygone B, mais pas aux deux. Écrite sous forme de formule, A ⊕ B = (A ∪ B) − (A ∩ B), l'union des deux formes moins leur intersection. Il existe une seconde façon, équivalente, d'écrire la même opération, qui est en pratique plus facile à calculer de façon fiable : A ⊕ B = (A − B) ∪ (B − A), les parties de A dont B a été effacé, combinées aux parties de B dont A a été effacé. Cet outil utilise la seconde forme.

Ce choix compte, car calculer d'abord une union complète puis en soustraire une intersection signifie exécuter deux opérations booléennes d'overlay séparées l'une après l'autre, et toute erreur d'arrondi dans la première se propage dans la seconde. Exécuter à la place deux opérations de différence indépendantes, une pour A moins B et une pour B moins A, puis simplement placer les deux résultats dans la même couche de sortie, ne nécessite aucune géométrie intermédiaire partagée, et chaque moitié peut échouer indépendamment sans casser l'autre. Si un jeu de données réel comporte un anneau mal formé, cet outil renvoie quand même la moitié qui a réussi, étiquetée pour que vous sachiez laquelle est laquelle.

Le pipeline exécuté par cet outil

  1. Dissoudre chaque couche en entrée: Si une couche contient plus d'un feature, tous les polygones qu'elle contient sont d'abord fusionnés en une seule géométrie via une union booléenne, afin que la couche se comporte comme une seule forme plutôt que comme une liste de parties séparées.
  2. Calculer A moins B: La géométrie dissoute de la Couche A et celle de la Couche B sont transmises au même algorithme de différence booléenne par balayage de ligne qu'utilise l'Outil de différence de polygones de ce site, en ne conservant que la partie de A qui se trouve hors de B.
  3. Calculer B moins A: Le même algorithme s'exécute une seconde fois avec les couches inversées, en ne conservant que la partie de B qui se trouve hors de A.
  4. Étiqueter et combiner les deux moitiés: Chaque partie subsistante est étiquetée dans ses propriétés comme A uniquement ou B uniquement et placée dans une seule couche de sortie, afin que le résultat montre toujours précisément où les deux entrées diffèrent.
  5. Totaliser la surface exclusive: La surface de chaque feature de sortie est additionnée avec une formule de surface sphérique et affichée en hectares, kilomètres carrés et acres, pour obtenir un chiffre en plus d'une forme.

Chacune des deux passes de différence est elle-même un algorithme de découpage booléen par balayage de ligne de type Martinez-Rueda : il trie chaque extrémité d'arête de gauche à droite, balaie les données avec une ligne verticale, et classe chaque segment résultant comme intérieur ou extérieur à l'autre polygone à l'aide de règles d'enroulement, exactement le même moteur et les mêmes mathématiques qu'utilisent l'Outil d'intersection de polygones et l'Outil de différence de polygones de ce site. La différence symétrique n'a pas besoin d'un nouvel algorithme de découpage, il lui suffit d'appeler celui qui existe déjà deux fois, avec les opérandes inversés.

Les bibliothèques SIG derrière la différence symétrique

La différence symétrique est assez courante pour que la plupart des logiciels SIG la proposent comme un seul outil nommé, même si en interne elle est presque toujours construite à partir des mêmes primitives d'union et de différence que celles décrites sur cette page.

  • Turf.js (difference + union): Le moteur propre de cet outil. Turf.js n'a pas de fonction symmetricDifference unique, donc cet outil appelle deux fois @turf/difference et @turf/union pour dissoudre les couches multi-features, le tout en JavaScript pur directement dans votre onglet de navigateur.
  • PostGIS ST_SymDifference: L'extension spatiale de PostgreSQL propose ST_SymDifference comme fonction SQL unique, appuyée sur la bibliothèque GEOS, le même moteur C++ qui calcule ST_Intersection et ST_Difference.
  • QGIS Différence symétrique: La boîte à outils de traitement de QGIS possède un algorithme dédié « Différence symétrique » sous Overlay vectoriel, qui appelle lui aussi GEOS sous l'interface.
  • ArcGIS Différence symétrique: ArcGIS Pro d'Esri propose un outil de géotraitement Différence symétrique avec le même comportement, deux couches en entrée, un XOR en sortie, mais implémenté avec le moteur géométrique propre d'Esri plutôt que GEOS.
  • Shapely (symmetric_difference): La bibliothèque Python Shapely expose une méthode .symmetric_difference() directement sur ses objets géométriques, qui, comme presque tout dans Shapely, délègue en interne à GEOS.

Les cinq outils s'accordent sur les mêmes mathématiques sous-jacentes, puisque la différence symétrique n'a qu'une seule réponse correcte pour une paire de géométries donnée. La différence pratique, comme pour les autres outils d'overlay de ce site, réside dans l'endroit où s'exécute le calcul : les outils basés sur GEOS nécessitent PostgreSQL, QGIS ou un environnement Python installé, tandis que le moteur Turf.js de cet outil fonctionne comme un chercheur de XOR de polygones directement sur votre appareil, si bien qu'aucun fichier n'est jamais téléversé où que ce soit.

Étape par étape : trouver une différence symétrique

Carte vide de l'outil de différence symétrique sans fond de carte chargé, montrant les boutons dessiner, importer et polygone d'exemple avant l'ajout de toute couche
1
Étape 1: Ouvrez l'outil et ajoutez votre première couche
L'outil vide démarre sans fond de carte : dessinez un polygone, importez un fichier, ou cliquez sur Polygones d'exemple.
Deux couches de polygones d'exemple qui se chevauchent sur un fond simple sans fond de carte, avec la liste des couches visible dans le panneau latéral
2
Étape 2: Ajoutez une seconde couche qui se chevauche
Deux couches chargées, toujours sans fond de carte. La Couche A et la Couche B sont déjà choisies pour vous.
Gros plan du panneau latéral montrant les sélecteurs déroulants Couche A et Couche B et le bouton Calculer la différence symétrique
3
Étape 3: Choisissez la Couche A et la Couche B
Confirmez la Couche A et la Couche B, puis cliquez sur Calculer la différence symétrique pour exécuter l'overlay.
La différence symétrique calculée affichée comme deux formes distinctes mises en évidence sur la carte avec un encart de surface totale dans le panneau latéral, fond de carte désormais activé
4
Étape 4: Examinez le résultat non chevauchant
Le résultat : les surfaces exactes qui ne se chevauchent pas, plus leur taille combinée. Un fond de carte a été activé ici pour le contexte.
Panneau du gestionnaire de couches listant la Couche A, la Couche B et la couche de différence symétrique avec des contrôles d'export et de téléchargement
5
Étape 5: Exportez la couche de résultat
Exportez le résultat seul, ou les trois couches ensemble, au format GeoJSON.
Advertisement

Exporter vos résultats

Chaque couche peut être exportée indépendamment, ou vous pouvez tout exporter en une fois :

  • Export d'une seule couche: L'icône de téléchargement à côté de n'importe quelle couche exporte uniquement les features de cette couche sous forme de fichier .geojson autonome.
  • Tout exporter: Le bouton « Télécharger toutes les couches » combine la Couche A, la Couche B et le résultat de la différence symétrique en une seule FeatureCollection GeoJSON, en étiquetant chaque feature avec la couche dont il provient.
  • Format GeoJSON: Les fichiers de sortie sont du GeoJSON standard conforme à la RFC 7946, qui s'ouvre directement dans QGIS, ArcGIS, Google Earth, Mapbox et pratiquement tout autre outil SIG.

Comme la sortie est du GeoJSON pur, elle se réimporte proprement dans ce même outil plus tard, ou dans n'importe quel flux GeoJSON ou Shapefile que vous utilisez ensuite dans un logiciel SIG de bureau.

Advertisement

Outils de géotraitement associés

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.

Muhammad Gulraiz Khan, expert GIS et fondateur de KONAKTIVE et OnlineMapMaker.com

À Propos de l’Auteur

Muhammad Gulraiz Khan

Expert et Consultant GIS · Fondateur de KONAKTIVE

Muhammad Gulraiz Khan est un expert GIS avec plus d’une décennie d’expérience professionnelle dans la fourniture de solutions géospatiales pour le secteur de l’énergie, notamment des projets pour la Banque mondiale, la Société financière internationale (IFC) et l’USAID. Il a créé OnlineMapMaker.com pour rendre les outils de cartographie professionnels gratuits et accessibles à tous.

Advertisement