Changeset 68 for trunk/data/mapbender/http/nav/alkisnav_adr.php
- Timestamp:
- 01/13/11 17:42:06 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/data/mapbender/http/nav/alkisnav_adr.php
r66 r68 1 1 <?php 2 // Version vom 10.01.2011 3 4 // ToDo: 5 // Auswahl oder Sortierung "Gemeinde" if ($gemeinde == 0) 6 // Sortierung nach Nummer aus Hausnummer 7 8 $gkz = urldecode($_REQUEST["gkz"]); // Mandant 2 // Version vom 13.01.2011 3 import_request_variables("PG"); 9 4 include("../../conf/alkisnav_conf.php"); 10 import_request_variables("PG");11 // Datenbank-Connection12 5 $con_string = "host=".$host." port=".$port." dbname=".$dbname.$gkz." user=".$user." password=".$password; 13 6 $con = pg_connect ($con_string) or die ("Fehler bei der Verbindung zur Datenbank ".$dbname); 14 15 7 ?> 16 8 … … 26 18 </head> 27 19 <body> 28 29 20 <?php 21 22 30 23 function suchStrName() { 31 // ============================ 32 // Straßen nach Name(-nsanfang) 33 // ============================ 24 // Straßen nach Name(-nsanfang) 34 25 global $con, $street, $scalestr, $str_schl, $gkz, $gemeinde, $debug; 35 26 $linelimit=120; // -> in die Conf? … … 38 29 $matches[1] = preg_replace("/str\./i","str", $matches[1]); 39 30 if(preg_match("/\*/",$matches[1])){ 40 $match= "'".trim(preg_replace("/\*/i","%", strtoupper($matches[1]))). "' ";41 } else { 42 $match= "'".trim($matches[1])."%'";43 } 44 $sql ="SELECT g.bezeichnung AS gemname, k.bezeichnung, k.schluesselgesamt, k.lage 31 $match=trim(preg_replace("/\*/i","%", strtoupper($matches[1]))); 32 } else { 33 $match=trim($matches[1])."%"; 34 } 35 $sql ="SELECT g.bezeichnung AS gemname, k.bezeichnung, k.schluesselgesamt, k.lage "; 45 36 $sql.="FROM ax_lagebezeichnungkatalogeintrag as k "; 46 $sql.="JOIN ax_gemeinde g "; 47 $sql.="ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde "; 48 $sql.="WHERE k.bezeichnung ILIKE ".$match." "; 37 $sql.="JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde "; 38 $sql.="WHERE k.bezeichnung ILIKE $1 "; 49 39 if($gemeinde > 0) { // Filter Gemeinde? 50 40 $sql.="AND k.gemeinde=".$gemeinde." "; 51 41 } 52 $sql.="ORDER BY k.bezeichnung, k.lage "; 53 // +++ if ($gemeinde == 0) ORDER Gemeinde, Straße? 54 $sql.="LIMIT ".$linelimit; 55 $res=pg_query($con, $sql); 56 if (!$res) { 57 return "\n<p class='err'>Fehler bei Name</p>"; 58 } 42 $sql.="ORDER BY k.bezeichnung, k.lage LIMIT $2 ;"; 43 $v=array($match,$linelimit); 44 $res=pg_prepare("", $sql); 45 $res=pg_execute("", $v); 46 if (!$res) {return "\n<p class='err'>Fehler bei Name</p>";} 59 47 $cnt = 0; 60 48 while($row = pg_fetch_array($res)) { 61 $sname= $row["bezeichnung"];49 $sname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); 62 50 $gkey=$row["schluesselgesamt"]; 63 $gemname= $row["gemname"];51 $gemname=htmlentities($row["gemname"], ENT_QUOTES, "UTF-8"); 64 52 $skey=$row["lage"]; 65 echo "\n\t<div class='st' title='Straßenschlüssel ".$skey."'>"; 66 echo "<a class='st' href='alkisnav_adr.php?gkz=".$gkz."&gemeinde=".$gemeinde."&str_schl=".$gkey."'>".$sname; 67 if ($gemeinde == 0) { 68 echo " - ".$gemname; 53 echo "\n\t<div class='stl' title='Straßenschlüssel ".$skey."'>"; 54 if (trim($skey, "0..9") == "") { // Integer 55 echo "<a class='stl' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&gemeinde=".$gemeinde."&str_schl=".$gkey."'>".$sname."</a>"; 56 } else { // Klassifizierung? 57 echo $sname; // nicht brauchbar fuer ax_lagebezeichnungmithausnummer.lage (Integer) 69 58 } 70 echo "</a><br>";59 if (! isset($gemeinde)) {echo " in ".$gemname;} 71 60 echo "</div>"; 72 61 $cnt++; … … 75 64 echo "<p>Keine Straße.</p>"; 76 65 } elseif($cnt == 1) { // Eindeutig 77 $str_schl=$ skey; // dann gleich weiter66 $str_schl=$gkey; // dann gleich weiter 78 67 } elseif($cnt >= $linelimit) { 79 68 echo "<p>.. und weitere</p>"; … … 82 71 } 83 72 73 function suchStrKey() { 74 // Straßen nach Strassen-Schluessel 75 global $con, $street, $scalestr, $str_schl, $gkz, $gemeinde, $debug; 76 $linelimit=50; 77 if(preg_match("/\*/",$street)) { 78 $match=trim(preg_replace("/\*/i","%",$street)); 79 // -> Anwender muss fuehrende Nullen eingeben oder fuehrende Wildcard 80 } else { 81 $match=str_pad($street, 5, "0", STR_PAD_LEFT); // "Wie eine Zahl" verarbeiten 82 } 83 //if ($debug >= 2) {echo "<p>sql-Match='".$match."'</p>";} 84 $sql ="SELECT g.bezeichnung AS gemname, k.bezeichnung, k.schluesselgesamt, k.lage "; 85 $sql.="FROM ax_lagebezeichnungkatalogeintrag as k "; 86 $sql.="JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde "; 87 $sql.="WHERE k.lage LIKE $1 "; 88 if($gemeinde > 0) { // Filter Gemeinde? 89 $sql.="AND k.gemeinde=".$gemeinde." "; 90 } 91 $sql.="ORDER BY k.lage, k.bezeichnung LIMIT $2 ;"; 92 $v=array($match,$linelimit); 93 $res=pg_prepare("", $sql); 94 $res=pg_execute("", $v); 95 if (!$res) {return "\n<p class='err'>Fehler bei Schlüssel</p>";} 96 $cnt = 0; 97 while($row = pg_fetch_array($res)) { 98 $sname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); 99 $gkey=$row["schluesselgesamt"]; 100 $gemname=htmlentities($row["gemname"], ENT_QUOTES, "UTF-8"); 101 $skey=$row["lage"]; 102 echo "\n\t<div class='stl' title='Straßenschlüssel ".$skey."'>"; 103 echo $skey." <a class='st' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&gemeinde=".$gemeinde."&str_schl=".$gkey."'>".$sname; 104 echo "</a>"; 105 if (! isset($gemeinde)) {echo " in ".$gemname;} 106 echo "</div>"; 107 $cnt++; 108 } 109 if($cnt == 0) { 110 echo "\n<p>Keine Straße mit Schlüssel ".$match."</p>"; 111 } elseif($cnt == 1) { // Eindeutig 112 $str_schl=$gkey; // dann gleich weiter 113 } elseif($cnt >= $linelimit) { 114 echo "\n<p>.. und weitere</p>"; 115 } else { 116 echo "\n<p class='hilfe'>".$cnt." Straßen</p>"; 117 } 118 return; 119 } 120 84 121 function suchHausZurStr(){ 85 // ======================= 86 // Haeuser zu einer Straße 87 // ======================= 122 // Haeuser zu einer Straße 88 123 global $con, $str_schl, $gkz, $scalestr, $scalehs, $epsg, $gemeinde, $debug; 89 90 124 // Strasse zum Strassenschluessel 91 125 $sql ="SELECT k.bezeichnung, k.land, k.regierungsbezirk, k.kreis, k.gemeinde, k.lage "; 92 $sql.="FROM ax_lagebezeichnungkatalogeintrag as k "; 93 $sql.="WHERE schluesselgesamt = $1 LIMIT 1"; 126 $sql.="FROM ax_lagebezeichnungkatalogeintrag AS k WHERE schluesselgesamt = $1 LIMIT 1"; 94 127 $v=array($str_schl); 95 128 $res=pg_prepare("", $sql); 96 129 $res=pg_execute("", $v); 97 98 130 if($row = pg_fetch_array($res)) { // Strassenschluessel gefunden 99 131 $sname=$row["bezeichnung"]; … … 102 134 $kreis=$row["kreis"]; 103 135 $gemnd=$row["gemeinde"]; 104 //$lage=$row["lage"];105 136 $nr=ltrim($row["lage"], "0"); 106 107 // eine Koordinaten zur ausgewählten Strasse besorgen 137 // eine Koordinate zur Strasse besorgen 108 138 // ax_Flurstueck >zeigtAuf> ax_LagebezeichnungOhneHausnummer 109 139 $sqlko ="SELECT "; … … 115 145 $sqlko.="WHERE o.land= $1 AND o.regierungsbezirk= $2 AND o.kreis= $3 AND o.gemeinde= $4 AND o.lage= $5 "; 116 146 $sqlko.="AND v.beziehungsart='zeigtAuf' LIMIT 1;"; // die erstbeste beliebige Koordinate 117 // $resko=pg_query($con, $sqlko);118 147 $v=array($land,$regb,$kreis,$gemnd,$nr); 119 148 $resko=pg_prepare("", $sqlko); … … 127 156 } 128 157 $sqlko.=""; 129 //if ($debug >= 2) {echo "\n<p class='err'>Koord: '".$x."' '".$y."'</p>";} 130 echo "\n<div class='st'>"; 158 echo "\n<div class='stu'>"; 131 159 if ($x > 0) { // Koord. bekommen? 132 echo " <a title='Positionieren 1:".$scalestr."' href='"; // mit Link160 echo "\n\t<a title='Positionieren 1:".$scalestr."' href='"; // mit Link 133 161 echo "javascript:parent.parent.hideHighlight();"; 134 echo " parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalestr.");";135 echo " document.location.href=\"alkisnav_adr.php?gkz=".$gkz."&str_schl=".$str_schl."\"' ";136 echo " onmouseover='parent.parent.showHighlight(" .$x. "," .$y. ")' ";137 echo " onmouseout='parent.parent.hideHighlight()'";138 echo "> ".$sname." (".$nr.")</a>";162 echo "\n\t\tparent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalestr.");"; 163 echo "\n\t\tdocument.location.href=\"".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&gemeinde=".$gemeinde."&str_schl=".$str_schl."\"' "; 164 echo "\n\t\tonmouseover='parent.parent.showHighlight(" .$x. "," .$y. ")' "; 165 echo "\n\t\tonmouseout='parent.parent.hideHighlight()'"; 166 echo ">\n\t\t".$sname." (".$nr.")\n\t</a>"; 139 167 } else { // keine Koord. dazu gefunden 140 168 echo $sname." (".$nr.")"; // nur Anzeige, ohne Link 141 169 } 142 echo "\n</div> <hr>";170 echo "\n</div>\n<hr>"; 143 171 144 172 // Haeuser zum Strassenschluessel 145 $sql ="SELECT h.hausnummer, ";173 $sql ="SELECT replace (h.hausnummer, ' ','') AS hsnr, "; 146 174 $sql.="x(st_transform(st_Centroid(g.wkb_geometry), ".$epsg.")) AS x, "; 147 175 $sql.="y(st_transform(st_Centroid(g.wkb_geometry), ".$epsg.")) AS y "; … … 149 177 $sql.="JOIN alkis_beziehungen v ON h.gml_id=v.beziehung_zu "; 150 178 $sql.="JOIN ax_gebaeude g ON v.beziehung_von=g.gml_id "; 151 $sql.="WHERE h.land= ".$land." AND h.regierungsbezirk=".$regb." AND h.kreis=".$kreis." AND h.lage=".$nr.""; // integer179 $sql.="WHERE h.land= $1 AND h.regierungsbezirk= $2 AND h.kreis= $3 AND h.lage= $4 "; // integer 152 180 $sql.="AND v.beziehungsart='zeigtAuf' "; 153 $sql.="ORDER BY hausnummer;";154 // Sortierproblem: Hausnummer, numerischer Teil sollte numerisch sortiert sein. 155 //if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}156 $resh=pg_ query($con, $sql);181 $sql.="ORDER BY lpad(split_part(hausnummer,' ',1), 4, '0'), split_part(hausnummer,' ',2);"; 182 $v=array($land,$regb,$kreis,$nr); 183 $resh=pg_prepare("", $sql); 184 $resh=pg_execute("", $v); 157 185 $cnt=0; 158 186 $count=0; 159 echo "<table>"; 160 187 echo "\n<table>"; 161 188 // mehrere Hausnummern je Zeile ausgeben 162 189 while($rowh = pg_fetch_array($resh)) { 163 if($count == 0){ 164 echo "\n<tr>"; 165 } 190 if($count == 0){echo "\n<tr>";} 166 191 $gml=$rowh["gml_id"]; 167 $nr=$rowh["h ausnummer"];192 $nr=$rowh["hsnr"]; 168 193 $x=$rowh["x"]; 169 194 $y=$rowh["y"]; 170 171 195 echo "\n\t<td class='hsnr'>"; 172 196 echo "<a href='"; … … 176 200 echo "onmouseout='parent.parent.hideHighlight()"; 177 201 echo "'>".$nr."</a>"; 178 echo " \n\t</td>";202 echo "</td>"; 179 203 $cnt++; 180 204 $count++; … … 196 220 // =========== 197 221 if(isset($epsg)) { 198 if ($debug >= 2) {echo " <p>aktueller EPSG='".$epsg."'</p>";} // aus MB222 if ($debug >= 2) {echo "\n<p>aktueller EPSG='".$epsg."'</p>";} // aus MB 199 223 If (substr($epsg, 0, 5) == "EPSG:") {$epsg=substr($epsg, 5);} 200 224 } else { 201 if ($debug >= 2) {echo " <p class='err'>kein EPSG gesetzt</p>";}225 if ($debug >= 2) {echo "\n<p class='err'>kein EPSG gesetzt</p>";} 202 226 $epsg=$gui_epsg; // aus Conf 203 227 } … … 205 229 if ($debug >= 2) { 206 230 if(isset($gemeinde)) {echo "<p>Filter Gemeinde = ".$gemeinde."</p>"; 207 } else {echo "<p>Kein Filter Gemeinde</p>";} 208 } 209 210 if(isset($street)) { 211 // dies ist noch nicht möglich, es muesste der Gesamt-Keystring eingegeben werden 212 if (is_numeric($street)) { 213 $str_schl = $street; // Schluessel (eindeutig) ist schon gesetzt 214 } else { 231 } else {echo "\n<p>Kein Filter Gemeinde</p>";} 232 } 233 234 if(isset($street)) { // Eingabe in Form 235 if (is_numeric(trim($street, "*"))) { // Zahl mit Wildcard 236 if ($debug >= 2) {echo "\n<p>Suche Key='".$street."'</p>";} 237 suchStrKey(); // Suche nach Schluessel 238 } else { 239 if ($debug >= 2) {echo "\n<p>Suche Name='".$street."'</p>";} 215 240 suchStrName(); // Suche nach Name 216 241 } 217 } 218 // Strassenschluessel suchen 219 // Verknuepfung zwischen "suchStrName" und "suchHausZurStr" uber Gesamt-Schluessel 220 // Alternative für Eingabefeld (nur db-Feld "lage")? 221 // z.B. HIER trennen zwischen Eingabe-Key und Result-Key 222 223 if(isset($str_schl)){ 242 } 243 if(isset($str_schl)){ // Eindeutiges Ergebnis oder Link 244 if ($debug >= 2) {echo "\n<p>Suche Haus zu ='".$str_schl."'</p>";} 224 245 suchHausZurStr(); 246 } else { 247 if ($debug >= 2) {echo "\n<p>Keine Suche Haus</p>";} 225 248 } 226 249 ?>
Note: See TracChangeset
for help on using the changeset viewer.