Forum QGIS

Pełna wersja: szerokość i długość działki
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Stron: 1 2
Potrzebuję określić parametry działek do analizy - szerokość i długość (przybliżone)
Czy istnieje jakieś narzędzie automatyzujące ww. działanie?
Raczej nie ma takiej możliwości bezpośrednio w programie.
W kalkulatorze możesz obliczyć obwód i powierzchnię działki. Może to Ci wystarczy?
(21-02-2012, 09:32)Rayo napisał(a): [ -> ]W kalkulatorze możesz obliczyć obwód i powierzchnię działki. Może to Ci wystarczy?
Naprawdę uważasz, że gdyby mi wystarczało, to bym pytał?
A jaka jest definicja długości? i szerokości? Bo działki różnie się układają
Postgis da radę (różnica między Ymin i Ymax oraz Xmin i Xmax)
(21-02-2012, 09:37)[wiki] napisał(a): [ -> ]
(21-02-2012, 09:32)Rayo napisał(a): [ -> ]W kalkulatorze możesz obliczyć obwód i powierzchnię działki. Może to Ci wystarczy?
Naprawdę uważasz, że gdyby mi wystarczało, to bym pytał?

Naprawdę tak uważam. Przyjmując pewne uproszczenia, znając obwód i powierzchnię można obliczyć długość i szerokość.
pytanie [wiki] jest źle postawione, bowiem ma sens tylko dla figury geometrycznej, która jest równoległobokiem, prostokątem lub kwadratem. W zasadzie tylko te dwa ostatnie mają długość i szerokość - taką stricte!. Równoległoboki mogą mieć szerokość / długość po boku lub prostopadłą do jednego z równoległych boków. Nie wspomnę o trójkątach, pięciokątach, działkach nieforemnych, wypukłych i wklęsłych. Skonstruowanie algorytmu, który 'wie' co to szerokość dla wszystkich przypadków jest raczej trudne. Jak rozróżnić która to 'długość' i 'szerokość' dla obiektu który jest kwadratem?
Pytanie o długość i szerokość działki było zatem samo w sobie DUŻYM uproszczeniem i na tak postawione nie można było lepiej odpowiedzieć.
pozdrawiam wszystkich ! Cool

a tak ciągnąc temat dalej..
znacznie uprościło by wielu osobom pracę, gdyby można było mieć wtyczkę, która oblicza długość i azymut każdego segmentu linii bądź wieloboku. Problem z zapisem wielu linii przy jednym obiekcie, ale może jest jakiś sposób..
Czy ktoś słyszał może o takiej wtyczce?, cała nadzieja w Zespole Rozwojowym.. Smile
W kalkulatorze QGIS 1.9 powinno się to dać wyliczyć. Są tam funkcje pobierające współrzędne poszczególnych punktów linii (xat i yat). Mając te współrzędne można obliczyć długości i azymuty. To takie rozwiązanie dla kilku obiektów. Sam tego nie sprawdzałem.

Dla większej ilości można by spróbować wyeksportować warstwę to arkusza kalkulacyjnego z geometrią WKT i tam dokonać przeliczeń.

Dla warstw PostGIS najlepiej zrobić wyliczenia po stronie bazy i wywoływać triggerem. U mnie działa coś takiego dla obliczania długości linii (całych).

Problem oczywiście będzie z zapisem wielu długości i azymutów w jednym obiekcie. Jeśli konieczne jest takie rozwiązanie to można by spróbować następującego formatu: ((długość1, azymut1), (długość2, azymut2),...). Wszystko wrzucane do jednego pola tekstowego.
Z punktu widzenia struktury danych najlepszym rozwiązaniem byłoby chyba stworzenie nowej warstwy, rozbicie wszystkich linii i wieloboków na pojedyncze odcinki (obiekty) i dla każdego z nich wyliczenie i zapisanie długości i azymutu.
Napisanie takiej wtyczki powinno być w miarę proste.
Wszystko zależy czemu te dane mają służyć.
Witam, problem rozwiązałem następująco:
przyjmuję, że poligon jest prostokątem,
a w jeszcze większym uproszczeniu (czyli pozwalając sobie na jakąś tolerancję) ma przynajmniej dłuższe boki równoległe.

P - pole ($area),
Q - obwód ($perimeter)
a,b - boki: krótszy i dłuższy

na podstawie dwóch równań z dwiema niewiadomymi :
P=ab, Q=2(a+b), otrzymujemy:
a=(Q/2)-b ; P=((Q/2)-b)b;
b^2 - (Qb/2)+P = 0;
Delta=((Q^2)/4) - 4P;

Dwie pary rozwiązań dla wartości dodatnich i ujemnych, pokrywają się, więc nie będę pisał całego wyprowadzenia..
bok krótszy a=(Q/4)-(sqrt(((Q^2)/4)-4P)/2);
bok dłuższy b=(Q/4)+(sqrt(((Q^2)/4)-4P)/2);

Objaśnienie:
Pierwszy człon oblicza bok, dla którego poligon byłby kwardratem,
jeśli a=b wtedy drugi człon równania jest równy ZERO, jeśli a<>b - drugi człon równania posiada wartość dodatnią, którą się od obliczonego boku kwadratu:
- odejmuje--> krótszy bok
- dodaje --> dłuższy bok,


zapis do wklejenia do kalkulatora pól: a i b =>(real(10,2))
bok_a = ($perimeter/4)-(sqrt((($perimeter^2)/4)-4*$area)/2)
bok_b = ($perimeter/4)+(sqrt((($perimeter^2)/4)-4*$area)/2)

ocena dokładności:
dla przeciętnej działki, która ma geometrię zbliżoną do kwadratu lub prostokąta algorytm uzyskuje dokładność rzędu kilku procent. Dla kwadratu lub prostokąta liczy idealnie. Błędy dla obliczonych boków są większe dla figur nie posiadających równoległych dłuższych boków.

Pozdrawiam, Tomek
(11-03-2012, 00:16)tomsik napisał(a): [ -> ]zapis do wklejenia do kalkulatora pól: a i b =>(real(10,2))
bok_a = ($perimeter/4)-(sqrt((($perimeter^2)/4)-4*$area)/2)
bok_b = ($perimeter/4)+(sqrt((($perimeter^2)/4)-4*$area)/2)
Pozdrawiam, Tomek

Dźwięki piękne, przetestuję wkrótce.
(11-03-2012, 00:16)tomsik napisał(a): [ -> ]zapis do wklejenia do kalkulatora pól:[/u] a i b =>(real(10,2))
bok_a = ($perimeter/4)-(sqrt((($perimeter^2)/4)-4*$area)/2)
bok_b = ($perimeter/4)+(sqrt((($perimeter^2)/4)-4*$area)/2)

ocena dokładności:
dla przeciętnej działki, która ma geometrię zbliżoną do kwadratu lub prostokąta algorytm uzyskuje dokładność rzędu kilku procent. Dla kwadratu lub prostokąta liczy idealnie. Błędy dla obliczonych boków są większe dla figur nie posiadających równoległych dłuższych boków.

Pozdrawiam, Tomek

Odpaliłem, pooglądałem - dokładność w zupełności wystarczająca.
Tomku, dźwięki piękne.
Stron: 1 2