Changeset 276 for trunk/import/sichten.sql
- Timestamp:
- 04/16/13 17:56:10 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/import/sichten.sql
r275 r276 3 3 -- ===== 4 4 5 -- ----------------------------------------- 6 -- Sichten fÃŒr Fehlersuche und Daten-Analyse 7 -- ----------------------------------------- 8 9 -- Dieses SQL braucht nur bei Bedarf in einer PostNAS-DB verarbeitet werden. 10 -- Es werden zusÀtzliche Views einegerichtet, die nur bei Fehlersuche und Analys (vom Entwickler) benötigt werden. 11 5 12 -- PostNAS 0.7 6 13 7 -- 2012-02-25 PostNAS 07, Umbenennung8 14 -- 2012-04-17 flstnr_ohne_position 9 15 -- 2012-04-24 pauschal Filter 'endet IS NULL' um historische Objekte auszublenden … … 13 19 -- 2013-03-12 Optimierung Hausnummern, View "gebaeude_txt" (Funktion und Name) 14 20 -- 2013-04-15 UnterdrÃŒcken doppelter Darstellung in den Views 'ap_pto_stra', 'ap_pto_nam', 'ap_pto_rest' 15 16 -- ----------------------------------------- 17 -- Sichten fuer Verwendung im mapfiles (wms) 18 -- ----------------------------------------- 19 20 -- WMS-Layer "ag_t_flurstueck" 21 -- --------------------------- 22 -- Die Geometrie befindet sich in "ap_pto", der Label in "ax_flurstueck" 23 -- Die Verbindung erfolgt ÃŒber "alkis_beziehungen" 24 25 -- Bruchnummerierung erzeugen 26 -- ALT 2012-04-17: Diese Version zeigt nur die manuell gesetzten Positionen 27 CREATE OR REPLACE VIEW s_flurstueck_nr 28 AS 29 SELECT f.ogc_fid, 30 p.wkb_geometry, -- Position des Textes 31 f.zaehler::text || COALESCE ('/' || f.nenner::text, '') AS fsnum 32 FROM ap_pto p 33 JOIN alkis_beziehungen v ON p.gml_id = v.beziehung_von 34 JOIN ax_flurstueck f ON v.beziehung_zu = f.gml_id 35 WHERE v.beziehungsart = 'dientZurDarstellungVon' 36 AND p.endet IS NULL 37 AND f.endet IS NULL; 38 COMMENT ON VIEW s_flurstueck_nr IS 'fuer Kartendarstellung: Bruchnummerierung FlurstÃŒck (nur manuell gesetzte Positionen)'; 39 40 -- Wenn keine manuelle Position gesetzt ist, wird die Flaechenmitte verwendet 41 42 -- ACHTUNG: Dieser View kann nicht direkt im Mapserver-WMS verwendet werden. 43 -- Die Anzeige ist zu langsam. Filterung ÃŒber BBOX kann nicht funktionieren, da zunÀchst ALLE Standardpositionen 44 -- berechnet werden mÃŒssen, bevor darÃŒber gefiltert werden kann. 45 46 -- In einer Hilfstabelle mit geometrischem Index zwischenspeichern. 47 -- Siehe PostProcessing Tabelle "pp_flurstueck_nr" 48 49 CREATE OR REPLACE VIEW s_flurstueck_nr2 50 AS 51 SELECT f.ogc_fid, 52 p.wkb_geometry, -- manuelle Position des Textes 53 f.zaehler::text || COALESCE ('/' || f.nenner::text, '') AS fsnum 54 FROM ap_pto p 55 JOIN alkis_beziehungen v ON p.gml_id = v.beziehung_von 56 JOIN ax_flurstueck f ON v.beziehung_zu = f.gml_id 57 WHERE v.beziehungsart = 'dientZurDarstellungVon' 58 AND p.endet IS NULL 59 AND f.endet IS NULL 60 UNION 61 SELECT f.ogc_fid, 62 ST_PointOnSurface(f.wkb_geometry) AS wkb_geometry, -- Flaechenmitte als Position des Textes 63 f.zaehler::text || COALESCE ('/' || f.nenner::text, '') AS fsnum 64 FROM ax_flurstueck f 65 LEFT JOIN alkis_beziehungen v ON v.beziehung_zu = f.gml_id 66 WHERE v.beziehungsart is NULL 67 AND f.endet IS NULL; 68 69 COMMENT ON VIEW s_flurstueck_nr2 IS 'Bruchnummerierung FlurstÃŒck, auch Standard-Position. Nicht direkt fuer WMS verwenden!'; 70 71 72 -- Layer "ag_t_gebaeude" 73 -- --------------------- 74 -- Problem: Zu einigen GebÀuden gibt es mehrere Hausnummern. 75 -- Diese unterscheiden sich im Feld ap_pto.advstandardmodell 76 -- z.B. 3 verschiedene EintrÀge mit <NULL>, {DKKM500}, {DKKM1000}, (Beispiel; Lage, Lange StraÃe 15 c) 77 78 -- DROP VIEW s_hausnummer_gebaeude; 79 -- CREATE OR REPLACE VIEW s_hausnummer_gebaeude 80 -- AS 81 -- SELECT p.ogc_fid, 82 -- p.wkb_geometry, -- Point 83 -- p.drehwinkel * 57.296 AS drehwinkel, -- umn: ANGLE [drehwinkel] 84 -- l.hausnummer -- umn: LABELITEM 85 -- FROM ap_pto p 86 -- JOIN alkis_beziehungen v 87 -- ON p.gml_id = v.beziehung_von 88 -- JOIN ax_lagebezeichnungmithausnummer l 89 -- ON v.beziehung_zu = l.gml_id 90 -- WHERE v.beziehungsart = 'dientZurDarstellungVon' 91 -- AND p.endet IS NULL 92 -- AND l.endet IS NULL; 93 -- COMMENT ON VIEW s_hausnummer_gebaeude IS 'fuer Kartendarstellung: Hausnummern HauptgebÀude'; 94 95 -- Verbesserte Version 2013-03-07 96 -- Nimmt nun vorzugsweise den Text der Darstellung aus ap_pto (bei ibR immer gefÃŒllt). 97 -- Wenn der nicht gefÃŒllt ist, wird statt dessen die Nummer aus der verknÃŒpften Labebezeichnung 98 -- verwendet (der hÀufigste Fall bei AED). 99 DROP VIEW s_hausnummer_gebaeude; 100 CREATE OR REPLACE VIEW s_hausnummer_gebaeude 101 AS 102 SELECT p.ogc_fid, 103 p.wkb_geometry, -- Point 104 p.drehwinkel * 57.296 AS drehwinkel, -- umn: ANGLE 105 -- p.art, 106 -- p.advstandardmodell AS modell, -- TEST 107 -- p.horizontaleausrichtung AS hor, -- = 'zentrisch' 108 -- p.vertikaleausrichtung AS ver, -- = 'Basis' (oft), "Mitte" (selten) 109 -- p.schriftinhalt, -- WMS: das bessere LABELITEM, kann aber leer sein 110 -- l.hausnummer, -- WMS: LABELITEM default/native 111 COALESCE(p.schriftinhalt, l.hausnummer) AS hausnummer 112 FROM ap_pto p 113 JOIN alkis_beziehungen v 114 ON p.gml_id = v.beziehung_von 115 JOIN ax_lagebezeichnungmithausnummer l 116 ON v.beziehung_zu = l.gml_id 117 WHERE p.art = 'HNR' 118 AND 'DKKM1000' = ANY (p.advstandardmodell) -- erste NÀherungslösung um Redundanzen zu unterdrÃŒcken 119 AND v.beziehungsart = 'dientZurDarstellungVon' 120 AND p.endet IS NULL 121 AND l.endet IS NULL 122 -- LIMIT 200 -- TEST 123 ; 124 COMMENT ON VIEW s_hausnummer_gebaeude IS 'fuer Kartendarstellung: Hausnummern HauptgebÀude'; 21 -- 2013-04-16 Thema "BodenschÀtzung" und fehlernde Kommentare zum Views ergÀnzt. 22 -- Diese Datei aufgeteilt in "sichten.sql" und "sichten_wms.sql" 23 125 24 126 25 -- Welche Karten-Typen ? 127 -- SELECT DISTINCT advstandardmodell FROM ap_pto p WHERE p.art = 'HNR'; 128 -- Liefert: 129 -- "{DKKM1000}" 130 -- "{DKKM1000,DKKM500}" 131 -- "{DKKM500}" 132 -- "" (IS NULL) 133 134 -- ibR (Mi-Lk): darzustellender Text steht immer in ap_pto.schriftinhalt 135 -- AED (Lippe): ap_pto.schriftinhalt ist meist leer, nur selten ein Eintrag 136 137 -- ToDo: Wie bei ap_pto_stra von mehren ap_pto zu einer Hausnummer die geeignete auswÀhlen 138 139 -- ToDo: In PostProcessing die Hausnummer von l.hausnummer in p.schriftinhalt kopieren, wenn leer 140 -- Das wÃŒrde die COALESCE-Trickserei ersparen 141 142 -- Layer "ag_t_nebengeb" 143 -- --------------------- 144 -- 2013-03-05: Diese Abfrage liefert keine Daten mehr?? 145 -- CREATE OR REPLACE VIEW s_nummer_nebengebaeude 146 -- AS 147 -- SELECT p.ogc_fid, 148 -- p.wkb_geometry, 149 -- p.drehwinkel * 57.296 AS drehwinkel, -- umn: ANGLE [drehwinkel] 150 -- -- l.pseudonummer, -- die HsNr des zugehoerigen Hauptgebaeudes 151 -- l.laufendenummer -- umn: LABELITEM - die laufende Nummer des Nebengebaeudes 152 -- FROM ap_pto p 153 -- JOIN alkis_beziehungen v 154 -- ON p.gml_id = v.beziehung_von 155 -- JOIN ax_lagebezeichnungmitpseudonummer l 156 -- ON v.beziehung_zu = l.gml_id 157 -- WHERE v.beziehungsart = 'dientZurDarstellungVon' 158 -- AND p.endet IS NULL 159 -- AND l.endet IS NULL; 160 -- COMMENT ON VIEW s_nummer_nebengebaeude IS 'fuer Kartendarstellung: Hausnummern NebengebÀude'; 161 162 -- Suche nach einem Ersatz: 163 -- ax_gebaeude >hat> ax_lagebezeichnungmitpseudonummer, kein Drehwinkel. 164 CREATE OR REPLACE VIEW lfdnr_nebengebaeude 165 AS 166 SELECT g.ogc_fid, 167 g.wkb_geometry, 168 -- l.pseudonummer, -- TEST die HsNr des zugehoerigen Hauptgebaeudes 169 l.laufendenummer -- umn: LABELITEM - die laufende Nummer des Nebengebaeudes 170 FROM ax_gebaeude g 171 JOIN alkis_beziehungen v 172 ON g.gml_id = v.beziehung_von 173 JOIN ax_lagebezeichnungmitpseudonummer l 174 ON v.beziehung_zu = l.gml_id 175 WHERE v.beziehungsart = 'hat' 176 AND g.endet IS NULL 177 AND g.endet IS NULL; 178 COMMENT ON VIEW lfdnr_nebengebaeude IS 'Laufende Nummer des NebengebÀudes zu einer Lagebezeichnung mit der FlÀchengeometrie des GebÀudes'; 179 180 181 -- GebÀude-Text 182 -- ------------ 183 CREATE OR REPLACE VIEW gebaeude_txt 184 AS 185 SELECT g.ogc_fid, 186 g.wkb_geometry, 187 g.name, -- selten gefÃŒllt 188 f.bezeichner AS funktion -- umn: LABELITEM 189 FROM ax_gebaeude g 190 JOIN ax_gebaeude_funktion f 191 ON g.gebaeudefunktion = f.wert 192 WHERE g.endet IS NULL 193 AND g.gebaeudefunktion < 9998; -- "Nach Quellenlage nicht zu spezifizieren" braucht man nicht anzeigen 194 COMMENT ON VIEW gebaeude_txt IS 'EntschlÃŒsselung der GebÀude-Funktion (Ersatz fÃŒr Symbole)'; 195 196 -- Layer "ag_p_flurstueck" 197 -- ----------------------- 198 CREATE OR REPLACE VIEW s_zugehoerigkeitshaken_flurstueck 199 AS 200 SELECT p.ogc_fid, 201 p.wkb_geometry, 202 p.drehwinkel * 57.296 AS drehwinkel, 203 f.flurstueckskennzeichen 204 FROM ap_ppo p 205 JOIN alkis_beziehungen v 206 ON p.gml_id = v.beziehung_von 207 JOIN ax_flurstueck f 208 ON v.beziehung_zu = f.gml_id 209 WHERE p.art = 'Haken' 210 AND v.beziehungsart = 'dientZurDarstellungVon' 211 AND f.endet IS NULL 212 AND p.endet IS NULL; 213 214 COMMENT ON VIEW s_zugehoerigkeitshaken_flurstueck IS 'fuer Kartendarstellung'; 215 216 -- Layer "s_zuordungspfeil_flurstueck" 217 -- ----------------------------------- 218 CREATE OR REPLACE VIEW s_zuordungspfeil_flurstueck 219 AS 220 SELECT l.ogc_fid, 221 l.wkb_geometry 222 FROM ap_lpo l 223 JOIN alkis_beziehungen v 224 ON l.gml_id = v.beziehung_von 225 JOIN ax_flurstueck f 226 ON v.beziehung_zu = f.gml_id 227 WHERE l.art = 'Pfeil' 228 AND v.beziehungsart = 'dientZurDarstellungVon' 229 AND ('DKKM1000' ~~ ANY (l.advstandardmodell)) 230 AND f.endet IS NULL 231 AND l.endet IS NULL; 232 233 COMMENT ON VIEW s_zuordungspfeil_flurstueck IS 'fuer Kartendarstellung: Zuordnungspfeil FlurstÃŒcksnummer'; 234 235 236 CREATE OR REPLACE VIEW s_zuordungspfeilspitze_flurstueck 237 AS 238 SELECT l.ogc_fid, 239 (((st_azimuth(st_pointn(l.wkb_geometry, 1), 240 st_pointn(l.wkb_geometry, 2)) * (- (180)::double precision)) / pi()) + (90)::double precision) AS winkel, 241 st_startpoint(l.wkb_geometry) AS wkb_geometry 242 FROM ap_lpo l 243 JOIN alkis_beziehungen v 244 ON l.gml_id = v.beziehung_von 245 JOIN ax_flurstueck f 246 ON v.beziehung_zu = f.gml_id 247 WHERE l.art = 'Pfeil' 248 AND v.beziehungsart = 'dientZurDarstellungVon' 249 AND ('DKKM1000' ~~ ANY (l.advstandardmodell)) 250 AND f.endet IS NULL 251 AND l.endet IS NULL; 252 253 COMMENT ON VIEW s_zuordungspfeilspitze_flurstueck IS 'fuer Kartendarstellung: Zuordnungspfeil FlurstÃŒcksnummer, Spitze'; 254 255 -- Drehwinkel in Bogenmass, wird vom mapserver in Grad benötigt. 256 -- Umrechnung durch Faktor (180 / Pi) 257 258 259 -- Layer NAME "ap_pto_stra" (StraÃe) GROUP "praesentation" 260 -- ------------------------------------------------------- 261 -- Von doppelten Textpositionen nur das passendere Modell anzeigen. 262 -- Eine Relation wird fuer die Gruppierung verwendet: 263 -- ap_pto >dientZurDarstellungVon> ax_lagebezeichnungohnehausnummer 264 CREATE OR REPLACE VIEW ap_pto_stra 265 AS 266 SELECT p.ogc_fid, 267 -- p.advstandardmodell AS modell, -- TEST 268 -- l.gml_id, l.unverschluesselt, l.lage AS schluessel, -- zur Lage TEST 269 p.schriftinhalt, -- WMS: LABELITEM 270 p.art, -- WMS: CLASSITEM 271 p.horizontaleausrichtung AS hor, -- Verfeinern der Text-Position .. 272 p.vertikaleausrichtung AS ver, -- .. durch Klassifizierung hor/ver 273 p.drehwinkel * 57.296 AS winkel, -- * 180 / Pi 274 p.wkb_geometry 275 FROM ap_pto p 276 JOIN alkis_beziehungen v -- Relation zur Lagebezeichnung o. HsNr. 277 ON p.gml_id = v.beziehung_von 278 JOIN ax_lagebezeichnungohnehausnummer l 279 ON v.beziehung_zu = l.gml_id 280 WHERE NOT p.schriftinhalt IS NULL 281 AND p.endet IS NULL -- nichts historisches 282 AND p.art IN ('Strasse','Weg','Platz','BezKlassifizierungStrasse') -- Diese Werte als CLASSES in LAYER behandeln. 283 AND v.beziehungsart = 'dientZurDarstellungVon' -- kann, muss aber nicht 284 AND ('DKKM1000' = ANY (p.advstandardmodell) -- "Lika 1000" bevorzugen 285 -- Ersatzweise auch "keine Angabe", aber nur wenn es keinen besseren Text zur Lage gibt 286 OR (p.advstandardmodell IS NULL 287 AND (SELECT s.ogc_fid -- irgend ein Feld 288 FROM ap_pto s -- eines anderen Textes (suchen) 289 JOIN alkis_beziehungen vs -- zur gleichen Lage o.HsNr 290 ON s.gml_id = vs.beziehung_von 291 JOIN ax_lagebezeichnungohnehausnummer ls 292 ON vs.beziehung_zu = ls.gml_id 293 WHERE ls.gml_id = l.gml_id 294 AND vs.beziehungsart = 'dientZurDarstellungVon' -- kann, muss aber nicht 295 AND NOT s.advstandardmodell IS NULL 296 LIMIT 1 -- einer reicht als Beweis 297 ) IS NULL 298 ) -- "Subquery IS NULL" liefert true wenn kein weiterer Text gefunden wird 299 ) 300 ; 301 COMMENT ON VIEW ap_pto_stra IS 'Beschriftung aus ap_pto fÃŒr Lagebezeichnung mit Art "StraÃe", "Weg", "Platz" oder Klassifizierung. Vorzugsweise mit advstandardmodell="DKKM1000", ersatzweise ohne Angabe'; 302 303 304 -- Layer NAME "ap_pto_nam" GROUP "praesentation" 305 -- ------------------------------------------------------- 306 -- 'NAM' = Name (Eigenname) und 'ZNM' = Zweitname (touristischer oder volkstÃŒmlicher Name) zu ... 307 -- -- AX_Strassenverkehr oder AX_Platz usw. 308 -- ap_pto >dientZurDarstellungVon> ?irgendwas? 309 310 -- Dieser View wird bisher nicht verwendet. Dazu mÃŒsste ein neuer Layer erzeugt werden und die 311 -- Arten 'NAM' und 'ZNM' dann aus den View 'ap_pto_rest' heraus genommen werden. 312 313 -- Entweder Layer trennen nach Text-Typen "NAM"+"ZNM" und dem Rest 314 -- ODER trennen nach fachlichen Ebenen wie "Nutzung" und "GebÀude" und .... 315 316 CREATE OR REPLACE VIEW ap_pto_nam 317 AS 318 SELECT p.ogc_fid, 319 -- p.advstandardmodell AS modell, -- TEST 320 p.schriftinhalt, -- WMS: LABELITEM 321 p.art, -- WMS: CLASSITEM 322 p.horizontaleausrichtung AS hor, -- Verfeinern der Text-Position .. 323 p.vertikaleausrichtung AS ver, -- .. durch Klassifizierung hor/ver 324 p.drehwinkel * 57.296 AS winkel, -- * 180 / Pi 325 p.wkb_geometry 326 FROM ap_pto p 327 JOIN alkis_beziehungen v 328 ON p.gml_id = v.beziehung_von 329 --JOIN nutzung l -- Im PostProcessing zusammen gefasste Nutzungsarten-Abschnitte 330 -- ON v.beziehung_zu = l.gml_id 331 WHERE NOT p.schriftinhalt IS NULL 332 AND p.endet IS NULL -- nichts historisches 333 AND p.art IN ('NAM','ZNM') -- Diese Werte als CLASSES in LAYER behandeln. 334 AND v.beziehungsart = 'dientZurDarstellungVon' -- kann, muss aber nicht 335 AND ('DKKM1000' = ANY (p.advstandardmodell) -- "Lika 1000" bevorzugen 336 -- Ersatzweise auch "keine Angabe", aber nur wenn es keinen besseren Text zur Lage gibt 337 OR (p.advstandardmodell IS NULL 338 AND (SELECT vs.beziehung_zu -- irgend ein Feld 339 FROM ap_pto s -- eines anderen Textes (suchen) 340 JOIN alkis_beziehungen vs -- zur gleichen ?irgendwas? 341 ON s.gml_id = vs.beziehung_von 342 WHERE vs.beziehung_zu = v.beziehung_zu 343 AND vs.beziehungsart = 'dientZurDarstellungVon' -- kann, muss aber nicht 344 AND NOT s.advstandardmodell IS NULL 345 LIMIT 1 -- einer reicht als Beweis 346 ) IS NULL 347 ) -- "Subquery IS NULL" liefert true wenn kein weiterer Text gefunden wird 348 ) 349 ; 350 COMMENT ON VIEW ap_pto_nam IS 'Beschriftung mit Art = Name/Zweitname. Vorzugsweise mit advstandardmodell="DKKM1000", ersatzweise ohne Angabe'; 351 352 353 -- Layer NAME "ap_pto" GROUP "praesentation" 354 -- ---------------------------------------- 355 -- REST: Texte, die nicht schon in einem anderen Layer ausgegeben werden 356 -- Ersetzt den View "s_beschriftung" 357 358 -- alte Version bis 2013-04-15 359 -- Nachteil: es werden mehrere Texte zum gleichen Objekt angezeigt die fÃŒr verschiedene MaÃstÀbe gedacht sind. 360 --CREATE OR REPLACE VIEW ap_pto_rest 361 --AS 362 -- SELECT p.ogc_fid, 363 -- p.schriftinhalt, 364 -- p.art, 365 -- p.drehwinkel * 57.296 AS winkel, -- * 180 / Pi 366 -- p.wkb_geometry 367 -- FROM ap_pto p 368 -- WHERE not p.schriftinhalt IS NULL 369 -- AND p.endet IS NULL 370 -- AND p.art NOT IN ('HNR','Strasse','Weg','Platz','BezKlassifizierungStrasse','AOG_AUG'); 371 372 373 -- 2013-04-15 Doppelte Darstellung aufgrund verschiedener "advstandardmodell" zum Objekt unterdrÃŒcken analog ap_pto_stra und ap_pto_nam 374 CREATE OR REPLACE VIEW ap_pto_rest 375 AS 376 SELECT p.ogc_fid, 377 p.schriftinhalt, 378 p.art, 379 p.drehwinkel * 57.296 AS winkel, -- * 180 / Pi 380 p.wkb_geometry 381 FROM ap_pto p 382 JOIN alkis_beziehungen v -- Relation zur ?irgendwas? 383 ON p.gml_id = v.beziehung_von 384 WHERE not p.schriftinhalt IS NULL 385 AND p.endet IS NULL 386 AND p.art NOT IN ('HNR','Strasse','Weg','Platz','BezKlassifizierungStrasse','AOG_AUG') 387 -- Diese 'IN'-Liste fortschreiben bei Erweiterungen des Mapfiles 388 -- 'PNR' (Pseudonummer, lfd.-Nr.-NebengebÀude) kommt nicht mehr vor? 389 AND v.beziehungsart = 'dientZurDarstellungVon' -- kann, muss aber nicht 390 AND ('DKKM1000' = ANY (p.advstandardmodell) -- "Lika 1000" bevorzugen 391 -- Ersatzweise auch "keine Angabe" (nul) akzeptieren, aber nur wenn es keinen besseren Text zu ?irgendwas? gibt 392 -- Es wird hier nur bis zur Verbindungstabelle "alkis_beziehungen" gesucht, ob am anderen Ende die gleiche gml_id verlinkt ist. 393 -- Diese gml_id können dann zu verschiedenen, unbekannten Objekttabellen linken. 394 OR (p.advstandardmodell IS NULL 395 AND (SELECT vs.beziehung_zu -- irgend ein Feld 396 FROM ap_pto s -- eines anderen Textes (suchen) 397 JOIN alkis_beziehungen vs -- zur gleichen ?irgendwas? 398 ON s.gml_id = vs.beziehung_von 399 WHERE vs.beziehung_zu = v.beziehung_zu 400 AND vs.beziehungsart = 'dientZurDarstellungVon' -- kann, muss aber nicht 401 AND NOT s.advstandardmodell IS NULL 402 LIMIT 1 -- einer reicht als AusschluÃkriterium 403 ) IS NULL 404 ) -- "Subquery IS NULL" liefert true wenn kein weiterer Text gefunden wird 405 ); 406 COMMENT ON VIEW ap_pto_rest IS 'Beschriftungen aus "ap_pto", die noch nicht in anderen Layern angezeigt werden'; 407 26 CREATE OR REPLACE VIEW kartentypen_der_texte_fuer_hnr 27 AS 28 SELECT DISTINCT advstandardmodell 29 FROM ap_pto p 30 WHERE p.art = 'HNR'; 31 COMMENT ON VIEW kartentypen_der_texte_fuer_hnr 32 IS 'Datenanalyse: Kartentypen in Tabelle ap_pto fÃŒr Hausnummern.'; 33 34 -- Dies liefert: 35 -- "{DKKM1000}" 36 -- "{DKKM1000,DKKM500}" 37 -- "{DKKM500}" 38 -- NULL 408 39 409 40 -- Texte, die NICHT dargestellt werden sollen. … … 421 52 AND p.endet IS NULL 422 53 AND p.art IN ('AOG_AUG','PNR'); 423 COMMENT ON VIEW ap_pto_muell IS 'Beschriftungen aus "ap_pto", die NICHT dargestellt werden sollen.'; 424 425 -- ENDE BESCHRIFTUNG 426 427 -- Layer "s_zuordungspfeil_gebaeude" 428 -- ----------------------------------- 429 CREATE OR REPLACE VIEW s_zuordungspfeil_gebaeude 430 AS 431 SELECT l.ogc_fid, 432 -- alkis_beziehungen.beziehungsart, -- TEST 433 -- ap_lpo.art, -- TEST 434 l.wkb_geometry 435 FROM ap_lpo l 436 JOIN alkis_beziehungen v 437 ON l.gml_id = v.beziehung_von 438 JOIN ax_gebaeude g 439 ON v.beziehung_zu = g.gml_id 440 WHERE l.art = 'Pfeil' 441 AND v.beziehungsart = 'dientZurDarstellungVon' 442 AND g.endet IS NULL 443 AND l.endet IS NULL; 444 COMMENT ON VIEW s_zuordungspfeil_gebaeude IS 'fuer Kartendarstellung: Zuordnungspfeil fÃŒr GebÀude-Nummer'; 445 446 -- Grenzpunkte 447 -- ----------- 448 -- ax_punktortta >zeigtAuf?> AX_Grenzpunkt 449 -- Zum Punktort des Grenzpunktes auch eine Information zur Vermarkung holen 450 CREATE OR REPLACE VIEW grenzpunkt 451 AS 452 SELECT o.ogc_fid, 453 o.wkb_geometry, 454 -- g.punktkennung, -- ggf spÀter als labelitem "rrrrrhhhhAnnnnn" "32483 5751 0 02002" 455 g.abmarkung_marke, -- steuert die Darstellung >9000 = unvermarkt 456 v.beziehungsart 457 FROM ax_punktortta o 458 JOIN alkis_beziehungen v 459 ON o.gml_id = v.beziehung_von 460 JOIN ax_grenzpunkt g 461 ON v.beziehung_zu = g.gml_id 462 WHERE v.beziehungsart = 'istTeilVon' 463 AND g.endet IS NULL 464 AND g.endet IS NULL; 465 COMMENT ON VIEW grenzpunkt IS 'ZusammenfÃŒhrung von Punktort (Geometrie) und AX_Grenzpunkt (Eigenschaften)'; 466 467 -- Sichten vom OBK (Oberbergischer Kreis) 468 -- -------------------------------------- 469 CREATE OR REPLACE VIEW sk2004_zuordnungspfeil 470 AS 471 SELECT ap.ogc_fid, ap.wkb_geometry 472 FROM ap_lpo ap 473 WHERE ((ap.signaturnummer = '2004') 474 AND ('DKKM1000'::text ~~ ANY ((ap.advstandardmodell)::text[]))); 475 COMMENT ON VIEW sk2004_zuordnungspfeil IS 'fuer Kartendarstellung: Zuordnungspfeil FlurstÃŒcksnummer"'; 476 477 CREATE OR REPLACE VIEW sk2004_zuordnungspfeil_spitze 478 AS 479 SELECT ap.ogc_fid, (((st_azimuth(st_pointn(ap.wkb_geometry, 1), 480 st_pointn(ap.wkb_geometry, 2)) * (- (180)::double precision)) / pi()) + (90)::double precision) AS winkel, 481 st_startpoint(ap.wkb_geometry) AS wkb_geometry 482 FROM ap_lpo ap 483 WHERE ((ap.signaturnummer = '2004') 484 AND ('DKKM1000'::text ~~ ANY ((ap.advstandardmodell)::text[]))); 485 -- krz: ap.signaturnummer is NULL in allen SÀtzen 486 487 CREATE OR REPLACE VIEW sk2012_flurgrenze 488 AS 489 SELECT fg.ogc_fid, fg.wkb_geometry 490 FROM ax_besondereflurstuecksgrenze fg 491 WHERE (3000 = ANY (fg.artderflurstuecksgrenze)) 492 AND fg.advstandardmodell ~~ 'DLKM'::text; 493 COMMENT ON VIEW sk2012_flurgrenze IS 'fuer Kartendarstellung: besondere FlurstÃŒcksgrenze "Flurgrenze"'; 494 495 CREATE OR REPLACE VIEW sk2014_gemarkungsgrenze 496 AS 497 SELECT gemag.ogc_fid, gemag.wkb_geometry 498 FROM ax_besondereflurstuecksgrenze gemag 499 WHERE (7003 = ANY (gemag.artderflurstuecksgrenze)) 500 AND gemag.advstandardmodell ~~ 'DLKM'::text; 501 COMMENT ON VIEW sk2014_gemarkungsgrenze IS 'fuer Kartendarstellung: besondere FlurstÃŒcksgrenze "Gemarkungsgrenze"'; 502 503 CREATE OR REPLACE VIEW sk2018_bundeslandgrenze 504 AS 505 SELECT blg.ogc_fid, blg.wkb_geometry 506 FROM ax_besondereflurstuecksgrenze blg 507 WHERE (7102 = ANY (blg.artderflurstuecksgrenze)) 508 AND blg.advstandardmodell ~~ 'DLKM'::text; 509 COMMENT ON VIEW sk2018_bundeslandgrenze IS 'fuer Kartendarstellung: besondere FlurstÃŒcksgrenze "Bundeslandgrenze"'; 510 511 CREATE OR REPLACE VIEW sk2020_regierungsbezirksgrenze 512 AS 513 SELECT rbg.ogc_fid, rbg.wkb_geometry 514 FROM ax_besondereflurstuecksgrenze rbg 515 WHERE (7103 = ANY (rbg.artderflurstuecksgrenze)) 516 AND rbg.advstandardmodell ~~ 'DLKM'::text; 517 COMMENT ON VIEW sk2020_regierungsbezirksgrenze IS 'fuer Kartendarstellung: besondere FlurstÃŒcksgrenze "Regierungsbezirksgrenze"'; 518 519 CREATE OR REPLACE VIEW sk2022_gemeindegrenze 520 AS 521 SELECT gemg.ogc_fid, gemg.wkb_geometry 522 FROM ax_besondereflurstuecksgrenze gemg 523 WHERE (7106 = ANY (gemg.artderflurstuecksgrenze)) 524 AND gemg.advstandardmodell ~~ 'DLKM'::text; 525 COMMENT ON VIEW sk2022_gemeindegrenze IS 'fuer Kartendarstellung: besondere FlurstÃŒcksgrenze "Gemeindegrenze"'; 526 527 528 -- Zusammenfassung "Politische Grenzen" Art= 7102, 7103, 7104, 7106 529 530 -- Grenze der Bundesrepublik Deutschland 7101 (G) 531 -- .. des Bundeslandes 7102 (G) 532 -- .. des Regierungsbezirks 7103 (G) 533 -- .. des Landkreises 7104 (G) 534 -- .. der Gemeinde 7106 535 -- .. des Gemeindeteils 7107 536 -- .. der Verwaltungsgemeinschaft 7108 537 538 CREATE OR REPLACE VIEW sk201x_politische_grenze 539 AS 540 SELECT ogc_fid, artderflurstuecksgrenze as art, wkb_geometry 541 FROM ax_besondereflurstuecksgrenze 542 --WHERE ( ANY (artderflurstuecksgrenze) IN (7102,7103,7104,7106) ) 543 WHERE (7102 = ANY (artderflurstuecksgrenze) 544 OR 7102 = ANY (artderflurstuecksgrenze) 545 OR 7103 = ANY (artderflurstuecksgrenze) 546 OR 7104 = ANY (artderflurstuecksgrenze) 547 OR 7106 = ANY (artderflurstuecksgrenze) 548 ) 549 AND advstandardmodell ~~ 'DLKM'::text; 550 551 COMMENT ON VIEW sk201x_politische_grenze IS 'fuer Kartendarstellung: besondere FlurstÃŒcksgrenze Politische Grenzen (Bund, Land, Kreis, Gemeinde)'; 552 -- GefÀllt mir nicht! Array-Felder eignen sich nicht als Filter. Optimierung: in Tabelle speichern 553 554 555 -- ------------------------------------------ 556 -- Sichten fuer Fehlersuche und Daten-Analyse 557 -- ------------------------------------------ 54 COMMENT ON VIEW ap_pto_muell IS 'Datenanalyse: Beschriftungen aus "ap_pto", die NICHT dargestellt werden sollen.'; 55 558 56 559 57 -- FlurstÃŒcke mit Anzeige der FlurstÃŒcksnummer an der "Standardposition" … … 580 78 --ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler 581 79 ; 582 COMMENT ON VIEW flstnr_ohne_position IS ' FlurstÃŒcke ohne manuell gesetzte Position fÃŒr die PrÀsentation der FS-Nr';80 COMMENT ON VIEW flstnr_ohne_position IS 'Sicht fÃŒr Datenanalyse: FlurstÃŒcke ohne manuell gesetzte Position fÃŒr die PrÀsentation der FS-Nr'; 583 81 584 82 -- Umbruch im Label? z.B. "Schwimm-/nbecken" … … 590 88 WHERE not schriftinhalt is null 591 89 AND schriftinhalt like '%/n%'; 592 90 COMMENT ON VIEW texte_mit_umbruch IS 'Sicht fÃŒr Datenanalyse: Vorkommen eines Umbruchs im Label-Text.'; 593 91 594 92 -- EXTENT fÃŒr das Mapfile eines Mandanten ermitteln … … 600 98 FROM ax_flurstueck f 601 99 WHERE f.endet IS NULL; 602 COMMENT ON VIEW flurstuecks_minmax IS ' Maximale Ausdehnung von ax_flurstueck fuer EXTENT-Angabe im Mapfile';100 COMMENT ON VIEW flurstuecks_minmax IS 'Sicht fÃŒr Datenanalyse: Maximale Ausdehnung von ax_flurstueck fuer EXTENT-Angabe im Mapfile.'; 603 101 604 102 -- Nach Laden der Keytables: … … 621 119 ON r.land = d.land 622 120 AND r.stelle = d.stelle 623 WHERE r.endet IS NULL 624 AND d.endet IS NULL;121 WHERE r.endet IS NULL AND d.endet IS NULL ; 122 COMMENT ON VIEW baurecht IS 'Datenanalyse: EnstschlÃŒsselte Felder zu einer FlÀche des Baurechts.'; 625 123 626 124 -- Man glaubt es kaum, aber im ALKIS haben Gemeinde und Gemarkung keinerlei Beziehung miteinander … … 631 129 FROM ax_flurstueck 632 130 WHERE endet IS NULL 633 ORDER BY land, regierungsbezirk, kreis, gemeinde, gemarkungsnummer 634 ; 635 131 ORDER BY land, regierungsbezirk, kreis, gemeinde, gemarkungsnummer; 636 132 COMMENT ON VIEW gemarkung_in_gemeinde IS 'Welche Gemarkung liegt in welcher Gemeinde? Durch Verweise aus FlurstÃŒck.'; 637 133 … … 645 141 WHERE endet IS NULL 646 142 GROUP BY st_geometrytype(wkb_geometry); 143 COMMENT ON VIEW arten_von_flurstuecksgeometrie IS 'Datenanalyse: vorkommende Geometry-Typen in Tabelle ax_flurstueck.'; 647 144 648 145 … … 651 148 -- Verschluesselte Lagebezeichnung (Strasse und Hausnummer) fuer eine Gemeinde 652 149 -- Schluessel der Gemeinde nach Bedarf anpassen! 653 654 -- FEHLER: Funktion to_char(character varying, unknown) existiert nicht655 656 657 150 CREATE OR REPLACE VIEW adressen_hausnummern 658 151 AS 659 152 SELECT 660 153 s.bezeichnung AS strassenname, 661 662 663 664 665 666 667 154 g.bezeichnung AS gemeindename, 155 l.land, 156 l.regierungsbezirk, 157 l.kreis, 158 l.gemeinde, 159 l.lage AS strassenschluessel, 160 l.hausnummer 668 161 FROM ax_lagebezeichnungmithausnummer l 669 162 JOIN ax_gemeinde g … … 673 166 ON l.kreis=s.kreis 674 167 AND l.gemeinde=s.gemeinde 675 AND l.lage = s.lage -- ab PostNAS 0.6676 WHERE 677 168 AND l.lage = s.lage 169 WHERE l.gemeinde = 40; -- "40" = Stadt Lage 170 COMMENT ON VIEW adressen_hausnummern IS 'Datenanalyse: VerschlÃŒsselte Lagebezeichnung (StraÃe und Hausnummer) fÃŒr eine Gemeinde. SchlÃŒssel der Gemeinde nach Bedarf anpassen.'; 678 171 679 172 -- Zuordnung dieser Adressen zu Flurstuecken 680 173 -- Schluessel der Gemeinde nach Bedarf anpassen! 681 682 174 CREATE OR REPLACE VIEW adressen_zum_flurstueck 683 175 AS … … 702 194 ON l.kreis=s.kreis 703 195 AND l.gemeinde=s.gemeinde 704 AND l.lage = s.lage -- ab PostNAS 0.6196 AND l.lage = s.lage 705 197 WHERE v.beziehungsart='weistAuf' 706 198 AND l.gemeinde = 40 -- "40" = Stadt Lage 707 ORDER BY 708 f.gemarkungsnummer, 709 f.flurnummer, 710 f.zaehler, 711 f.nenner; 199 ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner; 200 COMMENT ON VIEW adressen_zum_flurstueck IS 'Datenanalyse: Zuordnung von Adressen zu Flurstuecken. SchlÃŒssel der Gemeinde nach Bedarf anpassen.'; 712 201 713 202 -- Punktförmige P r À s e n t a t i o n s o b j k t e (ap_pto) … … 815 304 AND bgs.beziehungsart = 'istBestandteilVon' -- Buchungs-Stelle >> Grundbuch 816 305 AND bsf.beziehungsart = 'istGebucht' -- Flurstueck >> Buchungs-Stelle 817 AND p.endet IS NULL 818 AND n.endet IS NULL 819 AND g.endet IS NULL 820 AND b.endet IS NULL 821 AND s.endet IS NULL 822 AND f.endet IS NULL 823 AND k.endet IS NULL 824 ORDER BY 825 k.bezeichnung, 826 f.flurnummer, 827 f.zaehler, 828 f.nenner, 829 g.bezirk, 830 g.buchungsblattnummermitbuchstabenerweiterung, 831 s.laufendenummer 832 ; 833 306 AND p.endet IS NULL AND n.endet IS NULL AND g.endet IS NULL AND b.endet IS NULL 307 AND s.endet IS NULL AND f.endet IS NULL AND k.endet IS NULL 308 ORDER BY k.bezeichnung, f.flurnummer, f.zaehler, f.nenner, g.bezirk, g.buchungsblattnummermitbuchstabenerweiterung, s.laufendenummer; 309 COMMENT ON VIEW flurstuecke_eines_eigentuemers IS 'Muster fÃŒr Export: Suchkriteriumnach Bedarf anpassen.'; 834 310 835 311 -- Rechte eines EigentÃŒmers … … 844 320 845 321 -- Ãbersicht der Tabellen: 846 --847 322 -- Person <benennt< NamNum. >istBestandteilVon> Blatt <istBestandteilVon< Stelle-h >an> Stelle-d >istGebucht> Flurstueck 848 849 323 -- Wobei ">xxx>" = JOIN ÃŒber die Verbindungs-Tabelle "alkis_beziehungen" mit der Beziehungsart "xxx". 850 851 324 852 325 CREATE OR REPLACE VIEW rechte_eines_eigentuemers … … 896 369 AND bss.beziehungsart in ('an','zu') -- B-Stelle herr. >> B-Stelle dien. 897 370 AND bsf.beziehungsart = 'istGebucht' -- Flurstueck >> B-Stelle dien 898 AND p.endet IS NULL 899 AND n.endet IS NULL 900 AND g.endet IS NULL 901 AND b.endet IS NULL 902 AND sh.endet IS NULL 903 AND sd.endet IS NULL 904 AND f.endet IS NULL 905 AND k.endet IS NULL 906 ORDER BY 907 k.bezeichnung, 908 f.flurnummer, 909 f.zaehler, 910 f.nenner, 911 g.bezirk, 912 g.buchungsblattnummermitbuchstabenerweiterung, 913 sh.laufendenummer 914 ; 915 916 CREATE OR REPLACE VIEW beziehungen_redundant 917 AS 918 SELECT * 919 FROM alkis_beziehungen AS bezalt 920 WHERE EXISTS 921 (SELECT ogc_fid 922 FROM alkis_beziehungen AS bezneu 923 WHERE bezalt.beziehung_von = bezneu.beziehung_von 924 AND bezalt.beziehung_zu = bezneu.beziehung_zu 925 AND bezalt.beziehungsart = bezneu.beziehungsart 926 AND bezalt.ogc_fid < bezneu.ogc_fid 927 ); 928 929 COMMENT ON VIEW beziehungen_redundant IS 'alkis_beziehungen zu denen es eine identische neue Version gibt.'; 930 931 932 CREATE OR REPLACE VIEW beziehungen_redundant_in_delete 933 AS 934 SELECT * 935 FROM alkis_beziehungen AS bezalt 936 WHERE EXISTS 937 (SELECT ogc_fid 938 FROM alkis_beziehungen AS bezneu 939 WHERE bezalt.beziehung_von = bezneu.beziehung_von 940 AND bezalt.beziehung_zu = bezneu.beziehung_zu 941 AND bezalt.beziehungsart = bezneu.beziehungsart 942 AND bezalt.ogc_fid < bezneu.ogc_fid 943 ) 944 -- mit dem Zusatz nur die Faelle aus dem letzten Durchlauf, 945 -- die aktuell noch in der Delet-Tabelle stehen 946 AND EXISTS 947 (SELECT ogc_fid 948 FROM delete 949 WHERE bezalt.beziehung_von = substr(featureid, 1, 16) 950 OR bezalt.beziehung_zu = substr(featureid, 1, 16) 951 ); 952 953 COMMENT ON VIEW beziehungen_redundant_in_delete IS 'alkis_beziehungen zu denen es eine identische neue Version gibt und wo das Objekt noch in der delete-Tabelle vorkommt.'; 371 AND p.endet IS NULL AND n.endet IS NULL AND g.endet IS NULL AND b.endet IS NULL 372 AND sh.endet IS NULL AND sd.endet IS NULL AND f.endet IS NULL AND k.endet IS NULL 373 ORDER BY k.bezeichnung, f.flurnummer, f.zaehler, f.nenner, g.bezirk, g.buchungsblattnummermitbuchstabenerweiterung, sh.laufendenummer; 374 COMMENT ON VIEW rechte_eines_eigentuemers IS 'Muster fÃŒr Export: Suchkriteriumnach Bedarf anpassen. Dies ergÀnzt "flurstuecke_eines_eigentuemers" um die FÀlle mit besonderen Buchungen.'; 375 376 -- Die 2 Views nur fuer Entwicklung: 377 378 -- CREATE OR REPLACE VIEW beziehungen_redundant 379 -- AS 380 -- SELECT * 381 -- FROM alkis_beziehungen AS bezalt 382 -- WHERE EXISTS 383 -- (SELECT ogc_fid 384 -- FROM alkis_beziehungen AS bezneu 385 -- WHERE bezalt.beziehung_von = bezneu.beziehung_von 386 -- AND bezalt.beziehung_zu = bezneu.beziehung_zu 387 -- AND bezalt.beziehungsart = bezneu.beziehungsart 388 -- AND bezalt.ogc_fid < bezneu.ogc_fid 389 -- ); 390 -- COMMENT ON VIEW beziehungen_redundant IS 'Datenanalyse: alkis_beziehungen zu denen es eine identische neue Version gibt. Fehlersuche bei PostNAS-Trigger fÃŒr Replace.'; 391 -- 392 -- CREATE OR REPLACE VIEW beziehungen_redundant_in_delete 393 -- AS 394 -- SELECT * 395 -- FROM alkis_beziehungen AS bezalt 396 -- WHERE EXISTS 397 -- (SELECT ogc_fid 398 -- FROM alkis_beziehungen AS bezneu 399 -- WHERE bezalt.beziehung_von = bezneu.beziehung_von 400 -- AND bezalt.beziehung_zu = bezneu.beziehung_zu 401 -- AND bezalt.beziehungsart = bezneu.beziehungsart 402 -- AND bezalt.ogc_fid < bezneu.ogc_fid 403 -- ) 404 -- -- mit dem Zusatz nur die Faelle aus dem letzten Durchlauf, 405 -- -- die aktuell noch in der Delete-Tabelle stehen 406 -- AND EXISTS 407 -- (SELECT ogc_fid 408 -- FROM delete 409 -- WHERE bezalt.beziehung_von = substr(featureid, 1, 16) 410 -- OR bezalt.beziehung_zu = substr(featureid, 1, 16) 411 -- ); 412 -- COMMENT ON VIEW beziehungen_redundant_in_delete IS 'Datenanalyse: alkis_beziehungen zu denen es eine identische neue Version gibt und wo das Objekt noch in der delete-Tabelle vorkommt. Fehlersuche bei PostNAS-Trigger fÃŒr Replace.'; 954 413 955 414 … … 970 429 -- Noch einfacher? - Auch ohne JOIN wird das selbe Ergebnis geliefert. 971 430 -- Doppelte Verweise zÀhlen ohne zu prÃŒfen, ob die gml_id in ax_flurstueck existiert. 972 -- SELECT b.beziehung_von, count(b.ogc_fid) AS anzahl973 -- FROM alkis_beziehungen b974 -- WHERE b.beziehungsart = 'istGebucht'975 -- GROUP BY b.beziehung_von976 -- HAVING count(b.ogc_fid) > 1;431 -- SELECT b.beziehung_von, count(b.ogc_fid) AS anzahl 432 -- FROM alkis_beziehungen b 433 -- WHERE b.beziehungsart = 'istGebucht' 434 -- GROUP BY b.beziehung_von 435 -- HAVING count(b.ogc_fid) > 1; 977 436 978 437 COMMENT ON VIEW mehrfache_buchung_zu_fs IS 'Nach replace von ax_flurtstueck mit einer neuen ax_buchungsstelle bleibt die alte Verbindung in alkis_beziehungen';
Note: See TracChangeset
for help on using the changeset viewer.