Bases de Datos Espaciales · Sesiones 5 y 6

Análisis espacial: operaciones de superposición y buffer

Unión, intersección, diferencia, diferencia simétrica y zona de influencia (buffer): qué hacen, cómo se escriben en PostGIS y Oracle, y qué herramienta equivale en ArcGIS.

Guía de las sesiones 5 y 6

Los scripts analisis-espacial-postgis.sql y analisis-espacial-oracle.sql recargan el municipio (Parte A) y traen los ejemplos (Parte B) y los enunciados de los ejercicios (Parte C).

Sesión 5: las operaciones

0:00 – 0:15
Repaso de la sesión 4 y carga de la Parte A en los dos motores.
0:15 – 1:00
Laboratorio: mover A y B y ver qué produce cada operación. Comprobar que unión = A + B − intersección.
1:00 – 1:15
Descanso.
1:15 – 2:00
Las cinco operaciones: sintaxis en PostGIS y Oracle, herramientas de ArcGIS y la trampa de la herramienta "Union".
2:00 – 2:50
Ejemplos B.1 a B.6 del script en los dos motores, viendo el resultado en En el municipio.
2:50 – 3:00
Ejercicios 1 y 2.

Sesión 6: buffer y análisis combinados

0:00 – 0:40
Buffer: distancia, segmentos por cuarto de círculo, extremos de línea, buffer negativo. Ejemplos B.7 y B.8.
0:40 – 1:00
Guardar resultados como tabla (B.9) y abrirlos en QGIS o ArcGIS.
1:00 – 1:15
Descanso.
1:15 – 2:45
Ejercicios 3 a 10, en parejas: uno en PostGIS y otro en Oracle, comparando resultados.
2:45 – 3:00
Autoevaluación.
Idea clave: estas operaciones reciben geometrías y devuelven geometrías nuevas. Por eso se pueden encadenar (el buffer de una intersección, la diferencia de una unión) y el resultado se puede medir o guardar como capa.

Laboratorio de operaciones

Arrastre las figuras A y B. Escoja una operación: el resultado aparece relleno y a la derecha está el código en cada motor.

Figura A Figura B Distancia del buffer12 m Segmentos por cuarto de círculo8 Extremos de línea

Las cinco operaciones

A es el cuadrado y B el círculo. En verde, el resultado.

Resumen de sintaxis

OperaciónPostGISOracle SpatialArcGIS Pro
Unión de dosST_Union(a, b)SDO_GEOM.SDO_UNION(a, b, tol)Edit → Merge · Dissolve
Unión de toda la tablaST_Union(geom) con GROUP BYSDO_AGGR_UNION(SDOAGGRTYPE(geom, tol))Dissolve
IntersecciónST_Intersection(a, b)SDO_GEOM.SDO_INTERSECTION(a, b, tol)Pairwise Intersect · Pairwise Clip
DiferenciaST_Difference(a, b)SDO_GEOM.SDO_DIFFERENCE(a, b, tol)Pairwise Erase
Diferencia simétricaST_SymDifference(a, b)SDO_GEOM.SDO_XOR(a, b, tol)Symmetrical Difference
BufferST_Buffer(g, d [, 'quad_segs=8 endcap=round'])SDO_GEOM.SDO_BUFFER(g, d, tol [, 'unit=M'])Pairwise Buffer · Buffer
Superposición con atributosJOIN + ST_IntersectionCruce + SDO_INTERSECTIONUnion · Intersect · Identity

La trampa: la herramienta "Union" de ArcGIS

En PostGIS y Oracle, unión significa fundir: dos formas se vuelven una sola, sin borde interno.

En ArcGIS, la herramienta Union hace otra cosa: superpone dos capas y corta todo en pedazos (solo A, solo B y A con B), y cada pedazo conserva los atributos de las dos capas. Es una superposición.

Para reproducir esa superposición en SQL se combinan intersección y diferencias:

-- los tres pedazos que produce la herramienta Union de ArcGIS
SELECT 'A y B' AS parte, ST_Intersection(a.geom, b.geom) AS geom FROM a, b
UNION ALL
SELECT 'solo A', ST_Difference(a.geom, b.geom) FROM a, b
UNION ALL
SELECT 'solo B', ST_Difference(b.geom, a.geom) FROM a, b;

Los ejemplos de clase sobre el municipio

Escoja un ejemplo: el mapa muestra el resultado de la consulta, calculado aquí mismo, y abajo está el código de cada motor.

Ejercicios

Los enunciados también están en la Parte C de cada script. Los resultados de PostGIS y Oracle deben coincidir; las áreas de los buffers pueden diferir un poco, porque cada motor aproxima las curvas de forma distinta.

Autoevaluación