Вы находитесь на странице: 1из 37

Manual técnico de

PostgreSQL/Postgis
Elaborado por:
Enrique Flores Escudero
Natanael García Sosa

Validación técnica:
Lic. Agustín García Rodríguez

Área de TI:
Laboratorio de Visión por Computadora

INAOE
Contenido
¿Qué es un SIG? .............................................................................................................................. 3
Sistema de coordenadas................................................................................................................. 4
Proyección cilíndrica ........................................................................................................................ 5
Proyección cónica ............................................................................................................................ 5
Proyección azimutal, cenital o polar .............................................................................................. 5
Información geográfica en un SIG ................................................................................................. 6
El Datum ............................................................................................................................................ 6
Datum de referencia......................................................................................................................... 6
Instalación de PostgreSQL 8.4...................................................................................................... 8
Instalación del complemento Postgis 1.4. .................................................................................... 8
Transformación de cartas ............................................................................................................... 9
Ogrinfo.............................................................................................................................................. 10
Comandos de ogrinfo..................................................................................................................... 10
Ver Datum, Proyección y Atributos de una carta....................................................................... 10
Ver el tipo de objetos de un .shp.................................................................................................. 11
ogr2ogr ............................................................................................................................................. 12
Comandos de ogr2ogr ................................................................................................................... 12
Unir varios archivos .shp en un solo .shp ................................................................................... 15
S57.................................................................................................................................................... 15
Subir directamente una carta náutica .000 al PostgreSQL ...................................................... 15
pgsql2shp......................................................................................................................................... 20
shp2pgsql......................................................................................................................................... 20
Convertir nuestro archivo .shp a .sql ........................................................................................... 21
gdal info............................................................................................................................................ 22
gdal_rasterize .................................................................................................................................. 23
Crear un punto, línea o polígono a través de un query sql ...................................................... 25
Bibliografía: ...................................................................................................................................... 34
Anexo ............................................................................................................................................... 35

2
¿Qué es un SIG?
Un Sistema de Información Geográfica es una integración
organizada de hardware, software y datos geográficos diseñada
para capturar, almacenar, manipular, analizar y desplegar en todas
sus formas la información geográficamente referenciada con el fin
de resolver problemas complejos de planificación y gestión.
También puede definirse como un modelo de una parte de la
realidad referido a un sistema de coordenadas terrestre y
construido para satisfacer unas necesidades concretas de
información. En el sentido más estricto, es cualquier sistema de
información capaz de integrar, almacenar, editar, analizar, compartir
y mostrar la información geográficamente referenciada. En un sentido más genérico, los SIG son
herramientas que permiten a los usuarios crear consultas interactivas, analizar la información
espacial, editar datos, mapas y presentar los resultados de todas estas operaciones.

La tecnología de los Sistemas de Información Geográfica puede ser utilizada para investigaciones
científicas, la gestión de los recursos, gestión de activos, la arqueología, la evaluación del impacto
ambiental, la planificación urbana, la cartografía, la sociología, la geografía histórica, el marketing,
la logística por nombrar unos pocos. Por ejemplo, un SIG podría permitir a los grupos de
emergencia calcular fácilmente los tiempos de respuesta en caso de un desastre natural, el SIG
puede ser usado para encontrar los humedales que necesitan protección contra la contaminación,
o pueden ser utilizados por una empresa para ubicar un nuevo negocio y aprovechar las ventajas
de una zona de mercado con escasa competencia.

3
Sistema de coordenadas
Un sistema de coordenadas es un conjunto de valores y puntos que
permiten definir unívocamente la posición de cualquier punto de un espacio
euclídeo o más generalmente variedad diferenciable.

En física se usan normalmente sistemas de coordenadas ortogonales. Un


sistema de referencia viene dado por un punto de referencia u origen y una
base vectorial ortonormal, quedando así definidos los ejes coordenados.

4
Proyección cilíndrica
La proyección de Mercator, que revolucionó la cartografía, es cilíndrica y
conforme. En ella, se proyecta el globo terrestre sobre una superficie
cilíndrica. Es una de las más utilizadas, aunque por lo general en forma
modificada, debido a las grandes distorsiones que ofrece en las zonas de
latitud elevada, lo que impide apreciar a las regiones polares en su
verdadera proporción. Es utilizada en la creación de algunos mapamundis. Para corregir
las deformaciones en latitudes altas se usan proyecciones pseudocilíndricas, como la de
Van der Grinten, que es policónica, con paralelos y meridianos circulares. Es
esencialmente útil para ver la superficie de la Tierra completa.

 Proyección de Mercator
 Proyección de Peters

Proyección cónica
La proyección cónica se obtiene proyectando los elementos de la
superficie esférica terrestre sobre una superficie cónica tangente, situando
el vértice en el eje que une los dos polos. Aunque las formas presentadas
son de los polos, los cartografos utilizan este tipo de proyección para ver
los países y continentes.

 Proyección cónica simple


 Proyección conforme de Lambert
 Proyección cónica múltiple

Proyección azimutal, cenital o polar


