Wykorzystanie wyrażeń warunkowych w projekcie ankietowym może być świetnym sposobem na zwiększenie dokładności gromadzenia danych w terenie. QGIS mogą stanowić potężne narzędzie służące poprawie użyteczności ankiety podczas pracy w terenie. Ze względu na elastyczność QGIS istnieje wiele sposobów wykorzystania tego narzędzia, ale przedstawimy kilka przykładów, które pomogą Ci rozpocząć pracę.
Przykład 1 – Ograniczanie pól za pomocą wyrażeń
Czasami skomplikowane formularze ankietowe mogą wydawać się przeładowane lub mylące dla ankieterów, którzy wprowadzają dane na ekranach mniejszych urządzeń. Jednym ze sposobów na uproszczenie formularzy jest użycie wyrażeń, dzięki którym wyświetlane są tylko te pola, do których ankieter potrzebuje dostępu.
Na przykład możesz przeprowadzać ankietę dotyczącą nieruchomości, w której konieczne jest wypełnienie określonych pól w zależności od rodzaju nieruchomości. Zmuszanie użytkownika do przewijania każdej sekcji formularza w poszukiwaniu niezbędnych pól może być dla ankieterów mylące i czasochłonne. Zamiast tego możesz skorzystać z wyrażeń warunkowych, aby wyświetlać tylko te pola, które są wymagane w zależności od rodzaju ankietowanej nieruchomości.
Zacznijmy od prostego przykładowego projektu dotyczącego badania nieruchomości. Dysponujemy mapą tła oraz warstwą punktową o nazwie „survey”, służącą do rejestrowania informacji o każdej nieruchomości. Tabela warstwy „survey” wygląda następująco:
Jednym ze sposobów, dzięki którym ankieter będzie mógł łatwiej korzystać z tego formularza, jest uporządkowanie pól w zakładkach za pomocą narzędzia Drag and Drop Designer. Możemy podzielić naszą ankietę na trzy zakładki: „Nieruchomość”, „Biznes” i „Mieszkaniowe”, umieszczając w pierwszej zakładce pole na dane ankietera:

Teraz, gdy pola są już uporządkowane, możemy pójść o krok dalej i sprawić, by formularz jeszcze lepiej reagował na działania użytkownika. Możemy użyć wyrażenia, aby ukryć zakładki „Biznesowe” i „Mieszkaniowe” do momentu, aż użytkownik wybierze rodzaj nieruchomości. W tym celu należy zaznaczyć zakładkę i w polu „Widoczność kontrolki według wyrażenia” ustawić wyrażenie, które spowoduje wyświetlenie lub ukrycie zakładki.
W zakładce „Biznes” należy użyć:
„Typ” = 'biznes'A w zakładce „Mieszkaniowe” należy wpisać:
„Typ” = 'mieszkaniowy'
Teraz, gdy użytkownik wprowadza dane w polu, widzi tylko zakładkę „Właściwości”, dopóki nie wybierze opcji w polu typu. Warto również ustawić ograniczenie „Not null” w polu typu, aby użytkownik pamiętał o wpisaniu wartości właściwości – w przeciwnym razie może nie wiedzieć, że należy wprowadzić dodatkowe informacje!
*wstaw film*
Przykład 2 – Ograniczanie edycji za pomocą wyrażeń
Teraz, gdy ulepszyliśmy interfejs ankiety o kilka wyrażeń, możemy wypróbować bardziej zaawansowaną metodę ograniczania uprawnień do edycji elementów w naszym projekcie. W naszym przykładzie chcemy, aby tylko ankieterzy mogli edytować wpisy utworzone przez ich zespół ankietowy lub mu przypisane.
Mamy już pole służące do zapisywania nazwy użytkownika geodety oraz przypisanej mu ekipy pomiarowej. Uzupełnimy to o tabelę nieprzestrzenną zawierającą listę nazw użytkowników poszczególnych geodetów wraz z przypisanymi im ekipami, która wygląda następująco:
W naszej tabeli ankietowej pole „surveyor” jest ustawione jako nieedytowalne i wykorzystuje wyrażenie wartości domyślnej @mm_username, a ponadto pole to ma włączoną opcję stosowania wartości domyślnej przy aktualizacji.

Następnie konfigurujemy pole „survey_team ” jako widżet tekstowy z następującym wyrażeniem wartości domyślnej:
atrybut(get_feature('surveyors','nazwa_użytkownika',@mm_username), 'team')W tym wyrażeniu, analizując je od środka na zewnątrz, używamy funkcji get_feature(), aby pobrać obiekt z tabeli surveyors, którego nazwa użytkownika odpowiada @mm_username bieżącego użytkownika. Następnie używamy funkcji attribute(), aby zwrócić wartość pola team dla tego obiektu. Ta wartość domyślna jest stosowana tylko raz, podczas tworzenia obiektu. Wyłączamy edycję tego pola, ale można też użyć wyrażenia, aby zezwolić na edycję obiektu wyłącznie użytkownikom z uprawnieniami administratora, stosując wyrażenie typu (zastąp tekst w nawiasach nazwami użytkowników z uprawnieniami administratora):
@mm_username IN ('list', 'of', 'admin', „nazwy użytkowników”)
W tym przykładzie dodajemy również do warstwy ankiety pole typu logicznego o nazwie „can_edit”. Skonfigurujemy to pole za pomocą ograniczenia wyrażeniowego, które uniemożliwi użytkownikom zapisywanie zmian w obiekcie, jeśli nie należą oni do zespołu ankietowego, który utworzył ten obiekt lub do którego został on przypisany.
Najpierw ustawimy domyślną wartość pola ` can_edit ` za pomocą następującego wyrażenia:
attribute(get_feature('surveyors', 'username', @mm_username),'team') ILIKE "survey_team"
LUB
@mm_username IN ('zastąp to','admin','users')Powyższe wyrażenie wykorzystuje tę samą funkcję, co w przypadku wartości domyślnej pola ` survey_team`, aby pobrać informacje o przynależności bieżącego użytkownika do zespołu i sprawdza, czy zgadzają się one z wartością zespołu ankietowego przypisanego do danej funkcji. Instrukcja po operatorze OR sprawdza, czy użytkownik jest administratorem. Jeśli bieżący użytkownik jest administratorem lub członkiem zespołu powiązanego z obiektem, wartość pola zostanie ustawiona na true, a jeśli nie należy do żadnej z tych grup, będzie to false. Upewnij się, że wartość domyślna jest ustawiona tak, aby była stosowana przy aktualizacji.
Następnie utworzymy ograniczenie oparte na wyrażeniu, tak aby element mógł zostać zapisany tylko wtedy, gdy wartość pola ` can_edit ` wynosi `true`:
„can_edit” = trueNa koniec pamiętaj, aby wyłączyć edycję tego pola. Twoje ustawienia powinny wyglądać mniej więcej tak:

Jak widać na naszym przykładzie, użytkownik należący do czerwonego zespołu ankietowego może edytować wyłącznie elementy przypisane do tego zespołu:
*wstaw film 2*
Wiele innych zastosowań ustawień warunkowych
To tylko kilka przykładów tego, jak można wykorzystać warunki w projekcie, aby usprawnić przebieg pracy i zapewnić wysoką jakość danych. Zastosowanie warunków otwiera przed projektem szersze możliwości dostosowywania, takie jak symbolika warunkowa, ograniczenia czasowe, automatyczne wypełnianie pól na podstawie określonych wartości i wiele innych. Wykorzystanie pełnego potencjału programu QGIS Ci w pełni wykorzystać możliwości Mergin Maps !