4 votos

Creando una línea vectorial en el centro de dos líneas (rejilla) en QGIS 3.16

introducir descripción de la imagen aquí

Tengo una cuadrícula. Quiero crear una nueva línea en el 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 la mitad y del mismo largo 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.

introducir descripción de la imagen aquí

0 votos

Eliminé la etiqueta pyqgis 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 línea
  5. Explotar las 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 están dibujadas en la misma dirección (de arriba abajo o de abajo arriba). Encuentra el punto final de cada línea y conéctalo al punto final de la siguiente línea. Toma el centro de esta línea (centroide). Este es el punto de partida de cada línea media.

Ahora simplemente proyecta este punto hacia abajo, utilizando la longitud de tu línea existente y su azimut (ángulo).

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

La implementación
Puedes usar expresiones QGIS para esto. Usa el "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 solo deben crearse para las líneas del tipo fila y no para la última línea de fila:

if ( 
    "tipo" = 'fila' y
    atributo (
        obtener_entidad_por_id (
            @capa,  
            $id+1
        ),
        'tipo'
    ) = 'fila'
    ,
    with_variable (
        'centroid',
        centroid (
            make_line(
                punto_final (
                    $geometry
                ), 
                punto_final (
                    geometría (
                        obtener_entidad_por_id (
                            @capa,  
                            $id+1
                        )
                    )
                )
            )
        ),
        make_line (
            @centroid,
            project (
                @centroid ,
                -longitud (
                    $geometry
                ), 
                radians (
                    ángulo_principal($geometry)
                )
            )
        )
    ),
    ''
)

Captura de pantalla: las líneas punteadas negras se crean con la expresión de arriba y el Generador de Geometría, basadas en las líneas rojas: entrar descripción de la imagen aquí

1voto

Fred Puntos 194

No estoy seguro si está incluido en QGIS 3.16, pero si la distancia entre la línea 1 y la línea 2 es constante, puedes usar líneas de desplazamiento en 'geometrías vectoriales'. Allí puedes especificar tu distancia.

Primero haz una selección utilizando una expresión similar a "TIPO" = 'FILA'. Luego calcula las líneas de desplazamiento para tu selección marcando la casilla en la herramienta de procesamiento.

0 votos

Traté y funciona (solo si la distancia entre la línea 1 y la línea 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 calcularse cada vez. Gracias por tu 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