source: trunk/info/info/alkisn/alkisfkt.php @ 377

Revision 377, 15.6 KB checked in by frank.jaeger, 7 years ago (diff)

ALKIS-Auskunft: in info/alkis/ den Stand 372 wieder hergestellt (Versionen aus "alkisn" versehendlich dort hoch geladen).
In info/alkisn/ Nachbesserungen an Gebäude-Name und Nutzungsart.

Line 
1<?php
2/*      Modul: alkisfkt.php
3
4        ALKIS-Buchauskunft, Kommunales Rechenzentrum Minden-Ravensberg/Lippe (Lemgo).
5        Functions
6
7        Version:
8        2016-02-24 Version fuer norGIS-ALKIS-Import, "function linkgml" raus. Case-EntschlÃŒsselung raus.
9        2016-03-03 Hinweis auf Datenfehler wenn "ax_person" fehlt in function "eigentuemer"
10        2016-03-14 Kleine Korrekturen
11        2016-11-29 Gemeinsam genutzte Datenbanken ermöglichen (Filter Gemeinde)
12*/
13
14function footer($gmlid, $link, $append) {
15        // Einen Seitenfuss ausgeben.
16        // Die Parameter &gkz= und &gmlid= kommen in allen Modulen einheitlich vor
17        // Den URL-Parameter "&showkey=j/n" umschalten lassen.
18        // $append wird angehaengt wenn gefuellt. Anwendung: &eig=j bei FS-NW, &ltyp=m/p/o bei Lage
19        global $gkz, $showkey, $hilfeurl, $auth;
20
21        echo "\n<div class='confbereich noprint'>"
22        ."\n<table class='outer'>\n<tr>";
23
24        // Spalte 1: Info Benutzerkennung
25        if ($auth == "mapbender") {
26                $customer=$_SESSION["mb_user_name"];
27                echo "\n\t<td title='Info'><i>Benutzer:&nbsp;".$customer."</i></td>";
28        } else {
29                echo "\n\t<td>&nbsp;</td>";
30        }
31
32        // Spalte 2: Umschalter
33        echo "\n\t<td title='Konfiguration'>";
34                $mylink ="\n\t\t<a class='gmlid' href='".$link."gkz=".$gkz."&amp;gmlid=".$gmlid.$append;
35
36                if ($showkey) { // Umschalten SchlÃŒssel ein/aus
37                        echo $mylink."&amp;showkey=n' title='Verschl&uuml;sselungen ausblenden'>Schl&uuml;ssel aus</a>";
38                } else {
39                        echo $mylink."&amp;showkey=j' title='Verschl&uuml;sselungen anzeigen'>Schl&uuml;ssel ein</a>";
40                }
41        echo "\n\t</td>";
42
43        // Spalte 3
44        echo "\n\t<td title='Hilfe'>"
45        ."\n\t\t<p class='nwlink'>\n\t\t\t<a target='_blank' href='".$hilfeurl."' title='Dokumentation'>Hilfe zur ALKIS-Auskunft</a>\n\t\t</p>\n\t</td>"
46        ."\n</tr>\n</table>\n</div>\n";
47        return 0;
48}
49
50function ber_bs_hinw($gmls) {
51        // Unter einem Grundbuch-Link den Hinweis auf "berechtigte Buchungssstellen" anzeigen
52        // In FS-Nachweis wird nur der EigentÃŒmer des direkt gebuchten GrundstÃŒcks angezeigt.
53        // Den Erbbauberechtigten sieht man erst in der Grundbuch-Auskunft.
54        global $debug, $showkey;
55
56        // Buchungstelle dien. >an> Buchungstelle herr.
57        $sql ="SELECT count(sh.gml_id) AS anz, sh.buchungsart, a.v "
58        ."FROM ax_buchungsstelle sd JOIN ax_buchungsstelle sh ON sd.gml_id=ANY(sh.an) "
59        ."LEFT JOIN alkis_wertearten a ON sh.buchungsart=cast(a.k AS integer) "
60        ."WHERE sd.gml_id= $1 AND sh.endet IS NULL AND sd.endet IS NULL AND a.element='ax_buchungsstelle' and a.bezeichnung='buchungsart' "
61        ."GROUP BY sh.buchungsart, a.v;";
62
63        $v = array($gmls); // id dienende BS
64        $resan = pg_prepare("", $sql);
65        $resan = pg_execute("", $v);
66        if (!$resan) {
67                echo "\n<p class='err'>Fehler bei 'berechtigte Buchungsstellen'.</p>\n";
68                if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmls."'</p>";}
69        }
70        $an=0;
71        while($rowan = pg_fetch_array($resan)) {
72                $an++;
73                if ($an == 1) {echo "\n\t<br>\n\t<p class='nwlink' title='Andere Grundst&uuml;cke mit Rechten an diesem.'>Berechtigte Buchungen:<br><b>";}
74                if ($an > 1) {echo",<br>";} // kann es gemischste Buchungsarten geben?
75                echo $rowan["anz"]." ".htmlentities($rowan["v"], ENT_QUOTES, "UTF-8");
76                if ($showkey) {echo " <span class='key'>(".$rowan["buchungsart"].")</span>";}
77        }
78        if ($an == 0) {
79                echo "<br><p class='nwlink' title='Kein anderes Grundst&uuml;ck hat ein Recht an diesem.'>Keine berechtigte Buchung</p>";
80        } else {
81                echo "</b></p>";
82        }
83        pg_free_result($resan);
84}
85
86function kurz_namnr($lang) {
87        // Namensnummer kÃŒrzen. Nicht benötigte Stufen der Dezimalklassifikation abschneiden
88        $kurz=str_replace(".00","",$lang); // leere Stufen (nur am Ende)
89        $kurz=str_replace("0000","",$kurz); // ganz leer (am Anfang)
90        $kurz=ltrim($kurz, "0"); // fuehrende Nullen am Anfang
91        $kurz=str_replace(".0",".",$kurz); // fuehrende Null jeder Stufe
92        $kurz=rtrim($kurz); // Leerzeichen hinten
93        // echo "/n<p class='dbg'> lang='".$lang."'</p>/n<p class='dbg'> kurz='".$kurz."'</p>";
94        return $kurz;
95}
96
97function bnw_fsdaten($con, $lfdnr, $gml_bs, $ba, $anteil, $bvnraus, $bartkey, $bartstory) {
98/*      Bestandsnachweis - Flurstuecksdaten
99        Die Tabellenzeilen mit den Flurstuecksdaten zu einer Buchungsstelle im Bestandsnachweis ausgeben.
100        Die Funktion wird je einmal aufgerufen fÃŒr die Buchungen direkt auf dem GB (Normalfall).
101        Weiterere Aufrufe ggf. bei Erbbaurecht fÃŒr die mit "an" verknuepften Buchungsstellen.
102        Table-Tag und Tabellenkopf werden im aufrufenden Programm ausgegeben. */
103        global $debug, $gkz, $showkey, $filtkreis, $filtgem;
104
105        // F L U R S T U E C K
106        $sql="SELECT g.gemarkungsnummer, g.bezeichnung, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.regierungsbezirk, f.kreis, f.gemeinde, f.amtlicheflaeche
107        FROM ax_flurstueck f JOIN ax_buchungsstelle s ON f.istgebucht=s.gml_id
108        LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer
109        WHERE f.endet IS NULL AND s.endet IS NULL AND g.endet IS NULL AND s.gml_id= $1 ";
110        if ($filtgem == '' ) { // ungefiltert
111                $v=array($gml_bs);
112        } else {
113                $sql.="AND f.kreis = $2 AND f.gemeinde = $3 "; // ZustÀndiges Gebiet
114                $v=array($gml_bs, $filtkreis, $filtgem);
115        }
116        $sql.="ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;";
117        $resf = pg_prepare("", $sql);
118        $resf = pg_execute("", $v);
119        if (!$resf) {echo "<p class='err'>Fehler bei Flurst&uuml;ck</p>\n";}
120
121        if($bvnraus) { // nur bei direkten Buchungen die lfdNr ausgeben
122                $bvnr=str_pad($lfdnr, 4, "0", STR_PAD_LEFT);
123        } else {
124                $bvnr="";
125        }
126        $altlfdnr="";
127        $j=0;
128        while($rowf = pg_fetch_array($resf)) {
129                $flur=str_pad($rowf["flurnummer"], 3, "0", STR_PAD_LEFT);
130                // ohne fuehrende Nullen?
131                $fskenn=$rowf["zaehler"];
132                if ($rowf["nenner"] != "") { // Bruchnummer
133                        $fskenn.="/".$rowf["nenner"];
134                }
135                $flae=number_format($rowf["amtlicheflaeche"],0,",",".") . " m&#178;";
136
137                echo "\n<tr>"; // eine Zeile je Flurstueck
138                        // Sp. 1-3 der Tab. aus Buchungsstelle, nicht aus FS
139                        if($lfdnr == $altlfdnr) { // gleiches Grundstueck
140                                echo "\n\t<td>&nbsp;</td>"
141                                ."\n\t<td>&nbsp;</td>"
142                                ."\n\t<td>&nbsp;</td>";
143                        } else { // Sprungmarke, BVNR
144                                echo "\n\t<td>"
145                                        ."<a id='bvnr".$lfdnr."'></a><span class='wichtig'>".$bvnr."</span>" /// ++++ FEHLER?? $bvnr
146                                ."</td>";
147
148                                echo "\n\t<td title ='".$bartstory."'>"; // Buchungsart
149                                        if ($showkey) {echo "<span class='key'>".$bartkey."</span>&nbsp;";} // Schluessel
150                                        echo $ba; // entschluesselt
151                                echo "</td>"
152                                ."\n\t<td>&nbsp;</td>"; // Anteil
153                                $altlfdnr=$lfdnr;
154                        }
155                        //Sp. 4-7 aus Flurstueck
156                        echo "\n\t<td>";
157                        if ($showkey) {echo "<span class='key'>".$rowf["gemarkungsnummer"]."</span> ";}
158                        echo $rowf["bezeichnung"]."</td>"
159                        ."\n\t<td>".$flur."</td>"
160                        ."\n\t<td class='fsnr'><span class='wichtig'>".$fskenn."</span>"
161                        ."</td>"
162                        ."\n\t<td class='fla'>".$flae."</td>";
163
164                        echo "\n\t<td><p class='nwlink noprint'>"
165                                ."<a href='alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$rowf["gml_id"]."&amp;eig=n";
166                                        if ($showkey)   {echo "&amp;showkey=j";}
167                                        echo "' title='Flurst&uuml;cksnachweis'>Flurst&uuml;ck "
168                                        ."<img src='ico/Flurstueck_Link.png' width='16' height='16' alt=''>"
169                                ."</a>"
170                        ."</p></td>"
171                ."\n</tr>";
172
173                $j++;
174        } // Ende Flurstueck
175
176/*      if ($j == 0 ) { // nur Entw.
177                if ($debug > 1) {echo "<p class='dbg'>Keine FS gefunden</p>";}
178                if ($debug > 2) {echo "<p class='dbg'>SQL='".$sql."'<br>$1 = '".$gml_bs."'</p>";}
179        } */
180        pg_free_result($resf);
181        return $j;
182}
183
184function eigentuemer($con, $gmlid, $mitadresse, $lnkclass) {
185        // Tabelle mit Eigentuemerdaten zu einem Grundbuchblatt ausgeben
186        // Sp.1 = Namennummer, Sp. 2 = Name / Adresse, Sp. 3 = Link
187        // Parameter:
188        //      $gmlid = ID GB-Blattes
189        //      $mitadresse = Option (true/false) ob die Adresszeile ausgegeben werden soll
190        // Return = Anzahl Namensnummern
191
192        // Schleife 1: N a m e n s n u m m e r
193        // Beziehung: ax_namensnummer >istBestandteilVon> ax_buchungsblatt
194        global $debug, $gkz, $showkey;
195
196        // Link ÃŒber Java-Class? (Ja in alkisinlayausk.php, sonst normal)
197        if ($lnkclass == "") {
198                $lnkvor = "";
199                $lnknach = "";
200        } else {
201                $lnkvor  = "javascript:".$lnkclass."(\"";
202                $lnknach = "\")";
203        } // Beispiel-Link href='javascript:imFenster(\"alkislage.php?gkz= ... ."\")'>xxx ";
204
205        $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
206FROM ax_namensnummer n
207LEFT JOIN alkis_wertearten wn ON cast(n.artderrechtsgemeinschaft AS character varying)=wn.k AND wn.element='ax_namensnummer' AND wn.bezeichnung='artderrechtsgemeinschaft'
208LEFT JOIN alkis_wertearten we ON cast(n.eigentuemerart AS character varying)=we.k AND we.element='ax_namensnummer' AND we.bezeichnung='eigentuemerart'
209WHERE n.istbestandteilvon= $1 AND n.endet IS NULL ORDER BY n.laufendenummernachdin1421;";
210
211        $v = array($gmlid); // 16 Stellen bei Relationen
212        $resn = pg_prepare("", $sqln);
213        $resn = pg_execute("", $v);
214
215        if (!$resn) {
216                echo "\n<p class='err'>Fehler bei Eigent&uuml;mer</p>\n";
217                if ($debug > 2) {echo "<p class='err'>SQL=<br>".$sqln."<br>$1=gml= '".$gmlid."'</p>";}
218        }
219
220        echo "\n<table class='eig'>";
221        $n=0; // Z.NamNum.
222
223        while($rown = pg_fetch_array($resn)) {
224                $gmlnn=$rown["gml_id"];
225                $namnum=kurz_namnr($rown["lfd"]);
226                $rechtsg=$rown["adr"];
227                echo "\n<tr>"
228                        ."\n\t<td class='nanu' title='Namens-Nummer'>\n\t\t<p>" // Sp. 1
229                                .$namnum."&nbsp;" // VOR die Tabelle: "EigentÃŒmer"
230                        ."</p>\n\t</td>"
231                        . "\n\t<td>"; // Sp. 2
232                        if ($rechtsg != "" ) {
233                                if ($rechtsg == 9999) { // sonstiges
234                                        echo "\n\t\t<p class='zus' title='Beschrieb der Rechtsgemeinschaft'>".htmlentities($rown["beschr"], ENT_QUOTES, "UTF-8")."</p>";
235                                } else {
236                                        echo "\n\t\t<p class='zus' title='Art der Rechtsgemeinschaft'>".htmlentities($rown["adrv"], ENT_QUOTES, "UTF-8")."</p>";
237                                }
238                        }
239                        //if ($rown["anlass"] > 0 ) {echo "<p>Anlass=".$rown["anlass"]."</p>";} // TEST:
240
241                        // Schleife Ebene 2: andere Namensnummern
242                        // Beziehung   ax_namensnummer >bestehtAusRechtsverhaeltnissenZu>  ax_namensnummer
243
244                        // Die Relation 'Namensnummer' besteht aus RechtsverhÀltnissen zu 'Namensnummer' sagt aus,
245                        // dass mehrere Namensnummern zu einer Rechtsgemeinschaft gehören können.
246                        // Die Rechtsgemeinschaft selbst steht unter einer eigenen AX_Namensnummer,
247                        // die zu allen Namensnummern der Rechtsgemeinschaft eine Relation besitzt.
248
249                // Schleife 2: P e r s o n
250                // Beziehung: ax_person  <benennt<  ax_namensnummer
251
252        //      $sqlp="SELECT p.gml_id, p.nachnameoderfirma, p.vorname, p.geburtsname, p.geburtsdatum, p.namensbestandteil, p.akademischergrad "
253        //      ."FROM ax_person p JOIN ax_namensnummer nn ON nn.benennt=p.gml_id WHERE nn.gml_id= $1 AND p.endet IS NULL AND nn.endet IS NULL;";
254        //      $v = array($gmlnn);
255
256        // 03.03.16:
257                $sqlp="SELECT gml_id, nachnameoderfirma, vorname, geburtsname, geburtsdatum, namensbestandteil, akademischergrad "
258                ."FROM ax_person WHERE gml_id= $1 AND endet IS NULL;";
259                $gmlpers=$rown["benennt"];
260                $v = array($gmlpers); // gml_id von ax_person
261                $resp = pg_prepare("", $sqlp);
262                $resp = pg_execute("", $v);
263                if (!$resp) {
264                        echo "\n\t<p class='err'>Fehler bei Person</p>\n";
265                        if ($debug > 2) {echo "<p class='err'>SQL=<br>".$sqlp."<br>$1=gml= '".$gmlpers."'</p>";}
266                }
267
268                $i=0; // cnt Person
269                while($rowp = pg_fetch_array($resp)) { // Schleife weglassen? nn >benennt> Person ist KEIN Array!
270                        $diePerson=""; //++ Anrede?
271                        if ($rowp["akademischergrad"] <> "") {$diePerson=$rowp["akademischergrad"]." ";}
272                        $diePerson.=$rowp["nachnameoderfirma"];
273                        if ($rowp["vorname"] <> "") {$diePerson.=", ".$rowp["vorname"];}
274                        if ($rowp["namensbestandteil"] <> "") {$diePerson.=". ".$rowp["namensbestandteil"];}
275                        if ($rowp["geburtsdatum"] <> "") {$diePerson.=", geb. ".$rowp["geburtsdatum"];}
276                        if ($rowp["geburtsname"] <> "") {$diePerson.=", geb. ".$rowp["geburtsname"];}
277                        $diePerson=htmlentities($diePerson, ENT_QUOTES, "UTF-8"); // Umlaute
278
279                        if ($i > 0) { // Spalte 1 enthÀlt die Namensnummer, nur in Zeile 0
280                                echo "\n<tr>\n\t<td>&nbsp;</td>\n\t<td>";
281                        }
282                        // Spalte 2 = Angaben
283                        $eiartkey=$rown["eigentuemerart"]; // Key
284                        $eiart=$rown["eiartv"]; // Value
285                        echo "\n\t\t<p class='geig' title='Eigent&uuml;merart: ".$eiart."'>".$diePerson."</p>\n\t</td>";
286
287                        // Spalte 3 = Link
288                        echo "\n\t<td>\n\t\t<p class='nwlink noprint'>";
289                                if ($showkey AND $eiartkey != '') { // oft leer
290                                                echo "<span class='key'>(".$eiartkey.")</span> ";
291                                }
292                                echo "\n\t\t<a href='".$lnkvor."alkisnamstruk.php?gkz=".$gkz."&amp;gmlid=".$rowp[0];
293                                if ($showkey)   {echo "&amp;showkey=j";}
294                                echo $lnknach."' title='vollst&auml;ndiger Name und Adresse eines Eigent&uuml;mers'>".$eiart
295                                ." <img src='ico/Eigentuemer.png' width='16' height='16' alt=''></a>\n\t\t</p>"
296                        ."\n\t</td>\n</tr>";
297
298                        if ($mitadresse) {
299                                // Schleife 3:  A d r e s s e  (OPTIONAL)
300                                $sqla ="SELECT a.gml_id, a.ort_post, a.postleitzahlpostzustellung AS plz, a.strasse, a.hausnummer, a.bestimmungsland "
301                                ."FROM ax_anschrift a JOIN ax_person p ON a.gml_id=ANY(p.hat) WHERE p.gml_id= $1 AND a.endet IS NULL AND p.endet IS NULL LIMIT 2;";
302                                $gmlp=$rowp["gml_id"]; // Person
303                                $v = array($gmlp);
304                                $resa = pg_prepare("", $sqla);
305                                $resa = pg_execute("", $v);
306
307                                if (!$resa) {
308                                        echo "\n\t<p class='err'>Fehler bei Adressen</p>\n";
309                                        if ($debug > 2) {echo "<p class='err'>SQL=<br>".$sqla."<br>$1=gml= '".$gmlp."'</p>";}
310                                }
311                                $j=0;
312                                while($rowa = pg_fetch_array($resa)) {
313                                        $j++;
314                                        if ($j == 1) { // erste Adresse anzeigen
315                                                $gmla=$rowa["gml_id"];
316                                                $plz=$rowa["plz"]; // integer
317                                                if($plz == 0) {
318                                                        $plz="";
319                                                } else {
320                                                        $plz=str_pad($plz, 5, "0", STR_PAD_LEFT);
321                                                }
322                                                $ort=htmlentities($rowa["ort_post"], ENT_QUOTES, "UTF-8");
323                                                $str=htmlentities($rowa["strasse"], ENT_QUOTES, "UTF-8");
324                                                $hsnr=$rowa["hausnummer"];
325                                                $land=htmlentities($rowa["bestimmungsland"], ENT_QUOTES, "UTF-8");
326
327                                                echo "\n<tr>\n\t<td>&nbsp;</td>"; //Sp. 1
328                                                echo "\n\t<td><p class='gadr'>"; //Sp. 2
329                                                if ($str.$hsnr != "") {echo $str." ".$hsnr."<br>";}
330                                                if ($plz.$ort != "") {echo $plz." ".$ort;}
331                                                if ($land != "" and $land != "DEUTSCHLAND") {echo ", ".$land;}
332                                                echo "</p></td>\n\t<td>"; // Sp. 3
333                                                echo "&nbsp;</td>\n</tr>";
334                                        } else { // manchmal dopplete Angaben (_straße / _str.)
335                                                echo "\n<tr>\n\t<td>&nbsp;</td>\n\t<td><p class='dbg' title='Siehe Auskunft zur Person'>weitere Adresse</p></td>\n\t<td>&nbsp;</td>\n</tr>";
336                                        }
337                                }
338                                pg_free_result($resa);
339                        }
340                        // 'keine Adresse' kann vorkommen, z.B. "Deutsche Telekom AG"
341
342                        $i++; // cnt Person
343
344                        // Anteil als eigene Tab-Zeile:
345                        $zaehler=$rown["zaehler"];
346                        if ($zaehler != "") {
347                                $zaehler=str_replace(".", ",", $zaehler); // Dezimal-KOMMA wenn dem Notar der Bruch nicht reicht
348                                $nenner=str_replace(".", ",", $rown["nenner"]);
349                                $comnt="Anteil der Berechtigten in Bruchteilen (Par. 47 GBO) an einem gemeinschaftlichen Eigentum (Grundst&uuml;ck oder Recht).";
350                                echo "\n<tr>\n\t<td>&nbsp;</td>" // Sp. 1
351                                ."\n\t<td><p class='avh' title='".$comnt."'>".$zaehler."/".$nenner." Anteil</p></td>"
352                                ."\n\t<td>&nbsp;</td>\n</tr>"; // Sp. 3
353                        }
354                } // End Loop Person
355                if ($i == 0) { // Kine Parson. Kommt vor hinter Zeile "Erbengemeinschaft", ist dann KEIN Fehler
356                        if ($rechtsg != 9999) {
357                                echo "\n<p class='err'>(Die Person mit der ID '".$gmlpers."' fehlt im Datenbestand)</p>";
358                        } else {
359                                if ($debug > 1) { // nur bei Entwicklung
360                                        echo "\n\t\t<p class='dbg'>Rechtsgemeinschaft = '".$rechtsg."'</p>";
361                                }
362                        }
363                        echo "</td>\n\t<td>&nbsp;</td>\n</tr>";
364                }
365                $n++; // cnt NamNum
366        } // End Loop NamNum
367        echo "\n</table>";
368        if ($n == 0) { // bei "Fiktives Blatt" KEIN Fehler
369                if ($debug > 1) {
370                        echo "\n<p class='dbg'>keine Namensnummern zum Blatt</p>";
371                        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqln."<br>$1=gml(Blatt)= '".$gmlid."'</p>";}
372                }
373        }
374        pg_free_result($resn);
375        return $n;
376} // End function eigentuemer
377
378?>
Note: See TracBrowser for help on using the repository browser.