Muszę wykonać dużą liczbę (setki) map rozmieszczenia gatunków. Mam plik kształtu, który zawiera rozkłady dla każdego gatunku, a dla każdego z nich chciałbym uzyskać mapę jako obraz (jpg, png lub inny), który zawiera nazwę danego gatunku, legendę (w celu rozróżnienia obszarów roczne dystrybucje, hodowla, hodowla itp.).
Chciałbym do tego użyć QGIS.
qgis
qgis-processing
map-book
Onesime
źródło
źródło
Odpowiedzi:
Miałem podobne wymaganie i stworzyłem wtyczkę QGIS do generowania map w oparciu o plik kształtu z lokacjami punktowymi dla wszystkich gatunków (przyjmuje on unikalną nazwę taksonu w tabeli atrybutów jako wspólny identyfikator). Moje wymagania nie były tak skomplikowane - nie potrzebowałem sezonowych informacji, tytułów ani legend, ale może to być przydatny punkt wyjścia. W przypadku bardziej złożonych aspektów konieczne będzie skorzystanie z narzędzia do tworzenia map. Więcej informacji na ten temat zawiera książka kucharska PyQGIS .
Podłącz
Wtyczka automatyzuje tworzenie map i pozwala konfigurować zakresy, rozdzielczość i inne aspekty. Stosuje ten sam styl do wydruku, co nakładka siatki. Obecnie działa tylko w wersji rozwojowej QGIS (1.9 lub nowszej).
Skrypt Sextante
Przed stworzeniem wtyczki opracowałem logikę za pomocą SEXTANTE. Ten skrypt użytkownika powinien również działać w wersji 1.8 (nie testowałem go). Plik stylu dystrybucji (.qml) to styl dystrybucji danych wyjściowych (ignoruje styl nakładki dystrybucji). Obecnie umieszcza mapy wyników w katalogu temp w oparciu o wartości domyślne systemu operacyjnego (/ tmp w systemie Linux i różne miejsca w systemie Windows - zdefiniowane przez zmienną środowiskową TEMP). Możesz jednak dość łatwo to zdefiniować w kodzie. Będziesz także musiał edytować zakres i rozdzielczość wyjściową w kodzie (i kolor tła, jeśli chcesz inny kolor dla morza).
źródło
selectbylocation
krok i dodać dodatkowyselectbyattribute
isaveselectedfeatures
krok dla każdego sezonu (zmianagrid_layer
celuall_localities
). Następnie załaduj więcej plików .qml i dodaj dołącz sezonowe pliki kształtów (pierwsza warstwa dołączana jako pierwsza). Jeśli nie masz pewności, jak to zrobić, prawdopodobnie mógłbym spróbować zmodyfikować powyższy skrypt, by mniej więcej działał.Pracowałem dziś nad tym trochę czasu. Wprowadziłem więc kilka zmian w twoim skrypcie. Nie muszę dodawać dodatkowego kroku selectbyattribute i saveselectedfeatures, ponieważ używam plików .qml, a pole Seasonal znajduje się w tym samym pliku kształtu. Poniżej możesz zobaczyć, co zrobiłem:
Jeśli masz jakieś uwagi lub porady, aby je poprawić, nie wahaj się.
Aby to poprawić, najlepiej byłoby, gdybyśmy wybrali zakres (na przykład w Europie), wykorzystują ten zakres, aby wybrać tylko gatunki objęte tym zakresem. To dlatego, że otrzymuję mapy dla wszystkich gatunków, nawet tych, które są na przykład poza Europą (więc mam wiele pustych map). Czy uważasz, że to możliwe?
Twoje zdrowie,
Onesime
źródło