Está en la página 1de 49

Sistemas de Informacin Geogrfica Open Source

CURSO 2011 Base de Datos PostgreSQL PostGIS

Datos en un SIG
La informacin geogrfica es el elemento que diferencia a un SIG del resto de las aplicaciones, porque el dato geogrfico tiene basicamente dos atributos: Espacial: delimitacin espacial de cada uno de los objetos geogrficos. Dado por sus coordenadas, su forma Temtico: datos asociados a una localizacin espacial. Por ejemplo si deseo registrar la informacin de las inmobiliarias de Tandil: Espacial: Coordenada de cada una representada como un punto. Temtico: Nombre de la inmobiliaria, Calle, altura, telfono, sitio web, etc.

Datos de un SIG: Ejemplo

Base de Datos Geogrfica


Una base de datos geogrfica o espacial es: Es una coleccin de datos acerca de objetos localizados en una determinada rea de inters en la superficie de la tierra, organizados en una forma tal que puede servir eficientemente a una o varias aplicaciones El conjunto de datos geogrficos relacionados entre s. Cartografa + Datos (BD temticas) El SIG debe integrar datos espaciales con otros de datos que no lo son. Porque integrarlos y no manejarlos por separado? Para poder utilizar los Sistemas de Gestin de Base de Datos (SGBD) ms comunes (comerciales o libres) para manejar conjuntamente la informacin geogrfica y los datos comunes.

Sistema de Gestin de Base de Datos


Un SGBD permite el almacenamiento, manipulacin y consulta de datos pertenecientes a una base de datos organizada en uno o varios archivos. En el modelo ms extendido (base de datos relacional) la base de datos consiste, de cara al usuario, en un conjunto de tablas entre las que se establecen relaciones. A pesar de sus semejanzas existen DIFERENCIAS FUNDAMENTALES entre un SGBD y un programa que maneja hojas de clculo, si bien ambos manejan conjuntos de tablas podemos decir que:
La forma de almacenar los datos y de gestionarlos es transparente al usuario. Pueden manejar la concurrencia de acceso a los datos. ...lista muy larga de otras ventajas

SGBD PostgreSQL
PostgreSQL es un SGBD open source: con TODAS las caractersticas de los SGBD comerciales y gratis.
Soporte de todas las funcionalidades de un SGBD para actualizacin y consulta de datos convencionales. Soporte a tipos complejos de datos: geomtricos ( punto, segmento, crculo, polgono, etc.)

PostgreSQL:
Tipo de dato geomtrico
Point, tamao16 bytes, es un punto sobre el plano (x,y) Line, tamao 32 bytes, lnea infinita (no est totalmente implementada) ((x1,y1),(x2,y2)) Lseg, tamao 32 bytes, segmento de lnea finita ((x1,y1),(x2,y2)) Box, tamao 32 bytes, rectngulo ((x1,y1),(x2,y2)) Path, tamao 16+16n bytes, camino cerrado (similar a polgono) ((x1,y1),...(xn,yn)) Path, tamao 16+16n bytes, camino abierto [(x1,y1),... (xn,yn)] Polygon, tamao 40+16n bytes, polgono (similar a camino cerrado)((x1,y1),... (xn,yn)) Circle, 24 bytes, crculo <(x,y),r> (dado por el centro (x,y) y el radio r) Documentacin adicional se encuentra en el sitio: http://www.postgresql.org/docs/8.3/interactive/datatype-geometric.html

Tabla con datos geomtricos


Valor o estado (extensin) Nombre de la tabla (relacin) Nombre de la columna (atributo) Esquema de una tabla o cabecera (comprensin)

INMOBILIARIA
Inmobiliaria Direccin Tel. .. Ubic (geometry) "0101000020B1560 00098E7A38DED2 24F4120FC8FC6E CC95541" "0101000020B1560 0006CB049246C44 4F4189EE23C8D0 E75541" "0101000020B1560 0004533AA2B3324 4F41ABD7CC6838 D65541" "0101000020B1560 0004C24FEBB283 54F412BFAB95321 065641" "0101000020B1560 00065BFF5937633 4F417DBCF46B00 125641"

INMOBILIARIA DEL SOL

Av Santamarina 625

