Blog del Máster
en Tecnologías de la Información Geográfica y Ciencia de Datos
Espaciales

Segmentación dinámica con QGIS

La segmentación dinámica es el proceso mediante el cual podemos representar un atributo o evento que afecta a un tramo o segmento de una geometría lineal sin necesidad de segmentar la línea. Estos eventos pueden ser puntuales, por ejemplo, la localización de accidentes de tráfico o lineales como por ejemplo tramos de la red viaria afectados por obras. La segmentación dinámica utiliza un sistema de referencia lineal o LRS (por sus siglas en inglés). La georreferenciación de los eventos se realiza a través de hitos o medidas (puntos kilométricos si hablamos de vías de comunicación) a lo largo de un elemento lineal en lugar de geocodificar por coordenadas XY o direcciones.

En este artículo vamos a aprender cómo hacer segmentación dinámica con QGIS utilizando el complemento LRS.

¿Por qué es útil la segmentación dinámica?

La segmentación dinámica resulta de gran utilidad para la gestión de redes ya sean vías de comunicación o redes de servicios de agua, gas, fibra, etcétera, lo que se conoce con el término utilities. La segmentación dinámica permite asociar a una red lineal una serie de atributos que afectan a diferentes tramos de ésta sin necesidad de segmentarla. Habitualmente una red de carreteras se segmenta en los cruces cuando hay un cambio en el nombre o el tipo de carretera. Si necesitamos asociar atributos como el ancho de vía, tipo de pavimento, límite de velocidad, etc. deberemos segmentar la red en tantos tramos como cambios de atributo se produzcan a lo largo de la carretera. Esto, además de representar un considerable volumen de trabajo de segmentación de la red, daría como resultado una tabla de atributos con infinidad de registros.

Mediante la segmentación dinámica evitamos tener que segmentar de forma física las líneas. Los segmentos de la línea son almacenados en una tabla alfanumérica y son mostrados sobre la red. Si deseamos modificar estos segmentos o tramos tan solo debemos editar en la tabla el punto inicial o final de estos.

¿Cómo funciona la segmentación dinámica?

Para poder realizar segmentación dinámica debemos disponer de una capa de líneas sobre la cual se representarán los atributos que queremos mostrar. Las líneas se denominan rutas mientras que los atributos son denominados eventos. La capa de líneas debe tener un identificador único para cada ruta. Por ejemplo, si trabajamos con una red de carreteras el identificador sería el nombre de la vía. Además, la capa de rutas debe contener el hito inicial y el hito final de ésta (punto kilométrico en una red de carreteras).

Los eventos son almacenados en una tabla que contiene el identificador de la ruta y el punto o tramo donde se produce el evento. Si el evento afecta a un tramo de la ruta, deberá contener el punto inicial y el punto final de este. El sistema utiliza esta información para georreferenciar el evento sobre la capa de rutas.

Como segmentar dinámicamente con QGIS

QGIS dispone de un plugin o complemento llamado LRS desarrollado por MPA Solutions en colaboración con Provincia Autonoma di Trento – Dipartimento infrastrutture e mobilità – Servizio Gestione Strade – Ufficio Controllo e Tecnologie Stradali.

Segmentación dinámica. Instalar complemento LRS

LRS permite calibrar capas de rutas, crear capas de eventos, medir la posición de un punto en una ruta y localizar hitos en una red.

Una vez instalado el complemento lo podemos activar desde el menú Vectorial. A la derecha de la ventana de QGIS nos aparecerá el panel LRS.

Calibrar las rutas

Para segmentar dinámicamente debemos primero calibrar las rutas. La calibración es el proceso mediante el cual convertimos una capa de líneas en una capa de rutas. De esta forma cada ruta estará medida desde un punto inicial hasta un punto final en las unidades que hayamos definido. Esto permite localizar automáticamente sobre una ruta cualquier punto o tramo que contenga el mismo identificador.

Para calibrar las rutas es necesario disponer de:

  • una capa de líneas con los elementos a calibrar. Si las líneas no conectan entre sí podemos definir una distancia máxima por debajo de la cual se conecten. La capa debe contener un campo que identifique la ruta a la que pertenece cada línea. Esta capa puede ser un shapefile o un Web Feature Service (WFS)
  • una capa de puntos. En el caso de vías de comunicación serían puntos kilométricos conocidos (PK de ahora en adelante). Esta capa de puntos debe contener el identificador de ruta a la que pertenece y la distancia desde el punto inicial de la ruta. Podemos definir una distancia máxima a la que un punto puede estar de la ruta para ser utilizado en la calibración. Cuanto mayor sea el número y la exactitud de la medición de los puntos mejor será la calibración final.

