Mam projekt QGIS z warstwami, oparty na zapytaniach PostGIS SQL, które używają bieżącej daty. Ponieważ dane w bazie danych ulegają zmianie, zapytania te zwracają różne dane każdego nowego dnia.
Czy można dynamicznie zmieniać nazwę warstwy w panelu drzewa warstw, aby reprezentowała bieżącą datę? (tzn. jak nazwa warstwy Traffic on 24.01.2015
, która zmienia się każdego nowego dnia). Dane do podpisu należy pobrać z atrybutu dowolnej cechy w warstwie - wszystkie mają tę samą wartość pola traffic_date
.
qgis
pyqgis
layers
query-layer
dynamic-layer
mofoyoda
źródło
źródło
Odpowiedzi:
Jeśli dobrze zrozumiałem, odpowiedź brzmi tak, QGIS obsługuje dynamiczne nazwy warstw.
Będziesz musiał napisać makro Python, które będzie uruchamiane przy każdym otwarciu projektu. Byłby to przepływ pracy:
Przejdź do
QGIS->Project->Project Properties
i zamieńopenProject()
na następujący kod Python:Uwaga 1: Przetestowałem to na plikach kształtów, więc pole, z którego biorę daty, jest
traffic_da
spowodowane tym, że pliki kształtów nie obsługują więcej liter w nazwach pól. Dostosuj to w kodzie, aby działał na twoich warstwach.Uwaga 2: W zależności od konfiguracji projektu należy dodać kod weryfikacyjny, aby działał tylko na wybranych warstwach. Na przykład, jeśli uruchomisz kod na warstwach rastrowych, na pewno pojawią się błędy. Jeśli potrzebujesz pomocy, otwórz nowe pytanie, mogę ci pomóc.
Upewnij się, że włączasz makra w swoim projekcie, w ten sposób:
Settings->Options->General->Enable macros: Always
Załaduj swoje warstwy do projektu.
Zapisz swój projekt.
Za każdym razem, gdy otworzysz projekt od tego momentu, nazwy warstw będą dynamiczne, data będzie pobierana z pola
traffic_date
w tabeli atrybutów każdej warstwy.Po pierwszym otwarciu projektu dynamicznie generowane były moje nazwy warstw:
Myślę, że to może pomóc ci zacząć. Powiedz mi, jeśli napotkasz nieoczywiste problemy.
źródło
on
i usunąć stamtąd do końca, aby zaoszczędzić na użyciu wyrażenia regularnego.