#!/usr/bin/env bash # ============================================================================= # download-data.sh -- OSM Planet + Satellit herunterladen # # Verwendung: # ./scripts/download-data.sh [osm|satellite|all] # # Optionen: # osm -- OSM Planet via Planetiler (min. 8 GB RAM, mehrere Std.) # satellite -- Sentinel-2 cloudless Zoom 0-10 (ca. 10 GB, ca. 3-8 Std.) # all -- beides sequentiell (Standard) # # Umgebungsvariablen: # PLANETILER_RAM -- Java Heap fuer Planetiler (Standard: 8g) # SAT_MAX_ZOOM -- Max Zoom Satellit (Standard: 10) # SAT_THREADS -- Parallele Downloads Satellit (Standard: 8) # ============================================================================= set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" DATA_DIR="$(realpath "$SCRIPT_DIR/../data")" LOG_DIR="$(realpath "$SCRIPT_DIR/../logs")" mkdir -p "$DATA_DIR" "$LOG_DIR" MODE="${1:-all}" PLANETILER_RAM="${PLANETILER_RAM:-8g}" download_osm() { local out="$DATA_DIR/osm.mbtiles" echo "[OSM] Ziel: $out RAM: -Xmx${PLANETILER_RAM}" echo "[OSM] Starte Planetiler via Docker..." docker run --rm \ -v "$DATA_DIR:/data" \ -e JAVA_TOOL_OPTIONS="-Xmx${PLANETILER_RAM}" \ ghcr.io/onthegomap/planetiler:latest \ --download --area=planet --output=/data/osm.mbtiles --force \ 2>&1 | tee "$LOG_DIR/osm-planetiler.log" echo "[OSM] Fertig: $out" } download_satellite() { local out="$DATA_DIR/satellite.mbtiles" echo "[Sat] Ziel: $out MaxZoom: ${SAT_MAX_ZOOM:-10} Threads: ${SAT_THREADS:-8}" python3 "$SCRIPT_DIR/download-satellite.py" "$out" 2>&1 | tee "$LOG_DIR/satellite.log" echo "[Sat] Fertig: $out" } download_assets() { local fonts_dir="$DATA_DIR/fonts" local styles_dir="$DATA_DIR/styles" mkdir -p "$fonts_dir" "$styles_dir" if [[ ! "$(ls -A "$fonts_dir" 2>/dev/null)" ]]; then echo "[Assets] Lade Fonts..." TMP=$(mktemp -d) curl -L --progress-bar -o "$TMP/fonts.zip" "https://github.com/openmaptiles/fonts/releases/download/v2.0/v2.0.zip" && unzip -q "$TMP/fonts.zip" -d "$fonts_dir" && echo "[Assets] Fonts installiert." || echo "[Assets] WARNUNG: Font-Download fehlgeschlagen." rm -rf "$TMP" fi if [[ ! -d "$styles_dir/osm-bright" ]]; then echo "[Assets] Lade OSM Bright Style..." TMP=$(mktemp -d) curl -L --progress-bar -o "$TMP/style.zip" "https://github.com/openmaptiles/osm-bright-gl-style/releases/download/v1.11/v1.11.zip" && unzip -q "$TMP/style.zip" -d "$TMP/x" && mv "$TMP/x/"*/ "$styles_dir/osm-bright" && echo "[Assets] Style installiert." || echo "[Assets] WARNUNG: Style-Download fehlgeschlagen." rm -rf "$TMP" fi } echo "=== rd13 Tile Server -- Daten-Download === Modus: $MODE Start: $(date)" case "$MODE" in osm) download_assets; download_osm ;; satellite) download_satellite ;; all) download_assets; download_osm; download_satellite ;; *) echo "Unbekannter Modus: $MODE (osm|satellite|all)"; exit 1 ;; esac echo "=== Abgeschlossen: $(date) ===" echo " docker compose up -d && curl http://localhost:9982/catalog"