4 votos

¿Cómo colocar etiquetas a intervalos regulares ortogonalmente a una característica de línea?

Quiero visualizar el encadenamiento actual de una línea en un intervalo determinado (digamos cada 100m). Sé que esto se puede hacer, por ejemplo, mediante el plungin Qchainage o LRS. Pero las etiquetas tienen que mostrarse ortogonalmente al rumbo actual de la línea, para lo cual ninguna de estas herramientas proporciona campos. Teniendo en cuenta las opciones avanzadas de etiquetado sé que puedo establecer etiquetas (incluso con la opción de rumbo flexible) a ciertos intervalos, pero no he encontrado una opción (expresión) para mostrar la posición respectiva de una línea.

¿Existe una forma sencilla de resolver un problema como el que he planteado?

3voto

Mat Puntos 196

Conseguí algo parecido utilizando QGIS 2.16.

Se necesita un poco de trabajo adicional / experimentación, pero espero que le dará un punto de partida. No estoy seguro de la mejor manera de añadir un desplazamiento, pero usted podría ser capaz de hackear rellenando el texto de la etiqueta con espacios ;-)

enter image description here

Estoy usando epsg:27700, un UTM CRS local en metros, por lo que las unidades están en metros.

Para ello, añadió un nuevo campo en la salida de QChainage utilizando la expresión

180.0 - degrees(
    azimuth(
        start_point(
            intersection(
                geometry(
                    get_feature('my_line_layer','field',value)
                ), 
                buffer( $geometry,5)
            )
        ),
        end_point(
            intersection(
                geometry(
                    get_feature('my_line_layer','field',value)
                ), 
                buffer( $geometry,5)
            )
        )
    )
)

Con más detalle, este...

  • amortigua cada punto de encadenamiento en 5 metros
  • obtiene la intersección del búfer con la línea, que es una característica en otra capa (aquí, una ruta de autobús). Necesitará un campo único que pueda buscar. Esto debería (con suerte) dar una línea.
  • mide el acimut entre el inicio y el final de la línea
  • se convierte en grados (que es lo que espera el etiquetado).
  • restar a 180 para hacerlo ortogonal

A continuación, debería poder utilizar este campo como valor de "rotación" para sus etiquetas.

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