BDE - Introduccion A PostGIS

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 31

BASES DE DATOS

ESPACIALES

Introducción a PostGIS

A. E. O. D.
¿Qué es PostGIS?

Es una extensión al sistema manejador de bases de datos relacional


PostgreSQL. Permite el uso de objetos GIS (Goegraphic Information
Systems).

PostGIS incluye soporte para índice GiST basados en R-Tree y funciones


básicas basadas en objetos GIS.

Con PostGIS se pueden usar todos los objetos que aparecen en la


especificación OpenGIS como:

Líneas Puntos Polígonos


Multilíneas Multipuntos Multipolígonos
Colecciones geométricas

A. E. O. D.
Tipos de Datos Espaciales

Point
MultiPoint

LineString

MultiLineString

GeometryCollection

Polygon
MultiPolygon

A. E. O. D.
OpenGIS WKB y WKT

Ejemplos de Well – Know Text (WKT)

POINT (0 0)
Point

LINESTRING (0 0,1 0, 2 0)
LineString

POLYGON((0 0,0 3,3 3,3 0, 0 0),


(1 1,1 2, 2 2, 2 1, 1 1))

A. E. O. D.
OpenGIS WKB y WKT

MULTIPOINT (0 0,0 2,1 1,2 2,2 1)


MultiPoint

MULTILINESTRING ((0 0,1 0, 2 0),(0 2,1 3,2 2))

MultiLineString

MULTIPOLYGON(((0 0,0 3,3 3,3 0, 0 0),


(1 1,1 2,2 2,2 1, 1 1)), ((4 0,4 3,7 0, 4 0)))

MultiPolygon

A. E. O. D.
OpenGIS WKB y WKT

GEOMETRYCOLLECTION (
MULTIPOINT (0 3,0 5,1 4,2 5,2 4),
MULTILINESTRING ((0 0,1 0, 2 0),
(0 2,1 3,2 2))
MULTIPOLYGON((3 3,3 6,6 6,6 3),
(4 4,4 5,5 5,5 4)))

GeometryCollection

A. E. O. D.
Usando estándares de Open Geopatial Consortium (OGC)

Las especificación para SQL de características simples de la OGC define


tipos de objetos GIS estándar, los cuales son manipulados por funciones, y
un conjunto de tablas de metadatos.
Hay 2 tablas de meta-datos en la especificación OpenGIS:
• SPATIAL_REF_SYS
• GEOMETRY_COLUMNS

A. E. O. D.
Usando estándares de Open Geopatial Consortium (OGC)

SPATIAL_REF_SYS
Contiene un identificador numérico y una descripción textual del sistema de
coordenadas usados en la base de datos espacial.
Cumple con una lista aproximada de 3000 sistemas de referencia espacial,
que pueden ser manejados, y también permite crear otros propios.
La definición de ésta tabla es la siguiente:
CREATE TABLE spatial_ref_sys (
srid INTEGER NOT NULL PRIMARY KEY,
auth_name VARCHAR(256),
auth_srid INTEGER,
srtext VARCHAR(2048),
proj4text VARCHAR(2048) )

A. E. O. D.
Usando estándares de Open Geopatial Consortium (OGC)

SPATIAL_REF_SYS
Las columnas de las tablas son la siguientes:
SRID: Valor entero que identifica el sistema de referencia espacial.
AUTH_NAME: El nombre del estándar para el sistema de referencia. Por
ejemplo: EPSG.
AUTH_SRID: El identificador según el estándar AUTH_NAME. En el
ejemplo anterior es el id según EPSG.
SRTEXT: Una Well-know text representación para el sistema de referencia
espacial. Ejemplo: WKT para SRS.
PROJ4TEXT: Proj4 es una librería que usa PostGIS para transformar
coordenadas . Esta columna contiene una cadena con definición de las
coordenadas de Proj4 para un SRID dado.
A. E. O. D.
Usando estándares de Open Geopatial Consortium (OGC)

GEOMETRY_COLUMNS
La definición de esta tabla es:
CREATE TABLE geometry_columns (
f_table_catalog VARRCHAR(256) NOT NULL,
f_table_schema VARCHAR(256) NOT NULL,
f_table_nam VARCHAR(256) NOT NULL,
f_geometry_column VARCHAR(256) NOT NULL,
coord_dimension INTEGER NOT NULL,
srid INTEGER NOT NULL,
type VARCHAR(30) NOT NULL
)

A. E. O. D.
Usando estándares de Open Geopatial Consortium (OGC)

