Beruflich Dokumente
Kultur Dokumente
Conectarse a PostGIS
Conectarse a la instancia
Crear una nueva conexin al equipo XXX Usario postgres, Contrasea xxxxxxxxx
Una vez instalado PostgreSQL aparecer una entrada en el men Inicio. Ir al men PostgreSQL y ejecutar PgAdmin III. Hacer doble clic en la opcin PostgreSQL Database Server . Se solicitar la contrasea del administrador. Navegar hasta la seccin Databases del rbol de bases de datos y elegir Edit New Object New Database. Aadir una nueva base de datos postgis, con postgres como propietario, template1 como plantilla y pg_default como tablespace Abre la nueva base de datos postgis y acceder a Languages. Comprobar que PL/PgSQL ya estinstalado. Este lenguaje es necesario para PostGIS. Abrir la ventana SQL pulsando el botn SQL Elegir File Open y navegar a C:\Program Files\PostgreSQL\8.2\contrib\share\lwpostgis.sql Presionar el botn Run (tringulo verde.) El fichero se ejecutar, cargando las funciones y objetos dentro de la base de datos postgis Elegir File Open y navegar a C:\Program Files\PostgreSQL\8.2\contrib\share\spatial_ref_sys.sql Ejecutar de nuevo el botn Run. El fichero spatial_ref_sys.sql se ejecutar, cargando elsistema de referencia de coordenadas EPSG en la tabla de referencias espaciales de PostGIS.
En este ejemplo se utilizan dos funciones espaciales: Distance() y AsText(). Ambas funciones utilizan geometra como argumento. La funcin Distance() la distancia cartesiana entre dos objetos. La funcin AsText() convierte a texto el resultado, en formato WKT (Well-Known Text).
Cuando a una base de datos se le han asignado capacidades espaciales en PostGIS, 2 tablas de metadatos se crean, tal y como indica la especificacin Simple Features for SQL del Open Geospatial Consortium: -SPATIAL_REF_SYS -GEOMETRY_COLUMNS La tabla GEOMETRY_COLUMNS indica las tablas espaciales que existen en la base de datos. No se actualiza de forma automtica. Por ejemplo, al ejecutar el comando CREATE TABLE incluyendo un campo de tipo GEOMETRY, no aade una entrada a esta tabla. La funcin AddGeometryColumn(), por ejemplo, s lo hace: aade en un comando un campo de tipo GEOMETRY a la tabla, e incluye un registro en la tabla GEOMETRY_COLUMNS. La tabla SPATIAL_REF_SYS almacena todos los sistemas de referencia espacial, planos y proyectados. Cada geometra en la base de datos, tiene un SRID asociado. Esta tabla utiliza los identificadores SRID del EPSG
Nombre completo de la tabla que contiene la geometra. Nombre del campo que contiene la geometra en la tabla en cuestin
Catalog es un trmino proveniente de Oracle. (Catalog se deja en blanco porque no existe equivalente en postgreSQL) SRID: El ID del Sist. Ref. Espacial usada por la geometra en dicha tabla. Es una clave ajena a SPATIAL_REF_SYS.
N entero que identifica unvocamente a ese Sist. Ref. espacial en la Base de Datos Nombre del estndar para este Sist. Ref.
ID del Sist. Ref. tal y como lo define el estndar que aparece en auth_name
auth_srid: Para EPSG, es el cdigo de proyeccin. Proj4text: la representacin en formato WKT (Well-Known Text) del Sistema de Referencia Espacial.
Tabla PostGIS/PostgreSQL
Las columnas pueden ser geometra Las columnas pueden ser atributos
Lee el fichero .shp Crea fichero .sql Cargar fichero .sql en PostgreSQL
Utilizando psql Utilizando PgAdmin
Ejecutar cmd.exe
Cargaremos los datos cartogrficos (D:\Vivienda\Curso_PostGIS) en la BD. Se trata de ficheros SHAPE, y tenemos que convertirlos a un formato que entienda PostgreSQL. Para ello utilizamos el comando shp2pgsql, para posteriormente cargarlo en la base de datos con el comando psql Ejecutamos el fichero pg_shpsql.bat en primer lugar, que aade los comandos de PostgreSQL a la variable PATH, y as poder ejecutar shp2pgsql desde cualquier directorio. Despus conierte los ficheros SHAPE a formato SQL. Nuestros datos se enecuentran en coordenadas proyectadas (UTM 30N, ED50), la proyeccin se almacena en la tabla SPATIAL_REF_SYS con un SRID 23030. Cuando creamos el formato cargable, especificamos el SRID en la lnea de comandos, de modo los datos se referencian a este sistema de coordenadas. Esto lo necesitaremos ms tarde, al hacer una prctica de proyeccin. Crearemos el formato cargable en un fichero, y a continuacin lo cargaremos en PostgreSQL mediante psql, utilizando el comando sql2pg.bat. Ejecutar pg_shpsql.bat Ejecutar sql2pg.bat
Instalando Quantum-GIS
Visualizando datos
Anlisis Espacial
ST_Intersects(A, B)
Anlisis Espacial
ST_Touches(A, B)
Anlisis Espacial
ST_Crosses(A, B)
Anlisis Espacial
ST_DWithin(A, B, D)
D
Anlisis Espacial
Cul es la longitud total en kilmetros de carreteras? SELECT Sum( ST_Length( the_geom ) ) / 1000 AS vias_km FROM vias;
Anlisis Espacial
Qu superficie, en hectreas, tiene la poblacin de Bosques? SELECT ST_Area(the_geom)/10000 AS hectares FROM prov WHERE nombre = Bosques;
Anlisis Espacial
Cul es el municipio de mayor superficie? SELECT nombre, ST_Area(the_geom)/10000 AS hectareas FROM muni ORDER BY hectareas DESC LIMIT 1;
Anlisis Espacial
Cul es el permetro del municipio de Neza? SELECT ST_Perimeter(the_geom) FROM muni WHERE nombre = Neza;
Anlisis Espacial
Cul es el rea total de todos los municipios de madrid, en hectreas SELECT Sum(ST_Area(the_geom))/10000 AS hectares FROM muni;
Anlisis Espacial
Cul es el rea total (en hectreas) de todos los municipios con ms de 1.000.000 habitantes? SELECT sum(ST_Area(the_geom))/10000 as hectares FROM prov WHERE pob2005 > 1000000;
Anlisis Espacial
Cul es la longitud total de la carretera A3? SELECT Sum(ST_Length(the_geom))/1000 AS kilometers FROM vias WHERE texto = A-3 OR texto = N-III;
Anlisis Espacial
Qu poblacin tienen los municipios que se encuentran a 5 km de una coordenada? SELECT nombre, sum(censo_2001) as muni_cerca FROM muni where ST_DWithin(the_geom, ST_GeomFromText('POINT(500000 4300000)', 23030), 5000) GROUP BY nombre;
Anlisis Espacial
Qu municipios estn situados a menos de 2 km de una mina? SELECT nombre FROM muni m, urbano u WHERE ((u.texto ilike 'Mina%') AND (ST_DWithin(m.the_geom,u.the_geom,2000))) GROUP BY nombre;
Anlisis Espacial
Ncleos urbanos que est a menos de 250 metros de las autovas SELECT h.texto FROM urbano h, autop p WHERE ST_DWithin(h.the_geom, p.the_geom, 250);
Anlisis Espacial
MUNICIPIOS CRUZADOS POR LA A-3 SELECT nombre FROM muni m, autop u WHERE ((u.nom_via ilike 'A-3%' OR u.nom_via ilike 'N-III%') AND (ST_DWithin(m.the_geom,u.the_geom,2000))) GROUP BY nombre;
Anlisis Espacial
NCLEOS URBANOS A MENOS DE 2000 METROS DE LA A-3
Sin orden optimizado
SELECT texto FROM urbano m, autop u WHERE u.nom_via ilike 'A-3%' OR u.nom_via ilike 'N-III%' and ST_DWithin(m.the_geom,u.the_geom,2000) group by texto;
Anlisis Espacial
NCLEOS URBANOS A MENOS DE 2000 METROS DE LA A-3
Con orden optimizado
SELECT texto FROM urbano m, autop u WHERE((u.nom_via ilike 'A-3%' OR u.nom_via ilike 'N-III %') AND (ST_DWithin(m.the_geom,u.the_geom,2000))) GROUP BY texto;
Solapes
Las interseciones de capa a capa son posibles con la funcin ST_Intersection()
ST_Intersects(a,b) devuelve BOOLEAN ST_Intersection(a,b) devuelve GEOMETRY
CREATE TABLE muni_hgo AS 4.4 - Overlays SELECT ST_Intersection(v.the_geom, m.the_geom) AS intersection_geom, ST_Area(v.the_geom) AS va_area, v.*, m.nombre FROM muni v, prov m WHERE ST_Intersects(v.the_geom, m.the_geom) AND m.nombre = Hidalgo;
CREATE TABLE muni_hgo2 AS 4.4 - Overlays SELECT ST_Intersection(v.the_geom, m.the_geom) AS intersection_geom, ST_Area(v.the_geom) AS va_area, v.*, m.nombre FROM muni v, prov m WHERE ST_Within(v.the_geom, m.the_geom) AND m.nombre = Progreso;
CREATE TABLE muni_hgo3 AS 4.4 - Overlays SELECT ST_Intersection(v.the_geom, m.the_geom) AS intersection_geom, ST_Area(v.the_geom) AS va_area, v.*, m.nombre FROM muni v, prov m WHERE ST_Intersects (ST_Centroid(v.the_geom), m.the_geom) AND m.nombre = DF;