GLE-Postgis-Jagdkataster Postprocessing

Aus kvwmap
Version vom 29. Februar 2016, 11:04 Uhr von Markus Hentschel (Diskussion | Beiträge)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

EJB Verdachtsflächen

Das Script gruppiert nach Eigentum, bei dem der/die Eigentümer GENAU IDENTISCH sind, die Reihenfolge der Eintragung spielt dabei keine Rolle. Die Einzelflächen werden um 10 Meter gepuffert (so dass bis zu 20 Meter breite Trennflächen das Gebiet nicht mehr trennen). Von der Gesamtfläche werden wieder 10 Meter Puffer abgezogen. Wenn das Ergebnis größer 75 ha ist, erfolgt ein Eintrag in der Tabelle lk_ejb_verdachtsflaechen. Für den ganzen Landkreis benötigt das Script ca. 20 Minuten. Das Thema heißt "Verdachtsflächen", weil hier auch Flächen aufgeführt werden, die im Sinne des Jagdgesetzes kein Eigenjagdbezirk sind. Die Flächen müssen also unbedingt kritisch geprüft werden!

 #!/bin/sh
 
 # Füllt die Tabelle ejb_verdachtsflaechen
 # mit aggregierten Flächen > 75 ha aller Eigentümer im ganzen Landkreis
 # mit Puffer 20 Meter
 
 
 ### setzt Variablen ###
 DATUM=`date +%a`; export DATUM
 PSQLPATH=/pfad/zu/postgresql/9.1/bin; export PSQLPATH
 PGUSERNAME=kvwmap; export PGUSERNAME
 PGDBNAME=kvwmapsp; export PGDBNAME
 SCHEMANAME=alkis; export SCHEMANAME
 TABLENAME=lk_ejb_verdachtsflaechen; export TABLENAME
 LOGFILE=/pfad/zum/logs-verzeichnis/lk_ejb_verdachtsflaechen.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 "
 BEGIN;
 DROP INDEX $SCHEMANAME.ixlkvrejbverd_the_geom_gist;
 TRUNCATE $SCHEMANAME.$TABLENAME;
 INSERT INTO $SCHEMANAME.$TABLENAME 
 select eigentuemer, round(area((the_geom).geom)), (the_geom).geom from (
 select 
  eigentuemer, 
 st_dump(st_buffer(st_union(the_geom), -10)) as the_geom 
 from (
   select
    st_buffer(f.wkb_geometry,10) as the_geom, 
    array_to_string(array(
    select 
       p.nachnameoderfirma||CASE WHEN p.vorname IS Null then '' ELSE ', '||p.vorname END||
       CASE WHEN p.namensbestandteil IS Null then '' ELSE ', '||p.namensbestandteil END
       from 
       alkis.ax_buchungsstelle sa
       LEFT JOIN alkis.ax_buchungsblatt g ON g.gml_id::text = sa.istbestandteilvon::text
       LEFT JOIN alkis.ax_namensnummer n ON n.istbestandteilvon::text = g.gml_id::text
       LEFT JOIN alkis.ax_person p ON p.gml_id::text = n.benennt::text
       WHERE g.bezirk = gg.bezirk AND g.buchungsblattnummermitbuchstabenerweiterung=gg.buchungsblattnummermitbuchstabenerweiterung 
       AND sa.endet IS NULL 
       AND g.endet IS NULL 
       AND n.endet IS NULL 
       AND p.endet IS NULL
       AND (n.benennt is not null OR n.benennt != '')
       GROUP BY p.nachnameoderfirma, p.vorname, p.namensbestandteil
       ORDER BY p.nachnameoderfirma, p.vorname, p.namensbestandteil
      ),' || '
     ) as eigentuemer 
     FROM alkis.ax_flurstueck f, alkis.ax_buchungsstelle s, alkis.ax_buchungsblatt gg
     WHERE s.gml_id::text = f.istgebucht::text
     AND gg.gml_id::text = s.istbestandteilvon::text
     AND f.endet IS NULL AND s.endet IS NULL AND gg.endet IS NULL
     GROUP BY  f.wkb_geometry, gg.bezirk, gg.buchungsblattnummermitbuchstabenerweiterung
  ) as foo
 group by eigentuemer
 ) as foofoo 
 where area((the_geom).geom)>750000
 ;
 CREATE INDEX ixlkvrejbverd_the_geom_gist
  ON $SCHEMANAME.$TABLENAME
  USING gist
  (the_geom );
 END;
 
 "  # Ende SQL
 
 if test $? -eq 0
    then
      echo "   Verdachtsflächen erfolgreich erneuert" >> $LOGFILE 2>&1
    else
      echo ">> Verdachtsflächen konnten nicht erneuert werden" >> $LOGFILE 2>&1
 fi
 
 # Tabelle analysieren
     $PSQLPATH/psql -U $PGUSERNAME -d $PGDBNAME -c "
     
        VACUUM ANALYZE $SCHEMANAME.$TABLENAME;
        
     "  # Ende SQL
     
     if test $? -eq 0
       then
         echo "   VACUUM erfolgreich durchgeführt" >> $LOGFILE 2>&1
       else
         echo ">> VACUUM konnte nicht durchgeführt werden" >> $LOGFILE 2>&1
     fi
     
    
 echo " " >> $LOGFILE 2>&1
 echo "############## Ende `date +%c` ################" >> $LOGFILE 2>&1
 echo " " >> $LOGFILE 2>&1
 
 exit 0