¿Es posible generar un patrón de boustrofedon que llene una región vectorial con GRASS?

21

¿Es posible generar un patrón de boustrofedon que llene una región vectorial con GRASS?

Tengo una región vectorial en GRASS. Y me gustaría generar un vector (una polilínea) que sea el patrón de bostrophedon que llene esta región.

En la imagen siguiente, tengo el área "gris" y me gustaría generar la polilínea roja automáticamente.

¿Es posible con GRASS u otra herramienta SIG?

ingrese la descripción de la imagen aquí

En un mundo perfecto, la función tomará los siguientes argumentos:

  • Un punto de partida (que debe estar en cualquier parte del área)
  • Una distancia entre dos rectas paralelas
  • Una dirección (un vector que ayudará a dibujar el patrón)
Adrien BARRAL
fuente
Interesante pregunta. ¿Cómo determinarías el punto de partida? "Arriba a la izquierda" no siempre se relaciona con un buen punto de esquina como en su ejemplo.
Darren Cope
Respondí a tu comentario en la pregunta
Adrien BARRAL
1
Probablemente se pueda cocinar algo usando PyGRASS: grass.osgeo.org/grass70/manuals/libpython/pygrass_index.html
markusN
¿La salida requerida es solo una imagen con las líneas dibujadas en ella, o realmente está buscando alguna salida de coordenadas que se pueda dar a un tractor para arar un campo de la manera más eficiente?
nmtoken

Respuestas:

2

No tengo idea de cómo construir dicha función, pero los pasos a seguir pueden ser

  1. Dibuje una línea con el acimut deseado y cree nuevas líneas con desplazamiento para que el polígono quede totalmente cubierto.

Campo de línea creado

  1. Almacena el polígono para definir el espacio entre el límite del polígono y el boustrofedón. Corte las líneas en los límites del polígono protegido y mantenga las partes internas.

Corte de campo de línea con el polígono amortiguado

  1. Conecte los puntos de inicio y final de las líneas en el orden correcto.

Patrón de boustrofedon listo

usuario30184
fuente
1
Intenté lo mismo, creo que estás en algo aquí. Los pasos 1 y 2 son bastante fáciles, o se pueden burlar. El paso 3 es más complicado ... podría ser posible en postgis ordenar los puntos que representan las st_intersection()líneas paralelas / buffer interno por su ST_LineLocatePoint()valor a lo largo del buffer interno, y unir pares alternativos.
Steven Kay
1
Si el límite del polígono tiene esquinas internas o puntas, entonces las líneas que conectan los puntos de inicio y final pueden intersecar el límite. No es difícil probar si ocurre la intersección, pero ¿cuál sería la forma correcta de dibujar la cadena lineal en tal caso y cómo hacerla automáticamente? Puede que no sea fácil encontrar una solución general.
user30184
tienes razón, obtener indicaciones correctas será complicado. también, sospeche que este enfoque tendrá casos extremos, por ejemplo, campos en forma de U, o campos con agujeros :)
Steven Kay