GEOMETRY_COLUMNS
Descripción de cada una de las columnas:
F_TABLE_CATALOG, F_TABLE_SCHEMA, F_TABLE_NAME: Distingue
totalmente la tabla de características que contiene la columna geométrica.
F_GEOMETRY_COLUMN: Nombre de la columna geométrica en la tabla
de características.
COORD_DIMENSION: Dimensión espacial de la columna(2D o 3D).
SRID: Es una clave foránea que referencia SPATIAL_REF_SYS.
TYPE: Tipo de objeto espacial. POINT, LINESTRING, POLYGON,
MULTYPOINT, GEOMETRYCOLLECTION. Para un tipo heterogéneo se
debe usar el tipo GEOMETRY.

A. E. O. D.
Creando una tabla espacial

La creación de una tabla espacial se realiza en dos fases:


• Se crea una tabla no espacial
• Se añade una columna (campo) espacial a la tabla usando la función
AddGeometryColumn de OpenGIS.
Sintaxis: AddGeometryColumn( AddGeometryColumn(
<NombreSchema>, <table_name>,
<NombreTabla>, <column_name>,
<NombreColumna>, <srid>,
<srid>, <type>,
<Tipo>, <dimension>)
<Dimensión>)

A. E. O. D.
Creando una Base de Datos Espacial

La creación de una base de datos se hace con la instrucción


CREATE TABLE DATABASE
Ejemplo:
create database geometrias;
Para convertirla en una base de datos espacial con PostGIS, es necesario
ejecutar la extensión espacial
create extension postgis;
Ahora ya se tiene una base de datos espacial. Se puede verificar que las
relaciones Spatial_ref_sys y Geometry_columns se encuentran en la
base de datos, al igual que la definición de las funciones espaciales.

A. E. O. D.
Creando una tabla espacial

Recuerde que la creación de una tabla espacial se realiza en dos fases:


1. Se crea una tabla con los campos alfanuméricos
2. Se adiciona el campo espacial con la función AddGeometryColumn
Ejemplo:
create table lineas (
id int primary key,
nom varchar(5));

select AddGeometryColumn (
‘lineas’,’geom’,3116,’LINESTRING’,2);

A. E. O. D.
Creando una tabla espacial

Otra opción para crear la tabla líneas es:


create table lineas (
id int primary key,
nom varchar(5),
geom geometry(linestring,3116));

De esta forma, no se necesita la función AddGeometryColumn.

A. E. O. D.
Cargar datos espaciales en el SDBMS

Actualmente hay dos formas de cargar datos en bases de datos PostGIS /


PostgresSQL:
• Usando instrucciones de SQL
• Usando shape loader / dumper
Usando instrucciones SQL
Se puede insertar directamente la información con instrucciones SQL. También se
pueden guardar en un archivo texto para que cualquier SDBMS los pueda cargar

A. E. O. D.
Cargar datos espaciales en el SDBMS

Usando instrucciones SQL


Se usa la instrucción de SQL Insert y la notación WKT para la información espacial
Ejemplo:
insert into lineas values (1, 'L1',
ST_GeomFromText('LINESTRING(40 20, 110 65)', 3116));
Inserta un registro con la información de una línea entre puntos cuyas coordenadas
son (40,20) y (110,65) en el sistema de referencia 3116 (Magna Sirgas origen
Bogotá) y los valores 1 y L1 para los atributos id y nom respectivamente.
Otro ejemplo:
insert into poligonos values (1, 'A',
ST_GeomFromText('POLYGON((0 0, 10 0, 5 10, 0 0))', 3116));
Nota: el valor del sistema de referencia (srid) debe existir en la relación
Spatial_ref_sys. El valor por defecto es 0 que equivale a WGS-84

A. E. O. D.
(0,80) (140,80)
D
(20,70) (120,70)
A (110,65)
(60,60) (130,60)
B
(80,50) (100,50)
(20,50) (30,50) C (120,50)

L1
(40,20)
L2
(30,10) (60,10) (80,10) (100,10) (130,10)

(0,0) (140,0)
Ejercicio: Ingresar esta información a la base de datos
A. E. O. D.
Usando instrucciones SQL

select * from lineas;

Usando instrucciones SQL

select id, nom, st_asText(geom) geometria from lineas;

A. E. O. D.
Cargar datos espaciales en el SDBMS

Usando el Cargador (loader).


