PostGIS



Objetivos



Instalar PostGIS
Comprender la creación de nuevos objetos geométricos
Inspeccionar las nuevas funciones geométricas y las nuevas tablas geométricas
Conocer las tablas de metadatos spatial_ref_sys y las vistas  geometry colums y geography_columns

¿qué es postgis?





PostGIS añade soporte espacial a la base de datos relacional PostgreSQL. 
Le da a PostgreSQL la capacidad de almacenar, consultar y manipular datos espaciales

Licenciado con GNU GPL

¿QUÉ ES POSTGIS?





Desarrollado en lenguaje C
Utiliza la librería GEOS (wrapper JTS)
Implementa OGC Simple Feature Access

Instalación




Desde repositorios:

$ sudo apt-get install postgis postgresql-X.X-postgis

Espacialización de la base de datos





Crear una base de datos espacial y definir como plantilla para la creación de bases de datos posteriores

Espacialización de la base de datos




Directorio con archivos para la creación:

cd /usr/share/postgresql/9.1/contrib/postgis-2.0/

Espacialización de la base de datos


Creación de la base de datos template_postgis

Ejecutamos los scripts con el usuario postgres contra la base de datos template_postgis


$ psql -U postgres -d template_postgis -f postgis.sql
$ psql -U postgres -d template_postgis -f spatial_ref_sys.sql

Espacialización de la base de datos




ESPACIALIZACIÓN DE LA BASE DE DATOS



ESPACIALIZACIÓN DE LA BASE DE DATOS



ESPACIALIZACIÓN DE LA BASE DE DATOS



ESPACIALIZACIÓN DE LA BASE DE DATOS





Tabla spatial_ref_sys:

contiene una lista con los sistemas de referencia disponibles

Espacialización de la base de datos



Vista geometry_columns:

catálogo de las columnas espaciales existentes en la base de datos. PostGIS debe buscarse una manera de identificar qué campo contiene geometrías. Esto se hace de manera estándar (OGC) manteniendo un catálogo con la lista de columnas espaciales que existen. Hay que tenerla siempre actualizada

Espacialización de la base de datos





# SELECT postgis_full_version();

Creación de la plantilla





Podremos utilizar la base de datos creada inicialmente como plantilla para la posterior creación de bases de datos espaciales evitando tener que repetir el proceso

CREACIÓN DE LA PLANTILLA




# UPDATE pg_database 
SET datistemplate = TRUE 
WHERE datname = 'template_postgis';

Creación de la plantilla




# GRANT ALL ON geometry_columns TO PUBLIC;
# GRANT ALL ON geography_columns TO PUBLIC;
# GRANT ALL ON spatial_ref_sys TO PUBLIC;

Creación de la base de datos espacial





 # CREATE DATABASE curso TEMPLATE=template_postgis

Creación de tablas espaciales





Creamos la tabla, bien con create table o desde pgAdmin


Creación de tablas espaciales

Definimos campo geométrico:

Usando geometry (typmod):
# alter table [nombre_tabla] add column geom geometry([tipo_geometria], SRID)


O usando el estandar:
# SELECT AddGeometryColumn ('mi_schema','mi_tabla','geom',SRID,'[tipogeometria]',dimension);

Caracteristicas espaciales postgis





Funciones espaciales
Indices espaciales

Funciones espaciales



Una base de datos ordinaria proporciona funciones para manipular los datos en una consulta como concatenación de cadenas, operaciones matemáticas o la extracción de información de las fechas. Una base de datos espacial proporciona un completo juego de funciones para poder realizar análisis con los objetos espaciales: analizar la composición del objeto, determinar su relación espacial con otros objetos, transformarlo, etc.

funciones espaciales

La mayor parte de las funciones espaciales pueden ser agrupadas en una de las siguientes cinco categorías:

Conversión: Funciones que convierten las geometrías a otros formatos externos
Gestión: Tareas administrativas de PostGIS
Recuperación: Obtienen propiedades y medidas de las geometrías.
Comparación: Comparan dos geometrías y obtienen información sobre su relación espacial.
Generación: Generan geometrías a partir de otros tipos de datos.

Índices espaciales


La indexación para tipos de datos estándar que pueden ser ordenados (alfabéticamente o numéricamente) consiste en esencia en ordenar estos registros de manera que sea fácil localizarlos.

Pero en el caso de la información espacial no existe un orden total ya que un polígono puede contener a un punto, cruzarse con una línea, etc. Se ponen en marcha ciertas estrategias para asociar los registros con determinadas partes del territorio que cubren y así poder obtener los registros que se encuentran cerca de una posición dada.

PostgreSQL implementa un algoritmo de indexación espacial denomimado GiST (Generalized Search Tree). PostGIS extiende los índices GiST para que funcionen adecuadamente con los tipos geometry.

PostGIS

By Micho García