Можно ли сгенерировать паттерн бустрофедона, который заполнит векторную область GRASS?

21

Можно ли сгенерировать паттерн бустрофедона, который заполнит векторную область GRASS?

У меня есть векторная область в GRASS. И я хотел бы сгенерировать вектор (ломаную), представляющую собой паттерн бострофедона, который заполняет эту область.

На рисунке ниже у меня есть «серая» область, и я хотел бы автоматически сгенерировать красную полилинию.

Возможно ли это с помощью GRASS или другого инструмента ГИС?

введите описание изображения здесь

В идеальном мире функция будет принимать следующие аргументы:

  • Отправная точка (которая должна быть где-нибудь в области)
  • Расстояние между двумя параллельными линиями
  • Направление (вектор, который поможет нарисовать шаблон)
Адриен БАРРАЛ
источник
Интересный вопрос. Как бы вы определили отправную точку? «Слева вверху» может не всегда относиться к хорошей угловой точке, как в вашем примере.
Даррен Коуп
Я ответил на ваш комментарий в вопросе
Adrien BARRAL
1
Вероятно, что-то можно приготовить с помощью PyGRASS: grass.osgeo.org/grass70/manuals/libpython/pygrass_index.html
markusN
Является ли требуемый вывод просто изображением с нарисованными на нем линиями, или вы действительно после некоторого вывода координат, которые могут быть даны трактору для наиболее эффективной вспашки поля?
nmtoken

Ответы:

2

Я понятия не имею, как построить такую ​​функцию, но шаги для выполнения могут быть

  1. Нарисуйте одну линию с желаемым азимутом и создайте новые линии со смещением, чтобы многоугольник был полностью покрыт.

Линейное поле создано

  1. Буфер многоугольника для определения разрыва между границей многоугольника и бустрофедоном. Разрежьте линии на границах буферного многоугольника и сохраните внутренние части.

Вырезать поле линии с помощью буферного многоугольника

  1. Соедините конечную и начальную точки линий в правильном порядке.

Готовый образец бустрофедона

user30184
источник
1
Я попробовал то же самое, я думаю, что вы на что-то здесь. Шаги 1 и 2 довольно просты - или могут быть смоделированы. Шаг 3 более сложный. В postgis может быть возможно отсортировать точки, представляющие st_intersection()параллельные линии / внутренний буфер, по их ST_LineLocatePoint()значению вдоль внутреннего буфера и объединить альтернативные пары.
Стивен Кей
1
Если граница многоугольника имеет внутренние углы или пики, то линии, соединяющие конечную и начальную точки, могут пересекать границу. Нетрудно проверить, происходит ли пересечение, но как правильно нарисовать линейную линию в таком случае и как сделать это автоматически? Может быть нелегко найти общее решение.
user30184
Вы правы, правильное направление будет сложно. Кроме того, подозреваю, что этот подход будет иметь крайние случаи, например, U-образные поля или поля с отверстиями :)
Стивен Кей