12 votos

¿Líneas rectas desde la etiqueta hasta la característica en QGIS?

Lo que estoy tratando de hacer es etiquetar una serie de características de punto, pero debido a la densidad de las características de punto voy a tener que mover las etiquetas lejos de las características de punto. Luego quiero utilizar una simple línea recta (no una flecha) para mostrar qué etiqueta se refiere a qué punto.

He utilizado el plugin "Easy Custom Labels" para generar las etiquetas y moverlas a donde quiero. Pero lo que no soy capaz de hacer es crear una simple línea recta delgada entre el punto y la tabla.

Lo mejor que he conseguido es cambiar el "tipo de capa de símbolos" (Capa de etiquetas > Propiedades > Estilo) a "flecha", desmarcar "flechas curvas" y desmarcar "repetir flecha en cada segmento". Y luego hacer que la longitud y el grosor de la cabeza sean 0 y hacer que el "ancho de la flecha" y el "ancho de la flecha al inicio" sean lo más posible. Pero esto sigue creando una línea gruesa. Vea la imagen A.

He probado a poner el "tipo de símbolo posterior" en "línea simple", pero esto da como resultado líneas con pliegues/vértices/esquinas. Véase la imagen B.

Lo ideal sería que las líneas rectas entre las etiquetas y la característica (como en la imagen A) tuvieran una anchura similar a las de la imagen B.

Examples of two types of labeling

12voto

user55448 Puntos 1

Puede utilizar una expresión para crear una línea entre la etiqueta y la geometría

enter image description here

Expresión:

CASE 
 WHEN (label_x IS NOT NULL AND label_y IS NOT NULL) THEN
  make_line(centroid($geometry),make_point(label_x -2,label_y), make_point(label_x ,label_y))
ELSE
  NULL
END

Y este debería ser el resultado:

enter image description here

0 votos

Sólo una nota lateral, si las etiquetas se mueven manualmente utilizando la barra de herramientas de propiedades de etiquetado y la posición se almacena en el proyecto, las variables label_x,y cambian a campos llamados "auxiliary_storage_labeling_positionx" y "auxiliary_storage_labeling_positiony".

2 votos

Colocando su punto medio 2 unidades al oeste como lo hace aquí make_point(label_x -2,label_y) hará que las etiquetas de la costa occidental parezcan divertidas. Además, trabajar a una escala diferente hará que esto sea inútil. Funcionaría mejor estableciendo este punto en relación con la distancia a su etiqueta y la posición relativa desde su centroide.

3voto

txindoki Puntos 146

La respuesta de Carlos hace un líder alineado horizontalmente en el extremo de la etiqueta aunque sólo un punto menos en el generador de geometría da líneas rectas. En mi ejemplo, he movido las etiquetas manualmente usando la barra de herramientas de etiquetado en QGIS 3.0.3. Tenga en cuenta que la técnica se puede encontrar en pregunta 232709 .

Los únicos cambios que tuve que hacer son los valores x,y en mi expresión:

CASE
   WHEN ("auxiliary_storage_labeling_positionx" IS NOT NULL AND "auxiliary_storage_labeling_positiony" IS NOT NULL) THEN
        make_line(centroid($geometry),make_point("auxiliary_storage_labeling_positionx","auxiliary_storage_labeling_positiony"))
   ELSE
      NULL
END

En cuanto a las líneas de liderazgo propiamente dichas, el árbol simbólico es el siguiente:

  • Llenar
    • Generador de geometría
      • Línea
        • Línea de señalización
          • Marcador
            • Marcador simple
          • Línea simple

Para asegurarse de que las líneas de referencia terminan en el centro de la etiqueta, simplemente edite los valores de la alineación definida por los datos de las etiquetas a "Centro" para la horizontal y "Mitad" para la vertical. Para estilizar la línea a lo que necesite, utilice la línea simple anidada en la línea de marcador.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X