martes, 18 de julio de 2017

Cuando se juntan PostGIS+Geoserver+QGIS - Parte 2



Importando un Raster al PostGIS







En esta segunda parte vamos a importar un archivo raster al PostGIS, para ello se cuenta con el ejecutable denominado raster2pgsql.exe, el cual permite para convertir fuentes de datos raster en tablas de base de datos. Si hemos realizado la instalación por defecto la aplicación se ubica en la ruta "C:\Program Files\PostgreSQL\9.6\bin\". 

Figura 1: Ubicación del ejecutable para importar raster a la base de datos



Para realizar el procedimiento ingresamos a la consola de Windows tipeando "cmd" y ejecutándolo como administrador, ya dentro podemos realizar la sentencia raster2pgsql -G, que nos permite conocer primero el listado de los diversos drivers disponibles para el manejo de datos raster.


Figura 2:  Opción para visualizar los formatos raster que funcionan con el raster2pgsql


Una vez que hemos seleccionado nuestra capa raster, para el ejemplo será un archivo tipo GeoTiff denominado "palcazu.srtm.tif", luego ejecutamos la siguiente sentencia.


Figura 3: Vista en consola de la secuencia de comandos para importar un raster a la base de datos


Para entender lo que se ha ejecutado de acuerdo a la opciones de los comandos considerados se tiene:

1. -s    Especifica el CRS a emplearse (EPSG: 4326, WGS84)
2. -I    Crea un índice espacial GIST en la columna ráster. 
3. -C   Define un conjunto de restricciones estándar en la columna ráster, después de que se cargar los  rasters.
4. -M  Ejecuta el comando VACUUM ANALIZE sobre la columna raster creada.
5.  Se define la ruta de ubicación del archivo raster a emplearse.
6.  -F   Adiciona una columna con el nombre de archivo raster. Por defecto rast
7.  -t    Corta un raster en "Tiles" para insertarlos uno por cada fila de la tabla creada. El  es expresado como WIDTHxHEIGHT, para este caso se indicó que sea 100x100.
8.  Se define el esquema donde se almacenará, en este caso "public" seguido del nombre de la tabla para la base de datos (dem1).
9.  Con psql se ingresa al terminal del  PostgreSQL, permitiendo con ello ejecutar consultas o scripts, en este caso se usa para primero definir al usuario de la base de datos "-U", el cual por lo general es "postgres", luego el nombre de la base datos al cual se conectará "-d", después se especifica el nombre de host de la máquina en la que se ejecuta el servidor "-h", como trabajamos en nuestra máquina se emplea el "localhost" y finalmente se especifica el puerto TCP, definido durante la instalación del PostgreSQL, por lo general es 5432.


Finalmente, tendremos como resultado una tabla adicionada dentro del Schema "public" de nuestra base de datos "peru", el cual como vimos en la Figura 3 se denomina "dem1".


Figura 4: Vista de la Tabla con nuestro raster dentro de la base de datos



Abriendo nuestro Raster en QGIS


Ahora que ya tenemos nuestro raster en el PostGIS, lo podremos abrir dentro de nuestro QGIS, para ello luego de habernos conectarnos a nuestra base de datos, podemos abrir la aplicación "Administrador de BB DD", el cual nos permite administrar todas nuestras bases de datos creadas hasta el momento, en este caso luego de activarlo (se ubica en la barra de menú llamada Base de datos), dentro de PostGIS vamos a comprobar que se adicionó una tabla a las ya creadas con datos vectoriales.

Figura 5: Vista de nuestra Tabla desde el Administrador de BB DD en QGIS


Para visualizarlo en la vista del mapa, simplemente hacemos un clic derecho y le indicamos la acción de "Añadir al lienzo" y desde ahí generamos un estilo para una mejor visualización.


Figura 6: Vista de nuestro raster aplicándole un estilo



