Liczba postów: 12
3
Dołączył: 08-10-2015
Reputacja:
0
Automatyczne obliczanie długości lini i dodanie do tab. atrybutów?
Witam,
wprowadzam dane liniowe i chciałbym, żeby długość danej lini automatycznie była dodana do tabeli atrybutów. Jest taka możliwość? Wytłumaczy ktoś jak to zrobić? Wolałbym aby długość sama została wprowadzona do tabeli atrybutów do danego wiersza, załóżmy z dokładnością 2 cyfr po przecinku. Będe musiał każdą linie mierzyć linijką i wprowadzać długość recznie?
Liczba postów: 255
1
Dołączył: 15-10-2012
Reputacja:
8
RE: Automatyczne obliczanie długości lini i dodanie do tab. atrybutów?
Jeśli zależy Ci na sposobie bardzo automatycznym (kończysz linię, i informacja o długości dodaje się do tabeli), to jeszcze nie znam takiego, ale może coś znajdę...
Natomiast możesz narysować wszystkie linie, jakie masz do narysowania a potem otwierasz tabelę atrybutów, klikasz w ikonkę "Kalkulator pól", a tam w lewej części na górze określasz parametry nowej kolumny dla długości linii (zaznaczone pole przy "Twórz nowe pole"). Nazwij kolumnę, wybierz typ "Liczby dziesiętne (real)", długość ustaw na 10, a dokładność na 2 (dwa miejsca po przecinku). W polu poniżej wpisz:
Kod:
$length
i kliknij ok. W ułamku sekundy obliczona będzie długość wszystkich linii w warstwie.
Liczba postów: 20
11
Dołączył: 30-07-2015
Reputacja:
0
RE: Automatyczne obliczanie długości lini i dodanie do tab. atrybutów?
(18-11-2015, 10:37)Binko napisał(a): Jeśli zależy Ci na sposobie bardzo automatycznym (kończysz linię, i informacja o długości dodaje się do tabeli), to jeszcze nie znam takiego, ale może coś znajdę...
Natomiast możesz narysować wszystkie linie, jakie masz do narysowania a potem otwierasz tabelę atrybutów, klikasz w ikonkę "Kalkulator pól", a tam w lewej części na górze określasz parametry nowej kolumny dla długości linii (zaznaczone pole przy "Twórz nowe pole"). Nazwij kolumnę, wybierz typ "Liczby dziesiętne (real)", długość ustaw na 10, a dokładność na 2 (dwa miejsca po przecinku). W polu poniżej wpisz:
Kod:
$length
i kliknij ok. W ułamku sekundy obliczona będzie długość wszystkich linii w warstwie.
A jak zrobić żeby po przesunięciu punktu na linii długość automatycznie się przeliczyła?
Ewentualnie Jak zrobic warstwę z liniami które będa miały etykiety długości zmieniające się dynamicznie przy przesunięciu wierzchołka?
10-11-2017, 19:48, (Ten post był ostatnio modyfikowany: 10-11-2017, 20:50 {2} przez xmaziax.)
Liczba postów: 186
1
Dołączył: 01-09-2015
Reputacja:
5
RE: Automatyczne obliczanie długości lini i dodanie do tab. atrybutów?
(10-11-2017, 14:17)Loozak napisał(a): A jak zrobić żeby po przesunięciu punktu na linii długość automatycznie się przeliczyła?
Ewentualnie Jak zrobic warstwę z liniami które będa miały etykiety długości zmieniające się dynamicznie przy przesunięciu wierzchołka?
To co chcesz osiągnąć w pierwszym punkcie jest banalne w realizacji jeśli do przechowywania danych używasz dowolnej bazy danych (Postgis, Spatialite).
Obsługujesz to triggerami.
Dla SHP możesz użyć wtyczki AutoFields.
Na drugie pytanie masz już częściowo odpowiedź kilka postów wyżej.
Jako etykietę linii nie ustawiasz kolumny dlugosc (o ile taką stworzyłeś w kalkulatorze pól) lecz etykietujesz warstwę funkcją
Kod:
$lenght
Możesz ją od razu zaokrąglić do 2 miejsc po przecinku:
Liczba postów: 20
11
Dołączył: 30-07-2015
Reputacja:
0
RE: Automatyczne obliczanie długości lini i dodanie do tab. atrybutów?
(10-11-2017, 19:48)xmaziax napisał(a): [quote='Loozak' pid='6273' dateline='1510316230']
Na drugie pytanie masz już częściowo odpowiedź kilka postów wyżej.
Jako etykietę linii nie ustawiasz kolumny dlugosc (o ile taką stworzyłeś w kalkulatorze pól) lecz etykietujesz warstwę funkcją
Kod:
$lenght
Możesz ją od razu zaokrąglić do 2 miejsc po przecinku:
Kod:
round( $length,2)
I w jakich to jest jednostkach? Bo mi dziwne wartości pokazuje np. linia o dł. 182m ma wartość 0.002551
Liczba postów: 255
1
Dołączył: 15-10-2012
Reputacja:
8
RE: Automatyczne obliczanie długości lini i dodanie do tab. atrybutów?
Musisz zmienić układ projektu i/lub warstwy na jakiś metryczny (prawdopodobnie masz gdzieś WGS84), do tego w ustawieniach projektu zmień elipsoidę pomiaru odległości na GRS 1980, żeby dobrze liczył.
20-11-2017, 11:47, (Ten post był ostatnio modyfikowany: 20-11-2017, 11:47 {2} przez Loozak.)
Liczba postów: 20
11
Dołączył: 30-07-2015
Reputacja:
0
RE: Automatyczne obliczanie długości lini i dodanie do tab. atrybutów?
(16-11-2017, 17:01)Binko napisał(a): Musisz zmienić układ projektu i/lub warstwy na jakiś metryczny (prawdopodobnie masz gdzieś WGS84), do tego w ustawieniach projektu zmień elipsoidę pomiaru odległości na GRS 1980, żeby dobrze liczył.
To inaczej.
Zrobiłem sobie warstwę która na bieżąco aktualizuje długości podczas przesuwania punktu tylko nie pamiętam w jaki sposób
Po wie mi ktoś jak ją znów stworzyć? Jest dodana funkcja $length ale jako suma ?
Liczba postów: 13
1
Dołączył: 25-06-2010
Reputacja:
0
RE: Automatyczne obliczanie długości lini i dodanie do tab. atrybutów?
Prawdopodobnie chodzi ci nie o warstwę, tylko o kolumnę w tabeli atrybutów. Gdy użyjesz wtyczki AutoFields to za każdą zmianą geometrii warstwy (np. przesunięcia któregoś węzła) zmieni ci się wartość np. długości danego elementu warstwy w odpowiedniej kolumnie (lenght - dla warstwy liniowej). Żeby wartość była w metrach to użyj układu o kodzie EPSG 2180 (układ, w którym jednostkami są metry, stosowany w Polsce).
Liczba postów: 255
1
Dołączył: 15-10-2012
Reputacja:
8
RE: Automatyczne obliczanie długości lini i dodanie do tab. atrybutów?
Do stworzenia shp masz odpowiedź wyżej:
(10-11-2017, 19:48)xmaziax napisał(a): To co chcesz osiągnąć w pierwszym punkcie jest banalne w realizacji jeśli do przechowywania danych używasz dowolnej bazy danych (Postgis, Spatialite).
Obsługujesz to triggerami.
Dla SHP możesz użyć wtyczki AutoFields.
Poza tym nie bardzo rozumiem, co masz na myśli. Długość liczy się dla każdej linii osobno. Sumę musisz sobie zliczyć.