GLE-Postgis-Jagdkataster Postprocessing
Aus kvwmap
Version vom 29. Februar 2016, 11:04 Uhr von Markus Hentschel (Diskussion | Beiträge)
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