Posłużę się przykładem aby opisać problem.
Mam warstwę z gminami oraz druga z powiatami obie mają atrybuty teryt i nazwę.
Utworzyłem kolejna warstwę przystanki (punktową) i teraz tworząc nowy punkt chciałbym aby nazwa powiatu i gminy była już przypisana w oknie określania atrybutów. Inaczej mówiąc aby Q gis pobrałem sobie dane z warstw które już są.
Czy jest możliwe takie rozwiązanie czy jednak trzeba ręcznie wszystko wpisywać i znać każdy atrybut w punkcie
Przy tworzeniu nowych obiektów to nie bardzo (co najwyżej można sobie utworzyć rozwijalne listy z nazwami gmin i powiatów aby nie wklepywać ręcznie), ale można aktualizować z automatu warstwę punktową o nazwy gmin i powiatów po narysowaniu. Zainstaluj wtyczkę "refFunctions", która dodaje nowe opcje do kalkulatora pól. Następnie otwórz kalkulator pól dla warstwy z przystankami, w kalkulatorze dodana została nowa grupa funkcji o nazwie "Reference", z niej wybierz "geomwithin", ta funkcja pozwala na pobranie atrybutów z warstwy docelowej przy spełnieniu warunku, że obiekt źródłowy zawiera się w docelowym. A więc chcąc punktom przypisać nazwę gminy, w której punkt się znajduje, składnia będzie wyglądać następująco:
geomwithin('nazwa warstwy z gminami','nazwa pola zawierającego nazwy gmin')
I analogicznie będzie dla powiatów.
Bardzo przydatna wtyczka.
Jak będzie wyglądało wyrażenie, w którym chciałbym pozyskać sumę pól wszystkich obiektów w 1 warstwie, zawartych w obiektach 2 warstwy?
Moje wyrażenie geomcontains('nazwawarstwy','nazwa atrybutu') zwraca tylko wartość jednego obiektu, podczas gdy zależy mi na sumie wartości zawartych w poligonie warstwy 2.
Dobrze rozumiem, że mając np. warstwę poligonową i punktową chciałbyś w tabeli atrybutów warstwy poligonowej uzyskać sumę wartości jakiegoś pola z obiektów punktowych zawierających się w danym poligonie? Jeżeli tak, to do tego masz inne narzędzie, w menu Wektor->Narzędzia zarządzania danymi i tam masz Połącz atrybuty poprzez lokalizację. Wybierasz warstwę poligonową do aktualizacji, warstwę punktową do złączenia, zaznaczasz, żeby pobrał podsumowanie przecinających się obiektów i dodatkowo wybierasz sobie czy chcesz sumę, średnią, medianę czy może wartości min i max. Wynikiem będzie nowa warstwa poligonowa na bazie istniejącej z dodanymi wybranymi statystykami z warstwy punktowej plus dodatkowa kolumna z liczbą punktów w poligonie.
Dzięki za cenną wskazówkę martel.
Chodziło mi o wyliczenie procenta zabudowy na działce więc generalnie Twój sposób zadziałał. Jedynie co nie do końca się zgadza to sytuacja w której budynek (poligon) znajduje się na powierzchniach dwóch działek (też poligony). Wtedy taki budynek jest liczony jednocześnie na dwóch działkach, zawyżając znacznie wartość % zabudowy.
To sprawdź jeszcze wtyczkę MMQGIS, jest tam narzędzie Spatial Join w menu Combine, zasada działania tego narzędzia jest zbliżona do wyżej opisywanego, jednak przy łączeniu atrybutów po lokalizacji oferuje również Proportional Sum.
(12-12-2014, 14:17)lukaschels napisał(a): [ -> ]Posłużę się przykładem aby opisać problem.
Mam warstwę z gminami oraz druga z powiatami obie mają atrybuty teryt i nazwę.
Utworzyłem kolejna warstwę przystanki (punktową) i teraz tworząc nowy punkt chciałbym aby nazwa powiatu i gminy była już przypisana w oknie określania atrybutów. Inaczej mówiąc aby Q gis pobrałem sobie dane z warstw które już są.
Czy jest możliwe takie rozwiązanie czy jednak trzeba ręcznie wszystko wpisywać i znać każdy atrybut w punkcie
Zobacz tutaj:
http://geoinformatyka.com.pl/automatyczn...j-warstwy/
Dzień dobry wszystkim.
Na wstępie chciałem się przywitać i ponieważ jest to mój pierwszy post tutaj to proszę o wyrozumiałość.
Potrzebuję właśnie takiego rozwiązania o jakim pisze @lukaschels.
Nadmienię, iż próbowałem skorzystać z rozwiązania jakim jest utworzenie TRIGGER-a , ale coś mi nie wychodzi.
Oczywiście bardzo dobrze problem można rozwiązać korzystając z wbudowanego algorytmu "Złącz atrybuty według lokalizacji" ale moje pytanie brzmi czy ta się coś takiego zrobić kalkulatorem pół? aby np. po wstawieniu punku uzupełni się samo pole gminy?
Możesz użyć funkcji overlay_within() jako domyślnej dla warstwy punktowej.
Np dla pola nazwa w wawstwie punktowej ustaw domyślne: overlay_within('warstwa_poli', nazwa)[0]
Gdzie:
'warstwa_poli' to nazwa tabeli poligonowej, z nią przecinasz nowo powstały punkt, musi być jako w "wąsach" - 'warstwa'
nazwa - to nazwa atrybutu z warstwy poligonów, który kopiujesz, pamiętaj, że w obu warstwach musi być ten sam typ, żeby się dało skopiować
[0] - ponieważ funkcja zwraca listę - [0] oznacza, że bieżesz z niej 1 element
Szczegółowy opis funkcji znajdziesz w QGIS, bo to ma więcej możliwości.
Super. Dziękuję bardzo za pomoc.
Właśnie nie o to mi chodziło.