Tisknutí nástěnné mapy Stockholmu
2025-10-31
Krátké shrnutí projektu mapa a fotodokumentace
Každý semestr dostáváme od univerzity kredity na tisk. Jelikož jsem tyto kredity nikdy nevyužíval, řekl jsem si, že bych měl něco vymyslet, a tak vznikl nápad vytisknout mapu Stockholmu, která bude dostatečně podrobná, aby obsahovala valnou většinu názvů ulic a současně pokrývala celé centrum Stockholmu a okolí.
Prvním úkolem je najít vhodný nástroj pro export potřebné mapy. Zde jsem využil Printmaps UI, které umožňují pohodlné vygenerování map v běžných měřítkách na základě OpenStreetMap podkladů s velikostí až 3 na 2,5 metru.
Vhodným rozlišením se ukázalo 1:10 000. Při generování PNG souboru s maximálními rozměry docházelo k rozbití mapy, a tak jsem nakonec vygeneroval mapu v rozměrech 2750 x 2500 mm s centrem N59.34, E 18.1.
Dalším krokem bylo vygenerování jednotlivých PDF ve formátu A3, tak aby je mohl pohodlně vytisknout na univerzitní tiskárně. Pro snazší orientaci jsem jednotlivé sloupce označil písmeny abecedy a řádky čísly, tedy A1 byl levý horní roh a G9 byl pravý dolní roh.
Závěrečným úkolem bylo určení, jaký rozměr v pixelech odpovídá stránce A3. Pro
účely zjištění jsem vygeneroval mapu o rozměrech jednoho papíru A3 a pomocí
magick identify došel k závěru, že jedna A3 má 4960 x 3507 jednotek.
Následně jsem spustil skript níže, abych vygeneroval jednotlivé PDF soubory. Chtěl jsem mít mezi obrazy trochu překryv, aby nevznikala prázdná místa.
#!/bin/bash
w_chars=(A B C D E F G H)
h_iter=9
# 12 je cca 1mm
w_overlapp=120
h_overlapp=120
# Rozměry výsledného obrázku
w_size=4960
h_size=3507
# Posun pro každou další část
w_skip=$((w_size - w_overlapp))
h_skip=$((h_size - h_overlapp))
w_offset=0
h_offset=0
for ((h=1; h<$((h_iter + 1)); h++))
do
w_offset=0
for w in "${w_chars[@]}"
do
echo "Coordinates: (Width: $w, Height: $h)"
magick stockholm.png -crop ${w_size}x${h_size}+${w_offset}+${h_offset} parts-png/$w$h.jpg
magick parts-png/$w$h.jpg -rotate 90 -page A3 parts-pdf/$w$h.pdf
w_offset=$((w_offset + w_skip))
done
h_offset=$((h_offset + h_skip))
done