[293] | 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 -- |
---|