# 2. Instalación y puesta en marcha

En este segundo apartado del manual el usuario encontrará todos los pasos necesarios que hay que dar antes de empezar a trabajar en el entorno Giswater, desde los requisitos previos a la instalación hasta la configuración del programario, pasando por la creación de nuevos proyectos, ya sean reales o de ejemplo, para probar el funcionamiento de Giswater.

## 2.1 Software necesario

Para empezar a trabajar con Giswater se debe contar, como mínimo, con 2 programas:

* **PostgreSQL:** el proceso de instalación debe incluir la selección de pgAdmin (Gestor de Bases de Datos) y la aplicación PostGIS (Extensión espacial).
* **QGIS:** software de geoprocesamiento.

PostgreSQL puede estar en nuestra máquina o en cualquier servidor donde tengamos acceso. QGIS, en cambio, lo instalaremos siempre en nuestra máquina.

Para descargar todo el software necesario se recomienda visitar el sitio <mark style="color:blue;">**web de Giswater**</mark>, donde se pueden encontrar los links de descarga y las **versiones compatibles con la última versión del plugin Giswater**.

{% embed url="https://www.giswater.org/descarga" %}

## 2.2 Descarga y configuración de PostgreSQL

PostgreSQL es una base de datos _open source_ con un enorme potencial, que servirá para almacenar todos los datos con los que se trabaja en Giswater. Gracias a su extensión geoespacial PostGIS permite una relación muy cómoda con los GIS, especialmente QGIS. Esta extensión contiene más de 1000 funciones geoespaciales, por lo que la convierte en uno de los softwares GIS más potentes que existe, aunque PostgreSQL no sea un programa específico de GIS.

Hay distintas versiones disponibles para descargar. Para trabajar con Giswater se necesita una versión entre la 10 y la 16.

Se puede comprobar en Github la compatiblidad de las versiones de PostgreSQL con Giswater.

{% embed url="https://github.com/Giswater/giswater_dbmodel/wiki/version-compatibility" %}