43-5115

ALCIBAR

Colectora Pugliese 1382

42-9352

Fila (tupla)

ALEWAERTS ESTUDIO INMOBILIARIO

Gral Paz 15

42-7768

ARCHUBY SILVIA

Santos Vega 266

42-9720

Objeto geomtrico en PostgreSQL con

AZPIROZ ANDRES ENRIQUE

Maip 986

38-7999

PostGIS
8

Cmo interacto con la BD?


Se realiza mediante sentencias en lenguaje SQL. En una base de datos existen bsicamente dos tipos de sentencias:
Las que corresponden a la definicin de datos: CREATE TABLE, DROP TABLE, etc. Las que corresponden a manipulacin de datos: SELECT (para consultas), INSERT, UPDATE, DELETE

Que es PostGIS?
Es un mdulo que aade soporte de objetos geogrficos a la base de datos objeto-relacional PostgreSQL, convirtindola en una base de datos espacial para su utilizacin en SIG. PostGIS ha sido certificado en 2006 por el Open Geospatial Consortium (OGC) lo que garantiza la interoperabilidad con otros sistemas .

PostGIS
Aade soporte para objetos geogrficos a PostgreSQL. Posibilita que un servidor de BD PostgreSQL pueda ser utilizado como una BD espacial backend para SIG Ha sido desarrollado por Refractions Research como un proyecto open source y est publicado bajo licencia GNU Sigue el OpenGIS Simple Features Specification for SQL" y se ha certificado como adherente al perfil "Types and Functions dado por el Open Geospatial Consortium (OGC). http://www.opengeospatial.org/ Su desarrollo contina con el agregado de: herramientas de interfaz al usuario soporte para topologa bsica validacin de datos transformacin de coordenadas, etc.

PostGIS: Metadatos
PostGIS almacena la informacin geogrfica en una columna del tipo GEOMETRY, donde se pueden almacenar la geometra en formato WKB (Well-Known Binary), aunque hasta la versin 1.0 se utilizaba la forma WKT (Well-Known Text). El identificador de referencia espacial (SRID) especifica en qu sistema de coordenadas est representado un objeto espacial. Dos instancias con SRID diferentes son incomparables.

PostGIS: Metadatos
La especificacin OpenGis requiere que los objetos incluyan el identificador del sistema de referencia espacial (SRID). Entonces PostGIS agrega dos tablas de metadatos: SPATIAL_REF_SYS GEOMETRY_COLUMNS SPATIAL_REF_SYS Almacena la lista de los sistemas de referencias espaciales: contiene un identificador numrico y una descripcin del sistema de coordenadas de la BD srid: Clave primaria de la tabla auth_name: nombre del estandar para el sistema de referencia (EPSG) auth_srid: identificador o nmero segn el estandar Srtext: representacin OGC (Open GIS Consortium) WellKnown Text

PostGIS: Metadatos
GEOMETRY_COLUMNS Lista de columnas con un tipo de dato espacial. Usar CREATE TABLE + AddGeometryColumn() para incluir registro en esta tabla. f_table_catalog, f_table_schema, f_table_name, f_geometry_column: clave primaria de la tabla f_geometry_column: nombre de la columna que contiene la geometra en la tabla en cuestin coord_dimension: dimensin espacial 2D o 3D de la columna de la geometra. srid: clave extranjera a SPATIAL_REF_SYS, sistema de referencia espacial usado por la geometra en dicha tabla) type: tipo de objeto espacial (punto, linea, poligonal)

PostGIS: objetos espaciales


Representaciones de EWKT (Extended Well Know-Text): POINT(1 1) LINESTRING(0 0,1 1,1 2) POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1, 2 1, 2 2, 1 2,1 1)) MULTIPOINT(0 0,1 2) MULTILINESTRING((0 0,1 1,1 2),(2 3,3 2,5 4)) MULTIPOLYGON(((0 0,4 0,4 4,0 4,0 0),(1 1,2 1,2 2,1 2,1 1)), ((-1 -1,-1 -2,-2 -2,-2 -1,-1 -1))) GEOMETRYCOLLECTION(POINT(2 3),LINESTRING((2 3,3 4))) Que estamos representando en un sistema de coordenadas?

