[Spanish] (sin asunto)

Evaristo Gestoso Rodriguez evaristogestoso at gmail.com
Sun Nov 9 13:19:49 EST 2008


Puedes utilizar, algún SIG para cargar los archivos .shp GvSIG o Qgis, si
quieres utilizar la línea de comandos:

El cargador de datos "shp2pgsql" convierte archivos de (figuras -shape-)
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 comando:

-d Elimina la tabla de la base de datos antes de crear la tabla con los
datos del archivo de figuras.
-a Añade los datos del archivo de figuras a las tabla de la base de datos.

El fichero debe tener los mismos atributo que la tabla.

-c Crea una nueva tabla y llena esta con el archivo de figuras. Este es el
modo por defecto.
-D Crea una tabla nueva llenándola con los datos del fichero de formas.
Pero usa el formato dump para la salida de datos que es mas rápido que el
insert de SQL, usandose  este para conjuntos de datos largos.
-s<SRID> Crea y rellena una tabla geométrica con el SRID que se le pasa como
parámetro.

Ejemplos:

shp2pgsql shaperecintos tablarecintos recintosdb>recintos.sql
psql -d recintosdb -f recintos.sql

Puedes hacerlo de una vez usando un pipe:

shp2pgsql shaperecintos tablarecintos recintosdb | psql -d recintosdb

Bueno he encontrado un documento que tenía  por ahi, con toda la secuencia
completa

Creación de la base de datos:

Tenemos dos posibilidades usar Pgadmin o utilizar el terminal interactivo
psql.

1.- Arrancamos la consola de comandos  MsDos de Windows mediante Inicio,
ejecutar, cmd. nos colocamos sobre el directorio bin en donde hayamos
instalado Postgre. Si queremos utilizar los ejecutables desde cualquier path
tendremos que declarar la trayectoria de los binarios y librerías en las
variables de entorno del sistema.

2. A continuación creamos una base de datos PostgreSQL con el comando
createdb:
createdb –encoding=latin1 ArkeoSIA
Siendo ArkeoSIA la base de datos espacial que hemos creado y latin1 el
sistema de codificación que vamos a utilizar soportando el juego de
carácteres ISO-8859-1

3. Una vez creada la base de datos para poder utilizarla deberemos
conectarnos a ella para ello escribiremos el siguiente comando psql ArkeoSIA

Accedemos asi al terminal interactivo Psql

A continuación pasamos a habilitar las características espaciales de nuestra
base de datos mediante PostGIS.

1. PostGIS requiere el lenguaje de procedimientos PL/pgSQL asi que debermos
escribir el siguiente comando:
createlang plpgsql ArkeoSIA;

2. Procedemos a crear dos tablas, geometry_columns y spatial_ref_sys que
darán el soporte espacial a nuestra base de datos escribiremos sobre la
consola de comandos

psql -d ArkeoSIA -f lwpostgis.sql

psql -d ArkeoSIA -f spatial_ref_sys.sql

La definición de estas tablas podemos encontrarlas en los ficheros
postgis.sql y spatial_ref_sys.sql que se encuentran ubicados en el
directorio /share/contrib. Si nos resulta más comodo podemos ejecutar una
consulta SQL sobre pgAdmin para cargar ambas tablas. Una vez realizada la
consulta a nuestra base de datos ArkeoSIA se le añaden estas dos nuevas
tablas.

Tabla geometry_columns

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,
  f_geometry_column varchar(256) NOT NULL,
  coord_dimension int4 NOT NULL,
  srid int4 NOT NULL,
  "type" varchar(30) NOT NULL,
  CONSTRAINT geometry_columns_pk PRIMARY KEY (f_table_catalog,
f_table_schema, f_table_name, f_geometry_column)
)

donde: f_table_catalog , f_table_schema, f_table_name  son el nombre
totalmente calificado de la tabla de rasgo que contiene la geometría. Siendo
f_geometry_column, el nombre de la columna de geometría en la tabla de rasgo
y coord_dimension la dimensión espacial en 2d o 3d de la columna. El campo
srid es el ID del sistema de referencia espacial que estamos usando para la
geometría analítica de esta tabla siendo srid una referencia a la clave
ajena a esta tabla spatial_ref_sys. Por último, type, hace referencia al
tipo de objeto espacial que estamos almacenando. Para poder restringir la
columna a un tipo simple usamos uno de los objetos que puede manejar
PostGIS: POINT, LINESTRING, POLYGON, MULTPOINT, MULTILINESTRING,
MULTIPOLYGON, GEOMETRYCOLLECTION. Si queremos usar colecciones de diversos
tipos deberemos usar GEOMETRY como tipo.

