Przerobiłem cały proces na przykładzie kilku rezerwatów przyrody.
1. Utworzyłem zorientowane minimalne "skrzynki" (OMBB).
2. Złączyłem je z według lokalizacji z rezerwatami.
3. Zamieniłem na linie (narzędzie: Poligony na linie).
4. Linie rozbiłem na pojedyncze odcinki (narzędzie: Rozdziel linie).
5. W kalkulatorze pól utworzyłem pole z długością odcinka z pewnym zaokrągleniem (z dokładnością do metra, liczby całkowite).
6. Wybrałem zapytaniem dwa najkrótsze odcinki z OMBB każdego rezerwatu, te zaokrąglone z tabeli atrybutów (nie na podstawie geometrii ($length), choć też by można stosując "round"). Ze względu na zaokrąglenie dla każdego rezerwatu dwa najkrótsze odcinki OMBB mają taką samą długość, przez co dla każdego rezerwatu zaznaczą się dwa odcinki.
7. Z zaznaczonych utworzyłem nową warstwę (rozdzielone_short).
8. W kalkulatorze pól utworzyłem pole "id" z unikalnym id (wiersze > $id).
9. Utworzyłem warstwę punktową (middle_pft) ze środkiem każdego odcinka (narzędzie: Środek ciężkości).
10. W tym momencie znowu gubią się atrybuty, więc trzeba złączyć według lokalizacji.
11. Połączyłem punkty tworząc linie (wtyczka: Points to Path).
12. Na koniec zostaje dodanie azymutu: degrees (azimuth(point_n($geometry,1),(point_n($geometry,2)))) w kalkulatorze pól.
Pewnie można to jakoś uprościć ale mi udało się zrobić tak.
Widzę w tej ścieżce postępowania dwa problemy:
1. Nie jest rozstrzygnięty zwrot azymutu, przykładowo nie wiadomo czy linia biegnie z północy na południe czy z południa na północ, obrazowo pisząc nie wiadomo gdzie w grobie są nogi a gdzie głowa. Chyba, że pitt poda jeszcze ten parametr to pomyślimy dalej.
2. Wyznaczanie azymutu za pomocą OMBB sprawdzi się w przypadku lekko wydłużonych i w miarę zwartych obiektów. Przy obiektach zwartych i niewydłużonych (zbliżone do koła czy kwadratu) oraz rozbudowanych (powiedzmy prostokąt z jakimś długim cienkim wąsem) może być mylące. Widać to w przypadku rezerwatu Lubiaszów na ostatnim załączniku, gdzie jako azymutem wydaje się być linia w kierunku zbliżonym do N (lub S). Rozwiązaniem może być wstępna generalizacja poligonów albo utworzenie zorientowanych hmm.... "oriented minimum bounding elipses"? Da się coś takiego zrobić? I dopiero dla tych "oriented minimum bounding elipses" utworzenie OMBB... Tak sobie filozofuję, może kogoś to natchnie