source: trunk/data/konvert/postnas_0.7/sichten.sql @ 176

Revision 176, 26.1 KB checked in by frank.jaeger, 10 years ago (diff)

Flurstücksnummern an Standard-Position aus Fläche generieren

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