En mi proyecto de capas (QGIS 3.6.2) uso de datos definido por la colocación de la etiqueta. Estoy tratando de configurar la colocación de la siguiente manera:
- De forma predeterminada, la ubicación elegida en la Configuración de la Etiqueta se utiliza (en mi caso, "en torno al centro de gravedad").
- Si X e y se rellenan los campos (es decir, la etiqueta ha sido colocado manualmente), estos valores se utilizan.
- Tengo un booleano/T F campo llamado "UsePOS" en mis datos; si está activado (true), y si los campos X e y son nulos, entonces el X/Y colocación utiliza un cálculo del punto (en mi caso, un punto en la superficie). Si es false, null campos X e y son utilizados (es decir, que la ubicación predeterminada).
Aquí es lo que he intentado: en la Configuración de la Etiqueta, he definido el X colocación con la siguiente expresión...
if( "X" is not NULL,
"X",
if( "UsePOS",
x( point_on_surface( $geometry ) ),
"X"
)
)
...y el campo Y con una expresión similar. Esto funcionó a la perfección como era de esperar-por defecto, la etiqueta se coloca en el centro de gravedad; si la casilla está marcada, salta al punto en la superficie, y si no hay datos en el X/Y, a continuación, la etiqueta se fija allí.
Sin embargo, el problema surge cuando intento colocar manualmente una etiqueta. En ese caso, debido a que el X/Y de la colocación no está directamente definida por el X/Y campos, QGIS invoca auxiliares de almacenamiento, que no es lo que yo estoy utilizando para la colocación de la etiqueta, y que parece que no puede ser suprimida (ver mi comentario en este hilo).
Así que supongo que 1) necesito asignar directamente la colocación de la etiqueta para mi X/Y campos, 2) necesito para usar una expresión en la Calculadora de Campo para rellenar los campos, y 3) los campos deben ser virtual, por lo que responden dinámicamente a si que me mueva manualmente la etiqueta, si la casilla de verificación está marcada, etc. Sin embargo, al escribir la expresión anterior en la Calculadora de Campo causas de QGIS se bloquee cuando la etiqueta se mueve manualmente, o cuando marque la casilla de verificación (que yo esperaba, ya que no creo que un campo virtual puede hacer referencia a sí mismo).
La pregunta es, ¿cuál es la forma correcta de configurar lo que yo quiero, así que todavía puedo mover manualmente las etiquetas, sólo el uso de datos definidos por el etiquetado y no auxiliar de almacenamiento?