Ocena wątku:
  • 2 Głosów - 3 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
obliczanie azymutu/kierunku dla poligonu
03-01-2017, 22:30, (Ten post był ostatnio modyfikowany: 10-01-2017, 09:16 {2} przez pitt.)
#11
RE: obliczanie azymutu/kierunku dla poligonu
cześć,
opcja "Oriented minimum bounding box", której do tej pory nie znalem, jest faktycznie pomocna. Jednak w ten sposób otrzymujemy prostokąty gdzie każdy z prostokątów (poligonów) ma dwie identycznie linie, co stwarza problem dla rozwiązania zaproponowanego przez Italiano: View => Select by expression
Dodatkowo wciąż brak jest linii, która faktycznie przecina centrycznie poligon.
W jaki sposób można wyznaczyć taka linie dla utworzonych przez "Oriented minimum bounding box" prostokątów, tzn. linie która przebiega dokładnie przez środek prostokąt po jego dłuższej osi.

PS
załącznik dodajesz z menu "odpowiedz" lub "odpisz", tam na dole (niebieskie okno) istnieje opcja dodania załącznika "Załączniki - Nowy załącznik".
18-01-2017, 17:32,
#12
RE: obliczanie azymutu/kierunku dla poligonu
witam,
jest ktoś w stanie dalej pomoc?
"W jaki sposób można wyznaczyć taka linie dla utworzonych przez "Oriented minimum bounding box" prostokątów, tzn. linie która przebiega dokładnie przez środek prostokąt po jego dłuższej osi."
25-01-2017, 14:31, (Ten post był ostatnio modyfikowany: 25-01-2017, 16:35 {2} przez tomalos.)
#13
RE: obliczanie azymutu/kierunku dla poligonu
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 Smile
10-02-2017, 15:19, (Ten post był ostatnio modyfikowany: 10-02-2017, 15:39 {2} przez pitt.)
#14
RE: obliczanie azymutu/kierunku dla poligonu
witam,
dzięki za wskazówki. Groby są zorientowane w kierunku zachodnim (z głowa na zachód).
Ja chwilowo utknąłem w punkcie 6, tzn. nie jestem w stanie wybrać zapytaniem ["length" = minimum( "length", "ID" )] dwóch najdłuższych odcinków związanych z tym samym ID.


Załączone pliki Miniatury
   
13-02-2017, 13:53, (Ten post był ostatnio modyfikowany: 13-02-2017, 14:03 {2} przez tomalos.)
#15
RE: obliczanie azymutu/kierunku dla poligonu
Mi zaznaczenie wyrażeniem po długości z uprzednio utworzonej kolumny z długością działa i zaznacza dokładnie połowę z istniejących linii (po dwie najkrótsze)
Kod:
"length"  =  minimum( "length" , "gid")

Natomiast jak zaznaczam długością obliczaną z geometrii czy to zaokrąglając:
Kod:
round ($length = minimum(  $length , "gid"),1)
czy nie:
Kod:
$length = minimum(  $length , "gid")
to kilka linii zostaje pominiętych.

Żeby tego uniknąć zrobiłem tak:
Kod:
$length < (minimum(  $length , "gid")+0.1)
i zrobił co trzeba, więc może tak spróbuj.

Żeby nie było idealnie to jak wywołuję "kalkulator pól", czy narzędzie "zaznaczenia za pomocą wyrażenia" z narzędzi geoprocesingu to też mi nie działają funkcje z grupy "Agregates" z kalkulatowa pól, przez co nie da się tego wykorzystać do stworzenia modelu. Jak otwieram z menu to działa normalnie. Chciałem zrobić model, żeby ci podesłać i sprawdzić czy u ciebie zadziała to co działa u mnie, ale nie działa nawet u mnie Smile.
   
11-08-2017, 14:34, (Ten post był ostatnio modyfikowany: 11-08-2017, 14:38 {2} przez pitt.)
#16
RE: obliczanie azymutu/kierunku dla poligonu
witam,
powracam jeszcze na krotko do tego watku
Mam problem z pkt. 10 (lista Tomalosa), a mianowicie nie jestem w stanie zlaczyc/przypisac atrybutow wg. lokalizacji.
Korzystam - podobnie jak w pkt. 2 - z narzedzia "Zlacz atrybut wg lokalizacji"         i niestety ale na 360 obiektow (zolte punkty), jedynie 176 atrybutow zostaja ponownie przypisane (czerwone punkty)     .
Dlaczego?
12-08-2017, 23:11,
#17
RE: obliczanie azymutu/kierunku dla poligonu
Może spróbuj zmienić parametr "Dokładność" na kilkadziesiąt centymetrów.
15-08-2017, 23:21, (Ten post był ostatnio modyfikowany: 01-09-2017, 09:03 {2} przez pitt.)
#18
RE: obliczanie azymutu/kierunku dla poligonu
zmieniając parametr dokładności (próbowałem tutaj wielu wariantów) uzyskuje błędny wpis wartości w tabeli atrybutów, tzn. niektore z wartości są wielokrotnie przypisywane innym, pomimo unikatowego ID lub przypisywana jest wartosc NULL.
       
Wynika to najprawdopodobniej wlasnie ze zmiany paramertu "dokladnosci", przez co niektore wartosci sa "przyciagane / przypisywane" (np. w obrebie kilkudziesieciu cm) do tych niewlasciwych.
Spotkal sie juz ktos z was z podobnym problemem?
20-09-2017, 20:01,
#19
RE: obliczanie azymutu/kierunku dla poligonu
Wiem, że nie popisałem się refleksem ale może spróbuj zamiast punktów użyć ich buforów o jakimś małym promieniu (kilka, kilkanaście lub kilkadziesiąt centymetrów).


Podobne wątki
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Automatyczne obliczanie długości lini i dodanie do tab. atrybutów? karliTToO 10 13 023 02-01-2018, 10:26
Ostatni post: sebaq
  Wyrysowanie azymutu od punktu basiuunia 0 3 782 28-11-2013, 11:00
Ostatni post: basiuunia
  obliczanie azymutu linii tomsik 1 7 758 13-01-2012, 10:57
Ostatni post: tomalos
  obliczanie pól obszarów pitt 6 14 561 28-01-2011, 19:07
Ostatni post: borys
  Obliczanie długości rewelator 4 12 248 22-09-2010, 21:55
Ostatni post: rewelator

Skocz do: