You are on page 1of 28

Prctica PostgreSQL + PostGIS.

SIAPAD: Sistema de Informacin Andino para la Prevencin y Atencin de Desastres

ndice
Instalacin.............................................................................................................................................4 Windows xp.....................................................................................................................................4 Kubuntu 7.04...................................................................................................................................9 Conceptos bsicos..............................................................................................................................10 Creacin de una instancia de base de datos postGIS.....................................................................10 Windows XP.............................................................................................................................10 Kubuntu 7.04.............................................................................................................................12 Crear una capa postGIS con gvSIG...............................................................................................13 Crear una tabla postGIS con shp2pgsql.........................................................................................15 Cargar una capa PostGIS en gvSIG...............................................................................................15 Conceptos avanzados en PostgresSQL...............................................................................................17 Esquemas.......................................................................................................................................17 Roles y privilegios.........................................................................................................................18 Creacin de roles de grupo. ......................................................................................................19 Creacin de roles de login.........................................................................................................19 Asignar privilegios en un esquema...........................................................................................20 Asignar privilegios en un objeto de un esquema......................................................................21 Comprobacin de los privilegios con gvSIG............................................................................22 Configuracin de parmetros (postgresql.conf).............................................................................23 Seguridad a nivel de red (pg_hba.conf).........................................................................................24 Copias de seguridad.......................................................................................................................25 Conceptos avanzados en PostGIS......................................................................................................27 Funciones openGIS .......................................................................................................................27 Ejercicios...................................................................................................................................28 Aadir un sistema de coordenadas............................................................................................28

Figuras
Illustration 1: Pgina de descarga de PostgreSQL...............................................................................4 Illustration 2: Programa de instalacin de Postgres en Windows........................................................5 Illustration 3: Configuracin del servicio de PostgreSQL en windows...............................................6 Illustration 4: Modificar la variable de entorno PATH........................................................................7 Illustration 5: Men de Postgres en Windows......................................................................................8 Illustration 6: Herramienta de administracin pgAdmin III.................................................................9 Illustration 7: Crear una nueva base de datos con pgAdmin III.........................................................10 Illustration 8: Parmetros en pgAdmin III para crear una bd ............................................................12 Illustration 9: carga de un shapefile en gvSIG...................................................................................14 Illustration 10: Exportar capa con gvSIG...........................................................................................14 Illustration 11: Parmetros de conexin al exportar una capa en gvSIG...........................................15 Illustration 12: Conexin GeoBD gvSIG+.........................................................................................16 Illustration 13: Creacin de esquemas con pgAdminIII.....................................................................18 Illustration 14: Creacin de un grupo en postgreSQL........................................................................19
SIAPAD: Sistema de Informacin Andino para la Prevencin y Atencin de Desastres 2

Illustration 15: Rol de grupo al que pertenece un usuario..................................................................20 Illustration 16: Privilegios en un esquema.........................................................................................21 Illustration 17: Privilegios en un esquema.........................................................................................22 Illustration 18: Miembros de un grupo...............................................................................................22 Illustration 19: Fichero postgresql.conf..............................................................................................23 Illustration 20: Fichero pg_hba.conf..................................................................................................25 Illustration 21: Copias de seguridad lgicas con pgAdminIII............................................................26 Illustration 22: Restaurar una base de datos con pgAdminIII............................................................26 Illustration 23: Herramienta para consultas SQL...............................................................................27

SIAPAD: Sistema de Informacin Andino para la Prevencin y Atencin de Desastres

Instalacin
Windows xp1
Para estas prcticas emplearemos la versin 8.2.4.

Illustration 1: Pgina de descarga de PostgreSQL En primer lugar descomprimiremos el fichero postgresql-8.2.4-1.zip que encontraremos en el directorio del cdrom data/software/win. Este fichero puede descargarse tambin en http://www.postgresql.org/ftp/binary/v8.2.4/win32/ Una vez descargado lo descomprimiremos y ejecutaremos el fichero postgresql-8.2.msi. Primero deberemos seleccionar el idioma. Como el espaol no est disponible podemos seleccionar el ingls. Le damos a Siguiente.

