Changeset 324 for Version-0.8/import/pp_laden.sql
- Timestamp:
- 08/28/14 11:29:21 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Version-0.8/import/pp_laden.sql
r319 r324 1 1 2 -- ALKIS PostNAS 0.72 -- ALKIS PostNAS 3 3 4 4 -- Post Processing (pp_) Teil 2: Laden der Tabellen … … 10 10 -- 2012-04-17 Flurstuecksnummern auf Standardposition 11 11 -- 2012-04-24 Generell Filter 'endet IS NULL' um historische Objekte auszublenden 12 -- 2012-04-25 Abst ürze und Fehler (durch kaputte Geometrie?) beim Zusammenfassen der Flächen12 -- 2012-04-25 AbstÃŒrze und Fehler (durch kaputte Geometrie?) beim Zusammenfassen der FlÀchen 13 13 -- 2012-10-29 F.J. Redundanzen aus alkis_beziehungen beseitigen, die nach NAS replace auftreten 14 14 -- 2013-02-06 A.E. Function-Name an PostGIS 2 angepasst: multi() -> st_multi(), simplify() -> st_simplify() 15 -- 2013-02-21 F.J. doppelte Buchungen zum Flurstück aus alkis_beziehungen beseitigen, die nach NAS replace auftreten 16 -- 2013-07-10 F.J. Bereinigen der alkis_beziehungen auskommentiert, wird jetzt im Trigger gelöst. 17 -- 2012-10-24 Neue Tabelle für die Präsentation von Straßennamen und -Klassifikationen 18 -- 2014-02-05 Bereits auskommentierte Aktionen gelöscht für die Beseitigung von Rdundanzen aus fehlerhaften Triggern 19 -- 2014-02-12 Zusammen fassen Flur->Gemarkung->Gemeinde nicht aus simple_geom weil dadurch Löscher entstehen können. 15 -- 2013-02-21 F.J. doppelte Buchungen zum FlurstÃŒck aus alkis_beziehungen beseitigen, die nach NAS replace auftreten 16 -- 2013-07-10 F.J. Bereinigen der alkis_beziehungen auskommentiert, wird jetzt im Trigger gelöst. 17 -- 2012-10-24 Neue Tabelle fÃŒr die PrÀsentation von StraÃennamen und -Klassifikationen 18 -- 2014-02-05 Bereits auskommentierte Aktionen gelöscht fÃŒr die Beseitigung von Rdundanzen aus fehlerhaften Triggern 19 -- 2014-02-12 Zusammen fassen Flur->Gemarkung->Gemeinde nicht aus simple_geom weil dadurch Löscher entstehen können. 20 -- 2014-08-26 Beseitigung eines Fehlers beim Laden der StraÃennamen-Label. 21 -- Dabei Trennung in pp_strassenname_p und -_l (Punkt- und Liniengeometrie). 20 22 21 23 -- ============================ … … 24 26 25 27 -- Einige Informationen liegen nach der NAS-Konvertierung in der Datenbank "verstreut" vor. 26 -- Die dynamische Aufbereitung über Views und Functions würde zu lange dauern und somit lange28 -- Die dynamische Aufbereitung ÃŒber Views und Functions wÃŒrde zu lange dauern und somit lange 27 29 -- Antwortzeiten in WMS, WFS, Buchauskunft oder Navigation (Suche) verursachen. 28 30 29 31 -- Im Rahmen eines "Post-Processing" werden diese Daten nach jeder Konvertierung (NBA-Aktualisierung) 30 -- einmal komplett aufbereitet. Die ben ötigten Informationen stehen somit den Anwendungen mundgerecht zur Verfügung.31 32 -- Die per PostProcessing gef üllten Tabellen bekommen den Profix "pp_".33 34 -- Die Ausf ührung dieses Scriptes auf einer Datenbank für eine 80T-Einwohner-Stadt dauert ca.: 500 Sek. !32 -- einmal komplett aufbereitet. Die benötigten Informationen stehen somit den Anwendungen mundgerecht zur VerfÃŒgung. 33 34 -- Die per PostProcessing gefÃŒllten Tabellen bekommen den Profix "pp_". 35 36 -- Die AusfÃŒhrung dieses Scriptes auf einer Datenbank fÃŒr eine 80T-Einwohner-Stadt dauert ca.: 500 Sek. ! 35 37 36 38 SET client_encoding = 'UTF-8'; … … 41 43 -- ============================================================================ 42 44 -- Workaround: alle Redundazen nach einem Lauf entfernen. 43 -- Besser w äre: sofort im Trigger bei replace entfernen.45 -- Besser wÀre: sofort im Trigger bei replace entfernen. 44 46 -- Siehe Schema in FUNCTION delete_feature_kill 45 47 … … 49 51 -- ================================= 50 52 51 -- ersetzt den View "s_flurstueck_nr" f ür WMS-Layer "ag_t_flurstueck"53 -- ersetzt den View "s_flurstueck_nr" fÃŒr WMS-Layer "ag_t_flurstueck" 52 54 53 55 --DELETE FROM pp_flurstueck_nr; … … 75 77 AND f.endet IS NULL 76 78 ; 77 -- Ausf ührung: mittlere Stadt: ca. 4 - 18 Sec.78 79 80 -- Stra ßen - N a m e n und - K l a s s i f i k a t i o n81 -- Tabellen f ür die Präsentation von Straßen-Namen und -Klassifikationen79 -- AusfÃŒhrung: mittlere Stadt: ca. 4 - 18 Sec. 80 81 82 -- StraÃen - N a m e n und - K l a s s i f i k a t i o n 83 -- Tabellen fÃŒr die PrÀsentation von StraÃen-Namen und -Klassifikationen 82 84 -- Daten aus dem View "ap_pto_stra" werden im PostProcessing gespeichert in der Tabelle "pp_strassenname". 83 -- Der View übernimmt die Auswahl des passenden "advstandardmodell" und rechnet den Winkel passend um. 84 -- In der Tabelle werden dann die leer gebliebenen Label aus dem Katalog noch ergänzt. 85 86 -- Tabelle aus View befüllen 87 TRUNCATE pp_strassenname; 88 INSERT INTO pp_strassenname (schriftinhalt, hor, ver, art, winkel, the_geom) 89 SELECT schriftinhalt, hor, ver, art, winkel, wkb_geometry 90 FROM ap_pto_stra; -- View sucht das passende advstandardmodell 91 92 -- Schriftinhalt ergänzen 93 --DATE ap_pto p -- Präsentationsobjekte Punktförmig 94 UPDATE pp_strassenname p 95 SET schriftinhalt = -- Hier fehlt der Label 96 -- Subquery "Gib mir den Straßennamen": 97 ( SELECT k.bezeichnung -- Straßenname .. 98 FROM ax_lagebezeichnungkatalogeintrag k -- .. aus Katalog 99 JOIN ax_lagebezeichnungohnehausnummer l -- verwendet als Lage o.H. 100 ON (k.land=l.land AND k.regierungsbezirk=l.regierungsbezirk 101 AND k.kreis=l.kreis AND k.gemeinde=l.gemeinde AND k.lage=l.lage ) 102 JOIN alkis_beziehungen x ON l.gml_id = x.beziehung_zu -- Relation zum Präsentationsobjekt 103 WHERE p.gml_id = x.beziehung_von 104 AND x.beziehungsart = 'dientZurDarstellungVon' 105 -- LIMIT 1 -- war in einem Fall notwendig, wo 2mal der gleiche Text zugeordnet war, Ursache? 106 ) 85 -- Der View ÃŒbernimmt die Auswahl des passenden "advstandardmodell" und rechnet den Winkel passend um. 86 -- In der Tabelle werden dann die leer gebliebenen Label aus dem Katalog noch ergÀnzt. 87 88 -- Tabelle aus View befÃŒllen 89 -- 2014-08-22 90 -- Variante "_p" = Punktgeometrie, Spalte gml_id ergÀnzt. 91 -- Es werden nun auch SÀtze mit leerem "schriftinhalt" angelegt. Das wird dann nachtrÀglich gefÃŒllt. 92 93 -- Alles auf Anfang 94 TRUNCATE pp_strassenname_p; 95 96 -- ZunÀchst die Sonderschreibweisen (AbkÃŒrzungen) und die Standardschreibweisen, 97 -- die von der Migration redundant abgelegt wurden. 98 INSERT INTO pp_strassenname_p (gml_id, schriftinhalt, hor, ver, art, winkel, the_geom) 99 SELECT gml_id, schriftinhalt, hor, ver, art, winkel, wkb_geometry 100 FROM ap_pto_stra; -- Der View sucht das passende advstandardmodell 101 102 -- Schriftinhalt ergÀnzen 103 -- Das sind die Standardschreibweisen aus dem Katalog, die nicht mehr redundant in ap_pto sind. 104 UPDATE pp_strassenname_p p 105 SET schriftinhalt = -- Hier ist der Label noch leer 106 -- Subquery "Gib mir den StraÃennamen": 107 ( SELECT k.bezeichnung -- StraÃenname .. 108 FROM ax_lagebezeichnungkatalogeintrag k -- .. aus Katalog 109 JOIN ax_lagebezeichnungohnehausnummer l -- verwendet als Lage o.H. 110 ON (k.land=l.land AND k.regierungsbezirk=l.regierungsbezirk AND k.kreis=l.kreis AND k.gemeinde=l.gemeinde AND k.lage=l.lage ) 111 WHERE p.gml_id = l.gml_id -- die gml_id wurde aus View importiert 112 ) 107 113 WHERE p.schriftinhalt IS NULL 108 114 AND NOT p.the_geom IS NULL; 115 116 -- FEHLER: als Ausdruck verwendete Unteranfrage ergab mehr als eine Zeile 117 -- Ursache: Trigger anpassen an "character varying", arbeitet bisher nur mit "caharacter(16)" korrekt 118 119 120 -- Die immer noch leeren Texte sind nun sinnlos. 121 -- Die finden sich ggf. in der Variante "_l" mit Liniengeometrie. 122 DELETE FROM pp_strassenname_p WHERE schriftinhalt IS NULL; 123 124 -- Nun das Gleiche noch einmal fÃŒr Linien-Geometrie 125 126 -- Auf Anfang 127 TRUNCATE pp_strassenname_l; 128 129 -- ZunÀchst die Sonderschreibweisen (AbkÃŒrzungen) und die Standardschreibweisen, 130 -- die von der Migration redundant abgelegt wurden. 131 INSERT INTO pp_strassenname_l (gml_id, schriftinhalt, hor, ver, art, the_geom) 132 SELECT gml_id, schriftinhalt, hor, ver, art, wkb_geometry 133 FROM ap_lto_stra; -- Der View sucht das passende advstandardmodell 134 135 -- Schriftinhalt ergÀnzen (korrigiert 2014-08-25) 136 -- Das sind die Standardschreibweisen aus dem Katalog, die nicht mehr redundant in ap_pto sind. 137 -- Der Satz mit der passenen gml_id (Lage o.H.) ist aus dem View bereits importiert. 138 -- Jetzt noch den dazu passenen Schriftinhalt aus dem Katalog holen. 139 UPDATE pp_strassenname_l p 140 SET schriftinhalt = -- Hier ist der Label noch leer 141 -- Subquery "Gib mir den StraÃennamen": 142 ( SELECT k.bezeichnung -- StraÃenname .. 143 FROM ax_lagebezeichnungkatalogeintrag k -- .. aus Katalog 144 JOIN ax_lagebezeichnungohnehausnummer l -- verwendet als Lage o.H. 145 ON (k.land=l.land AND k.regierungsbezirk=l.regierungsbezirk AND k.kreis=l.kreis AND k.gemeinde=l.gemeinde AND k.lage=l.lage ) 146 WHERE p.gml_id = l.gml_id -- die gml_id wurde aus View importiert 147 ) 148 WHERE p.schriftinhalt IS NULL 149 AND NOT p.the_geom IS NULL; 150 151 -- Die immer noch leeren Texte sind sinnlos. 152 DELETE FROM pp_strassenname_l WHERE schriftinhalt IS NULL; 109 153 110 154 … … 113 157 -- ======================================================== 114 158 115 -- F ür die Regelung der Zugriffsberechtigung einer Gemeindeverwaltung auf die116 -- Flurst ücke in ihrem Gebiet braucht man die Information, in welcher Gemeinde eine Gemarkung liegt.159 -- FÃŒr die Regelung der Zugriffsberechtigung einer Gemeindeverwaltung auf die 160 -- FlurstÃŒcke in ihrem Gebiet braucht man die Information, in welcher Gemeinde eine Gemarkung liegt. 117 161 -- 'ax_gemeinde' und 'ax_gemarkung' haben aber im ALKIS keinerlei Beziehung zueinander - kaum zu glauben! 118 -- Nur über die Auswertung der Flurstücke kann man die Zuordnung ermitteln.119 -- Da nicht st ändig mit 'SELECT DISTINCT' sämtliche Flurstücke durchsucht werden können,162 -- Nur ÃŒber die Auswertung der FlurstÃŒcke kann man die Zuordnung ermitteln. 163 -- Da nicht stÀndig mit 'SELECT DISTINCT' sÀmtliche FlurstÃŒcke durchsucht werden können, 120 164 -- muss diese Information als (redundante) Tabelle nach dem Laden zwischengespeichert werden. 121 165 … … 174 218 175 219 -- ============================================================================== 176 -- Geometrien der Flurst ücke schrittweise zu groesseren Einheiten zusammen fassen220 -- Geometrien der FlurstÃŒcke schrittweise zu groesseren Einheiten zusammen fassen 177 221 -- ============================================================================== 178 222 179 -- Dies macht nur Sinn, wenn der Inhalt der Datenbank einen ganzen Katasterbezirk enth ält.223 -- Dies macht nur Sinn, wenn der Inhalt der Datenbank einen ganzen Katasterbezirk enthÀlt. 180 224 -- Wenn ein Gebiet durch geometrische Filter im NBA ausgegeben wurde, dann gibt es Randstreifen, 181 225 -- die zu Pseudo-Fluren zusammen gefasst werden. Fachlich falsch! 182 226 183 -- Ausf ührungszeit: 1 mittlere Stadt mit ca. 14.000 Flurstücken > 100 Sek227 -- AusfÃŒhrungszeit: 1 mittlere Stadt mit ca. 14.000 FlurstÃŒcken > 100 Sek 184 228 185 229 DELETE FROM pp_flur; … … 188 232 SELECT f.land, f.regierungsbezirk, f.kreis, f.gemarkungsnummer as gemarkung, f.flurnummer, 189 233 count(gml_id) as anz_fs, 190 st_multi(st_union(st_buffer(f.wkb_geometry,0.05))) AS the_geom -- Zugabe um Zwischenr äume zu vermeiden234 st_multi(st_union(st_buffer(f.wkb_geometry,0.05))) AS the_geom -- Zugabe um ZwischenrÀume zu vermeiden 191 235 FROM ax_flurstueck f 192 236 WHERE f.endet IS NULL … … 196 240 -- ------------------------------------- 197 241 198 -- FEHLER: 290 Absturz PG! Bei Verwendung der ungebufferten pr äzisen Geometrie.242 -- FEHLER: 290 Absturz PG! Bei Verwendung der ungebufferten prÀzisen Geometrie. 199 243 -- bufferOriginalPrecision failed (TopologyException: unable to assign hole to a shell), trying with reduced precision 200 -- UPDATE: ../../source/headers/geos/noding/SegmentString.h:175: void geos::noding::SegmentString::testInvariant() const: Zusicherung »pts->size() > 1« nicht erfüllt.201 202 -- Fl ächen vereinigen244 -- UPDATE: ../../source/headers/geos/noding/SegmentString.h:175: void geos::noding::SegmentString::testInvariant() const: Zusicherung »pts->size() > 1« nicht erfÃŒllt. 245 246 -- FlÀchen vereinigen 203 247 UPDATE pp_gemarkung a 204 248 SET the_geom = 205 ( SELECT st_multi(st_union(st_buffer(b.the_geom,0.1))) AS the_geom -- Puffer/Zugabe um L öcher zu vermeiden249 ( SELECT st_multi(st_union(st_buffer(b.the_geom,0.1))) AS the_geom -- Puffer/Zugabe um Löcher zu vermeiden 206 250 FROM pp_flur b 207 251 WHERE a.land = b.land … … 222 266 -- ---------------------------------------- 223 267 224 -- Fl ächen vereinigen (aus der bereits vereinfachten Geometrie)268 -- FlÀchen vereinigen (aus der bereits vereinfachten Geometrie) 225 269 UPDATE pp_gemeinde a 226 270 SET the_geom = … … 231 275 ); 232 276 233 -- Gemarkungen z ählen277 -- Gemarkungen zÀhlen 234 278 UPDATE pp_gemeinde a 235 279 SET anz_gemarkg = … … 241 285 242 286 243 -- Geometrie gl ätten / vereinfachen244 -- Diese "simplen" Geometrien sollen nur f ür die Darstellung einer Übersicht verwendet werden.287 -- Geometrie glÀtten / vereinfachen 288 -- Diese "simplen" Geometrien sollen nur fÃŒr die Darstellung einer Ãbersicht verwendet werden. 245 289 -- Ablage der simplen Geometrie in einem alternativen Geometriefeld im gleichen Datensatz. 246 290 … … 253 297 254 298 -- ======================================================= 255 -- Tabelle fuer die Zuordnung vom Eigent ümern zu Gemeinden299 -- Tabelle fuer die Zuordnung vom EigentÃŒmern zu Gemeinden 256 300 -- ======================================================= 257 301 … … 261 305 262 306 -- alle direkten Buchungen mit View ermitteln und in Tabelle speichern 263 -- F ür eine Stadt: ca. 20 Sekunden307 -- FÃŒr eine Stadt: ca. 20 Sekunden 264 308 INSERT INTO gemeinde_person 265 309 (land, regierungsbezirk, kreis, gemeinde, person, buchtyp) … … 268 312 269 313 270 -- noch die komplexeren Buchungen erg änzen (Recht an ..)314 -- noch die komplexeren Buchungen ergÀnzen (Recht an ..) 271 315 -- Mit View ermitteln und in Tabelle speichern 272 -- F ür eine Stadt: ca. 10 Sekunden316 -- FÃŒr eine Stadt: ca. 10 Sekunden 273 317 INSERT INTO gemeinde_person 274 318 ( land, regierungsbezirk, kreis, gemeinde, person, buchtyp)
Note: See TracChangeset
for help on using the changeset viewer.