SIG

Consultas Espaciales y Cálculo de Distancias

José Samos Jiménez
()
Dpto. LSI
Universidad de Granada

Citar y Licencia: https://doi.org/10.6084/m9.figshare.27907050.v1

VĂ­deo: https://youtu.be/He8KbgDpq3I

Contenido


  • Datos de partida
  • Operaciones
    • SelecciĂłn basada en la relaciĂłn
    • Pasar de polĂ­gonos a puntos
    • ReclasificaciĂłn y disoluciĂłn
    • Cálculo del perĂ­metro y del área
    • IntersecciĂłn
    • Buffering
    • Distancias
  • Conclusiones

Datos de partida (i)

municipios

red_hidrografica

Datos: https://doi.org/10.6084/m9.figshare.27601509.v2

Datos de partida (y ii)

distritos_hidrograficos

Datos: https://doi.org/10.6084/m9.figshare.27601509.v2

SelecciĂłn basada en la relaciĂłn

WITH rio_genil AS (
    SELECT ST_Union(geom) AS geom
    FROM red_hidrografica
    WHERE nombre = 'RĂ­o Genil'
)
SELECT 
    m.*
FROM 
    municipios m
JOIN 
    rio_genil r
ON 
    ST_Intersects(m.geom, r.geom);

SelecciĂłn basada en la relaciĂłn (y ii)

WITH rio_genil_grupo AS (
  WITH rio_genil AS (
    SELECT grupo
    FROM red_hidrografica
    WHERE nombre = 'RĂ­o Genil'
    GROUP BY grupo
  )
  SELECT 
    1 AS id,
    'RĂ­o Genil' as nombre, 
    ST_Union(geom) AS geom
  FROM red_hidrografica
  WHERE grupo = 
    (SELECT grupo FROM rio_genil)
  GROUP BY grupo
)
SELECT 
  m.*
FROM 
  municipios m
JOIN 
  rio_genil_grupo r
ON 
  ST_Intersects(m.geom, r.geom);

Pasar de polĂ­gonos a puntos

SELECT ST_Centroid(geom) AS geom
FROM municipios;
SELECT ST_PointOnSurface(geom) AS geom
FROM municipios;

ReclasificaciĂłn y disoluciĂłn

SELECT 
    CASE 
        WHEN "Incremento" < 0 THEN 'negativo'
        ELSE 'no_negativo'
    END AS grupo,
    ST_Union(geom) AS geom
FROM municipios
GROUP BY grupo;

Cálculo del perímetro y del área

SELECT 
    1 AS id,
    'Granada' AS nombre,
    ST_Area(geom) AS area_m2,     
    ST_Perimeter(geom) AS perimetro_m, 
    geom                            
FROM (
    SELECT ST_Union(geom) AS geom    
    FROM municipios
) AS provincia;
id nombre area_m2 perimetro_m
1 Granada 12637940182.991789 718709.04790743

IntersecciĂłn (i)

IntersecciĂłn (y ii)

WITH provincia AS (
  SELECT ST_Union(geom) AS geom
  FROM municipios
)
SELECT 
  dh.nombre,
  ST_Intersection(dh.geom, pr.geom) AS geom,
  ST_Area(ST_Intersection(dh.geom, pr.geom)) / 
  ST_Area(pr.geom) * 100 AS tpc_dh
FROM
  distritos_hidrograficos dh,
  provincia pr
WHERE 
  ST_Intersects(dh.geom, pr.geom);

nombre tpc_dh
D.H. Cuencas Mediterráneas 20.86736871557912
D.H. Guadalquivir 78.64643599262249
D.H. Segura 0.4706872424457691

Buffering

SELECT 
    l.nombre,
    ST_Buffer(l.geom, 500) AS geom
FROM (
  SELECT 
        r.nombre,                              
        ST_Intersection(r.geom, m.geom) AS geom
  FROM 
        red_hidrografica r
  JOIN 
        municipios m
  ON 
        ST_Intersects(r.geom, m.geom) 
  WHERE 
        m.municipio = 'LanjarĂłn'
  ) as l;

Buffering y disoluciĂłn

SELECT 
  ST_Union(geom) AS geom
FROM (
  SELECT 
    l.nombre,
    ST_Buffer(l.geom, 500) AS geom
  FROM (
    SELECT 
        r.nombre,                              
        ST_Intersection(r.geom, m.geom) AS geom
    FROM 
        red_hidrografica r
    JOIN 
        municipios m
    ON 
        ST_Intersects(r.geom, m.geom) 
    WHERE 
        m.municipio = 'LanjarĂłn'
    ) as l
  );

Distancias

Distancia de costo

Conclusiones