GLE-Postgis-Reichsbodenschätzung

Aus kvwmap
Wechseln zu: Navigation, Suche

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
 WHERE bs.endet IS NULL;

"  # 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