PostGIS: objetos espaciales


SQL Multimedia Applications Spatial extiende las caractersticas bsicas de SQL Algunas son:
-CIRCULARSTRING(0 0, 1 1, 1 0) (extremo, centro del rco, extremo) -COMPOUNDCURVE(CIRCULARSTRING(0 0, 1 1, 1 0),(1 0, 0 1)) -CURVEPOLYGON(CIRCULARSTRING(0 0, 4 0, 4 4, 0 4, 0 0),(1 1, 3 3, 3 1, 1 1)) -CURVEPOLYGON(COMPOUNDCURVE( CIRCULARSTRING(0 0,2 0, 2 1, 2 3, 4 3),(4 3, 4 5, 1 4, 0 0)), CIRCULARSTRING(1.7 1, 1.4 0.4, 1.6 0.4, 1.6 0.5, 1.7 1) ) -MULTICURVE((0 0, 5 5),CIRCULARSTRING(4 0, 4 4, 8 4))

PostGIS: Validez de objetos espaciales

LINESTRING Validos (a) y (c) Invlidos (b) y (d) MULTILINESTRING Vlidos (e) y (f) Invlidos (g) POLYGON Vlidos (h) y (i) MULTIPOLYGON Vlido (j) y (m)

PostGIS: Operadores
Algunos ejemplos son:

&& (Overlaps) &< (Overlaps o est a la izquierda) &> (Overlaps o est a la derecha)

PostGIS: Funciones
De administracin: - AddGeometryColumn, DropGeometryColumn: : Agrega y remueve una columna de tipo espacial a/de un tabla. - DropGeometryTable: borra la tabla y sus referencias en la tabla geometry_columns. - AsText : transforma a WKT un objeto espacial sin el SRID
select nombre, astext(the_geom) from lagunas;

PostGIS: Funciones
ST_Area(geometry): retorna el area de una superficie si es un polgono o multi-polgono. Para "geography" el area est en m2 ST_Length(geometry): retorna la longitud de la geometra si es un linestring or multilinestring. Expresada en metros. ST_Distance(geometry, geometry): retorna la mnima distancia cartesiana entre dos geometras. Para geografas el valor de retorno es en metros. ST_Touches(geometry, geometry): retorna verdadero (TRUE, T, t) si las geometras tiene al menos un punto en comn, pero sus interiores no existe interseccin en su interior

PostGIS: Funciones
ST_Crosses(geometry, geometry) : retorna verdadero si las geometras se cruzan espacialmente. (Las situaciones pueden darse con Point/Line, Point/Area, Line/Area, Line/Point, Area/Point, Area/Line, Line/Line) ST_Within(geometry A, geometry B): retorna verdadero si A esta dentro de B ST_Overlaps(geometry, geometry): retorna verdadero si las geometras comparten espacios, son de la misma dimensin pero no esta una contenida dentro de la otra. ST_Contains(geometry A, geometry B): reetorna verdadero si I solo si no hay ningn punto de B que este fuera de A. Otras ST_Covers(geometry A, geometry B) , ST_Intersects(geometry, geometry)

Donde buscarlas?
Captulo 6 del manual de PostGIS.
http://postgis.refractions.net/documentation/manual1.3/ch06.html#id2575402

Geometry Relationship Functions Geometry Processing Functions Geometry Accessors Geometry Constructors

PostGIS:
Tabla con objetos espaciales
Se crea la tabla PARQUE en el esquema por ejemplo Public CREATE TABLE parque ( pq_id INTEGER, pq_nombre VARCHAR, pq_fecha DATE, pq_tipo VARCHAR ); Se le agregan las columnas que van a representar los datos geomtricos del punto de ingreso y el rea del parque:
SELECT AddGeometryColumn ('public','parque','ingreso',22193,'POINT',2); SELECT AddGeometryColumn ('public','parque','area',22193,'CURVEPOLYGON',2);

Nombre de Esquema- Nombre de Tabla Nombre de columna SRID Tipo de objeto espacial - Dimensin

Cmo consulto los datos en una base de datos?


La sentencia de consulta bsica es:
SELECT lista de columnas FROM lista de tablas a consultar separadas por coma WHERE condiciones Por ejemplo:

