Automatyczne generowanie obrazów map o różnych stylach w QGIS? [Zamknięte]

9

Mam prostą mapę w QGIS, zawierającą tylko 1 warstwę, która składa się z ponad 10 funkcji. Teraz muszę (programowo) wygenerować około 200 różnych obrazów map JPEG tego samego obszaru. Każda mapa powinna mieć ten sam zasięg mapy i wszystkie widoczne cechy. Jednak funkcje powinny mieć inny zestaw kolorów na każdej wygenerowanej mapie. Szczegółowo mam plik CSV zawierający skategoryzowane kolory dla każdej funkcji (1 linia dla każdego obrazu, 1 kolumna i kolor na funkcję), mniej więcej tak:

"A","B","C","D","E","F" (header line, 6 columns in this file)
"#000000","#FF0000","#00FF00","#0000FF","#0000FF","#808080"
"#000000","#FF0000","#FF0000","#00FF00","#00FF00","#808080"
"#FF0000","#FF0000","#000000","#800080","#FFFFFF","#FFFF00"
...

Mój obecny plan polega na użyciu Perla lub podobnego do stworzenia 200 różnych plików QML na podstawie tego pliku CSV. Następnie planuję napisać skrypt w języku Python

  1. Pętla plików QML
  2. Otwórz każdy plik QML pojedynczo i zastosuj z niego styl warstwy
  3. Otwórz kompozytora map i zapisz plik obrazu rastrowego
  4. Zamknij kompozytora map i przejdź do następnego pliku QML

Proszę teraz o wszelkie uwagi dotyczące:

  • Czy można to zrobić w QGIS + Python?
  • Są lepsze sposoby na osiągnięcie mojego celu?
  • Wskazówki na temat istniejącego kodu źródłowego lub wtyczki, aby to osiągnąć?
Simo A.
źródło

Odpowiedzi:

21

Jest to możliwe w QGIS bez programowania w języku Python, ale będziesz potrzebować aktualnej migawki programistycznej QGIS 2.6, ponieważ opiera się ona na funkcjach dodanych od czasu wydania wersji 2.4. Oto wymagane kroki:

  • Ustaw warstwy mapy zgodnie z potrzebami (ignorując kolorowanie obiektów, które będą miały dynamiczne wypełnienia kolorami)

  • Utwórz nowego kompozytora wydruku. Dodaj element mapy do kompozycji i skonfiguruj jego zakres według potrzeb.

  • Zaimportuj plik CSV zawierający żądane kolory obiektów wyjściowych mapy

  • W kompozytorze wydruku ustaw zaimportowaną warstwę CSV jako „warstwę pokrycia atlasu” (poszukaj karty „Generowanie atlasu”). (Jeśli eksportowałeś teraz atlas, powinieneś otrzymać 200 kopii dokładnie tej samej mapy ...)

wprowadź opis zdjęcia tutaj

  • Następnie musisz skonfigurować swoje funkcje, aby były stylizowane na kolory wymienione w pliku CSV. Odbywa się to za pomocą przycisku „Właściwości danych” u dołu karty stylu warstwy:

wprowadź opis zdjęcia tutaj

  • Musisz zaznaczyć właściwość „Kolor”, a następnie kliknąć przycisk „E”, aby otworzyć edytor wyrażeń.

  • Wyrażenie będzie takie:

    attribute(  $atlasfeature , 'A' )
    

wprowadź opis zdjęcia tutaj

  • Zasadniczo to wyrażenie pobierze wartość przechowywaną w kolumnie „A” z bieżącej funkcji atlasu. Ponieważ w twoim przypadku ta wartość będzie kolorem (np. # FF0000), funkcja będzie stylizowana przy użyciu tego koloru. (To wyrażenie jest częścią, która opiera się na QGIS> 2.4 - funkcja „atrybutu” została dodana po wydaniu wersji 2.4).

  • Nadaj styl pozostałym funkcjom w podobny sposób, ale używając kolumn „B”, „C”, „D” itd., Stosownie do potrzeb

  • Po powrocie do kompozytora wydruku możesz włączyć podgląd atlasu (menu Atlas -> Podgląd atlasu) i przechodzić między wierszami z pliku CSV za pomocą strzałek na pasku narzędzi. Jeśli wszystko wygląda poprawnie, wyeksportuj atlas, korzystając z opcji w menu Atlas ... i gotowe! Nie wymaga programowania!

Przykłady wyników:

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

itd itd

ndawson
źródło