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

PostProcessing?-Scripte fuer Straßennamen

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/import/pp_praesentation_action.sql

    r293 r294  
    44-- Post Processing (pp_) Teil 3: PrÀsentationsobjekte ergÀnzen / reparieren 
    55 
    6 -- Dies Script "pp_praesentation_action.sql" dient der Reparatur von fehlenden PrÀsentationsobjekten. 
    7 -- Voraussetzung ist, dass vorher das Script "pp_praesentation_sichten.sql" verarbeitet wurde. 
    8  
     6-- Dies Script "pp_praesentation_action.sql" dient der Reparatur von fehlenden Texten in PrÀsentationsobjekten. 
    97-- Dies Script muss im Rahmen des Post-Processing nach jeder Konvertierung laufen. 
    10 -- Das Sichten-Sript muss nur beim Anlegen der Datenbank einmalig verarbeitet werden  
     8-- Kommantare und ErlÀuterungen siehe in "pp_praesentation_sichten.sql". 
    119 
    1210-- Stand  
    1311--  2013-10-16  F.J. krz: Straßennamen fehlen in den PrÀsentationsobjekten, Tabelle "ap_pto" 
     12--  2013-10-17  F.J. krz: Relation "dientZurDarstellungVon" macht es einfacher 
     13 
     14-- ToDo: 
     15--  Konverter-Tabelle ap_pto unberÃŒhrt lassen. 
     16--  Besser aus ap_pto und den ErgÀnzungen eine PrÀsentationstabelle fÃŒr Straßen fÃŒr den WMS exportieren.  
     17--  Es besteht sonst die Gefahr, dass Änderungen im Katalog nicht in PTO ÃŒbernommen werden (nur bei: WHERE .. IS NULL) 
    1418 
    1519-- ======================================== 
     
    1721-- ======================================== 
    1822 
    19 -- 
    20 -- Weitere Kommantare und ErlÀuterungen siehe in "pp_praesentation_sichten.sql". 
    21 -- 
    22  
    23 -- Reparatur Sonderfall 
    24 -- ==================== 
    25  
    26   -- Gibt es FÀlle, wo der Label in einem benachbarten FS liegt? 
    27   -- Hat er dann einen Zuordnungspfeil? 
    28   -- Dann mÃŒssten diese SonderfÀlle zuerst gefÃŒllt werden. 
    29  
    30  
    31  
    32 -- Reparatur Normalfall 
    33 -- ==================== 
    34  
    35    -- Label   >liegt in>   FlurstÃŒck     >zeigtAuf>       Lage o.H.   -->   Katalog 
    36    --        (Geometrisch)            (Alkis_Beziehung)             (JOIN) 
    37  
    3823-- N a m e n 
    3924UPDATE ap_pto  p          -- PrÀsentationsobjekte Punktförmig 
    4025   SET schriftinhalt =    -- Hier fehlt der Label 
    4126   -- Subquery "Gib mir den Straßennamen": 
    42    -- Diese Subquery darf nur eine einzige Zeile liefern damit der Inhalt in eine Spalte passt. 
    43     (SELECT k.bezeichnung                        -- Straßenname ... 
    44        FROM ax_lagebezeichnungkatalogeintrag  k  --   .. aus Katalog 
    45        JOIN ax_lagebezeichnungohnehausnummer  l  -- wobei dieser Katalogeintrag 
    46             ON     k.land=l.land 
    47                AND k.regierungsbezirk=l.regierungsbezirk  
    48                AND k.kreis=l.kreis 
    49                AND k.gemeinde=l.gemeinde 
    50                AND k.lage=l.lage  
    51        JOIN alkis_beziehungen  b  ON l.gml_id = b.beziehung_zu  -- in Beziehung steht 
    52        JOIN ax_flurstueck      f  ON f.gml_id = b.beziehung_von -- zu dem FlurstÃŒck 
    53       WHERE b.beziehungsart = 'zeigtAuf' 
    54         AND ST_Within(p.wkb_geometry, f.wkb_geometry) -- in dessen FlÀche der Label liegt 
    55     --LIMIT 1  -- siehe unten ! 
    56     ) 
    57  WHERE     p.art = 'Strasse'  -- Filter 
     27   ( SELECT k.bezeichnung                       -- Straßenname .. 
     28       FROM ax_lagebezeichnungkatalogeintrag k  --  .. aus Katalog 
     29       JOIN ax_lagebezeichnungohnehausnummer l  -- verwendet als Lage o.H. 
     30         ON (k.land=l.land AND k.regierungsbezirk=l.regierungsbezirk  
     31             AND k.kreis=l.kreis AND k.gemeinde=l.gemeinde AND k.lage=l.lage ) 
     32       JOIN alkis_beziehungen x ON l.gml_id = x.beziehung_zu  -- Relation zum PrÀsentationsobjekt 
     33      WHERE p.gml_id = x.beziehung_von 
     34        AND x.beziehungsart = 'dientZurDarstellungVon' 
     35      -- LIMIT 1 -- war in einem Fall notwendig, wo 2mal der gleiche Text zugeordnet war, Ursache? 
     36   ) 
     37 WHERE     p.art = 'Strasse' -- Filter 
    5838   AND     p.schriftinhalt IS NULL 
    59    AND NOT p.wkb_geometry  IS NULL 
    60    -- Die ap_pto zunÀchst auslassen, zu dessen FlurstÃŒcken es mehrere Lagebezeichnungen gibt. 
    61    AND p.gml_id NOT IN (SELECT * FROM pp_praes_strassen_name_ausnahmen); -- siehe unten ! 
     39   AND NOT p.wkb_geometry  IS NULL; 
    6240 
    6341 
    64 -- "LIMIT 1" wozu? 
    65  
    66 -- Es wird möglicherweise mal mehr als 1 Wert je Subquery geliefert. 
    67 -- Dann ist dies SQL nicht ausfÃŒhrbar und bricht ab. 
    68  
    69 -- In den Testdaten "Mustermonzel" sind Name und Klassifikation nicht unterscheidbar weil 
    70 -- die Klassifikation nicht als art='BezKlassifizierungStrasse' sondern auch als art='strasse' 
    71 -- eingetragen ist. Dann werden 2 Zeilen geliefert, die AusfÃŒhrung bricht ab. 
    72  
    73 -- In aktuellen Daten ist diese Ursache ausgeschaltet. 
    74 -- Es gibt trotzdem SonderfÀlle, bei dem mehrere Werte geliefert werden. 
    75 -- Wenn das ÃŒber die Verschneidung gefundene FlurstÃŒcke mehrer "Lagebezeichnung ohne Hausnummer" hat, 
    76 -- dann kann zur Zeit nicht jedes dieser Label der passenden Position aus ap_pto zugewiesen weden. 
    77 -- Die obige Lösung funktioniert nur bei 1:1-Konstallationen. 
    78  
    79 -- Welcher Label gehört dann zu welcher Position? 
    80 -- Es gibt keine Verbindung (alkis_beziehung) zwischen "ap_pto" und "lagebezeichnung*". 
    81  
    82 -- Die Lösung ÃŒber "LIMIT 1" macht die Query ausfÃŒhrbar, fÃŒhrt aber dazu, dass nur einer der  
    83 -- mehrfachen Label an allen Positionen angezeigt wird, was falsch ist. 
    84  
    85 -- Die alternative Lösung ÃŒber  
    86 --    "p.gml_id NOT IN (SELECT * FROM pp_praes_strassen_name_ausnahmen)" 
    87 -- lÀsst die Label dagegen zunÀchst leer. 
    88 -- Diese FÀlle bleiben dann durch obigen Views weiterhin erkennbar.  
    89  
    90  
    91 -- K l a s s i f i k a t i o n e n 
    92 -- (analog zu strassen) 
     42-- K l a s s i f i k a t i o n e n   (analog zu Strassen) 
    9343UPDATE ap_pto  p          -- PrÀsentationsobjekte Punktförmig 
    9444   SET schriftinhalt =    -- Hier fehlt der Label 
    95    -- Subquery "Gib mir die Straßen-Klassifikation": 
    96    -- Diese Subquery darf nur eine einzige Zeile liefern damit der Inhalt in eine Spalte passt. 
    97     (SELECT k.bezeichnung                        -- Straßenname ... 
    98        FROM ax_lagebezeichnungkatalogeintrag  k  --   .. aus Katalog 
    99        JOIN ax_lagebezeichnungohnehausnummer  l  -- wobei dieser Katalogeintrag 
    100             ON     k.land=l.land 
    101                AND k.regierungsbezirk=l.regierungsbezirk  
    102                AND k.kreis=l.kreis 
    103                AND k.gemeinde=l.gemeinde 
    104                AND k.lage=l.lage  
    105        JOIN alkis_beziehungen  b  ON l.gml_id = b.beziehung_zu  -- in Beziehung steht 
    106        JOIN ax_flurstueck      f  ON f.gml_id = b.beziehung_von -- zu dem FlurstÃŒck 
    107       WHERE b.beziehungsart = 'zeigtAuf' 
    108         AND ST_Within(p.wkb_geometry, f.wkb_geometry) -- in dessen FlÀche der Label liegt 
    109     -- LIMIT 1 
    110     ) 
     45   ( SELECT k.bezeichnung                       -- Klassifikation "B nnn", "L nnn", "K nnn" 
     46       FROM ax_lagebezeichnungkatalogeintrag k  -- .. aus Katalog 
     47       JOIN ax_lagebezeichnungohnehausnummer l  -- verwendet als Lage o.H. 
     48         ON (k.land=l.land AND k.regierungsbezirk=l.regierungsbezirk  
     49             AND k.kreis=l.kreis AND k.gemeinde=l.gemeinde AND k.lage=l.lage ) 
     50       JOIN alkis_beziehungen x ON l.gml_id = x.beziehung_zu  -- Relation zum PrÀsentationsobjekt 
     51      WHERE p.gml_id = x.beziehung_von 
     52        AND x.beziehungsart = 'dientZurDarstellungVon' 
     53   ) 
    11154 WHERE     p.art = 'BezKlassifizierungStrasse' -- Filter 
    11255   AND     p.schriftinhalt IS NULL 
Note: See TracChangeset for help on using the changeset viewer.