Rótulos com linha de chamada no QGIS

Essa dica é pra você que teve necessidade de colocar rótulos em feições com geometrias muito próximas e precisa mover os rótulos adicionando uma linha guia, ou linha de chamada entre o rótulo e as feições. Eu tive essa necessidade recentemente no trabalho e encontrei essa dica fantástica do Alexandre Neto, do blog SIG sem grilhetas, de como inserir rótulos com linha de chamada no QGIS.

O Alexandre usou uma view no Postgis para automatizar a criação das linha de chamada para os rótulos que são movidos de sua posição original. Veja o resultado abaixo:

No meu caso eu consegui resolver meu problema com os rótulo usando essa solução QGIS + Postgis. Mas essa solução, ao meu ver, esbarra em alguns problemas.

O principal deles é que nem todo mundo usa o Postgis, ou outro banco de dados espacial suportado pelo QGIS como o SpatiaLite, MSSQL Spatial ou Oracle Spatial. Tudo bem que depois da versão 2.14 você poderia adotar o recurso Virtual layers e fazer isso sem precisar instalar um desses banco de dados na sua máquina.

Mas convenhamos que isso limita o uso dessa solução para uma grande parcela dos usuários que não manjam dos paranauês de banco de dados e linguagem SQL.

O outro problema é estético e operacional, leia-se frescuragem desse que vós fala, que é a necessidade da criação de uma nova camada para renderizar as guias dos rótulos. Ou seja uma camada a mais no meio de trocentas outras que temos que lidar no dia a dia.

No exemplo acima a camada labels_leaders, é quem renderiza a guia que conecta o rótulo ao centroide da feição.

Criando rótulos com linha de chamada no QGIS

Pois bem, quebrando um pouco a cabeça podemos chegar num resultado idêntico ao do Alexandre. Mas no nosso caso sem a necessidade de um banco de dados espacial e nem daquela camada extra para renderizar as linhas de chamada.

Iremos usar apenas a tabela de atributos e a função de geração de geometria para resolver nosso problema. Lembrando que para isso você vai precisar do QGIS 2.14 ou superior, uma vez que o Gerador de Geometrias não está presente nas versões anteriores. 

Veja o passo a passo no vídeo abaixo:

Expressões para a criação das guias ( no QGIS

Rótulo ao centróide com curva de 90º:

make_line ( 
make_point( "X" , "Y" ), -- posição do rótulo 
make_point( "X", y(centroid( $geometry ))), -- posição do ponto intermediário 
make_point( x(centroid( $geometry )), y(centroid( $geometry ))) --posição do centroide da geometria 
)

Rótulo ao centróide:

make_line ( 
make_point( "X" , "Y" ), -- posição do rótulo 
make_point( x(centroid( $geometry )), y(centroid( $geometry ))) --posição do centroide da geometria 
)

Rótulo ao ponto mais próximo:

make_line ( 
make_point( "X" , "Y" ), -- posição do rótulo 
closest_point( $geometry, make_point( "X" , "Y" ) ) --posição do ponto mais próximo )

Para mais tutorias de QGIS como esse acesse: https://narceliodesa.com/category/tutoriais/


O que vocês acharam deste tutorial
Rótulos com linha de chamada no QGIS ?

Aguardo seus comentários, dicas e sugestões.

💵 Faça uma doação para o canal via Picpay: https://app.picpay.com/user/narceliodesa
💵 Ou faça uma doação via PIX: narceliosapereira@gmail.com
⭐ Nos siga em todas as plataformas: https://linktr.ee/narceliodesa
📬 Contato comercial: narceliosapereira@gmail.com

Narcélio de Sá

Geógrafo, Nerd-GeoGeek. Integrante da comunidade QGISBrasil, OSMBrasil e apaixonado por Open-Source & Open-Data.