3 votos

Crear una línea central para cada polígono

Estoy tratando de crear una línea en el centro de cada polígono de mi forma, como las líneas rojas en la imagen de abajo (todos los polígonos son rectángulos). Hay casi 22,000 polígonos y no puedo descifrar cómo hacer esto. ¿Alguna idea?

introducir descripción de la imagen aquí

1 votos

Por favor, proporcione más información sobre sus geometrías ... ¿son siempre rectángulos?

0 votos

Sí @snaileater siempre rectángulos.

4voto

rightkushagra Puntos 11

Si todos los polígonos son rectángulos, supongo que estás buscando el promedio de los lados largos.

En este caso, si es una tarea única, esto debería funcionar:

  1. comienza en el punto 0 del borde y verifica si la distancia de 0 a 1 es menor que la distancia de 0 a 3.

  2. caso verdadero: obtén las coordenadas del punto medio de los lados 0-1 y 2-3.

  3. caso falso: obtén las coordenadas del punto medio de los lados 2-3 y 0-3.

  4. Construye una nueva geometría de línea utilizando los puntos medios encontrados.

En QGIS:

Utiliza la calculadora de campos para obtener las coordenadas:

crea 4 columnas:

X1:

if(($x_at(0)-$x_at(1))^2+($y_at(0)-$y_at(1))^2 < ($x_at(0)-$x_at(3))^2+($y_at(0)-$y_at(3))^2,$x_at(0)/2+$x_at(1)/2,$x_at(0)/2+$x_at(3)/2)

Y1:

if(($x_at(0)-$x_at(1))^2+($y_at(0)-$y_at(1))^2 < ($x_at(0)-$x_at(3))^2+($y_at(0)-$y_at(3))^2,$y_at(0)/2+$y_at(1)/2,$y_at(0)/2+$y_at(3)/2)

X2:

if(($x_at(0)-$x_at(1))^2+($y_at(0)-$y_at(1))^2 < ($x_at(0)-$x_at(3))^2+($y_at(0)-$y_at(3))^2,$x_at(2)/2+$x_at(3)/2,$x_at(1)/2+$x_at(2)/2)

Y2:

if(($x_at(0)-$x_at(1))^2+($y_at(0)-$y_at(1))^2 < ($x_at(0)-$x_at(3))^2+($y_at(0)-$y_at(3))^2,$y_at(2)/2+$y_at(3)/2,$y_at(1)/2+$y_at(2)/2)

Luego construye la columna de geometría

wkt_geometry:

concat('LINESTRING( ',"X1",' ',"Y1",',',"X2",' ',"Y2",')')

Luego, exporta la capa como csv y vuelve a cargarla con el controlador csv, establece wkt_geometry como el campo de geometría.

0 votos

Por favor edita la pregunta añadiendo la nueva información.

0 votos

Ha funcionado, pero parcialmente...algunas líneas tuvieron un comportamiento extraño, no se paralelizaban. Pero ahora entiendo. En algunos rectángulos hay vértices dividiendo el lado más largo del polígono.

1 votos

Ok, si esto se ajusta a tus necesidades, por favor edita la pregunta para agregar esa información, es decir: todos los polígonos son rectángulos. Y acepta la respuesta. ¿Intentaste simplificar las geometrías para eliminar los vértices extra en los lados medios?

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