Ignore:
Timestamp:
10/17/13 15:28:48 (7 years ago)
Author:
frank.jaeger
Message:

PostProcessing?-Scripte fuer Straßennamen

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/import/pp_praesentation_sichten.sql

    r293 r294  
    44-- Post Processing (pp_) Teil 3: PrÀsentationsobjekte ergÀnzen / reparieren 
    55 
    6 -- Dies Script "pp_praesentation_sichten.sql" dient der Vorbereitung der Reparatur,  
     6-- Dies Script "pp_praesentation_sichten.sql" dient der Vorschau der Reparatur,  
    77-- die mit dem Script "pp_praesentation_action.sql" durchgefÃŒhrt wird. 
    88 
    9 -- Dies Script muss beim Anlegen der Datenbank verarbeitet werden und wenn sich die Sichten verÀndert haben.  
     9-- Dies Script kann beim Anlegen der Datenbank verarbeitet werden und wenn sich die Sichten verÀndert haben.  
    1010-- Das Action-Script muss im Rahmen des Post-Processing nach jeder Konvertierung laufen. 
    1111 
    1212-- Stand  
    1313--  2013-10-16  F.J. krz: Straßennamen fehlen in den PrÀsentationsobjekten, Tabelle "ap_pto" 
     14--  2013-10-17  F.J. krz: Relation "dientZurDarstellungVon" macht es einfacher 
    1415 
    1516 
     
    4041-- FÃŒr die Darstellung im Kartenbild ist der gleiche Name oder eine Variante davon (AbkÃŒrzung, getrennt-Schreibung)  
    4142-- auch in jedem PrÀsentationsobjekt noch einmal abgelegt. 
    42 -- Diese Redundanz fÃŒhrt bei einer Änderung des Namens zu einem erhöhten Aufwand. 
     43-- Diese Redundanz fÃŒhrt bei einer Änderung des Namens zu einem erhöhten Aufwand, weil er an mehreren Stellen geÀndrt werden muss.. 
    4344-- 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-- Dort ist nur noch dann ein Eintrag zu finden, wenn der Text nicht identisch sind (AbkÃŒrzung, Getrennt-Schreibung). 
    4546 
    46 -- Signaturnummern werden auch nur noch dann erfasst, wenn mehrere Werte möglich sind. 
     47-- Signaturnummern werden in ap_pto nur noch erfasst, wenn mehrere Werte möglich sind. 
    4748 
    4849-- In Niedersachsen wurde oder wird das Löschen der identischen Texte in ap_pto möglicherweise als Nachmigration gezielt 
     
    5253 
    5354 
    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  
    6255-- Simulation der Fehlersituation in einem TEST-Bestand 
    6356-- ---------------------------------------------------- 
    64  
    6557-- VORSICHT! - Nur in einer Test-Kopie ausfÃŒhren. Löscht Daten! 
    66  
    6758  -- UPDATE ap_pto SET schriftinhalt = NULL  WHERE art = 'Strasse'; 
    6859  -- UPDATE ap_pto SET schriftinhalt = NULL  WHERE art = 'BezKlassifizierungStrasse'; 
     
    7364 
    7465-- Diese Views ermitteln, ob der Fall im vorliegenden Datenbestand vorkommt. 
    75 -- Dies ist in zunehmend in Niedersachsen der Fall. 
    7666 
    77 -- In NRW-Daten wurden weniger FÀlle gefunden. 
     67-- Dies ist in zunehmend in Niedersachsen der Fall.  
     68-- In NRW-Daten wurden weniger FÀlle gefunden. Dann ist jeweils auch die Signaturnummer leer.  
     69-- Daher sollte "signaturnummer" nicht als Filter bei der "Reparatur" verwendet werden. 
    7870 
    79 -- Dann ist jeweils auch die Signaturnummer leer.  
    80 -- Daher sollte "signaturnummer" nicht als Filter bei der "Reparatur" verwendet werden. 
     71 
     72-- Aus VorgÀngerversion, nicht mehr relevant: 
     73 -- DROP VIEW pp_praes_strassen_name_ausnahmen; 
     74 -- DROP VIEW pp_praes_strassen_name_mehrfach; 
    8175 
    8276 
     
    107101 
    108102 
    109 -- Diese Views sollen zeigen, welche Namen in ap_pto.schriftinhalt eingesetzt werden, 
     103-- Diese Views sollen zeigen, welche Namen in "ap_pto.schriftinhalt" eingesetzt werden, 
    110104-- wenn die nachfolgenden update-Befehle ausgefÃŒhrt werden. 
    111105 
    112106-- Dies dient wÀhrend der Entwicklung zu manuellen Vorab-Kontrolle. 
    113107-- 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. 
     108-- Dann sind die Namen noch gefÃŒllt und brauchen nicht auf diese Weise rekonstruiert werden. 
    119109 
    120110 
    121 --DROP VIEW  pp_praes_strassen_name_update_vorschau; 
     111 DROP VIEW  pp_praes_strassen_name_update_vorschau; 
    122112CREATE OR REPLACE VIEW pp_praes_strassen_name_update_vorschau 
    123113AS 
    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; 
     114  SELECT -- p.gml_id AS gml_pto, 
     115         k.bezeichnung,                              -- der Name aus dem Katalog, der nach ap_pto kopiert wird 
     116         st_asewkt(p.wkb_geometry) AS label_geom     -- Lesbare Koordinaten: Wo liegt der Label? 
     117  FROM   ax_lagebezeichnungkatalogeintrag  k         -- Katalog enthÀlt den Straßennamen 
     118    JOIN ax_lagebezeichnungohnehausnummer  l         -- dient als Lage ohne HsNr. 
     119      ON ( k.land=l.land AND k.regierungsbezirk=l.regierungsbezirk  
     120     AND k.kreis=l.kreis AND k.gemeinde=l.gemeinde AND k.lage=l.lage ) 
     121    JOIN alkis_beziehungen x ON l.gml_id = x.beziehung_zu  -- Relation .. 
     122    JOIN ap_pto            p ON p.gml_id = x.beziehung_von -- .. zum PrÀsentationsobjekt 
     123   WHERE p."art" = 'Strasse' -- Filter 
     124     AND p.schriftinhalt      IS NULL                -- Text fehlt in ap_pto 
     125     AND NOT (p.wkb_geometry  IS NULL)               -- hat aber eine Position in ap_pto 
     126     AND x.beziehungsart = 'dientZurDarstellungVon'; -- Relation PTO - Lage o.HsNr 
    146127 
    147128COMMENT ON VIEW pp_praes_strassen_name_update_vorschau  
     
    149130 
    150131 
    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; 
     132 DROP VIEW pp_praes_strassen_klass_update_vorschau; 
    213133CREATE OR REPLACE VIEW pp_praes_strassen_klass_update_vorschau 
    214134AS 
    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; 
     135  SELECT -- p.gml_id AS gml_pto, 
     136         k.bezeichnung,                              -- der Name aus dem Katalog, der nach ap_pto kopiert wird 
     137         st_asewkt(p.wkb_geometry) AS label_geom     -- Lesbare Koordinaten: Wo liegt der Label? 
     138  FROM   ax_lagebezeichnungkatalogeintrag  k         -- Katalog enthÀlt den Straßennamen 
     139    JOIN ax_lagebezeichnungohnehausnummer  l         -- dient als Lage ohne HsNr. 
     140      ON ( k.land=l.land AND k.regierungsbezirk=l.regierungsbezirk  
     141     AND k.kreis=l.kreis AND k.gemeinde=l.gemeinde AND k.lage=l.lage ) 
     142    JOIN alkis_beziehungen x ON l.gml_id = x.beziehung_zu  -- Relation .. 
     143    JOIN ap_pto            p ON p.gml_id = x.beziehung_von -- .. zum PrÀsentationsobjekt 
     144   WHERE p."art" = 'BezKlassifizierungStrasse'       -- Filter 
     145     AND p.schriftinhalt      IS NULL                -- Text fehlt in ap_pto 
     146     AND NOT (p.wkb_geometry  IS NULL)               -- hat aber eine Position in ap_pto 
     147     AND x.beziehungsart = 'dientZurDarstellungVon'; -- Relation PTO - Lage o.HsNr 
    235148 
    236149COMMENT ON VIEW pp_praes_strassen_klass_update_vorschau  
    237150  IS 'PrÀsentationsobjekt zu Straßen. Vorschau zum Update der Klassifikation der in ap_pto.'; 
    238151 
    239  
    240152-- ENDE -- 
Note: See TracChangeset for help on using the changeset viewer.