Visualizar en vivo etiquetas de longitud o área en un mapa de QGIS 3

Curso de ArcGIS Pro | Curso de QGIS | Curso de ArcGIS 10

El siguiente artículo se genera para dar solución a una interrogante planteada en un grupo de discusión de QGIS.

Digamos, por ejemplo, que estas digitalizando y deseas conocer la longitud de una línea o el área de un polígono que acabas de crear, solo colocando el cursor, sin tener que abrir cajas de dialogo, ni hacer clic.

Procedimiento:

1.- Cargue o cree una capa de línea en QGIS, preferiblemente en un sistema de referencia de coordenadas métricas.

En este caso cargue la capa hidrología.shp, vialidad.shp y poblados.shp .

2.- Comenzaremos con la capa hidrología, asigne un color y grosor al estilo línea que facilite su visualización:

3.- Despliegue la tabla de atributos, note que no existe un campo con el valor de la longitud. Calcularemos la longitud al vuelo utilizando una expresión.

3.- Abra la caja de dialogo de propiedades de la capa.

4.- Ubique la pestaña ubicada a la izquierda, denominada Visualizar. Note que en la parte superior muestra el campo NOHIDRO, de tipo texto.

Cuando acerque el cursor sobre un cuerpo de agua se mostrara el valor de esa entidad en el campo NOHIDRO.

5.- Haga clic en el botón con una E mayúscula, ubicado en la esquina superior derecha, para abrir el dialogo de expresiones.

En el dialogo de expresiones, borre NOHIDRO del cuadro de la izquierda, luego en el panel central seleccione Geometría, luego $lenght. Finalmente clic en aceptar y aplicar.

6.- Al colocar el cursor sobre una línea nos muestra su longitud.

Dando formato a la etiqueta

1.- La configuración anterior muestra un valor de distancia con muchos decimales, para ajustarlo, nuevamente entramos a Visualizar > seleccionamos el dialogo de expresiones.

Luego, en el panel central > cadena seleccionamos format_number, esta expresión requiere dos argumentos, un número, en este caso la longitud, seguido por la cantidad de decimales.

Por ejemplo format_number($lenght, 4), mostrara el separador de mil y solo 4 decimales.

2.- Utilizando código html y css podemos hacer mucho más, agregar más texto, cambiar su color, fuente, tamaño, concatenar otro campo, condicionales, insertar imágenes.

Por ejemplo, introducimos el código:

<style>
body {background-color: powderblue!important; }
p {width: 70px; margin-left: 4px;}
</style>
<h1 style="font-size:9"><strong>Longitud</strong></h1>
 <p style="font-size:9">[% format_number( $length, 3)  %] metros</p>
Imagen izquierda etiqueta con formato, imagen derecha sin formato

Explicación del código:

Entre las etiquetas style se encuentra un código css para dar formato a la caja que muestra la información, un color de fondo azul, un ancho fijo del texto de 70 pixeles.

En la etiqueta h1 se colocó un encabezado, la etiqueta strong sirve para resaltar.

La etiqueta p se utiliza para introducir un párrafo en este caso el valor de la longitud y las unidades.

Es recomendable variar estos valores hasta lograr un despliegue adecuado. Es importante tener en cuenta que esta configuración es única para esta capa.

Mostrando atributos y geometría

En el caso de una capa de polígonos el procedimiento es similar, vamos a copiar y pegar el código anterior en la opción de visualización de la capa poblados.shp.

Alteramos el código sustituyendo length por area y en el encabezado longitud vamos a colocar el campo que tiene el nombre de la ciudad.

También disminuimos el ancho del texto para ajustarlo al contenido.

Introducimos el siguiente código:

<style>
body {background-color: powderblue!important; }
p {width: 70px; margin-left: 4px;}
</style>
<h1 style="font-size:9"><strong>[% NOASENT  %]</strong></h1>
 <p style="font-size:9">[% format_number(  $area/10000, 2)  %] ha</p>

NOTAS FINALES:

Además de texto podemos hacer que se despliegue una imagen. La opción visualizar también acepta código javascript incrementando sus capacidades.

Por otro lado, si deseamos que se muestre la longitud o área mientras se digitaliza, es necesario crear una herramienta utilizando programación Python en QGIS reescribiendo la clase Map Tools (QgsMapTool).

Autor: Luis Eduardo Pérez Graterol
Profesión: Ingeniero en Recursos Naturales
País: Venezuela
Web:www.mundocartogeo.blogspot.com