¿Cómo interrumpir las líneas de contorno debajo de las etiquetas de elevación (en lugar de usar búferes de etiquetas)?

32

¿Hay alguna forma de interrumpir una línea de contorno debajo de una etiqueta de elevación?

    
pregunta MAP 25.02.2013 - 22:13

6 respuestas

22

Sí, factible. Normalmente sugeriría un búfer parcialmente transparente, pero veo por qué quiere hacerlo cartográficamente.

Esto podría ser lento, y usted necesita decidir manualmente a dónde quiere que vayan las etiquetas, pero cartográficamente, ¡eso no es algo malo!

Aquí hay una captura de pantalla ...

Como se puede ver, no hay buffers. La trama por debajo no se ve afectada. Incluí líneas de contorno intermedias más finas y las estilizé para que solo se muestren cuando ELEV% 50 < > 0

HehechoestoenQGIS2.12...sumillajepuedevariarconlasversionesanteriores.

Supongoqueaquítienesuncampo"ELEV" en cada línea de contorno.

Segmentar las líneas de contorno

  1. Utilice el procesamiento y el algoritmo GRASS v.split.length para dividir sus contornos en segmentos de igual longitud. Debe elegir una longitud que sea similar al tamaño de su etiqueta en unidades de mapa, suponiendo que esté utilizando medidores. Aquí utilicé 200m.

    Tenga cuidado con esto, ya que hará que su archivo sea mucho más grande (tenga en cuenta que la función cuenta en la captura de pantalla).

    Para evitar esto, es posible que desee generar solo las líneas de contornos que desea diseñar (por ejemplo, cada 50 o 100 metros) para evitar el procesamiento de todas las líneas de contorno intermedias.

  2. A esta capa, agregue un campo de entero de 1 dígito llamado showLabel . Predeterminado a 0 o NULL.

  3. Cambie la etiqueta para que solo se muestre en un segmento donde este campo se establece en 1. Use esto para la expresión de texto de la etiqueta ...

    if ( "showlabel" is not null, "ELEV", "")
    

    Creo que si (expresión, valor verdadero, valor falso) es bastante nuevo; Si usa una versión anterior, puede usar CASE-ELSE

  4. Cambie el estilo de línea para que se dibujen todos los segmentos de longitud fija, excepto aquellos segmentos donde se muestra la etiqueta. Por lo tanto, use la representación basada en reglas con dos reglas

    Rule 1: "showLabel" is null
    Black, 0% transparent
    
    Rule 2: "showLabel" is not null
    Any colour, 100% transparent
    

    Ahora, todos los contornos se mostrarán de forma predeterminada, pero no las etiquetas.

    Edite manualmente los segmentos donde desee mostrar etiquetas

    Vaya al modo de edición y seleccione manualmente los segmentos donde desea que se muestren los valores de contorno, y establezca el valor de showLabel en 1 para las funciones seleccionadas. Puede usar Ctrl + select (en Ubuntu / Win, Cmd + Ctrl + Click / on Mac?) Para seleccionar múltiples segmentos para acelerar las cosas suben.

    Ahora debería "recortar" los contornos donde desea que se muestren las etiquetas, y las etiquetas se mostrarán en los espacios.

En este caso, la configuración de mi etiqueta fue:

CRS: EPSG 27700 (Local UTM for UK, in meters)
Text size: 50 map units
Placement: Parallel, On Line

Espero que ayude!

    
respondido por el Steven Kay 17.11.2015 - 00:28
7

Utilizo la opción "Buffer" en la pestaña "Configuración de etiqueta". (Utilizando el botón de etiquetas, no la opción de etiquetas antiguas en el cuadro de diálogo de propiedades de capa). Esto no borra la línea de contorno, como imagino que quiere hacer, pero hace que la etiqueta sea legible.

    
respondido por el Scro 25.02.2013 - 22:24
5

Creo que lo más cerca que puede estar con las capacidades actuales de QGIS es usar el efecto halo (o fondo) con el color que se obtiene de la tabla que se basará en el valor de elevación y el esquema de color, como se usa para rejilla subyacente. Por supuesto, esto no tomaría en cuenta la sombra y todo lo demás debajo del halo en el mapa. Ejemplo de color aleatorio:  Conunpocodecódigo,estopodríareescribirsecomofunciónparareflejarelcolordelacuadrícula.