Ahora si bien nosotros podemos darle nuestro propio estilo, a diferencia de las capas vectoriales, el QGIS no presenta la opción de forma directa para guardar estilo de tipo "SLD", el cual lo podríamos emplear cuando trabajemos con el Geoserver. Por lo tanto, vamos a emplear un plugin denominado "SLD4raster" y tal como lo indica en su descripción, soporta estilos multibanda, pseudocolor en banda simple,  gradiente (blanco a negro, negro a blanco), también de tipo interpolación de color y niveles de opacidad. Pero lo más importante es que se integra con la API de GeoServer Rest, es decir que proporciona la carga directa de los estilos que se genere previamente en el QGIS.


Figura 7: Entorno del SLD4raster con la opción de exportar un SLD o subirlo al GeoServer


Trabajando con GeoServer




Sin entrar en detalles GeoServer actúa como un Servidor Web, permitiendo servir mapas y datos de diferentes formatos para aplicaciones web; está escrito en Java y es de código abierto. Es resumen los usuarios solo necesitarían un Web Browser para visualizar los mapas tal como tu lo has creado.

Empecemos, una vez que instalan el GeoServer y entran desde su web browser, el cual por lo general es desde "http://localhost:8080/geoserver/", desde ahí solo tienen que identificarse como administrador, por defecto el usuario es "admin" y el password es "geoserver", y claro se recomienda  por seguridad luego cambiar esos datos.

Figura 8: Vista de nuestro GeoServer como administrador 


Como primer paso vamos a crear nuestro espacio de trabajo.

Figura 9: Creando nuestro espacio de trabajo

Luego procedemos a configurar dicho espacio, es decir le indicamos un nombre y después un URI con el cual nos van a identificar y que se relaciona con nuestro espacio de trabajo.

Figura 10: Configurando nuestro espacio de trabajo


Ahora ya podemos editar nuestro espacio de trabajo, sobre todo para habilitar los servicios que vamos a brindar con nuestros datos, en este caso habilitamos todos (WMS, WFS, WCS, WMTS). Desde aquí una vez activado la casilla de "Habilitado", podemos también indicar nuestros datos más específicos, como la persona de contacto y nombre de la Organización.

Figura 11: Editando nuestro espacio de trabajo.


Como paso siguiente, vamos a crear nuestro primer almacén de datos para el espacio de trabajo. Es decir que le indicaremos nuestra fuente de datos.

Figura 12: Creando un nuevo almacén de datos


Para nuestro ejemplo nuestro origen o fuente de datos serán vectores pero que provengan de nuestro base de datos PostGIS.


Figura 13: Seleccionando al PostGIS como nuestro nuevo origen de datos

Ahora además de indicarle el nombre de nuestro origen de datos, necesitamos llenar la información de conexión.


Figura 14: Configurando nuestro conexión al PostGIS en el GeoServer

Luego ya podremos verificar que dentro de nuestro origen de datos establecido, se pueden apreciar una lista de tablas, las cuales serán todas aquellas que están presentes en nuestra base de datos, y nosotros ya estaríamos listos para publicar aquellos que necesitamos que se compartan por la web.


Figura 15: Vista en GeoServer de nuestras tablas presentes en nuestra base de datos


A partir de aquí nos vamos a dedicar a configurar nuestro recursos a publicar, indicando sus principales características de nuestras capas, para ello en la pestaña de "Datos" uno de los puntos importantes a revisar es el sistema de referencia a considerar, del mismo modo que los "Encuadres" que especifican los límites en coordenadas de nuestra capa.


Figura 16: Configurando el sistema de referencia y el encuadre de nuestra capa

Si lo guardamos así como está ya podemos verificar que se agregó una capa dentro de la lista de capas del GeoServer.


Figura 17: Vista de nuestra nueva capa publicada en GeoServer

Con el objetivo de comprobar cómo se aprecia en un entorno web nuestra capa publicada, nos vamos a "Previsualización de capas".


Figura 18: Vista de las opciones de previsualización

Cuando activamos la opción de previsualizar a través del OpenLayers, vamos a tener como resultado la siguiente imagen.

Figura 19: Vista en OpenLayers de nuestra capa vectorial

Añadiendo el Servicio dentro del QGIS


