Documente Academic
Documente Profesional
Documente Cultură
ACEVEDO
rfacevedo@yahoo.com
RAUL ACEVEDO
rfacevedo@yahoo.com
Nombre
usuario
Contrasea
usuario
Privilegios
3.- Crear una base de datos geogrfica con el nombre TALLER con el
rol usuario utilizando pgAdmin:
a.- Base de datos
RAUL ACEVEDO
rfacevedo@yahoo.com
RAUL ACEVEDO
rfacevedo@yahoo.com
La tabla creada no posee geometra, usted debe agregar el campo que almacenar
la geometra utilizando la funcin de PostGis AddGeometryColumn.
Esta funcin requiere, entre otros parmetros, el cdigo EPSG del Sistema
de Referencia espacial de los datos. Si no lo conoce, puede buscar en el sitio web
http://spatialreference.org, el cual tiene una referencia completa de los diferentes
cdigos.
Por ejemplo, busque 'Ecuador' en el sitio web para encontrar el cdigo EPSG del
Sistema de Referencia correspondiente.
Para el ejercicio, se emplear el cdigo 4326 que corresponde al Sistema de
Referencia WGS84, compatible con SIRGAS.
Ejecute la instruccin:
SELECT
AddGeometryColumn('tabla_puntos','geom',4326,'POINT',2);
Los argumentos de AddGeometryColumn son:
Nombre de la tabla
Nombre del campo con geometra
Sistema de Referencia (Cdigo EPSG) (-1: Desconocido)
Geometra: [Multi]Point, [Multi]Linestring, [Multi]Polygon (entre otras)
Dimensin
Con esto tenemos una Base de Datos Geogrficos con una tabla que puede almacenar
geometra.
RAUL ACEVEDO
rfacevedo@yahoo.com
INSERT INTO tabla_puntos (geom,altura) VALUES
(ST_GeomFromText('POINT(-74.1164 4.7096)',4326),152);
La opcin GIST le ordena al servidor el uso del ndice GIST (Generalized Search
Tree) . El ndice GIST est diseado para optimizar el tiempo de bsqueda sobre
datos espaciales.
Observe los valores del campo geom, son datos binarios. Obtenga una descripcin
ms apropiada de la geometra con la siguiente consulta, que emplea la funcin
de PostGIS AsText (la funcin AsText retorna la geometra en el formato WKG Well
Known Geometry):
SELECT gid, st_AsText(geom) FROM tabla_puntos;
Note que si agrega una clasula WHERE a la consulta podr obtener la distancia
entre cada par de puntos de la tabla (sin repetir parejas y sin tener en cuenta las
distancias de un punto consigo mismo). Agregue WHERE p1.gid < p2.gid justo
RAUL ACEVEDO
rfacevedo@yahoo.com
antes del punto y coma de la consulta y observe el resultado.
Observe que es necesario proyectar los puntos al Sistema de Referencia 3116 antes
de calcular la distancia en metros.
RAUL ACEVEDO
rfacevedo@yahoo.com
Nota: Defina como propietario de los esquemas al usuario 'usuario':
RAUL ACEVEDO
rfacevedo@yahoo.com
c.-
QGIS:
RAUL ACEVEDO
rfacevedo@yahoo.com
RAUL ACEVEDO
rfacevedo@yahoo.com
RAUL ACEVEDO
rfacevedo@yahoo.com
RAUL ACEVEDO
rfacevedo@yahoo.com
d.- GDAL/OGR
GDAL/OGR es una librera de lectura y escritura de formatos geoespaciales, tanto Raster con
GDAL como Vectorial con OGR. Se trata de una librera de software libre ampliamente
utilizada.
ogrinfo
ogrinfo obtiene informacin de los datos vectoriales. Podremos utilizar esta herramienta para
la obtencin de esta informacin de las tablas que tenemos almacenadas en la base de datos. El
uso se realiza a travs de la consola:
$ ogrinfo [<opciones>] <ruta fuente datos>
e.- ogr2ogr
OGR es capaz de convertir a PostGIS todos los formatos que maneja, y ser capaz de exportar
desde PostGIS todos aquellos en los que tiene permitida la escritura. Ejecutando:
RAUL ACEVEDO
rfacevedo@yahoo.com
$ ogr2ogr --formats
Crear a mano una tabla con los campos necesarios y usar el comando COPY de
PostgreSQL para copiar directamente el CSV.
Crear un fichero VRT a partir del CSV y cargar con ogr2ogr dicho fichero VRT
RAUL ACEVEDO
rfacevedo@yahoo.com
Node
Way
Relation
Punto
Linea
Poligono
una caracterstica particular es la ausencia de polgonos dentro del modelo, estos se realizan mediante la
asignacin de una relacin a una linea cerrada. Esta particularidad no impide que los datos de OSM
puedan ser adaptados al modelo de geometras normal mediante cargadores de datos OSM. A
continuacin se presentan dos de los ms utilizados
osm2pgsql
Mediante el uso de este programa podremos incorporar en nuestra base de datos los datos obtenidos desde
OSM. Una vez que hemos realizado la importacin, aparecern en nuestra base de datos las tablas que
sern el resultado de esta importacin:
planet_osm_point
planet_osm_line
planet_osm_polygon
planet_osm_roads
Al disponer el modelo de OSM de cientos de etiquetas, la importacin crea en las tablas un gran nmero
de campos de los que la mayora tendrn valor NULL.
La ejecucin se realiza desde la consola:
RAUL ACEVEDO
rfacevedo@yahoo.com
Ejercicio 2
13.- Relaciones Espaciales:
Los principales mtodos de la clase Geometry para chequear predicados espaciales entra la
geometra en cuestin y otra proporcionada como parmetro son:
Equals (A, B): Las geometras son iguales desde un punto de vista topolgico
Disjoint (A, B): No tienen ningn punto en comn, las geometras son disjuntas
Intersects (A, B):Tienen por lo menos un punto en comn. Es el inverso de Disjoint
Touches (A, B): Las geometras tendrn por lo menos un punto en comn del contorno,
pero no puntos interiores
Crosses (A, B): Comparten parte, pero no todos los puntos interiores, y la dimensin de
la interseccin es menor que la dimensin de al menos una de las geometras
Contains (A, B): Ningn punto de B est en el exterior de A. Al menos un punto del
interior de B est en el interior de A
Within (A, B): Es el inverso de Contains. Within(B, A) = Contains (A, B)
Overlaps (A, B): Las geometras comparten parte pero no todos los puntos y la
interseccin tiene la misma dimensin que las geometras.
Covers (A, B): Ningn punto de B est en el exterior de A. B est contenido en A.
CoveredBy (A, B): Es el inverso de Covers. CoveredBy(A, B) = Covers(B, A)
ST_Equals
ST_Equals(geometry A, geometry B), comprueba que dos geometras sean
espacialmente iguales.
ST_Equals devuelve TRUE si dos geometras del mismo tipo tienen identicas coordenadas x,y.
Ejemplo
RAUL ACEVEDO
rfacevedo@yahoo.com
ST_Intersects
ST_Intersects(geometry A, geometry B)
Devuelve TRUE si la interseccin no es un resultado vacio.
ST_Disjoint
ST_Disjoint(geometry A , geometry B)
Es el inverso de ST_Intersects. indica que dos geometras no tienen ningn punto en comn. Es menos
eficiente que ST_Intersects ya que esta no est indexada. Se recomienda comprobar NOT
ST_Intersects
ST_Crosses
ST_Crosses(geometry A, geometry B)
Se cumple esta relacin si el resultado de la inteseccin de dos geometras es de dimensin menor que la
mayor de las dimensiones de las dos geometras y adems esta interseccin est en el interior de ambas.
ST_Overlap
ST_Overlaps(geometry A, geometry B)
compara dos geometras de la misma dimensin y devuelve TRUE si su interseccin resulta una
geometra diferente de ambas pero de la misma dimensin
Ejemplo
Ejemplo
RAUL ACEVEDO
rfacevedo@yahoo.com
ST_DWithin(geometry A, geometry B, distance)
Permite calcular si dos objetos se encuentran a una distancia dada uno del otro.
Ejemplo
JOINS espaciales
Permite combinar informacin de diferentes tablas usando relaciones espaciales como clave dentro del
JOIN. Es una de las caracteristicas ms potentes de las bases de datos espaciales.
JOIN y GROUP BY
El uso de las relaciones espaciales junto con funciones de agregacion, como group by, permite
operaciones muy poderosas con nuestros datos. Veamos un ejemplo sencillo:
Operadores espaciales
RAUL ACEVEDO
rfacevedo@yahoo.com
Estos son los encargados de realizar operaciones geomtricas entre las geometras que se les pasa como
argumentos. Estn definidos en la norma SFA y PostGIS soporta todos ellos.
Buffer
Es el conjunto de puntos situados a una determinada distancia de la geometra
Interseccin
Genera una geometra a partir de la interseccin de las geometras que se les pasa como parmetros.
Cal es el area en comn de dos crculos situados en los puntos (0 0) y (3 0) de radio 2?:
SELECT ST_AsText(ST_Intersection(
ST_Buffer('POINT(0 0)', 2),
ST_Buffer('POINT(3 0)', 2) ));
Unin
Al contrario que en el caso anterior, la unin produce un una geometra comn con las geometras que se
le pasa a la funcin como argumento. Esta funcin acepta como parmetro dos opciones, las geometras
que sern unidas:
ST_Union(Geometra A, Geometra B)
o una coleccin de geometras:
ST_Union([Geometry])
RAUL ACEVEDO
rfacevedo@yahoo.com
Diferencia simtrica
ST_SymDifference(Geometra A, Geometra B)
Ejercicio 3
RAUL ACEVEDO
rfacevedo@yahoo.com
SELECT Populate_Geometry_Columns('eventos_08_10_cantones'::regclass);
http://www.sqlpower.ca/page/splash
RAUL ACEVEDO
rfacevedo@yahoo.com