En este caso se proyecta una porción de la Tierra sobre un plano
tangente al globo en un punto seleccionado, obteniéndose una
imagen similar a la visión de la Tierra desde un punto interior o
exterior. Si la proyección es del primer tipo se llama proyección
gnomónica; si es del segundo, ortográfica. Estas proyecciones
ofrecen una mayor distorsión cuanto mayor sea la distancia al punto tangencial de la
esfera y el plano. Este tipo de proyección se relaciona principalmente con los polos y
hemisferios.

 Proyección ortográfica
 Proyección estereográfica
 Proyección gnomónica
 Proyección azimutal de Lambert

5
Información geográfica en un SIG
Modelo vector Modelo raster
Usa segmentos de línea discretos o puntos División del área
para señalar localizaciones, de acuerdo
con un sistema de referencia
Los elementos geográficos se forman a Almacenamiento a nivel de celda. ¿Qué
partir de la conexión de segmentos de almacena?
líneas rectas
Los objetos vectoriales no necesariamente Representación explícita: cada punto
ocupan la totalidad del espacio; así, no se corresponde a una loc. En Una celda
requiere identificar absolutamente todas las
localizaciones.
Posee una base de datos espacial (x,y), y Concepto de capa o layer
una base de datos descriptiva (atributos)
Codificación de relaciones topológicas
No está asociada a una base alfanumérica.

El Datum
El término datum se aplica en varias áreas de estudio y trabajo específicamente cuando
se hace una relación hacia alguna geometría de referencia importante, sea ésta una línea,
un plano o una superficie (plana o curva).

Datum de referencia
Un datum geodésico es una referencia de las medidas tomadas. En geodesia un datum
es un conjunto de puntos de referencia en la superficie terrestre en base a los cuales las
medidas de la posición son tomadas y un modelo asociado de la forma de la tierra
(elipsoide de referencia) para definir el sistema de coordenadas geográfico. Datums
horizontales son utilizados para describir un punto sobre la superficie terrestre. Datums
verticales miden elevaciones o profundidades. En ingeniería y drafting, un datum es un
punto de referencia, superficie o ejes sobre un objeto con los cuales las medidas son
tomadas.

Un datum de referencia (modelo matemático) es una superficie constante y conocida


utilizada para describir la localización de puntos sobre la tierra. Dado que diferentes
datums tienen diferentes radios y puntos centrales, un punto medido con diferentes
datums puede tener coordenadas diferentes. Existen cientos de datums de referencia

6
desarrollados para referenciar puntos en determinadas áreas convenientes para ese área.
Datums contemporáneos están diseñados para cubrir áreas más grandes.

Códigos EPSG Descripción EPSG (European Petroleum Survey Group)


epsg:3034 ETRS89/ETRS-LCC Para la cartografía pan-Europeo a escalas
menores o iguales a 1:500.000 IDEE
epsg:3035 ETRS89/ETRS-LAEA Para representación y análisis estadístico pan-
Europeos IDEE
epsg:4230 Coordenadas Geográficas ED50
epsg:4258 Coordenadas Elipsoidales ETRS89 IDEE
epsg:4267 Coordenadas Geográficas North American Datum 1927 (NAD 27)
epsg:4269 Coordenadas Geográficas North American Datum 1983 (NAD 83)
epsg:4324 Coordenadas Geográficas WGS 72BE Transit Broadcast Ephemeris
epsg:4326 Coordenadas Geográficas WGS84
epsg:23028 Proyección UTM ED50 Huso 28 N
epsg:23029 Proyección UTM ED50 Huso 29 N
epsg:23030 Proyección UTM ED50 Huso 30 N
epsg:23031 Proyección UTM ED50 Huso 31 N
epsg:25828 Proyección UTM ETRS89 Huso 28 N
epsg:25829 Proyección UTM ETRS89 Huso 29 N
epsg:25830 Proyección UTM ETRS89 Huso 30 N
epsg:25831 Proyección UTM ETRS89 Huso 31 N
epsg:32628 Proyección UTM WGS84 Huso 28 N
epsg:32629 Proyección UTM WGS84 Huso 29 N
epsg:32630 Proyección UTM WGS84 Huso 30 N
epsg:32631 Proyección UTM WGS84 Huso 31 N

7
Instalación de PostgreSQL 8.4
$ apt-get update
$ apt-get install vim
//editar el fichero siguiente
$ vim /etc/apt/sources.list
//agregar al final del fichero las siguientes lineas
deb http://ppa.launchpad.net/pitti/postgresql/ubuntu jaunty main
deb-src http://ppa.launchpad.net/pitti/postgresql/ubuntu jaunty main
//agregar la llave del postgresql
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8683d8a2
$ sudo apt-get update
$ sudo apt-get install postgresql-8.4
//cambiamos el puerto 5433 al 5432
$ sudo sed -i.bak -e 's/port = 5433/port = 5432/'
/etc/postgresql/8.4/main/postgresql.conf
//reiniciamos el servidor de postgresql
$ sudo /etc/init.d/postgresql restart

Instalación del complemento Postgis 1.4.


