Manual PostGIS
Manual PostGIS.
Página 1 de 21
Manual PostGIS
Nota:
He traducido el Manual PostGIS de Paul Ramsey para facilitar su uso a los usuarios de
lengua castellana. Agradecería que me comunicasen las erratas y comentarios a
[email protected].
Manuel Martín Martín
Página 2 de 21
Manual PostGIS
Índice de contenido
Manual PostGIS..............................................................................................................................1
1.Objetos GIS.............................................................................................................................4
1.1.Forma CANONICA vs ESTANDAR............................................................................4
2. Usar el estándar OpenGIS....................................................................................................5
2.1. SPATIAL_REF_SYS:...................................................................................................5
2.2. GEOMETRY_COLUMNS:..........................................................................................6
2.3. Crear una tabla espacial.................................................................................................7
3. Cargar datos GIS en la base de datos Espacial.....................................................................8
4. Recuperar datos GIS..............................................................................................................9
5. Construir índices..................................................................................................................11
5.1. Índices GIST.................................................................................................................12
5.2. Usar Índices..................................................................................................................13
6. Clientes Java(JDBC)............................................................................................................13
7. Referencia PostGIS..............................................................................................................16
Página 3 de 21
Manual PostGIS
PostGIS: Es una extensión al sistema de base de datos objeto-relacional PostgreSQL.
Permite el uso de objetos GIS(Geographic information systems). PostGIS incluye soporte para
índices GiST basados en R-Tree, y funciones básicas para el análisis de objetos GIS.
Esta creado por Refractions Research Inc, como un proyecto de investigación de
tecnologías de bases de datos espaciales. Esta publicado bajo licencia GNU.
Con PostGIS podemos usar todos los objetos que aparecen en la especificación OpenGIS
como puntos,lineas, polígonos, multilíneas, multipuntos, y colecciones geométricas.
1.Objetos GIS.
Los objetos GIS soportados por PostGIS son de características simples definidas por
OpenGIS. Actualmente PostGIS soporta las características y el API de representación de la
especificación OpenGIS pero no tiene varios de los operadores de comparación y convolución
de esta especificación.
Ejemplos de la representación en modo texto:
POINT(0 0 0)
LINESTRING(0 0,1 1,1 2)
POLYGON((0 0 0,4 0 0,4 4 0,0 4 0,0 0 0),(1 1 0,2 1 0,2 2 0,1 2 0,1 1 0))
MULTIPOINT(0 0 0,1 2 1)
MULTILINESTRING((0 0 0,1 1 0,1 2 1),(2 3 1,3 2 1,5 4 1))
MULTIPOLYGON(((0 0 0,4 0 0,4 4 0,0 4 0,0 0 0),(1 1 0,2 1 0,2 2 0,1 2 0,1 1 0)),((-
1 -1 0,-1 -2 0,-2 -2 0,-2 -1 0,-1 -1 0)))
GEOMETRYCOLLECTION(POINT(2 3 9),LINESTRING((2 3 4,3 4 5))
En los ejemplos se pueden ver características con coordenadas de 2D y 3D(ambas son
permitidas por PostGIS). Podemos usar las funciones force_2d() y force_3d() para convertir
una característica a 3d o 2d.
1.1.Forma CANONICA vs ESTANDAR.
OpenGIS define dos formas de representar los objetos espaciales:
1. (WKT)Well-know text como los ejemplos anteriores.
2. (WKB)Well-know binary.
Las dos formas guardan información del tipo de objeto y sus coordenadas.
Página 4 de 21
Manual PostGIS
Además la especificación OpenGIS requiere que los objetos incluyan el identificador del
sistema de referencia espacial(SRID).El SRID es requerido cuando insertamos un objeto
espacial en la base de datos.
Ejemplo:
INSERT INTO SPATIALDATABASE(THE_GEOM,THE_NAME)
VALUES(GeometryFromText('POINT(-126.4 45.32)',312),'Un Lugar')
La función GeometryFromText requiere un numero SRID.
En PostgreSQL tenemos la representación en forma canónica, es una representación en
modo texto. Esta representación es distinta al estándar openGIS.
Diferencias:
Ilustración 1. Diferencias de representación entre PostgreSQL y OpenGIS.
2. Usar el estándar OpenGIS.
Las especificación para SQL de características simples de OpenGIS define tipos de objetos
GIS estándar, los cuales son manipulados por funciones, y un conjunto de tablas de meta-
datos.
Hay 2 tablas de meta-datos en la especificación OpenGIS:
2.1. SPATIAL_REF_SYS:
Contiene un identificador numérico y una descripción textual de el sistema de coordenadas
espacial de la base de datos.
Como se define la tabla:
CREATE TALBE SPATIAL_REF_SYS(
SRID INTEGER NOT NULL PRIMARY KEY,
AUTH_NAME VARCHAR(256),
AUTH_SRID INTEGER,
SRTEXT VARCHAR(2048),
PROJ4TEXT VARCHAR(2048)
)
Página 5 de 21
Manual PostGIS
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
referencia espacial. Ejemplo: WKT para SRS.
representación para el sistema de
PROJCS[“NAD83/UTM Zone 10N”,
GEOGCS[“NAD83”,DATUM[“North_American_Datum_1983”,
SPHEROID[“GRS 1980”,6378137,298.257222101]],
PRIMEM[“Greenwich”,0],UNIT[“degree”,0.0174532925199433]
],
PROJECTION[“Transverse_Mercator”],
PARAMETER[“latitude_of_origin”,0],
PARAMETER[“central_meridian”,-123],
PARAMETER[“scale_factor”,0.9996],
PARAMETER[“false_easting”,500000],
PARAMETER[“false_northing”,0],
UNIT[“metre”,1]
]
Para una lista de las representaciones WKT de EPSG ir a
http://www.opengis.org/techno/interop/EPSG2WKT.TXT.
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.
Ejemplo:
+proj=utm +zone=10 +ellps=clrk66 +datum=NAD27 +units=m
2.2. GEOMETRY_COLUMNS:
Definición:
CREATE TABLE GEOMETRY_COLUMNS(
F_TABLE_CATALOG VARCHAR(256) NOT NULL,
F_TABLE_SCHEMA VARCHAR(256) NOT NULL,
F_TABLE_NAME VARCHAR(256) NOT NULL,
Página 6 de 21
Manual PostGIS
F_GEOMETRY_COLUMN VARCHAR(256) NOT NULL,
COORD_DIMENSION INTEGER NOT NULL,
SRID INTEGER NOT NULL,
TYPE VARCHAR(30) NOT NULL
)
Descripción de cada una de las columnas:
F_TABLE_CATALOG,F_TABLE_SCHEMA,F_TABLE_NAME.
Distingue totalmente
columna geométrica.
la tabla de características que contiene la
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
de
objeto
Tipo
espacial. POINT, LINESTRING, POLYGON,
MULTYPOINT, GEOMETRYCOLLECTION. Para un tipo heterogéneo
debo usar el tipo GEOMETRY.
2.3. Crear una tabla espacial
Para crear una tabla con datos espaciales realizamos dos pasos:
1. Creamos una tabla no espacial.
Ejemplo: CREATE TABLE CALLES_GEOM(ID int4,NAME varchar(25))
2. Añadimos
columna(campo)
AddGeometryColumn de OpenGIS.
una
espacial
a
la
tabla
usando la
función
AddGeometryColumn(<db_name>,<table_name>,<column_name>,<srid>,<t
ype>,<dimension>)
Ejemplo: SELECT AddGeometryColum('calles_db','calles_geom','geom',423, 'LINESTRING',2)
Ejemplos de creación de tablas con columnas geométricas:
Parques:
1) CREATE TABLE PARQUES(PARQUE_ID int4,PARQUE_NOMBRE varchar(128),PARQUE_FECHA
Página 7 de 21
Manual PostGIS
date);
2) SELECT AddGeometryColumn( 'parque_db', 'parque', 'parque_geom', 128, 'MULTIPOLYGON' , 2 ) ;
Calles: El tipo de dato espacial es genérico(GEOMETRY).
1)CREATE TABLE CALLES(CALLE_ID int4,CALLE_NOMBRE varchar(128));
2)SELECT AddGeometryColumn('calles_db','calles','calles_geom',-1,'GEOMETRY',3);
3. Cargar datos GIS en la base de datos Espacial.
Hay dos formas de cargar datos en las tablas de nuestra base de datos. Usando el lenguaje
SQL o usando un cargador de archivos de figuras.
1. Usando SQL.
Si podemos convertir los datos que vamos ha insertar en un representación textual.
Usar el formato SQL es una manera sencilla de insertar los datos en PostGIS.
Podemos crear un archivo de texto lleno de sentencias INSERT y cargarlo con
con SQL monitor.
Ejemplo:
calles.sql
BEGIN;
INSERT INTO CALLES_GEOM(ID,GEOM,NAME) VALUES (1, GeometryFromText
('LINESTRING(191232 243118,191108 243242)',-1),'Jeff Rd');
INSERT INTO CALLES_GEOM(ID,GEOM,NAME) VALUES (1, GeometryFromText
('LINESTRING(189141 244158,189265 244817)',-1),'Geordie Rd');
INSERT INTO CALLES_GEOM(ID,GEOM,NAME) VALUES (1, GeometryFromText
('LINESTRING(192783 228138,192612 229814)',-1),'Paul St');
INSERT INTO CALLES_GEOM(ID,GEOM,NAME) VALUES (1, GeometryFromText
('LINESTRING(189412 252431,189631 259122)',-1),'Graeme Ave');
INSERT INTO CALLES_GEOM(ID,GEOM,NAME) VALUES (1, GeometryFromText
('LINESTRING(190131 224148,190871 228134)',-1),'Phil Tce');
INSERT INTO CALLES_GEOM(ID,GEOM,NAME) VALUES (1, GeometryFromText
('LINESTRING(198231 263418,198213 268322)',-1),'Dave Cres');
END;
El archivo puede cargar en la base de datos usando “psql”:
psql -d [base de datos] -f calles.sql
2. Usar el Cargador.
El cargador de datos “shp2pgsql” convierte archivos de figuras 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
Página 8 de 21
Manual PostGIS
Elimina la tabla de la base de datos antes de crear la tabla
Comentarios de: Manual PostGIS (0)
No hay comentarios