Files
Nominatim/scripts/prepare-pbf.sh
T

59 lines
1.4 KiB
Bash

#!/usr/bin/env bash
# Prepare a local .osm.pbf for Nominatim import (compose first boot).
#
# Usage:
# ./scripts/prepare-pbf.sh /path/to/region.osm.pbf
# ./scripts/prepare-pbf.sh /path/to/OSRM/data/us-latest.osm.pbf --symlink
#
# After this, set NOMINATIM_PBF_FILE in .env (default region.osm.pbf) and:
# docker compose up -d
#
# Shares the PBF with OSRM only — never copy/use .osrm* graph files here.
set -euo pipefail
SYMLINK=0
ARGS=()
for arg in "$@"; do
case "$arg" in
--symlink|-s) SYMLINK=1 ;;
-h|--help)
echo "usage: $0 [--symlink] <path-to-osm.pbf>" >&2
exit 0
;;
*) ARGS+=("$arg") ;;
esac
done
if [[ ${#ARGS[@]} -lt 1 ]]; then
echo "usage: $0 [--symlink] <path-to-osm.pbf>" >&2
exit 64
fi
SRC="${ARGS[0]}"
if [[ ! -f "$SRC" ]]; then
echo "pbf file not found: $SRC" >&2
exit 66
fi
# Resolve absolute path.
SRC="$(cd "$(dirname "$SRC")" && pwd)/$(basename "$SRC")"
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
DATASET="${NOMINATIM_PBF_FILE:-region.osm.pbf}"
DEST="${ROOT}/data/${DATASET}"
mkdir -p "${ROOT}/data"
if [[ "$SYMLINK" -eq 1 ]]; then
ln -sfn "$SRC" "$DEST"
echo "symlinked $DEST -> $SRC"
else
cp -f "$SRC" "$DEST"
echo "copied $SRC -> $DEST"
fi
echo
echo "next: cp .env.example .env # set NOMINATIM_PASSWORD"
echo " docker compose up -d # first boot imports (slow)"
echo "smoke: curl -sG 'http://localhost:8089/search' --data-urlencode 'q=Akron, OH' -d 'format=json' -d 'limit=1'"