Changeset 294 for trunk


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

PostProcessing?-Scripte fuer Straßennamen

Location:
trunk/import
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/import/datenbank_anlegen.sh

    r276 r294  
    99##  2013-01-15 Zwischenstopp um Meldungen lesen zu können bevor, sie aus dem Scrollbereich verschwinden 
    1010##  2013-04-16 Vers.-Nr. "0.7" aus dem Dateinamen von Schema und Keytable entfernt, sichten_wms.sql 
     11##  2013-10-16 F.J. krz: Neues Sript "pp_praesentation_sichten.sql" für Reparatur Präsentationsobjekte Straßennamen 
    1112 
    1213POSTNAS_HOME=$(dirname $0) 
     
    9798## Nur die benoetigten Tabellen fuer die Buchauskunft 
    9899psql $con -U ${DBUSER} -f alkis_PostNAS_keytables.sql >$MANDANT_HOME/log/keytables.log 
     100 
    99101echo " " 
    100102echo "** Anlegen Optimierung Nutzungsarten (nutzungsart_definition.sql)" 
    101103psql $con -U ${DBUSER} -f nutzungsart_definition.sql 
     104 
    102105echo " " 
    103106echo "** Laden NUA-Metadaten (nutzungsart_metadaten.sql) Protokoll siehe log" 
    104107psql $con -U ${DBUSER} -f nutzungsart_metadaten.sql >$MANDANT_HOME/log/meta.log 
     108 
    105109echo " " 
    106 echo "** Anlegen Post Processing (pp_definition.sql)" 
     110echo "** Anlegen Post Processing Tabellen (pp_definition.sql)" 
    107111psql $con -U ${DBUSER} -f pp_definition.sql >$MANDANT_HOME/log/pp_definition.log 
     112 
     113echo " " 
     114echo "** Anlegen Post Processing Views (pp_praesentation_sichten.sql)" 
     115psql $con -U ${DBUSER} -f pp_praesentation_sichten.sql >$MANDANT_HOME/log/pp_praesentation_sichten.log 
     116 
    108117echo " " 
    109118echo "** Definition von Views (sichten_wms.sql)" 
    110119psql $con -U ${DBUSER} -f sichten_wms.sql >$MANDANT_HOME/log/sichten_wms.log 
     120 
    111121echo " " 
    112122echo  "COMMENT ON DATABASE ${DBNAME} IS 'ALKIS - Konverter PostNAS 0.7';" | psql -p 5432 -d ${DBNAME} -U ${DBUSER}  
    113123echo " " 
     124 
    114125echo "** Berechtigung (grant.sql) Protokoll siehe log" 
    115126psql $con -U ${DBUSER} -f grant.sql >$MANDANT_HOME/log/log_grant.log 
  • trunk/import/konv_batch.sh

    r215 r294  
    2727##   2012-10-30 Umgebungsvariable setzen, delete-Tabelle am Ende fuer Analyse gefuellt lassen. 
    2828##              Test als 0.7a mit gepatchter gdal-Version (noch 2.0dev) 
     29##   2013-10-16 F.J. krz: Neues Script "pp_praesentation_action.sql" für Reparatur der  
     30##              Präsentationsobjekte Straßenname im Post-Processing 
    2931## 
    3032## ToDo: Option "-skipfailures" nach Test entfernen ? 
     
    8688fi 
    8789# Fehlerprotokoll: 
    88   errprot='$POSTNAS_HOME/log/postnas_err_'$DBNAME'.prot' 
     90  errprot=${POSTNAS_HOME}'/log/postnas_err_'$DBNAME'.prot' 
    8991# 
    9092# DB-Connection 
     
    144146  else 
    145147    echo "** Post-Processing (Nacharbeiten zur Konvertierung)" 
     148 
    146149    echo "** - Optimierte Nutzungsarten neu Laden:" 
    147150    (cd $POSTNAS_HOME; psql -p 5432 -d ${DBNAME} -f nutzungsart_laden.sql) 
    148     ## 
     151 
     152 
    149153    echo "** - Fluren / Gemarkungen / Gemeinden neu Laden:" 
    150154    (cd $POSTNAS_HOME; psql -p 5432 -d ${DBNAME} -f pp_laden.sql) 
     155 
     156 
     157    echo "** - Präsentationsobjekte generieren:" 
     158    (cd $POSTNAS_HOME; psql -p 5432 -d ${DBNAME} -f pp_praesentation_action.sql) 
     159 
    151160  fi 
    152  
     161# 
    153162  if [ "$(readlink $POSTNAS_HOME/alkis-trigger.sql)" = "alkis-trigger-kill.sql" ]; then 
    154163# Durch Einfuegen in Tabelle 'delete' werden Loeschungen anderer Tabellen getriggert 
     
    167176    #echo "  ... geendete Objekte entfernen wurde fuer Test dektiviert." 
    168177    #echo "  Bitte manuell ausfuehren:  SELECT alkis_delete_all_endet(); " 
    169 # 
    170     echo "Das Fehler-Protokoll wurde ausgegeben in die Datei $errprot" 
    171     #echo "HINWEIS: -skipfailures  fuer Produktion wieder einschalten." 
    172178  fi 
     179  echo "Das Fehler-Protokoll wurde ausgegeben in die Datei $errprot" 
     180  #echo "HINWEIS: -skipfailures  fuer Produktion wieder einschalten." 
  • 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 
  • 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.