83 lines
2.6 KiB
Bash
83 lines
2.6 KiB
Bash
#!/bin/bash
|
|
|
|
# overture_ingest.sh - Data pipeline for Overture Maps
|
|
# سكريبت سحب وحقن بيانات المباني والشوارع
|
|
|
|
set -e
|
|
|
|
# Configuration
|
|
DB_HOST="localhost"
|
|
DB_PORT="5432"
|
|
DB_USER="mapuser"
|
|
DB_NAME="mapdb"
|
|
DB_PASS="mappass"
|
|
|
|
# Jordan North BBOX (Amman, Irbid, Zarqa)
|
|
BBOX_JORDAN_NORTH="35.5,31.7,39.3,33.4"
|
|
# Jordan South BBOX (Aqaba, Karak, Ma'an)
|
|
BBOX_JORDAN_SOUTH="34.9,29.1,38.0,31.7"
|
|
# Syria BBOX (Full Country)
|
|
BBOX_SYRIA="35.7,32.3,42.4,37.3"
|
|
|
|
echo "🚀 Starting Overture Data Pipeline (Jordan & Syria)..."
|
|
|
|
echo "🧹 Clearing old Overture tables to prevent duplication..."
|
|
docker compose -f /home/hamzadoctor/app/docker-compose.yml exec -T db psql -U $DB_USER -d $DB_NAME -c "DROP TABLE IF EXISTS overture_place, overture_building, overture_segment;"
|
|
|
|
# 1. Setup Python Environment
|
|
# ... (rest of setup)
|
|
if [ ! -d "venv_overture" ]; then
|
|
echo "📦 Creating virtual environment..."
|
|
python3 -m venv venv_overture
|
|
fi
|
|
source venv_overture/bin/activate
|
|
pip install --upgrade pip
|
|
pip install overturemaps
|
|
|
|
# 2. Function to download and ingest
|
|
process_city() {
|
|
local city=$1
|
|
local bbox=$2
|
|
local theme=$3 # building, segment, or division_area
|
|
|
|
echo "🌍 Processing $city - Theme: $theme..."
|
|
output_file="overture_${city}_${theme}.geojson"
|
|
|
|
# Download
|
|
overturemaps download --bbox="$bbox" -f geojson --type="$theme" -o "$output_file"
|
|
|
|
# If division_area, we use our NestJS API to import for better control
|
|
if [ "$theme" == "division_area" ]; then
|
|
echo "📍 Administrative data downloaded: $output_file"
|
|
echo "💡 Use the NestJS /geocoding/import-boundaries endpoint to ingest this file."
|
|
return
|
|
fi
|
|
|
|
# Ingest into PostGIS for buildings and segments
|
|
echo "🔌 Injecting into PostGIS (Table: overture_${theme})..."
|
|
export PGPASSWORD=$DB_PASS
|
|
ogr2ogr -f "PostgreSQL" \
|
|
PG:"host=$DB_HOST port=$DB_PORT user=$DB_USER dbname=$DB_NAME password=$DB_PASS" \
|
|
"$output_file" \
|
|
-nln "overture_${theme}" \
|
|
-update -append \
|
|
-nlt PROMOTE_TO_MULTI \
|
|
-lco GEOMETRY_NAME=location
|
|
|
|
echo "✅ Finished $city $theme"
|
|
rm "$output_file"
|
|
}
|
|
|
|
# 3. Execution (Jordan & Syria)
|
|
# Jordan
|
|
process_city "jordan_north" "$BBOX_JORDAN_NORTH" "division_area"
|
|
process_city "jordan_north" "$BBOX_JORDAN_NORTH" "place"
|
|
process_city "jordan_south" "$BBOX_JORDAN_SOUTH" "division_area"
|
|
process_city "jordan_south" "$BBOX_JORDAN_SOUTH" "place"
|
|
|
|
# Syria
|
|
process_city "syria" "$BBOX_SYRIA" "division_area"
|
|
process_city "syria" "$BBOX_SYRIA" "place"
|
|
|
|
echo "🎉 Administrative boundary GeoJSONs ready for import!"
|