PDF de programación - Manual PostGIS

Imágen de pdf Manual PostGIS

Manual PostGISgráfica de visualizaciones

Publicado el 11 de Noviembre del 2019
54 visualizaciones desde el 11 de Noviembre del 2019
104,0 KB
21 paginas
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
mmm876@yahoo.es.

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
  • Links de descarga
http://lwp-l.com/pdf16882

Comentarios de: Manual PostGIS (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad