GLE-Postgis-Reichsbodenschätzung
Aus kvwmap
Version vom 3. August 2015, 15:45 Uhr von Markus Hentschel (Diskussion | Beiträge)
Datenmodell Klassifizierte Bodenwertzahlen pro Schätzungsfläche
CREATE TABLE alkis.lkvr_schaetzungsflaechen
(
id integer,
beginnt character varying,
endet character varying,
kulturart_kurz character varying,
kulturart_lang character varying,
bodenart_kurz character varying,
bodenart_lang character varying,
zustandsstufe_kurz character varying,
zustandsstufe_lang character varying,
entstehungsart_kurz character varying,
entstehungsart_lang character varying,
klimastufe_kurz character varying,
klimastufe_lang character varying,
bodenzahlodergruenlandgrundzahl integer,
ackerzahlodergruenlandzahl integer,
sonderfall_kurz character varying,
sonderfall_lang character varying,
wechselland character varying,
bodendefinition character varying,
flaeche double precision
)
WITH (
OIDS=TRUE
);
SELECT AddGeometryColumn('alkis', 'lkvr_schaetzungsflaechen','geometrie',25833,'MULTIPOLYGON', 2);
CREATE INDEX ixlkvrschaetz_geometrie_gist
ON alkis.lkvr_schaetzungsflaechen
USING gist
(geometrie);
Datenmodell Klassifizierte Bodenwertzahlen pro Flurstück
CREATE TABLE alkis.lkvr_schaetzungsflaechen_flurstueck ( fsgml_id character varying(16), flurstueckskennzeichen character(20), a_flaeche_gesamt double precision, a_emz_gesamt double precision, a_bwz_gesamt double precision, gr_flaeche_gesamt double precision, gr_emz_gesamt double precision, gr_bwz_gesamt double precision, agr_flaeche_gesamt double precision, agr_emz_gesamt double precision, agr_bwz_gesamt double precision, gra_flaeche_gesamt double precision, gra_emz_gesamt double precision, gra_bwz_gesamt double precision, nicht_geschaetzt double precision ) WITH ( OIDS=FALSE ); COMMENT ON TABLE alkis.lkvr_schaetzungsflaechen_flurstueck IS 'Gesetzl. Klassifizierung Bodenschaetzung (flurstuecksbezogen)'; COMMENT ON COLUMN alkis.lkvr_schaetzungsflaechen_flurstueck.fsgml_id IS 'gml_id des zugehoerigen Flurstueck-Objektes'; COMMENT ON COLUMN alkis.lkvr_schaetzungsflaechen_flurstueck.a_flaeche_gesamt IS 'Ackerland Flaeche gesamt'; COMMENT ON COLUMN alkis.lkvr_schaetzungsflaechen_flurstueck.a_emz_gesamt IS 'Ackerland Ertragsmesszahl gesamt'; COMMENT ON COLUMN alkis.lkvr_schaetzungsflaechen_flurstueck.a_bwz_gesamt IS 'Ackerland Bodenwertzahl gesamt'; COMMENT ON COLUMN alkis.lkvr_schaetzungsflaechen_flurstueck.gr_flaeche_gesamt IS 'Gruenland Flaeche gesamt'; COMMENT ON COLUMN alkis.lkvr_schaetzungsflaechen_flurstueck.gr_emz_gesamt IS 'Gruenland Ertragsmesszahl gesamt'; COMMENT ON COLUMN alkis.lkvr_schaetzungsflaechen_flurstueck.gr_bwz_gesamt IS 'Gruenland Bodenwertzahl gesamt'; COMMENT ON COLUMN alkis.lkvr_schaetzungsflaechen_flurstueck.agr_flaeche_gesamt IS 'Acker_Gruenland Flaeche gesamt'; COMMENT ON COLUMN alkis.lkvr_schaetzungsflaechen_flurstueck.agr_emz_gesamt IS 'Acker_Gruenland Ertragsmesszahl gesamt'; COMMENT ON COLUMN alkis.lkvr_schaetzungsflaechen_flurstueck.agr_bwz_gesamt IS 'Acker_Gruenland Bodenwertzahl gesamt'; COMMENT ON COLUMN alkis.lkvr_schaetzungsflaechen_flurstueck.gra_flaeche_gesamt IS 'Gruenland_Acker Flaeche gesamt'; COMMENT ON COLUMN alkis.lkvr_schaetzungsflaechen_flurstueck.gra_emz_gesamt IS 'Gruenland_Acker Ertragsmesszahl gesamt'; COMMENT ON COLUMN alkis.lkvr_schaetzungsflaechen_flurstueck.gra_bwz_gesamt IS 'Gruenland_Acker Bodenwertzahl gesamt'; COMMENT ON COLUMN alkis.lkvr_schaetzungsflaechen_flurstueck.nicht_geschaetzt IS 'nicht geschaetzte Flaeche';
Script für Postprocessing Bodenwertzahlen pro Schätzungsfläche
#!/bin/sh
###################################################################
# Script lkvr_schaetzungsflaechen.sh
###################################################################
### setzt Variablen ###
PSQLPATH=/usr/lib/postgresql/9.1/bin; export PSQLPATH
PGUSERNAME=kvwmap; export PGUSERNAME
PGDBNAME=kvwmapsp; export PGDBNAME
SCHEMANAME=alkis; export SCHEMANAME
TABLENAME=lkvr_schaetzungsflaechen; export TABLENAME
LOGFILE=/home/gisadmin/scripte/logs/lkvr_schaetzungsflaechen.log; export LOGFILE
echo " " >> $LOGFILE 2>&1
echo "############## Beginn `date +%c` ################" >> $LOGFILE 2>&1
echo " " >> $LOGFILE 2>&1
$PSQLPATH/psql -U $PGUSERNAME -d $PGDBNAME -c "
DROP INDEX $SCHEMANAME.ixlkvrschaetz_geometrie_gist;
TRUNCATE $SCHEMANAME.$TABLENAME;
INSERT INTO $SCHEMANAME.$TABLENAME
SELECT
bs.ogc_fid as id,
bs.beginnt,
bs.endet,
ka.kurz as kulturart_kurz,
ka.bezeichner as kulturart_lang,
ba.kurz as bodenart_kurz,
ba.bezeichner as bodenart_lang,
zs.kurz as zustandsstufe_kurz,
zs.bezeichner as zustandsstufe_lang,
ea1.kurz as entstehungsart_kurz,
ea1.bezeichner as entstehungsart_lang,
ea2.kurz as klimastufe_kurz,
ea2.bezeichner as klimastufe_lang,
bs.bodenzahlodergruenlandgrundzahl,
bs.ackerzahlodergruenlandzahl,
so1.kurz as sonderfall_kurz,
so1.bezeichner as sonderfall_lang,
CASE WHEN ka.kurz ~~ 'AGr%' OR ka.kurz ~~ 'GrA%' THEN 'ja' ELSE 'nein' END as wechselland,
ba.kurz||zs.kurz||CASE WHEN ea2.kurz is NULL THEN ELSE ea2.kurz END||CASE WHEN ea1.kurz is NULL THEN ELSE ea1.kurz END||' '||CASE WHEN bs.bodenzahlodergruenlandgrundzahl is NULL THEN ELSE (bs.bodenzahlodergruenlandgrundzahl||'/') END||bs.ackerzahlodergruenlandzahl as bodendefinition,
round(area(bs.wkb_geometry)) as flaeche,
ST_Multi(bs.wkb_geometry) as geometrie
FROM
alkis.ax_bodenschaetzung bs
LEFT JOIN alkis.ax_bodenschaetzung_kulturart ka ON bs.kulturart = ka.wert
LEFT JOIN alkis.ax_bodenschaetzung_bodenart ba ON bs.bodenart = ba.wert
LEFT JOIN alkis.ax_bodenschaetzung_zustandsstufe zs ON bs.zustandsstufeoderbodenstufe = zs.wert
LEFT JOIN alkis.ax_bodenschaetzung_entstehungsartoderklimastufe ea1 ON bs.entstehungsartoderklimastufewasserverhaeltnisse[1] = ea1.wert
LEFT JOIN alkis.ax_bodenschaetzung_entstehungsartoderklimastufe ea2 ON bs.entstehungsartoderklimastufewasserverhaeltnisse[2] = ea2.wert
LEFT JOIN alkis.ax_bodenschaetzung_sonstigeangaben so1 ON bs.sonstigeangaben[1] = so1.wert;
" # Ende SQL
if test $? -eq 0
then
echo " Import Schaetzungsflaechen erfolgreich durchgeführt" >> $LOGFILE 2>&1
else
echo ">> Import Schaetzungsflaechen konnte nicht durchgeführt werden" >> $LOGFILE 2>&1
fi
# Tabelle analysieren
$PSQLPATH/psql -U $PGUSERNAME -d $PGDBNAME -c "
VACUUM ANALYZE $SCHEMANAME.$TABLENAME;
CREATE INDEX ixlkvrschaetz_geometrie_gist
ON $SCHEMANAME.$TABLENAME
USING gist (geometrie);
" # Ende SQL
if test $? -eq 0
then
echo " INDEX erfolgreich angelegt" >> $LOGFILE 2>&1
else
echo ">> INDEX konnte nicht angelegt werden" >> $LOGFILE 2>&1
fi
echo " " >> $LOGFILE 2>&1
echo "############## Ende `date +%c` ################" >> $LOGFILE 2>&1
echo " " >> $LOGFILE 2>&1
exit 0