Ahora nuestro objetivo es añadir un servicio de tipo WMS dentro de nuestro QGIS, para ello seguimos los pasos de la siguiente imagen.


Figura 20: Secuencia para añadir un servicio WMS dentro del QGIS

Luego de ello, podremos comprobar que ya contamos con la capa publicada con el GeoServer (Administracion_local) y que podemos añadirlo a nuestra vista de mapa del QGIS.

Figura 21: Vista de la capa disponible luego de conectarse al servicio WMS

Finalmente en nuestro QGIS lo veremos con el estilo de defecto (polígono), tal como lo apreciamos en el OpenLayers.

Figura 22: Vista de la capa en formato PNG desde nuestro servicio WMS generado


Dándole Estilo a la Capa


Si revisan el post anterior, en la Figura 9, se exportó el estilo a nuestra base de datos, pero también existía la opción de generar un SLD a nuestra capa vectorial, que fue lo que también se realizó, ahora vamos a importar ese archivo para que lo lea el GeoServer.

Figura 23: Vista de los estilos guardados como SLD de nuestras capas

Dentro del GeoServer nos vamos a Estilos, para agregar luego indicarle que vamos a agregar un nuevo estilo.

Figura 24: Opción en el GeoServer para agregar nuevos estilos



Debemos configurar nuestro estilo, primero denominándolo, luego indicando el espacio de trabajo y el formato a considerar (SLD), luego le indicamos la ubicación de nuestro archivo de estilo y finalmente subirlo.

Figura 25: Configurando nuestro nuevo estilo a importar



Ahora que ya tenemos el estilo, podemos validarlo y si todo esta bien lo enviamos para que se encuentre como una alternativa de estilo adicional.

Figura 26: Vista del archivo SLD importando y listo para enviarse

Como siguiente paso nos vamos a nuestras capas, con la finalidad de editar la capa con el nuevo estilo disponible, para ello se ingresa a la pestaña "Publicación".


Figura 27: Edición de nuestra capa con el nuevo estilo importado


Una vez realizado este paso, podemos ir a previsualizar la capa y verlo en un entorno web con OpenLayers.

Figura 28: Vista en OpenLayers de nuestra capa vectorial con el estilo importado

Muy bien, ahora nos vamos al QGIS para añadir como ya conocemos nuestro servicio y veremos la diferencia, sobre todo observen que ya se adiciono el estilo como propiedades de la capa.

Figura 29: Vista de cuando añadimos un servicio WMS con el nuevo estilo generado.

Finalmente ya dentro de nuestra vista de mapa del QGIS podemos apreciarlo, y si requerimos dar unos ajustes a los colores, es específico relacionado a brillo, saturación y contraste lo podemos realizar desde el panel de estilos.

Figura 30:  Vista final de nuestra capa con el estilo generado y con la opción para algunos ajustes


Bueno, se cumplió con el objetivo de primero importar un archivo raster al PostGIS, y luego empezar a trabajar con el GeoServer, sobre todo para ver las opciones que tenemos para la publicación de mapas web, en este caso vimos a través de un servicio WMS, pero como habilitamos también la opción de WFS, también lo podemos realizar, a ver si lo intentan y me comentan.

No voy a extender más esta entrada, está pendiente para la siguiente parte dos procedimientos: (1) cómo se importa un archivo raster al GeoServer agregándole estilo y (2) la gestión de nuestras capas de GeoServer empleando el plugin Geoserver Explorer.









2 comentarios:

Anónimo dijo...

hola! de que manera puedo programarlo para que se ejecute el comando raster2pgsql para todos los archivos de una carpeta. Por ejemplo para dejarlo corriendo con un loop que recorra toda la carpeta y me genere una tabla por cada archivo.
He logrado que me genere una tabla con todos los archivos en la misma, pero necesitaria tenerlos por separado. Gracias!

carlos carbajal dijo...

Disculpa la demora en contestar, la verdad es que he dejado de publicar en este blog por eso que hace tiempo no lo reviso. En relación a tu consulta, no conozco una forma de hacerlo para que funcione como deseas.