#!/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;"