source: trunk/import/sichten_wms.sql @ 325

Revision 325, 36.1 KB checked in by frank.jaeger, 10 years ago (diff)

Im PostProzessing? der Straßennamen-Label:

  1. Fehlerkorrektur.
  2. Neben Punkt- nun auch Liniengeometrie
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
344DROP VIEW ap_lto_stra;
345
346CREATE OR REPLACE VIEW ap_lto_stra
347AS
348  SELECT p.ogc_fid,
349         l.gml_id,                               -- wird im PP zum Nachladen aus Katalog gebraucht
350         p.schriftinhalt,                        -- WMS: LABELITEM
351         p.art,                                  -- WMS: CLASSITEM
352         p.horizontaleausrichtung  AS hor,       -- Verfeinern der Text-Position ..
353         p.vertikaleausrichtung    AS ver,       --  .. durch Klassifizierung hor/ver
354         p.wkb_geometry
355    FROM ap_lto p
356    JOIN alkis_beziehungen v   -- Relation zur Lagebezeichnung o. HsNr.
357      ON p.gml_id = v.beziehung_von
358    JOIN ax_lagebezeichnungohnehausnummer l
359      ON v.beziehung_zu = l.gml_id
360   WHERE  p.endet IS NULL                            -- nichts historisches
361     AND  p.art   IN ('Strasse','Weg','Platz','BezKlassifizierungStrasse') -- Diese Werte als CLASSES in LAYER behandeln.
362     AND  v.beziehungsart = 'dientZurDarstellungVon' -- kann, muss aber nicht
363
364--   AND (   ('DKKM1000' = ANY (p.advstandardmodell)     -- "Lika 1000" bevorzugen
365--        OR ('DLKM'     = ANY (p.advstandardmodell)  )
366
367     -- ++ Muss als Array angelegt sein!!
368     AND ( NOT p.advstandardmodell  IS NULL          -- ++ Zwischenlösung bis DB mit neuem Schema (2014-08-22) angelegt und geladen wurde ++
369
370           -- Ersatzweise auch "keine Angabe", aber nur wenn es keinen besseren Text zur Lage gibt
371           OR (p.advstandardmodell IS NULL
372               AND (SELECT s.ogc_fid                -- irgend ein Feld
373                      FROM ap_lto s                 -- eines anderen Textes (suchen)
374                      JOIN alkis_beziehungen vs     -- zur gleichen Lage o.HsNr
375                        ON s.gml_id = vs.beziehung_von
376                      JOIN ax_lagebezeichnungohnehausnummer ls
377                        ON vs.beziehung_zu = ls.gml_id
378                     WHERE ls.gml_id = l.gml_id
379                       AND vs.beziehungsart = 'dientZurDarstellungVon' -- kann, muss aber nicht
380                       AND NOT s.advstandardmodell IS NULL
381                     LIMIT 1  -- einer reicht als Beweis
382                   ) IS NULL
383              ) -- "Subquery IS NULL" liefert true wenn kein weiterer Text gefunden wird
384         )
385;
386COMMENT ON VIEW ap_lto_stra
387  IS 'Sicht fÃŒr Kartendarstellung: Beschriftung aus "ap_lto" fÃŒr Lagebezeichnung mit Art "Straße", "Weg", "Platz" oder Klassifizierung.
388 Vorzugsweise mit advstandardmodell="DKKM1000", ersatzweise ohne Angabe. Dient im Script pp_laden.sql zum ersten FÃŒllen der Tabelle "pp_strassenname_l".';
389
390-- 2014-08-22: Daten aus dem View "ap_lto_stra" werden im PostProcessing gespeichert in den Tabellen "pp_strassenname_l".
391-- Der View ÃŒbernimmt die Auswahl des passenden advstandardmodell.
392-- In der Tabelle werden dann die leer gebliebenen Label aus dem Katalog noch ergÀnzt.
393
394
395-- Layer NAME "ap_pto_nam" GROUP "praesentation"
396-- -------------------------------------------------------
397-- 'NAM' = Name (Eigenname) und 'ZNM' = Zweitname (touristischer oder volkstÃŒmlicher Name) zu ...
398--   -- AX_Strassenverkehr oder AX_Platz usw.
399--  ap_pto >dientZurDarstellungVon> ?irgendwas?
400
401-- Dieser View wird bisher nicht verwendet. Dazu mÃŒsste ein neuer Layer erzeugt werden und die
402-- Arten 'NAM' und 'ZNM' dann aus den View 'ap_pto_rest' heraus genommen werden.
403
404-- Entweder Layer trennen nach Text-Typen "NAM"+"ZNM" und dem Rest
405-- ODER           trennen nach fachlichen Ebenen wie "Nutzung" und "GebÀude" und ....
406
407CREATE OR REPLACE VIEW ap_pto_nam
408AS
409  SELECT p.ogc_fid,
410          -- p.advstandardmodell       AS modell,    -- TEST
411         p.schriftinhalt,                        -- WMS: LABELITEM
412         p.art,                                  -- WMS: CLASSITEM
413         p.horizontaleausrichtung  AS hor,       -- Verfeinern der Text-Position ..
414         p.vertikaleausrichtung    AS ver,       --  .. durch Klassifizierung hor/ver
415         p.drehwinkel * 57.296     AS winkel,    -- * 180 / Pi
416         p.wkb_geometry
417    FROM ap_pto p
418    JOIN alkis_beziehungen v       
419      ON p.gml_id = v.beziehung_von
420  --JOIN nutzung l                      -- Im PostProcessing zusammen gefasste Nutzungsarten-Abschnitte
421  --  ON v.beziehung_zu = l.gml_id
422   WHERE NOT p.schriftinhalt IS NULL
423     AND  p.endet IS NULL                            -- nichts historisches
424     AND  p.art   IN ('NAM','ZNM') -- Diese Werte als CLASSES in LAYER behandeln.
425     AND  v.beziehungsart = 'dientZurDarstellungVon' -- kann, muss aber nicht
426     AND ('DKKM1000' = ANY (p.advstandardmodell)     -- "Lika 1000" bevorzugen
427           -- Ersatzweise auch "keine Angabe", aber nur wenn es keinen besseren Text zur Lage gibt
428           OR (p.advstandardmodell IS NULL
429               AND (SELECT vs.beziehung_zu          -- irgend ein Feld
430                                          FROM ap_pto s                 -- eines anderen Textes (suchen)
431                      JOIN alkis_beziehungen vs     -- zur gleichen ?irgendwas?
432                        ON s.gml_id = vs.beziehung_von
433                     WHERE vs.beziehung_zu = v.beziehung_zu
434                       AND vs.beziehungsart = 'dientZurDarstellungVon' -- kann, muss aber nicht
435                       AND NOT s.advstandardmodell IS NULL
436                     LIMIT 1  -- einer reicht als Beweis
437                                        ) IS NULL
438              ) -- "Subquery IS NULL" liefert true wenn kein weiterer Text gefunden wird
439         )
440;
441COMMENT ON VIEW ap_pto_nam
442  IS 'Sicht fÃŒr Kartendarstellung: Beschriftung mit Art = Name/Zweitname. Vorzugsweise mit advstandardmodell="DKKM1000", ersatzweise ohne Angabe.';
443-- ToDo: Im PostProcessing in einer Tabelle speichern.
444
445
446-- Layer NAME "ap_pto" GROUP "praesentation"
447-- ----------------------------------------
448-- REST: Texte, die nicht schon in einem anderen Layer ausgegeben werden
449-- Ersetzt den View "s_beschriftung"
450
451-- alte Version bis 2013-04-15
452-- Nachteil: es werden mehrere Texte zum gleichen Objekt angezeigt die fÃŒr verschiedene MaßstÀbe gedacht sind.
453--CREATE OR REPLACE VIEW ap_pto_rest
454--AS
455--  SELECT p.ogc_fid,
456--         p.schriftinhalt,
457--         p.art,
458--         p.drehwinkel * 57.296 AS winkel, -- * 180 / Pi
459--         p.wkb_geometry
460--    FROM ap_pto p
461--   WHERE not p.schriftinhalt IS NULL
462--     AND p.endet IS NULL
463--     AND p.art NOT IN ('HNR','Strasse','Weg','Platz','BezKlassifizierungStrasse','AOG_AUG');
464
465
466-- 2013-04-15 Doppelte Darstellung aufgrund verschiedener "advstandardmodell" zum Objekt unterdrÃŒcken analog ap_pto_stra und ap_pto_nam
467CREATE OR REPLACE VIEW ap_pto_rest
468AS
469  SELECT p.ogc_fid,
470         p.schriftinhalt,
471         p.art,
472         p.drehwinkel * 57.296 AS winkel, -- * 180 / Pi
473         p.wkb_geometry
474    FROM ap_pto p
475    JOIN alkis_beziehungen v   -- Relation zur ?irgendwas?
476      ON p.gml_id = v.beziehung_von
477   WHERE not p.schriftinhalt IS NULL
478     AND p.endet IS NULL
479     AND p.art   NOT IN ('PNR','HNR','Strasse','Weg','Platz','BezKlassifizierungStrasse','AOG_AUG') -- 'PNR',
480     -- Diese 'IN'-Liste fortschreiben bei Erweiterungen des Mapfiles
481     -- 'PNR' = Pseudonummer (lfd.-Nr.-NebengebÀude), Inhalte wie "(1)" oder "P50" - kommt nicht mehr vor, oder?
482    AND  v.beziehungsart = 'dientZurDarstellungVon' -- kann, muss aber nicht
483    AND ('DKKM1000' = ANY (p.advstandardmodell)     -- "Lika 1000" bevorzugen
484           -- Ersatzweise auch "keine Angabe" (nul) akzeptieren, aber nur wenn es keinen besseren Text zu ?irgendwas? gibt
485           -- Es wird hier nur bis zur Verbindungstabelle "alkis_beziehungen" gesucht, ob am anderen Ende die gleiche gml_id verlinkt ist.
486           -- Diese gml_id können dann zu verschiedenen, unbekannten Objekttabellen linken.
487           OR (p.advstandardmodell IS NULL
488               AND (SELECT vs.beziehung_zu          -- irgend ein Feld
489                                          FROM ap_pto s                 -- eines anderen Textes (suchen)
490                      JOIN alkis_beziehungen vs     -- zur gleichen ?irgendwas?
491                        ON s.gml_id = vs.beziehung_von
492                     WHERE vs.beziehung_zu = v.beziehung_zu
493                       AND vs.beziehungsart = 'dientZurDarstellungVon' -- kann, muss aber nicht
494                       AND NOT s.advstandardmodell IS NULL
495                     LIMIT 1  -- einer reicht als Ausschlußkriterium
496                                        ) IS NULL
497              ) -- "Subquery IS NULL" liefert true wenn kein weiterer Text gefunden wird
498         );
499COMMENT ON VIEW ap_pto_rest
500  IS 'Sicht fÃŒr Kartendarstellung: Beschriftungen aus "ap_pto", die noch nicht in anderen Layern angezeigt werden.';
501-- ToDo: Im PostProcessing in einer Tabelle speichern.
502
503-- Kommt PNR (Pseudonummer) noch im Bestand vor?
504--  SELECT * FROM ap_pto WHERE art = 'PNR' LIMIT 100;
505
506
507-- Layer "s_zuordungspfeil_gebaeude"
508-- -----------------------------------
509CREATE OR REPLACE VIEW s_zuordungspfeil_gebaeude
510AS
511 SELECT l.ogc_fid,
512     -- alkis_beziehungen.beziehungsart, -- TEST
513     -- ap_lpo.art, -- TEST
514        l.wkb_geometry
515   FROM ap_lpo l
516   JOIN alkis_beziehungen v
517     ON l.gml_id = v.beziehung_von
518   JOIN ax_gebaeude g
519     ON v.beziehung_zu = g.gml_id
520  WHERE l.art = 'Pfeil'
521    AND v.beziehungsart = 'dientZurDarstellungVon'
522    AND g.endet IS NULL
523    AND l.endet IS NULL;
524COMMENT ON VIEW s_zuordungspfeil_gebaeude
525  IS 'Sicht fÃŒr Kartendarstellung: Zuordnungspfeil fÃŒr GebÀude-Nummer (NebengebÀude). Wird wahrscheinlich nicht mehr benötigt.';
526
527
528-- Grenzpunkte
529-- -----------
530--  ax_punktortta  >zeigtAuf?> AX_Grenzpunkt
531-- Zum Punktort des Grenzpunktes auch eine Information zur Vermarkung holen
532CREATE OR REPLACE VIEW grenzpunkt
533AS
534 SELECT o.ogc_fid,
535        o.wkb_geometry,
536     -- g.punktkennung,    -- ggf spÀter als labelitem "rrrrrhhhhAnnnnn" "32483 5751 0 02002"
537        g.abmarkung_marke, -- steuert die Darstellung >9000 = unvermarkt
538        v.beziehungsart
539   FROM ax_punktortta o
540   JOIN alkis_beziehungen v
541     ON o.gml_id = v.beziehung_von
542   JOIN ax_grenzpunkt g
543     ON v.beziehung_zu  = g.gml_id
544   WHERE v.beziehungsart = 'istTeilVon'
545     AND g.endet IS NULL
546     AND g.endet IS NULL;
547COMMENT ON VIEW grenzpunkt
548  IS 'Sicht fÃŒr Kartendarstellung: ZusammenfÃŒhrung von Punktort (Geometrie) und AX_Grenzpunkt (Eigenschaften)';
549
550
551-- Sichten vom OBK (Oberbergischer Kreis)
552-- --------------------------------------
553--      CREATE OR REPLACE VIEW sk2004_zuordnungspfeil
554--      AS
555--       SELECT ap.ogc_fid, ap.wkb_geometry
556--       FROM ap_lpo ap
557--       WHERE ((ap.signaturnummer = '2004')
558--         AND ('DKKM1000'::text ~~ ANY ((ap.advstandardmodell)::text[])));
559--      COMMENT ON VIEW sk2004_zuordnungspfeil IS 'fuer Kartendarstellung: Zuordnungspfeil FlurstÃŒcksnummer"';
560
561--      CREATE OR REPLACE VIEW sk2004_zuordnungspfeil_spitze
562--      AS
563--       SELECT ap.ogc_fid, (((st_azimuth(st_pointn(ap.wkb_geometry, 1),
564--                      st_pointn(ap.wkb_geometry, 2)) * (- (180)::double precision)) / pi()) + (90)::double precision) AS winkel,
565--                      st_startpoint(ap.wkb_geometry) AS wkb_geometry
566--       FROM ap_lpo ap
567--       WHERE ((ap.signaturnummer = '2004')
568--         AND ('DKKM1000'::text ~~ ANY ((ap.advstandardmodell)::text[])));
569
570-- Diese Versionen "sk2004_zuordnungspfeil" und "sk2004_zuordnungspfeil_spitze" werden ersetzt durch
571-- "s_zuordungspfeil_flurstueck" und "s_zuordungspfeilspitze_flurstueck".
572-- Grund: "signaturnummer" is NULL, wenn Daten aus AED-Software kommen. Das Feld ist nur bei ibR gefuellt.
573-- Die Alternativen filtern durch JOIN >dientZurDarstellungVon> ax_flurstueck.
574
575CREATE OR REPLACE VIEW sk2012_flurgrenze
576AS
577 SELECT fg.ogc_fid, fg.wkb_geometry
578   FROM ax_besondereflurstuecksgrenze fg
579  WHERE (3000 = ANY (fg.artderflurstuecksgrenze))
580    AND fg.advstandardmodell ~~ 'DLKM'::text;
581COMMENT ON VIEW sk2012_flurgrenze IS 'Sicht fÃŒr Kartendarstellung: besondere FlurstÃŒcksgrenze "Flurgrenze"';
582
583CREATE OR REPLACE VIEW sk2014_gemarkungsgrenze
584AS
585 SELECT gemag.ogc_fid, gemag.wkb_geometry
586   FROM ax_besondereflurstuecksgrenze gemag
587  WHERE (7003 = ANY (gemag.artderflurstuecksgrenze))
588    AND gemag.advstandardmodell ~~ 'DLKM'::text;
589COMMENT ON VIEW sk2014_gemarkungsgrenze IS 'Sicht fÃŒr Kartendarstellung: besondere FlurstÃŒcksgrenze "Gemarkungsgrenze"';
590
591CREATE OR REPLACE VIEW sk2018_bundeslandgrenze
592AS
593 SELECT blg.ogc_fid, blg.wkb_geometry
594   FROM ax_besondereflurstuecksgrenze blg
595  WHERE (7102 = ANY (blg.artderflurstuecksgrenze))
596    AND blg.advstandardmodell ~~ 'DLKM'::text;
597COMMENT ON VIEW sk2018_bundeslandgrenze IS 'Sicht fÃŒr Kartendarstellung: besondere FlurstÃŒcksgrenze "Bundeslandgrenze"';
598
599CREATE OR REPLACE VIEW sk2020_regierungsbezirksgrenze
600AS
601 SELECT rbg.ogc_fid, rbg.wkb_geometry
602   FROM ax_besondereflurstuecksgrenze rbg
603  WHERE (7103 = ANY (rbg.artderflurstuecksgrenze))
604    AND rbg.advstandardmodell ~~ 'DLKM'::text;
605COMMENT ON VIEW sk2020_regierungsbezirksgrenze IS 'Sicht fÃŒr Kartendarstellung: besondere FlurstÃŒcksgrenze "Regierungsbezirksgrenze"';
606
607CREATE OR REPLACE VIEW sk2022_gemeindegrenze
608AS
609 SELECT gemg.ogc_fid, gemg.wkb_geometry
610   FROM ax_besondereflurstuecksgrenze gemg
611  WHERE (7106 = ANY (gemg.artderflurstuecksgrenze))
612    AND gemg.advstandardmodell ~~ 'DLKM'::text;
613COMMENT ON VIEW sk2022_gemeindegrenze IS 'Sicht fÃŒr Kartendarstellung: besondere FlurstÃŒcksgrenze "Gemeindegrenze"';
614
615
616-- Zusammenfassung "Politische Grenzen"  Art= 7102, 7103, 7104, 7106
617
618-- Grenze der Bundesrepublik Deutschland 7101 (G)
619-- .. des Bundeslandes 7102 (G)
620-- .. des Regierungsbezirks 7103 (G)
621-- .. des Landkreises 7104 (G)
622-- .. der Gemeinde 7106
623-- .. des Gemeindeteils 7107
624-- .. der Verwaltungsgemeinschaft 7108
625
626CREATE OR REPLACE VIEW sk201x_politische_grenze
627AS
628 SELECT ogc_fid, artderflurstuecksgrenze as art, wkb_geometry
629   FROM ax_besondereflurstuecksgrenze
630--WHERE ( ANY (artderflurstuecksgrenze) IN (7102,7103,7104,7106) )
631  WHERE (7102 = ANY (artderflurstuecksgrenze)
632     OR  7102 = ANY (artderflurstuecksgrenze)
633     OR  7103 = ANY (artderflurstuecksgrenze)
634     OR  7104 = ANY (artderflurstuecksgrenze)
635     OR  7106 = ANY (artderflurstuecksgrenze)
636    )
637    AND advstandardmodell ~~ 'DLKM'::text;
638
639COMMENT ON VIEW sk201x_politische_grenze IS 'Sicht fÃŒr Kartendarstellung: besondere FlurstÃŒcksgrenze Politische Grenzen (Bund, Land, Kreis, Gemeinde)';
640-- GefÀllt mir nicht! Array-Felder eignen sich nicht als Filter. Optimierung: in Tabelle speichern
641
642
643-- Gruppe: BodenschÀtzung
644-- ----------------------
645
646-- FÌr Nachschlagen bei Feature-Info: EntschlÌsselung in Langform zu einer KlassenflÀche, ohne Geometrie.
647CREATE OR REPLACE VIEW s_bodensch_ent
648AS
649 SELECT bs.ogc_fid,
650      --bs.advstandardmodell,   -- NUR TEST
651        ka.bezeichner                      AS kulturart_e,
652        ba.bezeichner                      AS bodenart_e,
653        zs.bezeichner                      AS zustandsstufe_e,
654        bs.bodenzahlodergruenlandgrundzahl AS grundz,
655        bs.ackerzahlodergruenlandzahl      AS agzahl,
656        ea1.bezeichner                     AS entstehart1,
657        ea2.bezeichner                     AS entstehart2,
658        -- entstehungsartoderklimastufewasserverhaeltnisse ist array!
659        bs.sonstigeangaben,                           -- integer array  - EntschlÃŒsseln?
660        so1.bezeichner                     AS sonst1, -- EnstschlÃŒsselung
661     -- so2.bezeichner                     AS sonst2, -- immer leer?
662        bs.jahreszahl                                 -- integer
663   FROM ax_bodenschaetzung bs
664   LEFT JOIN ax_bodenschaetzung_kulturart      ka ON bs.kulturart = ka.wert
665   LEFT JOIN ax_bodenschaetzung_bodenart       ba ON bs.bodenart  = ba.wert
666   LEFT JOIN ax_bodenschaetzung_zustandsstufe  zs ON bs.zustandsstufeoderbodenstufe = zs.wert
667   LEFT JOIN ax_bodenschaetzung_entstehungsartoderklimastufe ea1
668          ON bs.entstehungsartoderklimastufewasserverhaeltnisse[1] = ea1.wert   -- [1] fast immer gefÃŒllt
669   LEFT JOIN ax_bodenschaetzung_entstehungsartoderklimastufe ea2
670          ON bs.entstehungsartoderklimastufewasserverhaeltnisse[2] = ea2.wert   -- [2] manchmal gefÃŒllt
671   LEFT JOIN ax_bodenschaetzung_sonstigeangaben so1 ON bs.sonstigeangaben[1] = so1.wert -- [1] selten gefÃŒllt
672 --LEFT JOIN ax_bodenschaetzung_sonstigeangaben so2 ON bs.sonstigeangaben[2] = so2.wert -- [2] fast nie
673   WHERE bs.endet IS NULL;
674COMMENT ON VIEW s_bodensch_ent IS 'Sicht fÌr Feature-Info: BodenschÀtzung, mit Langtexten entschlÌsselt';
675
676-- Variante 1: Nur EIN Layer.
677--             Label mittig in der FlÀche, dann ist auch kein Zuordnungs-Pfeil notwendig.
678
679-- KlassenflÀche (Geometrie) mit ihrem Kurz-Label-Text, der dann mittig an Standardposition angezeigt werden kann.
680CREATE OR REPLACE VIEW s_bodensch_wms
681AS
682 SELECT bs.ogc_fid,
683        bs.wkb_geometry,
684     -- bs.advstandardmodell,   -- NUR TEST
685     -- bs.entstehungsartoderklimastufewasserverhaeltnisse AS entstehart, -- Array der Keys, NUR TEST
686        ka.kurz AS kult,  -- Kulturart, CLASSITEM, steuert die Farbe
687     -- Viele Felder zusammen packen zu einem kompakten Zwei-Zeilen-Label:
688          ba.kurz  ||            -- Bodenart
689          zs.kurz  ||            -- Zustandsstufe
690          ea1.kurz ||            -- Entstehungsart oder Klimastufe, Wasserverhaeltnisse ist ein Array mit 1 bis 2 Elementen
691          coalesce (ea2.kurz, '') -- NULL vermeiden!
692          || ' ' ||              -- Zeilenwechsel im Label (UMN: WRAP)
693          bs.bodenzahlodergruenlandgrundzahl || '/' ||
694          bs.ackerzahlodergruenlandzahl
695        AS derlabel              -- LABELITEM Umbruch am Blank
696   FROM ax_bodenschaetzung bs
697   LEFT JOIN ax_bodenschaetzung_kulturart      ka ON bs.kulturart = ka.wert
698   LEFT JOIN ax_bodenschaetzung_bodenart       ba ON bs.bodenart  = ba.wert
699   LEFT JOIN ax_bodenschaetzung_zustandsstufe  zs ON bs.zustandsstufeoderbodenstufe = zs.wert
700   LEFT JOIN ax_bodenschaetzung_entstehungsartoderklimastufe ea1
701          ON bs.entstehungsartoderklimastufewasserverhaeltnisse[1] = ea1.wert   -- [1] fast immer gefÃŒllt
702   LEFT JOIN ax_bodenschaetzung_entstehungsartoderklimastufe ea2
703          ON bs.entstehungsartoderklimastufewasserverhaeltnisse[2] = ea2.wert   -- [2] manchmal gefÃŒllt
704   WHERE bs.endet IS NULL;
705COMMENT ON VIEW s_bodensch_wms IS 'Sicht fÌr Kartendarstellung: BodenschÀtzung mit kompakten Informationen fÌr Label.';
706
707
708-- Variante 2: FlÀche und Text als getrennte Layer. Text an manueller Position,
709--             ggf. außerhalb der FlÀche. Dann ist ein Zuordnungspfeil notwendig.
710
711-- Die FlÀche ohne Label
712CREATE OR REPLACE VIEW s_bodensch_po
713AS
714 SELECT ogc_fid,
715        wkb_geometry,
716        kulturart  -- Kulturart, numerischer SchlÃŒssel, CLASSITEM
717   FROM ax_bodenschaetzung
718  WHERE endet IS NULL;
719COMMENT ON VIEW s_bodensch_po IS 'Sicht fÌr Kartendarstellung: KlassenflÀche der BodenschÀtzung ohne Label.';
720
721-- Der Label zu den Klassenabschnitten
722-- ACHTUNG: Zu einigen Abschnitten gibt es mehrerere (identische) Label an verschiedenen Positionen!
723CREATE OR REPLACE VIEW s_bodensch_tx
724AS
725 SELECT bs.ogc_fid,
726        p.wkb_geometry,           -- Geomterie (Punkt) des Labels
727     -- bs.wkb_geometry,          -- Geometrie der FlÀche, nicht des Label
728        bs.advstandardmodell,     -- NUR TEST
729     -- bs.entstehungsartoderklimastufewasserverhaeltnisse AS entstehart, -- Array der Keys, NUR TEST
730        ka.kurz AS kult,  -- Kulturart, CLASSITEM, steuert die Farbe
731     -- p.horizontaleausrichtung,  -- Feinpositionierung  ..    (zentrisch)
732         -- p.vertikaleausrichtung,    --  .. des Labels            (basis)   -> uc
733     -- Viele Felder zusammen packen zu einem kompakten Zwei-Zeilen-Label:
734          ba.kurz  ||              -- Bodenart
735          zs.kurz  ||              -- Zustandsstufe
736          ea1.kurz ||              -- Entstehungsart oder Klimastufe, Wasserverhaeltnisse
737          coalesce (ea2.kurz, '')  -- Noch mal, ist ein Array mit 1 bis 2 Elementen
738          || ' ' ||                -- Zeilenwechsel im Label (UMN: WRAP ' ')
739          bs.bodenzahlodergruenlandgrundzahl || '/' ||
740          bs.ackerzahlodergruenlandzahl
741        AS derlabel                -- LABELITEM, Umbruch am Leerzeichen
742   FROM ap_pto                            p
743   JOIN alkis_beziehungen                 v  ON p.gml_id       = v.beziehung_von
744   JOIN ax_bodenschaetzung                bs ON v.beziehung_zu = bs.gml_id
745   LEFT JOIN ax_bodenschaetzung_kulturart      ka ON bs.kulturart = ka.wert
746   LEFT JOIN ax_bodenschaetzung_bodenart       ba ON bs.bodenart  = ba.wert
747   LEFT JOIN ax_bodenschaetzung_zustandsstufe  zs ON bs.zustandsstufeoderbodenstufe = zs.wert
748   LEFT JOIN ax_bodenschaetzung_entstehungsartoderklimastufe ea1
749          ON bs.entstehungsartoderklimastufewasserverhaeltnisse[1] = ea1.wert
750   LEFT JOIN ax_bodenschaetzung_entstehungsartoderklimastufe ea2
751          ON bs.entstehungsartoderklimastufewasserverhaeltnisse[2] = ea2.wert
752  WHERE -- v.beziehungsart = 'dientZurDarstellungVon' AND
753         p.endet  IS NULL
754     AND bs.endet IS NULL;
755COMMENT 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.';
756
757-- Redundanz suchen:
758--  SELECT ogc_fid, count(advstandardmodell) AS anzahl FROM s_bodensch_tx GROUP BY ogc_fid HAVING count(advstandardmodell) > 1;
759--  SELECT * FROM s_bodensch_tx WHERE ogc_fid in (2848, 1771, 3131, 3495) ORDER BY ogc_fid;
760
761-- END --
Note: See TracBrowser for help on using the repository browser.