10 votos

Datos definen la posición de la etiqueta para más de una escala de una capa

Estoy en busca de un mejor etiquetado de solución para mis proyectos. Parece ser difícil, pero tal vez estoy ciego?

Mis proyectos: Voy a construir impreso bicicleta-senderismo-libros. La principal escala es de 1:75k y hay una ciudad a escala de 10k y una visión general de la escala de 200k. Porque me gusta tener un "cartográfica" de la calidad de las etiquetas de las colocaciones, me toca a cada etiqueta única y moverlo a lo mejor la posición. Tengo que hacer esto para cada escala, para mi el etiquetado de las columnas de 3 escalas de este aspecto (escala de 1' significa 10k 'escala 2' para 75k y la "escala de 3' para 200k):

enter image description here

Pero antes de tratar de explicar en detalle, voy a construir este sencillo Ejemplo-Proyecto donde se puede ver y probar mi (edad) solución de etiquetado para 3 escalas: http://www.map-site.de/tmp/LabelingExample.zip

Así, se está trabajando, pero:

  • Usted necesita etiquetado de las columnas para cada escala
  • Usted necesita una capa para cada escala

Estoy buscando una solución mucho mejor sin duplicar las capas y toneladas de columnas. Puedo contar que en sus mentes creativas!

EDIT: he añadido dos muy denso mapa como ejemplos:

enter image description here

Sólo hay una única posición posible para "San Pablo Dom", y no cualquier cuadrante: enter image description here

Cada etiqueta tiene que ser movido manualmente. Algunas de las etiquetas no están en un cuadrante.

7voto

Sushant23 Puntos 329

Tengo que decir que lo que está pidiendo es complicado un poco porque desea que el etiquetado sea visible en pequeña escala, claramente, así como a gran escala (la mejor opción). Así, la idea aquí es cómo colocar el punto de que puede ser visible a diferentes escalas.

Después de varias pruebas, he encontrado que en lugar de crear varias columnas para cada rango de escala y poner las coordenadas de x e y en los puntos fijos, sólo puede crear una columna de prioridad posiciones para cada punto para mejor ubicación, como se puede ver a continuación (he seguido las ubicaciones del archivo):

enter image description here

A continuación, vaya a la Layer propoerties -> Labels -> Placement -> Offset from point o Around point, ambos están bien, pero yo elegí Offset from point.

  1. En Quadrant Seleccione Data defined override -> Edit, y entrar en el siguiente fórmula:

    enter image description here

    CASE 
    WHEN  $scale >= 200000 THEN  "priority"  
    WHEN  $scale < 200000 and $scale >= 75000 THEN  "priority"   
    WHEN  $scale < 75000 and $scale >=10000 THEN  5
    WHEN  $scale < 10000 THEN 2 
    END
    

    Aquí, "Priority" es la ubicación de los puntos definidos en el campo de nombre Priority

  2. Usted necesidad de utilizar el desplazamiento para desplazar los puntos para una mejor visibilidad, y he utilizado la siguiente fórmula:

    CASE
    WHEN  $scale >= 200000 THEN '0.001,0'
    WHEN  $scale < 200000 and $scale >= 75000 THEN '0.001,0'
    WHEN  $scale < 75000 and $scale >=10000 THEN '0.0005,0'
    WHEN  $scale < 10000 THEN '0.0001,0'
    END
    

Aquí está la salida a diferentes escalas:

enter image description here

enter image description here

enter image description here

enter image description here

En fin a ver lo que a cada número [0-8] representa en el emplazamiento en el que, por favor, eche un vistazo a la siguiente imagen:

enter image description here

Usted puede controlar la posición de las etiquetas agregando el valor correspondiente a cada posición. Pero, por desgracia, no puedes hacerlo mediante " clic y mover el enfoque. Lo que usted necesita hacer en la tabla de atributos.

Actualización:

Basado en su requisito de que el 9 cuadrante posiciones no son suficientes, he encontrado si selecciona Cartography en lugar de Offset from point, y seleccione la prioridad, como en la imagen de abajo, tiene 12 prioridad posiciones en lugar de 9. Usted necesita para crear un campo de Text tipo, a continuación, poner sólo la abreviatura con la que se desea para la mejor posición de 'TL', 'TLS', 'T', etc... También, usted puede entrar en una distancia, para evitar la etiqueta de cubrir el punto.

enter image description here

3voto

Derecho Puntos 1122

Usted puede deshacerse de las múltiples capas mediante el uso de expresiones.

De lo que pude ver en su ejemplo, la diferencia principal entre las capas es el Data defined Coordinate X Y definiciones que apunta a la diferente escala x,y valores.

Usted puede lograr esto en una sola capa seleccionando las listas desplegables junto a X y y y seleccionando editar..., que le mostrará una expresión de cadena generador.

Para X, se puede usar algo como

if(@map_scale <=10000, "scale1-x", if(@map_scale <=75000, "scale2-x", "scale3-x"))

Y de Y, se puede usar algo como

if(@map_scale <=10000,  "scale1-y" , if(@map_scale <=75000, "scale2-y", "scale3-y"))

Esta debe utilizar scale1 x,y valores si la escala del mapa es menor o igual a 1:10.000 y la escala 2 x,y si la escala del mapa es menor o igual a 1:75.000 y escala 3 x y y para cualquier cosa por encima de eso.

Si usted tiene manualmente la posición para cada escala no veo cómo usted puede conseguir lejos de escala#-x y escala#-y columnas para cada nivel que se haya definido.

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