Enteoría,deberíaserposibleutilizarunpatróndelíneapersonalizadoylaetiquetarepetición+desplazamiento.Desafortunadamentenohayajustededesplazamientodelaetiqueta.

  • despuésdealgunaspruebas,esimposibleforzaraQGISaserestrictoconlacolocacióndelasetiquetasenelintervaloexactoyenningúnotrolugar(+detodosmodosfaltaeloffsetdeinicio)
  • esimposiblecrearunpatróndelíneapersonalizadoconcerommparaqueelespaciotengaundesplazamientoinicialcomo20líneas-10espacios-70líneas-0espacios-porloquelaetiquetasecolocaríacada100mmconundesplazamientode30mmalprincipio-etiquetaconsignificadoestaríaenelmediodecadaagujerode10mm.

    
respondido por el Miro 17.11.2015 - 03:31
2

Después de encontrarme con el mismo problema recientemente, armé un script QGIS Python para llevar a cabo el trabajo pesado. El script que incluye algunos datos de prueba (Reino Unido), Readme (Guía) y las hojas de estilo utilizadas se puede encontrar en enlace

En resumen, el script utiliza dos capas vectoriales como entrada: la capa de contorno anotado y una capa de "guías". Este último consiste en polilíneas que intersectan los contornos en las ubicaciones de etiquetas deseadas.

El guión luego se basa en la distancia entre los contornos y el intervalo de contorno de índice que las etiquetas deben aplicar, agrega un valor de rotación a los puntos de la etiqueta y eventualmente recorta la capa de contorno original para producir los huecos.

Elenfoquefuncionaparticularmentebiensielusuarionecesitaproducirmapasdecontornoendiferentesintervalosenlamismaárea(esdecir,lasguíasnocambian).Uninconvenienteeslaincapacidaddecambiarlaposicióndelaetiquetaunavezqueelscripthafinalizado.Paraesto,elusuariotendríaqueajustarlaslíneasdeguíayvolveraejecutarelscriptcontralaentradaoriginal.Anteriormentetrabajémuchoconbúferesalrededordelasetiquetasparacrearelefectointerrumpido,peroestoresultóserestéticamentedesagradableenlosmapasbasadosendatosvectoriales.

Lamentablemente,nopuedoagregarmásimágenesenestemomentoparadocumentaroilustrarelproceso.

PD:siutilizalascapasdeestiloproporcionadasenelrepositorio,losusuariospuedennecesitar"activar" los campos personalizados para "Rotación", "Mostrar etiqueta" y "Mostrar siempre" en el menú de etiquetado. En algunas instalaciones de QGIS, estas se aplican automáticamente desde la hoja de estilo. No he descubierto qué causa esto todavía.

    
respondido por el Phil G 09.11.2016 - 16:16
1

¿Te acuerdas de este hilo Martin? La única forma en la que puedo pensar para acercarme a una solución a su problema sería superponer su capa de contorno con una capa de contorno recortada, usar esto para etiquetar y cambiar el color de la línea a algo neutral que enmascararía los contornos debajo de las etiquetas. Uno espera sin ser demasiado intrusivo. N.

Agregado más adelante: podría valer la pena ver este hilo también, el segundo responder. ¿Tal vez romper las líneas de contorno podría ser una respuesta, tal vez usar la capa de búfer utilizada para recortar los contornos?

    
respondido por el nhopton 03.03.2013 - 16:48
0

entrada de blog ESRI: enlace

El enmascaramiento de profundidad variable para las etiquetas de contorno implica tres pasos:

1creación de anotación a partir de las etiquetas, 2utilizando la herramienta Máscaras de esquema de funciones para crear máscaras, y 3utilizando las Opciones avanzadas de dibujo > Configuración de máscara para especificar a qué capas se ocultarán las máscaras.

    
respondido por el Jenny 05.03.2013 - 21:56

Lea otras preguntas en las etiquetas