En el caso que tuvisemos instalado el programa cygwin, tendremos que eliminar de la variable de entorno PATH la ruta a los binarios de este programa. Para acceder a las variables de entorno, desde un explorador de archivos, pulsar el botn derecho del ratn sobre MiPC, y en Propiedades/Opciones Avanzadas/Variables de entorno.

SIAPAD: Sistema de Informacin Andino para la Prevencin y Atencin de Desastres

En la siguiente ventana seleccionamos "PostGIS Spatial Extensions" y le decimos que lo instale en nuestro disco duro local y le damos a Siguiente. Con esta opcin estamos incluyendo el mdulo de PostGIS en la instalacin.

Illustration 2: Programa de instalacin de Postgres en Windows

En la nueva ventana sealamos Install as a service2 para que arranque Postgres cuando arranca el sistema. Tambin indicamos un nombre de usuario y contrasea que aadir al sistema si no existe y con el que se ejecutar la base de datos. Podemos poner, por ejemplo, "postgres" como usuario, y "postgres" como contrasea. Le damos a Siguiente.

Para ver los servicios instalados en windows xp ir a Panel de control -> Rendimiento y mantenimiento>Herramientas Administrativas -> Servicios. Aunque la instalacin crea el servicio automticamente para que se inicie al arrancar la mquina, en el caso que falle, habr que comprobar que el servicio est en estado iniciado y 5

SIAPAD: Sistema de Informacin Andino para la Prevencin y Atencin de Desastres

Illustration 3: Configuracin del servicio de PostgreSQL en windows

En el siguiente paso el asistente nos pide varios parmetros sobre la configuracin de la base de datos:

Inidicamos que inicialice el cluster. Seleccionamos el puerto de escucha (5432). Permitimos que se pueda acceder desde otras mquinas a la base de datos. Seleccionamos el lenguaje (Espaol). Seleccionamos la codificacin por defecto de las instancias de bases de datos, por ejemplo, latin9. Finalmente indicamos el nombre y contrasea que tendr el superusuario de la base de datos, por ejemplo, postgres y contrasea postgres. No hay que confundir este usuario (el que emplearemos para conectarnos a la base de datos) con el usuario que utiliza el sistema operativo para ejecutar la base de datos (el que comentbamos anteriormente).

SIAPAD: Sistema de Informacin Andino para la Prevencin y Atencin de Desastres

El resto de la instalacin se completa pulsando a "Siguiente. Una vez finalizada la instalacin, si queremos disponer de las herramientas de de PostgreSQL y PostGIS que se ejecutan en un intrprete de comandos (pg_dump,shp2pgsql...), ponemos el directorio bin de la instalacin de Postgres (C:\Archivos de programa\PostgreSQL\8.2\bin) en la varialbe de entorno PATH. Lo aadiremos desde un explorador de archivos, dndole al botn derecho del ratn sobre MiPC, y en Propiedades/Opciones Avanzadas/Variables de entorno.

Para comprobar la correcta instalacin ejecutar la herramienta de administracin pgAdmin3 (Inicio


SIAPAD: Sistema de Informacin Andino para la Prevencin y Atencin de Desastres 7

-> Programas -> PostgresSQL8.2 -> pgAdmin III).

Nos conectamos al servidor localhost haciendo doble click en el icono, nos solicitar la contrasea del usuario postgres (usuario de la base de datos), al validarnos veremos una serie de objetos que se han creado en la instalacin , los ms importantes son:

Bases de datos: son las instancias de bases de datos creadas, por defecto se crea la base de datos postgres y la base de datos con soporte geoespacial template_postgis. Esta instancia de base de datos contiene las funciones, procedimientos, tipos de datos y ms objetos necesarios para manejar informacin vectorial georreferenciada. Esquemas: son los contenedores de informacin de una instancia de base de datos. Una base de datos puede tener varios esquemas. Entre bases de datos no se puede ver la informacin pero s entre esquemas dentro de la misma bd. Por defecto se crea un esquema public. Tablas: son las unidades contenedoras de informacin dentro de un esquema. Por defecto, se habrn creado dos tablas (tal como se especifica en la norma SFA:

geometry_columns: tabla con informacin sobre las tablas que contienen alguna columna con geometras georeferenciadas. spatial_ref_sys: tabla con informacin sobre los sistemas de referencia empleados en la georreferenciacin de las geometras.

SIAPAD: Sistema de Informacin Andino para la Prevencin y Atencin de Desastres

Kubuntu 7.04
La versin de postgres para linux que hemos empleado en la prctica es 8.1. En primer lugar instalamos la versin de PostgreSQL que incluye la extensin PostGIS, para ello, en una shell ejecutar el siguiente comando3: sudo aptitude install postgresql-8.1-postgis El segundo paso es instalar la herramienta de administracin pgAdmin3 sudo aptitude install pgadmin3 De la misma forma que comentbamos antes, podemos comprobar la correcta instalacin abriendo el programa pgAdmin3. Hay que destacar que en la instalacin en kubuntu no se crea por defecto una instancia de base de datos con la plantilla de postGIS, por tanto, slo encontraremos las plantillas del sistema template0 y template1.

Hay que tener activados los repositorios universe en el fichero /etc/apt/sources.list 9

SIAPAD: Sistema de Informacin Andino para la Prevencin y Atencin de Desastres

Conceptos bsicos
Una vez instalada la base de datos y comprobado su correcto funcionamiento, abordaremos los conceptos ms bsicos como puede ser la creacin de una instancia de base de datos postGIS, la carga de datos vectoriales en un tabla y su posterior eliminacin.

Creacin de una instancia de base de datos postGIS.


Tras instalar el software, crearemos una instancia de base de datos que utilizaremos en el resto de la prctica.

Windows XP
Crearemos una nueva base de datos empleando la plantilla que viene por defecto, template_postgis. El uso de esta plantilla nos garantiza que la instancia de base de datos creada tendr todos los objetos de postGIS (las tablas geometry_columns y spatial_ref_sys, funciones, tipos de datos, casts, ...) El primer paso es ejecutar la herramienta pgAdmin3 conectndonos con el usuario postgres. Sobre el icono Bases de datos , botn derecho del ratn Nueva Base de Datos ...

Aparecer un cuadro de dilogo en el que indicaremos los siguiente parmetros:


Nombre: nombre de la instancia de base de datos, en nuestro caso le llamaremos postgis. Codificado: codificacin de los caracteres de la base de datos, en nuestro caso latin9 puesto que las fuentes de datos que emplearemos estn en esta codificacin. Es recomendable emplear la codificacin utf-8 como comentaremos ms adelante. De momento, y para simplificar, emplearemos esta obsoleta codificacin. Plantilla: emplearemos la plantilla que viene con la instalacin para la generacin de bases
10

SIAPAD: Sistema de Informacin Andino para la Prevencin y Atencin de Desastres

de datos postgis, template_postgis.

SIAPAD: Sistema de Informacin Andino para la Prevencin y Atencin de Desastres

11

De momento, nos centraremos en stos parmetros, ms adelante veremos el resto.

Kubuntu 7.04
Puesto que en la instalacin por defecto no hay una plantilla para crear instancias de bases de datos postGIS, crearemos una de nombre template_postgis para ello ejecutararemos en una shell los comandos siguientes4: Con este primer comando creamos una nueva instancia de base de datos de nombre template_postgis con el usuario postgres5. createdb -U postgres template_postgis Damos soporte para el lenguaje procedural pl/pgsql en la base de datos. createlang -U postgres plpgsql template_postgis Ejecutamos el script SQL que carga los objetos que convierten una base de datos normal en un base de datos postGIS:
4 5

pgAdmin3 puede realizar las mismas acciones que estos comandos. Tpicamente se llama a este usuario con privilegios totales sobre todas las instancias de base de datos, DBA (Data Base Administrator). 12

SIAPAD: Sistema de Informacin Andino para la Prevencin y Atencin de Desastres

psql -U postgres -d template_postgis -f /usr/share/postgresql-8.1-postgis/lwpostgis.sql Finalmente cargamos la tabla con los sistemas de referencia: psql -U postgres -d template_postgis -f /usr/share/postgresql-8.1-postgis/spatial_ref_sys.sql En este punto ya disponemos de la plantilla para crear bases de datos postGIS. Para crear una base de datos de nombre postgis bastara con ejecutar: createdb -U postgres -T template_postgis postgis

Crear una capa postGIS con gvSIG


Tras la creacin de una instancia de base de datos postGIS, emplearemos gvSIG para crear unas tablas con informacin vectorial. Recordemos los parmetros de conexin:

Usuario: postgres Password: postgres Host(mquina): localhost Puerto: 5432 Base de datos: postgis Esquema: public

Empezaremos esta parte de la prctica creando una nueva vista en gvSIG. Tras ello cargamos el shapefile carreteras.shp que encontraremos en el directorio Cartografia/postGIS del cdrom. (Vista -> Aadir Capa -> Archivo)

SIAPAD: Sistema de Informacin Andino para la Prevencin y Atencin de Desastres

13

Una vez cargada la capa, la exportaremos a postGIS con su utilidad de exportacin de capas6 (Capa -> Exportar a ... -> postGIS)

Indicamos el nombre de la tabla que contendr la informacin geogrfica y alfanumrica del


6

Para poderse exportar una capa debe estar seleccionada. 14

SIAPAD: Sistema de Informacin Andino para la Prevencin y Atencin de Desastres

shapefile, le podemos llamar carreteras, por ejemplo. Tras este paso, aparecer un cuadro de dilogo donde especificaremos los parmetros de conexin a la base de datos que comentbamos al principio de este captulo.

Tras cargar los datos en postGIS, el programa nos preguntar si deseamos cargar la capa recin creada en la vista. Responderemos afirmativamente a esta cuestin con la finalidad de ver la tabla recin creada. Prctica Libre: probar a cargar distintos tipos de ficheros vectoriales como DWGs, DXFs, DGNs, etc ...

Crear una tabla postGIS con shp2pgsql


PostGIS tiene su propio cargador para shapefiles, se trata del comando shp2pgsql. Para probar su funcionamiento ejecutaremos en un intrprete de comandos y nos situaremos en el directorio que contiene la cartografa para las prcticas de postGIS (data/Cartografia/postgis), aqu ejecutamos7: shp2pgsql -I -s 23030 limites.shp limites | psql -U postgres -h localhost -d postgis Prctica libre: ver las distintas opciones que tiene el comando shp2pgsql. Prctica libre: redireccionar la salida del comando shp2pgsql a un fichero sql para ver su contenido.

Cargar una capa PostGIS en gvSIG


Para comprobar que todo el proceso ha sido correcto, cargaremos la tabla recin cargada en gvSIG (Vista -> Aadir Capa -> GeoBD). Por ello no insertaremos la capa en la vista tras su carga. De nuevo, ponemos los parmetros de conexin.
7

Si no exite el comando es porque no est definida correctamente la variable de entorno PATH. 15

SIAPAD: Sistema de Informacin Andino para la Prevencin y Atencin de Desastres

Illustration 12: Conexin acabamos de Finalmente seleccionamos la tabla queGeoBD gvSIG+ crear:

SIAPAD: Sistema de Informacin Andino para la Prevencin y Atencin de Desastres

16

Conceptos avanzados en PostgresSQL


Aunque realmente no se tratan de conceptos muy avanzados, queremos dividir esta parte en la que se profundiza sobre la base de datos PostgresSQL. La mayora de los ejercicios los haremos con la herramienta de administracin pgAdmin III.

Esquemas
Hasta ahora hemos visto el concepto de instancia de base de datos y plantilla, adems de stos, veremos que una base de datos puede tener varios esquemas que son los que realmente contienen las tablas, procedimientos, etc ... Por defecto, cuando creas una base de datos se crea el esquema public. Algunas de las caractersticas de los esquemas son los siguientes:

Objetos de diferentes esquemas puede verse siempre que estn en la misma instancia de base de datos. Objetos de distintas bases de datos no tienen acceso. Para acceder a un objeto de un esquema, en SQL se especifica como nombre_esquema.nombre_objeto. Si no especificas el esquema en una consulta, postgreSQL
17

SIAPAD: Sistema de Informacin Andino para la Prevencin y Atencin de Desastres

utilizar cualquiera de los esquemas especificados en la variable de usuario search_path. Para crear un esquema con pgAdminIII basta con pulsar el botn derecho sobre los esquema y seleccionar Nuevo Esquema.

Prctica libre: modificar la variable search_path del usuario postgres de forma que acceda por defecto a un esquema distinto al public. Comprobar que al cargar un shapefile con el comando shp2pgsql la tabla se guarda en el nuevo esquema. Volver a ejecutar el comando indicando en esta ocasin la ruta completa a la tabla con la sintaxis esquema.tabla, guardar la tabla en el esquema public.

Roles y privilegios
Hasta el momento hemos empleado el DBA (postgres) como usuario para realizar todas las operaciones en la bases de datos. Sin embargo, esto no es recomendable ya que este usuario tiene privilegios totales sobre cualquier objeto de la base de datos. En una organizacin, lo ms habitual es que exista un conjunto de usuarios que tiene ciertos privilegios sobre ciertos objetos de la base de datos. En esta parte de la prctica veremos cmo aadir roles (usuarios o grupos de usuarios) y otorgar privilegios a dichos roles. En postgreSQL encontraremos dos tipos de roles, el rol de login y el rol de grupo. El primero identifica a un usuario y el segundo a un grupo. La nica diferencia significativa entre ambos es que el primero puede conectarse a la base de datos mientras que el segundo no puede. El segundo tipo de rol, el de grupo, lo emplearemos para agrupar los roles de login que comparten los mismos privilegios. En cuanto a los privilegios, se pueden diferenciar entre los privilegios en el esquema y los privilegios en los objetos del esquema (tablas, funciones, ...). Los privilegios en un esquema son de
SIAPAD: Sistema de Informacin Andino para la Prevencin y Atencin de Desastres 18

uso (puedo acceder al esquema) y creacin (puedo crear objetos en el esquema), mientras que los privilegios en los objetos son los tpicos SELECT, UPDATE, INSERT, etc. Para familiarizarnos con estos conceptos emplearemos la base de datos creada anteriormente, postgis, donde crearemos dos roles de grupo, el primero llamado editores que tendr privilegios para crear y modificar objetos en el esquema public y el segundo, llamado consultores que slo tendr permisos de consulta. Una vez creado estos grupos, aadiremos un usuario consultorX al grupo consultores y un usuario (rol de login) llamado editorX al grupo de editores. La idea es que los usuarios de un grupo puedan leer la cartografa y los usuarios de otro grupo puedan modificarla.

Creacin de roles de grupo.


En primer lugar nos conectamos a la base de datos del servidor localhost con el DBA que es el nico rol que existe por ahora. Tras conectarnos, pulsaremos con el botn derecho de nuestro ratn en Roles de grupo y seleccionamos Nuevo Rol de Grupo. Aparecer un dilogo como el de la figura en el que pondremos los datos de los nuevos roles de grupo8.

Creacin de roles de login


Una vez creados los grupos, crearemos los roles de login editorX y consultorX que pertenecern al grupo editores y consultores respectivamente. Para crear los roles de login, pulsar con el botn derecho en Roles de Login -> Crear Nuevo Rol de Login. Aparecer un cuadro de dilogo igual al que utilizbamos para crear los roles de grupo, aqu es importante destacar que se debe marcar la casilla Hereda permisos de los roles padre, con sto todos los roles que pertenezcan a este tendrn los mismos privilegios. Tras indicar el nombre del rol nos situaremos en la pestaa
8

Los checkbox que aparecen son privilegios especiales del rol que no son heredados por los miembros de ese rol. 19

SIAPAD: Sistema de Informacin Andino para la Prevencin y Atencin de Desastres

Membresa del Role e indicaremos que el usuario es miembro del grupo correspondiente.

Illustration 15: Rol de grupo al que pertenece un usuario

Asignar privilegios en un esquema.


Una vez creados todos los roles, el siguiente paso ser asignar a los roles de grupo los privilegios en el esquema y en los objetos del esquema. Para dar permisos en el esquema, pulsaremos con el botn derecho en el esquema y seleccionamos Propiedades -> Privilegios, all aadimos el grupo correspondiente e indicamos el tipo de privilegios. En nuestro ejemplo aadiremos el grupo editores con todos los privilegios y el grupo consultores con privilegios de uso.

SIAPAD: Sistema de Informacin Andino para la Prevencin y Atencin de Desastres

20

Asignar privilegios en un objeto de un esquema


Tras asignar los privilegios en el esquema, debemos hacer los mismo para cada objeto concreto del esquema, para ello seleccionamos con el botn derecho del ratn el Asistente para permisos en el esquema. En l seleccionamos todos los elementos que nos interesan, en nuestro caso la tabla carreteras y la tabla geometry_columns9, despus pasamos a la pestaa de privilegios donde elegimos todos los privilegios All para el grupo editores y Select para el grupo consultores.

Es importante dar permisos en esta tabla ya que las aplicaciones cliente, como gvSIG, consultan esta tabla para averiguar datos referentes a las tablas que contienen cartografa. 21

SIAPAD: Sistema de Informacin Andino para la Prevencin y Atencin de Desastres

Adems, para el grupo de editores deberemos dar todos los permisos en la secuencia de la tabla (carreteras) ya que para crear nuevos elementos en la tabla se necesita el uso de dicha secuencia.

Comprobacin de los privilegios con gvSIG


Primero comprobaremos como el rol consultorX slo es capaz de visualizar una tabla (privilegio

SIAPAD: Sistema de Informacin Andino para la Prevencin y Atencin de Desastres

22

SELECT), para ello cargaremos la tabla carreteras empleando una conexin con el usuario consultorX. Deber de visualizarse sin problemas. Tras ello seleccionaremos la capa y la pondremos en edicin para aadir una carretera, gvSIG indicar un error que confirma nuestras sospechas, consultorX no tiene privilegios para modificar el objeto carreteras. La segunda comprobacin ser poner en edicin la capa carreteras para aadir un elemento pero en este caso con el usuario editorX. No deber dar problemas al terminar la edicin. Copias de seguridad

Configuracin de parmetros (postgresql.conf)


En este fichero podemos modificar los parmetros generales de configuracin de la instalacin de postgreSQL como el puerto de escucha, la opcin de autovacuum, etc ... Para modificarlo podemos utilizar pgAdmin3, Archivo -> Abrir postgresql.conf10.

Illustration 19: Fichero postgresql.conf

Prctica libre: probar a modificar algn parmetro. Por ejemplo, se puede cambiar el puerto al 6432 y probar a conectarnos con gvSIG.

10

En linux este fichero est en el direcotorio /etc/postgres y tiene permisos para el usuario y grupo postgres. Para modificarlo desde pgAdminIII debers tener permisos de escritura. 23

SIAPAD: Sistema de Informacin Andino para la Prevencin y Atencin de Desastres

Seguridad a nivel de red (pg_hba.conf)


PostgreSQL dispone de un mecanismo para restringir el acceso por la red (a travs del puerto 5432). Para modificar dicho acceso tenemos el fichero pg_hba.conf que podemos manipular con pgAdminIII, Abrir -> Fichero pg_hba.conf.

SIAPAD: Sistema de Informacin Andino para la Prevencin y Atencin de Desastres

24

Copias de seguridad
Aunque existen varios mtodos para hacer copias de seguridad (fsica, lgica, fsica online, ...), en este punto nos centraremos en las copias de seguridad lgicas de una instancia de base de datos con pgAdminIII. Para realizar la copia de seguridad nos situamos con el ratn encima de la base de datos, en nuestro ejemplo postgis, y con el botn derecho seleccionamos Resguardo. Nos aparecer un cuadro de dilogo dnde seleccionaremos el fichero en el que se volcar los datos y otros parmetros. Si todo el proceso ha sido correcto nos aparecer un mensaje indicando algo como: El proceso retorn el cdigo de salida 0

SIAPAD: Sistema de Informacin Andino para la Prevencin y Atencin de Desastres

25

Illustration 21: Copias de seguridad lgicas con pgAdminIII

En el segundo paso simularemos una cada de la base de datos y su posterior recuperacin con la copia de seguridad. Para ello, eliminaremos la base de datos postGIS, sobre la base de datos pulsaremos el botn derecho del ratn Borrar/Eliminar. Una vez borrada la base de datos la volveremos a crear con el mismo nombre, sobre ella pulsaremos el botn derecho del ratn y elegiremos la opcin Restaurar.

Illustration 22: Restaurar una base de datos con pgAdminIII

Podemos comprobar el resultado volviendo a cargar la tabla carreteras con gvSIG.

SIAPAD: Sistema de Informacin Andino para la Prevencin y Atencin de Desastres

26

Conceptos avanzados en PostGIS


Una vez profundizado en los aspectos ms bsicos de postgreSQL nos centraremos en el mdulo postGIS.

Funciones openGIS
PostGIS implementa la especificacin SFA que define un esquema SQL para el acceso a informacin georreferenciada en una base de datos relacional. En esta especificacin se definen una serie de operaciones bsicas sobre geometras, cmo deben almacenarse en la base de datos, etc ... Veamos mediante una serie de ejercicios algunas de estas funciones y las posibilidades del lenguaje de acceso a bases de datos SQL11. Emplearemos la base de datos postgis que hemos estado utilizando durante toda la prctica y el programa para ejecutar sentencias SQL de pgadmin. Para poder ejecutar una sentencia SQL seleccionamos con el ratn la instancia de base de datos deseada y elegimos en el men Herramientas -> Herramientas para Consulta

Illustration 23: Herramienta para consultas SQL

11

En los ejercicios emplearemos funciones estdar del lenguaje SQL, propias del estndar openGIS y funciones especficas de PostGIS. 27

SIAPAD: Sistema de Informacin Andino para la Prevencin y Atencin de Desastres

Ejercicios
1. Cuntas carreteras hay? select count(*) from carreteras 2. Cuales son los distintos tipos de carreteras? select distinct(cod_ent) from carreteras 3. Qu tipo de geometras representa las carreteras? select distinct(geometryType(the_geom)) from carreteras 4. Ver en formato WKT la carretera con identificador nico 10. select asText(the_geom) from carreteras where gid=10 5. Ver en formato WKB la carretera con identificador nico 10. select asBinary(the_geom) from carreteras where gid=10 6. Obtener los identificadores nicos de las carreteras que estn dentro del rectngulo formado por las coordenadas minX=450000, minY=4050000, maxX=500000, maxY=4100000 select gid FROM carreteras WHERE the_geom && setSRID('BOX3D(450000 4050000, 500000 4100000)'::box3d, 23030) 7. Aadir una nueva carretera que cruza en lnea recta desde el punto 450000, 4050000 al 500000, 4100000 y es del tipo 'V10' insert into carreteras(the_geom,cod_ent) values (GeomFromText('MULTILINESTRING((450000 4050000, 500000 4100000))','23030'),'v10') 8. Obtener el centro de la carretera recin creada. select astext(centroid(the_geom)) from carreteras where cod_ent='v10'

Aadir un sistema de coordenadas

SIAPAD: Sistema de Informacin Andino para la Prevencin y Atencin de Desastres

28

You might also like