1 | |
---|
2 | -- ALKIS PostNAS 0.7 |
---|
3 | |
---|
4 | -- Post Processing (pp_) Teil 3: PrÀsentationsobjekte ergÀnzen / reparieren |
---|
5 | |
---|
6 | -- Dies Script "pp_praesentation_sichten.sql" dient der Vorbereitung der Reparatur, |
---|
7 | -- die mit dem Script "pp_praesentation_action.sql" durchgefÃŒhrt wird. |
---|
8 | |
---|
9 | -- Dies Script muss beim Anlegen der Datenbank verarbeitet werden und wenn sich die Sichten verÀndert haben. |
---|
10 | -- Das Action-Script muss im Rahmen des Post-Processing nach jeder Konvertierung laufen. |
---|
11 | |
---|
12 | -- Stand |
---|
13 | -- 2013-10-16 F.J. krz: StraÃennamen fehlen in den PrÀsentationsobjekten, Tabelle "ap_pto" |
---|
14 | |
---|
15 | |
---|
16 | -- ======================================== |
---|
17 | -- StraÃen-Namen und StraÃen-Klassifikation |
---|
18 | -- ======================================== |
---|
19 | |
---|
20 | -- Bei den NAS-Daten, die vom Land Niedersachsen an die Kommunen abgegeben werden, |
---|
21 | -- tritt in zunehmenden Umfang folgendes Problem auf (Stand Oktober 2013): |
---|
22 | |
---|
23 | -- Die Namen und Klassifikationen der StraÃen fehlen in der Tabelle "ap_pto". |
---|
24 | -- Somit fehlt das Label fÃŒr die Darstellung des StraÃennamens in der Karte. |
---|
25 | -- Position und Drehwinkel sind dort aber noch vorhanden. |
---|
26 | |
---|
27 | -- Der Name, der in anderen Tabellen vorhanden ist, muss nach "ap_pto" kopiert werden, |
---|
28 | -- damit die WMS-Kartendarstellung wieder komplett ist. |
---|
29 | |
---|
30 | -- Tabelle: ap_pto |
---|
31 | -- Spalten: |
---|
32 | -- art: 'strasse', 'BezKlassifizierungStrasse' |
---|
33 | -- schriftinhalt: leer |
---|
34 | -- signaturnummer: ?? |
---|
35 | -- drehwinkel und wkb_geometry: gefÃŒllt |
---|
36 | |
---|
37 | -- Hintergrund: |
---|
38 | -- Der StraÃenname ist nach der Migration der ALKIS-Daten aus ALB und ALK zunÀchst redundant gespeichert worden. |
---|
39 | -- Er befindet sich "im Original" in "ax_lagebezeichnungkatalogeintrag.bezeichnung". |
---|
40 | -- FÃŒr die Darstellung im Kartenbild ist der gleiche Name oder eine Variante davon (AbkÃŒrzung, getrennt-Schreibung) |
---|
41 | -- auch in jedem PrÀsentationsobjekt noch einmal abgelegt. |
---|
42 | -- Diese Redundanz fÃŒhrt bei einer Ãnderung des Namens zu einem erhöhten Aufwand. |
---|
43 | -- Ziel ist es daher, die identischen Kopien des Namens-Textes in "ap_pto" nicht mehr zu fÃŒhren. |
---|
44 | -- Dort ist nur noch dann ein Eintrag zu finden, wenn Text (oder Signaturnummer?) nicht identisch sind. |
---|
45 | |
---|
46 | -- Signaturnummern werden auch nur noch dann erfasst, wenn mehrere Werte möglich sind. |
---|
47 | |
---|
48 | -- In Niedersachsen wurde oder wird das Löschen der identischen Texte in ap_pto möglicherweise als Nachmigration gezielt |
---|
49 | -- durchgefÌhrt. Die Mehrzahl der Texte ist bereits gelöscht! |
---|
50 | -- In NRW tritt dies erst seit dem letzten Update der EQK (ibR, Stand Oktober 2013) zunÀchst bei den FÀllen auf, |
---|
51 | -- die seit dem Update fortgefÃŒhrt wurden. Eine groÃflÀchige gezielte Entfernung wurde nicht bemerkt. |
---|
52 | |
---|
53 | |
---|
54 | -- Es soll versucht werden, dies Label durch die Zuordnung der Schrift-Position |
---|
55 | -- in einem FlurstÃŒck und ÃŒber dessen Lagebezeichnung zu rekonstruieren. |
---|
56 | |
---|
57 | -- "Label" >liegt in> "FlurstÃŒck" >hat Lagebezeichnung> "StraÃenname" |
---|
58 | -- (geometrische (Beziehung) |
---|
59 | -- Verschniedung) |
---|
60 | |
---|
61 | |
---|
62 | -- Simulation der Fehlersituation in einem TEST-Bestand |
---|
63 | -- ---------------------------------------------------- |
---|
64 | |
---|
65 | -- VORSICHT! - Nur in einer Test-Kopie ausfÌhren. Löscht Daten! |
---|
66 | |
---|
67 | -- UPDATE ap_pto SET schriftinhalt = NULL WHERE art = 'Strasse'; |
---|
68 | -- UPDATE ap_pto SET schriftinhalt = NULL WHERE art = 'BezKlassifizierungStrasse'; |
---|
69 | |
---|
70 | |
---|
71 | -- Anzeige der leeren SÀtze |
---|
72 | -- --------------------------------------- |
---|
73 | |
---|
74 | -- Diese Views ermitteln, ob der Fall im vorliegenden Datenbestand vorkommt. |
---|
75 | -- Dies ist in zunehmend in Niedersachsen der Fall. |
---|
76 | |
---|
77 | -- In NRW-Daten wurden weniger FÀlle gefunden. |
---|
78 | |
---|
79 | -- Dann ist jeweils auch die Signaturnummer leer. |
---|
80 | -- Daher sollte "signaturnummer" nicht als Filter bei der "Reparatur" verwendet werden. |
---|
81 | |
---|
82 | |
---|
83 | -- DROP VIEW pp_praes_strassen_name_leer; |
---|
84 | CREATE OR REPLACE VIEW pp_praes_strassen_name_leer |
---|
85 | AS |
---|
86 | SELECT gml_id, schriftinhalt, signaturnummer, art, drehwinkel |
---|
87 | FROM ap_pto |
---|
88 | WHERE schriftinhalt IS NULL |
---|
89 | AND art = 'Strasse' |
---|
90 | -- AND (signaturnummer = '4107' OR signaturnummer = '8113') -- char |
---|
91 | ; |
---|
92 | COMMENT ON VIEW pp_praes_strassen_name_leer |
---|
93 | IS 'Es fehlt der Name der StraÃe in der PrÀsentationstabelle ap_pto.'; |
---|
94 | |
---|
95 | |
---|
96 | --DROP VIEW pp_praes_strassen_klass_leer; |
---|
97 | CREATE OR REPLACE VIEW pp_praes_strassen_klass_leer |
---|
98 | AS |
---|
99 | SELECT gml_id, schriftinhalt, signaturnummer, art, drehwinkel |
---|
100 | FROM ap_pto |
---|
101 | WHERE schriftinhalt IS NULL -- oder '' ? |
---|
102 | AND art = 'BezKlassifizierungStrasse' |
---|
103 | -- AND (signaturnummer = '4080' OR signaturnummer = '4140' OR signaturnummer = '8115') |
---|
104 | ; |
---|
105 | COMMENT ON VIEW pp_praes_strassen_klass_leer |
---|
106 | IS 'Es fehlt die Klassifikation der StraÃe in der PrÀsentationstabelle ap_pto.'; |
---|
107 | |
---|
108 | |
---|
109 | -- Diese Views sollen zeigen, welche Namen in ap_pto.schriftinhalt eingesetzt werden, |
---|
110 | -- wenn die nachfolgenden update-Befehle ausgefÃŒhrt werden. |
---|
111 | |
---|
112 | -- Dies dient wÀhrend der Entwicklung zu manuellen Vorab-Kontrolle. |
---|
113 | -- Wenn hier keine Zeilen ausgegeben werden, kann die AusfÃŒhrung dieses Scriptes im Workflow ausgeschaltet werden. |
---|
114 | -- Dann sind (Bundesland-spezifisch) die Namen bereits gefÃŒllt und brauchen nicht |
---|
115 | -- auf diese Weise rekonstruiert werden. |
---|
116 | |
---|
117 | -- An einem Referenzbestand (amtliche Karte?) kann/sollte kontrolliert werden, |
---|
118 | -- ob die richtigen Namen zugeordnet werden. |
---|
119 | |
---|
120 | |
---|
121 | --DROP VIEW pp_praes_strassen_name_update_vorschau; |
---|
122 | CREATE OR REPLACE VIEW pp_praes_strassen_name_update_vorschau |
---|
123 | AS |
---|
124 | SELECT f.gemarkungsnummer || '-' || f.flurnummer || '-' || f.zaehler || '/' || |
---|
125 | coalesce(cast(f.nenner as character varying), '') AS fskennz, -- FlurstÃŒckskennzeichen zur Eingabe in Navigation |
---|
126 | f.gml_id AS gml_fs, -- ID des FlurstÃŒcks zum Nachsehen in der Auskunft (PHP/HTML) |
---|
127 | -- p.gml_id AS gml_pto, |
---|
128 | k.bezeichnung, -- der Name aus dem Katalog, der nach ap_pto kopiert wird |
---|
129 | st_asewkt(p.wkb_geometry) AS label_geom -- Lesbare Koordinaten: Wo liegt der Label? |
---|
130 | FROM ax_lagebezeichnungkatalogeintrag k -- Katalog enthÀlt den StraÃennamen |
---|
131 | JOIN ax_lagebezeichnungohnehausnummer l -- Diese Eintrag ist dem FlurstÃŒck als Lage o. HsNr. zugeordnet |
---|
132 | ON ( k.land=l.land |
---|
133 | AND k.regierungsbezirk=l.regierungsbezirk |
---|
134 | AND k.kreis=l.kreis |
---|
135 | AND k.gemeinde=l.gemeinde |
---|
136 | AND k.lage=l.lage ) |
---|
137 | JOIN alkis_beziehungen b ON l.gml_id = b.beziehung_zu |
---|
138 | JOIN ax_flurstueck f ON f.gml_id = b.beziehung_von -- FlurstÃŒck .. |
---|
139 | JOIN ap_pto p ON ST_Within(p.wkb_geometry, f.wkb_geometry) -- in dessen FlÀche die Label-Position liegt |
---|
140 | WHERE p."art" = 'Strasse' -- Filter |
---|
141 | AND p.schriftinhalt IS NULL -- Text fehlt in ap_pto |
---|
142 | AND NOT (p.wkb_geometry IS NULL) -- hat aber eine Position in ap_pto |
---|
143 | AND b.beziehungsart = 'zeigtAuf' -- Relation FlurstÃŒck - Lage o.HsNr |
---|
144 | -- AND k.bezeichnung = 'Unter der Treff' -- kleiner Test in Mustermonzel Testdaten |
---|
145 | ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner; |
---|
146 | |
---|
147 | COMMENT ON VIEW pp_praes_strassen_name_update_vorschau |
---|
148 | IS 'PrÀsentationsobjekt zu StraÃen. Vorschau zum Update des Namens der in ap_pto.'; |
---|
149 | |
---|
150 | |
---|
151 | -- Werden hier zu einem PTO möglicherweise mal mehrere Werte geliefert? |
---|
152 | -- In diesen Problem-FÀllen liefert die Subquery im Update (ohne Limit 1) mehrere Zeilen fÌr ein Feld. |
---|
153 | |
---|
154 | --DROP VIEW pp_praes_strassen_name_mehrfach; |
---|
155 | CREATE OR REPLACE VIEW pp_praes_strassen_name_mehrfach |
---|
156 | AS |
---|
157 | SELECT p.gml_id, p.advstandardmodell, |
---|
158 | st_asewkt(p.wkb_geometry) AS label_geom, -- Wo liegt der Label? |
---|
159 | (SELECT f.gemarkungsnummer || '-' || f.flurnummer || '-' || f.zaehler || '/' || |
---|
160 | coalesce(cast(f.nenner as character varying), '') AS fskennz -- FlurstÃŒckskennzeichen zur Eingabe in Navigation |
---|
161 | FROM ax_flurstueck f |
---|
162 | WHERE ST_Within(p.wkb_geometry, f.wkb_geometry) |
---|
163 | ) AS flurstueck |
---|
164 | FROM ap_pto p |
---|
165 | WHERE p.art = 'Strasse' |
---|
166 | AND p.schriftinhalt IS NULL |
---|
167 | AND NOT p.wkb_geometry IS NULL |
---|
168 | AND (SELECT count(k.bezeichnung) AS anzahl_label -- die Subquery aus dem Update |
---|
169 | FROM ax_lagebezeichnungkatalogeintrag k |
---|
170 | JOIN ax_lagebezeichnungohnehausnummer l |
---|
171 | ON k.land=l.land AND k.regierungsbezirk=l.regierungsbezirk AND k.kreis=l.kreis |
---|
172 | AND k.gemeinde=l.gemeinde AND k.lage=l.lage |
---|
173 | JOIN alkis_beziehungen b ON l.gml_id = b.beziehung_zu |
---|
174 | JOIN ax_flurstueck f ON f.gml_id = b.beziehung_von |
---|
175 | WHERE b.beziehungsart = 'zeigtAuf' |
---|
176 | AND ST_Within(p.wkb_geometry, f.wkb_geometry) |
---|
177 | ) > 1 |
---|
178 | ORDER BY p.gml_id, p.advstandardmodell; |
---|
179 | |
---|
180 | COMMENT ON VIEW pp_praes_strassen_name_mehrfach |
---|
181 | IS 'PrÀsentationsobjekt zu StraÃen. Zu einem PTO werden ÃŒber das FlurstÃŒck mehrere Texte gefunden.'; |
---|
182 | |
---|
183 | |
---|
184 | -- Work-Arround, bis die eindeutige Zuordnung von "ap_pto" zu "lagebezeichnung*" geklÀrt ist. |
---|
185 | |
---|
186 | -- Wie "pp_praes_strassen_name_mehrfach" aber nur eine Liste der gml_id liefern um |
---|
187 | -- diese beim Update (vorlÀufig) auszuschlieÃen. |
---|
188 | |
---|
189 | --DROP VIEW pp_praes_strassen_name_ausnahmen; |
---|
190 | CREATE OR REPLACE VIEW pp_praes_strassen_name_ausnahmen |
---|
191 | AS |
---|
192 | SELECT p.gml_id |
---|
193 | FROM ap_pto p |
---|
194 | WHERE p.art = 'Strasse' |
---|
195 | AND p.schriftinhalt IS NULL |
---|
196 | AND NOT p.wkb_geometry IS NULL |
---|
197 | AND (SELECT count(k.bezeichnung) AS anzahl_label -- die Subquery aus dem Update |
---|
198 | FROM ax_lagebezeichnungkatalogeintrag k |
---|
199 | JOIN ax_lagebezeichnungohnehausnummer l |
---|
200 | ON k.land=l.land AND k.regierungsbezirk=l.regierungsbezirk AND k.kreis=l.kreis |
---|
201 | AND k.gemeinde=l.gemeinde AND k.lage=l.lage |
---|
202 | JOIN alkis_beziehungen b ON l.gml_id = b.beziehung_zu |
---|
203 | JOIN ax_flurstueck f ON f.gml_id = b.beziehung_von |
---|
204 | WHERE b.beziehungsart = 'zeigtAuf' |
---|
205 | AND ST_Within(p.wkb_geometry, f.wkb_geometry) |
---|
206 | ) > 1; |
---|
207 | |
---|
208 | COMMENT ON VIEW pp_praes_strassen_name_ausnahmen |
---|
209 | IS 'PrÀsentationsobjekt zu StraÃen. Zu einem PTO werden ÃŒber das FlurstÃŒck mehrere Texte gefunden. Liefert Liste der gml_is, die beim Update ausgenommen werden mÃŒssen.'; |
---|
210 | |
---|
211 | |
---|
212 | --DROP VIEW pp_praes_strassen_klass_update_vorschau; |
---|
213 | CREATE OR REPLACE VIEW pp_praes_strassen_klass_update_vorschau |
---|
214 | AS |
---|
215 | SELECT p.gml_id, -- ID des FlurstÃŒcks zum Nachsehen in der Auskunft (PHP/HTML) |
---|
216 | f.gemarkungsnummer || '-' || f.flurnummer || '-' || f.zaehler || '/' || |
---|
217 | coalesce(cast(f.nenner as character varying), '') AS fskennz, -- FlurstÃŒckskennzeichen zur Eingabe in Navigation |
---|
218 | k.bezeichnung, -- der Name aus dem Katalog, der nach ap_pto kopiert wird |
---|
219 | st_asewkt(p.wkb_geometry) AS label_geom -- Lesbare Koordinaten: Wo liegt der Label? |
---|
220 | FROM ax_lagebezeichnungkatalogeintrag k -- Katalog enthÀlt den StraÃennamen |
---|
221 | JOIN ax_lagebezeichnungohnehausnummer l -- Diese Eintrag ist dem FlurstÃŒck als Lage o. HsNr. zugeordnet |
---|
222 | ON (k.land=l.land |
---|
223 | AND k.regierungsbezirk=l.regierungsbezirk |
---|
224 | AND k.kreis=l.kreis |
---|
225 | AND k.gemeinde=l.gemeinde |
---|
226 | AND k.lage=l.lage) |
---|
227 | JOIN alkis_beziehungen b ON l.gml_id = b.beziehung_zu |
---|
228 | JOIN ax_flurstueck f ON f.gml_id = b.beziehung_von -- FlurstÃŒck .. |
---|
229 | JOIN ap_pto p ON ST_Within(p.wkb_geometry, f.wkb_geometry) -- in dessen FlÀche die Label-Position liegt |
---|
230 | WHERE p."art" = 'BezKlassifizierungStrasse' -- Filter |
---|
231 | AND p.schriftinhalt IS NULL -- Text fehlt in ap_pto |
---|
232 | AND NOT (p.wkb_geometry IS NULL) -- hat aber eine Position in ap_pto |
---|
233 | AND b.beziehungsart = 'zeigtAuf' -- Relation FlurstÃŒck - Lage o.HsNr |
---|
234 | ORDER BY f.flurnummer, f.zaehler, f.nenner; |
---|
235 | |
---|
236 | COMMENT ON VIEW pp_praes_strassen_klass_update_vorschau |
---|
237 | IS 'PrÀsentationsobjekt zu StraÃen. Vorschau zum Update der Klassifikation der in ap_pto.'; |
---|
238 | |
---|
239 | |
---|
240 | -- ENDE -- |
---|