El cargador de datos “shp2pgsql” convierte archivos shape de ESRI a SQL para su
inserción en una base de datos PostGIS / PostgreSQL. El cargador tiene varios
modos de operación que se seleccionan con los parámetros desde linea de
comandos:
-d Elimina la tabla de la base de datos antes de crear la tabla con los datos del
archivo de figuras.
-a Añade los datos del archivo shape a las tabla de la base de datos. El archivo
debe tener los mismos atributo que la tabla.
-c Crea una nueva tabla y llena esta con la información del archivo shape. Este es el
modo por defecto.

A. E. O. D.
Cargar datos espaciales en el SDBMS

Usando el Cargador (loader).


-D Crea una tabla nueva llenándola con los datos del archivo shape. Pero usa el
formato dump para la salida de datos que es mas rápido que el insert de SQL. Esta
forma se debería usar para conjuntos de datos largos.
-s<SRID> Crea y rellena una tabla geométrica con el SRID que se le pasa como
parámetro.
-p Solo produce el código SQL de creación de la tabla, sin adicionar dato alguno. Se
puede usar cuando se requiere separar la creación de la tabla de la carga de datos
en ella.
-I Crea inj índice GiST en la columna geométrica.
-w Produce una salida en formato WKT, para uso con versiones anteriores de
PostGIS.

A. E. O. D.
Cargar datos espaciales en el SDBMS

Existe una aplicación gráfica que se instala como un plug-in, y también se encuentra
en las aplicaciones de PostGIS

A. E. O. D.
Cargar datos espaciales en el SDBMS

Archivo Archivo
SHAPE shp2pgsql SQL

psql
SDBMS
(PostgeSQL
+ PostGIS)
PgAdmin

A. E. O. D.
Recuperando Datos Espaciales

Para extraer datos de la base de datos se pueden utilizar dos métodos:


• Usando instrucciones de SQL
• Usando shape loader / dumper
Usando instrucciones SQL
Es la forma más directa de hacerlo, se realiza una consulta usando la cláusula
SELECT de SQL y el resultado se lleva a un archivo plano.

A. E. O. D.
Recuperando Datos Espaciales

Usando el cargador (dumper)


Pgsql2shp conecta directamente con la base de datos y convierte una tabla (podría
ser un query) en un archivo shape. La sintaxis es:
pgsql2shp [<opciones>] <basededatos> <tabla>
pgsql2shp [<opciones>] <basededatos> <query>
Opciones de línea de comandos:
-d Escribe un archivo shape 3D desde una version vieja de PosGIS, siendo el 2D el
que tiene por defecto.
-f<archivo> archivo de salida.
-p<puerto> puerto de conexión con la base de datos.

A. E. O. D.
Recuperando Datos Espaciales

Usando el cargador (dumper)


Opciones de línea de comandos:
-h<host> host donde esta la base de datos.
-p<password> password para el acceso
-u<user> usuario de acceso.
-g<columna geometría> Si la tabla tiene varias columnas
geométricas, selecciona la columna geométrica a usar.

A. E. O. D.
Visualizar la información espacial

Una de las formas como podemos visualizar la información es conectando


PostgreSQL con una herramienta de SIG, para nuestro caso, he
seleccionado QuantumGIS (QGIS), la cual también es una herramienta de
uso libre y código abierto, primero se establece la conexión con el SMBD, y
luego se carga la información escogiendo las tablas adecuadas para su
despliegue en el SIG. Una vez iniciado QGIS, se establece la conexión.
En el ejemplo veremos dos interfaces que pertenecen a versiones
diferentes de QGIS, sin importar la versión, y de forma general en los SIG,
preguntarán básicamente por la misma información para conseguir la
conexión a la base de datos.

A. E. O. D.
Visualizar la información espacial

A. E. O. D.
Visualizar la información espacial

Una vez lograda la conexión, se seleccionan las tablas que contienen la


información espacial a desplegar, y se escoge una simbología para su
representación. la información desplegada de las tablas lineas y poligonos
que se creó con anterioridad.

En este caso particular, se seleccionó unos colores parecidos a los de la


figura 5.11., pero se aplicó una transparencia de 50% a todos los objetos,
para una mejor visualización de los cruces de elementos, y además se
desplegó la información del atributo nom a las líneas y a los polígonos,
como etiquetas asociadas a los objetos espaciales.

A. E. O. D.
Visualizar la información espacial

A. E. O. D.
PostGIS 2.5.3dev Manual - Recuperado a partir de
http://postgis.net/stuff/postgis-2.5.pdf

OpenGIS® Implementation Standard for Geographic information -


Simple feature access - Part 2: SQL option. Disponible en:
http://www.opengeospatial.org/standards/sfs.

También podría gustarte