151 lines
4.9 KiB
Bash
151 lines
4.9 KiB
Bash
|
|
#!/usr/bin/env bash
|
|||
|
|
# =============================================================================
|
|||
|
|
# download-data.sh – Kartendaten für den rd13 Tile Server herunterladen
|
|||
|
|
#
|
|||
|
|
# Verwendung:
|
|||
|
|
# ./scripts/download-data.sh [region]
|
|||
|
|
#
|
|||
|
|
# Regionen:
|
|||
|
|
# europe-dach – Deutschland, Österreich, Schweiz (Standard)
|
|||
|
|
# germany – nur Deutschland
|
|||
|
|
# planet – gesamter Planet (groß!)
|
|||
|
|
# satellite – Sentinel-2 cloudless Satellitenkacheln (niedrig/mittel Zoom)
|
|||
|
|
# =============================================================================
|
|||
|
|
set -euo pipefail
|
|||
|
|
|
|||
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|||
|
|
DATA_DIR="$SCRIPT_DIR/../data"
|
|||
|
|
mkdir -p "$DATA_DIR"
|
|||
|
|
|
|||
|
|
REGION="${1:-europe-dach}"
|
|||
|
|
|
|||
|
|
# ---- OSM-Vektorkacheln via Planetiler ------------------------------------
|
|||
|
|
download_osm() {
|
|||
|
|
local region="$1"
|
|||
|
|
local jar="$DATA_DIR/planetiler.jar"
|
|||
|
|
|
|||
|
|
# Planetiler herunterladen falls nicht vorhanden
|
|||
|
|
if [[ ! -f "$jar" ]]; then
|
|||
|
|
echo "[OSM] Lade Planetiler herunter..."
|
|||
|
|
curl -L -o "$jar" \
|
|||
|
|
"https://github.com/onthegomap/planetiler/releases/latest/download/planetiler.jar"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
case "$region" in
|
|||
|
|
germany)
|
|||
|
|
AREA="germany"
|
|||
|
|
DOWNLOAD="https://download.geofabrik.de/europe/germany-latest.osm.pbf"
|
|||
|
|
;;
|
|||
|
|
europe-dach)
|
|||
|
|
# DACH als Extrakt
|
|||
|
|
AREA="dach"
|
|||
|
|
DOWNLOAD="https://download.geofabrik.de/europe/dach-latest.osm.pbf"
|
|||
|
|
;;
|
|||
|
|
planet)
|
|||
|
|
AREA="planet"
|
|||
|
|
DOWNLOAD="" # Planetiler lädt selbst herunter
|
|||
|
|
;;
|
|||
|
|
*)
|
|||
|
|
echo "Unbekannte Region: $region"; exit 1 ;;
|
|||
|
|
esac
|
|||
|
|
|
|||
|
|
echo "[OSM] Erzeuge osm.mbtiles für Region: $region"
|
|||
|
|
if [[ "$region" == "planet" ]]; then
|
|||
|
|
java -Xmx8g -jar "$jar" \
|
|||
|
|
--download \
|
|||
|
|
--output="$DATA_DIR/osm.mbtiles"
|
|||
|
|
else
|
|||
|
|
# OSM-PBF herunterladen
|
|||
|
|
local pbf="$DATA_DIR/${AREA}.osm.pbf"
|
|||
|
|
if [[ ! -f "$pbf" ]]; then
|
|||
|
|
echo "[OSM] Lade PBF-Datei: $DOWNLOAD"
|
|||
|
|
curl -L -o "$pbf" "$DOWNLOAD"
|
|||
|
|
fi
|
|||
|
|
java -Xmx4g -jar "$jar" \
|
|||
|
|
--area="$AREA" \
|
|||
|
|
--osm-path="$pbf" \
|
|||
|
|
--output="$DATA_DIR/osm.mbtiles"
|
|||
|
|
fi
|
|||
|
|
echo "[OSM] Fertig: $DATA_DIR/osm.mbtiles"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# ---- Satellit: Sentinel-2 cloudless (OpenMapTiles / maptiler) ------------
|
|||
|
|
download_satellite() {
|
|||
|
|
echo ""
|
|||
|
|
echo "[Satellit] Hinweis:"
|
|||
|
|
echo " Kostenlose Satelliten-MBTiles sind nur für niedrige Zoomstufen (0-10)"
|
|||
|
|
echo " verfügbar. Für höhere Auflösung gibt es zwei Optionen:"
|
|||
|
|
echo ""
|
|||
|
|
echo " 1) NASA GIBS (kostenlos, TMS/WMTS, kein Download nötig):"
|
|||
|
|
echo " https://gibs.earthdata.nasa.gov/wmts/"
|
|||
|
|
echo " → Einfach in config.json als 'tilejson'-Source eintragen."
|
|||
|
|
echo ""
|
|||
|
|
echo " 2) Sentinel-2 cloudless (maptiler.com, kostenloser Account für self-hosted):"
|
|||
|
|
echo " https://www.maptiler.com/data/satellite-mediumres/"
|
|||
|
|
echo " → MBTiles manuell herunterladen und als data/satellite.mbtiles ablegen."
|
|||
|
|
echo ""
|
|||
|
|
echo " 3) Eigene GeoTIFFs → MBTiles mit gdal2tiles:"
|
|||
|
|
echo " gdal2tiles.py --zoom=0-14 input.tif data/satellite/"
|
|||
|
|
echo " mb-util data/satellite/ data/satellite.mbtiles"
|
|||
|
|
echo ""
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# ---- Fonts & Sprites für OSM Bright Style --------------------------------
|
|||
|
|
download_assets() {
|
|||
|
|
local fonts_dir="$DATA_DIR/fonts"
|
|||
|
|
local sprites_dir="$DATA_DIR/sprites"
|
|||
|
|
local styles_dir="$DATA_DIR/styles"
|
|||
|
|
|
|||
|
|
mkdir -p "$fonts_dir" "$sprites_dir" "$styles_dir"
|
|||
|
|
|
|||
|
|
if [[ ! -d "$fonts_dir/Open Sans Regular" ]]; then
|
|||
|
|
echo "[Assets] Lade OpenMapTiles Fonts herunter..."
|
|||
|
|
TMP=$(mktemp -d)
|
|||
|
|
curl -L -o "$TMP/fonts.zip" \
|
|||
|
|
"https://github.com/openmaptiles/fonts/releases/latest/download/v3.0.zip" \
|
|||
|
|
|| { echo "[Assets] Font-Download fehlgeschlagen – bitte manuell von"; \
|
|||
|
|
echo " https://github.com/openmaptiles/fonts/releases herunterladen"; \
|
|||
|
|
rm -rf "$TMP"; }
|
|||
|
|
if [[ -f "$TMP/fonts.zip" ]]; then
|
|||
|
|
unzip -q "$TMP/fonts.zip" -d "$fonts_dir"
|
|||
|
|
rm -rf "$TMP"
|
|||
|
|
echo "[Assets] Fonts installiert."
|
|||
|
|
fi
|
|||
|
|
else
|
|||
|
|
echo "[Assets] Fonts bereits vorhanden."
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
if [[ ! -d "$styles_dir/osm-bright" ]]; then
|
|||
|
|
echo "[Assets] Lade OSM Bright GL Style herunter..."
|
|||
|
|
TMP=$(mktemp -d)
|
|||
|
|
curl -L -o "$TMP/style.zip" \
|
|||
|
|
"https://github.com/openmaptiles/osm-bright-gl-style/releases/latest/download/v1.9.zip" \
|
|||
|
|
|| { echo "[Assets] Style-Download fehlgeschlagen."; rm -rf "$TMP"; }
|
|||
|
|
if [[ -f "$TMP/style.zip" ]]; then
|
|||
|
|
unzip -q "$TMP/style.zip" -d "$TMP/extracted"
|
|||
|
|
mv "$TMP/extracted/"*/ "$styles_dir/osm-bright"
|
|||
|
|
rm -rf "$TMP"
|
|||
|
|
echo "[Assets] OSM Bright Style installiert."
|
|||
|
|
fi
|
|||
|
|
else
|
|||
|
|
echo "[Assets] OSM Bright Style bereits vorhanden."
|
|||
|
|
fi
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# ---- Hauptlogik ----------------------------------------------------------
|
|||
|
|
echo "=== rd13 Tile Server – Daten-Download ==="
|
|||
|
|
echo "Region: $REGION"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
if [[ "$REGION" == "satellite" ]]; then
|
|||
|
|
download_satellite
|
|||
|
|
else
|
|||
|
|
download_osm "$REGION"
|
|||
|
|
download_assets
|
|||
|
|
download_satellite
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo ""
|
|||
|
|
echo "=== Abgeschlossen ==="
|
|||
|
|
echo "Starte den Server mit: docker compose up -d"
|