Чи можливо сформувати шаблон бустрофедона, який заповнює векторну область GRASS?


21

Чи можливо сформувати шаблон бустрофедона, який заповнює векторну область GRASS?

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

На зображенні внизу у мене "сіра" зона, і я хотів би автоматично генерувати червону полілінію.

Чи можливо це за допомогою GRASS чи іншого інструменту ГІС?

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

У ідеальному світі функцію приймуть такі аргументи:

  • Початкова точка (яка повинна бути в будь-якій точці району)
  • Відстань між двома прямими паралелями
  • Напрямок (вектор, який допоможе намалювати візерунок)

Цікаве запитання. Як би ви визначили вихідну точку? "Вгорі ліворуч" не завжди може стосуватися приємної кутової точки, як у вашому прикладі.
Даррен Коп

Я відповів на ваш коментар у питанні
Adrien BARRAL

1
Можливо, щось можна приготувати за допомогою PyGRASS: grass.osgeo.org/grass70/manuals/libpython/pygrass_index.html
markusN

Чи потрібний вихід є лише зображенням із накресленими на ньому лініями, чи ви справді після певного виводу координат, які можна було б надати трактору, щоб найбільш ефективно орати поле?
nmtoken

Відповіді:


2

Я не маю уявлення про те, як побудувати таку функцію, але кроки для її виконання можуть бути

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

Поле рядка створено

  1. Буфер багатокутника для визначення проміжку між кордоном полігону та бустрофедоном. Наріжте лінії на меж забудованого багатокутника і збережіть внутрішні частини.

Лінійне поле вирізати за допомогою буферного багатокутника

  1. З’єднайте кінцеві та початкові точки рядків у правильному порядку.

Готовий бустрофедон візерунок


1
Я спробував те ж саме, я думаю, ти тут щось на те. Кроки 1 і 2 досить прості - або їх можна здеревувати. Крок 3 складніший. Можливо, в постгігах можна буде сортувати точки, що представляють st_intersection()паралельні лінії / внутрішній буфер за їх ST_LineLocatePoint()значенням, вздовж внутрішнього буфера, та приєднуватися до альтернативних пар.
Стівен Кей

1
Якщо межа багатокутника має внутрішні кути або шипи, то лінії, які з'єднують кінцеву і початкову точки, можуть перетинати межу. Перевірити, чи відбувається перехрестя, не важко, але який би був правильний спосіб провести лінію рядка в такому випадку і як зробити це автоматично? Знайти загальне рішення може бути непросто.
користувач30184

Ви маєте рацію, правильне вказівки буде складним. також підозрюйте, що у цього підходу будуть крайові корпуси, наприклад, полі у формі фігури або поля з отворами :)
Стівен Кей
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.