source: trunk/import/sichten.sql @ 268

Revision 268, 36.7 KB checked in by frank.jaeger, 11 years ago (diff)

View "ap_pto_stra" schrittweise verbessert um mehrfache Darstellung von Straßennamen zu unterdrücken.

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--  2013-02-20 Mehrfache Buchungsstellen zum FS suchen, dies sind Auswirkungen eines Fehlers bei Replace
12--  2013-03-05 Beschriftungen aus ap_pto auseinander sortieren, neuer View "grenzpunkt"
13
14--  -----------------------------------------
15--  Sichten fuer Verwendung im mapfiles (wms)
16--  -----------------------------------------
17
18-- WMS-Layer "ag_t_flurstueck"
19-- ---------------------------
20-- Die Geometrie befindet sich in "ap_pto", der Label in "ax_flurstueck"
21-- Die Verbindung erfolgt ÃŒber "alkis_beziehungen"
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.endet IS NULL
35    AND f.endet IS NULL;
36COMMENT ON VIEW s_flurstueck_nr IS 'fuer Kartendarstellung: Bruchnummerierung FlurstÃŒck (nur manuell gesetzte Positionen)';
37
38-- Wenn keine manuelle Position gesetzt ist, wird die Flaechenmitte verwendet
39
40-- ACHTUNG: Dieser View kann nicht direkt im Mapserver-WMS verwendet werden.
41-- Die Anzeige ist zu langsam. Filterung Ìber BBOX kann nicht funktionieren, da zunÀchst ALLE Standardpositionen
42-- berechnet werden mÃŒssen, bevor darÃŒber gefiltert werden kann.
43
44-- In einer Hilfstabelle mit geometrischem Index zwischenspeichern.
45-- Siehe PostProcessing Tabelle "pp_flurstueck_nr"
46
47CREATE OR REPLACE VIEW s_flurstueck_nr2
48AS
49  SELECT f.ogc_fid,
50         p.wkb_geometry,  -- manuelle Position des Textes
51         f.zaehler::text || COALESCE ('/' || f.nenner::text, '') AS fsnum
52    FROM ap_pto             p
53    JOIN alkis_beziehungen  v  ON p.gml_id       = v.beziehung_von
54    JOIN ax_flurstueck      f  ON v.beziehung_zu = f.gml_id
55   WHERE v.beziehungsart = 'dientZurDarstellungVon'
56     AND p.endet IS NULL
57     AND f.endet IS NULL
58 UNION
59  SELECT f.ogc_fid,
60         ST_PointOnSurface(f.wkb_geometry) AS wkb_geometry,  -- Flaechenmitte als Position des Textes
61         f.zaehler::text || COALESCE ('/' || f.nenner::text, '') AS fsnum
62    FROM      ax_flurstueck     f
63    LEFT JOIN alkis_beziehungen v  ON v.beziehung_zu = f.gml_id
64   WHERE v.beziehungsart is NULL
65     AND f.endet IS NULL;
66
67COMMENT ON VIEW s_flurstueck_nr2 IS 'Bruchnummerierung FlurstÃŒck, auch Standard-Position. Nicht direkt fuer WMS verwenden!';
68
69
70-- Layer "ag_t_gebaeude"
71-- ---------------------
72-- Problem: Zu einigen GebÀuden gibt es mehrere Hausnummern.
73-- Diese unterscheiden sich im Feld ap_pto.advstandardmodell
74-- z.B. 3 verschiedene EintrÀge mit <NULL>, {DKKM500}, {DKKM1000}, (Beispiel; Lage, Lange Straße 15 c)
75CREATE OR REPLACE VIEW s_hausnummer_gebaeude
76AS
77 SELECT p.ogc_fid,
78        p.wkb_geometry,                         -- Point
79        p.drehwinkel * 57.296 AS drehwinkel,    -- umn: ANGLE [drehwinkel]
80        l.hausnummer                            -- umn: LABELITEM
81   FROM ap_pto p
82   JOIN alkis_beziehungen v
83     ON p.gml_id = v.beziehung_von
84   JOIN ax_lagebezeichnungmithausnummer l
85     ON v.beziehung_zu  = l.gml_id
86  WHERE v.beziehungsart = 'dientZurDarstellungVon'
87    AND p.endet IS NULL
88    AND l.endet IS NULL;
89
90COMMENT ON VIEW s_hausnummer_gebaeude IS 'fuer Kartendarstellung: Hausnummern HauptgebÀude';
91
92-- Layer "ag_t_nebengeb"
93-- ---------------------
94-- 2013-03-05: Diese Abfrage liefert keine Daten mehr (PostNAS 0.7)
95--      CREATE OR REPLACE VIEW s_nummer_nebengebaeude
96--      AS
97--       SELECT p.ogc_fid,
98--                      p.wkb_geometry,
99--                      p.drehwinkel * 57.296 AS drehwinkel,    -- umn: ANGLE [drehwinkel]
100--               -- l.pseudonummer,                     -- die HsNr des zugehoerigen Hauptgebaeudes
101--                      l.laufendenummer                -- umn: LABELITEM - die laufende Nummer des Nebengebaeudes
102--         FROM ap_pto p
103--         JOIN alkis_beziehungen v
104--               ON p.gml_id = v.beziehung_von
105--         JOIN ax_lagebezeichnungmitpseudonummer l
106--               ON v.beziehung_zu  = l.gml_id
107--        WHERE v.beziehungsart = 'dientZurDarstellungVon'
108--              AND p.endet IS NULL
109--              AND l.endet IS NULL;
110--      COMMENT ON VIEW s_nummer_nebengebaeude IS 'fuer Kartendarstellung: Hausnummern NebengebÀude';
111
112-- Suche nach einem Ersatz:
113-- ax_gebaeude  >hat>  ax_lagebezeichnungmitpseudonummer, kein Drehwinkel.
114CREATE OR REPLACE VIEW lfdnr_nebengebaeude
115AS
116 SELECT g.ogc_fid,
117        g.wkb_geometry,
118    --  l.pseudonummer,                 -- TEST die HsNr des zugehoerigen Hauptgebaeudes
119        l.laufendenummer                -- umn: LABELITEM - die laufende Nummer des Nebengebaeudes
120   FROM ax_gebaeude g
121   JOIN alkis_beziehungen v
122     ON g.gml_id = v.beziehung_von
123   JOIN ax_lagebezeichnungmitpseudonummer l
124     ON v.beziehung_zu  = l.gml_id
125   WHERE v.beziehungsart = 'hat'
126     AND g.endet IS NULL
127     AND g.endet IS NULL;
128COMMENT ON VIEW lfdnr_nebengebaeude IS 'Laufende Nummer des NebengebÀudes zu einer Lagebezeichnung mit der FlÀchengeometrie des GebÀudes';
129--GRANT SELECT ON TABLE lfdnr_nebengebaeude TO ms6;
130
131-- Layer "ag_p_flurstueck"
132-- -----------------------
133CREATE OR REPLACE VIEW s_zugehoerigkeitshaken_flurstueck
134AS
135 SELECT p.ogc_fid,
136        p.wkb_geometry,
137        p.drehwinkel * 57.296 AS drehwinkel,
138        f.flurstueckskennzeichen
139   FROM ap_ppo p
140   JOIN alkis_beziehungen v
141     ON p.gml_id = v.beziehung_von
142   JOIN ax_flurstueck f
143     ON v.beziehung_zu = f.gml_id
144  WHERE p.art = 'Haken'
145    AND v.beziehungsart = 'dientZurDarstellungVon'
146    AND f.endet IS NULL
147    AND p.endet IS NULL;
148
149COMMENT ON VIEW s_zugehoerigkeitshaken_flurstueck IS 'fuer Kartendarstellung';
150
151-- Layer "s_zuordungspfeil_flurstueck"
152-- -----------------------------------
153CREATE OR REPLACE VIEW s_zuordungspfeil_flurstueck
154AS
155 SELECT l.ogc_fid,
156        l.wkb_geometry
157   FROM ap_lpo l
158   JOIN alkis_beziehungen v
159     ON l.gml_id = v.beziehung_von
160   JOIN ax_flurstueck f
161     ON v.beziehung_zu = f.gml_id
162  WHERE l.art = 'Pfeil'
163    AND v.beziehungsart = 'dientZurDarstellungVon'
164    AND ('DKKM1000' ~~ ANY (l.advstandardmodell))
165    AND f.endet IS NULL
166    AND l.endet IS NULL;
167
168COMMENT ON VIEW s_zuordungspfeil_flurstueck IS 'fuer Kartendarstellung: Zuordnungspfeil FlurstÃŒcksnummer';
169
170
171CREATE OR REPLACE VIEW s_zuordungspfeilspitze_flurstueck
172AS
173 SELECT l.ogc_fid,
174        (((st_azimuth(st_pointn(l.wkb_geometry, 1),
175        st_pointn(l.wkb_geometry, 2)) * (- (180)::double precision)) / pi()) + (90)::double precision) AS winkel,
176        st_startpoint(l.wkb_geometry) AS wkb_geometry
177   FROM ap_lpo l
178   JOIN alkis_beziehungen v
179     ON l.gml_id = v.beziehung_von
180   JOIN ax_flurstueck f
181     ON v.beziehung_zu = f.gml_id
182  WHERE l.art = 'Pfeil'
183    AND v.beziehungsart = 'dientZurDarstellungVon'
184    AND ('DKKM1000' ~~ ANY (l.advstandardmodell))
185    AND f.endet IS NULL
186    AND l.endet IS NULL;
187
188COMMENT ON VIEW s_zuordungspfeilspitze_flurstueck IS 'fuer Kartendarstellung: Zuordnungspfeil FlurstÃŒcksnummer, Spitze';
189
190
191-- Zur Steuerung der nachfolgenden Views
192
193-- Ermittlung der vorkommenden Arten
194-- ersetzt "ap_pto_arten"
195CREATE OR REPLACE VIEW beschriftung_was_kommt_vor
196AS
197  SELECT DISTINCT art, horizontaleausrichtung, vertikaleausrichtung
198    FROM ap_pto
199   WHERE not schriftinhalt is null
200  ORDER BY art;
201COMMENT ON VIEW beschriftung_was_kommt_vor IS 'Analyse der vorkommenden Kombinationen in ap_pto (Beschriftung)';
202
203-- 2013: PostNAS 0.7  (aus 150,260,340)
204-- ------------------
205--      "AOG_AUG"                               "zentrisch";"Basis"  - Schriftinhalkt immer nur "I" ?
206--      "BWF"                                   "zentrisch";"Basis"/"zentrisch";"Mitte"
207--      "BWF_ZUS"                               "zentrisch";"Basis"
208--      "FKT"                                   "zentrisch";"Basis"/"linksbÃŒndig";"Basis"/"zentrisch";"Mitte"
209--      "FKT_TEXT"                              "zentrisch";"Mitte"
210--      "FreierText"                    "zentrisch";"Basis"/"zentrisch";"Mitte"/"linksbÃŒndig";"Basis"
211--      "FreierTextHHO"                 "zentrisch";"Mitte"
212--      "Friedhof"                              "zentrisch";"Basis"
213--      "Gewanne"                               "zentrisch";"Basis"/"zentrisch";"Mitte"
214--      "GFK"                                   "zentrisch";"Basis"/"zentrisch";"Mitte"
215--      "HNR"                                   "zentrisch";"Basis"/"linksbÃŒndig";"Basis"/"zentrisch";"Mitte"  --> Hausnummer, group gebaeude
216--      "HHO"                                   "zentrisch";"Mitte"  -- HHO = objekthoehe zu ax_gebaeude?
217--      "NAM"                                   "zentrisch";"Basis"/"zentrisch";"Mitte"/"linksbÃŒndig";"Basis"
218--      "SPO"                                   "zentrisch";"Basis"/
219--      "Vorratsbehaelter"              "zentrisch";"Basis"
220--      "WeitereHoehe"                  "zentrisch";"Mitte"
221--      "ZAE_NEN"                               "zentrisch";"Basis"
222--      "ZNM"                                   "zentrisch";"Basis"/"linksbÃŒndig";"Basis"
223
224--* Layer "ap_pto_stra"
225--                          hor ; ver / hor ; ver
226--      "BezKlassifizierungStrasse" "zent.";"Basis"     / "linksbÃŒndig";"Basis"
227--      "Platz"                                 "zentrisch";"Basis" / "zentrisch";"Mitte"
228--      "Strasse"                               "zentrisch";"Basis" / "zentrisch";"Mitte" / "linksbÃŒndig";"Basis"
229--      "Weg"                                   "zentrisch";"Basis" / "zentrisch";"Mitte" / "linksbÃŒndig";"Basis"
230
231--* geplanter layer "ap_pto_wasser"
232--      "StehendesGewaesser"    "zentrisch";"Basis"
233--      "Fliessgewaesser"               "zentrisch";"Basis"/"linksbÃŒndig";"Basis"
234
235
236-- Drehwinkel in Bogenmass, wird vom mapserver in Grad benötigt.
237-- Umrechnung durch Faktor (180 / Pi)
238
239-- Layer NAME "ap_pto_stra" (Straße) GROUP "praesentation"
240-- -------------------------------------------------------
241-- NEU 2013-03-01
242-- Problem: Wenn ein Text paarweise auftritt mit verschiedenen Inhalten im
243-- Feld "advstandardmodell", dann wird das mehrfach gezeichnet.
244--      CREATE OR REPLACE VIEW ap_pto_stra
245--      AS
246--        SELECT ogc_fid,
247--                       schriftinhalt,
248--                       art,
249--                       horizontaleausrichtung AS hor,    -- Verfeinern der Text-Position
250--                       vertikaleausrichtung   AS ver,    -- Durch Klassifizierung hor/ver
251--                       drehwinkel * 57.296    AS winkel, -- * 180 / Pi
252--                       wkb_geometry
253--              FROM ap_pto
254--         WHERE not schriftinhalt IS NULL
255--               AND endet IS NULL
256--        -- Je nach Vorlieben des Katasteramtes die folgende Zeile auskommentieren:
257--        -- AND advstandardmodell IS NULL -- doppelte Darstellungen unterdrÃŒcken (simple Zwischenlösung)
258--               AND art IN ('Strasse','Weg','Platz','BezKlassifizierungStrasse');
259--      COMMENT ON VIEW ap_pto_stra IS 'Beschriftung fÃŒr ap_pto mit Art "Straße","Weg","Platz"';
260--      GRANT SELECT ON TABLE ap_pto_stra TO ms6;
261
262-- Verbesserte Version: von doppelten Textpositionen nur das passendere Modell Anzeigen.
263-- FÃŒr den folgenden View einen neuen Index definieren: ap_pto_txt_idx (siehe Schema)
264
265--      CREATE OR REPLACE VIEW ap_pto_stra
266--      AS
267--        SELECT p.ogc_fid,
268--              --   p.advstandardmodell       AS modell,    -- 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--         WHERE not p.schriftinhalt IS NULL
277--               AND  p.endet IS NULL                        -- nichts historisches
278--               AND  p.art   IN ('Strasse','Weg','Platz','BezKlassifizierungStrasse') -- CLASSES in LAYER
279--               AND ('DKKM1000' = ANY (p.advstandardmodell) -- "Lika 1000" bevorzugen
280--                         -- Ersatzweise auch "keine Angabe", aber nur wenn es keine weitere gibt
281--                         OR (     p.advstandardmodell IS NULL
282--                                 AND (SELECT ogc_fid FROM ap_pto s
283--                                              WHERE p.schriftinhalt = s.schriftinhalt
284--                                                AND p.art = s.art
285--                                                AND NOT s.advstandardmodell IS NULL LIMIT 1
286--                                              ) IS NULL
287--                                )
288--                       )
289--      ;
290
291-- ToDo: Diese Version gruppiert alle gleichen Straßennamen (p.schriftinhalt = s.schriftinhalt).
292-- In einer kreisweiten Datenbank können verschiedene Straßen mit gleichem Namen vorkommen.
293-- Um die Vermischung zu verhindern sollte man die Texte noch Ìber ihre Lage "in der NÀhe" verpaaren.
294-- Wenn der View dann Subquery UND Entfernungsberechnung enthÀlt, könnte man Ìberlegen,
295-- diesen nicht zur Laufzeit abzuarbeiten sondern im PostProzessing als Tabelle zu speichern.
296
297-- Auch noch fehlerhaft sind die FÀlle, wo fÌr unterschiedliche Kartentypen unterschiedliche
298-- Schreibweisen benutzt werden, z.B. die AbkÃŒrzung "_str.".
299
300-- Layer NAME "ap_pto_stra" (Straße) GROUP "praesentation"
301-- -------------------------------------------------------
302-- NEU 2013-03-06
303-- Noch mals verbesserte Version: von doppelten Textpositionen nur das passendere Modell Anzeigen.
304-- Statt "Namensgleichheit" im textfeld wird nun eine Relation fuer die Gruppierung verwendet.
305-- * ap_pto >dientZurDarstellungVon> ax_lagebezeichnungohnehausnummer *
306CREATE OR REPLACE VIEW ap_pto_stra
307AS
308  SELECT p.ogc_fid,
309          -- p.advstandardmodell       AS modell,    -- TEST
310      -- l.gml_id, l.unverschluesselt, l.lage AS schluessel, -- zur Lage  TEST
311         p.schriftinhalt,                        -- WMS: LABELITEM
312         p.art,                                  -- WMS: CLASSITEM
313         p.horizontaleausrichtung  AS hor,       -- Verfeinern der Text-Position ..
314         p.vertikaleausrichtung    AS ver,       --  .. durch Klassifizierung hor/ver
315         p.drehwinkel * 57.296     AS winkel,    -- * 180 / Pi
316         p.wkb_geometry
317    FROM ap_pto p
318    JOIN alkis_beziehungen v   -- Relation zur Lagebezeichnung o. HsNr.
319      ON p.gml_id = v.beziehung_von
320    JOIN ax_lagebezeichnungohnehausnummer l
321      ON v.beziehung_zu = l.gml_id
322   WHERE NOT p.schriftinhalt IS NULL
323     AND  p.endet IS NULL                            -- nichts historisches
324     AND  p.art   IN ('Strasse','Weg','Platz','BezKlassifizierungStrasse') -- CLASSES in LAYER
325     AND  v.beziehungsart = 'dientZurDarstellungVon' -- kann, muss aber nicht
326     AND ('DKKM1000' = ANY (p.advstandardmodell)     -- "Lika 1000" bevorzugen
327           -- Ersatzweise auch "keine Angabe", aber nur wenn es keinen besseren Text zur Lage gibt
328           OR (p.advstandardmodell IS NULL
329               AND (SELECT s.ogc_fid                -- irgend ein Feld
330                                          FROM ap_pto s                 -- eines anderen Textes (suchen)
331                      JOIN alkis_beziehungen vs     -- zur gleichen Lage o.HsNr
332                        ON s.gml_id = vs.beziehung_von
333                      JOIN ax_lagebezeichnungohnehausnummer ls
334                        ON vs.beziehung_zu = ls.gml_id
335                     WHERE ls.gml_id = l.gml_id
336                       AND vs.beziehungsart = 'dientZurDarstellungVon' -- kann, muss aber nicht
337                       AND NOT s.advstandardmodell IS NULL
338                     LIMIT 1  -- einer reicht als Beweis
339                                        ) IS NULL
340              ) -- "Subquery IS NULL" liefert true wenn kein weiterer Text gefunden wird
341         )
342;
343COMMENT ON VIEW ap_pto_stra IS 'Beschriftung fÃŒr ap_pto mit Art "Straße", "Weg", "Platz" oder Klassifizierung. Vorzugsweise mit advstandardmodell="DKKM1000", ersatzweise ohne Angabe';
344
345-- Layer NAME "ap_pto" GROUP "praesentation"
346-- ----------------------------------------
347-- REST: Texte, die nicht schon in einem anderen Layer ausgegeben werden
348-- NEU 2013-03-01
349CREATE OR REPLACE VIEW ap_pto_rest
350AS
351  SELECT p.ogc_fid,
352         p.schriftinhalt,
353         p.art,
354         p.drehwinkel * 57.296 AS winkel, -- * 180 / Pi
355         p.wkb_geometry
356    FROM ap_pto p
357   WHERE not p.schriftinhalt IS NULL
358     AND p.endet IS NULL
359     AND p.art NOT IN ('HNR','Strasse','Weg','Platz','BezKlassifizierungStrasse','AOG_AUG');
360     -- Diese 'IN'-Liste fortschreiben bei Erweiterungen des Mapfiles
361-- 'PNR' kommt nicht mehr vor?
362COMMENT ON VIEW ap_pto_rest IS 'Beschriftungen aus "ap_pto", die noch nicht in anderen Layern angezeigt werden';
363
364-- Layer NAME "ap_pto" GROUP "praesentation"
365-- ----------------------------------------
366-- 2013-03: Wird ersetzt durch ap_pto_rest
367-- CREATE OR REPLACE VIEW s_beschriftung
368-- AS
369--   SELECT p.ogc_fid,
370--          p.schriftinhalt,
371--          p.art,
372--          p.drehwinkel * 57.296 AS winkel, -- * 180 / Pi
373--          p.wkb_geometry
374--     FROM ap_pto p
375--    WHERE not p.schriftinhalt IS NULL
376--      AND p.endet IS NULL
377--      AND p.art NOT IN ('HNR','AOG_AUG');  -- 'PNR' kommt nicht mehr vor?
378-- COMMENT ON VIEW s_beschriftung IS 'Beschriftungen aus "ap_pto", die noch nicht in anderen Layern angezeigt werden';
379-- GRANT SELECT ON TABLE s_beschriftung  TO ms6;
380
381-- ENDE BESCHRIFTUNG
382
383-- Layer "s_zuordungspfeil_gebaeude"
384-- -----------------------------------
385CREATE OR REPLACE VIEW s_zuordungspfeil_gebaeude
386AS
387 SELECT l.ogc_fid,
388     -- alkis_beziehungen.beziehungsart, -- TEST
389     -- ap_lpo.art, -- TEST
390        l.wkb_geometry
391   FROM ap_lpo l
392   JOIN alkis_beziehungen v
393     ON l.gml_id = v.beziehung_von
394   JOIN ax_gebaeude g
395     ON v.beziehung_zu = g.gml_id
396  WHERE l.art = 'Pfeil'
397    AND v.beziehungsart = 'dientZurDarstellungVon'
398    AND g.endet IS NULL
399    AND l.endet IS NULL;
400COMMENT ON VIEW s_zuordungspfeil_gebaeude IS 'fuer Kartendarstellung: Zuordnungspfeil fÌr GebÀude-Nummer';
401
402-- Grenzpunkte
403--  ax_punktortta  >zeigtAuf?> AX_Grenzpunkt
404-- Zum Punktort des Grenzpunktes auch eine Information zur Vermarkung holen
405CREATE OR REPLACE VIEW grenzpunkt
406AS
407 SELECT o.ogc_fid,
408        o.wkb_geometry,
409     -- g.punktkennung,    -- ggf spÀter als labelitem "rrrrrhhhhAnnnnn" "32483 5751 0 02002"
410        g.abmarkung_marke, -- steuert die Darstellung >9000 = unvermarkt
411        v.beziehungsart
412   FROM ax_punktortta o
413   JOIN alkis_beziehungen v
414     ON o.gml_id = v.beziehung_von
415   JOIN ax_grenzpunkt g
416     ON v.beziehung_zu  = g.gml_id
417   WHERE v.beziehungsart = 'istTeilVon'
418     AND g.endet IS NULL
419     AND g.endet IS NULL;
420COMMENT ON VIEW grenzpunkt IS 'ZusammenfÃŒhrung von Punktort (Geometrie) und AX_Grenzpunkt (Eigenschaften)';
421
422-- Sichten vom OBK (Oberbergischer Kreis)
423-- --------------------------------------
424CREATE OR REPLACE VIEW sk2004_zuordnungspfeil
425AS
426 SELECT ap.ogc_fid, ap.wkb_geometry
427 FROM ap_lpo ap
428 WHERE ((ap.signaturnummer = '2004')
429   AND ('DKKM1000'::text ~~ ANY ((ap.advstandardmodell)::text[])));
430COMMENT ON VIEW sk2004_zuordnungspfeil IS 'fuer Kartendarstellung: Zuordnungspfeil FlurstÃŒcksnummer"';
431
432CREATE OR REPLACE VIEW sk2004_zuordnungspfeil_spitze
433AS
434 SELECT ap.ogc_fid, (((st_azimuth(st_pointn(ap.wkb_geometry, 1),
435        st_pointn(ap.wkb_geometry, 2)) * (- (180)::double precision)) / pi()) + (90)::double precision) AS winkel,
436        st_startpoint(ap.wkb_geometry) AS wkb_geometry
437 FROM ap_lpo ap
438 WHERE ((ap.signaturnummer = '2004')
439   AND ('DKKM1000'::text ~~ ANY ((ap.advstandardmodell)::text[])));
440-- krz: ap.signaturnummer is NULL in allen SÀtzen
441
442CREATE OR REPLACE VIEW sk2012_flurgrenze
443AS
444 SELECT fg.ogc_fid, fg.wkb_geometry
445   FROM ax_besondereflurstuecksgrenze fg
446  WHERE (3000 = ANY (fg.artderflurstuecksgrenze))
447    AND fg.advstandardmodell ~~ 'DLKM'::text;
448COMMENT ON VIEW sk2012_flurgrenze IS 'fuer Kartendarstellung: besondere FlurstÃŒcksgrenze "Flurgrenze"';
449
450CREATE OR REPLACE VIEW sk2014_gemarkungsgrenze
451AS
452 SELECT gemag.ogc_fid, gemag.wkb_geometry
453   FROM ax_besondereflurstuecksgrenze gemag
454  WHERE (7003 = ANY (gemag.artderflurstuecksgrenze))
455    AND gemag.advstandardmodell ~~ 'DLKM'::text;
456COMMENT ON VIEW sk2014_gemarkungsgrenze IS 'fuer Kartendarstellung: besondere FlurstÃŒcksgrenze "Gemarkungsgrenze"';
457
458CREATE OR REPLACE VIEW sk2018_bundeslandgrenze
459AS
460 SELECT blg.ogc_fid, blg.wkb_geometry
461   FROM ax_besondereflurstuecksgrenze blg
462  WHERE (7102 = ANY (blg.artderflurstuecksgrenze))
463    AND blg.advstandardmodell ~~ 'DLKM'::text;
464COMMENT ON VIEW sk2018_bundeslandgrenze IS 'fuer Kartendarstellung: besondere FlurstÃŒcksgrenze "Bundeslandgrenze"';
465
466CREATE OR REPLACE VIEW sk2020_regierungsbezirksgrenze
467AS
468 SELECT rbg.ogc_fid, rbg.wkb_geometry
469   FROM ax_besondereflurstuecksgrenze rbg
470  WHERE (7103 = ANY (rbg.artderflurstuecksgrenze))
471    AND rbg.advstandardmodell ~~ 'DLKM'::text;
472COMMENT ON VIEW sk2020_regierungsbezirksgrenze IS 'fuer Kartendarstellung: besondere FlurstÃŒcksgrenze "Regierungsbezirksgrenze"';
473
474CREATE OR REPLACE VIEW sk2022_gemeindegrenze
475AS
476 SELECT gemg.ogc_fid, gemg.wkb_geometry
477   FROM ax_besondereflurstuecksgrenze gemg
478  WHERE (7106 = ANY (gemg.artderflurstuecksgrenze))
479    AND gemg.advstandardmodell ~~ 'DLKM'::text;
480COMMENT ON VIEW sk2022_gemeindegrenze IS 'fuer Kartendarstellung: besondere FlurstÃŒcksgrenze "Gemeindegrenze"';
481
482
483-- Zusammenfassung "Politische Grenzen"  Art= 7102, 7103, 7104, 7106
484
485-- Grenze der Bundesrepublik Deutschland 7101 (G)
486-- .. des Bundeslandes 7102 (G)
487-- .. des Regierungsbezirks 7103 (G)
488-- .. des Landkreises 7104 (G)
489-- .. der Gemeinde 7106
490-- .. des Gemeindeteils 7107
491-- .. der Verwaltungsgemeinschaft 7108
492
493CREATE OR REPLACE VIEW sk201x_politische_grenze
494AS
495 SELECT ogc_fid, artderflurstuecksgrenze as art, wkb_geometry
496   FROM ax_besondereflurstuecksgrenze
497--WHERE ( ANY (artderflurstuecksgrenze) IN (7102,7103,7104,7106) )
498  WHERE (7102 = ANY (artderflurstuecksgrenze)
499     OR  7102 = ANY (artderflurstuecksgrenze)
500     OR  7103 = ANY (artderflurstuecksgrenze)
501     OR  7104 = ANY (artderflurstuecksgrenze)
502     OR  7106 = ANY (artderflurstuecksgrenze)
503    )
504    AND advstandardmodell ~~ 'DLKM'::text;
505
506COMMENT ON VIEW sk201x_politische_grenze IS 'fuer Kartendarstellung: besondere FlurstÃŒcksgrenze Politische Grenzen (Bund, Land, Kreis, Gemeinde)';
507-- GefÀllt mir nicht! Array-Felder eignen sich nicht als Filter. Optimierung: in Tabelle speichern
508
509
510--  ------------------------------------------
511--  Sichten fuer Fehlersuche und Daten-Analyse
512--  ------------------------------------------
513
514-- FlurstÃŒcke mit Anzeige der FlurstÃŒcksnummer an der "Standardposition"
515
516-- Nach der Konvertierung aus ALK hat zunÀchst jedes FlurstÌck eine explizit gesetzte Position der FlurstÌcksnummer.
517
518-- Nach einer manuellen Teilung bekommen die neuen FlurstÃŒcke im ALKIS nur dann eine Position,
519-- wenn die Positioin manuell bestimmt (verschoben) wurde.
520-- Wenn die FlurstÃŒcksnummer an ihrer "Standardposition" angezeigt werden soll,
521-- dann wird diese in den Daten (DHK, NAS) nicht gesetzt.
522-- Der Konverter PostNAS konvertiert aber nur die Daten, die er bekommt, er setzt nicht die Standard-Position
523-- fÃŒr die FlurstÃŒcke, die ohne eine manuelle Position kommen.
524
525-- Diese FÀlle identifizieren
526CREATE OR REPLACE VIEW flstnr_ohne_position
527AS
528 SELECT f.gml_id,
529        f.gemarkungsnummer || '-' || f.flurnummer || '-' || f.zaehler::text || COALESCE ('/' || f.nenner::text, '') AS such -- Suchstring fÃŒr ALKIS-Navigation nach FS-Kennzeichen
530 FROM        ax_flurstueck     f
531   LEFT JOIN alkis_beziehungen v  ON v.beziehung_zu = f.gml_id
532 --LEFT JOIN ap_pto            p  ON p.gml_id       = v.beziehung_von
533  WHERE v.beziehungsart is NULL
534    AND f.endet IS NULL
535--ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler
536  ;
537COMMENT ON VIEW flstnr_ohne_position IS 'FlurstÌcke ohne manuell gesetzte Position fÌr die PrÀsentation der FS-Nr';
538
539-- Umbruch im Label? z.B. "Schwimm-/nbecken"
540-- Sind 2 Buchstaben in Mapfile bei "WRAP" möglich?
541CREATE OR REPLACE VIEW texte_mit_umbruch
542AS
543 SELECT ogc_fid, schriftinhalt, art
544   FROM ap_pto
545  WHERE not schriftinhalt is null
546    AND schriftinhalt like '%/n%';
547
548
549-- EXTENT fÃŒr das Mapfile eines Mandanten ermitteln
550CREATE OR REPLACE VIEW flurstuecks_minmax AS
551 SELECT min(st_xmin(wkb_geometry)) AS r_min,
552        min(st_ymin(wkb_geometry)) AS h_min,
553        max(st_xmax(wkb_geometry)) AS r_max,
554        max(st_ymax(wkb_geometry)) AS h_max
555   FROM ax_flurstueck f
556   WHERE f.endet IS NULL;
557COMMENT ON VIEW flurstuecks_minmax IS 'Maximale Ausdehnung von ax_flurstueck fuer EXTENT-Angabe im Mapfile';
558
559-- Nach Laden der Keytables:
560CREATE OR REPLACE VIEW baurecht
561AS
562  SELECT r.ogc_fid,
563         r.wkb_geometry,
564         r.gml_id,
565         r.artderfestlegung as adfkey, -- Art der Festlegung - Key
566         r."name",                     -- Eigenname des Gebietes
567         r.stelle,                     -- Stelle Key
568         r.bezeichnung AS rechtbez,    -- Verfahrensnummer
569         a.bezeichner  AS adfbez,      -- Art der Festlegung - Bezeichnung
570         d.bezeichnung AS stellbez     -- Stelle Bezeichnung
571      -- , d.stellenart                -- weiter entschluesseln?
572    FROM ax_bauraumoderbodenordnungsrecht r
573    LEFT JOIN ax_bauraumoderbodenordnungsrecht_artderfestlegung a
574      ON r.artderfestlegung = a.wert
575    LEFT JOIN ax_dienststelle d
576      ON r.land   = d.land
577     AND r.stelle = d.stelle
578  WHERE r.endet IS NULL
579    AND d.endet IS NULL ;
580
581-- Man glaubt es kaum, aber im ALKIS haben Gemeinde und Gemarkung keinerlei Beziehung miteinander
582-- Nur durch Auswertung der FlurstÃŒcke kann man ermitteln, in welcher Gemeinde eine Gemarkung liegt.
583CREATE OR REPLACE VIEW gemarkung_in_gemeinde
584AS
585  SELECT DISTINCT land, regierungsbezirk, kreis, gemeinde, gemarkungsnummer
586  FROM            ax_flurstueck
587  WHERE           endet IS NULL
588  ORDER BY        land, regierungsbezirk, kreis, gemeinde, gemarkungsnummer
589;
590
591COMMENT ON VIEW gemarkung_in_gemeinde IS 'Welche Gemarkung liegt in welcher Gemeinde? Durch Verweise aus FlurstÃŒck.';
592
593
594-- Untersuchen, welche Geometrie-Typen vorkommen
595CREATE OR REPLACE VIEW arten_von_flurstuecksgeometrie
596AS
597 SELECT   count(gml_id) as anzahl,
598          st_geometrytype(wkb_geometry)
599 FROM     ax_flurstueck
600 WHERE    endet IS NULL
601 GROUP BY st_geometrytype(wkb_geometry);
602
603
604-- A d r e s s e n
605
606-- Verschluesselte Lagebezeichnung (Strasse und Hausnummer) fuer eine Gemeinde
607-- Schluessel der Gemeinde nach Bedarf anpassen!
608
609--  FEHLER: Funktion to_char(character varying, unknown) existiert nicht
610
611
612CREATE OR REPLACE VIEW adressen_hausnummern
613AS
614    SELECT
615        s.bezeichnung AS strassenname,
616         g.bezeichnung AS gemeindename,
617         l.land,
618         l.regierungsbezirk,
619         l.kreis,
620         l.gemeinde,
621         l.lage        AS strassenschluessel,
622         l.hausnummer
623    FROM   ax_lagebezeichnungmithausnummer l 
624    JOIN   ax_gemeinde g
625      ON l.kreis=g.kreis
626     AND l.gemeinde=g.gemeinde
627    JOIN   ax_lagebezeichnungkatalogeintrag s
628      ON l.kreis=s.kreis
629     AND l.gemeinde=s.gemeinde
630     AND l.lage = s.lage        -- ab PostNAS 0.6
631    WHERE     l.gemeinde = 40;  -- "40" = Stadt Lage
632
633
634-- Zuordnung dieser Adressen zu Flurstuecken
635-- Schluessel der Gemeinde nach Bedarf anpassen!
636
637CREATE OR REPLACE VIEW adressen_zum_flurstueck
638AS
639    SELECT
640           f.gemarkungsnummer,
641           f.flurnummer,
642           f.zaehler,
643           f.nenner,
644           g.bezeichnung AS gemeindename,
645           s.bezeichnung AS strassenname,
646           l.lage        AS strassenschluessel,
647           l.hausnummer
648      FROM   ax_flurstueck f
649      JOIN   alkis_beziehungen v
650        ON f.gml_id=v.beziehung_von
651      JOIN   ax_lagebezeichnungmithausnummer l 
652        ON l.gml_id=v.beziehung_zu
653      JOIN   ax_gemeinde g
654        ON l.kreis=g.kreis
655       AND l.gemeinde=g.gemeinde
656      JOIN   ax_lagebezeichnungkatalogeintrag s
657        ON l.kreis=s.kreis
658       AND l.gemeinde=s.gemeinde
659       AND l.lage = s.lage   -- ab PostNAS 0.6
660     WHERE v.beziehungsart='weistAuf'
661       AND l.gemeinde = 40  -- "40" = Stadt Lage
662     ORDER BY
663           f.gemarkungsnummer,
664           f.flurnummer,
665           f.zaehler,
666           f.nenner;
667
668
669-- FlurstÃŒcke eines EigentÃŒmers
670-- ----------------------------
671
672-- Dieser View liefert nur die (einfache) Buchungsart "GrundstÃŒck"
673-- Solche FÀlle wie "Erbbaurecht an GrundstÌck" oder "Wohnungs-/Teileigentum an aufgeteiltes GrundstÌck"
674-- oder "Miteigentum an aufteteiltes GrundstÃŒck" fehlen in deisere Auswertung.
675-- Dazu siehe: "rechte_eines_eigentuemers".
676
677-- Das Ergbenis ist gedacht fÃŒr den Export als CSV und Weiterverarbeitung mit einer Tabellenkalkulation
678-- oder einer einfachen Datenbank.
679
680-- Auch ein Export als Shape ist moeglich (dafuer: geom hinzugefuegt, Feldnamen gekuerzt)
681-- Kommando:
682--  pgsql2shp -h localhost -p 5432 -f "/data/.../alkis_fs_gemeinde.shp"  [db-name]  public.flurstuecke_eines_eigentuemers
683
684-- Übersicht der Tabellen:
685--
686-- Person <benennt< NamNum. >istBestandteilVon> Blatt <istBestandteilVon< Stelle >istGebucht> Flurstueck
687--                                              *-> Bezirk                *-> Buchungsart     *-> Gemarkung
688
689-- Wobei ">xxx>" = JOIN ÃŒber die Verbindungs-Tabelle "alkis_beziehungen" mit der Beziehungsart "xxx".
690
691CREATE OR REPLACE VIEW flurstuecke_eines_eigentuemers
692AS
693   SELECT
694      k.bezeichnung                AS gemarkung,
695      k.gemarkungsnummer           AS gemkg_nr,
696      f.flurnummer                 AS flur,
697      f.zaehler                    AS fs_zaehler,
698      f.nenner                     AS fs_nenner,
699      f.amtlicheflaeche            AS flaeche,
700      f.wkb_geometry               AS geom,  -- fuer Export als Shape
701   -- g.bezirk,
702      b.bezeichnung                AS bezirkname,
703      g.buchungsblattnummermitbuchstabenerweiterung AS gb_blatt,
704      g.blattart,
705      s.laufendenummer             AS bvnr,
706      art.bezeichner               AS buchgsart,
707   -- s.zaehler || '/' || s.nenner AS buchg_anteil,
708      n.laufendenummernachdin1421  AS name_num,
709   -- n.zaehler || '/' || n.nenner AS nam_anteil,
710      p.nachnameoderfirma          AS nachname --,
711   -- p.vorname
712   FROM       ax_person              p
713        JOIN  alkis_beziehungen      bpn  ON bpn.beziehung_zu  = p.gml_id
714        JOIN  ax_namensnummer        n    ON bpn.beziehung_von =n.gml_id
715        JOIN  alkis_beziehungen      bng  ON n.gml_id = bng.beziehung_von
716        JOIN  ax_buchungsblatt       g    ON bng.beziehung_zu = g.gml_id
717        JOIN  ax_buchungsblattbezirk b    ON g.land = b.land AND g.bezirk = b.bezirk
718        JOIN  alkis_beziehungen      bgs  ON bgs.beziehung_zu = g.gml_id
719        JOIN  ax_buchungsstelle      s    ON s.gml_id = bgs.beziehung_von
720        JOIN  ax_buchungsstelle_buchungsart art ON s.buchungsart = art.wert
721        JOIN  alkis_beziehungen      bsf  ON bsf.beziehung_zu = s.gml_id
722        JOIN  ax_flurstueck          f    ON f.gml_id = bsf.beziehung_von
723        JOIN  ax_gemarkung           k    ON f.land = k.land AND f.gemarkungsnummer = k.gemarkungsnummer
724   WHERE p.nachnameoderfirma LIKE 'Gemeinde %'   -- ** Bei Bedarf anpassen!
725     AND bpn.beziehungsart = 'benennt'           -- Namennummer     >> Person
726     AND bng.beziehungsart = 'istBestandteilVon' -- Namensnummer    >> Grundbuch
727     AND bgs.beziehungsart = 'istBestandteilVon' -- Buchungs-Stelle >> Grundbuch
728     AND bsf.beziehungsart = 'istGebucht'        -- Flurstueck      >> Buchungs-Stelle
729     AND p.endet IS NULL
730     AND n.endet IS NULL
731     AND g.endet IS NULL
732     AND b.endet IS NULL
733     AND s.endet IS NULL
734     AND f.endet IS NULL
735     AND k.endet IS NULL
736   ORDER BY   
737         k.bezeichnung,
738         f.flurnummer,
739         f.zaehler,
740         f.nenner,
741         g.bezirk,
742         g.buchungsblattnummermitbuchstabenerweiterung,
743         s.laufendenummer
744;
745
746
747-- Rechte eines EigentÃŒmers
748-- ------------------------
749
750-- Dieser View sucht speziell die FÀlle wo eine Buchungsstelle ein Recht "an" einer anderen Buchungsstelle hat.
751--  - "Erbbaurecht *an* GrundstÃŒck"
752--  - "Wohnungs-/Teileigentum *an* Aufgeteiltes GrundstÃŒck"
753--  - "Miteigentum *an* Aufteteiltes GrundstÃŒck"
754-- Suchkriterium ist der Name des EigentÃŒmers auf dem "herrschenden" Grundbuch, also dem Besitzer des Rechtes.
755
756-- Diese FÀlle fehlen im View "flurstuecke_eines_eigentuemers".
757
758-- Übersicht der Tabellen:
759--
760-- Person <benennt< NamNum. >istBestandteilVon> Blatt <istBestandteilVon< Stelle-h >an> Stelle-d >istGebucht> Flurstueck
761--
762
763-- Wobei ">xxx>" = JOIN ÃŒber die Verbindungs-Tabelle "alkis_beziehungen" mit der Beziehungsart "xxx".
764
765
766CREATE OR REPLACE VIEW rechte_eines_eigentuemers
767AS
768   SELECT
769      k.bezeichnung                AS gemarkung,
770      k.gemarkungsnummer           AS gemkg_nr,
771      f.flurnummer                 AS flur,
772      f.zaehler                    AS fs_zaehler,
773      f.nenner                     AS fs_nenner,
774      f.amtlicheflaeche            AS flaeche,
775      f.wkb_geometry               AS geom,  -- fuer Export als Shape
776   -- g.bezirk,
777      b.bezeichnung                AS bezirkname,
778      g.buchungsblattnummermitbuchstabenerweiterung AS gb_blatt,
779   -- g.blattart,
780      sh.laufendenummer            AS bvnr_herr,
781      sh.zaehler || '/' || sh.nenner AS buchg_anteil_herr,
782      arth.bezeichner              AS buchgsa_herr,
783      bss.beziehungsart            AS bez_art,
784      artd.bezeichner              AS buchgsa_dien,
785      sd.laufendenummer            AS bvnr_dien,
786   -- sd.zaehler || '/' || sd.nenner AS buchg_anteil_dien,
787      n.laufendenummernachdin1421  AS name_num,
788   -- n.zaehler || '/' || n.nenner AS nam_anteil,
789      p.nachnameoderfirma          AS nachname --, 
790   -- p.vorname
791   FROM       ax_person              p
792        JOIN  alkis_beziehungen      bpn  ON bpn.beziehung_zu  = p.gml_id
793        JOIN  ax_namensnummer        n    ON bpn.beziehung_von =n.gml_id
794        JOIN  alkis_beziehungen      bng  ON n.gml_id = bng.beziehung_von
795        JOIN  ax_buchungsblatt       g    ON bng.beziehung_zu = g.gml_id
796        JOIN  ax_buchungsblattbezirk b    ON g.land = b.land AND g.bezirk = b.bezirk
797        JOIN  alkis_beziehungen      bgs  ON bgs.beziehung_zu = g.gml_id
798        JOIN  ax_buchungsstelle      sh   ON sh.gml_id = bgs.beziehung_von  -- herrschende Buchung
799        JOIN  ax_buchungsstelle_buchungsart arth ON sh.buchungsart = arth.wert
800        JOIN  alkis_beziehungen      bss  ON sh.gml_id = bss.beziehung_von
801        JOIN  ax_buchungsstelle      sd   ON sd.gml_id = bss.beziehung_zu   -- dienende Buchung
802        JOIN  ax_buchungsstelle_buchungsart artd ON sd.buchungsart = artd.wert
803        JOIN  alkis_beziehungen      bsf  ON bsf.beziehung_zu = sd.gml_id
804        JOIN  ax_flurstueck          f    ON f.gml_id = bsf.beziehung_von
805        JOIN  ax_gemarkung           k    ON f.land = k.land AND f.gemarkungsnummer = k.gemarkungsnummer
806   WHERE p.nachnameoderfirma LIKE 'Stadt %'   -- ** Bei Bedarf anpassen!
807     AND bpn.beziehungsart = 'benennt'           -- Namennummer     >> Person
808     AND bng.beziehungsart = 'istBestandteilVon' -- Namensnummer    >> Grundbuch
809     AND bgs.beziehungsart = 'istBestandteilVon' -- B-Stelle herr   >> Grundbuch
810     AND bss.beziehungsart in ('an','zu')        -- B-Stelle herr.  >> B-Stelle dien.
811     AND bsf.beziehungsart = 'istGebucht'        -- Flurstueck      >> B-Stelle dien
812     AND p.endet IS NULL
813     AND n.endet IS NULL
814     AND g.endet IS NULL
815     AND b.endet IS NULL
816     AND sh.endet IS NULL
817     AND sd.endet IS NULL
818     AND f.endet IS NULL
819     AND k.endet IS NULL
820   ORDER BY   
821         k.bezeichnung,
822         f.flurnummer,
823         f.zaehler,
824         f.nenner,
825         g.bezirk,
826         g.buchungsblattnummermitbuchstabenerweiterung,
827         sh.laufendenummer
828;
829
830CREATE OR REPLACE VIEW beziehungen_redundant
831AS
832SELECT *
833 FROM alkis_beziehungen AS bezalt
834 WHERE EXISTS
835       (SELECT ogc_fid
836         FROM alkis_beziehungen AS bezneu
837        WHERE bezalt.beziehung_von = bezneu.beziehung_von
838          AND bezalt.beziehung_zu  = bezneu.beziehung_zu
839          AND bezalt.beziehungsart = bezneu.beziehungsart
840          AND bezalt.ogc_fid       < bezneu.ogc_fid
841        );
842
843COMMENT ON VIEW beziehungen_redundant IS 'alkis_beziehungen zu denen es eine identische neue Version gibt.';
844
845
846CREATE OR REPLACE VIEW beziehungen_redundant_in_delete
847AS
848SELECT *
849 FROM alkis_beziehungen AS bezalt
850 WHERE EXISTS
851       (SELECT ogc_fid
852         FROM alkis_beziehungen AS bezneu
853        WHERE bezalt.beziehung_von = bezneu.beziehung_von
854          AND bezalt.beziehung_zu  = bezneu.beziehung_zu
855          AND bezalt.beziehungsart = bezneu.beziehungsart
856          AND bezalt.ogc_fid       < bezneu.ogc_fid
857        )
858     -- mit dem Zusatz nur die Faelle aus dem letzten Durchlauf,
859     -- die aktuell noch in der Delet-Tabelle stehen
860     AND EXISTS
861        (SELECT ogc_fid
862         FROM delete
863         WHERE bezalt.beziehung_von = substr(featureid, 1, 16)
864            OR bezalt.beziehung_zu  = substr(featureid, 1, 16)
865        );
866
867COMMENT 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.';
868
869
870-- Suche nach Fehler durch "Replace"
871-- Wenn ax_flurstueck ÃŒber "replace" ausgetauscht wird und dabei gleichzeitig eine andere
872-- Buchungsstelle bekommt, dann bleibt die alte Buchungsstelle in den alkis_beziehungen.
873-- Mail PostNAS Mailingliste von 2013-02-20
874CREATE OR REPLACE VIEW mehrfache_buchung_zu_fs
875AS
876  SELECT f.gml_id, count(b.ogc_fid) AS anzahl
877    FROM ax_flurstueck f
878    JOIN alkis_beziehungen b
879      ON f.gml_id = b.beziehung_von
880  WHERE b.beziehungsart = 'istGebucht'
881  GROUP BY f.gml_id
882  HAVING count(b.ogc_fid) > 1;
883
884-- Noch einfacher? - Auch ohne JOIN wird das selbe Ergebnis geliefert.
885-- Doppelte Verweise zÀhlen ohne zu prÌfen, ob die gml_id in ax_flurstueck existiert.
886--  SELECT b.beziehung_von, count(b.ogc_fid) AS anzahl
887--    FROM alkis_beziehungen b
888--   WHERE b.beziehungsart = 'istGebucht'
889--  GROUP BY b.beziehung_von
890--  HAVING count(b.ogc_fid) > 1;
891
892COMMENT ON VIEW mehrfache_buchung_zu_fs IS 'Nach replace von ax_flurtstueck mit einer neuen ax_buchungsstelle bleibt die alte Verbindung in alkis_beziehungen';
893
894
895-- END --
Note: See TracBrowser for help on using the repository browser.