3 votos

Generador de Geometría - hacer la línea al perímetro del polígono

Me gustaría mejorar la forma en que las flechas apuntan a los polígonos al mover las etiquetas. Tengo algunos campos con números únicos asociados a cada uno. Cuando el centroide de un polígono está fuera de la característica física, la flecha se desvía. ¿Cómo puedo mejorar mi expresión para que la flecha apunte al perímetro de los polígonos como se ilustra con los círculos azules?

enter image description here

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

EDITAR:

¿Se puede hacer algo para evitar que la flecha aparezca por segunda vez si el centroide no se encuentra en la superficie del polígono como se muestra a continuación?

enter image description here

3voto

ghotan Puntos 29

Puede utilizar diferencia para cortar la flecha por el polígono ( $geometry ).

En su caso, cambie

make_line(centroid($geometry),
          make_point("auxiliary_storage_labeling_positionx", 
                     "auxiliary_storage_labeling_positiony"))

a

difference(make_line(centroid($geometry),
           make_point("auxiliary_storage_labeling_positionx", 
                      "auxiliary_storage_labeling_positiony")), $geometry)

[EDITAR]

Si el centroide no está dentro del cuerpo del polígono, point_on_surface podría ser más apropiado.

Por favor, inténtalo:

difference(make_line(point_on_surface($geometry),
           make_point("auxiliary_storage_labeling_positionx", 
                      "auxiliary_storage_labeling_positiony")), $geometry)

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