rd13_tile_server/scripts/download-data.sh
Conrad Schulz 6f8c9258b8 feat: global data download scripts + port 9982
- scripts/download-data.sh: OSM planet (Planetiler) + satellite orchestrator
- scripts/download-satellite.py: Sentinel-2 cloudless zoom 0-10 -> MBTiles
  resumable, 8 threads parallel, direct SQLite WAL write
- docker-compose: port 9982:3000
2026-05-31 06:50:56 +00:00

75 lines
3.1 KiB
Bash
Executable file

#!/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 jar="$DATA_DIR/planetiler.jar"
local out="$DATA_DIR/osm.mbtiles"
echo "[OSM] Ziel: $out RAM: -Xmx${PLANETILER_RAM}"
if [[ ! -f "$jar" ]]; then
echo "[OSM] Lade Planetiler JAR..."
curl -L --progress-bar -o "$jar" "https://github.com/onthegomap/planetiler/releases/latest/download/planetiler.jar"
fi
java "-Xmx${PLANETILER_RAM}" -jar "$jar" --download --output="$out" --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/latest/download/v3.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/latest/download/v1.9.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"