This commit is contained in:
Jonas Rabenstein 2026-08-12 17:49:27 +02:00
commit 45bcc13788
3 changed files with 678 additions and 174 deletions

View file

@ -16,24 +16,55 @@ fi
: "${DATABASE_URL:?DATABASE_URL must be set}"
echo "Available layers:"
ogrinfo "$INPUT" | sed -n '1,80p'
ogrinfo "$INPUT" | sed -n '1,120p'
echo
echo "Importing vg250_krs..."
echo "Inspecting vg250_krs..."
ogrinfo "$INPUT" vg250_krs -so
echo
echo "Importing only vg250_krs..."
# Remove an old failed import.
psql "$DATABASE_URL" <<'SQL'
DROP TABLE IF EXISTS vg250_krs_import CASCADE;
SQL
# IMPORTANT:
# The layer name is explicitly specified here.
ogr2ogr \
-f PostgreSQL \
"$DATABASE_URL" \
"$INPUT" \
vg250_krs \
-nln vg250_krs_import \
-nlt PROMOTE_TO_MULTI \
-t_srs EPSG:4326 \
-lco GEOMETRY_NAME=wkb_geometry \
-overwrite
echo "Import completed."
echo
echo "Source import completed."
echo
echo "Imported source columns:"
psql "$DATABASE_URL" <<'SQL'
SELECT
column_name,
data_type
FROM information_schema.columns
WHERE table_name = 'vg250_krs_import'
ORDER BY ordinal_position;
SQL
echo
echo "Creating county boundaries..."
psql "$DATABASE_URL" <<'SQL'
TRUNCATE county_boundaries RESTART IDENTITY;
BEGIN;
TRUNCATE county_crossings;
TRUNCATE county_boundaries RESTART IDENTITY CASCADE;
INSERT INTO county_boundaries (
name,
@ -41,9 +72,9 @@ INSERT INTO county_boundaries (
)
SELECT
COALESCE(
NULLIF("GEN", ''),
NULLIF("BEZ", ''),
NULLIF("ARS", ''),
NULLIF(TRIM(gen), ''),
NULLIF(TRIM(bez), ''),
NULLIF(TRIM(ars), ''),
'unknown'
) AS name,
@ -52,13 +83,29 @@ SELECT
ST_MakeValid(wkb_geometry),
3
)
)::geometry(MultiPolygon,4326)
)::geometry(MultiPolygon, 4326) AS geometry
FROM vg250_krs_import
WHERE wkb_geometry IS NOT NULL;
WHERE
wkb_geometry IS NOT NULL
AND NOT ST_IsEmpty(wkb_geometry);
COMMIT;
SQL
echo
echo "Removing temporary import table..."
psql "$DATABASE_URL" <<'SQL'
DROP TABLE vg250_krs_import;
SQL
echo
echo "Recreating spatial index..."
psql "$DATABASE_URL" <<'SQL'
DROP INDEX IF EXISTS county_boundaries_geometry_idx;
CREATE INDEX county_boundaries_geometry_idx
ON county_boundaries
@ -68,6 +115,32 @@ ANALYZE county_boundaries;
SQL
echo
echo "Imported counties:"
psql "$DATABASE_URL" \
-c "SELECT id, name FROM county_boundaries ORDER BY name;"
echo "=========================================="
echo " Imported counties"
echo "=========================================="
psql "$DATABASE_URL" <<'SQL'
SELECT
COUNT(*) AS total,
COUNT(*) FILTER (WHERE geometry IS NOT NULL) AS with_geometry,
COUNT(*) FILTER (WHERE ST_IsValid(geometry)) AS valid_geometry
FROM county_boundaries;
SQL
echo
echo "First 20 counties:"
echo
psql "$DATABASE_URL" <<'SQL'
SELECT
id,
name,
ST_GeometryType(geometry) AS geometry_type,
ST_SRID(geometry) AS srid
FROM county_boundaries
ORDER BY name
LIMIT 20;
SQL
echo
echo "Import completed successfully."