Ignore:
Timestamp:
09/03/10 13:36:04 (14 years ago)
Author:
frank.jaeger
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/var/www/info/alkis/alkisgebaeudenw.php

    r34 r41  
    11<?php 
    2 /*      alkisfsnw.php 
     2/*      alkisgebaeudenw.php - Gebaeudenachweis 
    33        ALKIS-Buchauskunft, Kommunales Rechenzentrum Minden-Ravensberg/Lippe (Lemgo). 
    4         Flurstücksnachweis fuer ein Flurstückskennzeichen aus ALKIS PostNAS 
    54        Parameter:      &gkz= &gmlid= &eig=j/n 
    65        Version: 
    7         26.01.2010      internet-Version  mit eigener conf 
    8  
    9         ToDo: NamNum >bestehtAusRechtsverhaeltnissenZu> NamNum 
    10  
     6        27.08.2010 von WhereGroup uebernommen 
     7        31.08.2010 Link zum FS-NW, Lage 
     8        01.09.2010 RLP-Daten: keine Relation Nebengebaeude->LagePseudonummer 
     9                                        Spalte lfd.-Nr raus wegen Verwechslungsgefhr mit lfd-Nr.-Nebengebaeuude 
     10        02.09.2010  Mit Icons 
    1111*/ 
    1212ini_set('error_reporting', 'E_ALL & ~ E_NOTICE'); 
    1313session_start(); 
    1414// Bindung an Mapbender-Authentifizierung 
    15 #require_once("/data/mapwww/http/php/mb_validateSession.php"); 
    16 #require_once("/data/conf/alkis_www_conf.php"); 
    17  
    18 #AE  
    19 require_once(dirname(__FILE__)."/../../../php/mb_validateSession.php"); 
    20 require_once(dirname(__FILE__)."/../../../../conf/alkis_www_conf.php"); 
    21  
     15require_once("/data/mapwww/http/php/mb_validateSession.php"); 
     16require_once("/data/conf/alkis_www_conf.php"); 
     17#require_once(dirname(__FILE__)."/../../../../php/mb_validateSession.php"); 
     18#require_once(dirname(__FILE__)."/../../../../conf/alkis_conf.php"); 
    2219include("alkisfkt.php"); 
    2320?> 
     
    2522<html> 
    2623<head> 
    27         <meta name="author" content="F. Jaeger"> 
     24        <meta name="author" content="Frank Jaeger" > 
    2825        <meta http-equiv="cache-control" content="no-cache"> 
    2926        <meta http-equiv="pragma" content="no-cache"> 
     
    3229        <title>ALKIS Geb&auml;udenachweis</title> 
    3330        <link rel="stylesheet" type="text/css" href="alkisauszug.css"> 
     31        <link rel="shortcut icon" type="image/x-icon" href="ico/Haus.ico"> 
    3432        <style type='text/css' media='print'> 
    3533                .noprint { visibility: hidden;} 
     
    4038$gkz=urldecode($_REQUEST["gkz"]); 
    4139$gmlid=urldecode($_REQUEST["gmlid"]); 
    42 $eig=urldecode($_REQUEST["eig"]); 
    4340$id = isset($_GET["id"]) ? $_GET["id"] : "n"; 
    4441$idanzeige=false; 
     
    4845$con = pg_connect("host=".$dbhost." port=" .$dbport." dbname=".$dbname." user=".$dbuser." password=".$dbpass); 
    4946 
    50 // Gebaeude 
    51 $sql ="SELECT f.name, f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche, f.zeitpunktderentstehung, "; 
    52 $sql.="round(area(g.wkb_geometry)::numeric,2) as flaeche, g.description, g.bauweise, g.gebaeudefunktion, "; 
    53 $sql.="h.bauweise_id, h.bauweise_beschreibung "; 
    54 $sql.="FROM ax_flurstueck f, ax_gebaeude g LEFT JOIN ax_bauweise_gebaeude h ON g.bauweise = h.bauweise_id "; 
    55 $sql.="WHERE f.gml_id='".$gmlid."' "; 
    56 $sql.="and within(g.wkb_geometry,f.wkb_geometry) = true order by flaeche DESC;"; 
    57  
    58 // echo $sql; 
    59 $res=pg_query($con,$sql); 
    60 if (!$res) echo "\n<p class='err'>Fehler bei Flurstuecksdaten\n<br>".$sql."</p>\n"; 
    61 if ($row = pg_fetch_array($res)) { 
    62         $gemkname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); 
    63         #$gmkgnr=$row["gemarkungsnummer"]; 
    64         $flurnummer=$row["flurnummer"]; 
    65         $flstnummer=$row["zaehler"]; 
    66         $nenner=$row["nenner"]; 
     47// Flurstueck 
     48$sqlf ="SELECT f.name, f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche, f.zeitpunktderentstehung, "; 
     49$sqlf.="g.gemarkungsnummer, g.bezeichnung "; 
     50$sqlf.="FROM ax_flurstueck f "; 
     51$sqlf.="JOIN ax_gemarkung  g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer "; 
     52$sqlf.="WHERE f.gml_id='".$gmlid."';"; 
     53$resf=pg_query($con,$sqlf); 
     54if (!$resf) echo "\n<p class='err'>Fehler bei Flurst&uuml;cksdaten\n<br>".$sqlf."</p>\n"; 
     55if ($rowf = pg_fetch_array($resf)) { 
     56        $gemkname=htmlentities($rowf["bezeichnung"], ENT_QUOTES, "UTF-8"); 
     57        $gmkgnr=$rowf["gemarkungsnummer"]; 
     58        $flurnummer=$rowf["flurnummer"]; 
     59        $flstnummer=$rowf["zaehler"]; 
     60        $nenner=$rowf["nenner"]; 
    6761        if ($nenner > 0) $flstnummer.="/".$nenner; // BruchNr 
    68         $flstflaeche = $row["amtlicheflaeche"] ; 
    69         $gesamtflaechegebaeude =  $row["flaeche"]; 
    70         $flstflaeche_minus_gesamtflaechegebaeude = 0; 
    71          
    72         while($row = pg_fetch_array($res)) { 
    73                 $gesamtflaechegebaeude = $gesamtflaechegebaeude + $row["flaeche"]; 
    74         } 
    75         $flstflaeche_minus_gesamtflaechegebaeude = number_format(($flstflaeche - $gesamtflaechegebaeude),0,",",".") . " m&#178;"; 
    76         $flstflaeche = number_format($flstflaeche,0,",",".") . " m&#178;"; 
    77         $gesamtflaechegebaeude =  number_format($gesamtflaechegebaeude,0,",",".") . " m&#178;"; 
    78          
    79 } else {echo "Fehler! Kein Treffer fuer gml_id=".$gmlid;} 
    80 if ($eig=="j") { 
    81         echo "<p class='fsei'>Flurst&uuml;ck ".$gmkgnr."-".$flurnummer."-".$flstnummer."&nbsp;</p>\n"; 
    82         echo "\n<h2>ALKIS Geb&auml;udenachweis</h2>\n"; 
     62        $flstflaeche = $rowf["amtlicheflaeche"] ; 
     63} else { 
     64        echo "<p class='err'>Fehler! Kein Treffer fuer gml_id=".$gmlid."</p>"; 
    8365} 
    84 else { 
    85         echo "<p class='fskennz'>Flurst&uuml;ck ".$gmkgnr."-".$flurnummer."-".$flstnummer."&nbsp;</p>\n"; 
    86         echo "\n<h2>ALKIS Flurst&uuml;cksnachweis</h2>\n"; 
    87 } 
     66 
     67// Balken 
     68echo "<p class='geb'>ALKIS Flurst&uuml;ck (Geb&auml;ude) ".$gmkgnr."-".$flurnummer."-".$flstnummer."&nbsp;</p>\n"; 
     69 
     70echo "\n<h2><img src='ico/Flurstueck.ico' width='16' height='16' alt=''> Flurst&uuml;ck (Geb&auml;ude)</h2>\n"; 
     71 
     72// Kennzeichen in Rahmen 
    8873echo "\n<table class='outer'>\n<tr>\n<td>"; 
    89  
    90         echo "\n\t<table class='kennz' title='Flurst&uuml;ckskennzeichen'>\n\t<tr>"; 
    91                 echo "\n\t\t<td class='head'>Flur</td>\n\t\t<td class='head'>Flurst-Nr.</td>\n\t</tr>"; 
    92                 echo "\n\t\t<td title='Flurnummer'>".$flurnummer."</td>"; 
    93                 echo "\n\t\t<td title='Flurst&uuml;cksnummer (Z&auml;hler / Nenner)'>".$flstnummer."</td>\n\t</tr>"; 
    94         echo "\n\t</table>\n"; 
    95         echo "\n<p class='fsd'>Flurst&uuml;cksfl&auml;che: <b>".$flstflaeche."</b></p>\n"; 
    96         echo "\n<p class='fsd'>Flurst&uuml;cksfl&auml;che abz&uuml;glich Geb&auml;udefl&auml;che: <b>".$flstflaeche_minus_gesamtflaechegebaeude."</b></p>\n"; 
    97         echo "\n<p class='fsd'>Gesamtfl&auml;che Geb&auml;ude: <b>".$gesamtflaechegebaeude."</b></p>\n"; 
    98          
    99          
    100 echo "</td>\n<td>"; 
    101  
     74        echo "\n\t<table class='kennz' title='Flurst&uuml;ckskennzeichen'>"; 
     75                echo "\n\t<tr>"; 
     76                        echo "\n\t\t<td class='head'>Gmkg</td>\n\t\t<td class='head'>Flur</td>\n\t\t<td class='head'>Flurst-Nr.</td>"; 
     77                echo "\n\t</tr>"; 
     78                echo "\n\t<tr>"; 
     79                        echo "\n\t\t<td title='Gemarkung'><span class='key'>".$gmkgnr."</span><br>".$gemkname."</td>"; 
     80                        echo "\n\t\t<td title='Flurnummer'>".$flurnummer."</td>"; 
     81                        echo "\n\t\t<td title='Flurst&uuml;cksnummer (Z&auml;hler / Nenner)'><span class='wichtig'>".$flstnummer."</span></td>"; 
     82                echo "\n\t</tr>"; 
     83        echo "\n\t</table>"; 
     84echo "\n</td>\n<td>"; 
     85 
     86// Links zu anderen Nachweisen 
     87echo "\n\t<p class='nwlink noprint'>"; 
     88        echo "\n\t\t<a href='alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$gmlid; 
     89        if ($idanzeige) {echo "&amp;id=j";} 
     90        echo "&amp;eig=n' title='Flurst&uuml;cksnachweis'>Flurst&uuml;ck <img src='ico/Flurstueck_Link.ico' width='16' height='16' alt=''></a>"; 
     91echo "\n\t</p>"; 
     92 
     93if ($idanzeige) { linkgml($gkz, $gmlid, "Flurst&uuml;ck"); } 
    10294echo "\n\t</td>\n</tr>\n</table>"; 
    10395// Ende Seitenkopf 
    10496 
    105 echo "\n<h2>Auflistung der Geb&auml;ude</h2>"; 
    106  
    107         $res=pg_query($con,$sql); 
    108         if (!$res) echo "\n<p class='err'>Keine Geb&auml;ude.<br>\nSQL= ".$sql."</p>\n"; 
    109         $gebnr=0; 
    110         echo "\n<hr>\n<table class='outer'>\n<tr>\n"; // link *neben* GB-Rahmen 
    111         echo "\n\t\t<td class='head'>Lfd. Nr.</td>"; 
    112         echo "\n\t\t<td class='head'>Fl&auml;che</td>"; 
    113         echo "\n\t\t<td class='head'>Geb&auml;udefunktion</td>"; 
    114         echo "\n\t\t<td class='head'>Bauweise</td>"; 
    115         echo "\n\t\t<td class='head'>Beschreibung</td>\n\t\t</tr>"; 
    116         while($row = pg_fetch_array($res)) { 
     97echo "\n<p class='fsd'>Flurst&uuml;cksfl&auml;che: <b>".number_format($flstflaeche,0,",",".") . " m&#178;</b></p>"; 
     98 
     99echo "\n\n<h3><img src='ico/Haus.ico' width='16' height='16' alt=''> Geb&auml;ude</h3>"; 
     100echo "\n<p>.. auf oder an dem Flurst&uuml;ck. Ermittelt durch Verschneidung der Geometrie.</p>"; 
     101 
     102// G e b a e u d e 
     103$sqlg ="SELECT g.gml_id, g.name, g.description, g.bauweise, g.gebaeudefunktion, "; 
     104$sqlg.=" h.bauweise_beschreibung, u.bezeichner, v.beziehungsart, v.beziehung_zu, l.hausnummer, "; 
     105 
     106// Gebaeudeflaeche komplett auch ausserhalb des FS 
     107$sqlg.="round(area(g.wkb_geometry)::numeric,2) AS gebflae, "; 
     108 
     109// wie viel vom GEB liegt im FS? 
     110$sqlg.="round(st_area(ST_Intersection(g.wkb_geometry,f.wkb_geometry))::numeric,2) AS schnittflae, "; 
     111 
     112// liegt das GEB komplett im FS? 
     113$sqlg.="st_within(g.wkb_geometry,f.wkb_geometry) as drin "; 
     114 
     115// FS und GEB geometrisch verschneiden 
     116$sqlg.="FROM ax_flurstueck f, ax_gebaeude g "; 
     117 
     118// Entschluesseln 
     119$sqlg.="LEFT JOIN ax_bauweise_gebaeude h ON g.bauweise = h.bauweise_id "; 
     120$sqlg.="LEFT JOIN ax_gebaeude_gebaeudefunktion u ON g.gebaeudefunktion = u.wert "; 
     121 
     122// Beziehungen verfolgen (holt die Hausnummer) 
     123$sqlg.="LEFT JOIN alkis_beziehungen v ON g.gml_id=v.beziehung_von ";  
     124$sqlg.="LEFT JOIN ax_lagebezeichnungmithausnummer l ON v.beziehung_zu=l.gml_id "; 
     125 
     126// auch die Nebengebaeude-Pseudo-Nummern suchen? 
     127// $sqlg.="LEFT JOIN ax_lagebezeichnungmitpseudonummer p ON v.beziehung_zu=p.gml_id "; 
     128 
     129// ID des aktuellen FS 
     130$sqlg.="WHERE f.gml_id='".$gmlid."' ";  
     131 
     132// ALT: "within" liefert nur Gebaeude, die komplett im Flurstueck liegen 
     133//$sqlg.="AND within(g.wkb_geometry,f.wkb_geometry) = true "; 
     134 
     135// "intersects" liefert ueberlappende Flaechen 
     136$sqlg.="AND st_intersects(g.wkb_geometry,f.wkb_geometry) = true "; 
     137 
     138// RLP: keine Relationen zu Nebengebaeuden: 
     139// auf Qualifizierung verzichten, sonst werden NebengebÀude nicht angezeigt 
     140        //$sqlg.="AND (v.beziehungsart='zeigtAuf' OR v.beziehungsart='hat') "; 
     141 
     142$sqlg.="ORDER BY schnittflae DESC;"; 
     143 
     144// Problem: HsNr ist linksbuedig Char: 
     145//$sqlg.="ORDER BY hausnummer, flaeche DESC;";   
     146 
     147// ax_gebaeude  (zeigtAuf) ax_LagebezeichnungMitHausnummer    (HauptgebÀude) 
     148// ax_gebaeude  (hat)      ax_LagebezeichnungMitPseudonummer  (NebengebÀude) 
     149$resg=pg_query($con,$sqlg); 
     150if (!$resg) { 
     151        echo "\n<p class='err'>Keine Geb&auml;ude ermittelt.<br>\nSQL=<br></p>\n"; 
     152        echo "\n<p class='err'>".$sqlg."</p>\n"; 
     153} 
     154 
     155$gebnr=0; 
     156echo "\n<hr>\n<table class='geb'>"; 
     157        // Header 
     158        echo "\n<tr>\n"; 
     159                //echo "\n\t<td class='head' title='laufende Nummer'>Lfd. Nr.</td>"; // 1 
     160                echo "\n\t<td class='head' title='ggf. Hausnummer und/oder Geb&auml;udename'>Nr/Name</td>"; // 2 
     161                echo "\n\t<td class='head fla' title='Schnittsfl&auml;che'>Fl&auml;che</td>"; // 3 
     162                echo "\n\t<td class='head' title='Geb&auml;udefl&auml;che'>&nbsp;</td>"; 
     163                echo "\n\t<td class='head' title='Geb&auml;udefunktion ist die zum Zeitpunkt der Erhebung vorherrschend funktionale Bedeutung des Geb&auml;udes'>Funktion</td>"; 
     164                echo "\n\t<td class='head' title='Bauweise (Schl&uuml;ssel und Beschreibung)'>Bauweise</td>"; // 5 
     165                echo "\n\t<td class='head nwlink' title='Typ von .. und Link zur Lagebezeichnung'>Lage</td>"; // 6 
     166        echo "\n</tr>"; 
     167        // Body 
     168        while($rowg = pg_fetch_array($resg)) { 
    117169                $gebnr = $gebnr + 1; 
    118                 echo "\n\t<tr>"; 
    119                 echo "\n\t\t<td title='Nr'>".$gebnr."</td>"; 
    120                 echo "\n\t\t<td title='Fl&auml;che'>".$row["flaeche"]. " m&#178;". "</td>"; 
    121                 echo "\n\t\t<td title='Geb&auml;udefunktion'>".$row["gebaeudefunktion"]. "</td>"; 
    122                 echo "\n\t\t<td title='Bauweise'>".$row["bauweise_beschreibung"]. "</td>"; 
    123                 echo "\n\t\t<td title='Beschreibung'>".$row["description"]. "</td>"; 
    124                 echo "\n\t</tr>\n\t"; 
     170                $gebflsum = $gebflsum + $rowg["schnittflae"];            
     171                echo "\n<tr>"; 
     172                        //echo "\n\t<td>".$gebnr."</td>"; // 1 
     173                        echo "\n\t<td>".$rowg["hausnummer"]."&nbsp;".$rowg["name"]; 
     174                                if ($idanzeige) { 
     175                                        linkgml($gkz, $rowg["gml_id"], "Geb&auml;ude"); 
     176                                }        
     177                        echo "</td>"; // 2 
     178                        if ($rowg["drin"] == "t") { // 3 komplett enthalten 
     179                                echo "\n\t<td class='fla'>".$rowg["schnittflae"]." m&#178;</td>";  
     180                                echo "\n\t<td>&nbsp;</td>"; 
     181                        } else { 
     182                if ($rowg["schnittflae"] == "0.00") { // angrenzend 
     183                                        echo "\n\t<td class='fla'>&nbsp;</td>"; 
     184                                        echo "\n\t<td>angrenzend</td>"; 
     185                                } else { // Teile enthalten 
     186                                        echo "\n\t<td class='fla'>".$rowg["schnittflae"]." m&#178;</td>"; 
     187                                        echo "\n\t<td>(von ".$rowg["gebflae"]." m&#178;)</td>"; 
     188                                } 
     189                        } 
     190                        echo "\n\t<td><span class='key'>".$rowg["gebaeudefunktion"]."</span>&nbsp;".$rowg["bezeichner"]."</td>"; // 4 
     191                        echo "\n\t<td><span class='key'>".$rowg["bauweise"]."</span>&nbsp;".$rowg["bauweise_beschreibung"]."</td>"; // 5 
     192                        echo "\n\t<td class='nwlink noprint'>"; 
     193                        $bezieh=$rowg["beziehungsart"];          
     194                        if (!$bezieh == "" ) { 
     195                                switch ($bezieh) { 
     196                                        case "hat":                     // *P*seudonummer 
     197                                                echo "\n\t\t<a title='Lagebezeichnung' href='alkislage.php?gkz=".$gkz."&amp;gmlid=".$rowg["beziehung_zu"]."&amp;ltyp=p'>lfd-Nr</a>"; 
     198                                                break; 
     199                                        case "zeigtAuf":        // *M*it HausNr 
     200                                                echo "\n\t\t<a title='Lagebezeichnung' href='alkislage.php?gkz=".$gkz."&amp;gmlid=".$rowg["beziehung_zu"]."&amp;ltyp=m'>Haus-Nr</a>"; 
     201                                                break; 
     202                                        default: 
     203                                                echo "<p>unbekannte Beziehungsart ".$bezieh."</p>"; 
     204                                                break; 
     205                                } 
     206                        }                        
     207                        echo "\n\t</td>"; 
     208                echo "\n</tr>"; 
    125209        } 
    126         echo "</table>"; 
     210// Footer 
     211        if ($gebnr == 0) { 
     212                echo "\n</table>"; 
     213                echo "<p class='err'><br>Keine Geb&auml;ude auf diesem Flurst&uuml;ck.<br>&nbsp;</p>"; 
     214        } else { 
     215                echo "\n<tr>"; 
     216                        echo "\n\t<td>Summe:</td>"; // 1 
     217                        echo "\n\t<td class='fla sum'>".number_format($gebflsum,0,",",".")."&nbsp;&nbsp;&nbsp;&nbsp;m&#178;</td>"; 
     218                        echo "\n\t<td>&nbsp;</td>"; // 3 
     219                        echo "\n\t<td>&nbsp;</td>"; // 4 
     220                        echo "\n\t<td>&nbsp;</td>"; // 5 
     221                        echo "\n\t<td>&nbsp;</td>"; // 6 
     222                echo "\n</tr>"; 
     223        echo "\n</table>"; 
     224        $unbebaut = number_format(($flstflaeche - $gebflsum),0,",",".") . " m&#178;"; 
     225        echo "\n<p>Flurst&uuml;cksfl&auml;che abz&uuml;glich Geb&auml;udefl&auml;che: <b>".$unbebaut."</b></p>"; 
     226} 
     227 
     228// Diese Berechnung beruht auf der Annahme, dass alle gefundenen Gebaeude vollstaendig innerhalb 
     229// des Flurstuecks liegen. Fehler bei GebÀuden auf der Grenze. 
     230 
     231//echo "\n<p class='err'>".$sqlg."</p>\n"; 
     232 
    127233?> 
    128  
    129234<form action=''> 
    130235        <div class='buttonbereich noprint'> 
     
    136241</form> 
    137242 
    138 <?php footer($gkz, $gmlid, $idanzeige, $self, $hilfeurl,$style); ?> 
     243<?php footer($gkz, $gmlid, $idanzeige, $self, $hilfeurl, ""); ?> 
    139244 
    140245</body> 
Note: See TracChangeset for help on using the changeset viewer.