SELECT pq_nombre, pq_fecha FROM parque WHERE pq_tipo = reserva;

Cmo consulto los datos en una base de datos?


Si deseo utilizar los operadores:
Por ejemplo:

SELECT tbl1.column1, tbl2.column1,


tbl1.column2 && tbl2.column2 AS overlaps FROM ( VALUES (1, LINESTRING(0 0, 3 3)::geometry), (2, LINESTRING(0 1, 0 5)::geometry)) AS tbl1, ( VALUES (3, LINESTRING(1 2, 4 6)::geometry)) AS tbl2;

Datos en un shape
El formato de archivos Shapefile (SHP) es un formato propietario de datos espaciales desarrollado por la compaa ESRI Se cre originalmente para utilizarlo con su producto ArcView GIS, pero actualmente se ha convertido en un estndar de facto. Su formato de almacenamiento es vectorial. Guarda la localizacin de los elementos geogrficos y sus atributos asociados. Carece de capacidad para almacenar informacin, o sea las relaciones espaciales entre los diferentes elementos grficos (topologa de nodo/punto, topologa de red/arco/lnea, topologa de polgono) y su posicin en el mapa. Un shapefile en realidad es un conjunto de archivos, como mnimo tres, con las siguientes extensiones:
.shp - es el archivo que almacena las entidades geomtricas de los objetos. .shx - es el archivo que almacena el ndice de las entidades geomtricas. .dbf - es el archivo que almacena la informacin de los atributos de los objetos. Detalle de su especificacin: http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf

Como transformar un *.shp?


Cmo transformar el data set de los shape para poder consultarlos desde una base de datos? Existen utilitarios que toman los archivos .shp y generan sentencias SQL que se pueden cargar en la base de datos. Shp2pgsql : se ejecuta desde lnea de comando, es decir una consola.

Instalacin PostGIS Windows


Utilizando Stack Builder de PostgreSQL desde versin 8 en adelante: Paso 1 Seleccionar la instalacin a actualizar

Instalacin PostGIS Windows


Paso 2 Seleccionar las extensiones espaciales (PostGIS)

Instalacin PostGIS Windows


Paso 3 Seleccionar el servidor de descarga de PostGIS Paso 4 Genera una base de datos vaca y solicita el nombre a especificar. (por defecto postgis) Genera por defecto la base de datos Template (Template_Postgis) con las funcionalidades de PostGIS incorporadas, de manera que las prximas bases creadas se puedan basar en sta y tengan las funcionalidades.

Herramientas
Necesitamos poder comunicarnos con el SGBD, para esto existe una variedad de herramientas de administracin (software) que nos brindan esa y otras facilidades. Cada SGBD provee al menos una, por ejemplo PostgreSQL tiene:
PgAdmin3: Entorno de escritorio visual. PhpPgAdmin: Entorno web, se accede desde una pgina Psql: Cliente de consola, lnea de comandos (muy primitivo, no visual)

Administracin PostgreSQL: PGAdminIII

SPATIAL_REF_SYS

GEOMETRY_COLUMNS

PostGIS:
Datos en spatial_ref_sys

PostGIS:
Datos en geometry_columns

Ejemplo
Localidades de los partidos de Azul, Olavarra, Rauch, Tandil SELECT area, departa, nombre FROM partidos p, localidades l WHERE ST_Within(l.the_geom, p.the_geom) = 't' AND depto IN ('672', '049', '595', '791') order by departa;

Resultado

shp2pgsql
Utilidad que toma un shape y genera datos para ser importados en una BD PostgreSQL con PostGIS