$ apt-get install postgresql-server-dev-8.4 libpq-dev
$ apt-get install libgeos-dev
$ wget http://postgis.refractions.net/download/postgis-1.4.0.tar.gz
$ apt-get install proj
$ tar xvfz postgis-1.4.0.tar.gz
$ cd postgis-1.4.0
$ ./configure
$ make
$ make install
$ sudo su postgres
//cambiamos la clave del usuario postgres por la que desees
$ psql -c"alter user postgres with password 'tu_contraseña'"
$ createdb geodb
$ createlang -dgeodb plpgsql
$ psql -dgeodb -f /usr/share/postgresql/8.4/contrib/postgis.sql
$ psql -dgeodb -f /usr/share/postgresql/8.4/contrib/spatial_ref_sys.sql
$ psql -dgeodb -c"select postgis_lib_version();"
//con esto habremos agregado las tablas espaciales del postgis para crear una plantilla
de postgis y utilizarla en las demas bases de datos

8
Transformación de cartas
No Posible transformación Revisión Aprobación
1 Shapefile (datum diferente) a Shapefile (datum WGS84) SI SI
2 Shapefile (Proj. diferente) a Shapefile (Proj. cilíndrica) SI SI
3 Shapefile (Datum WGS84, Proj. cilíndrica) a Formato POSTGIS SI SI
4 Formato POSTGIS a Shapefile (Datum WGS84, Proj. Cilíndrica) SI SI
5 Formato POSTGIS a Shapefile a Visor GIS SI SI
6 Formato POSTGIS a Visor GIS a SHP SI SI
7 Carta S57 a PostgreSQL a Shapefile a Shapefile (wgs84, Proj. SI SI
Cilíndrica) a PostgreSQL a Visor
8 Carta S57 a Shapefile (wgs84, Proj. Cilíndrica) SI SI
9 Carta S57 (Datum diferente) a Carta S57 (Datum WGS84) SI SI
10 Carta S57 (Proj. Diferente) a carta S57 (Proj. Cilíndrica) SI SI
11 Carta S57 a Visor a SHP SI SI
12 Cartas Aereas (Datum diferente) a Shapefile (Datum WGS84) NO NO
13 Cartas Aereas (Proj. Diferente) a Shapefile (Proj. Cilíndrica) NO NO

9
Ogrinfo
Para poder realizar una transformación lo primero que debemos de hacer es identificar el
datum y la proyección de la carta, para eso tenemos el complemento de la librería gdal
llamado ogrinfo y es una herramienta que sirve para ver los contenidos de un Shapefile,
proyección, datum y atributos de la carta, además ver que geometría la compone.

Comandos de ogrinfo
$ ogrinfo
Usage: ogrinfo [--help-general] [-ro] [-q] [-where restricted_where]
[-spat xmin ymin xmax ymax] [-fid fid]
[-sql statement] [-al] [-so] [-fields={YES/NO}]
[-geom={YES/NO/SUMMARY}][--formats]
datasource_name [layer [layer ...]]

Ver Datum, Proyección y Atributos de una carta


En el siguiente ejemplo hacemos uso de la herramienta ogrinfo, la cual muestra la
información de la carta detalladamente.

Sintaxis:
$ ogrinfo -al -so nombre_carta.shp

Ejemplo:
$ ogrinfo -al -so CurvasNivel.shp
INFO: Open of `CurvasNivel.shp'
using driver `ESRI Shapefile' successful.
Layer name: CurvasNivel
Geometry: Line String
Feature Count: 99488
Extent: (911404.625948, 352702.863535) - (3914799.979274, 2349596.704755)
Layer SRS WKT:
PROJCS["North_America_Lambert_Conformal_Conic",
GEOGCS["ITRF92",
DATUM["ITRF_1992",
SPHEROID["GRS_1980",6378137.0,298.257222101]],
PRIMEM["Greenwich",0.0],
UNIT["Degree",0.0174532925199433]],
PROJECTION["Lambert_Conformal_Conic_2SP"],
PARAMETER["False_Easting",2500000.0],
PARAMETER["False_Northing",0.0],
PARAMETER["Central_Meridian",-102.0],
PARAMETER["Standard_Parallel_1",17.5],
PARAMETER["Standard_Parallel_2",29.5],

10
PARAMETER["Latitude_Of_Origin",12.0],
UNIT["Meter",1.0]]
OBJECTID: Integer (10.0)
FC: Integer (5.0)
ENTIDAD: String (15.0)
TIPO: String (51.0)
ELEVACION: Real (19.5)
LENGTH: Real (15.3)
SHAPE_len: Real (19.11)

Ver el tipo de objetos de un .shp


El tipo de objetos que puede contener una carta tipo .shp son líneas, polígonos y puntos,
si deseamos unir varias cartas .shp el ejemplo siguiente sirve para comprobar si las cartas
contienen el mismo tipo de geometría.

Sintaxis:
$ ogrinfo -ro -q nombre_carta.shp

Ejemplo:
$ ogrinfo -ro -q CurvasNivel.shp
1: CurvasNivel (Line String)

Obtenemos como resultado Line String, lo cual nos indica que contiene líneas en su
geometría.

11
ogr2ogr
Nos permite importar/exportar archivos .shp a otros formatos y viceversa. Si solo
escribimos ogr2ogr en la terminal podremos comprobar el tipo de sintaxis que se puede
utilizar y los formatos que soporta la herramienta.

Comandos de ogr2ogr
Usage: ogr2ogr [--help-general] [-skipfailures] [-append] [-update] [-gt n]
[-select field_list] [-where restricted_where]
[-sql <sql statement>]
[-spat xmin ymin xmax ymax] [-preserve_fid] [-fid FID]
[-a_srs srs_def] [-t_srs srs_def] [-s_srs srs_def]
[-f format_name] [-overwrite] [[-dsco NAME=VALUE] ...]
[-segmentize max_dist]
dst_datasource_name src_datasource_name
[-lco NAME=VALUE] [-nln name] [-nlt type] [layer [layer ...]]

-f format_name: output file format name, possible values are:


Estos son los formatos admitidos:
-f "ESRI Shapefile"
-f "MapInfo File"
-f "TIGER"
-f "S57"
-f "DGN"
-f "Memory"
-f "BNA"
-f "CSV"
-f "GML"
-f "GPX"
-f "KML"
-f "GeoJSON"
-f "Interlis 1"
-f "Interlis 2"
-f "GMT"
-f "SQLite"
-f "ODBC"
-f "PostgreSQL"
-f "MySQL"
-f "Geoconcept"
-append: Append to existing layer instead of creating new if it exists
-overwrite: delete the output layer and recreate it empty
-update: Open existing output datasource in update mode
-select field_list: Comma-delimited list of fields from input layer to
copy to the new layer (defaults to all)
-where restricted_where: Attribute query (like SQL WHERE)

12
-sql statement: Execute given SQL statement and save result.
-skipfailures: skip features or layers that fail to convert
-gt n: group n features per transaction (default 200)
-spat xmin ymin xmax ymax: spatial query extents
-segmentize max_dist: maximum distance between 2 nodes.
Used to create intermediate points
-dsco NAME=VALUE: Dataset creation option (format specific)
-lco NAME=VALUE: Layer creation option (format specific)
-nln name: Assign an alternate name to the new layer
-nlt type: Force a geometry type for new layer. One of NONE, GEOMETRY,
POINT, LINESTRING, POLYGON, GEOMETRYCOLLECTION, MULTIPOINT,
MULTIPOLYGON, or MULTILINESTRING. Add "25D" for 3D layers.
Default is type of source layer.
-a_srs srs_def: Assign an output SRS
-t_srs srs_def: Reproject/transform to this SRS on output
-s_srs srs_def: Override source SRS

Srs_def can be a full WKT definition (hard to escape properly),


or a well known definition (ie. EPSG:4326) or a file with a WKT
definition.

Shapefile (datum diferente) a Shapefile (datum WGS84)


Shapefile (Proj. diferente) a Shapefile (Proj. cilíndrica)

Existen 3 maneras de realizar estas transformaciones:

1.- Con la herramienta ogr2ogr especificar el tipo de proyección detalladamente:

ogr2ogr: es la herramienta utilizada para la transformación de la carta.


-f: tipo de formato de salida en este caso queremos obtener “ESRI Shapefile” que es un
archivo .shp.
-s_srs: aquí se especifica la proyección de entrada y datum, esta se puede obtener de los
metadatos de la carta .shp.
-t_srs: este parámetro precisa la proyección de salida en el ejemplo usamos
"+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs" debido a la proyección y datum
que nos interesa obtener.
archivo_salida.shp: pondremos la ruta y nombre del nuevo archivo que tendrá la
proyección y datum que nos interesa.
archivo_a_transformar.shp: es el archivo de entrada, tendremos que poner la ruta
donde se encuentra.

Sintaxis:
$ ogr2ogr -f "ESRI Shapefile" -s_srs "proyección_carta_entrada" -t_srs
"proyección_carta_salida" archivo_salida.shp archivo_a_transformar.shp

13
Ejemplo:
$ ogr2ogr -f "ESRI Shapefile" -s_srs "+proj=lcc +lat_1=17.5 +lat_2=29.5 +lat_0=12
+lon_0=-102 +x_0=2500000 +y_0=0 +ellps=GRS80 +units=m +no_defs" -t_srs
"+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs" salida.shp
CurvasNivel.shp

2.- Utilizar solo el código EPSG (European Petroleum Survey Group).


-t_srs: introducimos el código EPSG:4326 ya que este contiene proyección cilíndrica y el
datum wgs84, podemos encontrar esta información en la tabla spatial_ref_sys del
complemento Postgis en las columnas auth_name (estándar usado), auth_srid (número
del estandar), srtext (datum), proj4text (proyección).
archivo_salida: especificar la ruta y el nombre del archivo de salida.shp que tendrá el
nuevo datum y proyección.
archivo_entrada: ponemos la ruta y el nombre del archivo del cual se va a modificar el
datum y proyección.

Sintaxis:
$ ogr2ogr –t_srs EPGS:Número_estandar archivo_salida.shp archivo_entrada.shp

Ejemplo:
$ ogr2ogr -t_srs EPSG:4326 pruebakike2.shp CurvasNivel.shp

3.- Cambiar la proyección de la carta .shp y el datum usando la proyección de otro .shp

Los archivos .prj contienen el datum y la proyección utilizada en la carta; existen cartas
que no contienen este archivo.

-t_srs: se utiliza para definir el datum y la proyección a partir de un archivo con extensión
.prj.
archivo.prj: definimos la ruta del archivo .prj que contiene la proyección y el datum
adecuado.
archivo_salida.shp: ruta del nuevo archivo que se va a crear con el nuevo datum y
proyección.
archivo_entrada.shp: ruta del archivo .shp existente que vamos a transformar.

Sintaxis:
$ ogr2ogr –t_srs archivo.prj archivo_salida.shp archivo_entrada.shp

Ejemplo:
$ ogr2ogr -t_srs 10m_ocean.prj /home/enrique/Escritorio/curvas.shp
/home/enrique/Escritorio/curvas/CurvasNivel.shp

14
Unir varios archivos .shp en un solo .shp
Esto se puede realizar solo si los archivos .shp tienen la misma geometría (punto,
línea, polígono, etc) y el mismo datum y proyección.

Sintaxis:
archivo_nuevo se fusionara con el archivo_existente en este caso archivo_nuevo
tomara todos los valores del archivo_existente.
$ ogr2ogr archivo_nuevo.shp archivo_existente.shp
-update: abre el origen de datos de salida existente en el modo de actualización en lugar
de intentar crear una carta nueva.
-append se realizara una unión de capas, actualizando el archivo nuevo sin generar otro
archivo, este mismo archivo tendrá dos capas en uno solo.
archivo_nuevo.shp: poner la ruta y el nombre del nuevo archivo.shp.
siguiente_capa_a_unir.shp: la capa que se va a unir con el archivo_nuevo.shp.
-nln: asigna un nombre alternativo a la nueva capa.
$ ogr2ogr -update -append archivo_nuevo.shp siguiente_capa_a_unir.shp -nln
archivo_nuevo.shp

Ejemplo:
$ ogr2ogr file_merged.shp Acueducto.shp
$ ogr2ogr -update -append file_merged.shp carretera.shp -nln file_merged

S57
Subir directamente una carta náutica .000 al PostgreSQL
-f: aquí se pone el formato de salida, en la página 12 se muestran todos los archivos
soportados por ogr2ogr, en este ejemplo usaremos “PostgreSQL”.
PG: especificamos que se hará una conexión al servidor PostgreSQL.
host: ponemos la ip del servidor o en caso de ser conexión local se usará “localhost”.
user: este parámetro lleva el nombre de un usuario por ejemplo “postgres” en el ejemplo.
dbname: especificar a qué base de datos se va a subir la carta náutica.
password: introducimos la contraseña con la cual se entra a PostgreSQL; por último se
escribe el nombre de la carta s57 con extensión .000

Sintaxis:
$ ogr2ogr –f "formato_salida" PG:"host=servidor user=usuario dbname=base_datos
password=contraseña" archivo.000
Ejemplo:
$ ogr2ogr -f "PostgreSQL" PG:"host=localhost user=postgres dbname=pruebashp
password=kikeflores" US2EC03M.000

15
Carta S57 a Shapefile (wgs84, Proj. Cilíndrica)

16
17
18
19
pgsql2shp
Formato POSTGIS a Shapefile (Datum WGS84, Proj. Cilíndrica)

pgsql2shp: herramienta para exportar una tabla a formato .shp.

Los siguientes parámetros se utilizan para poder conectarse al servidor PostgreSQL y


poder exportar la tabla como archivo .shp.

-f: identifica el formato y seguido de este va la ruta de salida y nombre del archivo que se
va a obtener.

-h: ip del servidor al que se realizara la conexión, en caso de ser servidor local poner
“localhost”.

-u: aquí se especifica el usuario que tiene permiso para realizar transacciones sobre la
base de datos, en el ejemplo se utilizo “postgres”.

-P: este parámetro se utiliza para hacer una conexión mediante contraseña, en caso de
tener habilitada la seguridad para las bases de datos, si no se tiene seguridad, omitir este.

-p: número de puerto que se está utilizando en la conexión.

Después de haber introducido los parámetros correctos para la conexión al servidor


PostgreSQL se define el nombre de la base de datos seguido de la tabla a exportar.

Sintaxis:
$ pgsql2shp -formato nombre_archivo_salida -h host -u usuario -P contraseña -p
puerto base_datos tabla

Ejemplo:
$ pgsql2shp -f prueba -h localhost -u postgres -P kike1uno -p 5432 acueducto
wfsgeo

shp2pgsql
shp2pgsql es una herramienta vía consola que permite la conversión de nuestro
archivo en formato shp a sql.

$ shp2pgsql
RCSID: $Id: shp2pgsql-core.h 5098 2010-01-04 05:47:04Z pramsey $ RELEASE: 1.5
USE_GEOS=1 USE_PROJ=1 USE_STATS=1
USAGE: shp2pgsql [<options>] <shapefile> [<schema>.]<table>
OPTIONS:
-s <srid> Set the SRID field. Defaults to -1.
(-d|a|c|p) These are mutually exclusive options:
-d Drops the table, then recreates it and populates
it with current shape file data.
-a Appends shape file into current table, must be

20
exactly the same table schema.
-c Creates a new table and populates it, this is the
default if you do not specify any options.
-p Prepare mode, only creates the table.
-g <geocolumn> Specify the name of the geometry/geography column
(mostly useful in append mode).
-D Use postgresql dump format (defaults to SQL insert statments.
-G Use geography type (requires lon/lat data).
-k Keep postgresql identifiers case.
-i Use int4 type for all integer dbf fields.
-I Create a spatial index on the geocolumn.
-S Generate simple geometries instead of MULTI geometries.
-W <encoding> Specify the character encoding of Shape's
attribute column. (default : "WINDOWS-1252")
-N <policy> NULL geometries handling policy (insert*,skip,abort)
-n Only import DBF file.
-? Display this help screen.

Shapefile (Datum WGS84, Proj. cilíndrica) a Formato POSTGIS


Convertir nuestro archivo .shp a .sql
Utilizamos el shp2pgsql para convertir el archivo .shp a un archivo .sql y psql para poder
subir dicho script (.sql).

shp2pgsql: herramienta para convertir de archivo .shp a archivo .sql.


archivo.shp: especificamos la ruta del archivo .shp que vamos a transformar.
base_datos: aquí va el nombre de la base de datos donde se crearan las tablas.
script.sql: aquí va el nombre del archivo .sql que se obtendrá (el nombre del script puede
cambiar; se utilizo “script” solo como referencia).
psql: para que funcione este comando se debe identificar como un usuario de
PostgreSQL.
-d: identifica la base de datos en la cual se van a subir las tablas.
base_datos: nombre de la base de datos en la que se subirán las tablas.
-f: tipo de formato que se va a subir y al final ponemos el nombre del script.sql.
Sintaxis:
$ shp2pgsql archivo.shp base_datos > script.sql
$ psql -d base_datos -f script.sql

Ejemplo
$ shp2pgsql /home/user/curvas_nivel.shp bd_curvas > script.sql
$ psql -d bd_curvas -f script.sql

21
gdal info
Permite visualizar los atributos de una capa raster.

Sintaxis:
$ gdalinfo archivo.tif

Ejemplo:
$ gdalinfo HYP_50M_SR.tif
Driver: GTiff/GeoTIFF
Files: HYP_50M_SR.tif
HYP_50M_SR.aux
HYP_50M_SR.rrd
Size is 10800, 5400
Coordinate System is:
GEOGCS["WGS 84",
DATUM["WGS_1984",
SPHEROID["WGS 84",6378137,298.2572235629972,
AUTHORITY["EPSG","7030"]],
AUTHORITY["EPSG","6326"]],
PRIMEM["Greenwich",0],
UNIT["degree",0.0174532925199433],
AUTHORITY["EPSG","4326"]]
Origin = (-179.999999999999972,90.000000000000000)
Pixel Size = (0.033333333333330,-0.033333333333330)
Metadata:
AREA_OR_POINT=Area
TIFFTAG_SOFTWARE=Adobe Photoshop CS3 Macintosh
TIFFTAG_DATETIME=2009:09:09 14:51:29
TIFFTAG_XRESOLUTION=342.85699
TIFFTAG_YRESOLUTION=342.85699
TIFFTAG_RESOLUTIONUNIT=2 (pixels/inch)
Image Structure Metadata:
INTERLEAVE=PIXEL
Corner Coordinates:
Upper Left (-180.0000000, 90.0000000) (180d 0'0.00"W, 90d 0'0.00"N)
Lower Left (-180.0000000, -90.0000000) (180d 0'0.00"W, 90d 0'0.00"S)
Upper Right ( 180.0000000, 90.0000000) (180d 0'0.00"E, 90d 0'0.00"N)
Lower Right ( 180.0000000, -90.0000000) (180d 0'0.00"E, 90d 0'0.00"S)
Center ( -0.0000000, 0.0000000) ( 0d 0'0.00"W, 0d 0'0.00"N)
Band 1 Block=10800x1 Type=Byte, ColorInterp=Red
Overviews: 2700x1350, 1350x675, 675x338, 338x169, 169x85, 85x43
Metadata:
LAYER_TYPE=athematic
Band 2 Block=10800x1 Type=Byte, ColorInterp=Green

22
Overviews: 2700x1350, 1350x675, 675x338, 338x169, 169x85, 85x43
Metadata:
LAYER_TYPE=athematic
Band 3 Block=10800x1 Type=Byte, ColorInterp=Blue
Overviews: 2700x1350, 1350x675, 675x338, 338x169, 169x85, 85x43
Metadata:
LAYER_TYPE=athematic

gdal_rasterize
Permite hacer una unión de una capa raster y una capa vectorial, siempre y cuando
el datum y la proyección de las dos capas sean las mismas.

Missing source or destination.


Usage: gdal_rasterize [-b band] [-i]
[-burn value] | [-a attribute_name] | [-3d]
[-l layername]* [-where expression] [-sql select_statement]
<src_datasource> <dst_filename>

$ gdal_rasterize -b 1 -burn 255 -l 10m_rivers_europe 10m_rivers_europe.shp


/home/enrique/Descargas/HYP_50M_SR/HYP_50M_SR.tif

23
Diagrama de transformación de cartas.
Crear un punto, línea o polígono a través de un query sql
Para poder crear una capa con cualquiera de los elementos vectoriales en una
capa gis, puede punto, línea o polígono necesitamos tener instalado Postgres con
el complemento postgis. La Base de datos que se crea debe heredar las tablas de
postgis que son:

 SPATIAL_REF_SYS

 GEOMETRY_COLUMNS

1. Pasos para crear la base de datos en pgAdmin III.

Iniciar PostgreSQL

Damos clic derecho y seleccionamos “conectar”.


Hacemos clic derecho sobre la opción Bases de Datos y seleccionamos “Nueva
Base de Datos…”

Llenamos los campos necesarios para crear la base de datos y damos clic en
“aceptar”.

2. Query para crear una tabla con campo geométrico.

26
 Iniciamos con las sentencias del leguaje SQL para la creación de la
tabla

El script nos debe quedar de la siguiente forma:

create table river (

gid serial ,

NAME varchar,

DIAK_CDE varchar,

NAME2 varchar,

DIAK_CDE2 varchar,

TYPE varchar,

STATUS varchar,

NAVIG varchar

);

27
 Verificamos si se creó correctamente la tabla en la base de
datos.

Nótese que todavía no se ha agregado el campo de geometría, están únicamente


los campos alfanuméricos. Para agregar el campo de geometría utilizamos una
función de PostGIS denominada AddGeometryColumn. La cual tendremos que
mandarle el parámetro de esquema, tabla, campo geométrico, SRID, tipo de
geometría, y número de dimensiones

 Procedimiento para agregar un campo geométrico a la tabla.

28
El Query de AddGeometryColumn quedaría de la siguiente manera:

EJEMPLO:

Select AddGeometryColumn('', 'river','the_geom','-1','POLYGON',2);

Descripción de los valores posibles que se pueden introducir cuando agregamos


en campo geométrico a la tabla.

Select AddGeometryColumn ('', 'river','the_geom','-1','POLYGON',2);

El primer atributo es = ''

En este apartado es para poner el nombre del esquema que queramos


agregar siempre y cuando ya se encuentre en la base de datos, En este ejemplo
pasamos los parámetros vacíos para que tome el esquema principal que sería de
tipo 'Public'.

Segundo atributo del Query nombre de la tabla = 'river'

Solo se introduce en nombre de la tabla a la cual queremos agregar el


campo geométrico.

29
El tercer componente es agregar el campo geométrico = 'the_geom'

Es donde se van almacenar todas las posiciones geográficas de cada


elemento que se vaya creando en la tabla.

El Cuarto atributo se refiere a la proyección = '-1'

Es el identificador de referencia espacial. En este caso se pone -1 ya que


se refiere a la proyección mundial (WGS84).

El Quinto componente se refiere al tipo de objeto espacial = 'POLYGON'

Dentro de este campo se pude especificar si es POINT, LINESTRING,


POLYGON, MULTYPOINT, GEOMETRYCOLLECTION.

En el último parámetro se refiere a la dimensión espacial = 2

En este parámetro se determina si la dimensión espacial es 2D, 3D, 4D,


solo basta con colocar el número como en el ejemplo.

 Cuando se agrega el campo geométrico a la tabla automáticamente


se agrega el registro a la tabla GEOMETRY_COLUMNS para
determinar que existe una tabla con campos geoespaciales.

30
3. Insertar datos a la tabla espacial.

A continuación se muestra como insertar datos a través del Query de PostgreSQL


a una tabla espacial.

Código ejemplo:

insert into river values(

31
'0',

'Manistee',

NULL,

NULL,

NULL,

'stream',

'secondary',

'nonnavigable',

GeometryFromText('POLYGON((-101.004056 38.2435 ,-101.004056


48.999968 ,-100.501953 48.999718 ,-100.002228 49 ,-99.835556 49 ,-99.335556
48.999435 ,-98.868607 49 ,-98.502228 48.999435 ,-98.269165 49.000275 ,-
97.969162 49.000275 ,-97.801941 49 ,-97.635834 48.999435 ,-97.502792
48.999435 ,-97.21994 48.999718 ,-95.266556 48.999977 ,-95.154175 48.999435
,-95.153961 49.173332 ,-95.154449 49.333328 ,-95.154175 49.366386 ,-
95.152786 49.376656 ,-95.142502 49.371658 ,-95.120834 49.364998 ,-95.081863
49.359592 ,-95.025833 49.357498 ,-94.998611 49.357498 ,-94.96209 49.36097 ,-
94.931961 49.35854 ,-94.81778 49.305546 ,-94.805687 49.186661 ,-94.798332
49.15749 ,-94.766953 49.075554 ,-94.74527 49.028603 ,-94.729996 48.996941 ,-
94.718605 48.974709 ,-94.705841 48.933186 ,-94.700981 48.902493 ,-94.707039
48.857998 ,-94.708054 48.796799 ,-94.694992 48.77874 ,-94.640419 48.741104
,-94.605835 48.724434 ,-94.523895 48.701935 ,-94.500839 48.696938 ,-
94.461044 48.694988 ,-94.433319 48.701935 ,-94.400352 48.710827 ,-94.29847
48.707214 ,-94.267365 48.695892 ,-94.247887 48.660995 ,-94.134171 48.642769
,-94.111938 48.641106 ,-94.063889 48.638046 ,-93.882919 48.630272 ,-
93.858749 48.628605 ,-93.833954 48.616383 ,-93.818893 48.586243 ,-93.804787
48.531864 ,-93.785835 48.517078 ,-93.724167 48.513885 ,-93.660698 48.515137
,-93.496254 48.538609 ,-93.464241 48.551727 ,-93.454063 48.584332 ,-93.40834
48.608604 ,-93.315697 48.629158 ,-93.244995 48.640549 ,-92.951317 48.622627
,-92.715286 48.541382 ,-92.697769 48.485268 ,-92.58223 48.441376 ,-92.455276
48.394157 ,-92.426392 48.311661 ,-92.359856 48.231728 ,-92.33168 48.234161
,-92.291405 48.248863 ,-92.28611 48.269993 ,-92.299789 48.299366 ,-92.27681
48.334991 ,-92.257233 48.346939 ,-92.162216 48.356659 ,-92.141678 48.357216
,-92.039375 48.345341 ,-92.014168 48.304436 ,-92.008064 48.280964 ,-
91.991798 48.261246 ,-91.963715 48.240536 ,-91.940277 48.230545 ,-91.850555
48.20388 ,-91.78389 48.19471 ,-91.740135 48.191376 ,-91.6875 48.144714 ,-
91.645142 48.098343 ,-91.573624 48.093048 ,-91.462784 48.05777 ,-91.418335

32
48.041107 ,-91.386803 48.05888 ,-91.347229 48.068054 ,-91.318611 48.069439
,-91.27639 48.072632 ,-91.240555 48.083603 ,-91.19249 48.114998 ,-91.14917
48.144157 ,-91.126099 48.154991 ,-90.969162 48.214714 ,-90.928329 48.2286 ,-
90.898056 48.236656 ,-90.868607 48.237495 ,-90.835213 48.227074 ,-90.8358
48.20446 ,-90.773895 48.103748 ,-90.749863 48.09277 ,-90.279999 48.113052 ,-
90.146523 48.121449 ,-90.065552 48.106453 ,-90.032776 48.069717 ,-89.99424
48.025269 ,-89.899788 47.990616 ,-89.862503 48.000832 ,-89.838898 48.011665
,-89.755562 48.029575 ,-89.606384 48.011868 ,-89.572914 48.002251 ,-
89.493126 48.003166 ,-89.447769 48.003326 ,-89.356659 47.979713 ,-89.323334
47.99305 ,-88.974167 48.13916 ,-88.691666 48.255554 ,-88.645554 48.26416 ,-
88.368057 48.31221 ,-88.188324 48.244156 ,-87.444717 47.955826 ,-87.341675
47.915543 ,-87.201401 47.860275 ,-86.884445 47.734718 ,-86.568893 47.60833
,-86.46666 47.567215 ,-86.051392 47.39888 ,-86.014725 47.383881 ,-85.908544
47.340395 ,-85.908544 38.2435 ,-101.004056 38.2435 ))',-1) );

Este ejemplo de Query hace una inserción de datos a la tabla “river” que
geoespacial.

A continuación se muestra la representación gráfica de la tabla geoespacial en un


visualizador.

33
Bibliografía:
http://help.nceas.ucsb.edu/GDAL

http://www.naturalearthdata.com/downloads

http://www.guia-ubuntu.org/index.php?title=PostgreSQL

http://www.libgd.org/Main_Page

http://www.digipedia.pl/man/doc/view/shp2pgsql.1

http://www.gdal.org/ogr2ogr.html

http://www.inf.ufrgs.br/~vbogorny/CMP539/exercicio1/spatialQueries.html

34
Anexo

35
Las cartas descargadas de división política, lagos y ríos del mundo se obtuvieron del sitio:
www.naturalearthdata.com/downloads están elaboradas con el apoyo de las siguientes
empresas:

Natural Earth es un conjunto de datos de dominio público disponibles en el mapa 01:10 m,


1:50, y las escalas 1:110. Con los datos vectoriales y raster estrechamente integrado, con
Natural Earth puedes elaborar mapas con la cartografía o el software SIG.

Natural Earth fue construido gracias a la colaboración de muchos voluntarios y con el


apoyo de NACIS (North American Cartographic Information Society), y es gratuito para su
uso en cualquier tipo de proyecto (ver nuestro Términos de uso página para más
información).

Las cartas de ríos y lagos de México respaldas por ESRI se obtuvieron de la página:
http://www.cas.sc.edu/gis/datalinks/topic_nonscgeog.html

La carta de división política de México respalda por ESRI se obtuvo de la página:


http://www.maplibrary.org/stacks/Central%20America/Mexico/index.php

36
La carta de curvas de nivel de México respaldada por el INEGI (Instituto Nacional de
Estadística y Geografía) se obtuvo de la siguiente página:
http://mapserver.inegi.gob.mx/data/inf1m/?c=720

37

Вам также может понравиться