Tabla spatial_ref_sys

CREATE TABLE spatial_ref_sys
(
  srid int4 NOT NULL,
  auth_name varchar(256),
  auth_srid int4,
  srtext varchar(2048),
  proj4text varchar(2048),
  CONSTRAINT spatial_ref_sys_pkey PRIMARY KEY (srid)
)

El campo srid hace referencia a un valor integer que identifica el sistema
de referencia espacial usado en la base de datos.
El campo auth_name guarda el cuerpo de normas que esta siendo citado  para
este sistema de referencia, por ejemplo EPSG que es el más comunmente
utilizado.
El campo auth_srid guardaría el valor ID del Sistema de Referencia Espacial
definido por la Autoridad citada en auth_name. Dentro de la Peninsula
Ibérica deberiamos introducir los siguientes valores de códigos EPSG
23029,23030,23031 cuyo significado es UTM ED50 29N, 30N, 31N.

El campo srtext guarda el Sistema de Referencia Espacial en formato WKT
-Well-Known Text- un ejemplo de este formato de SRS sería:

ED50 / UTM zone
29N",GEOGCS["ED50",DATUM["European_Datum_1950",SPHEROID["International
1924",6378388,297,AUTHORITY["EPSG","7022"]],AUTHORITY["EPSG","6230"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4230"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",-9],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AUTHORITY["EPSG","23029"]]'

El campo proj4text almacena la definición de coordenadas de la librería
Proj4 para el tipo de SRID que estemos utilizando. PostGIS al igual que la
mayoría de los programas OpenSource utilizan la librería Proj4 para obtener
la capacidad de transformación de coordenadas entre distintos sitemas de
proyección. Por ejemplo, para nuestro caso de los Castros del Hierro del NW
zamorano vendría definido por:

+proj=utm +zone=29 +ellps=intl +units=m +no_defs

Una vez realizados todos estos pasos ya tenemos preparado el cuerpo
principal de nuestro Sistema de Información Arqueológica que unido a otras
piezas poderosas de software de código abierto nos permitirán realizar todas
las labores que un arqueológo debe realizar para llevar a buen fin su labor
de investigación y/o documentación en el ámbito de la arqueología preventiva
y de gestión.

Cargando Datos SIG en PostgreSQL con shp2psql

Antes de nada para manejarnos mejor con los datos hemos de declarar la
trayectoría del directorio bin de pgsql en las variables de entorno del
sistema. Abrimos la consola de comandos del dos y nos situamos sobr el
directorio que tenemos los datos.

C:\data>dir *.shp
 El volumen de la unidad C es WINDOWS
 El número de serie del volumen es: 3D22-14F1

 Directorio de C:\data

10/11/2005  18:51         8.272.684 contourl.shp
06/08/2005  20:25             3.236 castros_nw_zamora.shp
              14 archivos     16.322.880 bytes
               0 dirs     570.376.192 bytes libres
a continuación ejecutamos el programa shp2pgsql para transformar el fichero
shape a una tabla pgsql mediante pipeline

C:\data>shp2pgsql castros_nw_zamora.shp castros_nw_zamora > castroszam.sql
Shapefile type: Point
Postgis type: POINT[2]

una vez obtenido el fichero sql sólo nos queda insertar la tabla en nuestra
base de datos ArkeoSIA mediante psql o pgadminIII

psql –U postgres –f castroszam.sql


Mediante SQL

Para probar la base de datos recien creada crearemos una tabla con un campo
de geometrías añadiendo algunos objetos espaciales a la mismas. Sobre esta
ejecutaremos una función espacial contra los contenidos que acabamos de
introducir.

Arrancamos el terminal psql para acceder a la base de datos:

psql ArkeoSIA o \c ArkeoSIA

Creamos una tabla yacimientos e introducimos algunos valores.

En el presente ejemplo hemos usado dos funciones espaciales Distance() y
AsText(). Ambas funciones utilizan la geometría del objeto como argumentos.
La función Distance calcula la distancia mínima cartesiana entre dos objetos
espaciales. La función AsText nos devuelve la geometría en texto simple  en
un formato conocido como WKT o Well-Known Text


un saludo espero te sirva de ayuda.

-- 
Evaristo Gestoso Rodriguez

Puedes visitar:

http://arkegeomatica.es/IdeARK
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://lists.osgeo.org/pipermail/spanish/attachments/20081109/80732c5b/attachment.html


More information about the Spanish mailing list