introducción a las bases de datos espaciales · ejercicio: crear una base de datos (bd), llamarla...

9
Introducción a las Bases de Datos Espaciales POSTGRESQL + POSGIS Ejercicio y Guía HowTo de PostgreSQL / PostGIS ING. ALDO MARCELO ALGORRY

Upload: others

Post on 12-Oct-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introducción a las Bases de Datos Espaciales · Ejercicio: Crear una base de datos (BD), llamarla GEODB Instalar la Extension PostGIS en la BD Crear

Introducción a las Bases de Datos

Espaciales

POSTGRESQL + POSGIS

Ejercicio y Guía HowTo de PostgreSQL / PostGIS

ING. ALDO MARCELO ALGORRY

Page 2: Introducción a las Bases de Datos Espaciales · Ejercicio: Crear una base de datos (BD), llamarla GEODB Instalar la Extension PostGIS en la BD Crear

Ejercicio:

Crear una base de datos (BD), llamarla GEODB<tres últimos nros dni>

Instalar la Extension PostGIS en la BD

Crear una secuencia llamada public.minas_gid_seq que comience en 1 con incremento

de 1.

Crear un dominio personalizado de estado de las minas: “En

produccion”,”Abandonada”,”Detectada”.

Crear una tabla espacial llamada Minas con geometría tipo POINT y srid: 3857. Con

atributos: id de tipo autogenerado y clave primaria, Estado del tipo creado en el punto

anterior, Nombre varchar(255).

Importar los Shapefiles pedanias y departamentos, usando QGis, verificar que tengan

srid 3857

Crear un trigger de validación que verifique que el punto esta dentro de una pedanía.

En QGis armar un proyecto que levante las capas departamentos, pedanias y minas.

Habilitar la edición de la capa minas y probar de incorporar nuevas minas en la

provincia, completar los datos y verificar que se grabe correctamente.

Probar grabar una mina fuera de la provincia o en la Laguna Mar Chiquita. Comprobar

que la validación funciona.

Crear una vista espacial de los puntos de la mina, agregando el nombre de la pedanía y

del departamento al que pertenecen. Llamarla minas_vw.

Page 3: Introducción a las Bases de Datos Espaciales · Ejercicio: Crear una base de datos (BD), llamarla GEODB Instalar la Extension PostGIS en la BD Crear

Guía HowTo de PostgreSQL / PostGIS

Crear una Base de Datos

Page 4: Introducción a las Bases de Datos Espaciales · Ejercicio: Crear una base de datos (BD), llamarla GEODB Instalar la Extension PostGIS en la BD Crear

Abrir QUERY TOOL

Instalar la extensión POSTGIS a nivel de la Base de Datos

Usar el comando SQL:

CREATE EXTENSION POSTGIS

Crear sequencias

CREATE SEQUENCE public.departamentos_gid_seq

INCREMENT 1

START 26

MINVALUE 1

MAXVALUE 2147483647

CACHE 1;

Page 5: Introducción a las Bases de Datos Espaciales · Ejercicio: Crear una base de datos (BD), llamarla GEODB Instalar la Extension PostGIS en la BD Crear

Crear dominios y tipos de datos personalizados:

Un listado de valores admitidos, dos formas:

a)

CREATE DOMAIN color VARCHAR(10)

CHECK (VALUE IN ('red', 'green', 'blue'));

b)

CREATE TYPE color2 AS ENUM ('red', 'green', 'blue');

Controlando alguna restricción:

Expresión regular:

CREATE DOMAIN us_postal_code AS TEXT

CHECK(

VALUE ~ '^\d{5}$'

OR VALUE ~ '^\d{5}-\d{4}$'

);

Crear una Tabla Espacial

Para los campos NO espaciales se puede usar la GUI de pgAdmin 4

Usando DDL SQL:

CREATE TABLE public.departamentos

(

gid integer NOT NULL DEFAULT nextval('departamentos_gid_seq'::regclass),

name character varying(254),

Page 6: Introducción a las Bases de Datos Espaciales · Ejercicio: Crear una base de datos (BD), llamarla GEODB Instalar la Extension PostGIS en la BD Crear

origen character varying(254),

url character varying(254) ,

geom geometry(MultiPolygon,3857),

CONSTRAINT departamentos_pkey PRIMARY KEY (gid)

)

Para agregar un campo de geometría usar DDL SQL:

ALTER TABLE public.departamentos

ADD COLUMN geom geometry(MultiPolygon);

Usando QGis:

Page 7: Introducción a las Bases de Datos Espaciales · Ejercicio: Crear una base de datos (BD), llamarla GEODB Instalar la Extension PostGIS en la BD Crear

Importar un Shapefile

Vía comandos (Linux):

shp2pgsql -s 4326 -I C:\ruta\ocean.shp public.ocean > ocean.sql

psql -d basededatos -h localhost -U postgres -p54321 -f ocean.sql

Usando shp2pgsql-gui.exe

Usando QGis

Page 8: Introducción a las Bases de Datos Espaciales · Ejercicio: Crear una base de datos (BD), llamarla GEODB Instalar la Extension PostGIS en la BD Crear

Crear trigger

CREATE FUNCTION public.checkparaje() RETURNS trigger AS $checkparaje$

DECLARE

cantped int;

BEGIN

SELECT count(*) INTO STRICT cantped

FROM public.pedanias WHERE st_contains(public.pedanias.geom,NEW.geom);

IF cantped =0 THEN

RAISE EXCEPTION 'El paraje no se encuentra en una pedania';

END IF;

Page 9: Introducción a las Bases de Datos Espaciales · Ejercicio: Crear una base de datos (BD), llamarla GEODB Instalar la Extension PostGIS en la BD Crear

RETURN NEW;

END;

$checkparaje$ LANGUAGE plpgsql;

CREATE TRIGGER checkparaje BEFORE INSERT OR UPDATE ON public.parajes

FOR EACH ROW EXECUTE PROCEDURE checkparaje();

Crear vista con junta especial

CREATE OR REPLACE VIEW public.centrosurbanosvw AS

SELECT centrosurbanos.id,

centrosurbanos.nombre,

centrosurbanos.geom,

pedanias.nombre AS nombre_pedania

FROM centrosurbanos,

pedanias

WHERE st_within(centrosurbanos.geom, pedanias.geom);