Changeset 41 for trunk/var/www/info/alkis/alkisgebaeudenw.php
- Timestamp:
- 09/03/10 13:36:04 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/var/www/info/alkis/alkisgebaeudenw.php
r34 r41 1 1 <?php 2 /* alkis fsnw.php2 /* alkisgebaeudenw.php - Gebaeudenachweis 3 3 ALKIS-Buchauskunft, Kommunales Rechenzentrum Minden-Ravensberg/Lippe (Lemgo). 4 Flurstücksnachweis fuer ein Flurstückskennzeichen aus ALKIS PostNAS5 4 Parameter: &gkz= &gmlid= &eig=j/n 6 5 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 11 11 */ 12 12 ini_set('error_reporting', 'E_ALL & ~ E_NOTICE'); 13 13 session_start(); 14 14 // 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 15 require_once("/data/mapwww/http/php/mb_validateSession.php"); 16 require_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"); 22 19 include("alkisfkt.php"); 23 20 ?> … … 25 22 <html> 26 23 <head> 27 <meta name="author" content="F . Jaeger">24 <meta name="author" content="Frank Jaeger" > 28 25 <meta http-equiv="cache-control" content="no-cache"> 29 26 <meta http-equiv="pragma" content="no-cache"> … … 32 29 <title>ALKIS Gebäudenachweis</title> 33 30 <link rel="stylesheet" type="text/css" href="alkisauszug.css"> 31 <link rel="shortcut icon" type="image/x-icon" href="ico/Haus.ico"> 34 32 <style type='text/css' media='print'> 35 33 .noprint { visibility: hidden;} … … 40 38 $gkz=urldecode($_REQUEST["gkz"]); 41 39 $gmlid=urldecode($_REQUEST["gmlid"]); 42 $eig=urldecode($_REQUEST["eig"]);43 40 $id = isset($_GET["id"]) ? $_GET["id"] : "n"; 44 41 $idanzeige=false; … … 48 45 $con = pg_connect("host=".$dbhost." port=" .$dbport." dbname=".$dbname." user=".$dbuser." password=".$dbpass); 49 46 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); 54 if (!$resf) echo "\n<p class='err'>Fehler bei Flurstücksdaten\n<br>".$sqlf."</p>\n"; 55 if ($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"]; 67 61 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²"; 76 $flstflaeche = number_format($flstflaeche,0,",",".") . " m²"; 77 $gesamtflaechegebaeude = number_format($gesamtflaechegebaeude,0,",",".") . " m²"; 78 79 } else {echo "Fehler! Kein Treffer fuer gml_id=".$gmlid;} 80 if ($eig=="j") { 81 echo "<p class='fsei'>Flurstück ".$gmkgnr."-".$flurnummer."-".$flstnummer." </p>\n"; 82 echo "\n<h2>ALKIS Gebäudenachweis</h2>\n"; 62 $flstflaeche = $rowf["amtlicheflaeche"] ; 63 } else { 64 echo "<p class='err'>Fehler! Kein Treffer fuer gml_id=".$gmlid."</p>"; 83 65 } 84 else { 85 echo "<p class='fskennz'>Flurstück ".$gmkgnr."-".$flurnummer."-".$flstnummer." </p>\n"; 86 echo "\n<h2>ALKIS Flurstücksnachweis</h2>\n"; 87 } 66 67 // Balken 68 echo "<p class='geb'>ALKIS Flurstück (Gebäude) ".$gmkgnr."-".$flurnummer."-".$flstnummer." </p>\n"; 69 70 echo "\n<h2><img src='ico/Flurstueck.ico' width='16' height='16' alt=''> Flurstück (Gebäude)</h2>\n"; 71 72 // Kennzeichen in Rahmen 88 73 echo "\n<table class='outer'>\n<tr>\n<td>"; 89 90 echo "\n\t<table class='kennz' title='Flurstü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ücksnummer (Zähler / Nenner)'>".$flstnummer."</td>\n\t</tr>"; 94 echo "\n\t</table>\n"; 95 echo "\n<p class='fsd'>Flurstücksfläche: <b>".$flstflaeche."</b></p>\n"; 96 echo "\n<p class='fsd'>Flurstücksfläche abzüglich Gebäudefläche: <b>".$flstflaeche_minus_gesamtflaechegebaeude."</b></p>\n"; 97 echo "\n<p class='fsd'>Gesamtfläche Gebäude: <b>".$gesamtflaechegebaeude."</b></p>\n"; 98 99 100 echo "</td>\n<td>"; 101 74 echo "\n\t<table class='kennz' title='Flurstü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ücksnummer (Zähler / Nenner)'><span class='wichtig'>".$flstnummer."</span></td>"; 82 echo "\n\t</tr>"; 83 echo "\n\t</table>"; 84 echo "\n</td>\n<td>"; 85 86 // Links zu anderen Nachweisen 87 echo "\n\t<p class='nwlink noprint'>"; 88 echo "\n\t\t<a href='alkisfsnw.php?gkz=".$gkz."&gmlid=".$gmlid; 89 if ($idanzeige) {echo "&id=j";} 90 echo "&eig=n' title='Flurstücksnachweis'>Flurstück <img src='ico/Flurstueck_Link.ico' width='16' height='16' alt=''></a>"; 91 echo "\n\t</p>"; 92 93 if ($idanzeige) { linkgml($gkz, $gmlid, "Flurstück"); } 102 94 echo "\n\t</td>\n</tr>\n</table>"; 103 95 // Ende Seitenkopf 104 96 105 echo "\n<h2>Auflistung der Gebäude</h2>"; 106 107 $res=pg_query($con,$sql); 108 if (!$res) echo "\n<p class='err'>Keine Gebä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äche</td>"; 113 echo "\n\t\t<td class='head'>Gebä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)) { 97 echo "\n<p class='fsd'>Flurstücksfläche: <b>".number_format($flstflaeche,0,",",".") . " m²</b></p>"; 98 99 echo "\n\n<h3><img src='ico/Haus.ico' width='16' height='16' alt=''> Gebäude</h3>"; 100 echo "\n<p>.. auf oder an dem Flurstü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); 150 if (!$resg) { 151 echo "\n<p class='err'>Keine Gebäude ermittelt.<br>\nSQL=<br></p>\n"; 152 echo "\n<p class='err'>".$sqlg."</p>\n"; 153 } 154 155 $gebnr=0; 156 echo "\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äudename'>Nr/Name</td>"; // 2 161 echo "\n\t<td class='head fla' title='Schnittsfläche'>Fläche</td>"; // 3 162 echo "\n\t<td class='head' title='Gebäudefläche'> </td>"; 163 echo "\n\t<td class='head' title='Gebäudefunktion ist die zum Zeitpunkt der Erhebung vorherrschend funktionale Bedeutung des Gebäudes'>Funktion</td>"; 164 echo "\n\t<td class='head' title='Bauweise (Schlü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)) { 117 169 $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äche'>".$row["flaeche"]. " m²". "</td>"; 121 echo "\n\t\t<td title='Gebä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"]." ".$rowg["name"]; 174 if ($idanzeige) { 175 linkgml($gkz, $rowg["gml_id"], "Gebäude"); 176 } 177 echo "</td>"; // 2 178 if ($rowg["drin"] == "t") { // 3 komplett enthalten 179 echo "\n\t<td class='fla'>".$rowg["schnittflae"]." m²</td>"; 180 echo "\n\t<td> </td>"; 181 } else { 182 if ($rowg["schnittflae"] == "0.00") { // angrenzend 183 echo "\n\t<td class='fla'> </td>"; 184 echo "\n\t<td>angrenzend</td>"; 185 } else { // Teile enthalten 186 echo "\n\t<td class='fla'>".$rowg["schnittflae"]." m²</td>"; 187 echo "\n\t<td>(von ".$rowg["gebflae"]." m²)</td>"; 188 } 189 } 190 echo "\n\t<td><span class='key'>".$rowg["gebaeudefunktion"]."</span> ".$rowg["bezeichner"]."</td>"; // 4 191 echo "\n\t<td><span class='key'>".$rowg["bauweise"]."</span> ".$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."&gmlid=".$rowg["beziehung_zu"]."&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."&gmlid=".$rowg["beziehung_zu"]."&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>"; 125 209 } 126 echo "</table>"; 210 // Footer 211 if ($gebnr == 0) { 212 echo "\n</table>"; 213 echo "<p class='err'><br>Keine Gebäude auf diesem Flurstück.<br> </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,",",".")." m²</td>"; 218 echo "\n\t<td> </td>"; // 3 219 echo "\n\t<td> </td>"; // 4 220 echo "\n\t<td> </td>"; // 5 221 echo "\n\t<td> </td>"; // 6 222 echo "\n</tr>"; 223 echo "\n</table>"; 224 $unbebaut = number_format(($flstflaeche - $gebflsum),0,",",".") . " m²"; 225 echo "\n<p>Flurstücksfläche abzüglich Gebäudeflä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 127 233 ?> 128 129 234 <form action=''> 130 235 <div class='buttonbereich noprint'> … … 136 241 </form> 137 242 138 <?php footer($gkz, $gmlid, $idanzeige, $self, $hilfeurl, $style); ?>243 <?php footer($gkz, $gmlid, $idanzeige, $self, $hilfeurl, ""); ?> 139 244 140 245 </body>
Note: See TracChangeset
for help on using the changeset viewer.