OnlineMapMaker logo

Symmetric Difference Tool: GeoJSON y Shapefile

Dibuja o sube dos capas de polígonos y conserva solo las partes que no se superponen entre ellas. Abrir pantalla completa ↗

Rate this tool:
Advertisement
Loading map…
¿Necesitas ayuda con tu proyecto GIS?Descubre Nuestros Servicios

¿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

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.

Advertisement

Preguntas frecuentes

¿Se sube mi información a algún sitio?
No. Dibujar, leer archivos, el paso de disolución, ambos pasos de diferencia y el cálculo final del área ocurren todos de forma local en tu navegador con JavaScript. No se envía nada a ningún servidor.
¿Qué software SIG tiene una herramienta de diferencia simétrica integrada?
PostGIS tiene ST_SymDifference como función SQL, QGIS tiene un algoritmo "Diferencia Simétrica" en su caja de herramientas de procesos, ArcGIS Pro tiene una herramienta de geoprocesamiento Diferencia Simétrica, y Shapely de Python tiene un método .symmetric_difference(). Todas calculan el mismo resultado que esta herramienta.
¿Puedo usar esto con varios polígonos por capa?
Sí. Si una capa tiene más de un feature, primero se fusionan en una sola forma mediante una unión booleana, de modo que la diferencia simétrica se calcula entre las dos capas como conjuntos completos, no feature por feature.
¿Puedo subir GeoJSON o Shapefile, o solo dibujar?
Ambas cosas. Dibuja directamente en el mapa, suelta un archivo .geojson, o suelta un Shapefile comprimido (.zip que contenga .shp, .dbf y .shx). Los tres métodos de entrada se pueden combinar para la Capa A y la Capa B.
¿Cómo encuentro las partes de dos polígonos que no se superponen?
Dibuja o sube dos capas de polígonos, elígelas como Capa A y Capa B en esta herramienta, y haz clic en "Buscar Diferencia Simétrica". El área superpuesta se descarta por completo, y solo quedan en el resultado las dos partes que no se superponen.
¿Esta herramienta también muestra el área superpuesta, o solo las partes sin superposición?
Solo las partes sin superposición. El área compartida y superpuesta se descarta deliberadamente, ese es todo el sentido de una diferencia simétrica. Si necesitas la superposición en sí, la Herramienta de Intersección de Polígonos de este sitio calcula exactamente eso.
¿Qué es una diferencia simétrica en SIG?
La diferencia simétrica es una operación de overlay vectorial que conserva solo el área que pertenece a exactamente una de dos capas de polígonos, no a ambas. Se escribe A ⊕ B = (A ∪ B) − (A ∩ B): todo lo que está en cualquiera de las dos formas, menos lo que comparten.
¿En qué se diferencia de una diferencia normal (erase)?
Una diferencia normal es unidireccional: resta la Capa B de la Capa A y conserva solo lo que queda de A. La diferencia simétrica es bidireccional: conserva la parte exclusiva de A y la parte exclusiva de B, así que ves lo que cambió en ambos lados, no solo en uno.
¿Qué algoritmo calcula la diferencia simétrica, y es preciso?
La herramienta ejecuta un algoritmo de diferencia booleana por barrido de línea al estilo Martinez-Rueda dos veces, una para A menos B y otra para B menos A, el mismo motor que usan la Herramienta de Diferencia de Polígonos y la Herramienta de Intersección de Polígonos de este sitio. Maneja correctamente polígonos cóncavos y polígonos con huecos.
¿Por qué el mapa empieza sin mapa base, y cómo activo uno?
El mapa se carga sin teselas de calle o satélite por defecto para que la herramienta se abra rápido y el foco siga en tus polígonos. Marca la casilla "Mostrar mapa base" en el panel lateral cuando quieras contexto geográfico, y elige Calle o Satélite una vez activado.

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

🗺️
Detección de cambios de zonificación y límites
Carga un límite de zonificación antiguo como Capa A y el límite propuesto como Capa B para ver exactamente qué áreas se añadieron y cuáles se eliminaron en un resultado combinado, en lugar de comparar dos mapas a simple vista.
🛰️
Detección satelital de cambios en el uso del suelo
Compara una capa de clasificación del suelo de un año frente a la misma área de un año posterior para aislar exactamente qué parcelas cambiaron de clasificación, sin inspeccionar cada polígono a mano.
📡
Comparación de cobertura de telecomunicaciones
Compara los polígonos de cobertura de dos operadores para aislar las áreas cubiertas por exactamente una red y no por la otra, las partes que más importan en un análisis competitivo de cobertura.
🌊
Actualizaciones de mapas de zonas de inundación
Compara un límite de zona de inundación al estilo FEMA más antiguo con uno actualizado para resaltar exactamente qué propiedades se añadieron o se eliminaron del área de riesgo de inundación.
🗳️
Revisión de redistritación y límites electorales
Carga un límite de distrito electoral actual y una propuesta de rediseño para ver con precisión qué áreas, y qué votantes, cambiarían de distrito.
📐
Disputas de límites de deslindes y escrituras
Superpón un límite de propiedad levantado profesionalmente sobre el límite registrado en una escritura para aislar la exacta franja de terreno en disputa donde ambos difieren.

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.

Advertisement

Paso a paso: encontrar una diferencia simétrica

Mapa vacío de la herramienta de diferencia simétrica sin mapa base cargado, mostrando los botones de dibujar, subir y polígono de ejemplo antes de añadir ninguna capa
1
Paso 1: Abre la herramienta y añade tu primera capa
La herramienta vacía empieza sin mapa base: dibuja un polígono, sube un archivo o haz clic en Polígonos de Ejemplo.
Dos capas de polígonos de ejemplo superpuestas sobre un fondo simple sin mapa base, con la lista de capas visible en el panel lateral
2
Paso 2: Añade una segunda capa que se superponga
Dos capas cargadas, todavía sin mapa base. La Capa A y la Capa B ya están elegidas por ti.
Primer plano del panel lateral mostrando los selectores desplegables de Capa A y Capa B y el botón Buscar Diferencia Simétrica
3
Paso 3: Elige la Capa A y la Capa B
Confirma la Capa A y la Capa B, y luego haz clic en Buscar Diferencia Simétrica para ejecutar el overlay.
La diferencia simétrica calculada mostrada como dos formas resaltadas por separado en el mapa con una lectura de área total en el panel lateral, mapa base ya activado
4
Paso 4: Revisa el resultado que no se superpone
El resultado: las áreas exactas que no se superponen, más su tamaño combinado. Aquí se activó un mapa base para dar contexto.
Panel del gestor de capas listando la Capa A, la Capa B y la capa de diferencia simétrica con controles de exportación y descarga
5
Paso 5: Exporta la capa de resultado
Exporta el resultado solo, o las tres capas juntas, como GeoJSON.
Advertisement

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.

Muhammad Gulraiz Khan, experto en GIS y fundador de KONAKTIVE y OnlineMapMaker.com

Sobre el Autor

Muhammad Gulraiz Khan

Experto y Consultor en GIS · Fundador de KONAKTIVE

Muhammad Gulraiz Khan es un experto en GIS con más de una década de experiencia profesional ofreciendo soluciones geoespaciales para el sector energético, incluyendo proyectos para el Banco Mundial, la Corporación Financiera Internacional (IFC) y USAID. Creó OnlineMapMaker.com para hacer que las herramientas de mapeo profesionales sean gratuitas y accesibles para todos.

Advertisement