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
Sesión 6: buffer y análisis combinados
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.
Las cinco operaciones
A es el cuadrado y B el círculo. En verde, el resultado.
Resumen de sintaxis
| Operación | PostGIS | Oracle Spatial | ArcGIS Pro |
|---|---|---|---|
| Unión de dos | ST_Union(a, b) | SDO_GEOM.SDO_UNION(a, b, tol) | Edit → Merge · Dissolve |
| Unión de toda la tabla | ST_Union(geom) con GROUP BY | SDO_AGGR_UNION(SDOAGGRTYPE(geom, tol)) | Dissolve |
| Intersección | ST_Intersection(a, b) | SDO_GEOM.SDO_INTERSECTION(a, b, tol) | Pairwise Intersect · Pairwise Clip |
| Diferencia | ST_Difference(a, b) | SDO_GEOM.SDO_DIFFERENCE(a, b, tol) | Pairwise Erase |
| Diferencia simétrica | ST_SymDifference(a, b) | SDO_GEOM.SDO_XOR(a, b, tol) | Symmetrical Difference |
| Buffer | ST_Buffer(g, d [, 'quad_segs=8 endcap=round']) | SDO_GEOM.SDO_BUFFER(g, d, tol [, 'unit=M']) | Pairwise Buffer · Buffer |
| Superposición con atributos | JOIN + ST_Intersection | Cruce + SDO_INTERSECTION | Union · 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.