La descarga e instalación es muy sencilla y se puede hacer desde [https://www.postgresql.org/download](https://www.postgresql.org/download). Junto con la base de datos se instala un programa de administración de la base de datos, pgAdmin ([https://www.pgadmin.org/download/](https://www.pgadmin.org/download/) para descargarlo), que servirá para gestionar la base de datos de un modo visualmente fácil para el usuario. Mediante pgAdmin se podrán modificar las tablas, vistas y reglas de la base de datos, así como consultar toda la información y gestionarla.

Una vez instalados ambos programas, al abrir pgAdmin lo primero que tenemos que hacer es añadir una nueva conexión.

![Imagen 2. Añadir nueva conexión.](https://4285305625-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MQxeUyQYblyryvujQN3%2F-MS2VUduytX8UWFcLO-z%2F-MS2awtF_KW9c4uNa0ze%2Fpgadmin.png?alt=media\&token=3fa9c5c8-8119-40fd-bb4a-216df2647f73)

Hay que rellenar los siguientes campos para añadir una nueva conexión:

**Name**: nombre de la conexión.

**Host**: puede ser localhost o una conexión a otro servidor.

**Port**: puerto.

**Service**: relacionado con un servicio configurado en el fichero pg\_service.conf. (opcional).

**Maintenance** **DB**: base de datos existente con la que se relaciona la nueva conexión.

**Username**: nombre de usuario. El primer usuario debe ser ‘postgres’.

**Password**: contraseña, que para el usuario postgres también es ‘postgres’.

![ Imagen 3. Añadir una nueva conexión a Postgres mediante pgAdmin.](https://4285305625-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Fgiswater-user-s-manual%2F-MS2VUduytX8UWFcLO-z%2F-MS2XyHYzoQNFr0SJLLp%2F1.png?generation=1611745980953627\&alt=media)

Una vez creada la nueva conexión, veremos que se nos ha creado automáticamente un primer esquema _public._ A continuación, hay que añadir la extensión PostGIS, para tener disponible toda la funcionalidad GIS del programa, y también la extensión pgRouting, que añade funcionalidades de ruteo y análisis de redes a base de datos. pgRouting será imprescindible para algunas de las herramientas de Giswater como el polígono de corte y los perfiles longitudinales.&#x20;

Clicando el botón de comandos SQL podremos escribir nuestra primera _query_![](https://4285305625-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Fgiswater-user-s-manual%2F-MS2VUduytX8UWFcLO-z%2F-MS2XyHZKvLzEC8tE6ad%2F2.png?generation=1611745980959187\&alt=media)

```
CREATE EXTENSION postgis;
CREATE EXTENSION pgrouting;
```

{% hint style="warning" %}
A partir de la **versión 3** de **PostGIS** tambien será necesario añadir la extensión específica para gestionar capas ráster.
{% endhint %}

```
CREATE EXTENSION postgis_raster;
```

## 2.3 Configuración de QGIS

Al abrir QGIS por primera vez, se deben configurar una serie de parámetros, necesarios para trabajar con Giswater. Son los siguientes:

* Crear una conexión PostGIS a la base de datos donde se encuentra el esquema de datos.
* Para trabajar de forma cómoda y rápida con ráster, se recomienda ampliar la memoria caché de QGIS a 1GB y 1 año, mediante el menú _‘Configuración/Opciones/Red’._
* Escoger abrir formulario si una única entidad es seleccionada.

**¿Cómo configurar una conexión de QGIS a PostGIS?**

1\) Pinchamos sobre el icono **Añadir capa PostGIS**.

2\) Hacemos clic sobre el botón **Nueva** y en el formulario introducimos los parámetros de conexión.

![ Imagen 4. Formulario de conexión a PostGIS desde QGIS. Así se podrán importar capas de la base de datos.](https://4285305625-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQxeUyQYblyryvujQN3%2Fuploads%2FxfSiWwMgmvC3ZOHxPbv6%2Fimagen4.png?alt=media\&token=76e0197e-18e6-43d7-abb5-98074503ecee)

3\) Una vez introducidos los parámetros, hacemos clic sobre el botón **Probar conexión**. Si todo es correcto, en la parte superior de la ventana obtendremos el siguiente mensaje:

![Imagen 5. Probar conexión.](https://4285305625-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQxeUyQYblyryvujQN3%2Fuploads%2FDXWA4tUrQDbR1SERcxt5%2Fimagen5.png?alt=media\&token=5b24b709-767a-4eea-b6f2-6821d6ce39f3)

4\) Pinchamos sobre el botón **Aceptar**. En este momento la información de conexión se guardará con el nombre en la lista de conexiones.

{% hint style="warning" %}
Si con esta conexión queremos tener la posibilidad de generar nuevos esquemas de trabajo, el usuario de conexión deberá ser **SUPERUSER** en PostgreSQL.
{% endhint %}

Para usar el plugin Giswater es necesario tener creada una conexión a la base de datos que usaremos para trabajar. Con crearla una vez para cada QGIS instalado será suficiente.

Múltiples conexiones a distintas bases de datos son posibles, aunque es este caso se recomienda trabajar con precaución para no mezclar datos entre una u otra base de datos.

Cuando estemos conectados podremos visualizar las tablas (con y sin geometría) que contenga la base de datos correspondiente y, si es necesario, añadirlas al proyecto.

## 2.4 Descarga y primeros pasos del plugin Giswater

En versiones anteriores, Giswater estaba compuesto por un aplicativo, que actuaba como _driver_ para la configuración, creación y gestión de los diferentes proyectos sobre la base de datos, y un plugin basado en QGIS para la explotación de los elementos de red.

A partir de la versión 3.2, únicamente será necesaria la instalación del plugin en QGIS para desarrollar todas las funcionalidades citadas anteriormente.

* Para la descarga del plugin, será necesaria la URL del repositorio: [https://download.giswater.org/plugin/3.6/giswater.xml](https://download.giswater.org/plugin/3.5/giswater.xml)

Esta se puede encontrar en la página web de Giswater ([https://www.giswater.org/descarga/](https://www.giswater.org/descarga/)), desde la cual también se podrá acceder al contenido de versiones anteriores del plugin.

A parte de la pestaña de descarga, en el portal web también se puede consultar información acerca del producto, de los beneficios de los programas _open source_, la comunidad de expertos que desarrollan Giswater u obtener materiales y tutoriales para aprender a usarlo.

### 2.4.1. Instalación del plugin en QGIS

Para la instalación y conexión del plugin Giswater con QGIS, es necesaria la configuración de un nuevo repositorio, el cual nos permitirá visualizar el plugin Giswater en el conjunto de la lista de complementos. Para esto debemos seguir los siguientes pasos:

1. Abrir QGIS y acceder al repositorio de plugins (complementos).
2. Acceder a la pestaña ‘_Configuración’_ (Settings) y añadir un nuevo repositorio.
3. Introducir un nombre que identifique el repositorio y la URL.
4. Buscar e instalar el plugin Giswater, desde la pestaña ‘_Todos_ ‘.

![Imagen 6. Para añadir el plugin de Giswater a QGIS hay que buscarlo en la pestaña Complementos.](https://4285305625-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Fgiswater-user-s-manual%2F-MS2VUduytX8UWFcLO-z%2F-MS2XyHdwxKxAYULlB7g%2F7.png?generation=1611745980962847\&alt=media)

![Imagen 7. Se añade el repositorio manualmente, mediante una URL.](https://4285305625-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQxeUyQYblyryvujQN3%2Fuploads%2FPk4USpOQw7GaBJX0vBlB%2Fimagen7.png?alt=media\&token=06b201ac-b973-496f-847d-38f4da335c05)

![Imagen 8. Siempre podremos ver la versión del plugin que tenemos instalada actualmente y la versión disponible en el repositorio.](https://4285305625-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Fgiswater-user-s-manual%2F-MS2VUduytX8UWFcLO-z%2F-MS2XyHffeB0ELVNfzvT%2F9.png?generation=1611745980961830\&alt=media)

_Advertencia: Si queremos actualizar a una versión del plugin más reciente, se puede hacer, pero esto puede tener implicaciones que veremos más adelante._

_La herramienta del plugin Giswater debe aparecer en la barra de herramientas de Complementos. Si no la tenemos activada, habrá que hacerlo mediante_ Ver > Barras de herramientas > Complementos.

_Si al instalar el plugin por primera vez con resultado satisfactorio no nos sale automáticamente el botón Giswater en la barra de Complementos, deberemos cerrar QGIS y abrirlo de nuevo._

_En caso de tener más de un proyecto de QGIS abierto, el comportamiento del plugin puede presentar inestabilidades, así pues, se recomienda no usar el plugin con más de un proyecto de QGIS abierto._

### 2.4.2 Herramienta general de gestión de proyectos

Esta será la herramienta que deberá conocer un usuario de Giswater al empezar a trabajar. Al contrario que el resto de botones que incorpora el plugin, este se ubica en la barra de herramientas general junto al resto de botones de otros complementos instalados o propios de QGIS.

![](https://4285305625-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MQxeUyQYblyryvujQN3%2F-MS2VUduytX8UWFcLO-z%2F-MS2d8Wb4OSDuAUvn8Mo%2F2_gw.png?alt=media\&token=1bae8b9a-9a33-45a6-bedc-00794d98e9eb)

Esta herramienta solo se habilitará en el caso de que abramos QGIS sin ningún proyecto tipo Giswater (entendemos por tipo Giswater un proyecto que tenga cargadas, como mínimo, las capas de representación de nodos, tramos y connecs de un esquema en base de datos).

Para el caso que nos ocupa, que es la inicialización y los primeros pasos dentro del plugin, deberemos saber cómo hay que manejar esta herramienta para que nos permita realizar todas sus funcionalidades:

* Generar nuevos esquemas de trabajo (directamente en la base de datos).
* Mostrar los esquemas existentes.
* Actualizar y editar los esquemas existentes.
* Dar información sobre el esquema seleccionado.

{% hint style="warning" %}
Solo si la conexión se realiza con un **SUPERUSER** de PostgreSQL será posible generar esquemas o actualizarlos.
{% endhint %}

![Imagen 9. Formulario principal de la herramienta general de gestión de proyectos.](https://4285305625-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQxeUyQYblyryvujQN3%2Fuploads%2FpijCLKO2kWA1lVJcp8qj%2Fimagen%209.png?alt=media\&token=70638c17-9247-46b5-9c92-d4bb4e30d7c4)

### 2.5.1 Creación de un esquema vacío

Con la propia herramienta general de gestión de proyectos que acabamos de presentar en el apartado **2.4.2**, vamos a proponernos como objetivo crear una plantilla básica de esquema de trabajo en la base de datos, que posteriormente podrá ser abierta y editada como proyecto de QGIS. Al referirnos a esquema vacío no significa que no haya ningún dato lleno en las tablas, sino que los datos propios de una red específica no están. Sin embargo, sí que encontraremos valores comunes y de sistema que debe incorporar obligatoriamente cualquier esquema de trabajo Giswater.

Lo primero que debemos tener en cuenta es que esta herramienta, en su primer desplegable _Nombre conexión_ nos mostrará todas las conexiones PostGIS que hayamos creado en nuestro QGIS. En el apartado **2.3** de este manual se creó una conexión con nombre _giswater manual,_ por esto nos aparece esta conexión como disponible en la herramienta (Imagen 9). Habrá, entonces, que tener en cuenta los parámetros de conexión que hayamos dado para saber a qué base de datos atacará la herramienta y por lo tanto dónde vamos a generar la plantilla nueva.

Con la conexión clara, deberemos clicar el botón **Crear esquema proyecto BBDD** para abrir el formulario de configuración del nuevo esquema de trabajo.

![Imagen 10. Formulario de creación de un esquema. Con Empty data seleccionado crearemos un esquema vacío.](https://4285305625-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQxeUyQYblyryvujQN3%2Fuploads%2F36pxUequ4hrdji96CJ4D%2Fimagen10.png?alt=media\&token=d0aafb50-e7ed-4a43-92da-791f622a3518)

Una vez que hayamos especificado las distintas opciones, al clicar **Aceptar** se iniciará el proceso de generación de la plantilla.

También podremos ver en la base de datos, mediante pgAdmin, que ha aparecido el esquema _ws\_sample_ con las funciones, secuencias, tablas, triggers y vistas que contiene una plantilla de Giswater para redes de abastecimiento.

<div align="center"><img src="https://4285305625-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQxeUyQYblyryvujQN3%2Fuploads%2F7xnC3J6hDRA4Y9Vu0oXo%2Fimagen11.png?alt=media&#x26;token=242ef819-522c-47e9-93ed-d9e81c69ddae" alt="Imagen 11. Nuevo esquema creado en la base de datos."></div>

#### 2.5.1.1 Configuración básica de un esquema vacío

Existen muchos tipos de tablas dentro de todas las creadas en el apartado anterior. Hay algunas que ya están llenas por defecto, otras que se irán rellenando a medida que se vayan creando elementos y hay tablas que pueden ser customizadas por el usuario, en función de sus necesidades y de las de su red.

Las tablas básicas que coinciden con los elementos genéricos principales de cualquier proyecto Giswater tienen gran importancia y hay que tenerlas en cuenta para poder explicar este apartado. Son las siguientes:

* **Arc**
* **Node**
* **Connec**
* **Gully** (solo para UD)

Estas cuatro tablas están vacías y solo se rellenarán cuando nuestro proyecto tenga elementos geoespaciales del tipo correspondiente, pero tienen ciertas restricciones a la hora de rellenarlas y relaciones con otras tablas que habrá que cumplir.

Para cualquier usuario que quiera personalizarse qué tipos de elementos quiere, deberá consultar una tabla y modificarla a su gusto.

* **cat\_feature**

Esta tabla sirve como catálogo para todos los elementos de los distintos tipos. En cualquier esquema creado ya encontraremos valores, pero fácilmente podremos cambiar nombres, añadir o eliminar filas.

Cada elemento que exista en **cat\_feature** tiene que formar parte obligatoriamente de un tipo de elemento (_feature\_type),_ que puede ser NODE, ARC, CONNEC o GULLY, y además de otro tipo dentro de cada uno de los anteriores, especificado en la tabla _sys\_feature\_type_ (no modificable por los usuarios).&#x20;

Cada usuario puede personalizar la tabla **cat\_feature** con elementos concretos que sean necesarios para su red, siempre que estos estén relacionados con uno de los campos de _sys\_feature\_type_ (por ejemplo, TANK o FOUNTAIN) y con uno de los _feature\_type_ existentes.

En un orden de jerarquía menor de tablas que determinan los elementos existentes, encontramos las tablas de **catálogo** (ver el apartado **4.2.1.1**), que se deben rellenar relacionando cada nuevo elemento, con nombre a gusto del usuario, con alguno de los existentes en **cat\_feature:**

* **cat\_node**
* **cat\_arc**
* **cat\_connec**
* **cat\_grate (UD)**

Si en estos últimos catálogos se quiere añadir valores para la columna de material, será necesario también rellenar previamente catálogos de material:

* **cat\_mat\_arc**
* **cat\_mat\_node**

Luego hay otras tablas interesantes para añadir dominios de valores personalizados:

* **man\_type\_category**
* **man\_type\_fluid**
* **man\_type\_function**
* **man\_type\_location**

En estas tablas podemos añadir información específica sobre el tipo de categoría, de fluido, de función o de localización relacionada con los distintos tipos de elementos básicos (arc, node connec, gully). Cada una de las tablas tiene los siguientes campos:

| id             | serial        | Auto numérico de identificación (llave primaria)                                           |
| -------------- | ------------- | ------------------------------------------------------------------------------------------ |
| \*\_type       | varchar (50)  | Campo para poner nuestra información que será usada en las tablas de arc/node/connec/gully |
| feature\_type  | varchar (30)  | Tipo de elemento al que se le asigna el valor                                              |
| featurecat\_id | varchar (30)  | Nos permite detallar más de cada una de las grandes categorías                             |
| observ         | varchar (150) | Para añadir información adicional                                                          |

\*category/fluid/function/location

Para poner un ejemplo de uso de estas tablas, podríamos definir un catálogo de dominio de valores personalizados para un _tank_ (depósito) además del que le correspondería por _node_.

A título informativo, pero es importante conocer, estos campos están gestionados por la base de datos mediante llaves foráneas para garantizar la consistencia y unicidad de la información. Como ya se puede intuir, la llave foránea tiene unas características especiales para gobernar este sistema de valores diferentes en función de la tabla origen. Una de las características más importantes es la duplicidad de la llave foránea.

Esto significa que, por poner un ejemplo para la tabla _node_, y respecto del tipo de fluido, la llave doble se gestiona de manera que solo estarán disponibles en el campo _node.fluid\_type_ aquellos valores de _fluid\_type_ en la tabla _man\_fluid\_type_ que cumplan con la condición que tienen el campo _feature\_type_='NODE'.

Esta llave foránea doble nos garantiza que la información sea consistente en todo momento, evitando inserciones que no cumplan con este criterio y propagando cambios en caso de renovar o eliminar dominios de valores.

### 2.5.2 Creación de un esquema de ejemplo (sample)

Para facilitar al usuario los primeros pasos con Giswater y tener un modelo de datos completo que sirva como fuente de consulta, Giswater incorpora dos esquemas de ejemplo, tanto para drenaje urbano como para redes de abastecimiento.

Tener un primer modelo de datos completo, aparte de servir como fuente de consulta para ver cómo se estructuran los datos dentro de cada una de las tablas, permitirá al usuario iniciarse con un entorno de prueba y practicar todas las funcionalidades del plugin Giswater.

Para crear un proyecto _sample_ deberemos repetir los pasos del apartado **2.5.1** pero llegado el momento de crear el esquema, habrá que seleccionar **Example data** en lugar de **Empty data**.

Automáticamente tendremos creado un proyecto de ejemplo Giswater con todo tipo de información y datos de ejemplo para ver su funcionalidad a máximo rendimiento. Con el plugin Giswater 3.5 se podrá dar el nombre que el usuario quiera al esquema de ejemplo, a diferencia de versiones anteriores donde el nombre era obligatoriamente _ws\_sample_ y _ud\_sample_.

![Imagen 12. Formulario de creación de un esquema. Con Example data seleccionado crearemos un esquema de ejemplo.](https://4285305625-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQxeUyQYblyryvujQN3%2Fuploads%2FfSNScrAH3Rp6cwRhXNpH%2Fimagen12.png?alt=media\&token=962607d3-eeba-40f1-a8f4-c2fa6698b6c0)

### 2.5.3 Creación de proyectos en QGIS

Con la herramienta general de gestión de proyectos, aparte de crear los esquemas dentro de la base de datos, también tendremos la oportunidad de generar automáticamente proyectos para QGIS, específicamente pensados para trabajar con las tablas de la base de datos, así como diseñados con una simbología que permita visualizar del modo más cómodo posible los datos del proyecto.

Para crear estas plantillas de proyecto Giswater, deberemos clicar sobre el botón _**Create GIS project**_ en el formulario inicial de la herramienta.

![Imagen 13. Formulario general de gestión de proyectos. Con el botón Crear archivo proyecto QGIS obtenemos una plantilla de proyecto en QGIS.](https://4285305625-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQxeUyQYblyryvujQN3%2Fuploads%2FmtLr3o2jyG5T3Yr5dSA8%2Fimagen13.png?alt=media\&token=6d875b66-fcf6-4cb3-96bc-eac9718017f2)

En el pequeño formulario que se nos abrirá a continuación, deberemos elegir el tipo de proyecto que vamos a crear en función de un rol. Más adelante en este manual (apartado **3.5**) se explicará cuáles son los roles que gestiona Giswater, así como sus características y propiedades, pero de momento lo único que debemos saber es que el número de capas cargadas en el proyecto será diferente en función del rol que elijamos y, del mismo modo, el número de funcionalidades que podremos llevar a cabo con el plugin también se verá modificado.

Recomendamos que, para usuarios que no usen Giswater en entorno corporativo elijan siempre el rol **admin** para así disfrutar de todas las características del plugin.

Durante la creación del proyecto GIS, deberemos también elegir un nombre para el fichero _qgs_ y una carpeta donde guardarlo.

Finalmente, si queremos que este proyecto se pueda abrir sin necesidad de introducir las credenciales de acceso a la base de datos, tenemos la posibilidad de marcar **Exportar contraseña usuario**, de modo que el fichero creado almacenará directamente estas credenciales y podremos abrirlo sin necesidad de entrar usuario y contraseña.

Al clicar **Aceptar**, se creará el fichero y ya estaremos en disposición de abrirlo.

Deberemos tener en cuenta que, al crear un proyecto GIS:

* Para un **esquema vacío** no vamos a ver nada dentro del mapa de QGIS y deberemos añadir manualmente los datos. Si lo que queremos es empezar a dibujar nuestra red e introducir datos desde cero, habrá que seguir unos pasos concretos, pues hay ciertas reglas de trabajo obligatorias que se comentarán a lo largo de este manual. En el apartado **6** encontraremos una breve guía práctica de cómo digitalizar una red empezando de cero.
* Para un **esquema de ejemplo** tendremos directamente una red con todos los datos llenos para poder probar las funcionalidades del plugin.
