- 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
75 lines
3.1 KiB
Bash
Executable file
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"
|