En el ejemplo que vamos a ver utilizaremos una capa de carreteras de los alrededores de Girona. Esta capa ha sido extraída de la base topográfica 1:25.000 del Institut Cartogràfic i Geològic de Catalunya. La capa de puntos se puede crear digitalizando puntos kilométricos conocidos sobre un mapa topográfico georreferenciado. Para abreviar, en este ejemplo hemos generado automáticamente una capa de puntos utilizando el algoritmo Puntos a lo largo de geometría. De esta manera hemos obtenido un punto cada 1000 metros para cada línea. En este caso hemos asumido que cada carretera comenzará siempre en el PK 0. En realidad, no siempre, buena parte de los casos estas carreteras han sido recortadas al área de trabajo y tienen su origen fuera de este. Por ejemplo, el PK 0 de la N-II se encuentra en Madrid.

Durante la calibración las medidas de los puntos son unidas a las rutas utilizando como campo común el identificador de la ruta. La calibración interpola todos los puntos de la ruta entre dos puntos o hitos conocidos.

Segmentación dinámica. Calibrar las rutas como paso previo a la segmentación con QGIS.
Calibración de las rutas.

En la imagen anterior se muestran los parámetros introducidos para calibrar nuestra capa de carreteras. Como parámetros obligatorios debemos introducir la capa de carreteras a calibrar, el campo con el identificador de ruta (nombre de carretera). Seguidamente indicamos la capa de puntos con los PK conocidos, el campo identificador de la ruta, el PK (campo distancia) y las unidades de medida.

Otros parámetros que podemos introducir son los siguientes:

  • Calibrar todas las líneas o solo las seleccionadas.
  • Distancia máxima dentro de la cual se consideran que dos líneas que no conectan entre sí forman parte de la misma ruta.
  • La distancia máxima a la que un punto puede estar de una línea para ser tenido en cuenta en la interpolación cuando no se encuentra exactamente sobre ella.
  • Tratamiento de las líneas paralelas (por ejemplo, en el caso de autopistas o autovías): ignorarlas, marcarlas como un error o considerarlas como una sola línea.
  • Extrapolate. Cuando esta opción está desactivada se calibrará el tramo de línea comprendido entre el primer y último punto conocido. Estos dos puntos no siempre tienen que coincidir con el inicio y final de la línea. Si activamos esta opción, extrapolará las mediciones de la línea correspondiente a los tramos más allá del primer y último punto conocido.

Segmentación dinámica.Calibrar las rutas. Diferencia entre interpolar y extrapolar.
Interpolar y extrapolar medición de una línea.

Al hacer clic en Aceptar se realiza la calibración. Para comprobar el resultado iremos a la pestaña Errors donde se muestra el tipo de error y la ruta a la que está asociado. Los errores pueden producirse tanto en la capa de líneas como en la de puntos. El origen de los errores puede ser diverso: puntos o líneas duplicadas, un elemento sin identificador de ruta, falta de puntos, puntos no medidos, puntos huérfanos de línea, puntos fuera de la distancia máxima, líneas paralelas, etcétera. Con Create error layers podemos crear dos capas, una con las geometrías de los errores de línea y otra con los errores de punto. También podemos seleccionar un error de la lista y hacer zoom sobre él.

Para solucionar los errores deberemos corregir las geometrías con las herramientas de QGIS que correspondan para cada caso. También podemos excluir estas geometrías de la calibración seleccionando aquellas rutas que no queremos calibrar e indicando Exclude routes en la pestaña Input.

Podemos comprobar la calidad de la calibración mediante Create quality layer. Esta opción compara la distancia entre dos puntos consecutivos a partir del campo distancia con la longitud de la línea entre esos dos puntos. El resultado es una capa de líneas con las rutas en cuya tabla de atributos tenemos la longitud, el error absoluto, error relativo y error porcentual.

Segmentación dinámica. Calibrar las rutas. Visualización de errores y calidad de la calibración.
Visualización de errores y calidad de la calibración.

