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
rss