Czy jest możliwe wygenerowanie wzoru z bulwaru, który wypełnia region wektora GRASS?

21

Czy jest możliwe wygenerowanie wzoru z bulwaru, który wypełnia region wektora GRASS?

Mam region wektorowy w GRASS. I chciałbym wygenerować wektor (polilinię) będący wzorem bostrofedonu, który wypełnia ten region.

Na poniższym zdjęciu mam „szary” obszar i chciałbym automatycznie wygenerować czerwoną polilinię.

Czy jest to możliwe z GRASS lub innym narzędziem GIS?

wprowadź opis zdjęcia tutaj

W idealnym świecie funkcja przyjmie następujące argumety:

  • Punkt początkowy (który musi znajdować się gdziekolwiek w okolicy)
  • Odległość między dwiema równoległymi liniami
  • Kierunek (wektor, który pomoże narysować wzór)
Adrien BARRAL
źródło
Interesujące pytanie. Jak określisz punkt początkowy? „Lewy górny” może nie zawsze odnosić się do ładnego punktu narożnego, jak w twoim przykładzie.
Darren Cope
Odpowiedziałem na twój komentarz w pytaniu
Adrien BARRAL
1
Prawdopodobnie coś można przygotować za pomocą PyGRASS: grass.osgeo.org/grass70/manuals/libpython/pygrass_index.html
markusN
Czy wymagana moc wyjściowa jest tylko obrazem z narysowanymi na niej liniami, czy też naprawdę potrzebujesz danych wyjściowych ze współrzędnych, które można podać traktorowi, aby najskuteczniej zaorać pole?
nmtoken

Odpowiedzi:

2

Nie mam pojęcia, jak zbudować taką funkcję, ale kroki do wykonania mogą być

  1. Narysuj jedną linię z pożądanym azymutem i utwórz nowe linie z przesunięciem, aby wielokąt był całkowicie zakryty.

Utworzono pole linii

  1. Buforuj wielokąt, aby zdefiniować odstęp między granicą wielokąta a bulwarem. Wytnij linie na granicach buforowanego wielokąta i zachowaj części wewnętrzne.

Cięcie pola linii zbuforowanym wielokątem

  1. Połącz punkty końcowe i początkowe linii we właściwej kolejności.

Gotowy wzór boustrophedon

użytkownik30184
źródło
1
Próbowałem tego samego, myślę, że coś ci się podoba. Kroki 1 i 2 są dość łatwe - lub można je wyśmiać. Krok 3 jest trudniejszy. W Postgis może być możliwe posortowanie punktów reprezentujących st_intersection()linie równoległe / bufor wewnętrzny według ich ST_LineLocatePoint()wartości wzdłuż bufora wewnętrznego i połączenie alternatywnych par.
Steven Kay,
1
Jeśli granica wielokąta ma wewnętrzne rogi lub kolce, wówczas linie łączące punkty końcowe i początkowe mogą przecinać granicę. Nie jest trudno sprawdzić, czy nastąpi przecięcie, ale jaki byłby właściwy sposób na narysowanie linii w takim przypadku i jak zrobić to automatycznie? Znalezienie ogólnego rozwiązania może nie być łatwe.
user30184,
masz rację, uzyskanie prawidłowych wskazówek będzie trudne. podejrzewam również, że to podejście będzie miało przypadki brzegowe, np. pola w kształcie litery U lub pola z otworami :)
Steven Kay