Post on 01-Dec-2015
description
CUADERNOS DE GEOMÁTICA PRÁCTICA
INTEGRACIÓN DEL GESTOR DE BBDD
POSTGRESQL INCLUYENDO SU
EXTENSIÓN ESPACIAL POSTGIS CON
LOS CLIENTES S.I.G. GVSIG Y KOSMO
Este primer estudio es necesario y preliminar de cara a poder abordar otro
complementario, pero necesariamente posterior de los clientes SIG enumerados.
Efectivamente, de cara a la correcta integración de dichos clientes con el
gestor de datos PostGIS, elegido por coherencia con estudios previos en I.A.M.
realizados por Base de Datos y siendo conocida también el hecho de que su
extensión espacial es usada por sistemas cartográficos OGC consolidados.
Sólo con este primer estudio es posible abordar con las base y seguridad
adecuadas aquél. De ahí su necesidad que ha sido fundamentada a través de los
siguientes puntos:
Determinación de la versión más evolucionada posible del SGBDE
Determinación de las versiones más evolucionadas de los clientes SIG a
estudio
Problemas y forma de instalación del SGBDE
Problemas de integración entre el gestor OGC comentado y los clientes
Solución posible a los posibles problemas detectados
Comprobación de la viabilidad de la arquitectura software base.
Enrique de Dios San Román Ingeniero en Geomática y topografía
Ingeniero Técnico en topografía
Master en Sistemas de Información Geográfica por la U.P.M.
INSTALACIÓN DE POSTGRESQL Y EXTENSIÓN POSTGIS - PRELIMINARES
Es importante conocer las páginas principales en la web:
Principal:
http://www.postgresql.org.es/
Descarga:
http://www.enterprisedb.com/products-services-training/pgdownload#windows
(Hay soporte Linux (x32 y x64) , Windows (x32 y x64) y Mac
La versión utilizada para la prueba piloto será:
Base de datos
Postgresql Versión 9.2.4-1 para windows-x64 (Parte del desarrollo se hizo en x64)
Extensión espacial
Postgis 2.0 (incluído en el paquete de descarga de Postgresql)
Cliente de PostgreSQL
phppgAdmin 5.0.4
Datos importantes para la instalación tipo:
UserName/password: postgres/super
Host 127.0.0.1
Puerto/port : 5432
Configuración regional Spanish/Spain
Spatial database name: postgis20
Al final podremos realizar sendos accesos directos a las dos funcionalidades principales
que vamos a usar:
PgAdmin "C:\Program Files\PostgreSQL\9.2\bin\pgAdmin3.exe"
Conversor shapes "C:\Program Files\PostgreSQL\9.2\bin\postgisgui\shp2pgsql-gui.exe"
INSTALACIÓN DE POSTGRESQL Y EXTENSIÓN POSTGIS – PANTALLAS INSTALACIÓN
Aquí es importante instalar todos los formatos de acceso externo (programación)
contra el SGBBDD y la extensión PostGIS (2.0 en este caso) y la herramienta phppgadmin.
Aquí irán apareciendo una serie de pantallas simples de instalación que iremos pasando.
Finalmente nos aparecerá una del siguiente tipo
(la clave puede ser cualquiera en nuestro caso hemos elegido “super”)
Pasadas unas pantallas sin complicación alguna terminará la instalación de PostgreSQL.
INSTALACIÓN DE POSTGRESQL Y EXTENSIÓN POSTGIS - COMPROBACIÓN
Accederemos a través del acceso directo de pgadmin al cliente de PostgreSQL
Es importante ver que postgis20 y template_postgis_20, esta última es la
plantilla de modelo espacial, que usaremos para generar nuestra primera BBDD espacial.
Para generar una BBDDEE de ejemplo nos situaremos sobre “Bases de Datos” ->
“Nueva Base de Datos” y aparecerá una ventana como la siguiente en la que los elementos
principales serán:
Nombre de la BBDDEE: COSLADA
Propietario: postgres, que es el usuario de la instalación
Tipo de carácter: Juego Spanish_Spain.1252
Codificación: UTF8. Capaz de representar cualquier carácter Unicode. Estándar.
Plantilla: template_postgis_20 (esto es lo que hace que sea una implementación espacial)
Roll: public al que damos todos los privilegios (podríamos generar un usuario concreto)
Hecho esto, veremos que la BBDD generada “COSLADA” tiene implementadas las
características básicas espaciales que precisa para ser BBDDEE (postgis,
postgis_topology).
La manera más sencilla de incorporar datos espaciales para cualquier instalación
en la que se parta de datos SDE o bien de plataformas capaces de exportar su información
al formato de intercambio shape de ESRI es utilizando la herramienta shp2pgsql-gui, que
antes había que manejar a través de consola (cmd), pero que en la versión con la que
trabajamos de postgresql incluye una interface GUI de usuario muy cómoda. Ya dijimos
que era muy útil tener un acceso directo a la misma. Accediendo a la herramienta
tendremos:
Los pasos serán:
Definir la conexión a la BBDDEE
Añadir los ficheros shape que se incorporarán como tablas PostGIS
Importar propiamente
Una vez establecida la conexión tendremos en el log un mensaje de conexión
realizada. En el caso de error, algún parámetro no estará correctamente puesto (la
password que estamos usando sabemos que es “super”). Después seleccionaremos los
shapes a incorporar tal y como se muestra (pulsando add file)
Es importante realizar una revisión del log para ver que no se ha producido ningún
problema en la importación de datos a la BBDDEE “COSLADA”. En el ejemplo contemplado
tenemos geometrías del tipo multistring, multipolygon y point.
Volviendo a la herramienta pgadmin podremos observar que en el esquema
“public” de la BBDD COSLADA, nos deberá de aparecer el conjunto de tablas generado
(CCPP, CONSTRU,CRUCE,MASA,MUNICIPIO…).
También podremos realizar alguna consulta para ver que todo está en orden.
Para realizar un par de consultas SQL espacial podemos en pgAdmin ir a
Herramientas -> Herramientas de consulta. Ahí nos saldrá un cliente en el que podremos
realizar como con DBVisualizer o cualquier otro cliente de BBDD la consulta sobre
PostGRE. Vamos a realizar un par de consultas:
Área total: Calcular la superficie de las parcelas que perteneciendo al código postal 28823
se encuentren en el distrito 3, sección censal 3:
SELECT SUM((ST_AREA (ST_GEOGFROMWKB (P.GEOM)))/10000) FROM PARCELA P, CCPP
C, SSCC S WHERE COD_POSTAL = '28823'AND ST_CONTAINS (C.GEOM, P.GEOM) AND
(DISTRITO= 3 AND SECCION=3) AND ST_CONTAINS (S.GEOM, P.GEOM) ;
Distancia media de los centroides de las secciones censales al centroide de código postal
28821 y que éste contenga a aquellas secciones completamente
SELECT AVG (ST_DISTANCE (ST_GEOGFROMWKB (ST_CENTROID (C.GEOM)),
ST_GEOGFROMWKB (ST_CENTROID (S.GEOM)))) FROM CCPP C, SSCC S WHERE COD_POSTAL
= '28821' AND ST_CONTAINS (C.GEOM, S.GEOM);
INSTALACIÓN DE POSTGRESQL Y EXTENSIÓN POSTGIS – COMPATIBILIDAD GVSIG
Versión gvSIG utilizada: 2.0.0.2066 final
Descarga:
Se procede ahora a demostrar que las versiones de PostgreSQL y PostGIS utilizadas
es compatibles o no con las versión estudiada (última disponibles a 16 de Mayo de 2013)
de la herramienta cliente SIG denominada gvSIG.
Accedemos a la pantalla de incorporación de datos a través de Vista -> Añadir capa:
INSTALACIÓN DE POSTGRESQL Y EXTENSIÓN POSTGIS – COMPATIBILIDAD KOSMO
Versión Kosmo: 2.0.1 (Windows / Linux)
Descarga: http://www.opengis.es/index.php?option=com_docman&task=cat_view&gid=17&Itemid=42
Se procede ahora a demostrar que las versiones de PostgreSQL y PostGIS utilizadas
son compatibles o no con la versión estudiada del cliente SIG denominado Kosmo (última
disponibles a 16 de Mayo de 2013).
En este caso lo primero que tenemos que definir es la proyección de trabajo, en
nuestro caso geográfica sobre elipsoide WGS 84:
Accedemos a la pantalla de incorporación de datos a través de Vista -> Cargar datos
Kosmo, al igual que gvSIG es incapaz de cargar los datos. Sólo la estructura de las tablas.
En este caso además no se nos proporciona información precisa del error generando un
problema con EPSG.
INSTALACIÓN DE POSTGRESQL Y EXTENSIÓN POSTGIS – SOLUCIÓN gvSIG / Kosmo
El problema está en lo siguiente: Hasta la versión 9.1 de PosgreSQL existían algunas funciones espaciales sin el prefijo ST_. A partir de la versión 9.1 esto ha cambiado, de manera que debemos crear la función AsEWKB para que devuelva el valor de la actual función ST_AsEWKB y así con todas las funciones afectadas. Dado que gvSIG y Kosmo utilizan dichas funciones (probablemente las librerías SEXTANTE que incluyen también, aunque este extremo no se ha comprobado, dado que al usarlos dentro de la herramienta la BBDDEE ya incluye las librerías completas) al incorporar en su código jdbc’s con librerías PostgreSQL de versiones anteriores a la 9.1. La solución completa al problema está disponible en www.opengeo.org . Podemos bajarnos la herramienta Open GeoSuite 3.0.2 disponible para Windows y Mac. (Es importante, aunque se trate de otro tipo de aplicaciones y aquí sólo se diga a título informativo, que se encuentra disponible también una serie de librerías SDK que permiten la construcción de herramientas a medida). La solución está disponible con seguridad en la versión 3.0.2 y no antes de la 2.4.5 (instalación comprobada) en la que en la ruta (C:\Program Files (x86)\OpenGeo\OpenGeo Suite\pgsql\9.1\share\contrib\postgis-2.0) podemos ejecutar en la BBDDEE afectada el script de BBDD denominado legacy.sql que corrige los efectos provocados por lo antes expuesto, lo cual sin este script sería un trabajo ímprobo. Así volviendo a realizar los pasos de conexión a PostGIS desde los clientes SIG analizados obtenemos los siguientes resultados: gvSIG
KOSMO
Dando por solucionada así tanto la manera en que debe de instalarse PostgreSQL, PostGIS y los parches a aplicar para compatibilizar la última versión de dicho SGBD con los clientes SIG gvSIG, Kosmo y todos aquellos que no hagan uso de jdbc actual de la versión del sistema de BBDD. El único detalle a destacar entre ambos es que Kosmo discrimina las tablas de plantilla del apartado espacial del propio gestor y por tanto no aparecen en la lista de las seleccionables, mientras que en gvSIG debemos conocerlas para no importarlas, lo cual hace algo más “amigable” la importación desde Kosmo.