Porada techniczna – wykorzystanie warunków do ulepszenia Mergin Maps w Mergin Maps
Ryan Aherin
Ryan Aherin
26 marca 2026 r.
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:
Tabela 1
Pole
Typ
Opis
fid
INT
klucz podstawowy
uuid
tekst
Unikalny identyfikator
geodeta
tekst
Pole do wpisania nazwy użytkownika geodety
zespół badawczy
tekst
Wpisać zespół ankietowy przydzielony do danej nieruchomości
utworzono
data/godzina
Sygnatura czasowa wskazująca moment utworzenia rekordu
ostatnia aktualizacja
data/godzina
Data i godzina ostatniej aktualizacji funkcji
nr_ulicy
INT
Numer domu
nazwa_ulicy
tekst
Nazwa ulicy
kod pocztowy
tekst
Kod pocztowy
podłogi
INT
Liczba pięter
typ
tekst
Rodzaj nieruchomości (komercyjna lub mieszkalna)
nazwa_autobusu
tekst
Nazwa firmy
typ_autobusu
tekst
Rodzaj działalności
typ_zasobów
tekst
Rodzaj domu (parterowy, szeregowy, domek letniskowy itp.)
parking
tekst
Rodzaj parkingu dostępnego przy domu (na ulicy, na podjeździe, w garażu)
res_occupied
Wartość logiczna
Czy mieszkanie jest zamieszkane?
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!
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:
Tabela 1
fid
INT
Klucz podstawowy
identyfikator geodety
tekst
UUID dla rekordu geodety
nazwa użytkownika
tekst
Jako wartość domyślną ustawiono @mm_username, aby zapisać nazwę użytkownika ankietera
zespół
tekst
Zespół przydzielony geodecie; w naszym przykładzie są trzy zespoły: czerwony, niebieski i zielony
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:
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:
atrybut(get_feature('surveyors', 'nazwa_użytkownika', @mm_username),'team') ILIKE "survey_team"LUB
@mm_nazwa_użytkownika IN ('zastąp to przez','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” = true
Na 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. Zobacz przykład tutaj.
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 !
Klikając "Akceptuj wszystkie pliki cookie", wyrażasz zgodę na przechowywanie plików cookie na Twoim urządzeniu w celu usprawnienia nawigacji w witrynie, analizy korzystania z witryny i pomocy w naszych działaniach marketingowych. Więcej informacji można znaleźć w naszej Polityce plików cookie. Odrzuć pliki cookie tutaj.