Changeset 399
- Timestamp:
- 02/15/18 17:46:51 (6 years ago)
- Location:
- trunk
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/info/info/alkisn/alkisfsnw.php
r394 r399 16 16 2017-10-17 Zeitpunkt der Entstehung in deutschen Datumsformat 17 17 2017-11-03 Wertelisten fÃŒr Arrays in BodenschÀtzung ausgeben. 18 19 ToDo: 18 2017-12-08 Planung (Kommentare) der Erweiterung fÃŒr Berechtigte GrundbÃŒcher 19 2017-12-20 Links auf Lagebezeichnung verbessert. 20 21 +++ ToDo: +++ 22 - Wenn nur 1 Buchung auf der nÀchsten Stufe "Recht an" vorliegt (z.B. Erbbaurecht), dann sofort anzeigen. $berbu='' 23 Bei vielen Buchungen auf der nÀchsten Stufe (Miteigentumsanteil) nur die Anzahl, erst auf Anforderung (Parameter) &berbu='j' oder 2,3,4,fÃŒr maximale Stufen. 24 Anzahl weiterer "Rechte an" auf jeder Stufe anzeigen, auch wenn noch kein Link möglich ist. 25 MEHR: Alle "Rechte an" RÃŒckwÀrts auflisten analog View "buchungsrechte_3text". Bis zu 4 Buchungen weit. 26 Im Gegensatz zum "Bestandsnachweis" aber nur je eine BVNR weiter verfolgen, die auf dies eine FlurstÃŒck bezogen ist. 27 Dabei berechtigte Buchungen VOR dem Grundbuch anzeigen, also eine Berechtigungs-"Hierarchie" abbilden. 20 28 - Parameter zum Umschalten mit/ohne BodenschÀtzung? 21 29 - Bessere Differenzierung bei den Nutzungsarten (Tabelle dafÃŒr aufbauen) … … 286 294 // ** L a g e b e z e i c h n u n g ** 287 295 288 // Lagebezeichnung MIT Hausnummer 296 // Lagebezeichnung M I T Hausnummer 297 289 298 // ax_flurstueck >weistAuf> AX_LagebezeichnungMitHausnummer 290 $sql="SELECT DISTINCT l.gml_id, l.gemeinde, l.lage, l.hausnummer, s.bezeichnung 299 $sql="SELECT DISTINCT l.gml_id, l.gemeinde, l.lage, l.hausnummer, s.bezeichnung, s.gml_id AS kgml 291 300 FROM ax_flurstueck f JOIN ax_lagebezeichnungmithausnummer l ON l.gml_id=ANY(f.weistauf) 292 301 JOIN ax_lagebezeichnungkatalogeintrag s ON l.land=s.land AND l.regierungsbezirk=s.regierungsbezirk AND l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage … … 306 315 } else { 307 316 $j=0; 317 $kgmlalt=""; 308 318 while($row = pg_fetch_array($res)) { 309 $sname = htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); // Str.-Name 319 $sname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); // Str.-Name 320 if (substr($sname, strlen($sname) -3, 3) == 'weg') { // Versuch fuer korrekten Satzbau 321 $slink=" am ".$sname; 322 } else { 323 $slink=" an der ".$sname; 324 } 325 $hsnr=$row["hausnummer"]; 310 326 echo "\n<tr>\n\t"; 311 327 if ($j == 0) { … … 319 335 echo "<span class='key' title='StraÃenschlüssel'>(".$row["lage"].")</span> "; 320 336 } 321 echo $sname." ".$row["hausnummer"]."</td>" 322 ."\n\t<td>\n\t\t<p class='nwlink noprint'>" 323 ."\n\t\t\t<a title='Lagebezeichnung mit Hausnummer' href='alkislage.php?gkz=".$gkz."&ltyp=m&gmlid=".$row["gml_id"]; 337 echo $sname." ".$hsnr."</td>"; 338 339 // rechte Spalte 340 echo "\n\t<td>\n\t\t<p class='nwlink noprint'>"; 341 342 // +++ davor auch Link "StraÃe" 343 $kgml=$row["kgml"]; // Wiederholung vermeiden 344 if ($kgml != $kgmlalt) { // NEUE Strasse vor Lage 345 $kgmlalt=$kgml; // Katalog GML-ID 346 echo "\n\t\t\t<a title='Flurstücke mit oder ohne Hausnummer".$slink."' " 347 ."href='alkisstrasse.php?gkz=".$gkz."&gmlid=".$kgml."'>Straße " 348 ."<img src='ico/Strassen.png' width='16' height='16' alt='STRA'></a> "; 349 } 350 351 echo "\n\t\t\t<a title='Flurstücke und Gebäude mit Hausnummer ".$hsnr."' href='alkislage.php?gkz=".$gkz."&ltyp=m&gmlid=".$row["gml_id"]; 324 352 if ($showkey) {echo "&showkey=j";} 325 353 echo "'>Lage <img src='ico/Lage_mit_Haus.png' width='16' height='16' alt=''></a>" … … 333 361 // +++ Verbesserung: mehrere HsNr zur gleichen StraÃe als Liste? 334 362 335 // Lagebezeichnung OHNE Hausnummer (Gewanne oder nur Strasse) 363 // Lagebezeichnung O H N E Hausnummer (Gewanne oder nur Strasse) 364 336 365 // ax_flurstueck >zeigtAuf> AX_LagebezeichnungOhneHausnummer 337 366 $sql ="SELECT l.gml_id, l.unverschluesselt, l.gemeinde, l.lage, s.bezeichnung … … 349 378 } 350 379 $j=0; 351 // Es wird auch eine Zeile ausgegeben, wenn kein Eintrag gefunden!352 380 while($row = pg_fetch_array($res)) { 353 $gewann = htmlentities($row["unverschluesselt"], ENT_QUOTES, "UTF-8");354 381 $skey=$row["lage"]; // Strassenschl. 355 382 $lgml=$row["gml_id"]; // key der Lage 356 if (!$gewann == "") { 383 $gewann = htmlentities($row["unverschluesselt"], ENT_QUOTES, "UTF-8"); 384 385 if ($gewann != "") { 357 386 echo "\n<tr>" 358 ."\n\t<td class='ll' title=' Lagebezeichnung'><img src='ico/Lage_Gewanne.png' width='16' height='16' alt=''> Gewanne:</td>"387 ."\n\t<td class='ll' title='unverschlüsselte Lagebezeichnung'><img src='ico/Lage_Gewanne.png' width='16' height='16' alt=''> Gewanne:</td>" 359 388 ."\n\t<td></td>" 360 389 ."\n\t<td class='lr' colspan='3'>".$gewann."</td>" 361 390 ."\n\t<td>\n\t\t<p class='nwlink noprint'>" 362 ."\n\t\t\t<a title=' Lagebezeichnung Ohne Hausnummer' href='alkislage.php?gkz=".$gkz."&ltyp=o&gmlid=".$lgml;391 ."\n\t\t\t<a title='Flurstücke mit der Gewanne ".$gewann."' href='alkislage.php?gkz=".$gkz."&ltyp=o&gmlid=".$lgml; 363 392 if ($showkey) {echo "&showkey=j";} 364 393 echo "'>\n\t\t\tLage <img src='ico/Lage_Gewanne.png' width='16' height='16' alt=''></a>" 365 394 ."\n\t\t</p>\n\t</td>" 366 395 ."\n</tr>"; 367 } 368 // Gleicher DB-Eintrag in zwei HTML-Zeilen, besser nur ein Link 369 if ($skey > 0) { 396 } elseif ($skey > 0) { 397 $sname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); // Str.-Name 398 if (substr($sname, strlen($sname) -3, 3) == 'weg') { // Versuch fuer korrekten Satzbau 399 $slink=" am ".$sname; 400 } else { 401 $slink=" an der ".$sname; 402 } 370 403 echo "\n<tr>" 371 404 ."\n\t<td class='ll'><img src='ico/Lage_an_Strasse.png' width='16' height='16' alt=''> Straße:</td>" 372 405 ."\n\t<td></td>" 373 406 ."\n\t<td class='lr' colspan='3'>"; 374 if ($showkey) { 375 echo "<span class='key'>(".$skey.")</span> ";376 } 377 echo $row["bezeichnung"]."</td>"378 ."\n\t<td>\n\t\t<p class='nwlink noprint'>"379 ."\n\t\t\t<a title=' Lagebezeichnung Ohne Hausnummer' href='alkislage.php?gkz=".$gkz."&ltyp=o&gmlid=".$lgml;407 if ($showkey) {echo "<span class='key'>(".$skey.")</span> ";} 408 echo $sname."</td>"; 409 410 // rechte Spalte 411 echo "\n\t<td>\n\t\t<p class='nwlink noprint'>" 412 ."\n\t\t\t<a title='FlurstÃŒcke ".$slink."' href='alkislage.php?gkz=".$gkz."&ltyp=o&gmlid=".$lgml; 380 413 if ($showkey) {echo "&showkey=j";} 381 414 echo "'>\n\t\t\tLage <img src='ico/Lage_an_Strasse.png' width='16' height='16' alt=''>\n\t\t\t</a>" … … 583 616 if ($showkey) {echo "&showkey=j";} 584 617 if ($cnt_adressen > 0) { // wenn Adresse vorgekommen ist 585 echo "' title='Gebäude nachweis'>Gebäude ";618 echo "' title='Gebäude auf oder an dem Flurstück'>Gebäude "; 586 619 } else { // GebÀude mit Adresse gibt es NICHT, das ist klar 587 620 echo "' title='Suche Gebäude ohne Adresse auf dem Flurstück oder angrenzende Gebäude'>Suche "; … … 740 773 ."\n\t<td class='fla sum' title='Summe der Ertragsmesszahlen für dies Flurstück'>".$gesertragsmz."</td>" 741 774 ."\n\t<td class='re'>".$klasflaedis."</td>\n\t<td colspan='3'> </td>\n</tr>"; 742 743 //} else { // Result ist leer744 // if ($debug > 1) {745 // echo "\n<p class='dbg'>Keine BodenschÀtzung gefunden</p>";746 // if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}747 // }748 775 } 749 776 750 777 // H i n w e i s auf Bodenneuordnung oder eine strittige Grenze 751 // b.name, b.artderfestlegung,752 778 $sql_boden ="SELECT a.k AS wert, a.v AS art_verf, b.gml_id AS verf_gml, b.bezeichnung AS verf_bez, 753 779 b.name AS verf_name, d.bezeichnung AS stelle_bez, d.stelle AS stelle_key … … 859 885 // Umschalter: FS-Nachweis ruft sich selbst mit geaendertem Parameter auf. Positionierung auf Marke "#gb" 860 886 if ($eig=="j") { 861 echo "&eig=n#gb' title=' Flurstücksnachweis'>ohne Eigentümer</a>";887 echo "&eig=n#gb' title='Umschalter: Flurstücksnachweis'>ohne Eigentümer</a>"; 862 888 } else { 863 echo "&eig=j#gb' title=' Flurstücks- und Eigentümernachweis'>mit Eigentümer "889 echo "&eig=j#gb' title='Umschalter: Flurstücks- und Eigentümernachweis'>mit Eigentümer " 864 890 ."<img src='ico/EigentuemerGBzeile.png' width='16' height='16' alt=''></a>"; 865 891 } -
trunk/mapbender/http/nav/alkisnav_adr.php
r376 r399 1 1 <?php 2 /* Navigation mit ALKIS-Daten im Mapbender 2.7 - Teil Adressen-Suche 3 Diese Version des Programms verwendet die Datenbank-Struktur aus dem norGIS-ALKIS-Importer. 4 2 /* Navigation mit ALKIS-Daten im Mapbender 2 - Teil Adressen-Suche 3 Datenbank-Struktur aus dem norGIS-ALKIS-Importer. 5 4 Version vom 6 5 2016-02-11 Version fÃŒr norGIS-ALKIS-Import aus Version Classic abgeleitet. 7 6 2016-03-02 $gemeinde auf feste LÀnge korrigieren 8 7 2016-11-28 Gemeinsam genutzte Datenbanken ermöglichen 9 10 8 2018-02-15 Strikte Input-Validation der Parameter 9 ToDo: 11 10 - Gruppierung (mit Zeile) der StraÃenliste nach Gemeinde 12 11 - Eingabe aus "Balken" von Buchauskunft "Lage" zulassen: Numerisch: Gem-Str-Haus-lfd … … 17 16 */ 18 17 19 // Variable Initialisieren20 $str_schl="";21 $skey="";22 23 18 $cntget = extract($_GET); 24 $gemeinde=str_pad($gemeinde, 3, "0", STR_PAD_LEFT); // temporÀr 19 20 // Input-Validation 21 // Parameter aus Konfiguration oder Links sollten keine "Eingabefehler" enthalten. 22 // Entweder falsche Konfiguration oder Hack. Programm sofort abbrechen. 23 if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} // Mandant, muss! 24 25 if(isset($epsg)) { // SRS, kann. Wenn als Parameter ... 26 if (preg_match('#^EPSG:[0-9]{4,5}$#', $epsg)) { // Prefix aus MB-Mapframe 27 $epsg = str_replace("EPSG:", "" , $epsg); 28 } elseif (!preg_match('#^[0-9]{4,5}$#', $epsg)) { // nur die Nummer 29 die("Eingabefehler epsg"); 30 } 31 } else { // Nichts ÃŒbergeben 32 $epsg=$gui_epsg; // dann default aus Conf 33 } 34 35 // Filter-Parameter fÃŒr Gemeindenummer in Kreis-Datenbank aus der Mapbender GUI-Konfiguration 36 if (isset($gemeinde) AND trim($gemeinde, '0') != "") { 37 if (!preg_match('#^[0-9]{1,3}$#', $gemeinde)) {die("Eingabefehler Gemeinde");} 38 $gemeinde=str_pad($gemeinde, 3, "0", STR_PAD_LEFT); 39 if(strpos($gemeinde, ",") === false) { 40 $gfilter = 1; // Einzelwert 41 } else { 42 $gfilter = 2; // Liste 43 } 44 } else { // Kein Filter 45 $gemeinde = ""; 46 $gfilter = 0; 47 } 48 // // http://skrzmaptest01.asp.krzwan.de/mapbender/nav/alkisnav_adr.php?gkz=210&gemeinde=004&epsg=25832&str_schl=0575800401798 49 if (isset($str_schl) ) { 50 if (!preg_match('#^[0-9]{4,13}$#', $str_schl)) {die("Eingabefehler Stra&zlig;enschlüssel");} 51 } else { 52 $str_schl=""; 53 } 54 25 55 include("../../conf/alkisnav_conf.php"); 26 56 include("alkisnav_fkt.php"); // Funktionen … … 75 105 } 76 106 77 $sql ="SELECT g.gemeinde, g.bezeichnung AS gemname, k.gml_id, k.bezeichnung, k.schluesselgesamt, k.lage 78 FROM ax_lagebezeichnungkatalogeintrag k79 JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde80 WHERE k.bezeichnung ILIKE $1 AND k.endet IS NULL AND g.endet IS NULL ";107 $sql ="SELECT g.gemeinde, g.bezeichnung AS gemname, k.gml_id, k.bezeichnung, k.schluesselgesamt, k.lage " 108 ."FROM ax_lagebezeichnungkatalogeintrag k " 109 ."JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde " 110 ."WHERE k.bezeichnung ILIKE $1 AND k.endet IS NULL AND g.endet IS NULL "; 81 111 82 112 switch ($gfilter) { … … 143 173 $match=str_pad($street, 5, "0", STR_PAD_LEFT); // "Wie eine Zahl" verarbeiten 144 174 } 145 $sql ="SELECT g.bezeichnung AS gemname, k.gml_id, k.bezeichnung, k.schluesselgesamt, k.lage 146 FROM ax_lagebezeichnungkatalogeintrag as k147 JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde148 WHERE k.lage LIKE $1 AND k.endet IS NULL AND g.endet IS NULL ";175 $sql ="SELECT g.bezeichnung AS gemname, k.gml_id, k.bezeichnung, k.schluesselgesamt, k.lage " 176 ."FROM ax_lagebezeichnungkatalogeintrag as k " 177 ."JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde " 178 ."WHERE k.lage LIKE $1 AND k.endet IS NULL AND g.endet IS NULL "; 149 179 switch ($gfilter) { 150 180 case 1: // Einzelwert … … 192 222 // Head 193 223 // Strasse zum Strassenschluessel 194 $sql ="SELECT g.bezeichnung AS gemname, k.gml_id AS kgml, k.bezeichnung, k.land, k.regierungsbezirk, k.kreis, k.gemeinde, k.lage 195 FROM ax_lagebezeichnungkatalogeintrag as k196 JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde197 WHERE k.schluesselgesamt = $1 AND k.endet IS NULL AND g.endet IS NULL LIMIT 1";224 $sql ="SELECT g.bezeichnung AS gemname, k.gml_id AS kgml, k.bezeichnung, k.land, k.regierungsbezirk, k.kreis, k.gemeinde, k.lage " 225 ."FROM ax_lagebezeichnungkatalogeintrag as k " 226 ."JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde " 227 ."WHERE k.schluesselgesamt = $1 AND k.endet IS NULL AND g.endet IS NULL LIMIT 1"; 198 228 199 229 $v=array($str_schl); // Schluessel-Gesamt .. … … 220 250 $sqlko ="SELECT "; 221 251 if($epsg == "25832") { // Transform nicht notwendig 222 $sqlko.="st_x(st_Centroid(f.wkb_geometry)) AS x, "; 223 $sqlko.="st_y(st_Centroid(f.wkb_geometry)) AS y "; 252 $sqlko.="st_x(st_Centroid(f.wkb_geometry)) AS x, st_y(st_Centroid(f.wkb_geometry)) AS y "; 224 253 } else { 225 $sqlko.="st_x(st_transform(st_Centroid(f.wkb_geometry), ".$epsg.")) AS x, " ;226 $sqlko.="st_y(st_transform(st_Centroid(f.wkb_geometry), ".$epsg.")) AS y ";254 $sqlko.="st_x(st_transform(st_Centroid(f.wkb_geometry), ".$epsg.")) AS x, " 255 ."st_y(st_transform(st_Centroid(f.wkb_geometry), ".$epsg.")) AS y "; 227 256 } 228 $sqlko.="FROM ax_lagebezeichnungohnehausnummer o "; 229 $sqlko.="JOIN ax_flurstueck f ON o.gml_id=ANY(f.zeigtauf) "; 230 $sqlko.="WHERE o.land= $1 AND o.regierungsbezirk= $2 AND o.kreis= $3 AND o.gemeinde= $4 AND o.lage= $5 "; 231 $sqlko.="LIMIT 1;"; // die erstbeste Koordinate 257 $sqlko.="FROM ax_lagebezeichnungohnehausnummer o JOIN ax_flurstueck f ON o.gml_id=ANY(f.zeigtauf) " 258 ."WHERE o.land= $1 AND o.regierungsbezirk= $2 AND o.kreis= $3 AND o.gemeinde= $4 AND o.lage= $5 LIMIT 1;"; // die erstbeste Koordinate 232 259 233 260 $v=array($land,$regb,$kreis,$gemnd,$nr); … … 249 276 250 277 if ($x > 0) { // Koord. bekommen? 251 echo "\n\t<a title='Positionieren 1:".$scalestr."' href='javascript:"; // mit Link 252 echo "transtitle(\"auf Straße positioniert\"); "; 253 echo "parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalestr."); "; 254 echo "parent.parent.showHighlight(".$x.",".$y."); "; 255 // echo "document.location.href=\"".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&gemeinde=".$gemeinde."&epsg=".$epsg."&str_schl=".$str_schl."\""; 256 echo "' "; // end href 257 echo "\n\t\tonmouseover='parent.parent.showHighlight(" .$x. "," .$y. ")' "; 258 echo "\n\t\tonmouseout='parent.parent.hideHighlight()'"; 259 echo ">\n\t\t".$sname." (".$nr.")\n\t</a>"; 278 echo "\n\t<a title='Positionieren 1:".$scalestr."' href='javascript:" // mit Link 279 ."transtitle(\"auf Straße positioniert\"); " 280 ."parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalestr."); " 281 ."parent.parent.showHighlight(".$x.",".$y."); " 282 ."' " // end href 283 ."\n\t\tonmouseover='parent.parent.showHighlight(" .$x. "," .$y. ")' " 284 ."\n\t\tonmouseout='parent.parent.hideHighlight()'" 285 .">\n\t\t".$sname." (".$nr.")\n\t</a>"; 260 286 } else { // keine Koord. gefunden 261 287 echo $sname." (".$nr.")"; // nur Anzeige, ohne Link … … 276 302 $sql="SELECT min(replace(h.hausnummer,' ','')) AS hsnr, "; 277 303 if($epsg == "25832") { // Transform nicht notwendig 278 $sql.="avg (st_x(p.wkb_geometry)) AS x, "; 279 $sql.="avg (st_y(p.wkb_geometry)) AS y "; 304 $sql.="avg (st_x(p.wkb_geometry)) AS x, avg (st_y(p.wkb_geometry)) AS y "; 280 305 } else { 281 $sql.="avg (st_x(st_transform(p.wkb_geometry,".$epsg."))) AS x, " ;282 $sql.="avg (st_y(st_transform(p.wkb_geometry,".$epsg."))) AS y ";283 } 284 $sql.="FROM ap_pto p JOIN ax_lagebezeichnungmithausnummer h ON h.gml_id=ANY(p.dientzurdarstellungvon) 285 WHERE p.art='HNR' AND h.land= $1 AND h.regierungsbezirk= $2 AND h.kreis= $3 AND h.gemeinde= $4 AND h.lage= $5286 AND p.endet IS NULL AND h.endet IS NULL287 GROUP BY lpad(split_part(hausnummer,' ',1), 4, '0'), split_part(hausnummer,' ',2)288 ORDER BY lpad(split_part(hausnummer,' ',1), 4, '0'), split_part(hausnummer,' ',2);";306 $sql.="avg (st_x(st_transform(p.wkb_geometry,".$epsg."))) AS x, " 307 ."avg (st_y(st_transform(p.wkb_geometry,".$epsg."))) AS y "; 308 } 309 $sql.="FROM ap_pto p JOIN ax_lagebezeichnungmithausnummer h ON h.gml_id=ANY(p.dientzurdarstellungvon) " 310 ."WHERE p.art='HNR' AND h.land= $1 AND h.regierungsbezirk= $2 AND h.kreis= $3 AND h.gemeinde= $4 AND h.lage= $5 " 311 ."AND p.endet IS NULL AND h.endet IS NULL " 312 ."GROUP BY lpad(split_part(hausnummer,' ',1), 4, '0'), split_part(hausnummer,' ',2) " 313 ."ORDER BY lpad(split_part(hausnummer,' ',1), 4, '0'), split_part(hausnummer,' ',2);"; 289 314 // Problem: In der Datenbank gibt es mehrere hausnummern-Koordinaten fÃŒr verschiedene 290 315 // MaÃstÀbe der Kartendarstellung … … 312 337 $x=$rowh["x"]; 313 338 $y=$rowh["y"]; 314 echo "\n\t<td class='hsnr'>"; 315 echo "<a href='"; 316 echo "javascript:"; 317 echo "transtitle(\"auf Haus ".$hsnr." positioniert\"); "; 318 echo "parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalehs."); "; 319 echo "parent.parent.showHighlight(".$x.",".$y.");' "; 320 echo "onmouseover='parent.parent.showHighlight(".$x.",".$y.")' "; 321 echo "onmouseout='parent.parent.hideHighlight()"; 322 echo "'>".$hsnr."</a>"; 323 echo "</td>"; 339 echo "\n\t<td class='hsnr'>" 340 ."<a href='javascript:transtitle(\"auf Haus ".$hsnr." positioniert\"); " 341 ."parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalehs."); " 342 ."parent.parent.showHighlight(".$x.",".$y.");' " 343 ."onmouseover='parent.parent.showHighlight(".$x.",".$y.")' " 344 ."onmouseout='parent.parent.hideHighlight()" 345 ."'>".$hsnr."</a>" 346 ."</td>"; 324 347 $cnt++; 325 348 $count++; … … 342 365 // Start hier! 343 366 // =========== 344 if(isset($epsg)) { 345 $epsg = str_replace("EPSG:", "" , $_REQUEST["epsg"]); 367 368 // Validation: Eingabefeld aus Formular. 369 // Suchbegriff (StraÃenname) oder StraÃenschlÃŒssel. 370 // Hier formatierte Meldung und html-Foot. 371 if (isset($street) and $street != "" ) { 372 if (!preg_match('#^[0-9a-zA-ZÀöÌÃÃÃÃ* -.]{1,25}$#', $street)) { 373 echo "<p class='err'>Eingabe unzulässig!</p>"; 374 $street=""; 375 } 346 376 } else { 347 $epsg=$gui_epsg; // aus Conf 348 } 349 350 // Filter auf Zustaendigkeit z.B. ein Stadtgebiet 351 if ($gemeinde == "") { 352 $gfilter = 0; // ungefiltert 353 } elseif(strpos($gemeinde, ",") === false) { 354 $gfilter = 1; // Einzelwert 355 } else { 356 $gfilter = 2; // Liste 357 } 358 // ax_lagebezeichnungkatalogeintrag.gemeinde: z.B. Classic='40' / NorBit = '040' 359 // Im Mapbender mit fuehrenden Nullen eingeben: gazetteer_alkis.SRC 360 // alkisnav.htm?..&gemeinde=040&.. 361 362 // +++Zerlegung Eingabe aus "Balken" von Buchauskunft "Lage": Numerisch: Gem-Str-Haus-lfd 363 364 if ($str_schl != "") { // Wert kommt aus aus Link 377 $street=""; 378 } 379 380 if ($str_schl != "") { // aus Link 365 381 $trans="Hausnummern zur Straße"; 366 382 suchHausZurStr(true); 367 // Wert aus Eingabe in Formular 368 } elseif($street != "") { 383 } elseif($street != "") { // Eingabe in Formular 369 384 if (trim($street, "*,0..9, ") == "") { // Zahl, ggf. mit Wildcard 370 385 $trans="Suche Straßenschlüssel \"".$street."\""; -
trunk/mapbender/http/nav/alkisnav_eig.php
r376 r399 1 1 <?php 2 /* Navigation mit ALKIS-Daten im Mapbender 2.7 - Teil EigentÃŒmer-Suche 3 Diese Version des Programms verwendet die Datenbank-Struktur aus dem norGIS-ALKIS-Importer. 4 5 Version vom 2 /* Navigation mit ALKIS-Daten im Mapbender 2 - Teil EigentÃŒmer-Suche 3 Datenbank-Struktur aus dem norGIS-ALKIS-Importer. 4 Version vom 6 5 2016-02-11 Version fÃŒr norGIS-ALKIS-Import aus Version Classic abgeleitet. 7 6 2016-03-02 $gemeinde auf feste LÀnge korrigieren 8 7 2016-07-18 Personendaten: Zeilen getauscht. Wie Brief-Anschrift. 9 8 2016-11-28 Gemeinsam genutzte Datenbanken ermöglichen 9 2018-02-15 Strikte Input-Validation der Parameter 10 10 */ 11 11 12 // Variable initialisieren13 $gbkennz="";14 $blattgml="";15 $person ="";16 17 12 $cntget = extract($_GET); 18 $gemeinde=str_pad($gemeinde, 3, "0", STR_PAD_LEFT); // temporÀr .. 13 14 // Input-Validation 15 // Parameter aus Konfiguration oder Links sollten keine "Eingabefehler" enthalten. 16 // Entweder falsche Konfiguration oder Hack. Programm sofort abbrechen. 17 if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} // Mandant, muss! 18 19 if(isset($epsg)) { // SRS, kann. Wenn als Parameter ... 20 if (preg_match('#^EPSG:[0-9]{4,5}$#', $epsg)) { // Prefix aus MB-Mapframe 21 $epsg = str_replace("EPSG:", "" , $epsg); 22 } elseif (!preg_match('#^[0-9]{4,5}$#', $epsg)) { // nur die Nummer 23 die("Eingabefehler epsg"); 24 } 25 } else { // Nichts ÃŒbergeben 26 $epsg=$gui_epsg; // dann default aus Conf 27 } 28 29 // Filter-Parameter fÃŒr Gemeindenummer in Kreis-Datenbank aus der Mapbender GUI-Konfiguration 30 if (isset($gemeinde) AND trim($gemeinde, '0') != "") { 31 if (!preg_match('#^[0-9]{1,3}$#', $gemeinde)) {die("Eingabefehler Gemeinde");} 32 $gemeinde=str_pad($gemeinde, 3, "0", STR_PAD_LEFT); 33 if(strpos($gemeinde, ",") === false) { 34 $gfilter = 1; // Einzelwert 35 } else { 36 $gfilter = 2; // Liste 37 } 38 } else { // Kein Filter 39 $gemeinde = ""; 40 $gfilter = 0; 41 } 42 if (isset($blattgml) and $blattgml != "" ) { 43 if (!preg_match('#^[0-9a-zA-Z]{16}$#', $blattgml)) {die("Eingabefehler GML-ID Blatt");} 44 } else { 45 $blattgml=""; 46 } 47 if (isset($person) and $person != "" ) { 48 if (!preg_match('#^[0-9a-zA-Z]{16}$#', $person)) {die("Eingabefehler GML-ID Person");} 49 } else { 50 $person=""; 51 } 52 if (isset($gbkennz) and $gbkennz != "" ) { // gggg-bbbbbbA-0001 53 if (!preg_match('#^[0-9A-E -]{4,17}$#', $gbkennz)) {die("Eingabefehler Grundbuch-Kennzeichen");} 54 } else { 55 $gbkennz=""; 56 } 57 19 58 include("../../conf/alkisnav_conf.php"); // Konfigurations-Einstellungen 20 59 include("alkisnav_fkt.php"); // Funktionen … … 53 92 function familiensuche() { 54 93 // Einen Link generieren, um nach anderen Personen mit gleichem Familiennamen (Nachnamen) zu suchen. 55 // Bei versehendlich falschem Vornamen muss nicht von vorn begonnen werden. 94 // Bei versehendlich falschem Vornamen muss somit nicht von vorn begonnen werden. 95 56 96 global $gkz, $gemeinde, $epsg, $name; 57 if(isset($name)) { // Familiensuche 58 echo "\n<div class='back' title='Andere Personen mit diesem Nachnamen'>"; 59 echo "\n\t\t<img class='nwlink' src='ico/Eigentuemer_2.png' width='16' height='16' alt='FAM' title='Andere Personen mit diesem Nachnamen'> "; 60 echo "\n<a class='back' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&gemeinde=".$gemeinde."&epsg=".$epsg."&name=".$name."'>\"".$name."\"</a>"; 61 echo "\n</div>\n<br>"; 97 $lnknam=urlencode(substr($name,0,50)); 98 $dspnam=htmlentities($name, ENT_QUOTES, "UTF-8"); 99 if(isset($name)) { 100 echo "\n<div class='back' title='Andere Personen mit diesem Nachnamen'>" 101 ."\n\t\t<img class='nwlink' src='ico/Eigentuemer_2.png' width='16' height='16' alt='FAM' title='Andere Personen mit diesem Nachnamen'> " 102 ."\n<a class='back' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&gemeinde=".$gemeinde."&epsg=".$epsg."&name=".$lnknam."'>\"".$dspnam."\"</a>" 103 ."\n</div>\n<br>"; 62 104 } 63 105 return; … … 68 110 global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $auskpath; // $debug 69 111 70 $sql ="SELECT p.nachnameoderfirma, p.vorname, p.geburtsdatum, p.namensbestandteil, 71 a.ort_post, a.postleitzahlpostzustellung AS plz, a.strasse, a.hausnummer72 FROM ax_person p LEFT JOIN ax_anschrift a ON a.gml_id=ANY(p.hat)73 WHERE p.gml_id= $1 AND p.endet IS NULL AND a.endet IS NULL LIMIT 1;";112 $sql ="SELECT p.nachnameoderfirma, p.vorname, p.geburtsdatum, p.namensbestandteil, " 113 ."a.ort_post, a.postleitzahlpostzustellung AS plz, a.strasse, a.hausnummer " 114 ."FROM ax_person p LEFT JOIN ax_anschrift a ON a.gml_id=ANY(p.hat) " 115 ."WHERE p.gml_id= $1 AND p.endet IS NULL AND a.endet IS NULL LIMIT 1;"; 74 116 // Es wird nur EINE Zeile ausgewertet 75 117 … … 160 202 161 203 if($match1 != '%'){ 162 $sql.="nachnameoderfirma ILIKE $1 AND p.vorname ILIKE $2 " ;163 $sql.="ORDER BY p.nachnameoderfirma, p.vorname LIMIT $3 ;";204 $sql.="nachnameoderfirma ILIKE $1 AND p.vorname ILIKE $2 " 205 ."ORDER BY p.nachnameoderfirma, p.vorname LIMIT $3 ;"; 164 206 $v=array($match, $match1, $linelimit); 165 207 }else{ 166 $sql.="nachnameoderfirma ILIKE $1 " ;167 $sql.="ORDER BY p.nachnameoderfirma, p.vorname LIMIT $2 ;";208 $sql.="nachnameoderfirma ILIKE $1 " 209 ."ORDER BY p.nachnameoderfirma, p.vorname LIMIT $2 ;"; 168 210 $v=array($match, $linelimit); 169 211 } … … 189 231 } elseif($cnt == 1){ // Eindeutig! 190 232 $person = $persongml; 233 $name = $nachname; // familiensuche() verwendet sonst den Suchbegriff 191 234 } else { 192 235 echo "\n<p class='anz'>".$cnt." Eigentümer mit '".$name."'</p>"; // im Limit … … 213 256 // Body 214 257 // Suche nach GrundbÃŒchern der Person 215 $sql ="SELECT gb.gml_id AS gml_g, gb.buchungsblattnummermitbuchstabenerweiterung as blatt, b.bezirk, b.bezeichnung AS beznam 216 FROM ax_namensnummer n JOIN ax_buchungsblatt gb ON n.istbestandteilvon=gb.gml_id217 JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk218 WHERE n.bennennt = $1 AND n.endet IS NULL AND gb.endet IS NULL AND b.endet IS NULL;";258 $sql ="SELECT gb.gml_id AS gml_g, gb.buchungsblattnummermitbuchstabenerweiterung as blatt, b.bezirk, b.bezeichnung AS beznam " 259 ."FROM ax_namensnummer n JOIN ax_buchungsblatt gb ON n.istbestandteilvon=gb.gml_id " 260 ."JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk " 261 ."WHERE n.bennennt = $1 AND n.endet IS NULL AND gb.endet IS NULL AND b.endet IS NULL;"; 219 262 220 263 // Parameter $gbkennz, z.B. nach Klick auf Zeile "Bezirk" … … 275 318 $nxtbltblatt=urlencode($blatt); 276 319 $nxtbltseite=$bltseite + 1; 277 echo "\n - <a class='blt' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&gemeinde=".$gemeinde."&epsg=".$epsg."&person=".$person."&bltbez=".$nxtbltbez."&bltblatt=".$nxtbltblatt."&bltseite=".$nxtbltseite."' " ;278 echo "title='Blättern ab ".htmlentities($beznam)." Blatt ".$blatt."'>weitere</a>";279 echo"</p>";320 echo "\n - <a class='blt' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&gemeinde=".$gemeinde."&epsg=".$epsg."&person=".$person."&bltbez=".$nxtbltbez."&bltblatt=".$nxtbltblatt."&bltseite=".$nxtbltseite."' " 321 ."title='Blättern ab ".htmlentities($beznam)." Blatt ".$blatt."'>weitere</a>" 322 ."</p>"; 280 323 } elseif($cnt == 1) { // Eindeutig! 281 324 $blattgml=$gml; // dann Stufe 3 gleich nachschieben … … 305 348 306 349 // Grundbuch-Daten ermitteln 307 $sql ="SELECT gb.gml_id AS gml_g, gb.buchungsblattnummermitbuchstabenerweiterung as blatt, b.bezirk, b.bezeichnung AS beznam " ;308 $sql.="FROM ax_buchungsblatt gb JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk ";309 $sql.="WHERE gb.gml_id= $1 AND gb.endet IS NULL and b.endet IS NULL LIMIT 1 ;";350 $sql ="SELECT gb.gml_id AS gml_g, gb.buchungsblattnummermitbuchstabenerweiterung as blatt, b.bezirk, b.bezeichnung AS beznam " 351 ."FROM ax_buchungsblatt gb JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk " 352 ."WHERE gb.gml_id= $1 AND gb.endet IS NULL and b.endet IS NULL LIMIT 1 ;"; 310 353 $v=array($blattgml); 311 354 $res=pg_prepare("", $sql); … … 353 396 354 397 // Baustein 1: SQL-Anfang fuer beide Varianten 355 $sql1 ="SELECT gb.gml_id AS gml_g, gb.buchungsblattnummermitbuchstabenerweiterung as blatt, b.bezirk, b.bezeichnung AS beznam, 356 s1.gml_id as bsgml, s1.laufendenummer AS lfd, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.gemeinde, ot.gemashl, trim(trailing from ot.gemarkung) AS gemarkungsname, ";398 $sql1 ="SELECT gb.gml_id AS gml_g, gb.buchungsblattnummermitbuchstabenerweiterung as blatt, b.bezirk, b.bezeichnung AS beznam, " 399 ."s1.gml_id as bsgml, s1.laufendenummer AS lfd, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.gemeinde, ot.gemashl, trim(trailing from ot.gemarkung) AS gemarkungsname, "; 357 400 if($epsg == "25832") { // Transform nicht notwendig 358 $sql1.="st_x(st_centroid(f.wkb_geometry)) AS x, "; 359 $sql1.="st_y(st_centroid(f.wkb_geometry)) AS y "; 401 $sql1.="st_x(st_centroid(f.wkb_geometry)) AS x, st_y(st_centroid(f.wkb_geometry)) AS y "; 360 402 } else { 361 $sql1.="st_x(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS x, " ;362 $sql1.="st_y(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS y ";403 $sql1.="st_x(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS x, " 404 ."st_y(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS y "; 363 405 } 364 406 365 407 // NamenNummer >istbestandteilvon> buchungsblatt <istbestandteilvon< buchungsstelle-1 366 $sql1.="FROM ax_namensnummer nn 367 JOIN ax_buchungsblatt gb ON gb.gml_id=nn.istbestandteilvon368 JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk369 JOIN ax_buchungsstelle s1 ON gb.gml_id=s1.istbestandteilvon ";408 $sql1.="FROM ax_namensnummer nn " 409 ."JOIN ax_buchungsblatt gb ON gb.gml_id=nn.istbestandteilvon " 410 ."JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk " 411 ."JOIN ax_buchungsstelle s1 ON gb.gml_id=s1.istbestandteilvon "; 370 412 371 413 // Baustein A: Auswahl 1 oder 2 … … 374 416 375 417 // buchungsStelle1 (herr.) >an> buchungsStelle2 (dien.) <istGebucht< FS 376 $sqla2 ="JOIN ax_buchungsstelle s2 ON s2.gml_id=ANY(s1.an) " ;377 $sqla2.="JOIN ax_flurstueck f ON s2.gml_id=f.istgebucht ";418 $sqla2 ="JOIN ax_buchungsstelle s2 ON s2.gml_id=ANY(s1.an) " 419 ."JOIN ax_flurstueck f ON s2.gml_id=f.istgebucht "; 378 420 379 421 // Baustein 2: SQL-Ende fuer beide Varianten 380 $sql2 ="JOIN gema_shl ot ON f.land || f.gemarkungsnummer = ot.gemashl ";// Ortsteil381 $sql2.="WHERE nn.benennt = $1 AND nn.endet IS NULL AND gb.endet IS NULL AND s1.endet IS NULL AND f.endet IS NULL ";422 $sql2 ="JOIN gema_shl ot ON f.land || f.gemarkungsnummer = ot.gemashl " // Ortsteil 423 ."WHERE nn.benennt = $1 AND nn.endet IS NULL AND gb.endet IS NULL AND s1.endet IS NULL AND f.endet IS NULL "; 382 424 $sqlw2="AND s2.endet IS NULL "; 383 425 … … 407 449 $bltwhere =""; 408 450 } else { // BlÀttern, Fortsetzen bei ... 409 $bltwhere ="AND ((b.bezeichnung > '".$bltbez."') " ;410 $bltwhere.="OR (b.bezeichnung = '".$bltbez."' AND gb.buchungsblattnummermitbuchstabenerweiterung > '".$bltblatt."') ";411 $bltwhere.="OR (b.bezeichnung = '".$bltbez."' AND gb.buchungsblattnummermitbuchstabenerweiterung = '".$bltblatt."' AND cast(s1.laufendenummer AS integer) >= ".$bltbvnr." )) ";451 $bltwhere ="AND ((b.bezeichnung > '".$bltbez."') " 452 ."OR (b.bezeichnung = '".$bltbez."' AND gb.buchungsblattnummermitbuchstabenerweiterung > '".$bltblatt."') " 453 ."OR (b.bezeichnung = '".$bltbez."' AND gb.buchungsblattnummermitbuchstabenerweiterung = '".$bltblatt."' AND cast(s1.laufendenummer AS integer) >= ".$bltbvnr." )) "; 412 454 } // FlurstÃŒcke in der angeblÀtterten BVNR werden ggf. wiederholt 413 455 … … 489 531 $nxtbltblatt=urlencode($blatt); 490 532 $nxtbltseite=$bltseite + 1; 491 echo "\n - <a class='blt' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&gemeinde=".$gemeinde."&epsg=".$epsg."&person=".$person ;492 echo "&gbkennz=".$zgbbez;// Filter Bezirk493 echo "&bltbez=".$nxtbltbez."&bltblatt=".$nxtbltblatt."&bltbvnr=".$bvnr."&bltseite=".$nxtbltseite."&bltrecht=ohne' ";494 echo "title='Blättern ab ".htmlentities($beznam)." Blatt ".$blatt." BVNR ".$bvnr."'>weitere</a>";495 echo"</p>";533 echo "\n - <a class='blt' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&gemeinde=".$gemeinde."&epsg=".$epsg."&person=".$person 534 ."&gbkennz=".$zgbbez // Filter Bezirk 535 ."&bltbez=".$nxtbltbez."&bltblatt=".$nxtbltblatt."&bltbvnr=".$bvnr."&bltseite=".$nxtbltseite."&bltrecht=ohne' " 536 ."title='Blättern ab ".htmlentities($beznam)." Blatt ".$blatt." BVNR ".$bvnr."'>weitere</a>" 537 ."</p>"; 496 538 } elseif($zfs1 > 1) { // Meldung (Plural) ab 2, im Limit 497 539 echo "\n<p class='anz'>"; … … 567 609 $nxtbltblatt=urlencode($blatt); 568 610 $nxtbltseite=$bltseite + 1; 569 echo "\n - <a class='blt' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&gemeinde=".$gemeinde."&epsg=".$epsg."&person=".$person ;570 echo "&gbkennz=".$zgbbez;// Filter Bezirk571 echo "&bltbez=".$nxtbltbez."&bltblatt=".$nxtbltblatt."&bltbvnr=".$bvnr."&bltseite=".$nxtbltseite."&bltrecht=nur' ";572 echo "title='Blättern ab ".htmlentities($beznam)." Blatt ".$blatt." BVNR ".$bvnr."'>weitere</a>";573 echo"</p>";611 echo "\n - <a class='blt' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&gemeinde=".$gemeinde."&epsg=".$epsg."&person=".$person 612 ."&gbkennz=".$zgbbez // Filter Bezirk 613 ."&bltbez=".$nxtbltbez."&bltblatt=".$nxtbltblatt."&bltbvnr=".$bvnr."&bltseite=".$nxtbltseite."&bltrecht=nur' " 614 ."title='Blättern ab ".htmlentities($beznam)." Blatt ".$blatt." BVNR ".$bvnr."'>weitere</a>" 615 ."</p>"; 574 616 } elseif($zfs2 > 1) { // ab 2 575 617 echo "\n<p class='anz'>"; … … 589 631 // 3. gb = gml_id des Grundbuches -> Suche nach FlurstÃŒcken 590 632 591 if(isset($epsg)) { 592 $epsg = str_replace("EPSG:", "" , $_REQUEST["epsg"]); 633 // Validation: Eingabefeld aus Formular. Wird aber auch an Link angehÀngt (LÀnge!) 634 // Suchbegriff (EigentÃŒmer) 635 // Hier formatierte Meldung und html-Foot. 636 if (isset($name) and $name != "" ) { 637 if (!preg_match('#^[a-zA-Z0-9ÀöÌÃÃÃÃ*,. \-&/]{1,50}$#', $name)) { 638 echo "<p class='err'>Eingabe unzulässig!</p>"; 639 // if ($debug > 1) {echo "<p class='err'>Name='".$name."' LÀnge='".strlen($name)."</p>";} 640 $name=""; 641 } 593 642 } else { 594 $epsg=$gui_epsg; // aus Conf 595 } 596 if ($gemeinde == "") { 597 $gfilter = 0; // Gemeinde ungefiltert 598 } elseif(strpos($gemeinde, ",") === false) { 599 $gfilter = 1; // Gemeinde Einzelwert 600 } else { 601 $gfilter = 2; // Gemeinde Filter-Liste 602 } 603 604 $kennztyp=ZerlegungGBKennz($gbkennz); // Grundbuch-Kennzeichen aus Parameter zerlegen: $z__ 643 $name=""; 644 } 645 646 $kennztyp=ZerlegungGBKennz($gbkennz); // Grundbuch-Kennzeichen aus Parameter zerlegen 605 647 // 2=Such Bezirk-Nummer, 3=Such Blatt, 4=Such Buchung BVNR 606 648 … … 633 675 if ($kennztyp > 1) { 634 676 $trans="Grdb. und Flst. von .. in .."; // Filter GB-Bez, 635 // darunter sind dann Name und Bezirk farblich markiert636 677 } else { 637 $trans="Grundb. und Flurst. von .."; // der EigentÃŒmersteht darunter678 $trans="Grundb. und Flurst. von .."; // Name steht darunter 638 679 } 639 680 getGBuFSbyPerson(); // Schritte 2+3 gleichzeitig, dabei Gemeinde-Filter auf Stufe 3 … … 645 686 getEigByName(); // Suchen nach Namensanfang 646 687 647 if($person != "") { // genau EIN Treffer zum Namen688 if($person != "") { // genau EIN Treffer zum gesuchten Namen 648 689 if ($gfilter == 0) { 649 690 $trans="Grundbücher zum Namen"; -
trunk/mapbender/http/nav/alkisnav_fkt.php
r376 r399 1 1 <?php 2 /* Navigation mit ALKIS-Daten im Mapbender 2 .7- Teil "Funktionen"2 /* Navigation mit ALKIS-Daten im Mapbender 2 - Teil "Funktionen" 3 3 (Wird nicht direkt aufgerufen sonden in den anderen Modulen eingebunden). 4 Diese Version des Programms verwendet die Datenbank-Struktur aus dem norGIS-ALKIS-Importer. 5 4 Datenbank-Struktur aus dem norGIS-ALKIS-Importer. 6 5 Version vom 7 6 2016-02-11 Version fÃŒr norGIS-ALKIS-Import aus Version Classic abgeleitet. 8 7 2016-11-28 Gemeinsam genutzte Datenbanken ermöglichen 8 2018-02-15 Ãberarbeitung des Code 9 9 */ 10 10 … … 94 94 } 95 95 if ($aktuell) {$cls=" aktuell";} else {$cls="";} 96 echo "\n<div class='ga".$cls."' title='Amtsgericht'>" ;97 echo "\n\t\t<img class='nwlink' src='ico/Gericht.png' width='16' height='16' alt='AG' title='Amtsgericht'> ";98 echo "AG <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&gemeinde=".$gemeinde."&epsg=".$epsg."&ag=".$anr."'>";99 echo $agd."</a> (".$anr.")";100 echo"\n</div>";96 echo "\n<div class='ga".$cls."' title='Amtsgericht'>" 97 ."\n\t\t<img class='nwlink' src='ico/Gericht.png' width='16' height='16' alt='AG' title='Amtsgericht'> " 98 ."AG <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&gemeinde=".$gemeinde."&epsg=".$epsg."&ag=".$anr."'>" 99 .$agd."</a> (".$anr.")" 100 ."\n</div>"; 101 101 return; 102 102 } … … 108 108 $gnamd=htmlentities($gnam, ENT_QUOTES, "UTF-8"); 109 109 if ($aktuell) {$cls=" aktuell";} else {$cls="";} 110 echo "\n<div class='gk".$cls."' title='GB-Bezirk'>" ;111 echo "\n\t\t<img class='nwlink' src='ico/GB-Bezirk.png' width='16' height='16' alt='Bez.' title='GB-Bezirk'> ";112 echo "<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&gemeinde=".$gemeinde."&epsg=".$epsg."&gbkennz=".$zgbbez;113 echo"&gbbeznam=".urlencode($gnam);114 if ($person != "") { // EigentÃŒmer-Suche115 echo "&person=".$person."'>";116 echo"Bezirk ".$gnamd."</a> (".$zgbbez.")";117 } else { // Grundbuch-Suche118 echo "'>";119 echo"Bezirk ".$gnamd."</a> (".suchfeld($zgbbez).")";120 }110 echo "\n<div class='gk".$cls."' title='GB-Bezirk'>" 111 ."\n\t\t<img class='nwlink' src='ico/GB-Bezirk.png' width='16' height='16' alt='Bez.' title='GB-Bezirk'> " 112 ."<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&gemeinde=".$gemeinde."&epsg=".$epsg."&gbkennz=".$zgbbez 113 ."&gbbeznam=".urlencode($gnam); 114 if ($person != "") { // EigentÃŒmer-Suche 115 echo "&person=".$person."'>" 116 ."Bezirk ".$gnamd."</a> (".$zgbbez.")"; 117 } else { // Grundbuch-Suche 118 echo "'>" 119 ."Bezirk ".$gnamd."</a> (".suchfeld($zgbbez).")"; 120 } 121 121 echo "\n</div>"; 122 122 return; … … 142 142 echo "\n\t<img class='nwlink' src='ico/GBBlatt.png' width='16' height='16' alt='Blatt' title='".$dientxt."GB-Blatt'>"; 143 143 } else { 144 echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisbestnw.php?gkz=".$gkz."&gmlid=".$blattgml."\")'>" ;145 echo "\n\t\t<img class='nwlink' src='ico/GBBlatt_link.png' width='16' height='16' alt='Blatt' title='Nachweis'>";146 echo"\n\t</a> ";144 echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisbestnw.php?gkz=".$gkz."&gmlid=".$blattgml."\")'>" 145 ."\n\t\t<img class='nwlink' src='ico/GBBlatt_link.png' width='16' height='16' alt='Blatt' title='Nachweis'>" 146 ."\n\t</a> "; 147 147 } 148 148 149 149 // Text, Self-Link 150 echo $nam." <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&gemeinde=".$gemeinde."&epsg=".$epsg ;151 echo"&blattgml=".$blattgml."&gbkennz=".$bezirk."-".$blattlnk;150 echo $nam." <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&gemeinde=".$gemeinde."&epsg=".$epsg 151 ."&blattgml=".$blattgml."&gbkennz=".$bezirk."-".$blattlnk; 152 152 153 153 echo "&gbbeznam=".urlencode($beznam); … … 176 176 } 177 177 if ($aktuell) {$cls=" aktuell";} else {$cls="";} 178 echo "\n<div class='gs".$cls."' title='".$ti."Grundstück'>" ;179 echo"\n\t<img class='nwlink' src='ico/Grundstueck.png' width='16' height='16' alt='GS' title='".$ti."Grundstück'> ".$re;178 echo "\n<div class='gs".$cls."' title='".$ti."Grundstück'>" 179 ."\n\t<img class='nwlink' src='ico/Grundstueck.png' width='16' height='16' alt='GS' title='".$ti."Grundstück'> ".$re; 180 180 if ($blattkennz == "") { // ohne Link 181 181 echo "Buchung ".$bvnra; 182 182 } else { 183 183 $gbkennlnk=urlencode($blattkennz."-".$bvnr); // Trailing Blanks! 184 echo "<a href='".$_SERVER['SCRIPT_NAME']. "?gkz=". $gkz."&gemeinde=".$gemeinde."&epsg=".$epsg."&buchunggml=".$buchunggml ;185 echo"&gbkennz=".$gbkennlnk."'>Buchung ".$bvnra."</a>";184 echo "<a href='".$_SERVER['SCRIPT_NAME']. "?gkz=". $gkz."&gemeinde=".$gemeinde."&epsg=".$epsg."&buchunggml=".$buchunggml 185 ."&gbkennz=".$gbkennlnk."'>Buchung ".$bvnra."</a>"; 186 186 } 187 187 echo "\n</div>"; … … 195 195 $bez=urlencode($gmdname); 196 196 if ($aktuell) {$cls=" aktuell";} else {$cls="";} 197 echo "\n<div class='gm".$cls."' title='Gemeinde'>" ;198 echo "\n\t\t<img class='nwlink' src='ico/Gemeinde.png' width='16' height='16' alt='Stadt'>";199 echo " Gem. <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&gemeinde=".$gemeinde."&epsg=".$epsg."&gm=".$gmdnr."&bez=".$bez."'>";200 echo " ".$stadt."</a> (".substr($gmdnr, 5).")";201 echo"\n</div>";197 echo "\n<div class='gm".$cls."' title='Gemeinde'>" 198 ."\n\t\t<img class='nwlink' src='ico/Gemeinde.png' width='16' height='16' alt='Stadt'>" 199 ." Gem. <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&gemeinde=".$gemeinde."&epsg=".$epsg."&gm=".$gmdnr."&bez=".$bez."'>" 200 ." ".$stadt."</a> (".substr($gmdnr, 5).")" 201 ."\n</div>"; 202 202 return; 203 203 } … … 221 221 if ($aktuell) {$cls=" aktuell";} else {$cls="";} 222 222 223 echo "\n<div class='gk".$cls."' title='Gemarkung'>" ;224 echo "\n\t\t<img class='nwlink' src='ico/Gemarkung.png' width='16' height='16' alt='GKG' title='Gemarkung'>";225 echo " OT <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&gemeinde=".$gemeinde."&epsg=".$epsg."&fskennz=".$gkgnr."'>";226 echo " ".$gnam."</a> (".substr($gkgnr, 2).")";227 echo"\n</div>";223 echo "\n<div class='gk".$cls."' title='Gemarkung'>" 224 ."\n\t\t<img class='nwlink' src='ico/Gemarkung.png' width='16' height='16' alt='GKG' title='Gemarkung'>" 225 ." OT <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&gemeinde=".$gemeinde."&epsg=".$epsg."&fskennz=".$gkgnr."'>" 226 ." ".$gnam."</a> (".substr($gkgnr, 2).")" 227 ."\n</div>"; 228 228 return; 229 229 } … … 234 234 235 235 if ($aktuell) {$cls=" aktuell";} else {$cls="";} 236 echo "\n<div class='fs".$cls."'>"; 237 echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisfsnw.php?gkz=".$gkz."&gmlid=".$fs_gml."\")'>"; 238 echo "\n\t\t<img class='nwlink' src='ico/Flurstueck_Link.png' width='16' height='16' alt='FS' title='Nachweis'>"; 239 echo "\n\t</a>\n\t"; 240 241 echo " <a title='Flurstück positionieren 1:".$scalefs."' href='"; 242 echo "javascript:"; 243 echo "transtitle(\"auf Flurstück positioniert\"); "; 244 echo "parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalefs."); "; 245 echo "parent.parent.showHighlight(".$x.",".$y.");' "; 246 echo "onmouseover='parent.parent.showHighlight(".$x.",".$y.")' "; 247 echo "onmouseout='parent.parent.hideHighlight()'>"; 236 echo "\n<div class='fs".$cls."'>" 237 ."\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisfsnw.php?gkz=".$gkz."&gmlid=".$fs_gml."\")'>" 238 ."\n\t\t<img class='nwlink' src='ico/Flurstueck_Link.png' width='16' height='16' alt='FS' title='Nachweis'>" 239 ."\n\t</a>\n\t"; 240 241 echo " <a title='Flurstück positionieren 1:".$scalefs."' href='" 242 ."javascript:transtitle(\"auf Flurstück positioniert\"); " 243 ."parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalefs."); " 244 ."parent.parent.showHighlight(".$x.",".$y.");' " 245 ."onmouseover='parent.parent.showHighlight(".$x.",".$y.")' " 246 ."onmouseout='parent.parent.hideHighlight()'>"; 248 247 249 248 if ($gmkg == "" ) { … … 262 261 263 262 $nnam=htmlentities($nachname, ENT_QUOTES, "UTF-8"); 264 $namlnk=urlencode( $nachname);263 $namlnk=urlencode(substr($nachname,0,50)); 265 264 $vnam=htmlentities($vorname, ENT_QUOTES, "UTF-8"); 266 // Link zur Auskunft Person ++ Icon differenzieren nach Eigentuemerart? 267 268 echo "<div class='pe'> 269 <a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisnamstruk.php?gkz=".$gkz."&gemeinde=".$gemeinde."&gmlid=".$persongml."\")'> 270 <img class='nwlink' src='ico/Eigentuemer.png' width='16' height='16' alt='EIG' title='Nachweis'> 271 </a> 272 <a title='Person' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&gemeinde=".$gemeinde."&epsg=".$epsg."&person=".$persongml."&name=".$namlnk."'>".$nnam.", ".$vnam."</a> 273 </div>"; 265 // Link zur Auskunft Person, Icon differenzieren nach Eigentuemerart? 266 echo "<div class='pe'>" 267 ."\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisnamstruk.php?gkz=".$gkz."&gemeinde=".$gemeinde."&gmlid=".$persongml."\")'>" 268 ."\n\t\t<img class='nwlink' src='ico/Eigentuemer.png' width='16' height='16' alt='EIG' title='Nachweis'>" 269 ."\n\t</a>" 270 ."\n\t<a title='Person' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&gemeinde=".$gemeinde."&epsg=".$epsg."&person=".$persongml."&name=".$namlnk."'>".$nnam.", ".$vnam."</a>" 271 ."</div>"; 274 272 return; 275 273 } … … 279 277 // Die Kopfzeile ÃŒber den Hausnummern hat einen zusÀtzlichen Koordinaten-Map-Link, das ist in der Liste zu aufwÀndig? 280 278 global $gkz, $gemeinde, $epsg, $auskpath, $gfilter, $debug; 281 //if ($debug > 1) {echo "<p class='dbg'>function zeile_strasse()<p>";} // Ablauf-Verfolgung282 279 283 280 echo "\n\t<div class='stl' title='Straßenschlüssel ".$skey."'>"; 284 281 285 282 // Icon -> Buchnachweis 286 echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisstrasse.php?gkz=".$gkz."&gmlid=".$kgml."\")'>" ;287 echo "\n\t\t<img class='nwlink' src='ico/Lage_mit_Haus.png' width='16' height='16' alt='STR' title='Auskunft Straße'>";288 echo"\n\t</a>";283 echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisstrasse.php?gkz=".$gkz."&gmlid=".$kgml."\")'>" 284 ."\n\t\t<img class='nwlink' src='ico/Lage_mit_Haus.png' width='16' height='16' alt='STR' title='Auskunft Straße'>" 285 ."\n\t</a>"; 289 286 // Zeile -> Suche HsNr 290 echo " <a class='st' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&gemeinde=".$gemeinde."&epsg=".$epsg."&str_schl=".$gkey."' title='in ".$gemname."'>".$sname ;291 echo"</a> (".$skey.")";287 echo " <a class='st' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&gemeinde=".$gemeinde."&epsg=".$epsg."&str_schl=".$gkey."' title='in ".$gemname."'>".$sname 288 ."</a> (".$skey.")"; 292 289 293 290 // Die Gemeinde dahinter falls mehrere möglich … … 311 308 $sql1 ="SELECT s1.laufendenummer AS lfd, s1.gml_id AS bsgml, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.gemeinde, "; 312 309 if($epsg == "25832") { // Transform nicht notwendig 313 $sql1.="st_x(st_centroid(f.wkb_geometry)) AS x, "; 314 $sql1.="st_y(st_centroid(f.wkb_geometry)) AS y, "; 310 $sql1.="st_x(st_centroid(f.wkb_geometry)) AS x, st_y(st_centroid(f.wkb_geometry)) AS y, "; 315 311 } else { 316 $sql1.="st_x(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS x, " ;317 $sql1.="st_y(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS y, ";312 $sql1.="st_x(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS x, " 313 ."st_y(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS y, "; 318 314 } 319 315 $sql1.="g.bezeichnung FROM ax_buchungsstelle s1 "; … … 323 319 324 320 // zwischen, Variante 2. Nur an oder "an" und "zu"? 325 $sqlz2 ="JOIN ax_buchungsstelle s2 ON s2.gml_id=ANY(s1.an) 326 JOIN ax_flurstueck f ON f.istgebucht=s2.gml_id ";321 $sqlz2 ="JOIN ax_buchungsstelle s2 ON s2.gml_id=ANY(s1.an) " 322 ."JOIN ax_flurstueck f ON f.istgebucht=s2.gml_id "; 327 323 328 324 // hinten gleich 329 $sql2="JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer 330 WHERE s1.istbestandteilvon = $1 AND f.endet IS NULL AND s1.endet IS NULL ";325 $sql2="JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer " 326 ."WHERE s1.istbestandteilvon = $1 AND f.endet IS NULL AND s1.endet IS NULL "; 331 327 332 328 switch ($gfilter) { -
trunk/mapbender/http/nav/alkisnav_fls.php
r376 r399 1 1 <?php 2 /* Navigation mit ALKIS-Daten im Mapbender 2.7 - Teil FlurstÃŒck-Suche 3 Diese Version des Programms verwendet die Datenbank-Struktur aus dem norGIS-ALKIS-Importer. 4 5 Hinweis: In der Mapbender-Konfiguration muss die Gemeindenummer nun 3stellig mit fÃŒhrenden 0 angegeben sein. 6 2 /* Navigation mit ALKIS-Daten im Mapbender 2 - Teil FlurstÃŒck-Suche 3 Datenbank-Struktur aus dem norGIS-ALKIS-Importer. 7 4 Version vom 8 5 2016-02-11 Version fÃŒr norGIS-ALKIS-Import aus Version Classic abgeleitet. 9 6 2016-03-02 $gemeinde auf feste LÀnge korrigieren 10 7 2016-11-28 Gemeinsam genutzte Datenbanken ermöglichen 8 2017-03-06 Korrektur: Gemeinde-Suche bei Kreis-DB in norGIS-Struktur 9 2018-02-15 Strikte Input-Validation der Parameter 11 10 */ 12 11 13 // Variable initialisieren14 $hist="n";15 $gm="";16 17 12 $cntget = extract($_GET); 18 $gemeinde=str_pad($gemeinde, 3, "0", STR_PAD_LEFT); // temporÀr bei Umstellung auf norGIS, besser im Mapbender 3stellig konfigurieren. 13 14 // Input-Validation 15 // Parameter aus Konfiguration oder Links sollten keine "Eingabefehler" enthalten. 16 // Entweder falsche Konfiguration oder Hack. Programm sofort abbrechen. 17 if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} // Mandant, muss! 18 19 if(isset($epsg)) { // SRS, kann. Wenn als Parameter ... 20 if (preg_match('#^EPSG:[0-9]{4,5}$#', $epsg)) { // Prefix aus MB-Mapframe 21 $epsg = str_replace("EPSG:", "" , $epsg); 22 } elseif (!preg_match('#^[0-9]{4,5}$#', $epsg)) { // nur die Nummer 23 die("Eingabefehler epsg"); 24 } 25 } else { // Nichts ÃŒbergeben 26 $epsg=$gui_epsg; // dann default aus Conf 27 } 28 29 // Filter-Parameter fÃŒr Gemeindenummer in Kreis-Datenbank aus der Mapbender GUI-Konfiguration 30 if (isset($gemeinde) AND trim($gemeinde, '0') != "") { 31 if (!preg_match('#^[0-9]{1,3}$#', $gemeinde)) {die("Eingabefehler Gemeinde");} 32 $gemeinde=str_pad($gemeinde, 3, "0", STR_PAD_LEFT); 33 if(strpos($gemeinde, ",") === false) { 34 $gfilter = 1; // Einzelwert 35 } else { 36 $gfilter = 2; // Liste 37 } 38 } else { // Kein Filter 39 $gemeinde = ""; 40 $gfilter = 0; 41 } 42 43 // Suche nach historischen FS 44 if(isset($hist)) { // Wenn ÃŒbergeben 45 if (!preg_match('#^[jn]{1}$#', $hist)) {die("Eingabefehler hist");} // Ja/Nein 46 if ($hist == "j") { 47 $phist = true; // als Boolean 48 } else { 49 $phist = false; 50 } 51 } else { // Nichts ÃŒbergeben 52 $phist = false; // default = aktuelle FS 53 } 54 55 // Gemeinde-Nummer als Link aus der Baumstruktur 56 if (isset($gm) ) { 57 if (!preg_match('#^[0-9]{8}$#', $gm)) {die("Eingabefehler gm");} 58 } else { 59 $gm=""; // Var. init. 60 } 61 19 62 include("../../conf/alkisnav_conf.php"); 20 63 include("alkisnav_fkt.php"); // Funktionen … … 252 295 switch ($gfilter) { 253 296 case 1: // Einzelwert 254 $sql.="WHERE substring(gemshl from 6 for 3) = '".$gemeinde."' "; break; 297 $sql.="WHERE substring(gemshl from 6 for 3) = '".$gemeinde."' "; 298 break; 255 299 case 2: // Liste 256 $sql.="WHERE substring(gemshl from 6 for 3) in ('".str_replace(",", "','", $gemeinde)."') "; break; 300 $sql.="WHERE substring(gemshl from 6 for 3) in ('".str_replace(",", "','", $gemeinde)."') "; 301 break; 257 302 default: break; 258 303 } 259 $sql.=" AND endet IS NULLORDER BY gemname LIMIT $1 ;";304 $sql.="ORDER BY gemname LIMIT $1 ;"; 260 305 $res=pg_prepare("", $sql); 261 306 $res=pg_execute("", array($linelimit)); … … 269 314 $gnr=$row["gemshl"]; 270 315 $gemeindename=$row["gemname"]; 271 zeile_gemeinde($gnr, $gemeindename );316 zeile_gemeinde($gnr, $gemeindename, false); 272 317 $cnt++; 273 318 } … … 327 372 if(preg_match("/\*/",$fskennz)){ 328 373 $match = trim(preg_replace("/\*/i","%", strtoupper($fskennz))); 374 // Durchsuchte Namenspalte ist rechts mit Leerstellen aufgefÃŒllt. Darum Wildcard am Ende erzwingen. 375 if (substr($match, strlen($match), 1) != "%") {$match.="%";} 329 376 } else { 330 377 $match = trim($fskennz)."%"; … … 333 380 // Pass auf! GemeindeschlÃŒssel ist in den beiden SchlÃŒsseltabellen linksbÃŒndig gefÃŒllt, 334 381 // aber unterschiedlich lang hinten mit Leerstellen aufgefÃŒllt. 335 $sql ="SELECT substring(g.gemshl from 1 for 8) AS gemshl, g.gemashl, trim(trailing from g.gemarkung) AS gemarkung, trim(trailing from s.gemname) AS gemname 336 FROM gema_shl g JOIN gem_shl s ON substring(g.gemshl from 1 for 8) = substring(s.gemshl from 1 for 8) WHERE g.gemarkung ILIKE $1 ";382 $sql ="SELECT substring(g.gemshl from 1 for 8) AS gemshl, g.gemashl, trim(trailing from g.gemarkung) AS gemarkung, trim(trailing from s.gemname) AS gemname " 383 ."FROM gema_shl g JOIN gem_shl s ON substring(g.gemshl from 1 for 8) = substring(s.gemshl from 1 for 8) WHERE g.gemarkung ILIKE $1 "; 337 384 338 385 switch ($gfilter) { … … 735 782 // Start hier! 736 783 // =========== 737 if(isset($epsg)) { 738 $epsg = str_replace("EPSG:", "" , $_REQUEST["epsg"]); 784 if ($debug >= 1) {echo "\n<p class='dbg'>gemeinde='".$gemeinde."'. gfilter='".$gfilter."'</p>";} 785 786 // Validation: Eingabefeld aus Formular. 787 // Suchbegriff (Gemarkungsname) oder FlurstÃŒcks-Kennzeichen (ll)gggg-fff-zzzz/nnn (11). 788 // Hier formatierte Meldung und html-Foot. 789 if (isset($fskennz) and $fskennz != "" ) { 790 if (!preg_match('#^[0-9a-zA-ZÀöÌÃÃÃÃ* -]{1,25}$#', $fskennz)) { 791 echo "<p class='err'>Eingabe unzulässig!</p>"; 792 $fskennz=""; 793 } 739 794 } else { 740 #if ($debug >= 1) {echo "\n<p class='dbg'>kein EPSG gesetzt</p>";} 741 $epsg=$gui_epsg; // Conf 742 } 743 744 // Filter aus Mapbender-GUI-Einbindung 745 if ($gemeinde == "") { 746 $gfilter = 0; 747 } elseif(strpos($gemeinde, ",") === false) { 748 $gfilter = 1; // Einzelwert 749 } else { 750 $gfilter = 2; // Liste 751 } 752 if ($hist == "j") {$phist = true;} else {$phist = false;} 753 795 $fskennz=""; 796 } 797 754 798 if($gm != "") { // Self-Link aus Gemeinde-Liste 755 799 $trans="Gemarkungen zur Gemeinde"; … … 821 865 } 822 866 823 // Nach Durchlaufen des PHP-Scriptes die zuletzt ausgefÃŒhrte Transaktion 824 // im Kopf des Ergebnisrahmens anzeigen. 867 // Nach Durchlaufen des PHP-Scriptes die zuletzt ausgefÃŒhrte Transaktion im Kopf des Ergebnisrahmens anzeigen. 825 868 // Dazu die im HTML-Header definierte Javascript-Function benutzen. 826 869 // Alternativ wird auch aus dem Javascript "positionieren Karte" dieser Titel gesetzt. … … 829 872 transtitle('".$trans."'); 830 873 </script>"; 831 832 874 ?> 833 875 -
trunk/mapbender/http/nav/alkisnav_grd.php
r376 r399 1 1 <?php 2 /* Navigation mit ALKIS-Daten im Mapbender 2.7 - Teil Grundbuch-Suche 3 Diese Version des Programms verwendet die Datenbank-Struktur aus dem norGIS-ALKIS-Importer. 4 2 /* Navigation mit ALKIS-Daten im Mapbender 2 - Teil Grundbuch-Suche 3 Datenbank-Struktur aus dem norGIS-ALKIS-Importer. 5 4 Version vom 6 5 2016-02-11 Version fÃŒr norGIS-ALKIS-Import aus Version Classic abgeleitet. 7 6 2016-03-02 $gemeinde auf feste LÀnge korrigieren 8 7 2016-11-28 Gemeinsam genutzte Datenbanken ermöglichen 8 2018-02-15 Strikte Input-Validation der Parameter 9 9 */ 10 10 11 // Variable initialisieren12 $ag="";13 $gbkennz="";14 $buchunggml="";15 $blattgml="";16 17 11 $cntget = extract($_GET); 18 $gemeinde=str_pad($gemeinde, 3, "0", STR_PAD_LEFT); // temporÀr .. 12 13 // Input-Validation 14 // Parameter aus Konfiguration oder Links sollten keine "Eingabefehler" enthalten. 15 // Entweder falsche Konfiguration oder Hack. Programm sofort abbrechen. 16 if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} // Mandant, muss! Formularfeld hidden 17 18 if(isset($epsg)) { // SRS, Formularfeld hidden 19 if (preg_match('#^EPSG:[0-9]{4,5}$#', $epsg)) { // Prefix aus MB-Mapframe 20 $epsg = str_replace("EPSG:", "" , $epsg); 21 } elseif (!preg_match('#^[0-9]{4,5}$#', $epsg)) { // nur die Nummer 22 die("Eingabefehler epsg"); 23 } 24 } else { // Nichts ÃŒbergeben 25 $epsg=$gui_epsg; // dann default aus Conf 26 } 27 28 // Filter-Parameter fÃŒr Gemeindenummer in Kreis-Datenbank aus der Mapbender GUI-Konfiguration, Formularfeld hidden 29 if (isset($gemeinde) AND trim($gemeinde, '0') != "") { 30 if (!preg_match('#^[0-9]{1,3}$#', $gemeinde)) {die("Eingabefehler Gemeinde");} 31 $gemeinde=str_pad($gemeinde, 3, "0", STR_PAD_LEFT); 32 if(strpos($gemeinde, ",") === false) { 33 $gfilter = 1; // Einzelwert 34 } else { 35 $gfilter = 2; // Liste 36 } 37 } else { // Kein Filter 38 $gemeinde = ""; 39 $gfilter = 0; 40 } 41 42 // Optionale Parameter. Links aus der Baumstruktur. Wenn nicht gesetzt, dann die Variable initialisieren. 43 if (isset($ag) and $ag != "" ) { // Amtsgericht-Nummer 44 if (!preg_match('#^[0-9]{4}$#', $ag)) {die("Eingabefehler Amtsgericht");} 45 } else { 46 $ag=""; 47 } 48 if (isset($buchunggml) and $buchunggml != "" ) { 49 if (!preg_match('#^[0-9a-zA-Z]{16}$#', $buchunggml)) {die("Eingabefehler GML-ID Buchung");} 50 } else { 51 $buchunggml=""; 52 } 53 if (isset($blattgml) and $blattgml != "" ) { 54 if (!preg_match('#^[0-9a-zA-Z]{16}$#', $blattgml)) {die("Eingabefehler GML-ID Blatt");} 55 } else { 56 $blattgml=""; 57 } 58 if (isset($gbbeznam) and $gbbeznam != "" ) { 59 if (!preg_match('#^[a-zA-ZÀÌöÃÃÃÃ12 -]{3,40}$#', $gbbeznam)) {die("Eingabefehler Grundbuch-Bezirks-Name '".$gbbeznam."'");} 60 } else { 61 $gbbeznam=""; 62 } 63 19 64 include("../../conf/alkisnav_conf.php"); // Konfigurations-Einstellungen 20 65 include("alkisnav_fkt.php"); // Funktionen … … 59 104 $linelimit=40; 60 105 61 $sql ="SELECT stelle, bezeichnung AS ag FROM ax_dienststelle 62 WHERE stelle IN (".$liste_ag.") AND stellenart = 1000 AND endet IS NULL 63 ORDER BY bezeichnung LIMIT $1 ;"; 106 $sql="SELECT stelle, bezeichnung AS ag FROM ax_dienststelle " 107 ."WHERE stelle IN (".$liste_ag.") AND stellenart = 1000 AND endet IS NULL ORDER BY bezeichnung LIMIT $1 ;"; 64 108 $res = pg_prepare("", $sql); 65 109 $res = pg_execute("", array($linelimit)); … … 99 143 // Body 100 144 // Die Subquery stellt sicher, dass nur Bezirke aufgelistet werden, die auch BlÀtter enthalten 101 $sql ="SELECT g.bezirk, g.bezeichnung FROM ax_buchungsblattbezirk g 102 JOIN ax_dienststelle a ON g.stelle=a.stelle 103 WHERE a.stelle = $1 AND a.stellenart = 1000 AND a.endet IS NULL AND g.endet IS NULL 104 AND NOT (SELECT gml_id FROM ax_buchungsblatt b WHERE b.land=g.land AND b.bezirk=g.bezirk AND b.endet IS NULL LIMIT 1) IS NULL 105 ORDER BY g.bezeichnung LIMIT $2 ;"; 145 $sql ="SELECT g.bezirk, g.bezeichnung FROM ax_buchungsblattbezirk g JOIN ax_dienststelle a ON g.stelle=a.stelle " 146 ."WHERE a.stelle = $1 AND a.stellenart = 1000 AND a.endet IS NULL AND g.endet IS NULL " 147 ."AND NOT (SELECT gml_id FROM ax_buchungsblatt b WHERE b.land=g.land AND b.bezirk=g.bezirk AND b.endet IS NULL LIMIT 1) IS NULL " 148 ."ORDER BY g.bezeichnung LIMIT $2 ;"; 106 149 107 150 $v = array($agkey, $linelimit); … … 135 178 // Parameter = SchlÃŒssel des Bezirks 136 179 #global $debug; 137 $sql ="SELECT a.stelle, a.bezeichnung AS ag, g.bezeichnung FROM ax_buchungsblattbezirk g 138 JOIN ax_dienststelle a ON g.stelle=a.stelle WHERE g.bezirk= $1 AND g.endet IS NULL AND a.endet IS NULL LIMIT 1;";180 $sql ="SELECT a.stelle, a.bezeichnung AS ag, g.bezeichnung FROM ax_buchungsblattbezirk g " 181 ."JOIN ax_dienststelle a ON g.stelle=a.stelle WHERE g.bezirk= $1 AND g.endet IS NULL AND a.endet IS NULL LIMIT 1;"; 139 182 $v=array($gbbez); 140 183 $res=pg_prepare("", $sql); … … 166 209 $linelimit=80; 167 210 168 $sql ="SELECT a.stelle, a.bezeichnung AS ag, g.bezirk, g.bezeichnung FROM ax_buchungsblattbezirk g 169 JOIN ax_dienststelle a ON g.stelle=a.stelle170 WHERE g.bezeichnung ILIKE $1 AND g.endet IS NULL AND a.endet IS NULL171 ORDER BY a.bezeichnung, g.bezeichnung LIMIT $2 ;";// "AND a.stellenart=1000 " Amtsgericht211 $sql ="SELECT a.stelle, a.bezeichnung AS ag, g.bezirk, g.bezeichnung FROM ax_buchungsblattbezirk g " 212 ."JOIN ax_dienststelle a ON g.stelle=a.stelle " 213 ."WHERE g.bezeichnung ILIKE $1 AND g.endet IS NULL AND a.endet IS NULL " 214 ."ORDER BY a.bezeichnung, g.bezeichnung LIMIT $2 ;"; // "AND a.stellenart=1000 " Amtsgericht 172 215 if ( $gbkennz == "") { 173 216 $match = "%"; … … 175 218 if(preg_match("/\*/",$gbkennz)){ 176 219 $match = trim(preg_replace("/\*/i","%", strtoupper($gbkennz))); 220 if (substr($match, strlen($match), 1) != "%") {$match.="%";} // Wildcard am Ende obligatorisch 177 221 } else { 178 222 $match = trim($gbkennz)."%"; … … 227 271 } 228 272 // Body 229 $sql ="SELECT b.gml_id, b.buchungsblattnummermitbuchstabenerweiterung AS blatt FROM ax_buchungsblatt b 230 WHERE b.bezirk= $1 AND b.endet IS NULL ORDER BY b.buchungsblattnummermitbuchstabenerweiterung LIMIT $2 ;";273 $sql ="SELECT b.gml_id, b.buchungsblattnummermitbuchstabenerweiterung AS blatt FROM ax_buchungsblatt b " 274 ."WHERE b.bezirk= $1 AND b.endet IS NULL ORDER BY b.buchungsblattnummermitbuchstabenerweiterung LIMIT $2 ;"; 231 275 $v=array($zgbbez, $linelimit); 232 276 $res=pg_prepare("", $sql); … … 251 295 echo "\n<p>Geben sie ein: '".$zgbbez."-999A'<br>wobei '999A' = gesuchtes GB-Blatt</p>"; 252 296 // Vorbelegen des Eingabefeldes fÃŒr neue Suche 253 echo "<script type='text/javascript'>parent.GrdGazetteerFrame.gbkennz.value='".$zgbbez."- ?';</script>";297 echo "<script type='text/javascript'>parent.GrdGazetteerFrame.gbkennz.value='".$zgbbez."-';</script>"; 254 298 } elseif ($cntbl > 1) { 255 299 echo "\n<p class='anz'>".$cntbl." Blätter</p>"; // im Limit … … 261 305 // Kennzeichen "Bezirk + Blatt" eingegeben. Dazu die gml_id des Blattes ermitteln. 262 306 global $debug, $zgbbez, $zblatt, $zblattn, $zblattz; 263 $sql ="SELECT b.gml_id, b.buchungsblattnummermitbuchstabenerweiterung AS blatt FROM ax_buchungsblatt b 264 WHERE b.bezirk= $1 AND b.endet IS NULL AND b.buchungsblattnummermitbuchstabenerweiterung ";307 $sql ="SELECT b.gml_id, b.buchungsblattnummermitbuchstabenerweiterung AS blatt FROM ax_buchungsblatt b " 308 ."WHERE b.bezirk= $1 AND b.endet IS NULL AND b.buchungsblattnummermitbuchstabenerweiterung "; 265 309 266 310 if ($zblattz == "") { // Ohne Buchstabenerweiterung: Formate '123','000123 ','0000123' … … 310 354 311 355 // Blatt -> B u c h u n g s s t e l l e 312 $sql ="SELECT s.gml_id FROM ax_buchungsstelle s 313 JOIN ax_buchungsblatt b ON s.istbestandteilvon=b.gml_id314 WHERE b.bezirk= $1 AND s.endet IS NULL AND b.endet IS NULL AND b.buchungsblattnummermitbuchstabenerweiterung ";356 $sql ="SELECT s.gml_id FROM ax_buchungsstelle s " 357 ."JOIN ax_buchungsblatt b ON s.istbestandteilvon=b.gml_id " 358 ."WHERE b.bezirk= $1 AND s.endet IS NULL AND b.endet IS NULL AND b.buchungsblattnummermitbuchstabenerweiterung "; 315 359 316 360 if ($zblattz == "") { // Ohne Buchstabenerweiterung … … 425 469 // Recht "an" (dienende Buchungen und ihre Flurst.) 426 470 427 $sql =$sqlanf.", sd.gml_id AS diengml, sd.laufendenummer AS dienlfd, 428 bd.gml_id AS dienbltgml, bd.buchungsblattnummermitbuchstabenerweiterung AS dienblatt, 429 gd.stelle, gd.gml_id AS dienbezgml, gd.bezirk, gd.bezeichnung AS diengbbez 430 FROM ax_buchungsstelle sh 431 JOIN ax_buchungsstelle sd ON sd.gml_id=ANY(sh.an) 432 JOIN ax_flurstueck f ON f.istgebucht=sd.gml_id 433 JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer 434 JOIN ax_buchungsblatt bd ON sd.istbestandteilvon=bd.gml_id 435 JOIN ax_buchungsblattbezirk gd ON bd.land=gd.land AND bd.bezirk=gd.bezirk 436 WHERE sh.gml_id = $1 AND sh.endet IS NULL AND sd.endet IS NULL AND f.endet IS NULL AND bd.endet IS NULL AND gd.endet IS NULL " 437 438 .$sqlfilter."ORDER BY gd.bezeichnung, bd.buchungsblattnummermitbuchstabenerweiterung, cast(sd.laufendenummer AS integer), f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;"; 471 $sql =$sqlanf.", sd.gml_id AS diengml, sd.laufendenummer AS dienlfd, bd.gml_id AS dienbltgml, bd.buchungsblattnummermitbuchstabenerweiterung AS dienblatt, " 472 ."gd.stelle, gd.gml_id AS dienbezgml, gd.bezirk, gd.bezeichnung AS diengbbez " 473 ."FROM ax_buchungsstelle sh JOIN ax_buchungsstelle sd ON sd.gml_id=ANY(sh.an) " 474 ."JOIN ax_flurstueck f ON f.istgebucht=sd.gml_id " 475 ."JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer " 476 ."JOIN ax_buchungsblatt bd ON sd.istbestandteilvon=bd.gml_id " 477 ."JOIN ax_buchungsblattbezirk gd ON bd.land=gd.land AND bd.bezirk=gd.bezirk " 478 ."WHERE sh.gml_id = $1 AND sh.endet IS NULL AND sd.endet IS NULL AND f.endet IS NULL AND bd.endet IS NULL AND gd.endet IS NULL " 479 480 .$sqlfilter."ORDER BY gd.bezeichnung, bd.buchungsblattnummermitbuchstabenerweiterung, cast(sd.laufendenummer AS integer), f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;"; 439 481 440 482 $v=array($buchunggml); … … 496 538 // Start hier! 497 539 // =========== 498 if(isset($epsg)) { 499 $epsg = str_replace("EPSG:", "" , $_REQUEST["epsg"]); 540 541 // Validation: Eingabefeld aus Formular. 542 // Suchbegriff (Bezirksname) oder Grundbuch-Kennzeichen gggg-999999z-BVNR (17). 543 // Hier formatierte Meldung und html-Foot. 544 if (isset($gbkennz) and $gbkennz != "" ) { 545 if (!preg_match('#^[0-9a-zA-ZÀöÌÃÃÃÃ* -]{1,25}$#', $gbkennz)) { 546 echo "<p class='err'>Eingabe unzulässig!</p>"; 547 $gbkennz=""; 548 } 500 549 } else { 501 $epsg=$gui_epsg; // aus Conf 502 } 503 504 // Filter aus Conf-Datei 505 if ($gemeinde == "") { 506 $gfilter = 0; // ungefiltert 507 } elseif(strpos($gemeinde, ",") === false) { 508 $gfilter = 1; // Einzelwert 509 } else { 510 $gfilter = 2; // Liste 511 // $gemeinde = "'".str_replace(",", "','", $gemeinde)."'"; // Jedes Element in '' 550 $gbkennz=""; 512 551 } 513 552
Note: See TracChangeset
for help on using the changeset viewer.