county-sprints/scripts/import-vg250.sh
Jonas Rabenstein a9d22e8312 chatgpt
2026-08-12 13:24:01 +02:00

73 lines
1.2 KiB
Shell
Executable file

#!/usr/bin/env bash
set -euo pipefail
if [ "$#" -ne 1 ]; then
echo "usage: $0 DE_VG250.gpkg"
exit 1
fi
INPUT="$1"
if [ ! -f "$INPUT" ]; then
echo "file not found: $INPUT"
exit 1
fi
: "${DATABASE_URL:?DATABASE_URL must be set}"
echo "Available layers:"
ogrinfo "$INPUT" | sed -n '1,80p'
echo
echo "Importing vg250_krs..."
ogr2ogr \
-f PostgreSQL \
"$DATABASE_URL" \
"$INPUT" \
-nln vg250_krs_import \
-nlt PROMOTE_TO_MULTI \
-t_srs EPSG:4326 \
-overwrite
echo "Import completed."
psql "$DATABASE_URL" <<'SQL'
TRUNCATE county_boundaries RESTART IDENTITY;
INSERT INTO county_boundaries (
name,
geometry
)
SELECT
COALESCE(
NULLIF("GEN", ''),
NULLIF("BEZ", ''),
NULLIF("ARS", ''),
'unknown'
) AS name,
ST_Multi(
ST_CollectionExtract(
ST_MakeValid(wkb_geometry),
3
)
)::geometry(MultiPolygon,4326)
FROM vg250_krs_import
WHERE wkb_geometry IS NOT NULL;
DROP TABLE vg250_krs_import;
CREATE INDEX county_boundaries_geometry_idx
ON county_boundaries
USING GIST (geometry);
ANALYZE county_boundaries;
SQL
echo
echo "Imported counties:"
psql "$DATABASE_URL" \
-c "SELECT id, name FROM county_boundaries ORDER BY name;"