59 lines
1.4 KiB
Bash
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'"
|