source: trunk/import/sichten_wms.sql @ 328

Revision 328, 36.1 KB checked in by frank.jaeger, 7 years ago (diff)

Letzte kleine Korrekturen an Import für PostNAS Version 0.7 vor Wechsel auf Version 0.8

Line 
1-- =====
2-- ALKIS
3-- =====
4
5--  PostNAS 0.7
6
7--  -----------------------------------------
8--  Sichten fuer Verwendung im mapfiles (wms)
9--  -----------------------------------------
10
11--  Dieses SQL sollte in jeder PostNAS-ALKIS-Datenbank verarbeitet werden, weil es vom Mapfile benötigt wird.
12
13--  2012-04-17 flstnr_ohne_position
14--  2012-04-24 pauschal Filter 'endet IS NULL' um historische Objekte auszublenden
15--  2012-10-29 Redundanzen in Beziehungen suchen (entstehen durch replace)
16--  2013-02-20 Mehrfache Buchungsstellen zum FS suchen, dies sind Auswirkungen eines Fehlers bei Replace
17--  2013-03-05 Beschriftungen aus ap_pto auseinander sortieren, neuer View "grenzpunkt"
18--  2013-03-12 Optimierung Hausnummern, View "gebaeude_txt" (Funktion und Name)
19--  2013-04-15 UnterdrÃŒcken doppelter Darstellung in den Views 'ap_pto_stra', 'ap_pto_nam', 'ap_pto_rest'
20--  2013-04-16 Thema "BodenschÀtzung" und fehlernde Kommentare zum Views ergÀnzt.
21--             Diese Datei aufgeteilt in "sichten.sql" und "sichten_wms.sql"
22--  2013-04-22 art="PNR" (Pseudonummer)
23--  2013-10-24 View ap_pto_stra wird ersetzt durch die Tabellen "pp_strassenname" und "pp_strassenklas", die im postProcessing gefÃŒllt werden.
24--  2014-02-24 Kein Filter auf advstandardmodell bei FlurstÃŒcks-Zuordnungspfeil
25--  2014-08-25 Straßennamen aufteilen in _P und L
26
27-- WMS-Layer "ag_t_flurstueck"
28-- ---------------------------
29-- Die Geometrie befindet sich in "ap_pto", der Label in "ax_flurstueck"
30-- Die Verbindung erfolgt ÃŒber "alkis_beziehungen"
31
32-- Bruchnummerierung erzeugen
33-- ALT 2012-04-17: Diese Version zeigt nur die manuell gesetzten Positionen
34-- 2013-04-18 auskommentiert
35--      CREATE OR REPLACE VIEW s_flurstueck_nr
36--      AS
37--       SELECT f.ogc_fid,
38--                      p.wkb_geometry,  -- Position des Textes
39--                      f.zaehler::text || COALESCE ('/' || f.nenner::text, '') AS fsnum
40--         FROM ap_pto             p
41--         JOIN alkis_beziehungen  v  ON p.gml_id       = v.beziehung_von
42--         JOIN ax_flurstueck      f  ON v.beziehung_zu = f.gml_id
43--        WHERE v.beziehungsart = 'dientZurDarstellungVon'
44--              AND p.endet IS NULL  AND f.endet IS NULL;
45--      COMMENT ON VIEW s_flurstueck_nr IS 'Sicht fÃŒr Kartendarstellung ÃŒber PostProcessing: Bruchnummerierung FlurstÃŒck (nur manuell gesetzte Positionen)';
46
47-- Wenn keine manuelle Position gesetzt ist, wird die Flaechenmitte verwendet
48
49-- ACHTUNG: Dieser View kann nicht direkt im Mapserver-WMS verwendet werden.
50-- Die Anzeige ist zu langsam. Filterung Ìber BBOX kann nicht funktionieren, da zunÀchst ALLE Standardpositionen
51-- berechnet werden mÃŒssen, bevor darÃŒber gefiltert werden kann.
52
53-- In einer Hilfstabelle mit geometrischem Index zwischenspeichern.
54-- Siehe PostProcessing: Tabelle "pp_flurstueck_nr"
55
56-- 2013-04-18 auskommentiert
57--      CREATE OR REPLACE VIEW s_flurstueck_nr2
58--      AS
59--        SELECT f.ogc_fid,
60--                       p.wkb_geometry,  -- manuelle Position des Textes
61--                       f.zaehler::text || COALESCE ('/' || f.nenner::text, '') AS fsnum
62--              FROM ap_pto             p
63--              JOIN alkis_beziehungen  v  ON p.gml_id       = v.beziehung_von
64--              JOIN ax_flurstueck      f  ON v.beziehung_zu = f.gml_id
65--         WHERE v.beziehungsart = 'dientZurDarstellungVon'
66--               AND p.endet IS NULL
67--               AND f.endet IS NULL
68--       UNION
69--        SELECT f.ogc_fid,
70--                       ST_PointOnSurface(f.wkb_geometry) AS wkb_geometry,  -- FlÀchenmitte als Position des Textes
71--                       f.zaehler::text || COALESCE ('/' || f.nenner::text, '') AS fsnum
72--              FROM      ax_flurstueck     f
73--              LEFT JOIN alkis_beziehungen v  ON v.beziehung_zu = f.gml_id
74--         WHERE v.beziehungsart is NULL AND f.endet IS NULL;
75--      COMMENT ON VIEW s_flurstueck_nr2
76--       IS 'Sicht fÃŒr Kartendarstellung ÃŒber PostProcessing: Bruchnummerierung FlurstÃŒck, auch Standard-Position. Nicht direkt fuer WMS verwenden!';
77
78
79-- Layer "ag_t_gebaeude"
80-- ---------------------
81-- Problem: Zu einigen GebÀuden gibt es mehrere Hausnummern.
82-- Diese unterscheiden sich im Feld ap_pto.advstandardmodell
83-- z.B. 3 verschiedene EintrÀge mit <NULL>, {DKKM500}, {DKKM1000}, (Beispiel; Lage, Lange Straße 15 c)
84
85 -- DROP VIEW s_hausnummer_gebaeude;
86 --     CREATE OR REPLACE VIEW s_hausnummer_gebaeude
87 --     AS
88 --      SELECT p.ogc_fid, p.wkb_geometry,
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 ON p.gml_id = v.beziehung_von
93 --        JOIN ax_lagebezeichnungmithausnummer l ON v.beziehung_zu  = l.gml_id
94 --       WHERE v.beziehungsart = 'dientZurDarstellungVon'
95 --             AND p.endet IS NULL AND l.endet IS NULL;
96 --     COMMENT ON VIEW s_hausnummer_gebaeude IS 'fuer Kartendarstellung: Hausnummern HauptgebÀude';
97
98-- Verbesserte Version 2013-03-07
99-- Nimmt nun vorzugsweise den Text der Darstellung aus ap_pto (bei ibR immer gefÃŒllt).
100-- Wenn der nicht gefÃŒllt ist, wird statt dessen die Nummer aus der verknÃŒpften Labebezeichnung
101-- verwendet (der hÀufigste Fall bei AED).
102CREATE OR REPLACE VIEW s_hausnummer_gebaeude
103AS
104 SELECT p.ogc_fid,
105        p.wkb_geometry,                               -- Point
106        p.drehwinkel * 57.296 AS drehwinkel,  -- umn: ANGLE
107    --  p.art,
108    --  p.advstandardmodell       AS modell,  -- TEST
109    --  p.horizontaleausrichtung  AS hor,     -- = 'zentrisch'
110    --  p.vertikaleausrichtung    AS ver,     -- = 'Basis' (oft), "Mitte" (selten)
111    --  p.schriftinhalt,                      -- WMS: das bessere LABELITEM, kann aber leer sein
112    --  l.hausnummer,                         -- WMS: LABELITEM default/native
113        COALESCE(p.schriftinhalt, l.hausnummer) AS hausnummer
114   FROM ap_pto p
115   JOIN alkis_beziehungen v
116     ON p.gml_id = v.beziehung_von
117   JOIN ax_lagebezeichnungmithausnummer l
118         ON v.beziehung_zu  = l.gml_id
119  WHERE p.art = 'HNR'
120    AND 'DKKM1000' = ANY (p.advstandardmodell) -- erste NÀherungslösung um Redundanzen zu unterdrÃŒcken
121    AND v.beziehungsart = 'dientZurDarstellungVon'
122        AND p.endet IS NULL
123        AND l.endet IS NULL;
124COMMENT ON VIEW s_hausnummer_gebaeude IS 'Sicht fÌr Kartendarstellung: Hausnummern der HauptgebÀude.';
125-- ibR: darzustellender Text steht immer in ap_pto.schriftinhalt
126-- AED: ap_pto.schriftinhalt ist meist leer, nur selten ein Eintrag
127
128-- ToDo: In PostProcessing die Hausnummer von l.hausnummer in p.schriftinhalt kopieren, wenn leer
129--   Das wÃŒrde die COALESCE-Trickserei ersparen
130
131
132-- Layer "ag_t_nebengeb"
133-- ---------------------
134-- 2013-03-05: Diese Abfrage liefert keine Daten mehr.
135--      CREATE OR REPLACE VIEW s_nummer_nebengebaeude
136--      AS
137--       SELECT p.ogc_fid, p.wkb_geometry,
138--                      p.drehwinkel * 57.296 AS drehwinkel,    -- umn: ANGLE [drehwinkel]
139--               -- l.pseudonummer,                     -- die HsNr des zugehoerigen Hauptgebaeudes
140--                      l.laufendenummer                -- umn: LABELITEM - die laufende Nummer des Nebengebaeudes
141--         FROM ap_pto p
142--         JOIN alkis_beziehungen v
143--               ON p.gml_id = v.beziehung_von
144--         JOIN ax_lagebezeichnungmitpseudonummer l
145--               ON v.beziehung_zu  = l.gml_id
146--        WHERE v.beziehungsart = 'dientZurDarstellungVon'
147--              AND p.endet IS NULL AND l.endet IS NULL;
148--      COMMENT ON VIEW s_nummer_nebengebaeude IS 'Sicht fÃŒr Kartendarstellung: Hausnummern NebengebÀude (manuelle Position)';
149
150-- Suche nach einem Ersatz:
151-- ax_gebaeude  >hat>  ax_lagebezeichnungmitpseudonummer, kein Drehwinkel.
152CREATE OR REPLACE VIEW lfdnr_nebengebaeude
153AS
154 SELECT g.ogc_fid,
155        g.wkb_geometry,
156    --  l.pseudonummer,                 -- TEST die HsNr des zugehoerigen Hauptgebaeudes
157        l.laufendenummer                -- umn: LABELITEM - die laufende Nummer des Nebengebaeudes
158   FROM ax_gebaeude g
159   JOIN alkis_beziehungen v
160     ON g.gml_id = v.beziehung_von
161   JOIN ax_lagebezeichnungmitpseudonummer l
162     ON v.beziehung_zu  = l.gml_id
163   WHERE v.beziehungsart = 'hat'
164     AND g.endet IS NULL
165     AND g.endet IS NULL;
166COMMENT ON VIEW lfdnr_nebengebaeude
167  IS 'Sicht fÃŒr Kartendarstellung: Laufende Nummer des NebengebÀudes zu einer Lagebezeichnung mit der FlÀchengeometrie des GebÀudes';
168
169
170-- GebÀude-Text
171-- ------------
172CREATE OR REPLACE VIEW gebaeude_txt
173AS
174 SELECT g.ogc_fid,
175        g.wkb_geometry,
176        g.name,                    -- selten gefÃŒllt
177        f.bezeichner AS funktion   -- umn: LABELITEM
178   FROM ax_gebaeude g
179   JOIN ax_gebaeude_funktion f
180     ON g.gebaeudefunktion = f.wert
181  WHERE g.endet IS NULL
182    AND g.gebaeudefunktion < 9998; -- "Nach Quellenlage nicht zu spezifizieren" braucht man nicht anzeigen
183COMMENT ON VIEW gebaeude_txt
184  IS 'Sicht fÃŒr Kartendarstellung: Name zum GebÀude und EntschlÃŒsselung der GebÀude-Funktion (Ersatz fÃŒr Symbole)';
185
186
187-- Layer "ag_p_flurstueck"
188-- -----------------------
189CREATE OR REPLACE VIEW s_zugehoerigkeitshaken_flurstueck
190AS
191 SELECT p.ogc_fid,
192        p.wkb_geometry,
193        p.drehwinkel * 57.296 AS drehwinkel,
194        f.flurstueckskennzeichen
195   FROM ap_ppo p
196   JOIN alkis_beziehungen v
197     ON p.gml_id = v.beziehung_von
198   JOIN ax_flurstueck f
199     ON v.beziehung_zu = f.gml_id
200  WHERE p.art = 'Haken'
201    AND v.beziehungsart = 'dientZurDarstellungVon'
202    AND f.endet IS NULL
203    AND p.endet IS NULL;
204COMMENT ON VIEW s_zugehoerigkeitshaken_flurstueck
205  IS 'Sicht fÃŒr Kartendarstellung: Zugehörigkeitshaken zum FlurstÃŒck.';
206
207
208-- Layer "s_zuordungspfeil_flurstueck" (Signaturnummer 2004)
209-- -----------------------------------
210-- geÀ.: 2014-02-24: Kein Filter auf advstandardmodell
211CREATE OR REPLACE VIEW s_zuordungspfeil_flurstueck
212AS
213 SELECT l.ogc_fid,
214        l.wkb_geometry
215   FROM ap_lpo l
216   JOIN alkis_beziehungen v
217     ON l.gml_id = v.beziehung_von
218   JOIN ax_flurstueck f
219     ON v.beziehung_zu = f.gml_id
220  WHERE l.art = 'Pfeil'
221    AND v.beziehungsart = 'dientZurDarstellungVon'
222  --AND ('DKKM1000' ~~ ANY (l.advstandardmodell))
223    AND f.endet IS NULL
224    AND l.endet IS NULL;
225-- Die OBK-Alternative "sk2004_zuordnungspfeil" wird NICHT verwendet. Siehe dort.
226COMMENT ON VIEW s_zuordungspfeil_flurstueck
227  IS 'Sicht fÃŒr Kartendarstellung: Zuordnungspfeil zur FlurstÃŒcksnummer, Liniengeometrie.';
228
229-- geÀ.: 2014-02-24: Kein Filter auf advstandardmodell
230CREATE OR REPLACE VIEW s_zuordungspfeilspitze_flurstueck
231AS
232 SELECT l.ogc_fid,
233        (((st_azimuth(st_pointn(l.wkb_geometry, 1),
234        st_pointn(l.wkb_geometry, 2)) * (- (180)::double precision)) / pi()) + (90)::double precision) AS winkel,
235        st_startpoint(l.wkb_geometry) AS wkb_geometry
236   FROM ap_lpo l
237   JOIN alkis_beziehungen v
238     ON l.gml_id = v.beziehung_von
239   JOIN ax_flurstueck f
240     ON v.beziehung_zu = f.gml_id
241  WHERE l.art = 'Pfeil'
242    AND v.beziehungsart = 'dientZurDarstellungVon'
243  --AND ('DKKM1000' ~~ ANY (l.advstandardmodell))
244    AND f.endet IS NULL
245    AND l.endet IS NULL;
246-- Die OBK-Alternativen "sk2004_zuordnungspfeil_spitze" wird NICHT verwendet. Siehe dort.
247COMMENT ON VIEW s_zuordungspfeilspitze_flurstueck
248  IS 'Sicht fÃŒr Kartendarstellung: Zuordnungspfeil FlurstÃŒcksnummer, Spitze, Punktgeometrie mit Drehwinkel.';
249
250
251-- Drehwinkel in Bogenmass, wird vom mapserver in Grad benötigt. Umrechnung durch Faktor (180 / Pi)
252
253-- Zuordnungspfeil BodenschÀtzung (Signaturnummer 2701)
254-- ----------------------------------------------------
255CREATE OR REPLACE VIEW s_zuordungspfeil_bodensch
256AS
257 SELECT l.ogc_fid,
258        l.wkb_geometry
259   FROM ap_lpo l
260   JOIN alkis_beziehungen v
261     ON l.gml_id = v.beziehung_von
262   JOIN ax_bodenschaetzung b
263     ON v.beziehung_zu = b.gml_id
264  WHERE l.art = 'Pfeil'
265    AND v.beziehungsart = 'dientZurDarstellungVon'
266    AND ('DKKM1000' ~~ ANY (l.advstandardmodell))
267    AND b.endet IS NULL
268    AND l.endet IS NULL;
269COMMENT ON VIEW s_zuordungspfeil_bodensch
270  IS 'Sicht fÃŒr Kartendarstellung: Zuordnungspfeil BodenschÀtzung, Liniengeometrie.';
271
272CREATE OR REPLACE VIEW s_zuordungspfeilspitze_bodensch
273AS
274 SELECT l.ogc_fid,
275        (((st_azimuth(st_pointn(l.wkb_geometry, 1),
276        st_pointn(l.wkb_geometry, 2)) * (- (180)::double precision)) / pi()) + (90)::double precision) AS winkel,
277        st_startpoint(l.wkb_geometry) AS wkb_geometry
278   FROM ap_lpo l
279   JOIN alkis_beziehungen v
280     ON l.gml_id = v.beziehung_von
281   JOIN ax_bodenschaetzung b
282     ON v.beziehung_zu = b.gml_id
283  WHERE l.art = 'Pfeil'
284    AND v.beziehungsart = 'dientZurDarstellungVon'
285    AND ('DKKM1000' ~~ ANY (l.advstandardmodell))
286    AND b.endet IS NULL
287    AND l.endet IS NULL;
288-- Die OBK-Alternativen "sk2004_zuordnungspfeil_spitze" wird NICHT verwendet. Siehe dort.
289COMMENT ON VIEW s_zuordungspfeilspitze_flurstueck IS 'Sicht fÌr Kartendarstellung: Zuordnungspfeil BodenschÀtzung, Spitze, Punktgeometrie mit Drehwinkel.';
290
291
292-- Layer NAME "ap_pto_stra" (Straße) GROUP "praesentation"
293-- -------------------------------------------------------
294-- Von doppelten Textpositionen nur das passendere Modell anzeigen.
295-- Eine Relation wird fuer die Gruppierung verwendet:
296--  ap_pto >dientZurDarstellungVon> ax_lagebezeichnungohnehausnummer
297CREATE OR REPLACE VIEW ap_pto_stra
298AS
299  SELECT p.ogc_fid,
300         l.gml_id,                               -- wird im PP zum Nachladen aus Katalog gebraucht
301         p.schriftinhalt,                        -- WMS: LABELITEM
302         p.art,                                  -- WMS: CLASSITEM
303         p.horizontaleausrichtung  AS hor,       -- Verfeinern der Text-Position ..
304         p.vertikaleausrichtung    AS ver,       --  .. durch Klassifizierung hor/ver
305         p.drehwinkel * 57.296     AS winkel,    -- * 180 / Pi
306         p.wkb_geometry
307    FROM ap_pto p
308    JOIN alkis_beziehungen v   -- Relation zur Lagebezeichnung o. HsNr.
309      ON p.gml_id = v.beziehung_von
310    JOIN ax_lagebezeichnungohnehausnummer l
311      ON v.beziehung_zu = l.gml_id
312   WHERE  p.endet IS NULL                            -- nichts historisches
313     AND  p.art   IN ('Strasse','Weg','Platz','BezKlassifizierungStrasse') -- Diese Werte als CLASSES in LAYER behandeln.
314     AND  v.beziehungsart = 'dientZurDarstellungVon' -- kann, muss aber nicht
315     AND (   'DKKM1000' = ANY (p.advstandardmodell)  -- "Lika 1000" bevorzugen
316          OR 'DLKM'     = ANY (p.advstandardmodell)   
317     -- Leopoldshöhe, Heinestraße: 'DLKM'
318           -- Ersatzweise auch "keine Angabe", aber nur wenn es keinen besseren Text zur Lage gibt
319           OR (p.advstandardmodell IS NULL
320               AND (SELECT s.ogc_fid                -- irgend ein Feld
321                      FROM ap_pto s                 -- eines anderen Textes (suchen)
322                      JOIN alkis_beziehungen vs     -- zur gleichen Lage o.HsNr
323                        ON s.gml_id = vs.beziehung_von
324                      JOIN ax_lagebezeichnungohnehausnummer ls
325                        ON vs.beziehung_zu = ls.gml_id
326                     WHERE ls.gml_id = l.gml_id
327                       AND vs.beziehungsart = 'dientZurDarstellungVon' -- kann, muss aber nicht
328                       AND NOT s.advstandardmodell IS NULL
329                     LIMIT 1  -- einer reicht als Beweis
330                   ) IS NULL
331              ) -- "Subquery IS NULL" liefert true wenn kein weiterer Text gefunden wird
332         )
333;
334
335COMMENT ON VIEW ap_pto_stra
336  IS 'Sicht fÃŒr Kartendarstellung: Beschriftung aus "ap_pto" fÃŒr Lagebezeichnung mit Art "Straße", "Weg", "Platz" oder Klassifizierung.
337 Vorzugsweise mit advstandardmodell="DKKM1000", ersatzweise ohne Angabe. Dient im Script pp_laden.sql zum ersten FÃŒllen der Tabelle "pp_strassenname_p".';
338
339
340-- Daten aus dem View "ap_pto_stra" werden im PostProcessing gespeichert in der Tabelle "pp_strassenname_p".
341-- Der View ÃŒbernimmt die Auswahl des passenden advstandardmodell und rechnet den Winkel passend um,
342-- In der Tabelle werden dann die leer gebliebenen Label aus dem Katalog noch ergÀnzt.
343
344-- DROP VIEW ap_lto_stra;
345CREATE OR REPLACE VIEW ap_lto_stra
346AS
347  SELECT p.ogc_fid,
348         l.gml_id,                               -- wird im PP zum Nachladen aus Katalog gebraucht
349         p.schriftinhalt,                        -- WMS: LABELITEM
350         p.art,                                  -- WMS: CLASSITEM
351         p.horizontaleausrichtung  AS hor,       -- Verfeinern der Text-Position ..
352         p.vertikaleausrichtung    AS ver,       --  .. durch Klassifizierung hor/ver
353         p.wkb_geometry
354    FROM ap_lto p
355    JOIN alkis_beziehungen v   -- Relation zur Lagebezeichnung o. HsNr.
356      ON p.gml_id = v.beziehung_von
357    JOIN ax_lagebezeichnungohnehausnummer l
358      ON v.beziehung_zu = l.gml_id
359   WHERE  p.endet IS NULL                            -- nichts historisches
360     AND  p.art   IN ('Strasse','Weg','Platz','BezKlassifizierungStrasse') -- Diese Werte als CLASSES in LAYER behandeln.
361     AND  v.beziehungsart = 'dientZurDarstellungVon' -- kann, muss aber nicht
362
363--   AND (   ('DKKM1000' = ANY (p.advstandardmodell)     -- "Lika 1000" bevorzugen
364--        OR ('DLKM'     = ANY (p.advstandardmodell)  )
365
366     -- ++ Muss als Array angelegt sein!!
367     AND ( NOT p.advstandardmodell  IS NULL          -- ++ Zwischenlösung bis DB mit neuem Schema (2014-08-22) angelegt und geladen wurde ++
368
369           -- Ersatzweise auch "keine Angabe", aber nur wenn es keinen besseren Text zur Lage gibt
370           OR (p.advstandardmodell IS NULL
371               AND (SELECT s.ogc_fid                -- irgend ein Feld
372                      FROM ap_lto s                 -- eines anderen Textes (suchen)
373                      JOIN alkis_beziehungen vs     -- zur gleichen Lage o.HsNr
374                        ON s.gml_id = vs.beziehung_von
375                      JOIN ax_lagebezeichnungohnehausnummer ls
376                        ON vs.beziehung_zu = ls.gml_id
377                     WHERE ls.gml_id = l.gml_id
378                       AND vs.beziehungsart = 'dientZurDarstellungVon' -- kann, muss aber nicht
379                       AND NOT s.advstandardmodell IS NULL
380                     LIMIT 1  -- einer reicht als Beweis
381                   ) IS NULL
382              ) -- "Subquery IS NULL" liefert true wenn kein weiterer Text gefunden wird
383         )
384;
385COMMENT ON VIEW ap_lto_stra
386  IS 'Sicht fÃŒr Kartendarstellung: Beschriftung aus "ap_lto" fÃŒr Lagebezeichnung mit Art "Straße", "Weg", "Platz" oder Klassifizierung.
387 Vorzugsweise mit advstandardmodell="DKKM1000", ersatzweise ohne Angabe. Dient im Script pp_laden.sql zum ersten FÃŒllen der Tabelle "pp_strassenname_l".';
388
389-- 2014-08-22: Daten aus dem View "ap_lto_stra" werden im PostProcessing gespeichert in den Tabellen "pp_strassenname_l".
390-- Der View ÃŒbernimmt die Auswahl des passenden advstandardmodell.
391-- In der Tabelle werden dann die leer gebliebenen Label aus dem Katalog noch ergÀnzt.
392
393
394-- Layer NAME "ap_pto_nam" GROUP "praesentation"
395-- -------------------------------------------------------
396-- 'NAM' = Name (Eigenname) und 'ZNM' = Zweitname (touristischer oder volkstÃŒmlicher Name) zu ...
397--   -- AX_Strassenverkehr oder AX_Platz usw.
398--  ap_pto >dientZurDarstellungVon> ?irgendwas?
399
400-- Dieser View wird bisher nicht verwendet. Dazu mÃŒsste ein neuer Layer erzeugt werden und die
401-- Arten 'NAM' und 'ZNM' dann aus den View 'ap_pto_rest' heraus genommen werden.
402
403-- Entweder Layer trennen nach Text-Typen "NAM"+"ZNM" und dem Rest
404-- ODER           trennen nach fachlichen Ebenen wie "Nutzung" und "GebÀude" und ....
405
406CREATE OR REPLACE VIEW ap_pto_nam
407AS
408  SELECT p.ogc_fid,
409          -- p.advstandardmodell       AS modell,    -- TEST
410         p.schriftinhalt,                        -- WMS: LABELITEM
411         p.art,                                  -- WMS: CLASSITEM
412         p.horizontaleausrichtung  AS hor,       -- Verfeinern der Text-Position ..
413         p.vertikaleausrichtung    AS ver,       --  .. durch Klassifizierung hor/ver
414         p.drehwinkel * 57.296     AS winkel,    -- * 180 / Pi
415         p.wkb_geometry
416    FROM ap_pto p
417    JOIN alkis_beziehungen v       
418      ON p.gml_id = v.beziehung_von
419  --JOIN nutzung l                      -- Im PostProcessing zusammen gefasste Nutzungsarten-Abschnitte
420  --  ON v.beziehung_zu = l.gml_id
421   WHERE NOT p.schriftinhalt IS NULL
422     AND  p.endet IS NULL                            -- nichts historisches
423     AND  p.art   IN ('NAM','ZNM') -- Diese Werte als CLASSES in LAYER behandeln.
424     AND  v.beziehungsart = 'dientZurDarstellungVon' -- kann, muss aber nicht
425     AND ('DKKM1000' = ANY (p.advstandardmodell)     -- "Lika 1000" bevorzugen
426           -- Ersatzweise auch "keine Angabe", aber nur wenn es keinen besseren Text zur Lage gibt
427           OR (p.advstandardmodell IS NULL
428               AND (SELECT vs.beziehung_zu          -- irgend ein Feld
429                                          FROM ap_pto s                 -- eines anderen Textes (suchen)
430                      JOIN alkis_beziehungen vs     -- zur gleichen ?irgendwas?
431                        ON s.gml_id = vs.beziehung_von
432                     WHERE vs.beziehung_zu = v.beziehung_zu
433                       AND vs.beziehungsart = 'dientZurDarstellungVon' -- kann, muss aber nicht
434                       AND NOT s.advstandardmodell IS NULL
435                     LIMIT 1  -- einer reicht als Beweis
436                                        ) IS NULL
437              ) -- "Subquery IS NULL" liefert true wenn kein weiterer Text gefunden wird
438         )
439;
440COMMENT ON VIEW ap_pto_nam
441  IS 'Sicht fÃŒr Kartendarstellung: Beschriftung mit Art = Name/Zweitname. Vorzugsweise mit advstandardmodell="DKKM1000", ersatzweise ohne Angabe.';
442-- ToDo: Im PostProcessing in einer Tabelle speichern.
443
444
445-- Layer NAME "ap_pto" GROUP "praesentation"
446-- ----------------------------------------
447-- REST: Texte, die nicht schon in einem anderen Layer ausgegeben werden
448-- Ersetzt den View "s_beschriftung"
449
450-- alte Version bis 2013-04-15
451-- Nachteil: es werden mehrere Texte zum gleichen Objekt angezeigt die fÃŒr verschiedene MaßstÀbe gedacht sind.
452--CREATE OR REPLACE VIEW ap_pto_rest
453--AS
454--  SELECT p.ogc_fid,
455--         p.schriftinhalt,
456--         p.art,
457--         p.drehwinkel * 57.296 AS winkel, -- * 180 / Pi
458--         p.wkb_geometry
459--    FROM ap_pto p
460--   WHERE not p.schriftinhalt IS NULL
461--     AND p.endet IS NULL
462--     AND p.art NOT IN ('HNR','Strasse','Weg','Platz','BezKlassifizierungStrasse','AOG_AUG');
463
464
465-- 2013-04-15 Doppelte Darstellung aufgrund verschiedener "advstandardmodell" zum Objekt unterdrÃŒcken analog ap_pto_stra und ap_pto_nam
466CREATE OR REPLACE VIEW ap_pto_rest
467AS
468  SELECT p.ogc_fid,
469         p.schriftinhalt,
470         p.art,
471         p.drehwinkel * 57.296 AS winkel, -- * 180 / Pi
472         p.wkb_geometry
473    FROM ap_pto p
474    JOIN alkis_beziehungen v   -- Relation zur ?irgendwas?
475      ON p.gml_id = v.beziehung_von
476   WHERE not p.schriftinhalt IS NULL
477     AND p.endet IS NULL
478     AND p.art   NOT IN ('PNR','HNR','Strasse','Weg','Platz','BezKlassifizierungStrasse','AOG_AUG') -- 'PNR',
479     -- Diese 'IN'-Liste fortschreiben bei Erweiterungen des Mapfiles
480     -- 'PNR' = Pseudonummer (lfd.-Nr.-NebengebÀude), Inhalte wie "(1)" oder "P50" - kommt nicht mehr vor, oder?
481    AND  v.beziehungsart = 'dientZurDarstellungVon' -- kann, muss aber nicht
482    AND ('DKKM1000' = ANY (p.advstandardmodell)     -- "Lika 1000" bevorzugen
483           -- Ersatzweise auch "keine Angabe" (nul) akzeptieren, aber nur wenn es keinen besseren Text zu ?irgendwas? gibt
484           -- Es wird hier nur bis zur Verbindungstabelle "alkis_beziehungen" gesucht, ob am anderen Ende die gleiche gml_id verlinkt ist.
485           -- Diese gml_id können dann zu verschiedenen, unbekannten Objekttabellen linken.
486           OR (p.advstandardmodell IS NULL
487               AND (SELECT vs.beziehung_zu          -- irgend ein Feld
488                                          FROM ap_pto s                 -- eines anderen Textes (suchen)
489                      JOIN alkis_beziehungen vs     -- zur gleichen ?irgendwas?
490                        ON s.gml_id = vs.beziehung_von
491                     WHERE vs.beziehung_zu = v.beziehung_zu
492                       AND vs.beziehungsart = 'dientZurDarstellungVon' -- kann, muss aber nicht
493                       AND NOT s.advstandardmodell IS NULL
494                     LIMIT 1  -- einer reicht als Ausschlußkriterium
495                                        ) IS NULL
496              ) -- "Subquery IS NULL" liefert true wenn kein weiterer Text gefunden wird
497         );
498COMMENT ON VIEW ap_pto_rest
499  IS 'Sicht fÃŒr Kartendarstellung: Beschriftungen aus "ap_pto", die noch nicht in anderen Layern angezeigt werden.';
500-- ToDo: Im PostProcessing in einer Tabelle speichern.
501
502-- Kommt PNR (Pseudonummer) noch im Bestand vor?
503--  SELECT * FROM ap_pto WHERE art = 'PNR' LIMIT 100;
504
505
506-- Layer "s_zuordungspfeil_gebaeude"
507-- -----------------------------------
508CREATE OR REPLACE VIEW s_zuordungspfeil_gebaeude
509AS
510 SELECT l.ogc_fid,
511     -- alkis_beziehungen.beziehungsart, -- TEST
512     -- ap_lpo.art, -- TEST
513        l.wkb_geometry
514   FROM ap_lpo l
515   JOIN alkis_beziehungen v
516     ON l.gml_id = v.beziehung_von
517   JOIN ax_gebaeude g
518     ON v.beziehung_zu = g.gml_id
519  WHERE l.art = 'Pfeil'
520    AND v.beziehungsart = 'dientZurDarstellungVon'
521    AND g.endet IS NULL
522    AND l.endet IS NULL;
523COMMENT ON VIEW s_zuordungspfeil_gebaeude
524  IS 'Sicht fÃŒr Kartendarstellung: Zuordnungspfeil fÃŒr GebÀude-Nummer (NebengebÀude). Wird wahrscheinlich nicht mehr benötigt.';
525
526
527-- Grenzpunkte
528-- -----------
529--  ax_punktortta  >zeigtAuf?> AX_Grenzpunkt
530-- Zum Punktort des Grenzpunktes auch eine Information zur Vermarkung holen
531CREATE OR REPLACE VIEW grenzpunkt
532AS
533 SELECT o.ogc_fid,
534        o.wkb_geometry,
535     -- g.punktkennung,    -- ggf spÀter als labelitem "rrrrrhhhhAnnnnn" "32483 5751 0 02002"
536        g.abmarkung_marke, -- steuert die Darstellung >9000 = unvermarkt
537        v.beziehungsart
538   FROM ax_punktortta o
539   JOIN alkis_beziehungen v
540     ON o.gml_id = v.beziehung_von
541   JOIN ax_grenzpunkt g
542     ON v.beziehung_zu  = g.gml_id
543   WHERE v.beziehungsart = 'istTeilVon'
544     AND g.endet IS NULL
545     AND g.endet IS NULL;
546COMMENT ON VIEW grenzpunkt
547  IS 'Sicht fÃŒr Kartendarstellung: ZusammenfÃŒhrung von Punktort (Geometrie) und AX_Grenzpunkt (Eigenschaften)';
548
549
550-- Sichten vom OBK (Oberbergischer Kreis)
551-- --------------------------------------
552--      CREATE OR REPLACE VIEW sk2004_zuordnungspfeil
553--      AS
554--       SELECT ap.ogc_fid, ap.wkb_geometry
555--       FROM ap_lpo ap
556--       WHERE ((ap.signaturnummer = '2004')
557--         AND ('DKKM1000'::text ~~ ANY ((ap.advstandardmodell)::text[])));
558--      COMMENT ON VIEW sk2004_zuordnungspfeil IS 'fuer Kartendarstellung: Zuordnungspfeil FlurstÃŒcksnummer"';
559
560--      CREATE OR REPLACE VIEW sk2004_zuordnungspfeil_spitze
561--      AS
562--       SELECT ap.ogc_fid, (((st_azimuth(st_pointn(ap.wkb_geometry, 1),
563--                      st_pointn(ap.wkb_geometry, 2)) * (- (180)::double precision)) / pi()) + (90)::double precision) AS winkel,
564--                      st_startpoint(ap.wkb_geometry) AS wkb_geometry
565--       FROM ap_lpo ap
566--       WHERE ((ap.signaturnummer = '2004')
567--         AND ('DKKM1000'::text ~~ ANY ((ap.advstandardmodell)::text[])));
568
569-- Diese Versionen "sk2004_zuordnungspfeil" und "sk2004_zuordnungspfeil_spitze" werden ersetzt durch
570-- "s_zuordungspfeil_flurstueck" und "s_zuordungspfeilspitze_flurstueck".
571-- Grund: "signaturnummer" is NULL, wenn Daten aus AED-Software kommen. Das Feld ist nur bei ibR gefuellt.
572-- Die Alternativen filtern durch JOIN >dientZurDarstellungVon> ax_flurstueck.
573
574CREATE OR REPLACE VIEW sk2012_flurgrenze
575AS
576 SELECT fg.ogc_fid, fg.wkb_geometry
577   FROM ax_besondereflurstuecksgrenze fg
578  WHERE (3000 = ANY (fg.artderflurstuecksgrenze))
579    AND fg.advstandardmodell ~~ 'DLKM'::text;
580COMMENT ON VIEW sk2012_flurgrenze IS 'Sicht fÃŒr Kartendarstellung: besondere FlurstÃŒcksgrenze "Flurgrenze"';
581
582CREATE OR REPLACE VIEW sk2014_gemarkungsgrenze
583AS
584 SELECT gemag.ogc_fid, gemag.wkb_geometry
585   FROM ax_besondereflurstuecksgrenze gemag
586  WHERE (7003 = ANY (gemag.artderflurstuecksgrenze))
587    AND gemag.advstandardmodell ~~ 'DLKM'::text;
588COMMENT ON VIEW sk2014_gemarkungsgrenze IS 'Sicht fÃŒr Kartendarstellung: besondere FlurstÃŒcksgrenze "Gemarkungsgrenze"';
589
590CREATE OR REPLACE VIEW sk2018_bundeslandgrenze
591AS
592 SELECT blg.ogc_fid, blg.wkb_geometry
593   FROM ax_besondereflurstuecksgrenze blg
594  WHERE (7102 = ANY (blg.artderflurstuecksgrenze))
595    AND blg.advstandardmodell ~~ 'DLKM'::text;
596COMMENT ON VIEW sk2018_bundeslandgrenze IS 'Sicht fÃŒr Kartendarstellung: besondere FlurstÃŒcksgrenze "Bundeslandgrenze"';
597
598CREATE OR REPLACE VIEW sk2020_regierungsbezirksgrenze
599AS
600 SELECT rbg.ogc_fid, rbg.wkb_geometry
601   FROM ax_besondereflurstuecksgrenze rbg
602  WHERE (7103 = ANY (rbg.artderflurstuecksgrenze))
603    AND rbg.advstandardmodell ~~ 'DLKM'::text;
604COMMENT ON VIEW sk2020_regierungsbezirksgrenze IS 'Sicht fÃŒr Kartendarstellung: besondere FlurstÃŒcksgrenze "Regierungsbezirksgrenze"';
605
606CREATE OR REPLACE VIEW sk2022_gemeindegrenze
607AS
608 SELECT gemg.ogc_fid, gemg.wkb_geometry
609   FROM ax_besondereflurstuecksgrenze gemg
610  WHERE (7106 = ANY (gemg.artderflurstuecksgrenze))
611    AND gemg.advstandardmodell ~~ 'DLKM'::text;
612COMMENT ON VIEW sk2022_gemeindegrenze IS 'Sicht fÃŒr Kartendarstellung: besondere FlurstÃŒcksgrenze "Gemeindegrenze"';
613
614
615-- Zusammenfassung "Politische Grenzen"  Art= 7102, 7103, 7104, 7106
616
617-- Grenze der Bundesrepublik Deutschland 7101 (G)
618-- .. des Bundeslandes 7102 (G)
619-- .. des Regierungsbezirks 7103 (G)
620-- .. des Landkreises 7104 (G)
621-- .. der Gemeinde 7106
622-- .. des Gemeindeteils 7107
623-- .. der Verwaltungsgemeinschaft 7108
624
625CREATE OR REPLACE VIEW sk201x_politische_grenze
626AS
627 SELECT ogc_fid, artderflurstuecksgrenze as art, wkb_geometry
628   FROM ax_besondereflurstuecksgrenze
629--WHERE ( ANY (artderflurstuecksgrenze) IN (7102,7103,7104,7106) )
630  WHERE (7102 = ANY (artderflurstuecksgrenze)
631     OR  7102 = ANY (artderflurstuecksgrenze)
632     OR  7103 = ANY (artderflurstuecksgrenze)
633     OR  7104 = ANY (artderflurstuecksgrenze)
634     OR  7106 = ANY (artderflurstuecksgrenze)
635    )
636    AND advstandardmodell ~~ 'DLKM'::text;
637
638COMMENT ON VIEW sk201x_politische_grenze IS 'Sicht fÃŒr Kartendarstellung: besondere FlurstÃŒcksgrenze Politische Grenzen (Bund, Land, Kreis, Gemeinde)';
639-- GefÀllt mir nicht! Array-Felder eignen sich nicht als Filter. Optimierung: in Tabelle speichern
640
641
642-- Gruppe: BodenschÀtzung
643-- ----------------------
644
645-- FÌr Nachschlagen bei Feature-Info: EntschlÌsselung in Langform zu einer KlassenflÀche, ohne Geometrie.
646CREATE OR REPLACE VIEW s_bodensch_ent
647AS
648 SELECT bs.ogc_fid,
649      --bs.advstandardmodell,   -- NUR TEST
650        ka.bezeichner                      AS kulturart_e,
651        ba.bezeichner                      AS bodenart_e,
652        zs.bezeichner                      AS zustandsstufe_e,
653        bs.bodenzahlodergruenlandgrundzahl AS grundz,
654        bs.ackerzahlodergruenlandzahl      AS agzahl,
655        ea1.bezeichner                     AS entstehart1,
656        ea2.bezeichner                     AS entstehart2,
657        -- entstehungsartoderklimastufewasserverhaeltnisse ist array!
658        bs.sonstigeangaben,                           -- integer array  - EntschlÃŒsseln?
659        so1.bezeichner                     AS sonst1, -- EnstschlÃŒsselung
660     -- so2.bezeichner                     AS sonst2, -- immer leer?
661        bs.jahreszahl                                 -- integer
662   FROM ax_bodenschaetzung bs
663   LEFT JOIN ax_bodenschaetzung_kulturart      ka ON bs.kulturart = ka.wert
664   LEFT JOIN ax_bodenschaetzung_bodenart       ba ON bs.bodenart  = ba.wert
665   LEFT JOIN ax_bodenschaetzung_zustandsstufe  zs ON bs.zustandsstufeoderbodenstufe = zs.wert
666   LEFT JOIN ax_bodenschaetzung_entstehungsartoderklimastufe ea1
667          ON bs.entstehungsartoderklimastufewasserverhaeltnisse[1] = ea1.wert   -- [1] fast immer gefÃŒllt
668   LEFT JOIN ax_bodenschaetzung_entstehungsartoderklimastufe ea2
669          ON bs.entstehungsartoderklimastufewasserverhaeltnisse[2] = ea2.wert   -- [2] manchmal gefÃŒllt
670   LEFT JOIN ax_bodenschaetzung_sonstigeangaben so1 ON bs.sonstigeangaben[1] = so1.wert -- [1] selten gefÃŒllt
671 --LEFT JOIN ax_bodenschaetzung_sonstigeangaben so2 ON bs.sonstigeangaben[2] = so2.wert -- [2] fast nie
672   WHERE bs.endet IS NULL;
673COMMENT ON VIEW s_bodensch_ent IS 'Sicht fÌr Feature-Info: BodenschÀtzung, mit Langtexten entschlÌsselt';
674
675-- Variante 1: Nur EIN Layer.
676--             Label mittig in der FlÀche, dann ist auch kein Zuordnungs-Pfeil notwendig.
677
678-- KlassenflÀche (Geometrie) mit ihrem Kurz-Label-Text, der dann mittig an Standardposition angezeigt werden kann.
679CREATE OR REPLACE VIEW s_bodensch_wms
680AS
681 SELECT bs.ogc_fid,
682        bs.wkb_geometry,
683     -- bs.advstandardmodell,   -- NUR TEST
684     -- bs.entstehungsartoderklimastufewasserverhaeltnisse AS entstehart, -- Array der Keys, NUR TEST
685        ka.kurz AS kult,  -- Kulturart, CLASSITEM, steuert die Farbe
686     -- Viele Felder zusammen packen zu einem kompakten Zwei-Zeilen-Label:
687          ba.kurz  ||            -- Bodenart
688          zs.kurz  ||            -- Zustandsstufe
689          ea1.kurz ||            -- Entstehungsart oder Klimastufe, Wasserverhaeltnisse ist ein Array mit 1 bis 2 Elementen
690          coalesce (ea2.kurz, '') -- NULL vermeiden!
691          || ' ' ||              -- Zeilenwechsel im Label (UMN: WRAP)
692          bs.bodenzahlodergruenlandgrundzahl || '/' ||
693          bs.ackerzahlodergruenlandzahl
694        AS derlabel              -- LABELITEM Umbruch am Blank
695   FROM ax_bodenschaetzung bs
696   LEFT JOIN ax_bodenschaetzung_kulturart      ka ON bs.kulturart = ka.wert
697   LEFT JOIN ax_bodenschaetzung_bodenart       ba ON bs.bodenart  = ba.wert
698   LEFT JOIN ax_bodenschaetzung_zustandsstufe  zs ON bs.zustandsstufeoderbodenstufe = zs.wert
699   LEFT JOIN ax_bodenschaetzung_entstehungsartoderklimastufe ea1
700          ON bs.entstehungsartoderklimastufewasserverhaeltnisse[1] = ea1.wert   -- [1] fast immer gefÃŒllt
701   LEFT JOIN ax_bodenschaetzung_entstehungsartoderklimastufe ea2
702          ON bs.entstehungsartoderklimastufewasserverhaeltnisse[2] = ea2.wert   -- [2] manchmal gefÃŒllt
703   WHERE bs.endet IS NULL;
704COMMENT ON VIEW s_bodensch_wms IS 'Sicht fÌr Kartendarstellung: BodenschÀtzung mit kompakten Informationen fÌr Label.';
705
706
707-- Variante 2: FlÀche und Text als getrennte Layer. Text an manueller Position,
708--             ggf. außerhalb der FlÀche. Dann ist ein Zuordnungspfeil notwendig.
709
710-- Die FlÀche ohne Label
711CREATE OR REPLACE VIEW s_bodensch_po
712AS
713 SELECT ogc_fid,
714        wkb_geometry,
715        kulturart  -- Kulturart, numerischer SchlÃŒssel, CLASSITEM
716   FROM ax_bodenschaetzung
717  WHERE endet IS NULL;
718COMMENT ON VIEW s_bodensch_po IS 'Sicht fÌr Kartendarstellung: KlassenflÀche der BodenschÀtzung ohne Label.';
719
720-- Der Label zu den Klassenabschnitten
721-- ACHTUNG: Zu einigen Abschnitten gibt es mehrerere (identische) Label an verschiedenen Positionen!
722CREATE OR REPLACE VIEW s_bodensch_tx
723AS
724 SELECT bs.ogc_fid,
725        p.wkb_geometry,           -- Geomterie (Punkt) des Labels
726     -- bs.wkb_geometry,          -- Geometrie der FlÀche, nicht des Label
727        bs.advstandardmodell,     -- NUR TEST
728     -- bs.entstehungsartoderklimastufewasserverhaeltnisse AS entstehart, -- Array der Keys, NUR TEST
729        ka.kurz AS kult,  -- Kulturart, CLASSITEM, steuert die Farbe
730     -- p.horizontaleausrichtung,  -- Feinpositionierung  ..    (zentrisch)
731         -- p.vertikaleausrichtung,    --  .. des Labels            (basis)   -> uc
732     -- Viele Felder zusammen packen zu einem kompakten Zwei-Zeilen-Label:
733          ba.kurz  ||              -- Bodenart
734          zs.kurz  ||              -- Zustandsstufe
735          ea1.kurz ||              -- Entstehungsart oder Klimastufe, Wasserverhaeltnisse
736          coalesce (ea2.kurz, '')  -- Noch mal, ist ein Array mit 1 bis 2 Elementen
737          || ' ' ||                -- Zeilenwechsel im Label (UMN: WRAP ' ')
738          bs.bodenzahlodergruenlandgrundzahl || '/' ||
739          bs.ackerzahlodergruenlandzahl
740        AS derlabel                -- LABELITEM, Umbruch am Leerzeichen
741   FROM ap_pto                            p
742   JOIN alkis_beziehungen                 v  ON p.gml_id       = v.beziehung_von
743   JOIN ax_bodenschaetzung                bs ON v.beziehung_zu = bs.gml_id
744   LEFT JOIN ax_bodenschaetzung_kulturart      ka ON bs.kulturart = ka.wert
745   LEFT JOIN ax_bodenschaetzung_bodenart       ba ON bs.bodenart  = ba.wert
746   LEFT JOIN ax_bodenschaetzung_zustandsstufe  zs ON bs.zustandsstufeoderbodenstufe = zs.wert
747   LEFT JOIN ax_bodenschaetzung_entstehungsartoderklimastufe ea1
748          ON bs.entstehungsartoderklimastufewasserverhaeltnisse[1] = ea1.wert
749   LEFT JOIN ax_bodenschaetzung_entstehungsartoderklimastufe ea2
750          ON bs.entstehungsartoderklimastufewasserverhaeltnisse[2] = ea2.wert
751  WHERE -- v.beziehungsart = 'dientZurDarstellungVon' AND
752         p.endet  IS NULL
753     AND bs.endet IS NULL;
754COMMENT ON VIEW s_bodensch_tx IS 'Sicht fÌr Kartendarstellung: Kompakter Label zur KlassenflÀche der BodenschÀtzung an manueller Position. Der Label wird zusammengesetzt aus: Bodenart, Zustandsstufe, Entstehungsart oder Klimastufe/WasserverhÀltnisse, Bodenzahl oder GrÌnlandgrundzahl und Ackerzahl oder GrÌnlandzahl.';
755
756-- Redundanz suchen:
757--  SELECT ogc_fid, count(advstandardmodell) AS anzahl FROM s_bodensch_tx GROUP BY ogc_fid HAVING count(advstandardmodell) > 1;
758--  SELECT * FROM s_bodensch_tx WHERE ogc_fid in (2848, 1771, 3131, 3495) ORDER BY ogc_fid;
759
760-- END --
Note: See TracBrowser for help on using the repository browser.