68 lines
1.7 KiB
Bash
Executable File
68 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
if ! command -v osmium >/dev/null 2>&1; then
|
|
echo "osmium is required for filtering OSM PBF files." >&2
|
|
exit 1
|
|
fi
|
|
|
|
if ! command -v psql >/dev/null 2>&1; then
|
|
echo "psql is required for preparing the PostGIS schema." >&2
|
|
exit 1
|
|
fi
|
|
|
|
if ! command -v node >/dev/null 2>&1; then
|
|
echo "node is required for loading filtered OSM features into PostGIS." >&2
|
|
exit 1
|
|
fi
|
|
|
|
PBF_PATH="${1:-}"
|
|
DATABASE_URL="${DATABASE_URL:-postgres://seacompass:seacompass@localhost:55432/seacompass}"
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
|
|
if [[ -z "$PBF_PATH" || ! -f "$PBF_PATH" ]]; then
|
|
echo "Usage: DATABASE_URL=postgres://... ./scripts/import-geofabrik.sh /path/to/europe-latest.osm.pbf" >&2
|
|
exit 1
|
|
fi
|
|
|
|
WORKDIR="$(mktemp -d)"
|
|
trap 'rm -rf "$WORKDIR"' EXIT
|
|
|
|
osmium tags-filter "$PBF_PATH" \
|
|
nwr/seamark:type \
|
|
nwr/lock=yes \
|
|
nwr/water=lock \
|
|
nwr/waterway=lock \
|
|
nwr/waterway=lock_gate \
|
|
nwr/obstacle=lock \
|
|
nwr/leisure=marina \
|
|
nwr/harbour \
|
|
nwr/industrial=port \
|
|
nwr/landuse=harbour \
|
|
nwr/landuse=port \
|
|
nwr/waterway=dock \
|
|
w/waterway=fairway \
|
|
w/waterway=canal \
|
|
w/waterway=river \
|
|
w/route=ferry \
|
|
w/natural=water \
|
|
w/water=lake \
|
|
w/boat=yes \
|
|
w/ship=yes \
|
|
nwr/bridge \
|
|
r/natural=water \
|
|
r/water=lake \
|
|
r/route=ferry \
|
|
-o "$WORKDIR/marine.osm.pbf" \
|
|
--overwrite
|
|
|
|
osmium export "$WORKDIR/marine.osm.pbf" \
|
|
--format geojsonseq \
|
|
--add-unique-id type_id \
|
|
--attributes type,id \
|
|
-o "$WORKDIR/marine.geojsonseq" \
|
|
--overwrite
|
|
|
|
psql "$DATABASE_URL" -f "$ROOT_DIR/database/schema.sql"
|
|
DATABASE_URL="$DATABASE_URL" WATERMAPS_IMPORT_SOURCE="$(basename "$PBF_PATH" .osm.pbf)" node "$ROOT_DIR/scripts/load-osm-fairways.mjs" "$WORKDIR/marine.geojsonseq"
|