5 votos

¿Espaciar/distribuir varias etiquetas a lo largo de un perímetro?

Utilizando el etiquetado basado en el permímetro de QGIS, ¿cuál es la mejor manera de organizar varias etiquetas diferentes a lo largo de una línea para que queden visualmente separadas, en lugar de agruparse?

Example image

En mi ejemplo, estoy etiquetando la frontera entre EE.UU. y Canadá, por lo que tengo una etiqueta separada para cada nación, una situada encima y otra debajo de la línea (o a izquierda y derecha, dependiendo de la orientación); éstas deberían aparecer en pares. También tengo etiquetas para la provincia por encima de la línea y el condado por debajo; no es necesario que estén emparejadas (y no necesito una etiqueta para el estado por debajo de la línea).

Las etiquetas de condado son siempre una capa separada. Para las otras etiquetas, he intentado:

  • EE.UU. y Canadá en una capa, provincia en otra capa (aquí)
  • EE.UU. y Canadá en un elemento, provincia en otro elemento de la misma capa
  • EE.UU., Canadá y la provincia como tres etiquetas separadas en una función

Todas ellas producen resultados similares, en los que las etiquetas de EE.UU./Canadá se agrupan con la etiqueta de provincia o condado. ¿Cómo puedo conseguir que las diferentes etiquetas aparezcan a una buena distancia entre sí utilizando el etiquetado perimetral?

0 votos

Una técnica utilizada en el pasado consistía en crear polígonos invisibles para el usuario [sin relleno/peso de línea] que se utilizaban únicamente para colocar el texto dentro de ellos. El término que utilizamos fue "máscara de región", que se utilizó para un proyecto con National Geographic. Funciona mejor para cadenas montañosas, etc., pero este método puede utilizarse para fronteras y provincias/estados.

0 votos

Bueno, se me ocurrió dividir la línea divisoria en segmentos separados, cada uno de los cuales se etiquetaría con o bien EE.UU./Canadá o el nombre de la provincia, en orden alterno. Pero entonces, si la extensión de mi mapa actual no incluye uno de los segmentos, esa etiqueta no aparecerá en la vista actual. Sin embargo, tengo otra idea que probaré a continuación

0 votos

Véase mi nuevo ejemplo a continuación para esta idea

1voto

Nick Puntos 3115

Si he entendido bien, a usted no le importa el emparejamiento de las etiquetas pero quiere evitar el amontonamiento donde tiene etiquetas de país y provincia. Para evitarlo, puedes poner las etiquetas de los países en una capa y las de las provincias en otra. En la capa de país, establece la prioridad de etiquetado al máximo y utiliza una pequeña fórmula en la etiqueta para añadir espacio en blanco a cada lado del nombre, algo como esto:

'         '   || "country"  ||  '        '

Esto obligará a las etiquetas de provincia a evitar las etiquetas de país al menos por la cantidad de espacio en blanco que añada a cada lado. Sí, esto es rudimentario, pero puede ser bastante eficaz.

0 votos

Interesante, lo probaré también. De hecho, he descubierto que preferiría no emparejar las etiquetas de las provincias con las de los condados; prefiero que cada nombre único de provincia aparezca una sola vez. Pero el emparejamiento sigue siendo mejor que la agrupación.

0 votos

Esta técnica parece funcionar bien como parte de una combinación de todos los métodos mencionados hasta ahora en este hilo. He descubierto que el método de los espacios en blanco, por sí solo, funciona razonablemente bien, pero da resultados menos predecibles que mi método de superposición de segmentos, y de hecho tiende a romper los pares de etiquetas EE.UU./Canadá. Sin embargo, es mucho mejor para evitar etiquetas duplicadas porque me permite fusionar las cadenas de líneas.

0 votos

Otro inconveniente es que, al utilizar etiquetas curvas, los caracteres de los espacios en blanco cuentan para el límite del ángulo, por lo que se suprimen más etiquetas que si no hubiera espacios. Sin embargo, puedo solucionar este problema utilizando expresiones condicionales o etiquetado definido por datos para aplicar espacios en blanco sólo a aquellas características que lo necesiten (o aumentando el umbral de ángulo).

1voto

Steve Holden Puntos 1

Esta es una solución que me ha funcionado parcialmente:

Example image

Aquí, las etiquetas de nación están en una capa y las de provincia en otra. En la capa de la provincia, he dividido la línea en segmentos en cada frontera de condado que se cruza (la línea "Clinton/Franklin" en esta imagen). En la capa de la nación, he dividido la línea en el punto medio de cada segmento de provincia, pero no en el límite del condado. De este modo, toda la línea queda cubierta por segmentos alternados, pero también solapados. QGIS tiende a elegir diferentes puntos de etiquetado para estos segmentos; no es perfecto, pero es mucho mejor. Para las etiquetas de nación, también he fijado el número máximo de etiquetas mostradas en 1 para que no se repitan los mismos nombres.

Las desventajas de este método son:

  • No funciona al acercar el zoom, porque ambos segmentos superpuestos llenarán toda la extensión, por lo que QGIS volverá a agrupar las etiquetas en el centro de la vista del mapa. Dividir los segmentos en longitudes más cortas solucionaría esto, pero daría lugar a demasiadas etiquetas mostradas en niveles de zoom más bajos.
  • En realidad preferiría no repetir las etiquetas de provincia, pero no puedo establecer el máximo en 1 porque en algunas vistas se verán dos provincias (o estados). Tampoco puedo fusionar las cadenas de líneas para evitar repeticiones, porque eso anula el propósito de la división en segmentos. Me gustaría poder establecer el número máximo de idéntico a 1, pero permitiendo la repetición de etiquetas diferentes.

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