3 votos

Desplazando símbolos de puntos colisionantes en QGIS

Tengo una capa que incluye puntos para postes eléctricos (círculos) y transformadores (triángulos). Los transformadores pueden estar en los postes o por su cuenta. Me gustaría desplazar los transformadores solo si están en la parte superior de un poste, manteniendo su ubicación exacta cuando están por su cuenta para que sigan los cables eléctricos. He intentado una condición en la caja de expresión de desplazamiento:

if( intersects(  $geometry ,  get_feature(  @layer_name , "Type" , 'Pole' )),1,0)

pero no está funcionando.

Lo que no quiero

Lo que no quiero

Lo que quiero SOLAMENTE cuando hay un poste (círculo) presente

Lo que quiero SOLAMENTE cuando hay un poste (círculo) presente.

7voto

ghotan Puntos 29

Mi suposición es que probablemente estás intentando hacer algo así:

CASE 
WHEN count_distinct( "id" , group_by:= geom_to_wkt( $geometry ) ) >= 2
THEN '0.0,5.0'
ELSE '0.0,0.0'
END  

para ser colocado en la expresión de sobreescritura definida por datos en el Desplazamiento XY. (He utilizado un campo "id" pero puedes usar cualquier campo de tu tabla de atributos.)

En el ejemplo anterior, '0.0,5.0' es el desplazamiento XY, que mueve el símbolo 5.0 mm hacia el sur. No tiene que ser 5.0 y cualquier número servirá. Si count_distinct() devuelve 1, significa que no hay puntos superpuestos y el símbolo del punto no se mueve ('0.0,0.0').

Por favor ten en cuenta que esta expresión no distingue si los puntos superpuestos son Postes o Transformadores. Simplemente no podía imaginar dos Postes ubicados en la misma ubicación, y asumí que cualquier superposición significaría Poste y Transformador.

introducir descripción de la imagen aquí

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