1 | |
---|
2 | -- ======================================================================================================== |
---|
3 | -- ALKIS-PostGIS (Full-Schema) - FlurstÃŒcke Suchen, die eine Verkettung von mehreren Buchungsstellen haben |
---|
4 | -- ======================================================================================================== |
---|
5 | |
---|
6 | -- Aufgaben: |
---|
7 | -- --------- |
---|
8 | -- FlurstÃŒcke ermitteln, die 2 bis 4 (oder mehr?) Buchungsstellen haben die jeweils ein "Recht an" einer anderen Buchungsstelle haben. |
---|
9 | -- Beispiel: |
---|
10 | -- "Wohnungs-/Teiluntererbbaurecht" >an> "Aufgeteiltes Untererbbaurecht WEG" >an> "Erbbaurecht" >an> "GrundstÃŒck" >Buchung> FlurstÃŒck |
---|
11 | -- In einem WMS diese besonderen Buchungen hervorheben. |
---|
12 | -- Die betroffenen Buchungsarten auflisten. Auch einige EinzelfÀlle selektieren. |
---|
13 | -- Dies dient zunÀchst dazu, um TestfÀlle fÌr die Weiterentwicklung der Buchauskunft zu finden (Entwicklung). Vielleicht hat auch ein Anwender Verwendung dafÌr. |
---|
14 | |
---|
15 | -- AusfÃŒhrung in: |
---|
16 | -- Step "postcreate.d" des ALKIS-Importers. Hier also nur Definitionen machen, keine Daten bearbeiten. |
---|
17 | |
---|
18 | --Stand |
---|
19 | -- 2017-12-07 Prototyp |
---|
20 | -- 2018-11-09 Umstellung auf Full-Schema. |
---|
21 | -- Die ehem. Tab. "alkis_wertearten" ist jetzt ein riesiger Union-View. Diesen View ersetzen durch die passende neue Tabelle. |
---|
22 | |
---|
23 | -- Views fÃŒr die Darstellung im WMS |
---|
24 | -- ================================= |
---|
25 | |
---|
26 | -- 2 beteiligte Buchungsstellen |
---|
27 | -- "Erbbaurecht" und Àhnliches |
---|
28 | -- -------------------------- |
---|
29 | -- FS >istGebucht> Buchungstelle 1 <an< Buchungstelle 2 |
---|
30 | -- -------------------------------------------------------------------- |
---|
31 | DROP VIEW IF EXISTS buchungsrechte_2arten; |
---|
32 | DROP VIEW IF EXISTS buchungsrechte_2wms; |
---|
33 | CREATE OR REPLACE VIEW buchungsrechte_2wms |
---|
34 | AS |
---|
35 | SELECT DISTINCT -- Ohne DISTINCT mehrfache Ãberlagerung |
---|
36 | f.gml_id, -- Unique Key |
---|
37 | s2.buchungsart, -- verschlÃŒsselt (Nummer) |
---|
38 | f.wkb_geometry |
---|
39 | FROM ax_flurstueck f -- FlurstÃŒck |
---|
40 | JOIN ax_buchungsstelle s1 -- dienende Buchung |
---|
41 | ON f.istgebucht = s1.gml_id |
---|
42 | JOIN ax_buchungsstelle s2 -- herrschende Buchung |
---|
43 | ON s1.gml_id = ANY(s2.an) -- hat Recht an |
---|
44 | WHERE f.endet IS NULL AND s1.endet IS NULL AND s2.endet IS NULL; |
---|
45 | |
---|
46 | COMMENT ON VIEW buchungsrechte_2wms IS 'FÃŒr WMS-Anzeige von FlurstÃŒcken mit Buchungsarten mit 2 beteiligten Buchungsstellen, z.B. Erbbaurecht.'; |
---|
47 | GRANT SELECT ON TABLE public.buchungsrechte_2wms TO ms6; |
---|
48 | |
---|
49 | |
---|
50 | -- 3 beteiligte Buchungsstellen |
---|
51 | -- "Untererbbaurecht" und Àhnliches |
---|
52 | -- -------------------------------- |
---|
53 | -- FS >istGebucht> Buchungstelle 1 <an< Buchungstelle 2 <an< Buchungstelle 3 |
---|
54 | -- ------------------------------------------------------------------------------------------------------------------ |
---|
55 | DROP VIEW IF EXISTS buchungsrechte_3arten; |
---|
56 | DROP VIEW IF EXISTS buchungsrechte_3wms; |
---|
57 | CREATE OR REPLACE VIEW buchungsrechte_3wms |
---|
58 | AS |
---|
59 | SELECT DISTINCT f.gml_id, s3.buchungsart, f.wkb_geometry |
---|
60 | FROM ax_flurstueck f |
---|
61 | JOIN ax_buchungsstelle s1 ON f.istgebucht = s1.gml_id |
---|
62 | JOIN ax_buchungsstelle s2 ON s1.gml_id = ANY(s2.an) |
---|
63 | JOIN ax_buchungsstelle s3 ON s2.gml_id = ANY(s3.an) |
---|
64 | WHERE f.endet IS NULL AND s1.endet IS NULL AND s2.endet IS NULL AND s3.endet IS NULL; |
---|
65 | |
---|
66 | COMMENT ON VIEW buchungsrechte_3wms IS 'FÃŒr WMS-Anzeige von FlurstÃŒcken mit Buchungsarten mit 3 beteiligten Buchungsstellen, z.B. Untererbbaurecht.'; |
---|
67 | GRANT SELECT ON TABLE public.buchungsrechte_3wms TO ms6; |
---|
68 | |
---|
69 | |
---|
70 | -- 4 beteiligte Buchungsstellen |
---|
71 | -- Teil-Untererbbaurecht |
---|
72 | -- -------------------------------- |
---|
73 | -- FS >istGebucht> Buchungstelle 1 <an< Buchungstelle 2 <an< Buchungstelle 3 <an< Buchungstelle 4 |
---|
74 | -- ------------------------------------------------------------------------------------------------------------------ |
---|
75 | DROP VIEW IF EXISTS buchungsrechte_4arten; |
---|
76 | DROP VIEW IF EXISTS buchungsrechte_4wms; |
---|
77 | CREATE OR REPLACE VIEW buchungsrechte_4wms |
---|
78 | AS |
---|
79 | SELECT DISTINCT f.gml_id, s4.buchungsart, f.wkb_geometry |
---|
80 | FROM ax_flurstueck f |
---|
81 | JOIN ax_buchungsstelle s1 ON f.istgebucht = s1.gml_id |
---|
82 | JOIN ax_buchungsstelle s2 ON s1.gml_id = ANY(s2.an) |
---|
83 | JOIN ax_buchungsstelle s3 ON s2.gml_id = ANY(s3.an) |
---|
84 | JOIN ax_buchungsstelle s4 ON s3.gml_id = ANY(s4.an) |
---|
85 | WHERE f.endet IS NULL AND s1.endet IS NULL AND s2.endet IS NULL AND s3.endet IS NULL AND s4.endet IS NULL; |
---|
86 | |
---|
87 | COMMENT ON VIEW buchungsrechte_4wms IS 'FÃŒr WMS-Anzeige von FlurstÃŒcken mit Buchungsarten mit 4 beteiligten Buchungsstellen.'; |
---|
88 | GRANT SELECT ON TABLE public.buchungsrechte_4wms TO ms6; |
---|
89 | |
---|
90 | |
---|
91 | -- Gibts das? Nein! |
---|
92 | -- -------------------------------- |
---|
93 | -- FS >istGebucht> Buchungstelle 1 <an< Buchungstelle 2 <an< Buchungstelle 3 <an< Buchungstelle 4 <an< Buchungstelle 5 |
---|
94 | -- ------------------------------------------------------------------------------------------------------------------ |
---|
95 | -- 5 beteiligte Buchungsstellen |
---|
96 | -- DROP VIEW IF EXISTS buchungsrechte_5wms; |
---|
97 | /* |
---|
98 | CREATE OR REPLACE VIEW buchungsrechte_5wms |
---|
99 | AS |
---|
100 | SELECT DISTINCT f.gml_id, s5.buchungsart, f.wkb_geometry |
---|
101 | FROM ax_flurstueck f |
---|
102 | JOIN ax_buchungsstelle s1 ON f.istgebucht = s1.gml_id |
---|
103 | JOIN ax_buchungsstelle s2 ON s1.gml_id = ANY (s2.an) |
---|
104 | JOIN ax_buchungsstelle s3 ON s2.gml_id = ANY (s3.an) |
---|
105 | JOIN ax_buchungsstelle s4 ON s3.gml_id = ANY (s4.an) |
---|
106 | JOIN ax_buchungsstelle s5 ON s4.gml_id = ANY (s5.an) |
---|
107 | WHERE f.endet IS NULL AND s1.endet IS NULL AND s2.endet IS NULL AND s3.endet IS NULL AND s4.endet IS NULL AND s5.endet IS NULL; |
---|
108 | |
---|
109 | COMMENT ON VIEW buchungsrechte_5wms IS 'FÃŒr WMS-Anzeige von FlurstÃŒcken mit Buchungsarten mit 5 beteiligten Buchungsstellen.'; |
---|
110 | GRANT SELECT ON TABLE public.buchungsrechte_5wms TO ms6; |
---|
111 | */ |
---|
112 | |
---|
113 | -- Views fÃŒr die Modellierung der Classes im WMS |
---|
114 | -- ============================================= |
---|
115 | -- Buchungsart entschlÃŒsseln. Die Treffer der WMS-Views weiter verdichten: |
---|
116 | |
---|
117 | CREATE OR REPLACE VIEW buchungsrechte_2arten AS |
---|
118 | SELECT DISTINCT s.buchungsart, wb.beschreibung AS bu_art |
---|
119 | FROM buchungsrechte_2wms s |
---|
120 | JOIN ax_buchungsart_buchungsstelle wb |
---|
121 | ON s.buchungsart = wb.wert |
---|
122 | ORDER BY s.buchungsart; |
---|
123 | COMMENT ON VIEW buchungsrechte_2arten IS 'Vorkommende Buchungsarten bei der Verkettung von 2 Buchungsstellen.'; |
---|
124 | -- 1301;"Wohnungs-/Teileigentum" |
---|
125 | -- 1302;"Miteigentum Par. 3 Abs. 4 GBO" |
---|
126 | -- 2101;"Erbbaurecht" |
---|
127 | -- 2201;"Aufgeteiltes Erbbaurecht WEG" |
---|
128 | |
---|
129 | CREATE OR REPLACE VIEW buchungsrechte_3arten AS |
---|
130 | SELECT DISTINCT s.buchungsart, wb.beschreibung AS bu_art |
---|
131 | FROM buchungsrechte_3wms s |
---|
132 | JOIN ax_buchungsart_buchungsstelle wb |
---|
133 | ON s.buchungsart = wb.wert |
---|
134 | ORDER BY buchungsart; |
---|
135 | COMMENT ON VIEW buchungsrechte_3arten IS 'Vorkommende Buchungsarten bei der Verkettung von 3 Buchungsstellen.'; |
---|
136 | -- 2102;"Untererbbaurecht" |
---|
137 | -- 2202;"Aufgeteiltes Untererbbaurecht WEG" |
---|
138 | -- 2203;"Aufgeteiltes Recht Par. 3 Abs. 4 GBO" |
---|
139 | -- 2301;"Wohnungs-/Teilerbbaurecht" |
---|
140 | |
---|
141 | CREATE OR REPLACE VIEW buchungsrechte_4arten AS |
---|
142 | SELECT DISTINCT s.buchungsart, wb.beschreibung AS bu_art |
---|
143 | FROM buchungsrechte_4wms s |
---|
144 | JOIN ax_buchungsart_buchungsstelle wb |
---|
145 | ON s.buchungsart = wb.wert |
---|
146 | ORDER BY buchungsart; |
---|
147 | COMMENT ON VIEW buchungsrechte_4arten IS 'Vorkommende Buchungsarten bei der Verkettung von 4 Buchungsstellen.'; |
---|
148 | -- 2302;"Wohnungs-/Teiluntererbbaurecht" |
---|
149 | -- 2303;"Erbbaurechtsanteil Par. 3 Abs. 4 GBO" |
---|
150 | |
---|
151 | |
---|
152 | -- Views um EinzelfÀlle zu suchen und aufzulisten |
---|
153 | -- ============================================== |
---|
154 | CREATE OR REPLACE VIEW buchungsrechte_4faelle |
---|
155 | AS |
---|
156 | SELECT |
---|
157 | f.gml_id, f.flurstueckskennzeichen, |
---|
158 | s1.laufendenummer AS bvnr1, s1.buchungsart AS buchunsart_1, w1.beschreibung AS ba1, b1.buchungsblattnummermitbuchstabenerweiterung AS blatt1, |
---|
159 | s2.laufendenummer AS bvnr2, s2.buchungsart AS buchunsart_2, w2.beschreibung AS ba2, b2.buchungsblattnummermitbuchstabenerweiterung AS blatt2, |
---|
160 | s3.laufendenummer AS bvnr3, s3.buchungsart AS buchunsart_3, w3.beschreibung AS ba3, b3.buchungsblattnummermitbuchstabenerweiterung AS blatt3, |
---|
161 | s4.laufendenummer AS bvnr4, s4.buchungsart AS buchunsart_4, w4.beschreibung AS ba4, b4.buchungsblattnummermitbuchstabenerweiterung AS blatt4 |
---|
162 | -- FlurstÃŒck |
---|
163 | FROM ax_flurstueck f |
---|
164 | -- 1. Buchung |
---|
165 | JOIN ax_buchungsstelle s1 ON f.istgebucht = s1.gml_id |
---|
166 | --LEFT JOIN alkis_wertearten w1 ON cast(s1.buchungsart AS character varying)=w1.k AND w1.element='ax_buchungsstelle' AND w1.bezeichnung='buchungsart' |
---|
167 | LEFT JOIN ax_buchungsart_buchungsstelle w1 ON s1.buchungsart = w1.wert |
---|
168 | JOIN ax_buchungsblatt b1 ON s1.istbestandteilvon = b1.gml_id |
---|
169 | -- 2. Buchung |
---|
170 | JOIN ax_buchungsstelle s2 ON s1.gml_id = ANY(s2.an) |
---|
171 | LEFT JOIN ax_buchungsart_buchungsstelle w2 ON s2.buchungsart = w2.wert |
---|
172 | JOIN ax_buchungsblatt b2 ON s2.istbestandteilvon = b2.gml_id |
---|
173 | -- 3. Buchung |
---|
174 | JOIN ax_buchungsstelle s3 ON s2.gml_id = ANY(s3.an) |
---|
175 | LEFT JOIN ax_buchungsart_buchungsstelle w3 ON s3.buchungsart = w3.wert |
---|
176 | JOIN ax_buchungsblatt b3 ON s3.istbestandteilvon = b3.gml_id |
---|
177 | -- 4. Buchung |
---|
178 | JOIN ax_buchungsstelle s4 ON s3.gml_id = ANY(s4.an) |
---|
179 | LEFT JOIN ax_buchungsart_buchungsstelle w4 ON s4.buchungsart = w4.wert |
---|
180 | JOIN ax_buchungsblatt b4 ON s4.istbestandteilvon = b4.gml_id |
---|
181 | -- nur frische Sachen |
---|
182 | WHERE f.endet IS NULL |
---|
183 | AND s1.endet IS NULL AND b1.endet IS NULL |
---|
184 | AND s2.endet IS NULL AND b2.endet IS NULL |
---|
185 | AND s3.endet IS NULL AND b3.endet IS NULL |
---|
186 | AND s4.endet IS NULL AND b4.endet IS NULL |
---|
187 | LIMIT 30; |
---|
188 | |
---|
189 | COMMENT ON VIEW buchungsrechte_4faelle IS 'FÃŒr Buchungsarten mit 4 beteiligten Buchungsstellen die einzelnen Kennzeichen tabellarisch auflisten.'; |
---|
190 | |
---|
191 | |
---|
192 | CREATE OR REPLACE VIEW buchungsrechte_3text |
---|
193 | AS |
---|
194 | SELECT |
---|
195 | a3.beschreibung || ' (' || b3.blattart || ') ' || b3.buchungsblattnummermitbuchstabenerweiterung || ' (lfd. ' || s3.laufendenummer || ') hat ' || w3.beschreibung || ' (' || s3.buchungsart || ') an ' AS stufe3, |
---|
196 | a2.beschreibung || ' (' || b2.blattart || ') ' || b2.buchungsblattnummermitbuchstabenerweiterung || ' (lfd. ' || s2.laufendenummer || ') hat ' || w2.beschreibung || ' (' || s2.buchungsart || ') an ' AS stufe2, |
---|
197 | a1.beschreibung || ' (' || b1.blattart || ') ' || b1.buchungsblattnummermitbuchstabenerweiterung || ' (lfd. ' || s1.laufendenummer || ') hat ' || w1.beschreibung || ' (' || s1.buchungsart || ') mit Buchung ' AS stufe1, |
---|
198 | 'FlurstÃŒck ' || f.flurstueckskennzeichen || ' (gml_id=' || f.gml_id || ')' AS flurstueck |
---|
199 | -- FlurstÃŒck |
---|
200 | FROM ax_flurstueck f |
---|
201 | -- 1. Buchung |
---|
202 | JOIN ax_buchungsstelle s1 ON f.istgebucht = s1.gml_id |
---|
203 | LEFT JOIN ax_buchungsart_buchungsstelle w1 ON s1.buchungsart = w1.wert |
---|
204 | JOIN ax_buchungsblatt b1 ON s1.istbestandteilvon = b1.gml_id |
---|
205 | --LEFT JOIN alkis_wertearten a1 ON b1.blattart=a1.k AND a1.element='ax_buchungsblatt' AND a1.bezeichnung='blattart' |
---|
206 | LEFT JOIN ax_blattart_buchungsblatt a1 ON b1.blattart = a1.wert |
---|
207 | -- 2. Buchung |
---|
208 | JOIN ax_buchungsstelle s2 ON s1.gml_id = ANY(s2.an) |
---|
209 | LEFT JOIN ax_buchungsart_buchungsstelle w2 ON s2.buchungsart = w2.wert |
---|
210 | JOIN ax_buchungsblatt b2 ON s2.istbestandteilvon = b2.gml_id |
---|
211 | LEFT JOIN ax_blattart_buchungsblatt a2 ON b2.blattart = a2.wert |
---|
212 | -- 3. Buchung |
---|
213 | JOIN ax_buchungsstelle s3 ON s2.gml_id = ANY(s3.an) |
---|
214 | LEFT JOIN ax_buchungsart_buchungsstelle w3 ON s3.buchungsart = w3.wert |
---|
215 | JOIN ax_buchungsblatt b3 ON s3.istbestandteilvon = b3.gml_id |
---|
216 | LEFT JOIN ax_blattart_buchungsblatt a3 ON b3.blattart = a3.wert |
---|
217 | -- nur frische Sachen |
---|
218 | WHERE f.endet IS NULL |
---|
219 | AND s1.endet IS NULL AND b1.endet IS NULL |
---|
220 | AND s2.endet IS NULL AND b2.endet IS NULL |
---|
221 | AND s3.endet IS NULL AND b3.endet IS NULL |
---|
222 | LIMIT 30; |
---|
223 | -- Dauert 25 Sec. |
---|
224 | COMMENT ON VIEW buchungsrechte_3text IS 'FÃŒr Buchungsarten mit 3 beteiligten Buchungsstellen die einzelnen Kennzeichen als beschreibenden Text auflisten.'; |
---|
225 | |
---|
226 | |
---|
227 | CREATE OR REPLACE VIEW buchungsrechte_4text |
---|
228 | AS |
---|
229 | SELECT |
---|
230 | a4.beschreibung || ' (' || b4.blattart || ') ' || b4.buchungsblattnummermitbuchstabenerweiterung || ' (lfd. ' || s4.laufendenummer || ') hat ' || w4.beschreibung || ' (' || s4.buchungsart || ') an ' AS stufe4, |
---|
231 | a3.beschreibung || ' (' || b3.blattart || ') ' || b3.buchungsblattnummermitbuchstabenerweiterung || ' (lfd. ' || s3.laufendenummer || ') hat ' || w3.beschreibung || ' (' || s3.buchungsart || ') an ' AS stufe3, |
---|
232 | a2.beschreibung || ' (' || b2.blattart || ') ' || b2.buchungsblattnummermitbuchstabenerweiterung || ' (lfd. ' || s2.laufendenummer || ') hat ' || w2.beschreibung || ' (' || s2.buchungsart || ') an ' AS stufe2, |
---|
233 | a1.beschreibung || ' (' || b1.blattart || ') ' || b1.buchungsblattnummermitbuchstabenerweiterung || ' (lfd. ' || s1.laufendenummer || ') hat ' || w1.beschreibung || ' (' || s1.buchungsart || ') mit Buchung ' AS stufe1, |
---|
234 | 'FlurstÃŒck ' || f.flurstueckskennzeichen || ' (gml_id=' || f.gml_id || ')' AS flurstueck |
---|
235 | -- FlurstÃŒck |
---|
236 | FROM ax_flurstueck f |
---|
237 | -- 1. Buchung |
---|
238 | JOIN ax_buchungsstelle s1 ON f.istgebucht = s1.gml_id |
---|
239 | LEFT JOIN ax_buchungsart_buchungsstelle w1 ON s1.buchungsart = w1.wert |
---|
240 | JOIN ax_buchungsblatt b1 ON s1.istbestandteilvon = b1.gml_id |
---|
241 | LEFT JOIN ax_blattart_buchungsblatt a1 ON b1.blattart = a1.wert |
---|
242 | -- 2. Buchung |
---|
243 | JOIN ax_buchungsstelle s2 ON s1.gml_id = ANY(s2.an) |
---|
244 | LEFT JOIN ax_buchungsart_buchungsstelle w2 ON s2.buchungsart = w2.wert |
---|
245 | JOIN ax_buchungsblatt b2 ON s2.istbestandteilvon = b2.gml_id |
---|
246 | LEFT JOIN ax_blattart_buchungsblatt a2 ON b2.blattart = a2.wert |
---|
247 | -- 3. Buchung |
---|
248 | JOIN ax_buchungsstelle s3 ON s2.gml_id = ANY(s3.an) |
---|
249 | LEFT JOIN ax_buchungsart_buchungsstelle w3 ON s3.buchungsart = w3.wert |
---|
250 | JOIN ax_buchungsblatt b3 ON s3.istbestandteilvon = b3.gml_id |
---|
251 | LEFT JOIN ax_blattart_buchungsblatt a3 ON b3.blattart = a3.wert |
---|
252 | -- 4. Buchung |
---|
253 | JOIN ax_buchungsstelle s4 ON s3.gml_id = ANY(s4.an) |
---|
254 | LEFT JOIN ax_buchungsart_buchungsstelle w4 ON s4.buchungsart = w4.wert |
---|
255 | JOIN ax_buchungsblatt b4 ON s4.istbestandteilvon = b4.gml_id |
---|
256 | LEFT JOIN ax_blattart_buchungsblatt a4 ON b4.blattart = a4.wert |
---|
257 | -- nur frische Sachen |
---|
258 | WHERE f.endet IS NULL |
---|
259 | AND s1.endet IS NULL AND b1.endet IS NULL |
---|
260 | AND s2.endet IS NULL AND b2.endet IS NULL |
---|
261 | AND s3.endet IS NULL AND b3.endet IS NULL |
---|
262 | AND s4.endet IS NULL AND b4.endet IS NULL |
---|
263 | LIMIT 30; |
---|
264 | -- Dauert 5 Min.! |
---|
265 | COMMENT ON VIEW buchungsrechte_4text IS 'FÃŒr Buchungsarten mit 4 beteiligten Buchungsstellen die einzelnen Kennzeichen als beschreibenden Text auflisten.'; |
---|
266 | |
---|
267 | -- Ende -- |
---|