Cześć,
to mój pierwszy wpis na forum, ale przejdę do rzeczy.
Robiąc projekt na studia potrzebuję zrobić wydruk mapy z QGIS zawierający MPZP.
MPZP posiadam w formacie WMS podgrany z geoportalu.
Podczas przeglądania mapy oraz podczas ustawiania widoku wydruku wszystko wydaje się okej, widać warstwę o której wydruk mi chodzi.
Forma wydruku A3, rozdzielczość 600 dpi
Natomiast po wygenerowaniu mapy, plik docelowy zawiera tylko niewielki fragment MPZP o który mi chodzi. Cała reszta mapy jest “pusta” i zawiera jedynie mapę podkładową OSM.
To co opisujesz jest bardzo typowe przy wydrukach z usług WMS i XYZ/OSM), szczególnie przy A3 + 600 dpi.
TL;DR
WMS MPZP jest obrazkiem z serwera i przy A3 + 600 dpi QGIS musi poprosić o gigantyczny raster, a serwer (nie QGIS) zwykle to ucina lub ogranicza, więc dostajesz pustkę poza małym fragmentem — rozwiązanie: zejdź do 96-150 dpi albo użyj wektora / usługi pod druk.
Limity serwerów WMS
Serwery WMS bardzo często mają narzucone ograniczenia typu:
maksymalna szerokość/wysokość obrazu (np. 2048×2048 lub 4096×4096 px),
maksymalny rozmiar odpowiedzi,
limity „żeby nie zabić serwera” (ochrona przed zbyt dużymi zapytaniami, także przed atakami przeciążeniowymi).
QGIS zresztą domyślnie wyświetla ostrzeżenie przy eksporcie z kompozytora, że zapytania do WMS mogą być zbyt duże.
A A3 w 600 dpi to jest gigantyczna paczka danych. Serwer wtedy potrafi:
zwrócić tylko fragment,
zwrócić pusty obraz,
przyciąć wynik,
albo zwrócić błąd (czasem QGIS go „przełknie” i zostaje pustka).
To idealnie pasuje do objawu: OSM się renderuje (bo to inny mechanizm / kafle), a WMS MPZP znika prawie cały, zostaje tylko kawałek.
Co zrobić (najprościej)?
Spróbuj zejść do eksportu do 150 dpi, a jeśli dalej są dziury – 96 dpi.
Z mojego doświadczenia ta gęstość w raczej wystarcza do czytelnych wydruków A3 (zwłaszcza na studia), a 600 dpi w A3 przy WMS to proszenie się o problemy.
Druga sprawa to tyciunie etykiety i symbolizacja WMS/OSM, czyli „rozdzielczość” vs „gęstość” (dpi)
Rozdzielczość to po prostu ile pikseli ma obraz (np. 4000×3000 px).
DPI/PPI (dots per inch) to jak gęsto te piksele mają być upakowane na wydruku – czyli ile „punktów” przypada na 1 cal papieru.
Czyli:
ten sam obraz (ta sama liczba pikseli) wydrukowany w 96 dpi będzie „większy” na papierze,
a w 600 dpi będzie „mniejszy”, bo piksele są upchnięte dużo gęściej.
Dlaczego to ma znaczenie w QGIS?
Monitory komputerowe standardowo działają mniej więcej jak 96 dpi (umownie). I takiej „gęstości” trzymają się typowe usługi kafelkowe i mapy podglądowe (OSM/XYZ), a bardzo często też WMS-y są „projektowane pod ekran”, nie pod druk w 600 dpi.
Gdy ustawiasz w kompozytorze eksport na 300 dpi albo 600 dpi:
wektorowe elementy (teksty, ikonki, linie z warstw wektorowych) są upakowane gęściej, ale QGIS mając dane wektorowe renderuje je gęściej, więc na wydruku wyglądają poprawnie.
ale WMS/OSM XYZ to raster (obrazek pobierany z serwera). QGIS musi poprosić serwer o obrazek o ogromnej liczbie pikseli, żeby to pasowało do A3 w 600 dpi, więc nie dość że danych jest więcej to są mniej czytelne, bo gęstsze.
Żeby uniknąć małych etykiet, masz 3 sensowne opcje:
Najlepiej: użyj danych wektorowych (np. pobranych jako plik/warstwa) zamiast WMS – wtedy wydruk jest „drukowalny” i ostry niezależnie od dpi. Ale to by trzeba było pobrać dane OSM i je symbolizować, to raczej dużo roboty.
Gotowe, kompatybilne z wysoka gęstością WMS: Użyj usług przystosowanych do druku (są takie podkłady, które mają lepsze wsparcie print, np. Omniscale ma wariant pod wydruki: Printing OpenStreetMap Data), choć pewnie trzeba za to coś $$$.
Możesz zostać tez przy bezpłatnym i szybkim sposobie, czyli natywnym WMS/XYZ: zmniejsz dpi eksportu (np. okolice „ekranowych” 96 dpi, ewentualnie eksperymentuj wyżej do 150). Obraz będzie mniej „drukarsko” ostry, czasem widać piksele, ale w praktyce zwykle jest czytelny.