Sistema de georeferencia
El XML del shape en cuestin tiene los datos del sistema de referencia: Por ejemplo afl0003a_Project.shp.xml
. PROJCS['Argentina_Zone_3', GEOGCS['GCS_Campo_Inchauspe', DATUM['D_Campo_Inchauspe', SPHEROID['International_1924',6378388.0,297.0]]

Esos datos debo buscarlos dentro de la tabla SPATIAL_REF_SYS para indicar el sistema de georeferencia a la base de datos Tambien es posible verlos con ogrinfo

Shp2pgsql: Opciones
shp2pgsql [opciones] <archivo shape> [<esquema>.]<tabla> Opciones: (c|a|d|p) Estas opciones son mutuamente exclusivas: -c Creates a new table and populates it from the shapefile. This is the default mode. -a Appends data from the Shape file into the database table. Note that to use this option to load multiple files, the files must have the same attributes and same data types. -d Drops the database table before creating a new table with the data in the Shape file. -p Only produces the table creation SQL code, without adding any actual data. This can be used if you need to completely separate the table creation and data loading steps. -? Display help screen. -s <SRID>Creates and populates the geometry tables with the specified SRID.

Shp2pgsql: Opciones
Mas Opciones: -D Use the PostgreSQL "dump" format for the output data. This can be combined with -a, -c and -d. It is much faster to load than the default "insert" SQL format. Use this for very large data sets. -k Keep identifiers' case (column, schema and attributes). Note that attributes in Shapefile are all UPPERCASE. -i Coerce all integers to standard 32-bit integers, do not create 64-bit bigints, even if the DBF header signature appears to warrant it. -I Create a GiST index on the geometry column. -w Output WKT format, for use with older (0.x) versions of PostGIS. Note that this will introduce coordinate drifts and will drop M values from shapefiles. -W <encoding> Specify encoding of the input data (dbf file). When used, all attributes of the dbf are converted from the specified encoding to UTF8. -n Only import DBF file. If your data has no corresponding shapefile, it will automatically switch to this mode and load just the dbf. So setting this flag is only needed if you have a full shapefile set, and you only want the attribute data and no geometry. -G Use geography type instead of geometry (requires lon/lat data) in WGS84 long lat (SRID=4326)

Ejemplo de generacin de sql


shp2pgsql.exe -s SRID (22193 para los shape con GCS_Campo_Inchauspe) nombre del shape nombre de la tabla > nombre archivo salida.sql

Consultando datos
Laguna de mayor superficie SELECT gid, tipo, provincia, pais, area(the_geom) AS area, observacio FROM lagunas ORDER BY area DESC LIMIT 1 Cul es el largo de cada red ferroviaria SELECT nombre, trocha, provincia, pais, length(the_geom) AS longitud FROM ferroviarias ORDER BY longitud desc

Ejercicios
Crear la tabla contorno de la provincia de La Pampa con sus datos a partir del shape contorno.shp
shp2pgsql.exe -s 22193 contorno contorno > contorno.sql

CREATE TABLE contorno ( gid serial NOT NULL, tipo character varying(15), nombre character varying(30), pais character varying(25), provincia character varying(30), hoja character varying(10), observacio character varying(30), aclaracion character varying(146), the_geom geometry, CONSTRAINT contorno_pkey PRIMARY KEY (gid), CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2), CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'MULTILINESTRING'::text OR the_geom IS NULL), CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = (-1)) ) Tipo de contorno : PROVINCIAL y DEPARTAMENTAL Nombre : con que provincia limita ej. CORDOBA-LA PAMPA, LA PAMPA-SAN LUIS

Ejercicios:
Seleccionar las longitudes de las fronteras con las distintas provincias SELECT nombre, sum(length(the_geom)) as frontera FROM contorno WHERE tipo = 'PROVINCIAL' GROUP BY nombre ORDER BY frontera

Ejercicios
Importar el shape de lagunas Listar las hras. de cada laguna
SELECT ST_Area(the_geom)/10000 AS hectares, nombre, provincia, pais FROM lagunas ORDER BY provincia, pais

Ejercicios
Importar el shape partidos
Ver la definicin de la tabla generada Hallar el permetro y la superficie de cada partido. Hallar el partido de mayor superficie.

Importar el shape de localidades


Listar las localidades y dentro de que partido se encuentran. Listar las rutas que pasan a menos de 5 km de localidades Listar los partidos vecinos del partido de Tandil

Ejercicios
Importar el shape carreteras Listar las carreteras que se cruzan. Cual es la carretera mas larga? Cuales son las carreteras que atraviesan el partido de Tandil?
Nota: en el conjunto de datos provistos hay nombres de rutas con valor 0 y nombres de partidos con valor nulo que pueden ser descartados.

También podría gustarte