Una vez validada la calibración en la pestaña Input, introduciremos el nombre de la capa de salida y le daremos al botón Create. De esta manera ya tenemos la capa de rutas sobre la que podremos georreferenciar nuestros eventos, así como localizar puntos kilométricos (Locate) en una ruta o medir una capa de puntos (Measure).

Crear capa de eventos

Para crear una capa de eventos debemos disponer de una tabla que contenga el identificador de ruta y el punto inicial o final del tramo. También podemos añadir a la tabla todos los atributos relacionados con cada evento.

Para este ejemplo hemos creado una tabla ficticia en formato csv con los tramos en los que se han realizado tareas de limpieza de márgenes y cunetas. Podríamos, también, tener los eventos almacenados en una tabla dbf o en una tabla de una base de datos.

Como podemos ver en la siguiente imagen, la tabla contiene el identificador de carretera o ruta y los PK inicial y PK final. Las unidades de los PK están en metros ya que la capa de rutas la habíamos calibrado en estas unidades. Por último, tenemos la fecha de la última limpieza de márgenes realizada. Podríamos añadir otros atributos relacionados que consideráramos necesarios.

Segmentación dinámica. Crear capa de eventos. Contenido de la tabla de eventos
Contenido de la tabla de eventos

Cargaremos la tabla desde la pestaña Events. Aquí indicaremos la capa de rutas, el identificador de ruta, la tabla de eventos, el campo que contiene el identificador de ruta, el PK inicial y el PK final del tramo. Si se tratase de una tabla de eventos puntuales solo indicaremos el campo con el PK inicial y dejaríamos el otro en blanco.

De forma opcional también podemos indicar que solo se muestren los eventos correspondientes a las rutas seleccionadas.

Por último, indicaremos el nombre de la capa de salida. Se trata de una capa temporal que por defecto tiene el nombre de la tabla de eventos. La capa contendrá un campo donde se indicará si se hay un error en el evento.

podría ser un segmento del tramo que no existente en la ruta.

Segmentación dinámica. Crear capa de eventos. Panel de creación de la capa de eventos


Crear capa de eventos


En la siguiente imagen podemos ver el resultado final del proceso de segmentación dinámica. En la vista se muestra en negro la red de carreteras y sobre ellas los tramos donde se ha realizado una limpieza de márgenes. Estos tramos los hemos representado por meses.

En la tabla de atributos podemos ver que en el campo errores nos dice que algunos segmentos no están disponibles. Este error indica que un segmento del tramo del evento no existe en la capa de rutas. Por ejemplo la ruta finaliza en el PK 3 y el evento llega al PK 3,5. Esto se debe normalmente a un error al entrar los PK inicial y final en la tabla de eventos.

Resultado final de la segmentación dinámica

Resumen

La segmentación dinámica resulta de gran utilidad para aquellos usuarios que necesitan gestionar una red. Gracias a este proceso no es necesario que las entidades lineales se corten o segmenten cada vez que se produzca un cambio de atributo en la línea. Para ello los atributos se almacenan en una tabla de eventos que contiene el punto inicial y final del tramo afectado por el atributo. Este sistema facilita también la actualización geométrica de los eventos ya que tan solo deberemos modificar el punto inicial o final de cada evento en la tabla de eventos y volver a ejecutar el proceso. De esta forma podemos visualizar de forma rápida y sencilla la localización de un suceso o evento en la red.

Como se ha podido ver a lo largo del artículo el proceso de segmentación dinámica con el complemento LRS para QGIS resulta sencillo e intuitivo. La calibración de la red puede suponer una mayor inversión de tiempo ya que debemos contar con una capa de líneas bien estructurada geométricamente y obtener una capa de puntos con medidas conocidas o hitos. Este proceso solo deberá repetirse cada vez que haya una actualización de las geometrías de la red. Una vez calibrada la red podremos medir puntos sobre ella, localizar hitos o PK o, como ya hemos comentado, visualizar gráficamente los tramos afectados por un atributo almacenado en una tabla asociada.

Ferran Orduña
Geógrafo postgraduado en SIG. Trabajo en el Servicio de SIG y Teledetección (SIGTE) de la Universitat de Girona desde su creación en 1995 desarrollando tareas de técnico SIG, formación y soporte en la creación de materiales docentes.


Suscríbete a nuestra newsletter