rd13_tile_server/scripts/download-data.sh

77 lines
3.1 KiB
Bash
Raw Permalink Normal View History

#!/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"