Changeset 412


Ignore:
Timestamp:
11/09/18 14:17:35 (5 years ago)
Author:
frank.jaeger
Message:

Anpassung der ALKIS-Auskunft (PHP) an die Full-Schema-Version des ALKIS-Importers 3.0

Location:
trunk
Files:
2 added
2 deleted
17 edited

Legend:

Unmodified
Added
Removed
  • trunk/import/norgis_alkis_pp/postcreate.d/9_optimize.sql

    r409 r412  
    1 -- OSGeo4W64\apps\alkis-import-dev\postprocessing.d\9_optimize.sql 
     1-- OSGeo4W64\apps\alkis-import\postcreate.d\9_optimize.sql 
    22-- Optimieren von ALKIS-Datenbanken aus PostNAS. 
    33-- Optionaler Schritt nach dem Laden oder Aktualisieren. 
    4 -- Ziel ist die Reduzierung des Speicherplatzes und die Verbesserung der Verarbeitungs-Geschwindigkeit. 
     4-- Ziel ist die Verbesserung der Verarbeitungs-Geschwindigkeit. 
    55 
    6 -- 2018-10-29 krz Mi-Ra/Li: Idee "Clustering" aus der PostNAS-Sitzung. 
     6-- 2018-11-09 krz Mi-Ra/Li: Full-Schema 
    77 
    8   SELECT 'Optimierung der Datenbank lÀuft ...' AS info; 
    9  
    10 -- Anzeige der Größe der Datenbank vor der Optimierung. 
    11 -- https://www.postgresql.org/docs/current/static/functions-admin.html 
    12   SELECT pg_database_size(:'DBNAME') AS db_groesse_vorher; 
    13  
    14  
    15 -- Wenn keine historischen Objekte verwendet werden sollen, dann können alle Objekte gelöscht werden,  
    16 --  die einen Eintrag in der Spalte "endet" haben (endet IS NULL). 
    17 -- Sollte auskommentiert werden, wenn im NBA-Verfahren bewusst die Abgabeart "3100 fallbezogen (mit Historie)" verwendet wird  
    18 --  und die historischen Objekte von der Anwendung gefiltert angezeigt werden können. 
    19   SELECT alkis_delete_all_endet(); 
    20  
    21  
    22 -- Der Konverter ogr2ogr/NAS liest in einem zweiten Durchlauf durch die NAS-Datei die  
    23 --  DatensÀtze mit den Operationen DELETE, REPLACE und UPDATE. 
    24 -- Diese SÀtze werden in die Tabelle "delete" eingefÃŒgt, wo sie ÃŒber einen Datenbank-Trigger die FortfÃŒhrung der Objekt-Tabellen auslösen. 
    25 -- Danach können die SÀtze der delete-Tabelle wieder gelöscht werden. 
    26   TRUNCATE delete; 
    27  
    28  
    29 -- Die Tabelle "alkis_beziehungen" hat in einer frÃŒhen Version des Konverters die Beziehungen zwischen ALKIS-Objekten abgebildet. 
    30 -- Sie wurde ersetzt durch direkte Relationn zwischen den Objekt-Tabellen. 
    31 -- Die Tabelle "alkis_beziehungen" sollte von auswertenden Programmen nicht mehr verwendet werden. 
    32 -- Falls sie vom Konverter (Importer) noch gefÃŒllt wird, kann der Inhalt gelöscht werden. 
    33 -- Der Befehl TRUNCATE ist schneller, kann aber nur vom EigentÃŒmer verwendet werden. Ggf. ersetzen durch "DELETE".  
    34   TRUNCATE alkis_beziehungen; 
    35 --DELETE FROM alkis_beziehungen; 
    36  
    37  
    38 -- Wie lange soll das Protokoll gespeichert bleiben? 
    39 -- Selektiv "alte" EintrÀge entfernen. 
    40 --  ts timestamp without time zone DEFAULT now(), 
    41   SELECT 'Importlog vom ' || date(min(ts)) || ' bis ' || date(max(ts)) AS vorher FROM alkis_importlog; 
    42   DELETE FROM alkis_importlog WHERE (current_timestamp - ts) > interval '62 days';  -- ca. 2 Monate 
    43   SELECT 'Importlog vom ' || date(min(ts)) || ' bis ' || date(max(ts)) AS nachher FROM alkis_importlog; 
    44  
    45  
    46 -- C l u s t e r n  einiger Tabellen wie im Schritt postcreate.d definiert. 
    47 -- -------------------------------------------------------------------------- 
     8-- C l u s t e r n  der Darstellungstabellen mit dem geometrischen Index 
     9-- ------------------------------------------------------------------------- 
    4810-- https://www.postgresql.org/docs/9.4/static/sql-cluster.html 
    4911-- CLUSTER [VERBOSE] table_name [ USING index_name ] 
    5012 
    51   CLUSTER ;  
     13  CLUSTER po_labels    USING po_labels_point_idx;  -- hat 2 Geometrie-Felder! 
     14  CLUSTER po_lines     USING po_lines_line_idx; 
     15  CLUSTER po_points    USING po_points_point_idx; 
     16  CLUSTER po_polygons  USING po_polygons_polygons_idx; 
    5217 
    53  
    54 -- Reorganisation des Speichers. 
    55 -- Dauert je nach DB-Größe einen Weile. Die Datenbank is wÀhrend dieser Zeit nur eingeschrÀnkt benutzbar. 
    56   VACUUM full; 
    57  
    58  
    59 -- Größe der Datenbank nach der Optimierung anzeigen. 
    60   SELECT pg_database_size(:'DBNAME') AS db_groesse_nachher; 
     18-- Die Datenbank ist zum Zeitpunkt der Verarbeitung (postcreate) dieses Skriptes noch nicht gefÃŒllt, 
     19-- daher erfolgt hier noch keine wirkliche Sortierung der DatensÀtze. 
     20-- Die gewÃŒnschte Clusterung wird aber gespeichert. Nach der Aktualisierung der Daten (Schritt "postprocessing")  
     21-- kann der SQL-Befehl "CLUSTER;" ohne weitere Parameter ausgefÃŒhrt werden. Es wird dann alles neu geclustert, so wie hier definiert. 
    6122 
    6223-- ENDE -- 
  • trunk/import/norgis_alkis_pp/postprocessing.d/9_optimize.sql

    r409 r412  
    1010-- Anzeige der Größe der Datenbank vor der Optimierung. 
    1111-- https://www.postgresql.org/docs/current/static/functions-admin.html 
    12 -- ++ Formatierung in besser lesbarem Zahlenformat mit . nach je 3 Stellen. 
    1312  SELECT pg_database_size(:'DBNAME') AS db_groesse_vorher; 
    1413 
     
    2322-- Der Konverter ogr2ogr/NAS liest in einem zweiten Durchlauf durch die NAS-Datei die  
    2423--  DatensÀtze mit den Operationen DELETE, REPLACE und UPDATE. 
    25 -- Diese SÀtze werden in die Tabelle "delete" eingefÃŒgt, wo sie ÃŒber einen Datenbank-Trigger die FortfÃŒhrung der Obejkt-Tabellen auslösen. 
     24-- Diese SÀtze werden in die Tabelle "delete" eingefÃŒgt, wo sie ÃŒber einen Datenbank-Trigger die FortfÃŒhrung der Objekt-Tabellen auslösen. 
    2625-- Danach können die SÀtze der delete-Tabelle wieder gelöscht werden. 
    2726  TRUNCATE delete; 
     
    3837 
    3938-- Wie lange soll das Protokoll gespeichert bleiben? 
    40 -- Ggf. seletiv nur "alte" EintrÀge entfernen: WHERE ... ?   
    41 --TRUNCATE alkis_importlog; 
     39-- Selektiv "alte" EintrÀge entfernen. 
    4240--  ts timestamp without time zone DEFAULT now(), 
    4341  SELECT 'Importlog vom ' || date(min(ts)) || ' bis ' || date(max(ts)) AS vorher FROM alkis_importlog; 
     
    4644 
    4745 
    48 -- C l u s t e r n  einiger Tabellen wie im Schritt postcreate definiert. 
     46-- C l u s t e r n  einiger Tabellen wie im Schritt postcreate.d definiert. 
    4947-- -------------------------------------------------------------------------- 
    5048-- https://www.postgresql.org/docs/9.4/static/sql-cluster.html 
  • trunk/info/info/alkisn/alkisausk.php

    r389 r412  
    1313        2016-11-29 HTML5, Gemeinsam genutzte Datenbanken ermöglichen (Berechtigung fÃŒr Gemeinde prÃŒfen) 
    1414        2017-10-11 Sauber filtern auf endet IS NULL 
     15        2018-11-09 Umstellung Full-Schema 
    1516 
    1617        H i n w e i s :  Dies Modul wird beim Entwickler nicht mehr produktiv eingesetzt. 
     
    4142 
    4243// *** F L U R S T U E C K *** 
    43 $sql ="SELECT f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche, g.gemarkungsnummer, g.bezeichnung, f.regierungsbezirk, f.kreis, f.gemeinde 
     44$sql ="SELECT f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche, g.gemarkungsnummer, g.bezeichnung, f.gemeindezugehoerigkeit_regierungsbezirk, f.gemeindezugehoerigkeit_kreis, f.gemeindezugehoerigkeit_gemeinde 
    4445FROM ax_flurstueck f LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer 
    4546WHERE f.gml_id= $1 AND f.endet IS NULL AND g.endet IS NULL;"; 
     
    6263        $flae=$row["amtlicheflaeche"]; 
    6364        $flae=number_format($flae,0,",",".") . " m²"; 
    64         $fsreg=$row["regierungsbezirk"]; // Filter ZustÀndigkeit 
    65         $fskrs=$row["kreis"]; 
    66         $fsgem=$row["gemeinde"]; 
     65        $fsreg=$row["gemeindezugehoerigkeit_regierungsbezirk"]; // Filter ZustÀndigkeit 
     66        $fskrs=$row["gemeindezugehoerigkeit_kreis"]; 
     67        $fsgem=$row["gemeindezugehoerigkeit_gemeinde"]; 
    6768} else { 
    6869        echo "\n<p class='err'>Kein Treffer fuer gml_id=".$gmlid."</p>"; 
     
    171172echo "\n<h2><img src='ico/Grundbuch_zu.png' width='16' height='16' alt=''> Grundbuch</h2>"; 
    172173// ALKIS: FS >istgebucht> GS >istBestandteilVon> GB. 
    173 $sql ="SELECT b.gml_id, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung as blatt, b.blattart, wa.v AS blattartv,  
    174 s.gml_id AS s_gml, s.buchungsart, s.laufendenummer, s.zaehler, s.nenner, z.bezeichnung, wb.v AS bart  
     174$sql ="SELECT b.gml_id, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung as blatt, b.blattart, wa.beschreibung AS blattartv,  
     175s.gml_id AS s_gml, s.buchungsart, s.laufendenummer, s.zaehler, s.nenner, z.bezeichnung, wb.beschreibung AS bart  
    175176FROM ax_flurstueck f  
    176177JOIN ax_buchungsstelle s ON f.istgebucht=s.gml_id  
    177178JOIN ax_buchungsblatt b ON s.istbestandteilvon=b.gml_id  
    178179LEFT JOIN ax_buchungsblattbezirk z ON z.land=b.land AND z.bezirk=b.bezirk  
    179 LEFT JOIN alkis_wertearten wa ON cast(b.blattart AS character varying)=wa.k AND wa.element='ax_buchungsblatt' AND wa.bezeichnung='blattart'  
    180 LEFT JOIN alkis_wertearten wb ON cast(s.buchungsart AS character varying)=wb.k AND wb.element='ax_buchungsstelle' AND wb.bezeichnung='buchungsart'  
     180LEFT JOIN ax_blattart_buchungsblatt wa ON b.blattart = wa.wert 
     181LEFT JOIN ax_buchungsart_buchungsstelle wb ON s.buchungsart = wb.wert 
    181182WHERE f.gml_id= $1 AND f.endet IS NULL AND s.endet IS NULL AND b.endet IS NULL AND z.endet IS NULL  
    182183ORDER BY b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung, s.laufendenummer;"; 
  • trunk/info/info/alkisn/alkisbaurecht.php

    r402 r412  
    99        2017-10-09 Sauber filtern auf endet IS NULL 
    1010        2018-04-23 &nodebug 
     11        2018-11-09 Umstellung Full-Schema 
    1112*/ 
    1213session_start(); 
     
    4445if (!$con) echo "\n<p class='err'>Fehler beim Verbinden der DB</p>"; 
    4546 
    46 // Spalte "a.d" ist immer leer 
     47// Spalte "a.dokumentation" ist immer leer 
    4748$sql ="SELECT r.ogc_fid, r.artderfestlegung as adfkey, r.name, r.stelle, r.bezeichnung AS rechtbez,  
    48 a.v AS adfbez, d.bezeichnung AS stellbez, d.stellenart, wd.v, wd.d, round(st_area(r.wkb_geometry)::numeric,0) AS flae  
     49a.beschreibung AS adfbez, d.bezeichnung AS stellbez, d.stellenart, wd.beschreibung, wd.dokumentation, round(st_area(r.wkb_geometry)::numeric,0) AS flae  
    4950FROM ax_bauraumoderbodenordnungsrecht r  
    50 LEFT JOIN alkis_wertearten a ON cast(r.artderfestlegung AS character varying)=a.k AND a.element='ax_bauraumoderbodenordnungsrecht' AND a.bezeichnung='artderfestlegung' 
     51LEFT JOIN ax_artderfestlegung_bauraumoderbodenordnungsrecht a ON r.artderfestlegung = a.wert 
    5152LEFT JOIN ax_dienststelle d ON r.land=d.land AND r.stelle=d.stelle  
    52 LEFT JOIN alkis_wertearten wd ON cast(d.stellenart AS character varying)=wd.k AND wd.element='ax_dienststelle' AND wd.bezeichnung='stellenart' 
     53LEFT JOIN ax_behoerde wd ON d.stellenart = wd.wert 
    5354WHERE r.gml_id= $1 AND r.endet IS NULL AND d.endet IS NULL;"; 
    5455 
     
    126127        $v=array($gmlid); 
    127128} else { 
    128         $sql.="AND f.kreis = $2 AND f.gemeinde = $3 "; // Zuständiges Gebiet 
     129        $sql.="AND f.gemeindezugehoerigkeit_kreis = $2 AND f.gemeindezugehoerigkeit_gemeinde = $3 "; // Zuständiges Gebiet 
    129130        $v=array($gmlid, $filtkreis, $filtgem); 
    130131} 
  • trunk/info/info/alkisn/alkisbestnw.php

    r405 r412  
    1313        2018-04-23 Blatt und EigentÃŒmer in eine Tabelle. 
    1414        2018-05-03 Anpassung an GrundstÃŒcksnachweis, kein Export fÃŒr fiktives Blatt 
     15        2018-11-09 Umstellung Full-Schema 
    1516*/ 
    1617session_start(); 
     
    5354 
    5455// G R U N D B U C H 
    55 $sql="SELECT g.gml_id, g.bezirk, g.buchungsblattnummermitbuchstabenerweiterung AS blatt, g.blattart, wb.v AS blattartv, wb.d AS blattartd,  
    56 b.gml_id, b.bezirk, b.bezeichnung AS beznam, d.gml_id, d.land, d.bezeichnung, d.stelle, d.stellenart, wd.v AS stellev FROM ax_buchungsblatt g  
     56$sql="SELECT g.gml_id, g.bezirk, g.buchungsblattnummermitbuchstabenerweiterung AS blatt, g.blattart, wb.beschreibung AS blattartv, wb.dokumentation AS blattartd,  
     57b.gml_id, b.bezirk, b.bezeichnung AS beznam, d.gml_id, d.land, d.bezeichnung, d.stelle, d.stellenart, wd.beschreibung AS stellev FROM ax_buchungsblatt g  
    5758LEFT JOIN ax_buchungsblattbezirk b ON g.land=b.land AND g.bezirk=b.bezirk  
    58 LEFT JOIN ax_dienststelle d ON b.land=d.land AND b.stelle=d.stelle  
    59 LEFT JOIN alkis_wertearten wb ON cast(g.blattart AS character varying)=wb.k AND wb.element='ax_buchungsblatt' AND wb.bezeichnung='blattart' 
    60 LEFT JOIN alkis_wertearten wd ON cast(d.stellenart AS character varying)=wd.k AND wd.element='ax_dienststelle' AND wd.bezeichnung='stellenart' 
     59LEFT JOIN ax_dienststelle d ON b.land=d.land AND b.gehoertzu_stelle=d.stelle  
     60LEFT JOIN ax_blattart_buchungsblatt wb ON g.blattart = wb.wert 
     61LEFT JOIN ax_behoerde wd ON d.stellenart = wd.wert 
    6162WHERE g.gml_id= $1 AND g.endet IS NULL AND b.endet IS NULL AND d.endet IS NULL;"; 
    6263// .. AND d.stellenart=1000  
     
    168169// Blatt ->  B u c h u n g s s t e l l e 
    169170// aktuelles ax_buchungsblatt <istBestandteilVon< ax_buchungsstelle  
    170 $sql ="SELECT s.gml_id, s.buchungsart, s.laufendenummer AS lfd, s.beschreibungdesumfangsderbuchung AS udb, s.zaehler, s.nenner, s.nummerimaufteilungsplan AS nrap, s.beschreibungdessondereigentums AS sond, b.v as bart, b.d 
    171 FROM ax_buchungsstelle s LEFT JOIN alkis_wertearten b ON cast(s.buchungsart AS character varying)=b.k AND b.element='ax_buchungsstelle' and b.bezeichnung='buchungsart' 
     171$sql ="SELECT s.gml_id, s.buchungsart, s.laufendenummer AS lfd, s.beschreibungdesumfangsderbuchung AS udb, s.zaehler, s.nenner,  
     172s.nummerimaufteilungsplan AS nrap, s.beschreibungdessondereigentums AS sond, b.beschreibung as bart, b.dokumentation 
     173FROM ax_buchungsstelle s LEFT JOIN ax_buchungsart_buchungsstelle b ON s.buchungsart = b.wert 
    172174WHERE s.istbestandteilvon= $1 AND s.endet IS NULL ORDER BY cast(s.laufendenummer AS integer);"; 
    173175$v=array($gmlid); // Rel. istBestandteilVon 
     
    187189        $bartkey=$row["buchungsart"]; // SchlÃŒsselwert 
    188190        $bart=$row["bart"]; // BuchungsART Text dazu 
    189         $bartstory=htmlentities($row["d"], ENT_QUOTES, "UTF-8"); // .. fÃŒr Anzeige aufbereitet 
     191        $bartstory=htmlentities($row["dokumentation"], ENT_QUOTES, "UTF-8"); // .. fÃŒr Anzeige aufbereitet 
    190192        if ($row["zaehler"] == "") { 
    191193                $anteil = ""; 
     
    210212 
    211213                // Mit "UNION" um die FÀlle mit JOIN ÃŒber die Arrays "an" und "zu" unterscheiden zu können 
    212                 $sql="SELECT uni.*, wb.v AS bart FROM " 
     214                $sql="SELECT uni.*, wb.beschreibung AS bart FROM " 
    213215                ."(SELECT sda.gml_id, sda.buchungsart, sda.laufendenummer AS lfd, sda.beschreibungdesumfangsderbuchung AS udb, sda.nummerimaufteilungsplan AS nrap, sda.beschreibungdessondereigentums AS sond, 'an' as anzu " 
    214216                ."FROM ax_buchungsstelle sha JOIN ax_buchungsstelle sda ON sda.gml_id=ANY(sha.an) " 
     
    217219                ."FROM ax_buchungsstelle shz JOIN ax_buchungsstelle sdz ON sdz.gml_id=ANY(shz.zu) " 
    218220                ."WHERE shz.gml_id= $1 AND shz.endet IS NULL AND sdz.endet IS NULL " 
    219                 .") AS uni LEFT JOIN alkis_wertearten wb ON cast(uni.buchungsart AS character varying)=wb.k AND wb.element='ax_buchungsstelle' AND wb.bezeichnung='buchungsart' " 
     221                .") AS uni LEFT JOIN ax_buchungsart_buchungsstelle wb ON uni.buchungsart = wb.wert " 
    220222                ."ORDER BY uni.lfd;"; 
    221223        //      Testfall suchen: SELECT gml_id, zu, durch FROM ax_buchungsstelle WHERE NOT zu IS NULL OR NOT durch IS NULL; 
     
    242244                        ."FROM ax_buchungsblatt b JOIN ax_buchungsstelle s ON b.gml_id=s.istbestandteilvon " 
    243245                        ."LEFT JOIN ax_buchungsblattbezirk z ON b.land=z.land AND b.bezirk=z.bezirk " 
    244                         ."LEFT JOIN alkis_wertearten wb ON cast(b.blattart AS character varying)=wb.k AND wb.element='ax_buchungsblatt' AND wb.bezeichnung='blattart' " 
     246                        ."LEFT JOIN ax_blattart_buchungsblatt wb ON b.blattart = wb.wert " 
    245247                        ."WHERE s.gml_id= $1 AND b.endet IS NULL AND s.endet IS NULL AND z.endet IS NULL ORDER BY b.land, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung;"; 
    246248                        $v=array($gml_bsan); 
     
    359361// Blatt   <istBestandteilVon< Stelle  <an<  Stelle      >istBestandteilVon>  Blatt 
    360362// Fiktiv                      Fiktiv  <zu<  Berechtigt                       Berechtigt 
    361 $sql="SELECT sf.laufendenummer AS anlfdnr, bb.gml_id, bb.land, bb.bezirk, bb.buchungsblattnummermitbuchstabenerweiterung AS blatt, bb.blattart, wa.v AS blattartv,  
    362 sb.gml_id AS gml_s, sb.laufendenummer AS lfdnr, sb.buchungsart, wb.v AS bart, wb.d AS bartd, bz.bezeichnung AS beznam, d.bezeichnung, d.stelle, d.stellenart, wd.v AS stellev  
     363$sql="SELECT sf.laufendenummer AS anlfdnr, bb.gml_id, bb.land, bb.bezirk, bb.buchungsblattnummermitbuchstabenerweiterung AS blatt, bb.blattart, wa.beschreibung AS blattartv,  
     364sb.gml_id AS gml_s, sb.laufendenummer AS lfdnr, sb.buchungsart, wb.beschreibung AS bart, wb.dokumentation AS bartd, bz.bezeichnung AS beznam, d.bezeichnung, d.stelle, d.stellenart, wd.beschreibung AS stellev  
    363365FROM ax_buchungsstelle sf JOIN ax_buchungsstelle sb ON (sf.gml_id=ANY(sb.an) OR sf.gml_id=ANY(sb.zu))  
    364366JOIN ax_buchungsblatt bb ON bb.gml_id=sb.istbestandteilvon  
    365367LEFT JOIN ax_buchungsblattbezirk bz ON bb.land=bz.land AND bb.bezirk=bz.bezirk  
    366 LEFT JOIN ax_dienststelle d ON bz.land=d.land AND bz.stelle=d.stelle  
    367 LEFT JOIN alkis_wertearten wa ON cast(bb.blattart AS character varying)=wa.k AND wa.element='ax_buchungsblatt' AND wa.bezeichnung='blattart' 
    368 LEFT JOIN alkis_wertearten wb ON cast(sb.buchungsart AS character varying)=wb.k AND wb.element='ax_buchungsstelle' AND wb.bezeichnung='buchungsart' 
    369 LEFT JOIN alkis_wertearten wd ON cast(d.stellenart AS character varying)=wd.k AND wd.element='ax_dienststelle' AND wd.bezeichnung='stellenart' 
     368LEFT JOIN ax_dienststelle d ON bz.land=d.land AND bz.gehoertzu_stelle=d.stelle  
     369LEFT JOIN ax_blattart_buchungsblatt wa ON bb.blattart = wa.wert 
     370LEFT JOIN ax_buchungsart_buchungsstelle wb ON sb.buchungsart = wb.wert 
     371LEFT JOIN ax_behoerde wd ON d.stellenart = wd.wert 
    370372WHERE sf.istbestandteilvon = $1 AND sf.endet IS NULL AND sb.endet IS NULL AND bb.endet IS NULL AND bz.endet IS NULL AND d.endet IS NULL  
    371373ORDER BY cast(sf.laufendenummer AS integer), bz.bezeichnung, bb.buchungsblattnummermitbuchstabenerweiterung, cast(sb.laufendenummer AS integer);"; 
  • trunk/info/info/alkisn/alkisexport.php

    r405 r412  
    1212                ?gkz=mandant&tabtyp=strasse&haus=m&gmlid=DE...   Filter &haus=m/o = mit oder ohne Hausnummer 
    1313                ?gkz=mandant&tabtyp=strasse&haus=o               bei Strasse auch ohne gmlid zulÀssig - nicht verwenden wenn aus NBA unscharf geladen 
     14                ?gkz240,tabtyp=flstliste&gmlliste=DE...,DE.... 
    1415        Beispiele fÃŒr Fehler: 
    1516                ?gkz=270&tabtyp=gemarkung&gmlid=2662 
     
    2930        2017-12-20 Nur eine Adresse zur Person (Siehe Views in "views_exp_csv.sql") 
    3031        2018-05-03 Aufruf aus neuem GrundstÃŒcksnachweis: tabtyp='buchung', angepasster View "exp_csv" notwendig 
     32        2018-10-16 Neuer Aufruf-Typ aus der rÀumlichen Selektion, &tabtyp=flstliste&prefix=DENW15&gmlliste=AL...,AL.... 
    3133 
    3234        ToDo: 
     
    7375 
    7476// strikte Validierung aller Parameter 
    75 if (!isset($gmlid) or !preg_match('#^[0-9A-Za-z]{16}$#', $gmlid)) {die("Eingabefehler gmlid");} 
     77if ( isset($gmlid) ) { 
     78        if ( !preg_match('#^[0-9A-Za-z]{16}$#', $gmlid)) {die("Eingabefehler gmlid");} 
     79} else { 
     80        $gmlid=""; 
     81} 
     82 
     83// FS-Limit? x (16+1) =  
     84if ( isset($gmlliste) ) { 
     85        if (!preg_match("#^[0-9A-Za-z,]{16,2000}$#", $gmlliste)) { 
     86        //      echo "\n<p>gmlliste=".$gmlliste."</p>\n";   // NUR TEST 
     87                die("Eingabefehler gmlliste"); 
     88        } 
     89} 
     90 
    7691if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} 
    7792if (isset($gemarkung)) { 
     
    118133                $filename='alkis_'.$tabtyp.'_'.$gemarkung.'.csv'; 
    119134 
    120 /*      // $gmlid zu strasse noch notwendig solange kein Filter auf "Gemeinde" verwendet wird. 
     135/*      // $gmlid zu strasse ist noch notwendig solange kein Filter auf "Gemeinde" verwendet wird. 
    121136        } elseif ($haus == 'm' or $haus == 'o') { // Sonderfall 2 - alle mit/ohne Hausnummer, nur ÃŒber View "exp_csv_str" möglich 
    122137                if ($tabtyp != 'strasse') { 
     
    130145                } 
    131146*/ 
     147        } elseif ($gmlliste != '') { // Sonderfall 3 - FlurstÃŒcke aus rÀumlicher Selection 
     148                if ($tabtyp != 'flstliste') { 
     149                        $err = "Fehler: Falsche Kombination Parameter tabtyp='".$tabtyp."' mit Liste der GML-ID."; 
     150                        echo "\n".$err; exit ($err); 
     151                } 
     152                if (!isset($prefix) or !preg_match("#^[A-Z0-9,]{6}$#", $prefix)) { 
     153                        die("Eingabefehler prefix"); 
     154                } 
     155                $filename='alkis_gebiet.csv'; // RÀumliche Selection 
     156 
    132157        } else { 
    133158                $err="\nFehler: Kein passender Wert fuer die Suche angegeben."; 
     
    151176pg_set_client_encoding($con, 'LATIN1'); // FÃŒr Excel kein UTF8 
    152177 
    153 $viewname="exp_csv"; // Standard-View, in der DB gespeichert 
     178//$viewname="exp_csv"; // Standard-View, in der DB gespeichert 
    154179$v=array($gmlid); // Standard-Filter-Feld 
    155180 
    156181// Der Parameter "Tabellentyp" bestimmt den Namen des Filter-Feldes aus dem View "exp_csv". 
    157182switch ($tabtyp) { // zulaessige Werte fuer &tabtyp= 
     183 
    158184        case 'flurstueck': // ax_flurstueck.gml_id 
    159                 $filter = "fsgml"; 
    160                 break; 
     185                $sql="SELECT * FROM exp_csv WHERE fsgml = $1 "; 
     186                break; 
     187 
    161188        case 'grundbuch': // ax_buchungsblatt.gml_id 
    162                 $filter = "gbgml"; 
    163                 break; 
     189                $sql="SELECT * FROM exp_csv WHERE gbgml = $1 "; 
     190                break; 
     191 
    164192        case 'buchung': // ax_buchungsstelle.gml_id 
    165                 $filter = "gsgml"; 
    166                 break; 
     193                $sql="SELECT * FROM exp_csv WHERE gsgml = $1 "; 
     194                break; 
     195 
    167196        case 'person': // ax_person.gml_id 
    168                 $filter = "psgml"; 
    169                 break; 
     197                $sql="SELECT * FROM exp_csv WHERE psgml = $1 "; 
     198                break; 
     199 
    170200        case 'strasse': // ax_lagebezeichnungkatalogeintrag.gml_id = Straße-GML-ID 
    171                 $filter = "stgml"; 
    172                 $viewname="exp_csv_str"; // alternativer View mit "_str", ist in der Datenbank gespeichert   
    173                 break; 
     201                // alternativer View mit "_str", ist in der Datenbank gespeichert 
     202                $sql="SELECT * FROM exp_csv_str WHERE stgml = $1 "; 
     203                break; 
     204 
    174205        case 'gemarkung': // SONDERfall als Parameter wird "Gemarkungsnummer" und nicht "gml_id" geliefert 
    175                 $filter = "gemarkungsnummer"; 
    176                 $v=array($gemarkung); // anderes Filter-Feld, anderer Parameter 
    177                 break; 
     206                $sql="SELECT * FROM exp_csv WHERE gemarkungsnummer = $1 "; 
     207                $v=array($gemarkung); 
     208                break; 
     209 
     210        case 'flstliste': 
     211        // Ganze IN-Liste als $1 in SQL bringt kein Ergebnis. 
     212        // GML-ID aufgeteilt: 6 Byte konstant, 10 Byte variabel in Liste 
     213        //$prefix vor JEDES Element setzen oder mit Substrings suchen? 
     214        //      $sql="SELECT * FROM exp_csv WHERE fsgml IN ('".str_replace(",", "','", $gmlliste)."')"; // komplette GML-ID in Liste 
     215                $sql="SELECT * FROM exp_csv WHERE substring(fsgml from 1 for 6) = $1 " 
     216                        ." AND substring(fsgml from 7 for 10) IN ('".str_replace(",", "','", $gmlliste)."')"; 
     217                $v=array($prefix); 
     218                break; 
     219 
    178220        default: 
    179221                $err="\nFalscher Parameter '".$tabtyp."'"; 
     
    182224} 
    183225 
    184 // Daten aus gespeichertem View, zusaetzlich Filter: "feld"='wert' mitgeben 
    185 $sql="SELECT * FROM ".$viewname." WHERE ".$filter." = $1 "; 
    186  
    187226if ($haus == 'm' or $haus == 'o') { // nur FS mit/ohne verschl. Lagebez. 
    188         if ($gmlid == '') { // m/o-Filter als einziger Filter 
    189                 $sql="SELECT * FROM ".$viewname." WHERE fall='".$haus."' "; // Ersetzen 
    190                 $v=array(); // kein Filter-Feld 
    191                 // ToDo: Filter auf Gemeinde notwendig, wenn nicht auf strasse gefiltert wird. 
    192                 // - Sonst Ausgabe von Rand-FlurstÃŒcken (bei geometrischer Filterung des NBA-Verfahrens) 
    193                 // - Sonst ggf. Ausgabe Kreisgebiet 
    194         } else { // als zusÀtzlicher Filter AND 
    195                 $sql.="AND fall='".$haus."' "; // m/o-Filter AnhÀngen 
    196         } 
     227//      if ($gmlid == '') { // m/o-Filter als einziger Filter 
     228//              $sql="SELECT * FROM ".$viewname." WHERE fall='".$haus."' "; // Ersetzen 
     229//              $v=array(); // kein Filter-Feld 
     230//              // ToDo: Filter auf Gemeinde notwendig, wenn nicht auf strasse gefiltert wird. 
     231//              // - Sonst Ausgabe von Rand-FlurstÃŒcken (bei geometrischer Filterung des NBA-Verfahrens) 
     232//              // - Sonst ggf. Ausgabe Kreisgebiet 
     233//      } else { // als zusÀtzlicher Filter AND 
     234                $sql.=" AND fall='".$haus."' "; // m/o-Filter AnhÀngen 
     235//      } 
    197236} 
    198237 
     
    311350pg_free_result($res); 
    312351if ($i == 1) { // nur Kopf 
    313         $err="\nKein Treffer fuer gml_id='".$gmlid."'"; 
     352        if ( $gmlid == '' ) { 
     353                $err="\nKein Treffer"; 
     354        //      echo "\n".$sql."\n".$v[0]."\n".$dbconn."\n"; 
     355        } else { 
     356                $err="\nKein Treffer fuer gml_id='".$gmlid."'"; 
     357        } 
    314358        exit ($err); 
    315359} 
  • trunk/info/info/alkisn/alkisfkt.php

    r405 r412  
    1616        2018-04-23 Berechtigte Buchungen im FS-Nachw. verbessern. Neue Spalte statt Überschriften fÃŒr "EigentÃŒmer" und "Berechtigte Buchungen". 
    1717        2018-05-03 GrundstÃŒcksnachweis 
    18 ++ ToDo: Parameter $lnkclass in eigentuemer() und $jfenster in buchung_anzg() vereinheitlichen 
     18        2018-11-09 Umstellung Full-Schema 
     19 
     20        ++ ToDo: Parameter $lnkclass in eigentuemer() und $jfenster in buchung_anzg() vereinheitlichen 
    1921*/ 
    2022 
     
    9395 
    9496        $sqlbs="SELECT sh.gml_id AS hgml, sh.buchungsart, sh.laufendenummer as lfd, sh.zaehler, sh.nenner, sh.nummerimaufteilungsplan as nrpl, sh.beschreibungdessondereigentums as sond, " // Buchungs-Stelle herrschend 
    95         ."b.gml_id AS g_gml, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung as blatt, b.blattart, z.bezeichnung, a.v AS bart, a.d AS barttitle, w.v AS blattartv " 
     97        ."b.gml_id AS g_gml, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung as blatt, b.blattart, z.bezeichnung, a.beschreibung AS bart, a.dokumentation AS barttitle, w.beschreibung AS blattartv " 
    9698        ."FROM ax_buchungsstelle sh " 
    9799        ."JOIN ax_buchungsblatt b ON b.gml_id=sh.istbestandteilvon " 
    98100        ."LEFT JOIN ax_buchungsblattbezirk z ON z.land=b.land AND z.bezirk=b.bezirk " 
    99         ."LEFT JOIN alkis_wertearten a ON sh.buchungsart=cast(a.k AS integer) AND a.element='ax_buchungsstelle' and a.bezeichnung='buchungsart' " // entschl. Buchungsart 
    100         ."LEFT JOIN alkis_wertearten w ON b.blattart=w.k AND w.element='ax_buchungsblatt' and w.bezeichnung='blattart' " // entschl. Blatt-Art 
     101        ."LEFT JOIN ax_buchungsart_buchungsstelle a ON sh.buchungsart = a.wert " // entschl. Buchungsart 
     102        ."LEFT JOIN ax_blattart_buchungsblatt w ON b.blattart = w.wert " // entschl. Blatt-Art 
    101103        ."WHERE sh.gml_id= $1 AND sh.endet IS NULL AND b.endet IS NULL AND z.endet IS NULL;"; 
    102104 
     
    321323                $v=array($gml_bs); 
    322324        } else { 
    323                 $sql.="AND f.kreis = $2 AND f.gemeinde = $3 "; // ZustÀndiges Gebiet 
     325                $sql.="AND f.gemeindezugehoerigkeit_kreis = $2 AND f.gemeindezugehoerigkeit_gemeinde = $3 "; // ZustÀndiges Gebiet 
    324326                $v=array($gml_bs, $filtkreis, $filtgem); 
    325327        } 
     
    415417        } 
    416418 
    417         $sqln="SELECT n.gml_id, n.laufendenummernachdin1421 AS lfd, n.zaehler, n.nenner, n.artderrechtsgemeinschaft AS adr, n.beschriebderrechtsgemeinschaft as beschr, n.eigentuemerart, n.anlass, n.benennt, wn.v AS adrv, we.v AS eiartv " 
     419        $sqln="SELECT n.gml_id, n.laufendenummernachdin1421 AS lfd, n.zaehler, n.nenner, n.artderrechtsgemeinschaft AS adr, n.beschriebderrechtsgemeinschaft as beschr, n.eigentuemerart, n.anlass, n.benennt, wn.beschreibung AS adrv, we.beschreibung AS eiartv " 
    418420        ."FROM ax_namensnummer n " 
    419         ."LEFT JOIN alkis_wertearten wn ON cast(n.artderrechtsgemeinschaft AS character varying)=wn.k AND wn.element='ax_namensnummer' AND wn.bezeichnung='artderrechtsgemeinschaft' " 
    420         ."LEFT JOIN alkis_wertearten we ON cast(n.eigentuemerart AS character varying)=we.k AND we.element='ax_namensnummer' AND we.bezeichnung='eigentuemerart' " 
     421        ."LEFT JOIN ax_artderrechtsgemeinschaft_namensnummer wn ON n.artderrechtsgemeinschaft = wn.wert " 
     422        ."LEFT JOIN ax_eigentuemerart_namensnummer we ON n.eigentuemerart = we.wert " 
    421423        ."WHERE n.istbestandteilvon= $1 AND n.endet IS NULL ORDER BY n.laufendenummernachdin1421;"; 
    422424        // +++  LEFT JOIN bis ax_Person statt Person als Schleife zu holen,  
     
    579581 
    580582function werteliste ($element, $bezeichnung ,$sqlin) { 
    581         // Eine oder mehrere EntschlÃŒsselungen aus "alkis_wertearten" in eine Zeile ausgeben. 
     583        // Eine oder mehrere EntschlÃŒsselungen in eine Zeile ausgeben. 
    582584        // Dient dazu, SchlÃŒssel-ARRAYs auflösen ohne die Zeile mehrfach aufzulisten (JOIN) 
    583585        // Anwendung: FS-Nachweis BodenschÀtzung "Klimastufe + WasserverhÀltnisse" 
     586        // 2018-11-09: Umstellung von "alkis_wertearten" auf individuelle Tabellen 
     587 
    584588        global $debug; 
    585         $sql="SELECT k, v FROM alkis_wertearten WHERE element = $1 AND bezeichnung = $2 AND k IN (".$sqlin.") ORDER BY k;"; 
    586         $v = array($element, $bezeichnung); 
     589        if ($element == 'ax_bodenschaetzung' AND $bezeichnung = 'entstehungsartoderklimastufewasserverhaeltnisse' ) { 
     590                $tabelle = 'ax_entstehungsartoderklimastufewasserverhaeltnisse_bodensc'; 
     591        } elseif ($element == 'ax_bodenschaetzung' AND $bezeichnung = 'sonstigeangaben' ) { 
     592                $tabelle = 'ax_sonstigeangaben_bodenschaetzung'; 
     593        } 
     594        $sql="SELECT wert, beschreibung FROM ".$tabelle." WHERE wert IN (".$sqlin.") ORDER BY wert LIMIT $1 ;"; 
     595        $v = array(100); 
    587596        $res = pg_prepare("", $sql); 
    588597        $res = pg_execute("", $v); 
    589598        if (!$res) { 
    590                 echo "\n<p class='err'>Fehler bei Werteliste aus alkis_wertearten.</p>"; 
     599                echo "\n<p class='err'>Fehler bei Werteliste.</p>"; 
    591600                if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = '".$sqlin."'</p>";} 
    592601                return; 
     
    594603        $i=0; 
    595604        while($row = pg_fetch_assoc($res)) { 
    596                 echo " ".$row["v"]; 
     605                echo " ".$row["beschreibung"]; 
    597606                $i++;    
    598607        } 
    599608        pg_free_result($res); 
    600         if ($i == 0 ) {echo "(kein Treffer)";} 
     609        if ($i == 0) {echo "(kein Treffer)";} 
    601610        return; 
    602611} 
  • trunk/info/info/alkisn/alkisfshist.php

    r402 r412  
    1212        2018-03-16 NULL-Werte in gemeinde und kreis in ax_historischesflurstueck berÃŒcksichtigen 
    1313        2018-04-23 &nodebug 
     14        2018-11-09 Umstellung Full-Schema 
    1415*/ 
    1516 
     
    172173                $whereo=''; 
    173174        } else { // ZusÀtze zur WHERE-Clausel 
    174                 $wheref=" AND f.kreis = '".$filtkreis."' AND f.gemeinde = '".$filtgem."' "; 
     175                $wheref=" AND f.gemeindezugehoerigkeit_kreis = '".$filtkreis."' AND f.gemeindezugehoerigkeit_gemeinde = '".$filtgem."' "; 
    175176                $whereh=" AND (h.kreis IS NULL OR h.kreis = '".$filtkreis."' ) AND (h.gemeinde IS NULL OR h.gemeinde = '".$filtgem."') "; 
    176177                $whereo=" AND (o.gemeinde IS NULL OR o.gemeinde = '".$filtgem."') "; 
  • trunk/info/info/alkisn/alkisfsnw.php

    r405 r412  
    2121        2018-04-23 Umfangreiche Überarbeitung der "Buchungsstellen" 
    2222        2018-05-03 Anpassung fÃŒr GrundstÃŒcksnachweis 
     23        2018-11-09 Umstellung Full-Schema 
    2324 
    2425++ToDo: 
     
    128129 
    129130// F L U R S T U E C K  m. Gebiet 
    130 $sql ="SELECT f.name, f.flurnummer, f.zaehler, f.nenner, f.regierungsbezirk, f.kreis, f.gemeinde, f.amtlicheflaeche, st_area(f.wkb_geometry) AS fsgeomflae,  
     131$sql ="SELECT f.zeigtaufexternes_name, f.flurnummer, f.zaehler, f.nenner, f.gemeindezugehoerigkeit_regierungsbezirk, f.gemeindezugehoerigkeit_kreis, f.gemeindezugehoerigkeit_gemeinde, f.amtlicheflaeche, st_area(f.wkb_geometry) AS fsgeomflae,  
    131132to_char(cast(f.zeitpunktderentstehung AS date),'DD.MM.YYYY') AS zeitpunktderentstehung, f.istgebucht, g.gemarkungsnummer, g.bezeichnung,  
    132133r.bezeichnung AS rbez, k.bezeichnung AS kbez, m.bezeichnung AS mbez  
    133134FROM ax_flurstueck f  
    134 LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer  
    135 LEFT JOIN ax_regierungsbezirk r ON f.regierungsbezirk=r.regierungsbezirk  
    136 LEFT JOIN ax_kreisregion k ON f.regierungsbezirk=k.regierungsbezirk AND f.kreis=k.kreis  
    137 LEFT JOIN ax_gemeinde m ON m.regierungsbezirk=f.regierungsbezirk AND m.kreis=f.kreis AND m.gemeinde=f.gemeinde 
     135LEFT JOIN ax_gemarkung g ON f.gemeindezugehoerigkeit_land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer  
     136LEFT JOIN ax_regierungsbezirk r ON f.gemeindezugehoerigkeit_regierungsbezirk=r.regierungsbezirk  
     137LEFT JOIN ax_kreisregion k ON f.gemeindezugehoerigkeit_regierungsbezirk=k.regierungsbezirk AND f.gemeindezugehoerigkeit_kreis=k.kreis  
     138LEFT JOIN ax_gemeinde m ON m.regierungsbezirk=f.gemeindezugehoerigkeit_regierungsbezirk AND m.kreis=f.gemeindezugehoerigkeit_kreis AND m.gemeinde=f.gemeindezugehoerigkeit_gemeinde 
    138139WHERE f.gml_id= $1 AND f.endet IS NULL AND g.endet IS NULL AND m.endet IS NULL AND k.endet IS NULL AND r.endet IS NULL;"; 
     140 
    139141$v = array($gmlid); // mit gml_id suchen 
    140142$res = pg_prepare("", $sql); 
     
    147149        $gemkname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); 
    148150        $gmkgnr=$row["gemarkungsnummer"]; 
    149         $bezirk=$row["regierungsbezirk"]; 
     151        $bezirk=$row["gemeindezugehoerigkeit_regierungsbezirk"]; 
    150152        $rbez=htmlentities($row["rbez"], ENT_QUOTES, "UTF-8"); 
    151         $kreis=$row["kreis"]; 
     153        $kreis=$row["gemeindezugehoerigkeit_kreis"]; 
    152154        $kbez=htmlentities($row["kbez"], ENT_QUOTES, "UTF-8"); 
    153         $gemeinde=$row["gemeinde"]; 
     155        $gemeinde=$row["gemeindezugehoerigkeit_gemeinde"]; 
    154156        $mbez=htmlentities($row["mbez"], ENT_QUOTES, "UTF-8"); 
    155157        $flurnummer=$row["flurnummer"]; 
     
    165167        $entsteh=$row["zeitpunktderentstehung"]; 
    166168        $gml_buchungsstelle=$row["istgebucht"]; // wird erst im GB-Teil benötigt 
    167         $name=$row["name"]; // Fortfuehrungsnummer(n) 
    168         $arrn = explode(",", trim($name, "{}") ); // PHP-Array 
     169        $ffnr=$row["zeigtaufexternes_name"]; // Fortfuehrungsnummer(n) 
     170        $arrn=explode(",", trim($ffnr, "{}") ); // PHP-Array 
    169171} else { 
    170172        echo "\n<p class='err'>Fehler! Kein Treffer f&uuml;r Flurst&uuml;ck mit gml_id=".$gmlid."</p>"; 
     
    462464 
    463465// BodenschÀtzungs-Abschnitte mit FlurstÃŒcken verschneiden, Spalten entschlÃŒsseln 
    464 $sql="SELECT kulturart.k AS kulturartk, kulturart.v AS kulturartv, 
    465  bodenart.k  AS bodenartk,  bodenart.v  AS bodenartv, 
    466  zustbod.v AS zustbodv, 
     466$sql="SELECT b.kulturart AS kulturartk, kulturart.beschreibung AS kulturartv, 
     467 b.bodenart AS bodenartk, bodenart.beschreibung AS bodenartv, zustbod.beschreibung AS zustbodv, 
    467468 b.entstehungsartoderklimastufewasserverhaeltnisse AS entsteh, b.sonstigeangaben, 
    468469 b.bodenzahlodergruenlandgrundzahl as bodenzahl, b.ackerzahlodergruenlandzahl AS ackerzahl, 
     
    470471FROM ax_flurstueck f 
    471472JOIN ax_bodenschaetzung b ON st_intersects(b.wkb_geometry, f.wkb_geometry) AND st_area(st_intersection(b.wkb_geometry, f.wkb_geometry)) > 0.05 
    472 LEFT JOIN alkis_wertearten AS bodenart  ON cast(b.bodenart  AS character varying) = bodenart.k  AND bodenart.element='ax_bodenschaetzung'  AND bodenart.bezeichnung='bodenart' 
    473 LEFT JOIN alkis_wertearten AS kulturart ON cast(b.kulturart AS character varying) = kulturart.k AND kulturart.element='ax_bodenschaetzung' AND kulturart.bezeichnung='kulturart' 
    474 LEFT JOIN alkis_wertearten AS zustbod   ON cast(b.zustandsstufeoderbodenstufe AS character varying) = zustbod.k AND zustbod.element='ax_bodenschaetzung' AND zustbod.bezeichnung='zustandsstufeoderbodenstufe' 
     473LEFT JOIN ax_bodenart_bodenschaetzung bodenart ON b.bodenart = bodenart.wert 
     474LEFT JOIN ax_kulturart_bodenschaetzung kulturart ON b.kulturart = kulturart.wert 
     475LEFT JOIN ax_zustandsstufeoderbodenstufe_bodenschaetzung zustbod ON b.zustandsstufeoderbodenstufe = zustbod.wert 
    475476WHERE f.gml_id = $1 AND f.endet IS NULL AND b.endet IS NULL ORDER BY schnittflae DESC"; 
    476477 
     
    558559 
    559560// H i n w e i s  auf Bodenneuordnung oder eine strittige Grenze 
    560 $sql_boden ="SELECT a.k AS wert, a.v AS art_verf, b.gml_id AS verf_gml, b.bezeichnung AS verf_bez,  
     561$sql_boden ="SELECT b.artderfestlegung AS wert, a.beschreibung AS art_verf, b.gml_id AS verf_gml, b.bezeichnung AS verf_bez,  
    561562b.name AS verf_name, d.bezeichnung AS stelle_bez, d.stelle AS stelle_key  
    562563FROM ax_bauraumoderbodenordnungsrecht b  
    563 LEFT JOIN alkis_wertearten a ON cast(b.artderfestlegung AS character varying)=a.k AND a.element='ax_bauraumoderbodenordnungsrecht' AND a.bezeichnung='artderfestlegung' 
     564LEFT JOIN ax_artderfestlegung_bauraumoderbodenordnungsrecht a ON b.artderfestlegung = a.wert 
    564565LEFT JOIN ax_dienststelle d ON b.stelle=d.stelle  
    565566WHERE b.endet IS NULL AND d.endet IS NULL   
  • trunk/info/info/alkisn/alkisgebaeudenw.php

    r402 r412  
    1010        2017-06-19 Tool-Tip GebÀudefunktion 
    1111        2018-04-23 Kennzeichen eingerÃŒckt, &nodebug 
     12        2018-11-09 Umstellung Full-Schema 
    1213*/ 
    1314session_start(); 
     
    106107 
    107108// G e b a e u d e 
    108 $sqlg ="SELECT g.gml_id, g.name, g.bauweise, g.gebaeudefunktion, h.v AS bauweise_beschreibung, u.v AS bezeichner, u.d AS gfktd, g.zustand, z.v AS bzustand,  
     109$sqlg ="SELECT g.gml_id, g.name, g.bauweise, g.gebaeudefunktion, h.beschreibung AS bauweise_beschreibung, u.beschreibung AS bezeichner, u.dokumentation AS gfktd, g.zustand, z.beschreibung AS bzustand,  
    109110round(st_area(g.wkb_geometry)::numeric,2) AS gebflae, "; // GEB-Flaeche komplett auch die Fl. ausserhalb des FS 
    110111$sqlg.="round(st_area(ST_Intersection(g.wkb_geometry,f.wkb_geometry))::numeric,2) AS schnittflae, "; // wie viel vom GEB liegt im FS? 
    111112$sqlg.="st_within(g.wkb_geometry,f.wkb_geometry) as drin "; // liegt das GEB komplett im FS? 
    112113$sqlg.="FROM ax_flurstueck f, ax_gebaeude g  
    113 LEFT JOIN alkis_wertearten h ON cast(g.bauweise AS character varying) = h.k AND h.element='ax_gebaeude' and h.bezeichnung='bauweise' 
    114 LEFT JOIN alkis_wertearten u ON cast(g.gebaeudefunktion AS character varying) = u.k AND u.element='ax_gebaeude' and u.bezeichnung='gebaeudefunktion' 
    115 LEFT JOIN alkis_wertearten z ON cast(g.zustand AS character varying) = z.k AND z.element='ax_gebaeude' and z.bezeichnung='zustand' 
     114JOIN ax_bauweise_gebaeude h ON g.bauweise = h.wert 
     115LEFT JOIN ax_gebaeudefunktion u ON g.gebaeudefunktion = u.wert 
     116LEFT JOIN ax_zustand_gebaeude z ON g.zustand = z.wert 
    116117WHERE f.gml_id= $1 AND f.endet IS NULL and g.endet IS NULL "; // ID des akt. FS 
    117118 
  • trunk/info/info/alkisn/alkisgsnw.php

    r405 r412  
    77        Version: 
    88        2018-05-03 Neues Modul "gsnw" abgeleitet aus "fsnw" 
     9        2018-11-09 Umstellung Full-Schema 
    910*/ 
    1011 
     
    184185                $v=array($gmlid); 
    185186        } else { 
    186                 $sqlfs.="AND f.kreis = $2 AND f.gemeinde = $3 "; // ZustÀndiges Gebiet 
     187                $sqlfs.="AND f.gemeindezugehoerigkeit_kreis = $2 AND f.gemeindezugehoerigkeit_gemeinde = $3 "; // ZustÀndiges Gebiet 
    187188                $v=array($gmlid, $filtkreis, $filtgem); 
    188189        } 
  • trunk/info/info/alkisn/alkishaus.php

    r402 r412  
    1111        2017-10-09 Sauber filtern auf endet IS NULL 
    1212        2018-04-23 &nodebug 
     13        2018-11-09 Umstellung Full-Schema 
    1314 
    1415        ToDo: 
     
    5960 
    6061// G e b a e u d e 
    61  
     62// ... g.qualitaetsangaben,  
    6263$sqlg ="SELECT g.gml_id, g.name, g.bauweise, g.gebaeudefunktion, g.anzahlderoberirdischengeschosse AS aog, g.anzahlderunterirdischengeschosse AS aug,  
    63 g.lagezurerdoberflaeche, g.dachgeschossausbau, g.zustand, array_to_string(g.weiteregebaeudefunktion, ',') AS wgf, g.dachform, g.hochhaus, g.objekthoehe, g.geschossflaeche, g.grundflaeche, g.umbauterraum, g.baujahr, g.dachart, g.qualitaetsangaben,  
    64 h.v AS bbauw, h.d AS dbauw, u.v AS bfunk, u.d AS dfunk, z.v AS zustandv, z.d AS zustandd, d.v AS bdach, a.v AS dgaus, o.v AS oflv, o.d AS ofld, 
     64g.lagezurerdoberflaeche, g.dachgeschossausbau, g.zustand, array_to_string(g.weiteregebaeudefunktion, ',') AS wgf, g.dachform, g.hochhaus, g.objekthoehe,  
     65g.geschossflaeche, g.grundflaeche, g.umbauterraum, g.baujahr, g.dachart,  
     66h.beschreibung AS bbauw, h.dokumentation AS dbauw, u.beschreibung AS bfunk, u.dokumentation AS dfunk, z.beschreibung AS zustandv, z.dokumentation AS zustandd, d.beschreibung AS bdach,  
     67a.beschreibung AS dgaus, o.beschreibung AS oflv, o.dokumentation AS ofld, 
    6568round(st_area(g.wkb_geometry)::numeric,2) AS gebflae 
    6669FROM ax_gebaeude g  
    67 LEFT JOIN alkis_wertearten h ON cast(g.bauweise AS character varying)=h.k AND h.element='ax_gebaeude' AND h.bezeichnung='bauweise' 
    68 LEFT JOIN alkis_wertearten u ON cast(g.gebaeudefunktion AS character varying)=u.k AND u.element='ax_gebaeude' AND u.bezeichnung='gebaeudefunktion' 
    69 LEFT JOIN alkis_wertearten z ON cast(g.zustand AS character varying)=z.k AND z.element='ax_gebaeude' AND z.bezeichnung='zustand' 
    70 LEFT JOIN alkis_wertearten d ON cast(g.dachform AS character varying)=d.k AND d.element='ax_gebaeude' AND d.bezeichnung='dachform' 
    71 LEFT JOIN alkis_wertearten a ON cast(g.dachgeschossausbau AS character varying)=a.k AND a.element='ax_gebaeude' AND a.bezeichnung='dachgeschossausbau' 
    72 LEFT JOIN alkis_wertearten o ON cast(g.lagezurerdoberflaeche AS character varying)=o.k AND o.element='ax_gebaeude' AND o.bezeichnung='lagezurerdoberflaeche' 
     70LEFT JOIN ax_bauweise_gebaeude h ON g.bauweise = h.wert 
     71LEFT JOIN ax_gebaeudefunktion u ON g.gebaeudefunktion = u.wert 
     72LEFT JOIN ax_zustand_gebaeude z ON g.zustand = z.wert 
     73LEFT JOIN ax_dachform d ON g.dachform = d.wert 
     74LEFT JOIN ax_dachgeschossausbau_gebaeude a ON g.dachgeschossausbau = a.wert 
     75LEFT JOIN ax_lagezurerdoberflaeche_gebaeude o ON g.lagezurerdoberflaeche = o.wert 
    7376WHERE g.gml_id= $1 AND g.endet IS NULL;"; 
    7477 
     
    149152        $bja=$rowg["baujahr"]; 
    150153        $daa=$rowg["dachart"]; 
    151         $qag=$rowg["qualitaetsangaben"]; 
     154//      $qag=$rowg["qualitaetsangaben"]; 
    152155 
    153156        if (($nam != "") OR $allefelder) { 
     
    287290        } 
    288291 
    289         // Dachgeschossausbau 
    290         // nichts dazu in alkis_wertearten.d 
     292        // Dachgeschossausbau, Spalte dokumentation ist immer leer 
    291293        if ($dga != "" OR $allefelder) { 
    292294                echo "\n<tr>" 
     
    316318 
    317319        // Weitere GebÀudefunktionen 
    318         // Suche Testfall: SELECT * FROM ax_gebaeude WHERE NOT weiteregebaeudefunktion IS NULL; 
    319         // Keiner zu finden. Das folgende ungetestet: 
    320         if ($wgf != "" OR $allefelder) { // "weiteregebaeudefunktion" ist ein Array 
     320        // Suche Testfall: SELECT gml_id, gebaeudefunktion, weiteregebaeudefunktion FROM ax_gebaeude WHERE (NOT weiteregebaeudefunktion IS NULL) AND cardinality(weiteregebaeudefunktion) > 1 liMIT 10; 
     321        if ($wgf != "" OR $allefelder) { // ... ist ein Array 
    321322                echo "\n<tr>" 
    322323                        ."\n\t<td class='li'>Weitere Geb&auml;udefunktionen</td>" 
    323324                        ."\n\t<td>"; 
    324325                        if ($wgf != "") { // Kommagetrennte Liste aus Array 
    325                                 $sqlw="SELECT k, v, d FROM alkis_wertearten WHERE k IN ( $1 ) AND element='ax_gebaeude' AND bezeichnung='weiteregebaeudefunktion' ORDER BY k;"; 
     326                                $sqlw="SELECT wert, beschreibung, dokumentation FROM ax_gebaeudefunktion WHERE wert IN ( $1 ) ORDER BY wert;"; 
    326327                                $v = array($wgf); 
    327328                                $resw = pg_prepare("", $sqlw); 
     
    332333                                } 
    333334                                $zw=0; 
    334                                 while($roww = pg_fetch_assoc($resw)) { // LOOP: w.Funktion 
     335                                while($roww = pg_fetch_assoc($resw)) { // LOOP Funktion 
    335336                                        if ($zw > 0) {echo "<br>";} 
    336                                         if ($showkey) {echo "<span class='key'>".$roww["k"]."</span>&nbsp;";} 
    337                                         echo "<span title='".$roww["d"]."'>".$roww["v"]."</span>"; 
     337                                        if ($showkey) {echo "<span class='key'>".$roww["wert"]."</span>&nbsp;";} 
     338                                        echo "<span title='".$roww["dokumentation"]."'>".$roww["beschreibung"]."</span>"; 
    338339                                        $zw++; 
    339340                           } 
     
    346347        } 
    347348 
    348         // Dachform 
    349         // nichts dazu in alkis_wertearten.d 
     349        // Dachform, Spalte dokumentation ist immer leer 
    350350        if ($daf != "" OR $allefelder) { 
    351351                echo "\n<tr>" 
     
    430430 
    431431        // QualitÀtsangaben 
    432         if ($qag != "" OR $allefelder) { 
     432/*      if ($qag != "" OR $allefelder) { 
    433433                echo "\n<tr>" 
    434434                        ."\n\t<td class='li'>Qualit&auml;tsangaben</td>" 
     
    438438                        ."\n\t</td>" 
    439439                ."\n</tr>"; 
    440         } 
     440        } */ 
    441441        echo "\n</table>"; 
    442442} 
    443443if ($gebnr == 0) {echo "\n<p class='err'><br>Kein Geb&auml;ude gefunden<br>&nbsp;</p>";} 
    444444 
    445 // ++ ToDo: Verschnitt mit FS? 
    446  
     445// ++ ToDo:  -Verschnitt mit FS?  -Ausgeben ax_georeferenziertegebaeudeadresse dazz, wenn gefÃŒllt. 
    447446?> 
    448447 
  • trunk/info/info/alkisn/alkisinlayausk.php

    r405 r412  
    1919        2018-04-24 Feinschliff 
    2020        2018-05-03 neuer GrundstÃŒcksnachweis 
     21        2018-11-09 Umstellung Full-Schema 
    2122*/ 
    2223session_start(); 
     
    5354 
    5455// *** F L U R S T U E C K *** 
    55 $sql ="SELECT f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche, g.gemarkungsnummer, g.bezeichnung, f.regierungsbezirk, f.kreis, f.gemeinde, f.istgebucht 
     56$sql ="SELECT f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche, g.gemarkungsnummer, g.bezeichnung, f.gemeindezugehoerigkeit_regierungsbezirk, f.gemeindezugehoerigkeit_kreis, f.gemeindezugehoerigkeit_gemeinde, f.istgebucht 
    5657FROM ax_flurstueck f LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer  
    5758WHERE f.gml_id= $1 AND f.endet IS NULL AND g.endet IS NULL;"; 
     59 
    5860$v = array($gmlid); 
    5961$res = pg_prepare("", $sql); 
     
    7375        $flae=$row["amtlicheflaeche"]; 
    7476        $flae=number_format($flae,0,",",".") . " m&#178;"; 
    75         $fsreg=$row["regierungsbezirk"]; // Filter ZustÀndigkeit 
    76         $fskrs=$row["kreis"]; 
    77         $fsgem=$row["gemeinde"]; 
     77        $fsreg=$row["gemeindezugehoerigkeit_regierungsbezirk"]; // Filter ZustÀndigkeit 
     78        $fskrs=$row["gemeindezugehoerigkeit_kreis"]; 
     79        $fsgem=$row["gemeindezugehoerigkeit_gemeinde"]; 
    7880        $gml_buchungsstelle=$row["istgebucht"]; 
    7981} else { 
  • trunk/info/info/alkisn/alkisinlaybaurecht.php

    r402 r412  
    99        2017-06-08 Validierung Eingabeparameter, Feinkorrekturen 
    1010        2017-10-09 Sauber filtern auf endet IS NULL 
     11        2018-11-09 Umstellung Full-Schema 
    1112*/ 
    1213session_start(); 
     
    4243$sql ="SELECT r.ogc_fid, r.name, r.stelle, r.bezeichnung AS rechtbez, a.v AS adfbez, d.bezeichnung AS stellbez, round(st_area(r.wkb_geometry)::numeric,0) AS flae  
    4344FROM ax_bauraumoderbodenordnungsrecht r  
    44 LEFT JOIN alkis_wertearten a ON cast(r.artderfestlegung AS character varying)=a.k AND a.element='ax_bauraumoderbodenordnungsrecht' AND a.bezeichnung='artderfestlegung' 
     45LEFT JOIN ax_artderfestlegung_bauraumoderbodenordnungsrecht a ON r.artderfestlegung = a.wert 
    4546LEFT JOIN ax_dienststelle d ON r.land=d.land AND r.stelle=d.stelle  
    4647WHERE r.gml_id= $1 AND r.endet IS NULL AND d.endet IS NULL;"; 
  • trunk/info/info/alkisn/alkislage.php

    r402 r412  
    1212        2017-10-09 Sauber filtern auf endet IS NULL 
    1313        2018-04-23 &nodebug 
     14        2018-11-09 Umstellung Full-Schema 
    1415 
    1516        ToDo: 
     
    382383 
    383384        $sql ="SELECT g.gml_id, g.gebaeudefunktion, array_to_string(g.name, ',') AS name, g.bauweise, g.grundflaeche, g.zustand, round(st_area(g.wkb_geometry)::numeric,2) AS flaeche, 
    384         h.v AS hv, h.d AS hd, u.v AS uv, u.d AS ud, z.v AS zv, z.d AS zd FROM ax_gebaeude g  
    385         LEFT JOIN alkis_wertearten h ON cast(g.bauweise AS character varying)=h.k AND h.element='ax_gebaeude' AND h.bezeichnung='bauweise' 
    386         LEFT JOIN alkis_wertearten u ON cast(g.gebaeudefunktion AS character varying)=u.k AND u.element='ax_gebaeude' AND u.bezeichnung='gebaeudefunktion' 
    387         LEFT JOIN alkis_wertearten z ON cast(g.zustand AS character varying)=z.k AND z.element='ax_gebaeude' AND z.bezeichnung='zustand' 
     385        h.beschreibung AS hv, h.dokumentation AS hd, u.beschreibung AS uv, u.dokumentation AS ud, z.beschreibung AS zv, z.dokumentation AS zd FROM ax_gebaeude g  
     386        LEFT JOIN ax_bauweise_gebaeude h ON g.bauweise = h.wert 
     387        LEFT JOIN ax_gebaeudefunktion u ON g.gebaeudefunktion = u.wert 
     388        LEFT JOIN ax_zustand_gebaeude z ON g.zustand = z.wert 
    388389        WHERE $1 = ".$bezart." AND g.endet IS NULL;"; 
    389390        // Keine Sortierung (ORDER BY) notwendig weil i.d.R. nur ein (Haupt-)GebÀude diese Hausnummer hat. 
    390         // FÃŒr weiter "alkis_wertearten" (EnstschlÃŒsselungen) zum GebÀude dem Link "Haus" folgen. 
     391        // FÃŒr weiter Eigenschaften dem Link "Haus" folgen. 
    391392 
    392393        $v = array($gmlid); 
  • trunk/info/info/alkisn/alkisnamstruk.php

    r402 r412  
    1313        2017-12-20 Anlass und Datum zur Adresse ausgeben, wenn es mehrere gibt oder SchlÃŒssel angefordert werden 
    1414        2018-04-23 &nodebug 
     15        2018-11-09 Umstellung Full-Schema 
    1516*/ 
    1617session_start(); 
     
    5758if (!$con) "\n<p class='err'>Fehler beim Verbinden der DB</p>"; 
    5859 
    59 $sql="SELECT p.nachnameoderfirma, p.anrede, p.vorname, p.geburtsname, to_char(cast(p.geburtsdatum AS date),'DD.MM.YYYY') AS geburtsdatum, p.namensbestandteil, p.akademischergrad, a.v AS anrv 
    60 FROM ax_person p LEFT JOIN alkis_wertearten a ON cast(p.anrede AS character varying)=a.k AND a.element='ax_person' AND a.bezeichnung='anrede'  
    61 WHERE gml_id= $1 AND p.endet IS NULL;"; 
     60$sql="SELECT p.nachnameoderfirma, p.anrede, p.vorname, p.geburtsname, to_char(cast(p.geburtsdatum AS date),'DD.MM.YYYY') AS geburtsdatum,  
     61p.namensbestandteil, p.akademischergrad, a.beschreibung AS anrv 
     62FROM ax_person p LEFT JOIN ax_anrede_person a ON p.anrede = a.wert WHERE gml_id= $1 AND p.endet IS NULL;"; 
    6263 
    6364$v = array($gmlid); 
     
    9495        echo "\n\n<h3><img src='ico/Strasse_mit_Haus.png' width='16' height='16' alt=''> Adresse".$plural."</h3>"; 
    9596        // Es können redundante Adressen vorhanden sein, z.B. aus Migration, temporÀr aus LBESAS. 
    96         // Im Normalfall nur die "letzte" davon anzeigen. Auf Wunsch alle anzigen, dazu den Anlass und das Datum. 
    97  
    98         $sqla ="SELECT a.gml_id, w.v AS anltxt, a.anlass, to_char(cast(a.beginnt AS date),'DD.MM.YYYY') AS datum, a.ort_post, a.postleitzahlpostzustellung AS plz, a.strasse, a.hausnummer, a.bestimmungsland " 
     97        // Im Normalfall nur die "letzte" davon anzeigen. Auf Wunsch alle anzeigen, dazu den Anlass und das Datum um das zu bewerten. 
     98        $sqla ="SELECT a.gml_id, w.value AS anltxt, a.anlass, to_char(cast(a.beginnt AS date),'DD.MM.YYYY') AS datum, a.ort_post, a.postleitzahlpostzustellung AS plz, a.strasse, a.hausnummer, a.bestimmungsland " 
    9999        ."FROM ax_anschrift a JOIN ax_person p ON a.gml_id=ANY(p.hat) " 
    100         ."LEFT JOIN alkis_wertearten w ON w.k = ANY(a.anlass) AND element='ax_benutzergruppemitzugriffskontrolle' AND w.bezeichnung='zugriffsartfortfuehrungsanlass' " 
     100        ."LEFT JOIN aa_anlassart w ON w.id = ANY(a.anlass) " 
    101101        ."WHERE p.gml_id= $1 AND a.endet IS NULL AND p.endet IS NULL ORDER BY a.beginnt DESC ;"; 
    102102 
     
    168168        //                               >bestehtAusRechtsverhaeltnissenZu> namensnummer   (Nebenzweig/SonderfÀlle?) 
    169169 
    170         $sqlg ="SELECT n.gml_id AS gml_n, n.laufendenummernachdin1421 AS lfd, n.zaehler, n.nenner, g.gml_id AS gml_g, g.bezirk, g.buchungsblattnummermitbuchstabenerweiterung as nr, g.blattart, wb.v AS blattartv, b.bezeichnung AS beznam " 
     170        $sqlg ="SELECT n.gml_id AS gml_n, n.laufendenummernachdin1421 AS lfd, n.zaehler, n.nenner, g.gml_id AS gml_g, g.bezirk, g.buchungsblattnummermitbuchstabenerweiterung as nr, g.blattart, wb.beschreibung AS blattartv, b.bezeichnung AS beznam " 
    171171        ."FROM ax_person p JOIN ax_namensnummer n ON p.gml_id=n.benennt " 
    172172        ."JOIN ax_buchungsblatt g ON g.gml_id=n.istbestandteilvon " 
    173173        ."LEFT JOIN ax_buchungsblattbezirk b ON g.land=b.land AND g.bezirk=b.bezirk " 
    174         ."LEFT JOIN alkis_wertearten wb ON cast(g.blattart AS character varying)=wb.k AND wb.element='ax_buchungsblatt' AND wb.bezeichnung='blattart' " 
     174        ."LEFT JOIN ax_blattart_buchungsblatt wb ON g.blattart = wb.wert " 
    175175        ."WHERE p.gml_id= $1 AND p.endet IS NULL AND n.endet IS NULL AND b.endet IS NULL " 
    176176        ."ORDER BY b.bezeichnung, g.buchungsblattnummermitbuchstabenerweiterung, n.laufendenummernachdin1421;"; 
    177         // buchungsblatt... mal mit und mal ohne fuehrende Nullen, bringt die Sortierung durcheinander 
    178177 
    179178        $v = array($gmlid); 
  • trunk/info/info/alkisn/alkisstrasse.php

    r402 r412  
    1313        2017-10-09 Sauber filtern auf endet IS NULL 
    1414        2018-04-23 &nodebug 
     15        2018-11-09 Umstellung Full-Schema 
    1516*/ 
    1617session_start(); 
Note: See TracChangeset for help on using the changeset viewer.