source: trunk/info/info/alkis/alkisfsnw.php @ 275

Revision 275, 32.6 KB checked in by frank.jaeger, 7 years ago (diff)

Buchauskunft: deprecated "import_request_variables" ersetzt. In 'sichten.sql' die Mehrfachdarstellung unterdrückt, nur noch advstandardmodell='DKKM1000'.

Line 
1<?php
2/*      Modul: alkisfsnw.php
3
4        ALKIS-Buchauskunft, Kommunales Rechenzentrum Minden-Ravensberg/Lippe (Lemgo).
5        FlurstÃŒcksnachweis fuer ein FlurstÃŒckskennzeichen aus ALKIS PostNAS
6
7        Version:
8        2011-11-16  Neuer Style class='dbg', Link Historie
9        2011-11-17  Parameter der Functions geÀndert
10        2011-11-30  import_request_variables, $dbvers PostNAS 0.5 entfernt
11        2011-12-01  Summe der AbschnittsflÀchen (NUA) an amtl. BuchflÀche des FS angleichen
12        2011-12-16  Zeilenumbruch in Nutzungsart, Spaltenbreite Link
13        2012-07-24  Export als CSV, pg_free_result(), pg_close()
14        2012-11-27  split deprecated, besser: explode
15        2013-01-17  FS-Kennzeichen (ALB-Format) als Parameter statt gmlid möglich
16        2013-04-08  deprecated "import_request_variables" ersetzt
17        2013-04-11  ID-Links (im Testmodus) auch an Lagebezeichnung (mit/ohne HsNr) und an Nutzungs-Abschnitt
18
19        ToDo:
20        - BodenschÀtzung anzeigen
21        - EntschlÃŒsseln "Bahnkategorie" bei Bahnverkehr, "OberflÀchenmaterial" bei Unland           Dazu evtl. diese Felder ins Classfld verschieben (Meta-Tabellen!)
22        - NamNum >bestehtAusRechtsverhaeltnissenZu> NamNum
23*/
24session_start();
25//import_request_variables("G"); // php 5.3 deprecated, php 5.4 entfernt
26$cntget = extract($_GET);
27require_once("alkis_conf_location.php");
28if ($auth == "mapbender") {require_once($mapbender);}
29include("alkisfkt.php");
30if ($id == "j") {$idanzeige=true;} else {$idanzeige=false;}
31$keys = isset($_GET["showkey"]) ? $_GET["showkey"] : "n";
32if ($keys == "j") {$showkey=true;} else {$showkey=false;}
33echo <<<END
34<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
35<html>
36<head>
37        <meta name="author" content="b600352" >
38        <meta http-equiv="cache-control" content="no-cache">
39        <meta http-equiv="pragma" content="no-cache">
40        <meta http-equiv="expires" content="0">
41        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
42        <title>ALKIS Flurst&uuml;cksnachweis</title>
43        <link rel="stylesheet" type="text/css" href="alkisauszug.css">
44        <link rel="shortcut icon" type="image/x-icon" href="ico/Flurstueck.ico">
45        <style type='text/css' media='print'>
46                .noprint {visibility: hidden;}
47        </style>
48        <script type="text/javascript">
49        function ALKISexportFS() {window.open('alkisfsexp.php?gkz=$gkz&gmlid=$gmlid');}
50        function ALKISexportGB() {window.open('alkisfsgbexp.php?gkz=$gkz&gmlid=$gmlid');}
51        </script>
52</head>
53<body>
54END;
55//if ($debug > 0) {echo "<p>Habe ".$cntget." Parameter per 'get' bekommen<p>";}
56$con = pg_connect("host=".$dbhost." port=" .$dbport." dbname=".$dbname." user=".$dbuser." password=".$dbpass);
57if (!$con) echo "<p class='err'>Fehler beim Verbinden der DB</p>\n";
58
59// Ein (ALB- ?) FlurstÃŒcks-Kennzeichen wurde alternativ zur gml_id ÃŒbermittelt
60if ($gmlid == '' and $fskennz != '') {
61        // Übergabe Format z.B. "llgggg-fff-nnnn/zz.nn" oder "gggg-ff-nnn/zz"
62        $arr=explode("-", $fskennz, 4);
63        $zgemkg=trim($arr[0]);
64        if (strlen($zgemkg) == 20 and $arr[1] == "") { // Oh, ist wohl schon das Datenbank-Feldformat
65                $fskzdb=$zgemkg;
66        } else { // Nö, ist wohl eher ALB-Format
67                // Das Kennzeichen auseinander nehmen.
68                if (strlen($zgemkg) == 6) {
69                        $land=substr($zgemkg, 0, 2);
70                        $zgemkg=substr($zgemkg, 2, 4);
71                } else { // kein schöner Land ..
72                        $land='05'; // NRW, ToDo: Default-Land aus config
73                }
74                $zflur=str_pad($arr[1], 3 , "0", STR_PAD_LEFT); // Flur-Nr
75                $zfsnr=trim($arr[2]); // FlurstÃŒcke-Nr
76                $zn=explode("/", $zfsnr, 2); // Bruch?
77                $zzaehler=str_pad(trim($zn[0]), 5 , "0", STR_PAD_LEFT);
78                $znenner=trim($zn[1]);
79                if (trim($znenner, " 0.") == "") { // kein Bruch oder nur Nullen
80                        $znenner="____"; // in DB-Spalte mit Tiefstrich aufgefÃŒllt
81                } else {
82                        $zn=explode(".", $znenner, 2); // .00 wegwerfen
83                        $znenner=str_pad($zn[0], 4 , "0", STR_PAD_LEFT);
84                }
85                // nun die Teile stellengerecht wieder zusammen setzen         
86                $fskzdb=$land.$zgemkg.$zflur.$zzaehler.$znenner.'__'; // FS-Kennz. Format Datenbank
87        }
88        // Feld flurstueckskennzeichen ist in DB indiziert 
89        // Format z.B.'052647002001910013__' oder '05264700200012______'
90        $sql ="SELECT gml_id FROM ax_flurstueck WHERE flurstueckskennzeichen= $1 ;";
91
92        $v = array($fskzdb);
93        $res = pg_prepare("", $sql);
94        $res = pg_execute("", $v);
95        if ($row = pg_fetch_array($res)) {
96                $gmlid=$row["gml_id"];
97        } else {
98                echo "<p class='err'>Fehler! Kein Treffer f&uuml;r Flurst&uuml;ckskennzeichen='".$fskennz."' (".$fskzdb.")</p>";
99        }
100        pg_free_result($res);
101}
102
103// F L U R S T U E C K
104$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, f.zeitpunktderentstehung, ";
105$sql.="g.gemarkungsnummer, g.bezeichnung ";
106$sql.="FROM ax_flurstueck f ";
107$sql.="LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
108$sql.="WHERE f.gml_id= $1";
109
110$v = array($gmlid); // mit gml_id suchen
111$res = pg_prepare("", $sql);
112$res = pg_execute("", $v);
113if (!$res) {
114        echo "\n<p class='err'>Fehler bei Flurstuecksdaten</p>\n";
115        if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}
116}
117if ($row = pg_fetch_array($res)) {
118        $gemkname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8");
119        $gmkgnr=$row["gemarkungsnummer"];
120        $bezirk=$row["regierungsbezirk"];
121        $kreis=$row["kreis"];
122        $gemeinde=$row["gemeinde"];
123        $flurnummer=$row["flurnummer"];
124        $flstnummer=$row["zaehler"];
125        $nenner=$row["nenner"];
126        if ($nenner > 0) {$flstnummer.="/".$nenner;} // BruchNr
127        $fsbuchflae=$row["amtlicheflaeche"]; // amtliche Fl. aus DB-Feld
128        $fsgeomflae=$row["fsgeomflae"]; // aus Geometrie ermittelte FlÀche
129        $fsbuchflaed=number_format($fsbuchflae,0,",",".") . " m&#178;"; // Display-Format dazu
130        $fsgeomflaed=number_format($fsgeomflae,0,",",".") . " m&#178;";
131        $entsteh=$row["zeitpunktderentstehung"];
132        $name=$row["name"]; // Fortfuehrungsnummer(n)
133        $arrn = explode(",", trim($name, "{}") ); // PHP-Array
134} else {
135        echo "<p class='err'>Fehler! Kein Treffer f&uuml;r gml_id=".$gmlid."</p>";
136        if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}
137}
138pg_free_result($res);
139// Balken
140if ($eig=="j") {
141        echo "<p class='fsei'>ALKIS Flurst&uuml;ck ".$gmkgnr."-".$flurnummer."-".$flstnummer."&nbsp;</p>\n";
142        echo "\n<h2><img src='ico/Flurstueck.ico' width='16' height='16' alt=''> Flurst&uuml;ck mit Eigent&uuml;mer</h2>\n";
143} else {
144        echo "<p class='fskennz'>ALKIS Flurst&uuml;ck ".$gmkgnr."-".$flurnummer."-".$flstnummer."&nbsp;</p>\n";
145        echo "\n<h2><img src='ico/Flurstueck.ico' width='16' height='16' alt=''> Flurst&uuml;ck</h2>\n";
146}
147echo "\n<table class='outer'>\n<tr>\n\t<td>"; // linke Seite
148        // darin Tabelle Kennzeichen
149        echo "\n\t<table class='kennzfs' title='Flurst&uuml;ckskennzeichen'>\n\t<tr>";
150                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>\n\t</tr>";
151                echo "\n\t<tr>\n\t\t<td title='Gemarkung'>";
152                if ($showkey) {
153                        echo "<span class='key'>".$gmkgnr."</span><br>";
154                }
155                echo $gemkname."&nbsp;</td>";
156                echo "\n\t\t<td title='Flurnummer'>".$flurnummer."</td>";
157                echo "\n\t\t<td title='Flurst&uuml;cksnummer (Z&auml;hler / Nenner)'><span class='wichtig'>".$flstnummer."</span></td>\n\t</tr>";
158        echo "\n\t</table>";
159echo "\n\t</td>\n\t<td>"; // rechte Seite
160        // FS-Daten 2 Spalten
161        echo "\n\t<table class='fsd'>";
162                echo "\n\t<tr>\n\t\t<td>Entstehung</td>";
163                echo "\n\t\t<td>".$entsteh."</td>\n\t</tr>";                 echo "\n\t<tr>";
164                        echo "\n\t\t<td>letz. Fortf</td>";
165                        echo "\n\t\t<td title='Jahrgang / Fortf&uuml;hrungsnummer - Fortf&uuml;hrungsart'>";
166                                foreach($arrn AS $val) { // Zeile f. jedes Element des Array
167                                        echo trim($val, '"')."<br>";
168                                }
169                        echo "</td>";
170                echo "\n\t</tr>";
171
172        echo "\n\t</table>";         if ($idanzeige) {linkgml($gkz, $gmlid, "Flurst&uuml;ck"); }
173echo "\n\t</td>\n</tr>\n</table>";
174//      echo "\n<tr>\n\t<td>Finanzamt</td>\n\t<td>".$finanzamt." ".$finame  . "</td>\n</tr>";
175// Ende Seitenkopf
176
177echo "\n<hr>";
178echo "\n<p class='nwlink noprint'>weitere Auskunft:</p>"; // oben rechts von der Tabelle
179echo "\n<table class='fs'>";
180
181// ** G e b i e t s z u g e h o e r i g k e i t **
182// eine Tabellenzeile mit der Gebietszugehoerigkeit eines Flurstuecks wird ausgegeben
183// Schluessel "land" wird nicht verwendet, gibt es Bestaende wo das nicht einheitlich ist?
184echo "\n<tr>\n\t<td class='ll'><img title='Im Gebiet von' src='ico/Gemeinde.ico' width='16' height='16' alt=''> Gebiet:</td>";
185
186// G e m e i n d e
187$sql="SELECT bezeichnung FROM ax_gemeinde WHERE regierungsbezirk= $1 AND kreis= $2 AND gemeinde= $3";
188
189$v = array($bezirk,$kreis,$gemeinde);
190$res = pg_prepare("", $sql);
191$res = pg_execute("", $v);
192if (!$res) {
193        echo "\n<p class='err'>Fehler bei Gemeinde</p>\n";
194        if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."</p>";}
195}
196$row = pg_fetch_array($res);
197$gnam = htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8");
198echo "\n\t<td class='lr'>Gemeinde</td><td class='lr'>";
199if ($showkey) {
200        echo "<span class='key'>(".$gemeinde.")</span> ";
201}
202echo $gnam."</td><td width='80'>";  // Mindest-Breite der Spalte fuer die Links
203        // Link zur FlurstÃŒcks-Historie (passt nicht ganz in die Zeile "Gemeinde", aber gut unter "weitere Auskunft")
204        echo "\n<p class='nwlink noprint'>";
205                echo "\n\t<a href='alkisfshist.php?gkz=".$gkz."&amp;gmlid=".$gmlid;
206                                if ($idanzeige) {echo "&amp;id=j";}
207                                if ($showkey)   {echo "&amp;showkey=j";}
208                        echo "' title='Vorg&auml;nger-Flurst&uuml;cke'>Historie ";
209                        echo "<img src='ico/Flurstueck_Historisch.ico' width='16' height='16' alt=''>";
210                echo "</a>";
211        echo "\n</p>";
212echo "</td></tr>";
213pg_free_result($res);
214
215// K r e i s
216$sql="SELECT bezeichnung FROM ax_kreisregion WHERE regierungsbezirk= $1 AND kreis= $2";
217$v = array($bezirk,$kreis);
218$res = pg_prepare("", $sql);
219$res = pg_execute("", $v);
220if (!$res) {
221        echo "\n<p class='err'>Fehler bei Kreis</p>\n";
222        if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."</p>";}
223}
224$row = pg_fetch_array($res);
225$knam = htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8");
226echo "<tr><td>&nbsp;</td><td>Kreis</td><td>";
227if ($showkey) {
228        echo "<span class='key'>(".$kreis.")</span> ";
229}
230echo $knam."</td><td>&nbsp;</td></tr>";
231pg_free_result($res);
232
233// R e g - B e z
234$sql="SELECT bezeichnung FROM ax_regierungsbezirk WHERE regierungsbezirk= $1 ";
235$v = array($bezirk);
236$res = pg_prepare("", $sql);
237$res = pg_execute("", $v);
238if (!$res) {
239        echo "<p class='err'>Fehler bei Regierungsbezirk</p>";
240        if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."</p>";}
241}
242$row = pg_fetch_array($res);
243$bnam = htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8");
244echo "<tr><td>&nbsp;</td><td>Regierungsbezirk</td><td>";
245if ($showkey) {
246        echo "<span class='key'>(".$bezirk.")</span> ";
247}
248echo $bnam."</td><td>&nbsp;</td></tr>";
249pg_free_result($res);
250// ENDE G e b i e t s z u g e h o e r i g k e i t
251
252// ** L a g e b e z e i c h n u n g **
253
254// Lagebezeichnung Mit Hausnummer
255//   ax_flurstueck  >weistAuf>  AX_LagebezeichnungMitHausnummer
256//                  <gehoertZu<
257$sql ="SELECT DISTINCT l.gml_id, l.gemeinde, l.lage, l.hausnummer, s.bezeichnung ";
258$sql.="FROM alkis_beziehungen v ";
259$sql.="JOIN ax_lagebezeichnungmithausnummer  l ON v.beziehung_zu=l.gml_id "; // Strassennamen JOIN
260$sql.="JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde ";
261$sql.="AND l.lage = s.lage ";
262$sql.="WHERE v.beziehung_von= $1 "; // id FS";
263$sql.="AND v.beziehungsart='weistAuf' ";
264$sql.="ORDER BY l.gemeinde, l.lage, l.hausnummer;";
265// Theoretisch JOIN notwendig ÃŒber den kompletten SchlÃŒssel bestehend aus land+regierungsbezirk+kreis+gemeinde+lage
266// bei einem SekundÀrbestand fÌr eine Gemeinde oder einen Kreis reicht dies hier:
267
268$v = array($gmlid);
269$res = pg_prepare("", $sql);
270$res = pg_execute("", $v);
271if (!$res) {
272        echo "<p class='err'>Fehler bei Lagebezeichnung mit Hausnummer</p>";
273        if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."</p>";}
274}
275$j=0;
276while($row = pg_fetch_array($res)) {
277        $sname = htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); // Str.-Name
278        echo "\n<tr>\n\t";
279                if ($j == 0) {
280                        echo "<td class='ll'><img src='ico/Lage_mit_Haus.ico' width='16' height='16' alt=''> Adresse:</td>";
281                } else {
282                        echo "<td>&nbsp;</td>";
283                }
284                echo "\n\t<td>&nbsp;</td>";
285                echo "\n\t<td class='lr'>";
286                if ($showkey) {
287                        echo "<span class='key'>(".$row["lage"].")</span>&nbsp;";
288                }
289                echo $sname."&nbsp;".$row["hausnummer"];
290                if ($idanzeige) {linkgml($gkz, $row["gml_id"], "Lagebezeichnung mit Hausnummer");}
291                echo "</td>";
292                echo "\n\t<td>\n\t\t<p class='nwlink noprint'>";
293                        echo "\n\t\t\t<a title='Lagebezeichnung mit Hausnummer' href='alkislage.php?gkz=".$gkz."&amp;ltyp=m&amp;gmlid=".$row["gml_id"];
294                        if ($showkey) {echo "&amp;showkey=j";}
295                        echo "'>Lage ";
296                        echo "<img src='ico/Lage_mit_Haus.ico' width='16' height='16' alt=''></a>";
297                echo "\n\t\t</p>\n\t</td>";
298        echo "\n</tr>";
299        $j++;
300}
301pg_free_result($res);
302// Verbesserung: mehrere HsNr zur gleichen Straße als Liste?
303
304// L a g e b e z e i c h n u n g   O h n e   H a u s n u m m e r  (Gewanne oder nur Strasse)
305//   ax_flurstueck  >zeigtAuf>  AX_LagebezeichnungOhneHausnummer
306//                  <gehoertZu<
307$sql ="SELECT l.gml_id, l.unverschluesselt, l.gemeinde, l.lage, s.bezeichnung ";
308$sql.="FROM alkis_beziehungen v ";
309$sql.="JOIN ax_lagebezeichnungohnehausnummer l ON l.gml_id=v.beziehung_zu ";
310$sql.="LEFT JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde ";
311$sql.="AND l.lage = s.lage ";
312$sql.="WHERE v.beziehung_von= $1 "; // id FS
313$sql.="AND   v.beziehungsart='zeigtAuf';"; //ORDER?
314$v = array($gmlid);
315$res = pg_prepare("", $sql);
316$res = pg_execute("", $v);
317if (!$res) {
318        echo "<p class='err'>Fehler bei Lagebezeichnung ohne Hausnummer</p>";
319        if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."</p>";}
320}
321$j=0;
322// Es wird auch eine Zeile ausgegeben, wenn kein Eintrag gefunden!
323while($row = pg_fetch_array($res)) {
324        $gewann = htmlentities($row["unverschluesselt"], ENT_QUOTES, "UTF-8");
325        $skey=$row["lage"]; // Strassenschl.
326        $lgml=$row["gml_id"]; // key der Lage
327        if (!$gewann == "") {
328                echo "\n<tr>";
329                        echo "\n\t<td class='ll' title='Lagebezeichnung'><img src='ico/Lage_Gewanne.ico' width='16' height='16' alt=''> Gewanne:</td>";
330                        echo "\n\t<td></td>";
331                        echo "\n\t<td class='lr'>".$gewann."</td>";
332                        echo "\n\t<td>\n\t\t<p class='nwlink noprint'>";
333                                echo "\n\t\t\t<a title='Lagebezeichnung Ohne Hausnummer' href='alkislage.php?gkz=".$gkz."&amp;ltyp=o&amp;gmlid=".$lgml;
334                                if ($showkey) {echo "&amp;showkey=j";}                         
335                                echo "'>\n\t\t\tLage <img src='ico/Lage_Gewanne.ico' width='16' height='16' alt=''></a>";
336                        echo "\n\t\t</p>\n\t</td>";
337                echo "\n</tr>";
338        }
339        // Gleicher DB-Eintrag in zwei HTML-Zeilen, besser nur ein Link
340        if ($skey > 0) {
341                echo "\n<tr>";
342                        echo "\n\t<td class='ll'><img src='ico/Lage_an_Strasse.ico' width='16' height='16' alt=''> Stra&szlig;e:</td>";
343                        echo "\n\t<td></td>";
344                        echo "\n\t<td class='lr'>";
345                        if ($showkey) {
346                                echo "<span class='key'>(".$skey.")</span>&nbsp;";
347                        }
348                        echo $row["bezeichnung"];
349                        if ($idanzeige) {linkgml($gkz, $lgml, "Lagebezeichnung o. HsNr.");}
350                        echo "</td>";
351                        echo "\n\t<td>\n\t\t<p class='nwlink noprint'>";
352                                echo "\n\t\t\t<a title='Lagebezeichnung Ohne Hausnummer' href='alkislage.php?gkz=".$gkz."&amp;ltyp=o&amp;gmlid=".$lgml;
353                                if ($showkey) {echo "&amp;showkey=j";}                         
354                                echo "'>\n\t\t\tLage <img src='ico/Lage_an_Strasse.ico' width='16' height='16' alt=''>\n\t\t\t</a>";
355                        echo "\n\t\t</p>\n\t</td>";
356                echo "\n</tr>";
357        }
358        $j++;
359}
360pg_free_result($res);
361// ENDE  L a g e b e z e i c h n u n g
362
363// ** N U T Z U N G **
364// Tabellenzeilen (3 Spalten) mit tats. Nutzung zu einem FS ausgeben
365$sql ="SELECT m.title, m.fldclass, m.fldinfo, n.gml_id, c.class, n.info, n.zustand, n.name, n.bezeichnung, m.gruppe, ";
366// Gemeinsame FlÀche von NUA und FS
367$sql.="st_area(st_intersection(n.wkb_geometry,f.wkb_geometry)) AS schnittflae, ";
368$sql.="c.label, c.blabla ";
369$sql.="FROM ax_flurstueck f, nutzung n ";
370$sql.="JOIN nutzung_meta m ON m.nutz_id=n.nutz_id ";
371$sql.="LEFT JOIN nutzung_class c ON c.nutz_id=n.nutz_id AND c.class=n.class ";
372$sql.="WHERE f.gml_id= $1 "; // id FS";
373$sql.="AND st_intersects(n.wkb_geometry,f.wkb_geometry) = true "; // ueberlappende Flaechen
374$sql.="AND st_area(st_intersection(n.wkb_geometry,f.wkb_geometry)) > 0.05 "; // unter Rundung
375$sql.="ORDER BY schnittflae DESC;";
376
377$v = array($gmlid);
378$res = pg_prepare("", $sql);
379$res = pg_execute("", $v);
380if (!$res) {
381        echo "<p class='err'>Fehler bei Suche tats. Nutzung</p>\n";
382        if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}
383}
384$the_Xfactor=$fsbuchflae / $fsgeomflae; // geom. ermittelte FlÀche auf amtl. BuchflÀche angleichen
385$j=0;
386while($row = pg_fetch_array($res)) {
387        $grupp = $row["gruppe"];  // Individuelles Icon?
388        $title = htmlentities($row["title"], ENT_QUOTES, "UTF-8"); // NUA-Titel
389        $fldclass=$row["fldclass"]; // Feldname 1.  Zusatzfeld
390        $fldinfo= $row["fldinfo"];  // Feldname 2. Zusatzfeld
391        $gml=$row["gml_id"];
392        $class=$row["class"];  // 1. Zusatzfeld verschlÃŒsselt -> nutzung_class
393        $info=$row["info"]; // 2. Zus. verschlÃŒsselt (noch keine Info zum entschl.)
394        $schnittflae=$row["schnittflae"];
395        $label=$row["label"]; // Nutzungsart entschlÃŒsselt
396        $zus=$row["zustand"]; // im Bau
397        $nam=$row["name"]; // Eigenname
398        $bez=$row["bezeichnung"]; // weiterer Name (unverschl.)
399        $blabla=htmlentities($row["blabla"], ENT_QUOTES, "UTF-8");         $label=str_replace("/", "<br>", $label); // Ersetzen "/" durch Zeilenwechsel?
400
401        echo "\n<tr>\n\t";
402                if ($j == 0) {
403                        echo "<td class='ll' title='Abschnitt der tats&auml;chlichen Nutzung'><img src='ico/Abschnitt.ico' width='16' height='16' alt=''> Nutzung:</td>";
404                } else {
405                        echo "<td>&nbsp;</td>";
406                }
407                $absflaebuch = $schnittflae * $the_Xfactor; // angleichen geometrisch an amtliche FlÀche
408                $schnittflae = number_format($schnittflae,1,",",".") . " m&#178;"; // geometrisch
409                $absflaebuch = number_format($absflaebuch,0,",",".") . " m&#178;"; // Abschnitt an BuchflÀche angeglichen
410                echo "\n\t<td class='fla' title='geometrisch berechnet: ".$schnittflae."'>".$absflaebuch."</td>";
411
412                echo "\n\t<td class='lr'>";
413                        If ( ($fldclass == "Funktion" OR $fldclass == "Vegetationsmerkmal") AND $label != "") { // Kurze Anzeige
414                                if ($showkey) {echo "<span class='key'>(".$class.")</span> ";}
415                                if ($blabla = "") {
416                                        echo $label;
417                                } else {
418                                        echo "<span title='".$blabla."'>".$label."</span>";
419                                }
420                        } else { // ausfuehrlichere Anzeige
421                                echo $title; // NUA-Tabelle
422                                if ($class != "") { // NUA-SchlÃŒssel
423                                        echo ", ".$fldclass.": "; // Feldname
424                                        if ($showkey) {echo "<span class='key'>(".$class.")</span> ";}
425                                        if ($label != "") { // Bedeutung dazu wurde erfasst
426                                                if ($blabla = "") {
427                                                        echo $label;
428                                                } else {
429                                                        echo "<span title='".$blabla."'>".$label."</span>";
430                                                }
431                                        } else { // muss noch erfasst werden
432                                                echo $class." "; // SchlÃŒssel als Ersatz fÃŒr Bedeutung
433                                        }
434                                }
435                        }
436
437                        if ($info != "") { // manchmal ein zweites Zusatzfeld (wie entschlÃŒsseln?)
438                                echo ", ".$fldinfo."=".$info;
439                        }
440                        if ($zus != "") { // Zustand
441                                echo "\n\t\t<br>";
442                                if ($showkey) {echo "<span class='key'>(".$zus.")</span> ";}
443                                echo "<span title='Zustand'>";                         
444                                switch ($zus) {
445                                        case 2100: echo "Außer Betrieb, stillgelegt, verlassen"; break;
446                                        case 4000: echo "Im Bau"; break;
447                                        case 8000: echo "Erweiterung, Neuansiedlung"; break;
448                                        default: echo "Zustand: ".$zus; break;
449                                }
450                                echo "</span>";
451                        }
452                        if ($nam != "") {echo "<br>Name: ".$nam;}
453                        if ($bez != "") {echo "<br>Bezeichnung: ".$bez;}
454                        if ($idanzeige) {linkgml($gkz, $gml, "Nutzungs-Abschnitt");}
455
456                echo "</td>";
457                echo "\n\t<td>";
458                        switch ($grupp) { // Icon nach 4 Objektartengruppen
459                                case "Siedlung":                $ico = "Abschnitt.ico"; break;
460                                case "Verkehr":         $ico = "Strassen_Klassifikation.ico";   break;
461                                case "Vegetation":      $ico = "Wald.ico";      break;
462                                case "GewÀsser":               $ico = "Wasser.ico";    break;
463                                default:                                        $ico = "Abschnitt.ico"; break;
464                        }
465                        // Icon ist auch im Druck sichtbar, class='noprint' ?           
466                        echo "<p class='nwlink'><img title='".$title."' src='ico/".$ico."' width='16' height='16' alt='NUA'></p>";
467                echo "</td>";
468        echo "\n</tr>";
469        $j++;
470}
471pg_free_result($res);
472// ENDE  N U T Z U N G
473
474echo "\n<tr>"; // Summenzeile
475        echo "\n\t<td class='ll' title='amtliche Fl&auml;che (Buchfl&auml;che)'>Fl&auml;che:</td>";
476        echo "\n\t<td class='fla'>";
477        echo "<span title='geometrisch berechnete Fl&auml;che = ".$fsgeomflaed."' class='flae'>".$fsbuchflaed."</span></td>";
478
479        // Flaeche und Link auf GebÀude-Auswertung
480        echo "\n\t<td>&nbsp;</td>\n\t<td>";
481                echo "\n\t\t<p class='nwlink noprint'>"; // Gebaeude-Verschneidung
482                        echo "\n\t\t\t<a href='alkisgebaeudenw.php?gkz=".$gkz."&amp;gmlid=".$gmlid;
483                        if ($idanzeige) {echo "&amp;id=j";}                         if ($showkey) {echo "&amp;showkey=j";}
484                        echo "' title='Geb&auml;udenachweis'>Geb&auml;ude <img src='ico/Haus.ico' width='16' height='16' alt=''></a>";
485                echo "\n\t\t</p>";
486        echo "\n\t</td>";
487echo "\n</tr>";
488
489echo "\n</table>";
490
491// ALB: KLASSIFIZIERUNG  BAULASTEN  HINWEISE  TEXTE  VERFAHREN
492
493// G R U N D B U C H
494echo "\n<table class='outer'>";
495        echo "\n<tr>";
496                echo "\n\t<td>";
497                        echo "\n\t\t<a name='gb'></a>\n\t\t<h3><img src='ico/Grundbuch_zu.ico' width='16' height='16' alt=''> Grundb&uuml;cher</h3>";
498                echo "\n\t</td>";
499                echo "\n\t<td>";
500                        echo "\n\t\t<p class='nwlink noprint'>";
501                                echo "\n\t\t\t<a href='".$_SERVER['PHP_SELF']. "?gkz=".$gkz."&amp;gmlid=".$gmlid;
502                                if ($idanzeige) { echo "&amp;id=j";}
503                                if ($showkey)   {echo "&amp;showkey=j";}
504                                // Umschalter: FS-Nachw ruft sich selbst mit geaend. Param. auf. Posit. auf Marke #gb
505                                if ($eig=="j") {
506                                        echo "&amp;eig=n#gb' title='Flurst&uuml;cksnachweis'>ohne Eigent&uuml;mer</a>";
507                                } else {
508                                        echo "&amp;eig=j#gb' title='Flurst&uuml;cks- und Eigent&uuml;mernachweis'>mit Eigent&uuml;mer ";
509                                        echo "<img src='ico/EigentuemerGBzeile.ico' width='16' height='16' alt=''></a>";
510                                }
511                        echo "\n\t\t</p>";
512                echo "\n\t</td>";
513        echo "\n</tr>";
514echo "\n</table>\n";
515
516// B U C H U N G S S T E L L E N  zum FS (istGebucht)
517$sql ="SELECT s.gml_id, s.buchungsart, s.laufendenummer as lfd, s.zaehler, s.nenner, ";
518$sql.="s.nummerimaufteilungsplan as nrpl, s.beschreibungdessondereigentums as sond, b.bezeichner AS bart ";
519//  s.beschreibungdesumfangsderbuchung as umf,  ?
520$sql.="FROM alkis_beziehungen v "; // Bez Flurst.- Stelle.
521$sql.="JOIN ax_buchungsstelle s ON v.beziehung_zu=s.gml_id ";
522$sql.="LEFT JOIN ax_buchungsstelle_buchungsart b ON s.buchungsart = b.wert ";
523$sql.="WHERE v.beziehung_von= $1 "; // id FS
524$sql.="AND v.beziehungsart= $2 ";
525$sql.="ORDER BY s.laufendenummer;";
526
527$v = array($gmlid,'istGebucht');
528$ress = pg_prepare("", $sql);
529$ress = pg_execute("", $v);
530if (!$ress) {
531        echo "\n<p class='err'>Keine Buchungsstelle.</p>\n";
532        if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}
533}
534$bs=0; // Z.Buchungsstelle
535while($rows = pg_fetch_array($ress)) {
536        $gmls=$rows["gml_id"]; // gml b-Stelle
537        $lfd=$rows["lfd"]; // BVNR
538
539        // B U C H U N G S B L A T T  zur Buchungsstelle (istBestandteilVon)
540        $sql ="SELECT b.gml_id, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung as blatt, b.blattart, ";
541        $sql.="z.bezeichnung ";  // stelle -> amtsgericht
542        $sql.="FROM alkis_beziehungen v "; // Bez. Stelle - Blatt
543        $sql.="JOIN ax_buchungsblatt b ON v.beziehung_zu=b.gml_id ";
544        $sql.="LEFT JOIN ax_buchungsblattbezirk z ON z.land=b.land AND z.bezirk=b.bezirk ";
545        $sql.="WHERE v.beziehung_von= $1 "; // id Buchungsstelle
546        $sql.="AND v.beziehungsart= $2 ";
547        $sql.="ORDER BY b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung ;";
548
549        $v = array($gmls,'istBestandteilVon');
550        $resg = pg_prepare("", $sql);
551        $resg = pg_execute("", $v);
552        if (!$resg) {
553                echo "\n<p class='err'>Kein Buchungsblatt.</p>\n";
554                if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmls."'</p>";}
555        }
556        $bl=0; // Z.Blatt
557        while($rowg = pg_fetch_array($resg)) {
558                $gmlg=$rowg["gml_id"];
559                $beznam=$rowg["bezeichnung"];
560                $blattkeyg=$rowg["blattart"];
561                $blattartg=blattart($blattkeyg);
562
563                echo "\n<hr>";
564                echo "\n<table class='outer'>";
565                echo "\n<tr>"; // 1 row only
566                        echo "\n\t<td>"; // Outer linke Spalte:
567
568                                // Rahmen mit GB-Kennz
569                                if ($blattkeyg == 1000) {
570                                        echo "\n\t<table class='kennzgb' title='Bestandskennzeichen'>";
571                                }else {
572                                        echo "\n\t<table class='kennzgbf' title='Bestandskennzeichen'>"; // dotted
573                                }
574                                        echo "\n\t<tr>\n\t\t<td class='head'>Bezirk</td>";
575                                                echo "\n\t\t<td class='head'>".$blattartg."</td>";
576                                                echo "\n\t\t<td class='head'>Lfd-Nr.</td>";
577                                                echo "\n\t\t<td class='head'>Buchungsart</td>";
578                                        echo "\n\t</tr>";
579                                        echo "\n\t<tr>";
580                                                echo "\n\t\t<td title='Grundbuchbezirk'>";
581                                                        if ($showkey) {
582                                                                echo "<span class='key'>".$rowg["bezirk"]."</span><br>";
583                                                        }
584                                                echo $beznam."&nbsp;</td>";
585
586                                                echo "\n\t\t<td title='Grundbuch-Blatt'><span class='wichtig'>".$rowg["blatt"]."</span></td>";
587
588                                                echo "\n\t\t<td title='Bestandsverzeichnis-Nummer (BVNR, Grundst&uuml;ck)'>".$rows["lfd"]."</td>";
589
590                                                echo "\n\t\t<td title='Buchungsart'>";
591                                                        if ($showkey) {
592                                                                echo "<span class='key'>".$rows["buchungsart"]."</span><br>";
593                                                        }
594                                                echo $rows["bart"]."</td>";
595                                        echo "\n\t</tr>";
596                                echo "\n\t</table>";
597
598                                // Miteigentumsanteil
599                                if ($rows["zaehler"] <> "") {
600                                        echo "\n<p class='ant'>".$rows["zaehler"]."/".$rows["nenner"]."&nbsp;Anteil am Flurst&uuml;ck</p>";
601                                }
602                        echo "\n</td>";
603
604                        echo "\n<td>"; // Outer rechte Spalte: NW-Links
605                                if ($idanzeige) {
606                                        linkgml($gkz, $gmls, "Buchungsstelle");
607                                        echo "<br>";
608                                        linkgml($gkz, $gmlg, "Buchungsblatt");
609                                }
610                                echo "\n\t<p class='nwlink noprint'>weitere Auskunft:<br>";
611                                        echo "\n\t\t<a href='alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$gmlg."#bvnr".$lfd;
612                                                if ($idanzeige) {echo "&amp;id=j";}
613                                                if ($showkey)   {echo "&amp;showkey=j";}
614                                                if ($blattkeyg == 1000) {
615                                                        echo "' title='Grundbuchnachweis mit kompletter Eigent&uuml;merangabe'>";
616                                                } else {
617                                                        echo "' title='Grundbuchnachweis'>";
618                                                }
619                                                echo $blattartg." <img src='ico/GBBlatt_link.ico' width='16' height='16' alt=''>";
620                                        echo "</a>";
621                                echo "\n\t</p>";
622                        echo "\n</td>";
623                echo "\n</tr>";
624                echo "\n</table>";
625
626                // +++ Weitere Felder ausgeben? BeschreibungDesUmfangsDerBuchung
627                if ($rows["sond"] != "") {
628                        echo "<p class='sond' title='Sondereigentum'>Verbunden mit dem Sondereigentum<br>".$rows["sond"]."</p>";
629                }
630                if ($rows["nrpl"] != "") {
631                        echo "<p class='nrap' title='Nummer im Aufteilungsplan'>Nummer <span class='wichtig'>".$rows["nrpl"]."</span> im Aufteilungsplan.</p>";
632                }
633
634                // E I G E N T U E M E R, zum GB
635                // Person <-benennt< AX_Namensnummer  >istBestandteilVon-> AX_Buchungsblatt
636                if ($eig=="j") { // Wahlweise mit/ohne EigentÃŒmer
637                        $n = eigentuemer($con, $gmlg, false, ""); // ohne Adresse
638                        if ($n == 0) {
639                                if ($blattkeyg == 1000) {
640                                        echo "\n<p class='err'>Keine Namensnummer gefunden.</p>";
641                                        linkgml($gkz, $gmlg, "Buchungsblatt");
642                                } else {
643                                        echo "\n<p>ohne Eigent&uuml;mer.</p>";
644                                }
645                        }
646                }
647                $bl++;
648        }
649        if ($bl == 0) {
650                echo "\n<p class='err'>Kein Buchungsblatt gefunden.</p>";
651                echo "\n<p class='err'>Parameter: gml_id= ".$gmls.", Beziehung='istBestandteilVon'</p>";
652                linkgml($gkz, $gmls, "Buchungstelle");
653        }
654
655        // Buchungstelle  >an>  Buchungstelle  >istBestandteilVon>  BLATT  ->  Bezirk
656        $sql ="SELECT s.gml_id AS s_gml, s.buchungsart, s.laufendenummer as lfd, ";
657        // , s.beschreibungdesumfangsderbuchung as umf   ?
658        $sql.="s.zaehler, s.nenner, s.nummerimaufteilungsplan as nrpl, s.beschreibungdessondereigentums as sond, ";
659        $sql.="b.gml_id AS g_gml, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung as blatt, b.blattart, ";
660        $sql.="z.bezeichnung, a.bezeichner AS bart ";  // stelle -> amtsgericht
661        $sql.="FROM alkis_beziehungen an "; // Bez. Stelle - Stelle
662        $sql.="JOIN ax_buchungsstelle s ON an.beziehung_von = s.gml_id ";
663        $sql.="JOIN alkis_beziehungen v ON s.gml_id = v.beziehung_von "; // Bez. Stelle - Blatt
664        $sql.="JOIN ax_buchungsblatt  b ON v.beziehung_zu = b.gml_id ";
665        $sql.="LEFT JOIN ax_buchungsblattbezirk z ON z.land = b.land AND z.bezirk = b.bezirk ";
666        $sql.="LEFT JOIN ax_buchungsstelle_buchungsart a ON s.buchungsart = a.wert ";
667        $sql.="WHERE an.beziehung_zu = $1 "; // id herrschende Buchungsstelle
668        $sql.="AND an.beziehungsart = 'an' ";
669        $sql.="AND v.beziehungsart = 'istBestandteilVon' ";
670        $sql.="ORDER BY b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung;";
671        $v = array($gmls);
672        $resan = pg_prepare("", $sql);
673        $resan = pg_execute("", $v);
674        if (!$resan) {
675                echo "\n<p class='err'>Keine weiteren Buchungsstellen.</p>\n";
676                if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmls."'</p>";}
677        }
678        $an=0; // Stelle an Stelle
679        while($rowan = pg_fetch_array($resan)) {
680                $beznam=$rowan["bezeichnung"];
681                $blattkeyan=$rowan["blattart"]; // Schluessel von Blattart
682                $blattartan=blattart($blattkeyan);                 echo "\n<hr>\n<table class='outer'>";
683                echo "\n<tr>"; // 1 row only
684                        echo "\n<td>"; // outer linke Spalte
685                                // Rahmen mit Kennzeichen GB
686                                if ($blattkeyan == 1000) {
687                                        echo "\n\t<table class='kennzgb' title='Bestandskennzeichen'>";
688                                } else {
689                                        echo "\n\t<table class='kennzgbf' title='Bestandskennzeichen'>"; // dotted
690                                }
691                                        echo "\n\t<tr>";
692                                                echo "\n\t\t<td class='head'>Bezirk</td>";
693                                                echo "\n\t\t<td class='head'>".$blattartan."</td>";
694                                                echo "\n\t\t<td class='head'>Lfd-Nr,</td>";
695                                                echo "\n\t\t<td class='head'>Buchungsart</td>";
696                                        echo "\n\t</tr>";
697                                        echo "\n\t<tr>";
698                                                echo "\n\t\t<td title='Grundbuchbezirk'>";
699                                                if ($showkey) {echo "<span class='key'>".$rowan["bezirk"]."</span><br>";}
700                                                echo $beznam."</td>";
701
702                                                echo "\n\t\t<td title='Grundbuch-Blatt'><span class='wichtig'>".$rowan["blatt"]."</span></td>";
703
704                                                echo "\n\t\t<td title='Bestandsverzeichnis-Nummer (BVNR, Grundst&uuml;ck)'>".$rowan["lfd"]."</td>";
705
706                                                echo "\n\t\t<td title='Buchungsart'>";
707                                                        if ($showkey) {echo "<span class='key'>".$rowan["buchungsart"]."</span><br>";}
708                                                        echo $rowan["bart"];
709                                                echo "</td>";
710                                        echo "\n\t</tr>";
711                                echo "\n\t</table>";
712                                if ($rowan["zaehler"] <> "") {
713                                        echo "\n<p class='ant'>".$rowan["zaehler"]."/".$rowan["nenner"]."&nbsp;Anteil am Flurst&uuml;ck</p>";
714                                }
715                        echo "\n</td>";
716                        echo "\n<td>"; // outer rechte Spalte
717                                if ($idanzeige) {
718                                        linkgml($gkz, $rowan["s_gml"], "Buchungsstelle");
719                                        echo "<br>";
720                                        linkgml($gkz, $rowan["g_gml"], "Buchungsblatt");
721                                }
722                                echo "\n<br>";
723                                echo "\n\t<p class='nwlink'>";
724                                        echo "\n\t\t<a href='alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$rowan["g_gml"];
725                                                if ($idanzeige) {echo "&amp;id=j";}
726                                                if ($showkey)   {echo "&amp;showkey=j";}
727                                                echo "' title='Grundbuchnachweis mit kompletter Eigent&uuml;merangabe'>";
728                                                echo $blattartan;
729                                                echo " <img src='ico/GBBlatt_link.ico' width='16' height='16' alt=''>";
730                                        echo "</a>";
731                                echo "\n\t</p>";
732                        echo "\n\t</td>";
733                echo "\n</tr>";
734                echo "\n</table>";
735
736                if ($blattkeyan != 1000) {
737                        echo "\n<p>Blattart: ".$blattartan." (".$blattkeyan.").<br>\n";
738                }
739                // +++ BeschreibungDesUmfangsDerBuchung ?
740                if ($rowan["nrpl"] != "") {
741                        echo "<p class='nrap' title='Nummer im Aufteilungsplan'>Nummer <span class='wichtig'>".$rowan["nrpl"]."</span> im Aufteilungsplan.</p>";
742                }
743                if ($rowan["sond"] != "") {
744                        echo "<p class='sond' title='Sondereigentum'>Verbunden mit dem Sondereigentum<br>".$rowan["sond"]."</p>";
745                }
746                if ($eig == "j") {
747                        $n = eigentuemer($con, $rowan["g_gml"], false, ""); // ohne Adresse
748                }
749                $an++; 
750        }
751        pg_free_result($resan);
752        $bs++;
753}
754pg_free_result($resg);
755if ($bs == 0) {
756        echo "\n<p class='err'>Keine Buchungstelle gefunden.</p>";
757        linkgml($gkz, $gmlid, "Flurst&uuml;ck");
758}
759pg_close($con);
760echo <<<END
761
762<form action=''>
763        <div class='buttonbereich noprint'>
764        <hr>
765                <a title="zur&uuml;ck" href='javascript:history.back()'><img src="ico/zurueck.ico" width="16" height="16" alt="zur&uuml;ck" /></a>&nbsp;
766                <a title="Drucken" href='javascript:window.print()'><img src="ico/print.ico" width="16" height="16" alt="Drucken" /></a>&nbsp;
767                <a title="Export Flurst&uuml;cksdaten als CSV" href='javascript:ALKISexportFS()'><img src="ico/download_fs.ico" width="32" height="16" alt="Export" /></a>&nbsp;
768                <a title="Export Grundbuchdaten als CSV" href='javascript:ALKISexportGB()'><img src="ico/download_gb.ico" width="32" height="16" alt="Export" /></a>&nbsp;
769<!--    <a title="Seite schlie&szlig;en" href="javascript:window.close()"><img src="ico/close.ico" width="16" height="16" alt="Ende" /></a>     -->
770        </div>
771</form>
772END;
773
774footer($gmlid, $_SERVER['PHP_SELF']."?", "&amp;eig=".$eig);
775
776?>
777
778</body>
779</html>
Note: See TracBrowser for help on using the repository browser.