¿Qué es una diferencia simétrica en SIG?
La diferencia simétrica (también llamada XOR, u O exclusivo) es una operación de overlay vectorial que conserva solo las partes de dos capas de polígonos que no se superponen, descartando por completo el área compartida. Cuando necesitas saber qué cambió entre dos límites, ya sea una línea de zonificación antigua frente a una nueva, o dos áreas de cobertura que quieres comparar, esta herramienta te da la respuesta. Ejecuta todo el cálculo de forma local en tu navegador: dibuja dos formas directamente en el mapa, o sube un archivo GeoJSON o un Shapefile comprimido, y funciona como una herramienta autónoma de diferencia simétrica de GeoJSON y Shapefile sin enviar tus datos a ningún lado. El mapa en sí se carga sin mapa base por defecto, para que la herramienta arranque rápido y liviana; activa un mapa base desde el panel lateral solo si quieres contexto de calles o satélite debajo de tus capas.
Cómo funciona el algoritmo de diferencia simétrica
La diferencia simétrica tiene una definición sencilla de teoría de conjuntos: es cada punto que pertenece al Polígono A o al Polígono B, pero no a ambos. Escrita como fórmula, A ⊕ B = (A ∪ B) − (A ∩ B), la unión de las dos formas menos su intersección. Existe una segunda forma equivalente de escribir la misma operación que en la práctica es más fácil de calcular de forma fiable: A ⊕ B = (A − B) ∪ (B − A), las partes de A sin B, combinadas con las partes de B sin A. Esta herramienta usa la segunda forma.
Esa elección importa porque calcular primero una unión completa y luego restarle una intersección significa ejecutar dos operaciones booleanas de overlay separadas una tras otra, y cualquier error de redondeo en la primera se propaga a la segunda. Ejecutar en cambio dos operaciones de diferencia independientes, una para A menos B y otra para B menos A, y simplemente colocar ambos resultados en la misma capa de salida, no necesita ninguna geometría intermedia compartida, y cada mitad puede fallar de forma independiente sin afectar a la otra. Si un conjunto de datos real tiene un anillo mal formado, esta herramienta igual devuelve la mitad que sí tuvo éxito, etiquetada para que sepas cuál es cuál.
El proceso que ejecuta esta herramienta
- Disolver cada capa de entrada: Si una capa tiene más de un feature, todos los polígonos que contiene se fusionan primero en una sola geometría mediante una unión booleana, de modo que la capa se comporta como una sola forma en lugar de una lista de partes separadas.
- Calcular A menos B: La geometría disuelta de la Capa A y la de la Capa B se pasan al mismo algoritmo de diferencia booleana por barrido de línea que usa la Herramienta de Diferencia de Polígonos de este sitio, conservando solo la parte de A que queda fuera de B.
- Calcular B menos A: El mismo algoritmo se ejecuta una segunda vez con las capas invertidas, conservando solo la parte de B que queda fuera de A.
- Etiquetar y combinar ambas mitades: Cada parte resultante se etiqueta en sus propiedades como solo A o solo B y se coloca en una sola capa de salida, de modo que el resultado siempre muestra exactamente dónde difieren las dos entradas.
- Sumar el área exclusiva: El área de cada feature de salida se suma con una fórmula de área esférica y se muestra en hectáreas, kilómetros cuadrados y acres, para que obtengas un número además de una forma.
Cada uno de los dos pasos de diferencia es en sí mismo un algoritmo de recorte booleano por barrido de línea al estilo Martinez-Rueda: ordena cada punto extremo de arista de izquierda a derecha, recorre los datos con una línea vertical y clasifica cada segmento resultante como dentro o fuera del otro polígono usando reglas de enrollamiento, exactamente el mismo motor y la misma matemática que usan la Herramienta de Intersección de Polígonos y la Herramienta de Diferencia de Polígonos de este sitio. La diferencia simétrica no necesita un algoritmo de recorte nuevo, solo necesita el existente llamado dos veces con los operandos intercambiados.
Exportar tus resultados
Cada capa se puede exportar de forma independiente, o puedes exportar todo a la vez:
- Exportar una sola capa: El icono de descarga junto a cualquier capa exporta solo los features de esa capa como un archivo .geojson independiente.
- Exportar todo: El botón "Descargar Todas las Capas" combina la Capa A, la Capa B y el resultado de la diferencia simétrica en una sola FeatureCollection de GeoJSON, etiquetando cada feature con la capa de la que proviene.
- Formato GeoJSON: Los archivos de salida son GeoJSON estándar según RFC 7946, que se abre directamente en QGIS, ArcGIS, Google Earth, Mapbox y prácticamente cualquier otra herramienta SIG.
Como la salida es GeoJSON plano, se vuelve a importar sin problemas en esta misma herramienta más adelante, o en cualquier flujo de trabajo de GeoJSON o Shapefile que uses después en software SIG de escritorio.
Las bibliotecas SIG detrás de la diferencia simétrica
La diferencia simétrica es lo bastante común como para que la mayoría del software SIG la ofrezca como una única herramienta con nombre propio, aunque por debajo casi siempre está construida con las mismas primitivas de unión y diferencia descritas en esta página.
- Turf.js (difference + union): El motor propio de esta herramienta. Turf.js no tiene una función única symmetricDifference, así que esta herramienta llama a @turf/difference dos veces y a @turf/union para disolver capas con múltiples features, todo como JavaScript puro directamente en tu pestaña del navegador.
- PostGIS ST_SymDifference: La extensión espacial de PostgreSQL ofrece ST_SymDifference como una única función SQL, respaldada por la biblioteca GEOS, el mismo motor en C++ que calcula ST_Intersection y ST_Difference.
- QGIS Diferencia Simétrica: La caja de herramientas de procesos de QGIS tiene un algoritmo dedicado "Diferencia simétrica" bajo Overlay de vectores, que también llama a GEOS por debajo de la interfaz.
- ArcGIS Diferencia Simétrica: ArcGIS Pro de Esri incluye una herramienta de geoprocesamiento Diferencia Simétrica con el mismo comportamiento de dos capas de entrada y obtención del XOR, implementada con el motor de geometría propio de Esri en lugar de GEOS.
- Shapely (symmetric_difference): La biblioteca Shapely de Python expone un método .symmetric_difference() directamente en sus objetos de geometría, que, como casi todo en Shapely, delega en GEOS por debajo.
Las cinco herramientas coinciden en la misma matemática subyacente, ya que la diferencia simétrica tiene exactamente una respuesta correcta para un par de geometrías dado. La diferencia práctica, como con las demás herramientas de overlay de este sitio, está en dónde se ejecuta el cálculo: las herramientas basadas en GEOS necesitan PostgreSQL, QGIS o un entorno Python instalado, mientras que el motor Turf.js de esta herramienta funciona como un buscador de XOR de polígonos directamente en tu dispositivo, así que ningún archivo se sube a ningún sitio.
Estilizando tus capas
Cada capa, incluido el resultado, se puede volver a estilizar de forma independiente, y el mapa base en sí es totalmente opcional:
- Selector de color: Haz clic en la muestra de color junto a cualquier capa en el panel lateral para cambiar al instante su color de relleno y de contorno.
- Alternar visibilidad: Desmarca una capa para ocultarla en el mapa sin eliminarla, útil para comparar la Capa A y la Capa B contra el resultado por separado.
- Alternar mapa base: El mapa se carga sin mapa base por defecto para que la herramienta se mantenga rápida y el foco siga en tus formas. Marca "Mostrar mapa base" en el panel lateral en cualquier momento para añadir un mapa base de Calle o Satélite debajo de tus capas, y desactívalo con la misma facilidad.
Nada de este estilo se guarda fuera de tu sesión, solo controla el aspecto del mapa mientras trabajas.
Preguntas frecuentes
Gestionar múltiples capas
El gestor de capas del panel lateral mantiene en una sola lista cada capa de polígono que añades, además de cada resultado de diferencia simétrica que generas. Puedes ejecutar la herramienta más de una vez con diferentes pares de capas, mantener todos los resultados en el mapa al mismo tiempo, y eliminar cualquier capa que ya no necesites sin afectar a las demás, útil para comprobar cómo varios límites candidatos difieren cada uno de una capa base.
Casos de uso reales
Cómo añadir tus capas de polígonos
Hay dos formas de llevar polígonos a la herramienta antes de calcular una diferencia simétrica, y ambas aceptan GeoJSON o un Shapefile comprimido:
- Dibujar en el mapa: Haz clic en "Dibujar Polígono", haz clic en el mapa para colocar vértices, luego haz doble clic, pulsa Enter o haz clic en Finalizar para cerrar la forma. Repite para añadir un segundo polígono.
- Subir un archivo: Arrastra y suelta un archivo .geojson o un Shapefile comprimido (.zip con .shp/.dbf/.shx dentro) en cualquier parte del mapa, o usa el botón Subir. Solo se leen los features de tipo Polygon y MultiPolygon; los puntos y líneas se omiten.
Cuando tengas al menos dos capas de polígonos, elige una como Capa A y la otra como Capa B en el panel lateral, y luego haz clic en "Buscar Diferencia Simétrica" para conservar solo el área donde no se superponen.
Paso a paso: encontrar una diferencia simétrica





Herramientas de Geoprocesamiento Relacionadas
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.
