4 votos

Creación de una línea vectorial en medio de dos líneas (cuadrícula) en QGIS 3.16

enter image description here

Tengo una cuadrícula. Quiero crear una nueva línea en medio de dos líneas. Por ejemplo, calcular la distancia entre la línea 1 y 2 y crear una nueva línea (la línea roja en la imagen) exactamente en el medio y de la misma longitud que las líneas de la cuadrícula, también entre la línea 2 y 3 hasta el final de la cuadrícula.

La tabla de atributos contiene el número de filas y su tipo.

enter image description here

0 votos

He borrado el pyqgis -etiqueta porque no se proporcionó ningún código

2voto

Anton8000 Puntos 165
  1. Densificar por intervalo para crear vértices cada n metros
  2. Extraer los vértices como puntos
  3. Polígonos de Voronoi
  4. Polígonos a la línea
  5. Explotar líneas para dividir cada línea en segmentos
  6. Extraer los segmentos cortos

enter image description here

2voto

chhh Puntos 1154

La idea principal
Puedes crear líneas con el siguiente principio: supongo que todas las líneas paralelas se dibujan en la misma dirección (de arriba a abajo o de abajo a arriba). Encuentra el punto final de cada línea y conéctalo con el punto final de la línea siguiente. Toma el punto medio de esta línea (centroide). Este es el punto de partida de cada línea media.

Ahora simplemente proyecte este punto hacia el fondo, utilizando la longitud de su línea existente y su acimut (ángulo).

En este caso, incluso con distancias variables entre las líneas, se obtendrá en cada caso una línea media perfecta.

La aplicación
Para ello puede utilizar las expresiones de QGIS. Utilice la función "Generador de geometría" o el "Geometría por expresión" , ver aquí para más detalles . En ambos casos, la expresión sigue siendo la misma. Hay algunos elementos adicionales para obtener las líneas correctas: las líneas sólo deben crearse para las líneas del tipo row y no para el último row línea:

if ( 
    "type" = 'row' and
    attribute (
        get_feature_by_id (
            @layer,  
            $id+1
        ),
        'type'
    ) = 'row'
    ,
    with_variable (
        'centroid',
        centroid (
            make_line(
                end_point (
                    $geometry
                ), 
                end_point (
                    geometry (
                        get_feature_by_id (
                            @layer,  
                            $id+1
                        )
                    )
                )
            )
        ),
        make_line (
            @centroid,
            project (
                @centroid ,
                -length (
                    $geometry
                ), 
                radians (
                    main_angle($geometry)
                )
            )
        )
    ),
    ''
)

Captura de pantalla: las líneas negras punteadas se crean con la expresión de arriba y el Generador de Geometría, basándose en las líneas rojas: enter image description here

1voto

Fred Puntos 194

No estoy seguro de que esté incluido en QGIS 3.16, pero si la distancia entre las líneas 1 y 2 es constante, puede utilizar offset lines en "geometrías vectoriales". Allí puede especificar su distancia.

En primer lugar, realice una selección mediante una expresión similar a "TYPE" = 'ROW' . Entonces, calcule offset lines para su selección marcando la casilla en la herramienta de procesamiento.

0 votos

Lo he intentado y funciona (sólo si la distancia entre la línea 1 y 2 es constante), pero la distancia entre las líneas puede ser diferente en mi caso. Por lo tanto, la distancia entre las filas debe ser calculado cada vez.Gracias por su respuesta.

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