source: trunk/import/sichten.sql @ 259

Revision 215, 28.1 KB checked in by astrid.emde, 11 years ago (diff)

Dateien in das neue Verzeichnis /import für die Importskripte verschoben, vorher unter /data/postnas_0.7

Line 
1-- =====
2-- ALKIS
3-- =====
4
5--  PostNAS 0.7
6
7--  2012-02-25 PostNAS 07, Umbenennung
8--  2012-04-17 flstnr_ohne_position
9--  2012-04-24 pauschal Filter 'endet IS NULL' um historische Objekte auszublenden
10--  2012-10-29 Redundanzen in Beziehungen suchen (entstehen durch replace)
11
12--  -----------------------------------------
13--  Sichten fuer Verwendung im mapfiles (wms)
14--  -----------------------------------------
15
16
17-- WMS-Layer "ag_t_flurstueck"
18-- ---------------------------
19
20-- Die Geometrie befindet sich in "ap_pto", der Label in "ax_flurstueck"
21-- Die Verbindung erfolgt ÃŒber "alkis_beziehungen"
22
23
24-- Bruchnummerierung erzeugen
25-- ALT 2012-04-17: Diese Version zeigt nur die manuell gesetzten Positionen
26CREATE OR REPLACE VIEW s_flurstueck_nr
27AS
28 SELECT f.ogc_fid,
29        p.wkb_geometry,  -- Position des Textes
30        f.zaehler::text || COALESCE ('/' || f.nenner::text, '') AS fsnum
31   FROM ap_pto             p
32   JOIN alkis_beziehungen  v  ON p.gml_id       = v.beziehung_von
33   JOIN ax_flurstueck      f  ON v.beziehung_zu = f.gml_id
34  WHERE v.beziehungsart = 'dientZurDarstellungVon'
35    AND p.endet IS NULL
36    AND f.endet IS NULL
37  --AND p."art" = 'ZAE_NEN'
38  ;
39
40COMMENT ON VIEW s_flurstueck_nr IS 'fuer Kartendarstellung: Bruchnummerierung FlurstÃŒck';
41
42-- NEU 2012-04-17
43-- Wenn keine manuelle Position gesetzt ist, wird die Flaechenmitte verwendet
44
45-- ACHTUNG: Dieser View kann nicht direkt im Mapserver-WMS verwendet werden.
46-- Die Anzeige ist zu langsam. Filterung Ìber BBOX kann nicht funktionieren, da zunÀchst ALLE Standardpositionen
47-- berechnet werden mÃŒssen, bevor darÃŒber gefiltert werden kann.
48
49-- FAZIT: In einer Hilfstabelle mit geometrischem Index zwischenspeichern.
50--        Siehe PostProcessing Tabelle "pp_flurstueck_nr"
51
52CREATE OR REPLACE VIEW s_flurstueck_nr2
53AS
54  SELECT f.ogc_fid,
55         p.wkb_geometry,  -- manuelle Position des Textes
56         f.zaehler::text || COALESCE ('/' || f.nenner::text, '') AS fsnum
57    FROM ap_pto             p
58    JOIN alkis_beziehungen  v  ON p.gml_id       = v.beziehung_von
59    JOIN ax_flurstueck      f  ON v.beziehung_zu = f.gml_id
60   WHERE v.beziehungsart = 'dientZurDarstellungVon'
61     AND p.endet IS NULL
62     AND f.endet IS NULL
63   --AND p."art" = 'ZAE_NEN'
64 UNION
65  SELECT f.ogc_fid,
66         ST_PointOnSurface(f.wkb_geometry) AS wkb_geometry,  -- Flaechenmitte als Position des Textes
67         f.zaehler::text || COALESCE ('/' || f.nenner::text, '') AS fsnum
68    FROM      ax_flurstueck     f
69    LEFT JOIN alkis_beziehungen v  ON v.beziehung_zu = f.gml_id
70   WHERE v.beziehungsart is NULL
71     AND f.endet IS NULL
72  ;
73
74COMMENT ON VIEW s_flurstueck_nr2 IS 'Bruchnummerierung FlurstÃŒck, auch Standard-Position. Nicht direkt fuer WMS verwenden';
75
76
77-- Layer "ag_t_gebaeude"
78-- ---------------------
79
80-- Problem: Zu einigen GebÀuden gibt es mehrere Hausnummern.
81-- Diese unterscheiden sich im Feld ap-pto.advstandardmodell
82-- z.B. 3 verschiedene EintrÀge mit <NULL>, {DKKM500}, {DKKM1000}, (Beispiel; Lage, Lange Straße 15 c)
83
84
85CREATE OR REPLACE VIEW s_hausnummer_gebaeude
86AS
87 SELECT p.ogc_fid,
88        p.wkb_geometry,                         -- Point
89        p.drehwinkel * 57.296 AS drehwinkel,    -- umn: ANGLE [drehwinkel]
90        l.hausnummer                            -- umn: LABELITEM
91   FROM ap_pto p
92   JOIN alkis_beziehungen v
93     ON p.gml_id = v.beziehung_von
94   JOIN ax_lagebezeichnungmithausnummer l
95     ON v.beziehung_zu  = l.gml_id
96  WHERE v.beziehungsart = 'dientZurDarstellungVon'
97    AND p.endet IS NULL
98    AND l.endet IS NULL;
99
100COMMENT ON VIEW s_hausnummer_gebaeude IS 'fuer Kartendarstellung: Hausnummern HauptgebÀude';
101
102
103-- Layer "ag_t_nebengeb"
104-- ---------------------
105
106CREATE OR REPLACE VIEW s_nummer_nebengebaeude
107AS
108 SELECT p.ogc_fid,
109        p.wkb_geometry,
110        p.drehwinkel * 57.296 AS drehwinkel,    -- umn: ANGLE [drehwinkel]
111     -- v.beziehungsart,                -- TEST
112     -- l.pseudonummer,                 -- die HsNr des zugehoerigen Hauptgebaeudes
113        l.laufendenummer                -- umn: LABELITEM - die laufende Nummer des Nebengebaeudes
114   FROM ap_pto p
115   JOIN alkis_beziehungen v
116     ON p.gml_id = v.beziehung_von
117   JOIN ax_lagebezeichnungmitpseudonummer l
118     ON v.beziehung_zu  = l.gml_id
119  WHERE v.beziehungsart = 'dientZurDarstellungVon'
120    AND p.endet IS NULL
121    AND l.endet IS NULL
122;
123
124COMMENT ON VIEW s_nummer_nebengebaeude IS 'fuer Kartendarstellung: Hausnummern NebengebÀude';
125
126
127-- Layer "ag_p_flurstueck"
128-- -----------------------
129
130CREATE OR REPLACE VIEW s_zugehoerigkeitshaken_flurstueck
131AS
132 SELECT p.ogc_fid,
133        p.wkb_geometry,
134        p.drehwinkel * 57.296 AS drehwinkel,
135        f.flurstueckskennzeichen
136   FROM ap_ppo p
137   JOIN alkis_beziehungen v
138     ON p.gml_id = v.beziehung_von
139   JOIN ax_flurstueck f
140     ON v.beziehung_zu = f.gml_id
141  WHERE p.art = 'Haken'
142    AND v.beziehungsart = 'dientZurDarstellungVon'
143    AND f.endet IS NULL
144    AND p.endet IS NULL;
145
146COMMENT ON VIEW s_zugehoerigkeitshaken_flurstueck IS 'fuer Kartendarstellung';
147
148
149-- Layer "s_zuordungspfeil_flurstueck"
150-- -----------------------------------
151
152CREATE OR REPLACE VIEW s_zuordungspfeil_flurstueck
153AS
154 SELECT l.ogc_fid,
155        l.wkb_geometry
156   FROM ap_lpo l
157   JOIN alkis_beziehungen v
158     ON l.gml_id = v.beziehung_von
159   JOIN ax_flurstueck f
160     ON v.beziehung_zu = f.gml_id
161  WHERE l.art = 'Pfeil'
162    AND v.beziehungsart = 'dientZurDarstellungVon'
163    AND ('DKKM1000' ~~ ANY (l.advstandardmodell))
164    AND f.endet IS NULL
165    AND l.endet IS NULL;
166
167COMMENT ON VIEW s_zuordungspfeil_flurstueck IS 'fuer Kartendarstellung: Zuordnungspfeil FlurstÃŒcksnummer';
168
169
170CREATE OR REPLACE VIEW s_zuordungspfeilspitze_flurstueck
171AS
172 SELECT l.ogc_fid,
173        (((st_azimuth(st_pointn(l.wkb_geometry, 1),
174        st_pointn(l.wkb_geometry, 2)) * (- (180)::double precision)) / pi()) + (90)::double precision) AS winkel,
175        st_startpoint(l.wkb_geometry) AS wkb_geometry
176   FROM ap_lpo l
177   JOIN alkis_beziehungen v
178     ON l.gml_id = v.beziehung_von
179   JOIN ax_flurstueck f
180     ON v.beziehung_zu = f.gml_id
181  WHERE l.art = 'Pfeil'
182    AND v.beziehungsart = 'dientZurDarstellungVon'
183    AND ('DKKM1000' ~~ ANY (l.advstandardmodell))
184    AND f.endet IS NULL
185    AND l.endet IS NULL;
186
187COMMENT ON VIEW s_zuordungspfeilspitze_flurstueck IS 'fuer Kartendarstellung: Zuordnungspfeil FlurstÃŒcksnummer, Spitze';
188
189
190
191-- Layer NAME "ap_pto" GROUP "praesentation"
192-- ----------------------------------------
193-- Texte, die nicht schon in einem anderen Layer ausgegeben werden
194
195CREATE OR REPLACE VIEW s_beschriftung
196AS
197  SELECT p.ogc_fid,
198         p.schriftinhalt,
199         p.art,
200         p.drehwinkel * 57.296 AS winkel, -- * 180 / Pi
201         p.wkb_geometry
202    FROM ap_pto p
203   WHERE not p.schriftinhalt IS NULL
204     AND p.endet IS NULL
205     AND p.art NOT IN ('HNR', 'PNR');
206
207-- Feb. 2012 PostNAS 0.6: 'ZAE_NEN' kommt nicht mehr vor!
208
209-- Diese 'IN'-Liste fortschreiben bei Erweiterungen des Mapfiles
210-- Wenn ein Text zum fachlich passenden Layer angezeigt wird, dann hier ausblenden,
211-- d.h. die Kennung in die Klammer eintragen.
212
213-- Werte in ap_pto.art:
214-- 'HNR'  = Hausnummer
215-- 'PNR'  = Pseudo-Nummer = laufende Nummer NebengebÀude
216
217-- Ermittlung der vorkommenden Arten mit:
218--   SELECT DISTINCT art FROM ap_pto ORDER BY art;
219
220-- Noch nicht berÃŒcksichtigt:
221   
222--"AGT""ART""ATP""BBD""BezKlassifizierungStrasse""BSA""BWF""BWF_ZUS""FKT""Fliessgewaesser""FreierText"
223--"Friedhof""Gewanne""GFK""Halde_LGT""HHO""NAM""PKN""Platz""PRO""SPG""SPO""StehendesGewaesser"
224--"Strasse""VEG""Vorratsbehaelter""Weg""Weitere Höhe""ZNM""<NULL>"
225
226COMMENT ON VIEW s_beschriftung IS 'ap_pto, die noch nicht in anderen Layern angezeigt werden';
227
228
229-- Layer "s_zuordungspfeil_gebaeude"
230-- -----------------------------------
231
232CREATE OR REPLACE VIEW s_zuordungspfeil_gebaeude
233AS
234 SELECT l.ogc_fid,
235     -- alkis_beziehungen.beziehungsart, -- TEST
236     -- ap_lpo.art, -- TEST
237        l.wkb_geometry
238   FROM ap_lpo l
239   JOIN alkis_beziehungen v
240     ON l.gml_id = v.beziehung_von
241   JOIN ax_gebaeude g
242     ON v.beziehung_zu = g.gml_id
243  WHERE l.art = 'Pfeil'
244    AND v.beziehungsart = 'dientZurDarstellungVon'
245    AND g.endet IS NULL
246    AND l.endet IS NULL;
247
248COMMENT ON VIEW s_zuordungspfeil_gebaeude IS 'fuer Kartendarstellung: Zuordnungspfeil fÌr GebÀude-Nummer';
249
250
251-- Sichten vom OBK (Oberbergischer Kreis)
252-- --------------------------------------
253
254-- Dazu notwendig: Feld "ax_besondereflurstuecksgrenze.artderflurstuecksgrenze" als Array "integer[]" !
255-- Anpassung DB-Schema erfolgte am 18.09.2011
256-- ap_lpo.signaturnummer = '2004' ist in 0.7 schema nun ein varchar
257
258
259CREATE OR REPLACE VIEW sk2004_zuordnungspfeil
260AS
261 SELECT ap.ogc_fid, ap.wkb_geometry
262 FROM ap_lpo ap
263 WHERE ((ap.signaturnummer = '2004')
264   AND ('DKKM1000'::text ~~ ANY ((ap.advstandardmodell)::text[])));
265
266COMMENT ON VIEW sk2004_zuordnungspfeil IS 'fuer Kartendarstellung: Zuordnungspfeil FlurstÃŒcksnummer"';
267-- krz: ap.signaturnummer is NULL in allen SÀtzen
268--      Siehe s_zuordungspfeil_flurstueck
269
270-- ap_lpo.signaturnummer = '2004' ist in 0.7 schema nun ein varchar
271
272CREATE OR REPLACE VIEW sk2004_zuordnungspfeil_spitze
273AS
274 SELECT ap.ogc_fid, (((st_azimuth(st_pointn(ap.wkb_geometry, 1),
275        st_pointn(ap.wkb_geometry, 2)) * (- (180)::double precision)) / pi()) + (90)::double precision) AS winkel,
276        st_startpoint(ap.wkb_geometry) AS wkb_geometry
277 FROM ap_lpo ap
278 WHERE ((ap.signaturnummer = '2004')
279   AND ('DKKM1000'::text ~~ ANY ((ap.advstandardmodell)::text[])));
280-- krz: ap.signaturnummer is NULL in allen SÀtzen
281
282
283CREATE OR REPLACE VIEW sk2012_flurgrenze
284AS
285 SELECT fg.ogc_fid, fg.wkb_geometry
286   FROM ax_besondereflurstuecksgrenze fg
287  WHERE (3000 = ANY (fg.artderflurstuecksgrenze))
288    AND fg.advstandardmodell ~~ 'DLKM'::text;
289
290COMMENT ON VIEW sk2012_flurgrenze IS 'fuer Kartendarstellung: besondere FlurstÃŒcksgrenze "Flurgrenze"';
291
292
293CREATE OR REPLACE VIEW sk2014_gemarkungsgrenze
294AS
295 SELECT gemag.ogc_fid, gemag.wkb_geometry
296   FROM ax_besondereflurstuecksgrenze gemag
297  WHERE (7003 = ANY (gemag.artderflurstuecksgrenze))
298    AND gemag.advstandardmodell ~~ 'DLKM'::text;
299
300COMMENT ON VIEW sk2014_gemarkungsgrenze IS 'fuer Kartendarstellung: besondere FlurstÃŒcksgrenze "Gemarkungsgrenze"';
301
302
303CREATE OR REPLACE VIEW sk2018_bundeslandgrenze
304AS
305 SELECT blg.ogc_fid, blg.wkb_geometry
306   FROM ax_besondereflurstuecksgrenze blg
307  WHERE (7102 = ANY (blg.artderflurstuecksgrenze))
308    AND blg.advstandardmodell ~~ 'DLKM'::text;
309
310COMMENT ON VIEW sk2018_bundeslandgrenze IS 'fuer Kartendarstellung: besondere FlurstÃŒcksgrenze "Bundeslandgrenze"';
311
312
313CREATE OR REPLACE VIEW sk2020_regierungsbezirksgrenze
314AS
315 SELECT rbg.ogc_fid, rbg.wkb_geometry
316   FROM ax_besondereflurstuecksgrenze rbg
317  WHERE (7103 = ANY (rbg.artderflurstuecksgrenze))
318    AND rbg.advstandardmodell ~~ 'DLKM'::text;
319
320COMMENT ON VIEW sk2020_regierungsbezirksgrenze IS 'fuer Kartendarstellung: besondere FlurstÃŒcksgrenze "Regierungsbezirksgrenze"';
321
322
323CREATE OR REPLACE VIEW sk2022_gemeindegrenze
324AS
325 SELECT gemg.ogc_fid, gemg.wkb_geometry
326   FROM ax_besondereflurstuecksgrenze gemg
327  WHERE (7106 = ANY (gemg.artderflurstuecksgrenze))
328    AND gemg.advstandardmodell ~~ 'DLKM'::text;
329
330COMMENT ON VIEW sk2022_gemeindegrenze IS 'fuer Kartendarstellung: besondere FlurstÃŒcksgrenze "Gemeindegrenze"';
331
332
333-- Zusammenfassung "Politische Grenzen"  Art= 7102, 7103, 7104, 7106
334
335-- Grenze der Bundesrepublik Deutschland 7101 (G)
336-- Grenze des Bundeslandes 7102 (G)
337-- Grenze des Regierungsbezirks 7103 (G)
338-- Grenze des Landkreises 7104 (G)
339-- Grenze der Gemeinde 7106
340-- Grenze des Gemeindeteils 7107
341-- Grenze der Verwaltungsgemeinschaft 7108
342
343CREATE OR REPLACE VIEW sk201x_politische_grenze
344AS
345 SELECT ogc_fid, artderflurstuecksgrenze as art, wkb_geometry
346   FROM ax_besondereflurstuecksgrenze
347
348-- WHERE ( ANY (artderflurstuecksgrenze) IN (7102,7103,7104,7106) )
349
350  WHERE (7102 = ANY (artderflurstuecksgrenze)
351     OR  7102 = ANY (artderflurstuecksgrenze)
352     OR  7103 = ANY (artderflurstuecksgrenze)
353     OR  7104 = ANY (artderflurstuecksgrenze)
354     OR  7106 = ANY (artderflurstuecksgrenze)
355    )
356    AND advstandardmodell ~~ 'DLKM'::text;
357
358COMMENT ON VIEW sk201x_politische_grenze IS 'fuer Kartendarstellung: besondere FlurstÃŒcksgrenze Politische Grenzen (Bund, Land, Kreis, Gemeinde)';
359-- GefÀllt mir nicht!
360-- Array-Felder eignen sich nicht als Filter. Optimierung: in Tabelle speichern
361
362
363--  ------------------------------------------
364--  Sichten fuer Fehlersuche und Daten-Analyse
365--  ------------------------------------------
366
367
368-- FlurstÃŒcke mit Anzeige der FlurstÃŒcksnummer an der "Standardposition"
369
370-- Nach der Konvertierung aus ALK hat zunÀchst jedes FlurstÌck eine explizit gesetzte Position der FlurstÌcksnummer.
371
372-- Nach einer manuellen Teilung bekommen die neuen FlurstÃŒcke im ALKIS nur dann eine Position,
373-- wenn die Positioin manuell bestimmt (verschoben) wurde.
374-- Wenn die FlurstÃŒcksnummer an ihrer "Standardposition" angezeigt werden soll,
375-- dann wird diese in den Daten (DHK, NAS) nicht gesetzt.
376-- Der Konverter PostNAS konvertiert aber nur die Daten, die er bekommt, er setzt nicht die Standard-Position
377-- fÃŒr die FlurstÃŒcke, die ohne eine manuelle Position kommen.
378
379-- Diese FÀlle identifizieren
380CREATE OR REPLACE VIEW flstnr_ohne_position
381AS
382 SELECT f.gml_id,
383        f.gemarkungsnummer || '-' || f.flurnummer || '-' || f.zaehler::text || COALESCE ('/' || f.nenner::text, '') AS such -- Suchstring fÃŒr ALKIS-Navigation nach FS-Kennzeichen
384 FROM        ax_flurstueck     f
385   LEFT JOIN alkis_beziehungen v  ON v.beziehung_zu = f.gml_id
386 --LEFT JOIN ap_pto            p  ON p.gml_id       = v.beziehung_von
387  WHERE v.beziehungsart is NULL
388    AND f.endet IS NULL
389--ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler
390  ;
391
392COMMENT ON VIEW flstnr_ohne_position IS 'FlurstÌcke ohne manuell gesetzte Position fÌr die PrÀsentation der FS-Nr';
393
394
395-- Zeigt die Texte an, die nicht in einem der Mapfile-Views verarbeitet werden
396CREATE OR REPLACE VIEW s_allgemeine_texte
397AS
398 SELECT p.ogc_fid,
399      --p.wkb_geometry,
400      --p.gml_id,
401        p.art,
402        p.drehwinkel * 57.296 AS drehwinkel,   -- * 180 / Pi
403        p.schriftinhalt
404   FROM ap_pto p
405  WHERE NOT p.art = 'ZAE_NEN'
406    AND NOT p.art = 'HNR'
407    AND NOT p.art = 'FKT'
408    AND NOT p.art = 'Friedhof'
409    AND p.schriftinhalt IS NOT NULL
410    AND p.endet IS NULL;
411
412
413-- Analyse zu o.g. Fehler:
414--  Welche Inhalte kommen im Feld ap_pto.art vor?
415CREATE OR REPLACE VIEW ap_pto_arten
416AS
417  SELECT DISTINCT art
418    FROM ap_pto;
419
420
421-- Umbruch im Label?
422-- z.B. "Schwimm-/nbecken"
423-- Sind 2 Buchstaben in Mapfile bei "WRAP" möglich?
424CREATE OR REPLACE VIEW texte_mit_umbruch
425AS
426 SELECT ogc_fid, schriftinhalt, art
427   FROM ap_pto
428  WHERE not schriftinhalt is null
429    AND schriftinhalt like '%/n%';
430
431-- ... schriftinhalt like '%/%';
432-- RLP: FlurstÌcks-Bruchnummer art='ZAE_NEN' als Schriftinhalt (2 FÀlle)
433
434
435
436CREATE OR REPLACE VIEW s_allgemeine_texte_arten
437AS
438 SELECT DISTINCT art
439   FROM s_allgemeine_texte;
440
441-- dies liefert die Werte:
442--  Bahnverkehr, BWF, FKT_LGT, Fliessgewaesser, FreierText, Gewanne, NAM, Platz,
443--  StehendesGewaesser, Strasse, urn:adv:fachdatenv, Weg, ZNM
444
445
446
447-- EXTENT fÃŒr das Mapfile eines Mandanten ermitteln
448
449CREATE OR REPLACE VIEW flurstuecks_minmax AS
450 SELECT min(st_xmin(wkb_geometry)) AS r_min,
451        min(st_ymin(wkb_geometry)) AS h_min,
452        max(st_xmax(wkb_geometry)) AS r_max,
453        max(st_ymax(wkb_geometry)) AS h_max
454   FROM ax_flurstueck f
455   WHERE f.endet IS NULL;
456
457COMMENT ON VIEW flurstuecks_minmax IS 'Maximale Ausdehnung von ax_flurstueck fuer EXTENT-Angabe im Mapfile';
458
459
460
461-- Nach Laden der Keytables:
462
463-- MAP ALT:
464-- DATA "wkb_geometry from (SELECT ogc_fid, gml_id, artderfestlegung, name, bezeichnung, stelle, wkb_geometry FROM ax_bauraumoderbodenordnungsrecht) as foo using unique ogc_fid using SRID=25832"
465
466CREATE OR REPLACE VIEW baurecht
467AS
468  SELECT r.ogc_fid,
469         r.wkb_geometry,
470         r.gml_id,
471         r.artderfestlegung as adfkey, -- Art der Festlegung - Key
472         r."name",                     -- Eigenname des Gebietes
473         r.stelle,                     -- Stelle Key
474         r.bezeichnung AS rechtbez,    -- Verfahrensnummer
475         a.bezeichner  AS adfbez,      -- Art der Festlegung - Bezeichnung
476         d.bezeichnung AS stellbez     -- Stelle Bezeichnung
477      -- , d.stellenart                -- weiter entschluesseln?
478    FROM ax_bauraumoderbodenordnungsrecht r
479    LEFT JOIN ax_bauraumoderbodenordnungsrecht_artderfestlegung a
480      ON r.artderfestlegung = a.wert
481    LEFT JOIN ax_dienststelle d
482      ON r.land   = d.land
483     AND r.stelle = d.stelle
484  WHERE r.endet IS NULL
485    AND d.endet IS NULL
486 ;
487
488-- MAP NEU:
489-- DATA "wkb_geometry from (SELECT ogc_fid, gml_id, adfkey, name, stelle, rechtbez, adfbez, stellbez, wkb_geometry FROM baurecht) as foo using unique ogc_fid using SRID=25832" # gespeicherter View
490
491
492-- Man glaubt es kaum, aber im ALKIS haben Gemeinde und Gemarkung keinerlei Beziehung miteinander
493-- Nur durch Auswertung der FlurstÃŒcke kann man ermitteln, in welcher Gemeinde eine Gemarkung liegt.
494
495-- 2011-12-08 umbenannt
496
497CREATE OR REPLACE VIEW gemarkung_in_gemeinde
498AS
499  SELECT DISTINCT land, regierungsbezirk, kreis, gemeinde, gemarkungsnummer
500  FROM            ax_flurstueck
501  WHERE           endet IS NULL
502  ORDER BY        land, regierungsbezirk, kreis, gemeinde, gemarkungsnummer
503;
504
505COMMENT ON VIEW gemarkung_in_gemeinde IS 'Welche Gemarkung liegt in welcher Gemeinde? Durch Verweise aus FlurstÃŒck.';
506
507
508-- Untersuchen, welche Geometrie-Typen vorkommen
509
510CREATE OR REPLACE VIEW arten_von_flurstuecksgeometrie
511AS
512 SELECT   count(gml_id) as anzahl,
513          st_geometrytype(wkb_geometry)
514 FROM     ax_flurstueck
515 WHERE    endet IS NULL
516 GROUP BY st_geometrytype(wkb_geometry);
517
518
519-- A d r e s s e n
520
521-- Verschluesselte Lagebezeichnung (Strasse und Hausnummer) fuer eine Gemeinde
522-- Schluessel der Gemeinde nach Bedarf anpassen!
523
524--  FEHLER: Funktion to_char(character varying, unknown) existiert nicht
525
526
527CREATE OR REPLACE VIEW adressen_hausnummern
528AS
529    SELECT
530        s.bezeichnung AS strassenname,
531         g.bezeichnung AS gemeindename,
532         l.land,
533         l.regierungsbezirk,
534         l.kreis,
535         l.gemeinde,
536         l.lage        AS strassenschluessel,
537         l.hausnummer
538    FROM   ax_lagebezeichnungmithausnummer l 
539    JOIN   ax_gemeinde g
540      ON l.kreis=g.kreis
541     AND l.gemeinde=g.gemeinde
542    JOIN   ax_lagebezeichnungkatalogeintrag s
543      ON l.kreis=s.kreis
544     AND l.gemeinde=s.gemeinde
545     AND l.lage = s.lage        -- ab PostNAS 0.6
546    WHERE     l.gemeinde = 40;  -- "40" = Stadt Lage
547
548
549-- Zuordnung dieser Adressen zu Flurstuecken
550-- Schluessel der Gemeinde nach Bedarf anpassen!
551
552CREATE OR REPLACE VIEW adressen_zum_flurstueck
553AS
554    SELECT
555           f.gemarkungsnummer,
556           f.flurnummer,
557           f.zaehler,
558           f.nenner,
559           g.bezeichnung AS gemeindename,
560           s.bezeichnung AS strassenname,
561           l.lage        AS strassenschluessel,
562           l.hausnummer
563      FROM   ax_flurstueck f
564      JOIN   alkis_beziehungen v
565        ON f.gml_id=v.beziehung_von
566      JOIN   ax_lagebezeichnungmithausnummer l 
567        ON l.gml_id=v.beziehung_zu
568      JOIN   ax_gemeinde g
569        ON l.kreis=g.kreis
570       AND l.gemeinde=g.gemeinde
571      JOIN   ax_lagebezeichnungkatalogeintrag s
572        ON l.kreis=s.kreis
573       AND l.gemeinde=s.gemeinde
574       AND l.lage = s.lage   -- ab PostNAS 0.6
575     WHERE v.beziehungsart='weistAuf'
576       AND l.gemeinde = 40  -- "40" = Stadt Lage
577     ORDER BY
578           f.gemarkungsnummer,
579           f.flurnummer,
580           f.zaehler,
581           f.nenner;
582
583
584-- FlurstÃŒcke eines EigentÃŒmers
585-- ----------------------------
586
587-- Dieser View liefert nur die (einfache) Buchungsart "GrundstÃŒck"
588-- Solche FÀlle wie "Erbbaurecht an GrundstÌck" oder "Wohnungs-/Teileigentum an aufgeteiltes GrundstÌck"
589-- oder "Miteigentum an aufteteiltes GrundstÃŒck" fehlen in deisere Auswertung.
590-- Dazu siehe: "rechte_eines_eigentuemers".
591
592-- Das Ergbenis ist gedacht fÃŒr den Export als CSV und Weiterverarbeitung mit einer Tabellenkalkulation
593-- oder einer einfachen Datenbank.
594
595-- Auch ein Export als Shape ist moeglich (dafuer: geom hinzugefuegt, Feldnamen gekuerzt)
596-- Kommando:
597--  pgsql2shp -h localhost -p 5432 -f "/data/.../alkis_fs_gemeinde.shp"  [db-name]  public.flurstuecke_eines_eigentuemers
598
599-- Übersicht der Tabellen:
600--
601-- Person <benennt< NamNum. >istBestandteilVon> Blatt <istBestandteilVon< Stelle >istGebucht> Flurstueck
602--                                              *-> Bezirk                *-> Buchungsart     *-> Gemarkung
603
604-- Wobei ">xxx>" = JOIN ÃŒber die Verbindungs-Tabelle "alkis_beziehungen" mit der Beziehungsart "xxx".
605
606CREATE OR REPLACE VIEW flurstuecke_eines_eigentuemers
607AS
608   SELECT
609      k.bezeichnung                AS gemarkung,
610      k.gemarkungsnummer           AS gemkg_nr,
611      f.flurnummer                 AS flur,
612      f.zaehler                    AS fs_zaehler,
613      f.nenner                     AS fs_nenner,
614      f.amtlicheflaeche            AS flaeche,
615      f.wkb_geometry               AS geom,  -- fuer Export als Shape
616   -- g.bezirk,
617      b.bezeichnung                AS bezirkname,
618      g.buchungsblattnummermitbuchstabenerweiterung AS gb_blatt,
619      g.blattart,
620      s.laufendenummer             AS bvnr,
621      art.bezeichner               AS buchgsart,
622   -- s.zaehler || '/' || s.nenner AS buchg_anteil,
623      n.laufendenummernachdin1421  AS name_num,
624   -- n.zaehler || '/' || n.nenner AS nam_anteil,
625      p.nachnameoderfirma          AS nachname --,
626   -- p.vorname
627   FROM       ax_person              p
628        JOIN  alkis_beziehungen      bpn  ON bpn.beziehung_zu  = p.gml_id
629        JOIN  ax_namensnummer        n    ON bpn.beziehung_von =n.gml_id
630        JOIN  alkis_beziehungen      bng  ON n.gml_id = bng.beziehung_von
631        JOIN  ax_buchungsblatt       g    ON bng.beziehung_zu = g.gml_id
632        JOIN  ax_buchungsblattbezirk b    ON g.land = b.land AND g.bezirk = b.bezirk
633        JOIN  alkis_beziehungen      bgs  ON bgs.beziehung_zu = g.gml_id
634        JOIN  ax_buchungsstelle      s    ON s.gml_id = bgs.beziehung_von
635        JOIN  ax_buchungsstelle_buchungsart art ON s.buchungsart = art.wert
636        JOIN  alkis_beziehungen      bsf  ON bsf.beziehung_zu = s.gml_id
637        JOIN  ax_flurstueck          f    ON f.gml_id = bsf.beziehung_von
638        JOIN  ax_gemarkung           k    ON f.land = k.land AND f.gemarkungsnummer = k.gemarkungsnummer
639   WHERE p.nachnameoderfirma LIKE 'Gemeinde %'   -- ** Bei Bedarf anpassen!
640     AND bpn.beziehungsart = 'benennt'           -- Namennummer     >> Person
641     AND bng.beziehungsart = 'istBestandteilVon' -- Namensnummer    >> Grundbuch
642     AND bgs.beziehungsart = 'istBestandteilVon' -- Buchungs-Stelle >> Grundbuch
643     AND bsf.beziehungsart = 'istGebucht'        -- Flurstueck      >> Buchungs-Stelle
644     AND p.endet IS NULL
645     AND n.endet IS NULL
646     AND g.endet IS NULL
647     AND b.endet IS NULL
648     AND s.endet IS NULL
649     AND f.endet IS NULL
650     AND k.endet IS NULL
651   ORDER BY   
652         k.bezeichnung,
653         f.flurnummer,
654         f.zaehler,
655         f.nenner,
656         g.bezirk,
657         g.buchungsblattnummermitbuchstabenerweiterung,
658         s.laufendenummer
659;
660
661
662-- Rechte eines EigentÃŒmers
663-- ------------------------
664
665-- Dieser View sucht speziell die FÀlle wo eine Buchungsstelle ein Recht "an" einer anderen Buchungsstelle hat.
666--  - "Erbbaurecht *an* GrundstÃŒck"
667--  - "Wohnungs-/Teileigentum *an* Aufgeteiltes GrundstÃŒck"
668--  - "Miteigentum *an* Aufteteiltes GrundstÃŒck"
669-- Suchkriterium ist der Name des EigentÃŒmers auf dem "herrschenden" Grundbuch, also dem Besitzer des Rechtes.
670
671-- Diese FÀlle fehlen im View "flurstuecke_eines_eigentuemers".
672
673-- Übersicht der Tabellen:
674--
675-- Person <benennt< NamNum. >istBestandteilVon> Blatt <istBestandteilVon< Stelle-h >an> Stelle-d >istGebucht> Flurstueck
676--
677
678-- Wobei ">xxx>" = JOIN ÃŒber die Verbindungs-Tabelle "alkis_beziehungen" mit der Beziehungsart "xxx".
679
680
681CREATE OR REPLACE VIEW rechte_eines_eigentuemers
682AS
683   SELECT
684      k.bezeichnung                AS gemarkung,
685      k.gemarkungsnummer           AS gemkg_nr,
686      f.flurnummer                 AS flur,
687      f.zaehler                    AS fs_zaehler,
688      f.nenner                     AS fs_nenner,
689      f.amtlicheflaeche            AS flaeche,
690      f.wkb_geometry               AS geom,  -- fuer Export als Shape
691   -- g.bezirk,
692      b.bezeichnung                AS bezirkname,
693      g.buchungsblattnummermitbuchstabenerweiterung AS gb_blatt,
694   -- g.blattart,
695      sh.laufendenummer            AS bvnr_herr,
696      sh.zaehler || '/' || sh.nenner AS buchg_anteil_herr,
697      arth.bezeichner              AS buchgsa_herr,
698      bss.beziehungsart            AS bez_art,
699      artd.bezeichner              AS buchgsa_dien,
700      sd.laufendenummer            AS bvnr_dien,
701   -- sd.zaehler || '/' || sd.nenner AS buchg_anteil_dien,
702      n.laufendenummernachdin1421  AS name_num,
703   -- n.zaehler || '/' || n.nenner AS nam_anteil,
704      p.nachnameoderfirma          AS nachname --, 
705   -- p.vorname
706   FROM       ax_person              p
707        JOIN  alkis_beziehungen      bpn  ON bpn.beziehung_zu  = p.gml_id
708        JOIN  ax_namensnummer        n    ON bpn.beziehung_von =n.gml_id
709        JOIN  alkis_beziehungen      bng  ON n.gml_id = bng.beziehung_von
710        JOIN  ax_buchungsblatt       g    ON bng.beziehung_zu = g.gml_id
711        JOIN  ax_buchungsblattbezirk b    ON g.land = b.land AND g.bezirk = b.bezirk
712        JOIN  alkis_beziehungen      bgs  ON bgs.beziehung_zu = g.gml_id
713        JOIN  ax_buchungsstelle      sh   ON sh.gml_id = bgs.beziehung_von  -- herrschende Buchung
714        JOIN  ax_buchungsstelle_buchungsart arth ON sh.buchungsart = arth.wert
715        JOIN  alkis_beziehungen      bss  ON sh.gml_id = bss.beziehung_von
716        JOIN  ax_buchungsstelle      sd   ON sd.gml_id = bss.beziehung_zu   -- dienende Buchung
717        JOIN  ax_buchungsstelle_buchungsart artd ON sd.buchungsart = artd.wert
718        JOIN  alkis_beziehungen      bsf  ON bsf.beziehung_zu = sd.gml_id
719        JOIN  ax_flurstueck          f    ON f.gml_id = bsf.beziehung_von
720        JOIN  ax_gemarkung           k    ON f.land = k.land AND f.gemarkungsnummer = k.gemarkungsnummer
721   WHERE p.nachnameoderfirma LIKE 'Stadt %'   -- ** Bei Bedarf anpassen!
722     AND bpn.beziehungsart = 'benennt'           -- Namennummer     >> Person
723     AND bng.beziehungsart = 'istBestandteilVon' -- Namensnummer    >> Grundbuch
724     AND bgs.beziehungsart = 'istBestandteilVon' -- B-Stelle herr   >> Grundbuch
725     AND bss.beziehungsart in ('an','zu')        -- B-Stelle herr.  >> B-Stelle dien.
726     AND bsf.beziehungsart = 'istGebucht'        -- Flurstueck      >> B-Stelle dien
727     AND p.endet IS NULL
728     AND n.endet IS NULL
729     AND g.endet IS NULL
730     AND b.endet IS NULL
731     AND sh.endet IS NULL
732     AND sd.endet IS NULL
733     AND f.endet IS NULL
734     AND k.endet IS NULL
735   ORDER BY   
736         k.bezeichnung,
737         f.flurnummer,
738         f.zaehler,
739         f.nenner,
740         g.bezirk,
741         g.buchungsblattnummermitbuchstabenerweiterung,
742         sh.laufendenummer
743;
744
745CREATE OR REPLACE VIEW beziehungen_redundant
746AS
747SELECT *
748 FROM alkis_beziehungen AS bezalt
749 WHERE EXISTS
750       (SELECT ogc_fid
751         FROM alkis_beziehungen AS bezneu
752        WHERE bezalt.beziehung_von = bezneu.beziehung_von
753          AND bezalt.beziehung_zu  = bezneu.beziehung_zu
754          AND bezalt.beziehungsart = bezneu.beziehungsart
755          AND bezalt.ogc_fid       < bezneu.ogc_fid
756        );
757
758COMMENT ON VIEW beziehungen_redundant IS 'alkis_beziehungen zu denen es eine identische neue Version gibt.';
759
760
761CREATE OR REPLACE VIEW beziehungen_redundant_in_delete
762AS
763SELECT *
764 FROM alkis_beziehungen AS bezalt
765 WHERE EXISTS
766       (SELECT ogc_fid
767         FROM alkis_beziehungen AS bezneu
768        WHERE bezalt.beziehung_von = bezneu.beziehung_von
769          AND bezalt.beziehung_zu  = bezneu.beziehung_zu
770          AND bezalt.beziehungsart = bezneu.beziehungsart
771          AND bezalt.ogc_fid       < bezneu.ogc_fid
772        )
773     -- mit dem Zusatz nur die Faelle aus dem letzten Durchlauf,
774     -- die aktuell noch in der Delet-Tabelle stehen
775     AND EXISTS
776        (SELECT ogc_fid
777         FROM delete
778         WHERE bezalt.beziehung_von = substr(featureid, 1, 16)
779            OR bezalt.beziehung_zu  = substr(featureid, 1, 16)
780        );
781
782COMMENT 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.';
783
784-- END --
Note: See TracBrowser for help on using the repository browser.