Zapisywanie równań używanych w kalkulatorze polowym QGIS?


10

Próbuję obliczyć pewne wartości nowo obliczonego punktu. Więc używam kalkulatora pola do napisania równania w celu ustalenia wartości.

Czy istnieje sposób na zapisanie tego równania, aby po rozpoczęciu nowej pracy nie musiałem jej wpisywać?

Coś podobnego do sposobu zapisywania stylów i symboli dla szeregu punktów.


To dobra prośba o dodanie funkcji i dość łatwo byłoby ją dodać.
Nathan W

Odpowiedzi:


5

QGIS zapisuje ostatnie równanie zastosowane w kalkulatorze polowym pod zakładką „Ostatnie”, gdzie można go ponownie użyć, klikając dwukrotnie

img pola oblicz


Jest tak w przypadku, gdy OP nie użył później innych równań. Ale zniknie z czasem, gdy OP użyje nowych równań. RecentPojemnik jest tylko tymczasowo.
ahmadhanb

5

Możesz zapisać swoje równanie w nowej funkcji, a następnie wystarczy wywołać tę funkcję, aby ponownie zastosować obliczenia.

Otwórz kalkulator pola, kliknij Function Editorkartę, new filea następnie edytuj funkcję. Wybierz load. Pamiętaj, że okw tym momencie nie będą dostępne.

Wróć do Expressionkarty, wybierz customgrupę funkcji i kliknij dwukrotnie swoją funkcję. Wybierz pole do aktualizacji i naciśnij ok.


Jeśli chcesz używać tylko wartości pól i stałych, możesz edytować domyślną sygnaturę funkcji, która zaczyna się od value1. W moim przykładzie usunąłem go, ale możesz użyć tego pola do przekazania nowych argumentów.

Następnie możesz uzyskać dostęp do wartości pól funkcji za pomocą feature["fieldName"].... uważaj, aby wywołać tę funkcję tylko na warstwach zawierających te pola!

@qgsfunction(args='auto', group='Custom')
def funcTestCalc( feature, parent):
    return feature["fieldA"]+feature["fieldB"];

wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj


3

Oprócz rozwiązania @LaughU możesz włączyć dowolną operację kalkulatora pola do modelu graficznego, a następnie zapisać i uruchomić model. To wymaga jednak, aby nazwy kolumn były zawsze takie same.


2

Jeśli dodajesz nowy punkt do istniejącej warstwy i chcesz uruchomić takie same obliczenia dla tego punktu, jak dla wszystkich innych punktów, oto dwie przydatne funkcje:

Wirtualne pole

Pole wirtualne automatycznie oblicza wyrażenie dla każdego nowego atrybutu. Jest również regularnie aktualizowany. Na przykład w przypadku pola wirtualnego o nazwie „szerokość geograficzna” można użyć wyrażenia $y.

Plusy i minusy wirtualnych pól:

  • Ilekroć dodasz nowy punkt, automatycznie doda wynik wyrażenia do tego pola.
  • Automatycznie aktualizowany, ilekroć wyrażenie wprowadza zmiany. Jeśli więc przesuniesz punkt w przykładzie, wartość „szerokości geograficznej” zmieni się automatycznie.
  • Nie można edytować wartości pola wirtualnego.
  • Pola wirtualne są zapisywane jako część pliku projektu QGIS, a nie jako część pliku shapefile (lub jakiegokolwiek innego formatu, w którym znajduje się warstwa). Więc jeśli otworzysz warstwę w innym projekcie, nie będzie ona miała swoich wirtualnych pól.

Zwykłe pole z domyślną wartością pola

Możesz skonfigurować pole tak, aby miało wartość domyślną opartą na wyrażeniu. Po utworzeniu nowego punktu jego atrybut zostanie automatycznie wypełniony wartością domyślną. Możesz zmienić wartość atrybutu. To nie jest automatycznie aktualizowane. *

Plusy i minusy domyślnych wartości pól:

  • Ilekroć dodasz nowy punkt, automatycznie doda wynik wyrażenia do tego pola.
  • Nie jest automatycznie aktualizowany. W tym przykładzie oznacza to, że jeśli przeniesiesz istniejący punkt, jego wartość „szerokości geograficznej” nie zostanie zaktualizowana.
  • Możesz zmienić wartość tego pola.
  • Zapisane jako część pliku kształtu. Jeśli więc otworzysz warstwę w innym projekcie, będzie ona miała to pole w tabeli atrybutów.

* W QGIS 3.2 domyślne wartości pól można (opcjonalnie) ustawić na „zastosuj wartość domyślną podczas aktualizacji”. Dzięki tej opcji, jeśli przesuniesz punkt, w którym wartością domyślną jest $ybieżąca wartość, zostanie zastąpiona nową współrzędną y.


Myślę, że domyślną wartością pola można ustawić automatyczne aktualizowanie w QGIS 3.2.
she_weeds

@she_weeds Dziękujemy za zwrócenie na to uwagi. Zaktualizuję moją odpowiedź, aby uwzględnić te informacje.
csk
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.