62 lines
1.6 KiB
Bash
62 lines
1.6 KiB
Bash
#!/bin/sh
|
|
set -eu
|
|
|
|
PBF_URL="${PBF_URL:-https://download.geofabrik.de/europe/germany-latest.osm.pbf}"
|
|
PBF_FILE="${PBF_FILE:-/osm/region.osm.pbf}"
|
|
|
|
PGHOST="${PGHOST:-postgis}"
|
|
PGPORT="${PGPORT:-5432}"
|
|
PGDATABASE="${PGDATABASE:-planner}"
|
|
PGUSER="${PGUSER:-planner}"
|
|
PGPASSWORD="${PGPASSWORD:-change-me}"
|
|
export PGPASSWORD
|
|
|
|
UPDATE_INTERVAL_SECONDS="${UPDATE_INTERVAL_SECONDS:-86400}"
|
|
|
|
echo "OSM importer starting..."
|
|
|
|
if [ ! -f "$PBF_FILE" ]; then
|
|
echo "Downloading initial extract from $PBF_URL"
|
|
wget -O "$PBF_FILE" "$PBF_URL"
|
|
fi
|
|
|
|
if ! psql -h "$PGHOST" -p "$PGPORT" -U "$PGUSER" -d "$PGDATABASE" -tAc \
|
|
"SELECT 1 FROM pg_tables WHERE tablename = 'planet_osm_point'" | grep -q 1; then
|
|
echo "Initial osm2pgsql import..."
|
|
osm2pgsql \
|
|
--create \
|
|
--slim \
|
|
--database "$PGDATABASE" \
|
|
--host "$PGHOST" \
|
|
--port "$PGPORT" \
|
|
--username "$PGUSER" \
|
|
"$PBF_FILE"
|
|
else
|
|
echo "OSM tables already exist, skipping initial import."
|
|
fi
|
|
|
|
if ! psql -h "$PGHOST" -p "$PGPORT" -U "$PGUSER" -d "$PGDATABASE" -tAc \
|
|
"SELECT 1 FROM pg_tables WHERE tablename = 'planet_osm_replication_status'" | grep -q 1; then
|
|
echo "Initializing replication..."
|
|
osm2pgsql-replication init \
|
|
--database "$PGDATABASE" \
|
|
--host "$PGHOST" \
|
|
--port "$PGPORT" \
|
|
--username "$PGUSER" \
|
|
--osm-file "$PBF_FILE"
|
|
else
|
|
echo "Replication already initialized."
|
|
fi
|
|
|
|
while true; do
|
|
echo "Running replication update..."
|
|
osm2pgsql-replication update \
|
|
--database "$PGDATABASE" \
|
|
--host "$PGHOST" \
|
|
--port "$PGPORT" \
|
|
--username "$PGUSER"
|
|
|
|
echo "Sleeping for $UPDATE_INTERVAL_SECONDS seconds..."
|
|
sleep "$UPDATE_INTERVAL_SECONDS"
|
|
done
|