Changeset 183 for trunk/data/konvert/postnas_0.7/pp_laden.sql
- Timestamp:
- 10/31/12 16:46:53 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/data/konvert/postnas_0.7/pp_laden.sql
r178 r183 10 10 -- 2012-04-17 Flurstuecksnummern auf Standardposition 11 11 -- 2012-04-24 Generell Filter 'endet IS NULL' um historische Objekte auszublenden 12 12 -- 2012-04-25 Abstürze und Fehler (durch kaputte Geometrie?) beim Zusammenfassen der Flächen 13 -- Mehr buffer, mehr simplify? 14 -- 2012-10-29 Redundanzen aus alkis_beziehungen beseitigen, die nach NAS replace auftreten 13 15 14 16 -- ============================ … … 20 22 -- Antwortzeiten in WMS, WFS, Buchauskunft oder Navigation (Suche) verursachen. 21 23 22 -- Im Rahmen eines "Post-Processing" werden diese Daten nach jeder Konvertierung (NBA-Akt ialisierung)24 -- Im Rahmen eines "Post-Processing" werden diese Daten nach jeder Konvertierung (NBA-Aktualisierung) 23 25 -- einmal komplett aufbereitet. Die benötigten Informationen stehen somit den Anwendungen mundgerecht zur Verfügung. 24 26 … … 27 29 -- Die Ausführung dieses Scriptes auf einer Datenbank für eine 80T-Einwohner-Stadt dauert ca.: 500 Sek. ! 28 30 29 30 31 -- =========================== 32 -- Flurstuecksnummern-Position 33 -- =========================== 31 SET client_encoding = 'UTF-8'; 32 33 34 -- ============================================================================ 35 -- Redundanzen aus alkis_beziehungen beseitigen, die nach NAS replace auftreten 36 -- ============================================================================ 37 -- Work arround: alle Redundazen nach einem Lauf entfernen. 38 -- Besser wäre: sofort im Trigger bei replace entfernen. 39 -- Siehe Schema in FUNCTION delete_feature_kill 40 41 DELETE 42 FROM alkis_beziehungen AS bezalt -- Beziehung Alt 43 WHERE EXISTS 44 (SELECT ogc_fid 45 FROM alkis_beziehungen AS bezneu -- Beziehung Neu 46 WHERE bezalt.beziehung_von = bezneu.beziehung_von 47 AND bezalt.beziehung_zu = bezneu.beziehung_zu 48 AND bezalt.beziehungsart = bezneu.beziehungsart 49 AND bezalt.ogc_fid < bezneu.ogc_fid 50 ); 51 -- Denkbar ist eine Variante für den Trigger, die zusätzlich 52 -- auf eine bestimmte gml_id filtert. 53 -- Damit wäre die DB schon während der Konvertierung konsistenter. 54 55 56 -- SELECT * 57 -- FROM alkis_beziehungen AS bezalt 58 -- WHERE EXISTS 59 -- (SELECT ogc_fid 60 -- FROM alkis_beziehungen AS bezneu 61 -- WHERE bezalt.beziehung_von = bezneu.beziehung_von 62 -- AND bezalt.beziehung_zu = bezneu.beziehung_zu 63 -- AND bezalt.beziehungsart = bezneu.beziehungsart 64 -- AND bezalt.ogc_fid < bezneu.ogc_fid 65 -- ); 66 67 -- SELECT * 68 -- FROM alkis_beziehungen AS bezalt 69 -- WHERE EXISTS 70 -- (SELECT ogc_fid 71 -- FROM alkis_beziehungen AS bezneu 72 -- WHERE bezalt.beziehung_von = bezneu.beziehung_von 73 -- AND bezalt.beziehung_zu = bezneu.beziehung_zu 74 -- AND bezalt.beziehungsart = bezneu.beziehungsart 75 -- AND bezalt.ogc_fid < bezneu.ogc_fid 76 -- ) 77 -- -- mit dem Zusatz nur die Faelle aus dem letzten Durchlauf, 78 -- -- die aktuell noch in der Delet-Tabelle stehen 79 -- AND EXISTS 80 -- (SELECT ogc_fid 81 -- FROM delete 82 -- WHERE bezalt.beziehung_von = substr(featureid, 1, 16) 83 -- OR bezalt.beziehung_zu = substr(featureid, 1, 16) 84 -- ); 85 86 87 -- ================================= 88 -- Flurstuecksnummern-Label-Position 89 -- ================================= 34 90 35 91 -- ersetzt den View "s_flurstueck_nr" für WMS-Layer "ag_t_flurstueck" … … 73 129 74 130 75 SET client_encoding = 'UTF-8'; 76 77 78 -- Alles auf Anfang! 79 DELETE FROM pp_gemeinde; 80 DELETE FROM pp_gemarkung; 81 DELETE FROM pp_flur; 82 131 -- G E M A R K U N G 132 133 DELETE FROM pp_gemarkung; 83 134 84 135 -- Vorkommende Paarungen Gemarkung <-> Gemeinde in ax_Flurstueck … … 91 142 ; 92 143 93 -- daraus: Vorkommende Gemeinden 144 -- Namen der Gemarkung dazu als Optimierung bei der Auskunft 145 UPDATE pp_gemarkung a 146 SET gemarkungsname = 147 ( SELECT b.bezeichnung 148 FROM ax_gemarkung b 149 WHERE a.land=b.land 150 AND a.gemarkung=b.gemarkungsnummer 151 AND b.endet IS NULL 152 ); 153 154 155 -- G E M E I N D E 156 157 DELETE FROM pp_gemeinde; 158 159 -- Vorkommende Gemeinden aus den gemarkungen 94 160 INSERT INTO pp_gemeinde 95 161 ( land, regierungsbezirk, kreis, gemeinde) … … 98 164 ORDER BY land, regierungsbezirk, kreis, gemeinde 99 165 ; 166 100 167 101 168 -- Namen der Gemeinde dazu als Optimierung bei der Auskunft … … 111 178 ); 112 179 113 -- Namen der Gemarkung dazu als Optimierung bei der Auskunft114 UPDATE pp_gemarkung a115 SET gemarkungsname =116 ( SELECT b.bezeichnung117 FROM ax_gemarkung b118 WHERE a.land=b.land119 AND a.gemarkung=b.gemarkungsnummer120 AND b.endet IS NULL121 );122 123 180 124 181 -- ============================================================================== … … 126 183 -- ============================================================================== 127 184 128 -- Dies macht nur Sinn, wenn der Inhalt der Datenb enk einen ganzen Katasterbezirk enthält.185 -- Dies macht nur Sinn, wenn der Inhalt der Datenbank einen ganzen Katasterbezirk enthält. 129 186 -- Wenn ein Gebiet durch geometrische Filter im NBA ausgegeben wurde, dann gibt es Randstreifen, 130 187 -- die zu Pseudo-Fluren zusammen gefasst werden. Fachlich falsch! 131 188 189 -- Ausführungszeit: 1 mittlere Stadt mit ca. 14.000 Flurstücken > 100 Sek 190 132 191 -- ToDo: 133 -- TopologyException: found non-noded intersection between ...134 192 -- Nur "geprüfte Flurstücke" verwenden? Filter? 193 194 -- 070: TopologyException: found non-noded intersection between ... 195 196 197 DELETE FROM pp_flur; 135 198 136 199 INSERT INTO pp_flur (land, regierungsbezirk, kreis, gemarkung, flurnummer, anz_fs, the_geom ) 137 200 SELECT f.land, f.regierungsbezirk, f.kreis, f.gemarkungsnummer as gemarkung, f.flurnummer, 138 201 count(gml_id) as anz_fs, 139 multi(st_union(st_buffer(f.wkb_geometry,0 ))) AS the_geom202 multi(st_union(st_buffer(f.wkb_geometry,0.05))) AS the_geom -- 5 cm Zugabe um Zwischenräume zu vermeiden 140 203 FROM ax_flurstueck f 141 204 WHERE f.endet IS NULL 142 205 GROUP BY f.land, f.regierungsbezirk, f.kreis, f.gemarkungsnummer, f.flurnummer; 143 206 207 -- Geometrie vereinfachen, auf 1 Meter glätten 208 UPDATE pp_flur SET simple_geom = simplify(the_geom, 1.0); 209 144 210 145 211 -- Fluren zu Gemarkungen zusammen fassen 146 212 -- ------------------------------------- 147 213 148 -- Flächen vereinigen 214 -- FEHLER: 290 Absturz PG! Bei Verwendung der ungebufferten präzisen Geometrie. 215 -- bufferOriginalPrecision failed (TopologyException: unable to assign hole to a shell), trying with reduced precision 216 -- UPDATE: ../../source/headers/geos/noding/SegmentString.h:175: void geos::noding::SegmentString::testInvariant() const: Zusicherung »pts->size() > 1« nicht erfüllt. 217 218 219 -- Flächen vereinigen (aus der bereits vereinfachten Geometrie) 149 220 UPDATE pp_gemarkung a 150 221 SET the_geom = 151 ( SELECT multi(st_union(st_buffer(b. the_geom,0))) AS the_geom222 ( SELECT multi(st_union(st_buffer(b.simple_geom,0.1))) AS the_geom -- noch mal 10 cm Zugabe 152 223 FROM pp_flur b 153 WHERE a.land=b.land AND a.gemarkung=b.gemarkung 224 WHERE a.land = b.land 225 AND a.gemarkung = b.gemarkung 154 226 ); 155 227 … … 159 231 ( SELECT count(flurnummer) AS anz_flur 160 232 FROM pp_flur b 161 WHERE a.land=b.land AND a.gemarkung=b.gemarkung 233 WHERE a.land = b.land 234 AND a.gemarkung = b.gemarkung 162 235 ); -- Gemarkungsnummer ist je BundesLand eindeutig 163 236 … … 169 242 -- ---------------------------------------- 170 243 171 -- Flächen vereinigen 244 -- Flächen vereinigen (aus der bereits vereinfachten Geometrie) 172 245 UPDATE pp_gemeinde a 173 246 SET the_geom = 174 ( SELECT multi(st_union(st_buffer(b. the_geom,0))) AS the_geom247 ( SELECT multi(st_union(st_buffer(b.simple_geom,0.1))) AS the_geom -- noch mal Zugabe 10 cm 175 248 FROM pp_gemarkung b 176 WHERE a.land=b.land AND a.gemeinde=b.gemeinde 249 WHERE a.land = b.land 250 AND a.gemeinde = b.gemeinde 177 251 ); 178 252 … … 182 256 ( SELECT count(gemarkung) AS anz_gemarkg 183 257 FROM pp_gemarkung b 184 WHERE a.land=b.land AND a.gemeinde=b.gemeinde 258 WHERE a.land = b.land 259 AND a.gemeinde = b.gemeinde 185 260 ); 186 261
Note: See TracChangeset
for help on using the changeset viewer.