Changeset 197 for trunk/data/mapbender/http/nav
- Timestamp:
- 01/15/13 15:09:22 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/data/mapbender/http/nav/alkisnav_adr.php
r191 r197 1 1 <?php 2 2 /* Version vom 3 11.04.2011 epsg in Link, transform nur wenn notwendig 4 25.07.2011 PostNAS 0.5/0.6 Versionen unterscheiden 5 24.10.2011 Nach Pos-Klick Highlight erneuern statt hideHighlight 6 09.12.2011 Sonderfall PostNAS 0.5 raus, 7 3.12.2012 Ausgabe von Hausnr ohne Gebaeude 3 2011-04-11 epsg in Link, transform nur wenn notwendig 4 2011-07-25 PostNAS 0.5/0.6 Versionen unterscheiden 5 2011-10-24 Nach Pos-Klick Highlight erneuern statt hideHighlight 6 2011-12-09 Sonderfall PostNAS 0.5 raus, 7 2012-12-03 A.E.: Ausgabe von Hausnr ohne Gebaeude 8 2013-01-15 F.J.: HsNr ohne GebÀude auf NRW/krz-Daten anpassen 8 9 9 10 ToDo: 11 - auskommentierte Variante mit "subquery" entfernen 10 12 - Eingabe aus "Balken" von Buchauskunft "Lage" zulassen: Numerisch: Gem-Str-Haus-lfd 11 13 Analog zur Zerlegung des FS-Kennz in _fls 12 - Mouse-Over in StraÃenliste soll Position zeigen ,13 dazu in der DB eine Tabelle mit Koordinate zum StraÃenschlÃŒssel aufbauen.14 - Mouse-Over in StraÃenliste soll Position zeigen. 15 Dazu in der DB eine Tabelle mit Koordinate zum StraÃenschlÃŒssel aufbauen. 14 16 */ 15 17 import_request_variables("G"); … … 150 152 break; 151 153 } 152 153 154 echo "</div>"; 154 155 $cnt++; … … 174 175 $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 "; 175 176 $sql.="WHERE k.schluesselgesamt = $1 LIMIT 1"; 176 177 $v=array($str_schl); 177 $v=array($str_schl); 178 178 $res=pg_prepare("", $sql); 179 179 $res=pg_execute("", $v); … … 186 186 $gemname=htmlentities($row["gemname"], ENT_QUOTES, "UTF-8"); 187 187 $nr=$row["lage"]; 188 189 188 if ($showParent) { 190 189 // eine Koordinate zur Strasse besorgen 191 190 // ax_Flurstueck >zeigtAuf> ax_LagebezeichnungOhneHausnummer 192 $sqlko ="SELECT "; 191 $sqlko ="SELECT "; 193 192 if($epsg == "25832") { // Transform nicht notwendig 194 193 $sqlko.="st_x(st_Centroid(f.wkb_geometry)) AS x, "; 195 194 $sqlko.="st_y(st_Centroid(f.wkb_geometry)) AS y "; 196 } else { 195 } else { 197 196 $sqlko.="st_x(st_transform(st_Centroid(f.wkb_geometry), ".$epsg.")) AS x, "; 198 $sqlko.="st_y(st_transform(st_Centroid(f.wkb_geometry), ".$epsg.")) AS y "; 197 $sqlko.="st_y(st_transform(st_Centroid(f.wkb_geometry), ".$epsg.")) AS y "; 199 198 } 200 199 $sqlko.="FROM ax_lagebezeichnungohnehausnummer o "; … … 202 201 $sqlko.="JOIN ax_flurstueck f ON v.beziehung_von=f.gml_id "; 203 202 $sqlko.="WHERE o.land= $1 AND o.regierungsbezirk= $2 AND o.kreis= $3 AND o.gemeinde= $4 AND o.lage= $5 "; 204 $sqlko.="AND v.beziehungsart='zeigtAuf' LIMIT 1;"; // die erstbeste beliebige Koordinate203 $sqlko.="AND v.beziehungsart='zeigtAuf' LIMIT 1;"; // die erstbeste Koordinate 205 204 $v=array($land,$regb,$kreis,$gemnd,$nr); 206 205 $resko=pg_prepare("", $sqlko); … … 213 212 echo "\n<p class='err'>Fehler bei Koordinate zur Straße</p>"; 214 213 } 215 $sqlko.="";216 217 214 echo "\n<div class='stu'>"; 218 215 if ($x > 0) { // Koord. bekommen? … … 224 221 echo "\n\t\tonmouseout='parent.parent.hideHighlight()'"; 225 222 echo ">\n\t\t".$sname." (".$nr.")\n\t</a>"; 226 } else { // keine Koord. dazugefunden223 } else { // keine Koord. gefunden 227 224 echo $sname." (".$nr.")"; // nur Anzeige, ohne Link 228 225 } 229 230 226 switch ($gfilter) { 231 227 case 0: // Kein Filter … … 241 237 } 242 238 echo "\n<hr>"; 239 243 240 // Haeuser zum Strassenschluessel 244 $sql ="SELECT replace (h.hausnummer, ' ','') AS hsnr, ";245 241 // $sql="SELECT replace(h.hausnummer,' ','') AS hsnr, subq.geb, "; // Subquery 242 $sql="SELECT replace(h.hausnummer,' ','') AS hsnr, "; 246 243 if($epsg == "25832") { // Transform nicht notwendig 247 $sql.="st_x(st_Centroid(g.wkb_geometry)) AS x, "; 248 $sql.="st_y(st_Centroid(g.wkb_geometry)) AS y "; 244 $sql.="st_x(p.wkb_geometry) AS x, "; 245 $sql.="st_y(p.wkb_geometry) AS y "; 246 } else { 247 $sql.="st_x(st_transform(p.wkb_geometry,".$epsg.")) AS x, "; 248 $sql.="st_y(st_transform(p.wkb_geometry,".$epsg.")) AS y "; 249 249 } 250 else { 251 $sql.="st_x(st_transform(st_Centroid(g.wkb_geometry), ".$epsg.")) AS x, "; 252 $sql.="st_y(st_transform(st_Centroid(g.wkb_geometry), ".$epsg.")) AS y "; 253 } 254 $sql.="FROM ax_lagebezeichnungmithausnummer h "; 255 $sql.="JOIN alkis_beziehungen v ON h.gml_id=v.beziehung_zu "; 256 $sql.="JOIN ax_gebaeude g ON v.beziehung_von=g.gml_id "; 257 $sql.="WHERE h.land= $1 AND h.regierungsbezirk= $2 AND h.kreis= $3 AND h.gemeinde= $4 AND h.lage= $5 "; // integer 258 $sql.="AND v.beziehungsart='zeigtAuf' "; 250 251 /* Version mit // Subquery 252 Liefert Informationen ÃŒber GebÀude zur Hausnummer. LÀuft aber spÃŒrbar langsamer. 253 254 $sql.="FROM ap_pto p JOIN alkis_beziehungen v ON p.gml_id = v.beziehung_von "; 255 $sql.="JOIN ax_lagebezeichnungmithausnummer h ON v.beziehung_zu = h.gml_id "; 256 $sql.="LEFT JOIN (SELECT b.beziehung_zu AS zu, g.gml_id AS geb FROM alkis_beziehungen b "; 257 $sql.="JOIN ax_gebaeude g ON b.beziehung_von=g.gml_id WHERE b.beziehungsart='zeigtAuf') subq "; 258 $sql.="ON h.gml_id = subq.zu WHERE v.beziehungsart='dientZurDarstellungVon' AND p.art = 'HNR' "; 259 $sql.="AND h.land= $1 AND h.regierungsbezirk= $2 AND h.kreis= $3 AND h.gemeinde= $4 AND h.lage= $5 "; 259 260 $sql.="ORDER BY lpad(split_part(hausnummer,' ',1), 4, '0'), split_part(hausnummer,' ',2);"; 261 */ 262 // Version ohne Subquery 263 $sql.="FROM ap_pto p JOIN alkis_beziehungen v ON p.gml_id = v.beziehung_von "; 264 $sql.="JOIN ax_lagebezeichnungmithausnummer h ON v.beziehung_zu = h.gml_id "; 265 $sql.="WHERE v.beziehungsart='dientZurDarstellungVon' AND p.art = 'HNR' "; 266 $sql.="AND h.land= $1 AND h.regierungsbezirk= $2 AND h.kreis= $3 AND h.gemeinde= $4 AND h.lage= $5 "; 267 $sql.="ORDER BY lpad(split_part(hausnummer,' ',1), 4, '0'), split_part(hausnummer,' ',2);"; 268 260 269 $v=array($land,$regb,$kreis,$gemnd,$nr); 261 270 $resh=pg_prepare("", $sql); … … 264 273 $count=0; 265 274 echo "\n<table>"; 266 // mehrere Hausnummern je Zeile ausgeben 267 while($rowh = pg_fetch_array($resh)) { 268 if($count == 0){echo "\n<tr>";} 269 $gml=$rowh["gml_id"]; 270 $hsnr=$rowh["hsnr"]; 275 while($rowh = pg_fetch_array($resh)) { // mehrere HsNr je Zeile 276 if($count == 0){echo "\n<tr>";} 277 $hsnr=$rowh["hsnr"]; 278 // $geb=$rowh["geb"]; // Subquery 271 279 $x=$rowh["x"]; 272 280 $y=$rowh["y"]; 281 /* // Subquery 282 if ($geb == "") { // kein GebÀude 283 $cls=" class='hsnro'"; 284 $ttl="kein Haus"; 285 } else { 286 $cls=""; 287 $ttl="Haus ".$geb; 288 } 289 */ 273 290 echo "\n\t<td class='hsnr'>"; 291 // echo "<a".$cls." href='"; 274 292 echo "<a href='"; 275 293 echo "javascript:parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalehs."); "; … … 277 295 echo "onmouseover='parent.parent.showHighlight(".$x.",".$y.")' "; 278 296 echo "onmouseout='parent.parent.hideHighlight()"; 297 // echo "' title='".$ttl."'>".$hsnr."</a>"; // Subquery 279 298 echo "'>".$hsnr."</a>"; 280 299 echo "</td>"; … … 289 308 echo "\n</table>"; 290 309 echo "\n<p class='hilfe'>".$cnt." Hausnummern</p>"; 291 292 if($hausnummernohnegebaeude == 1){293 #echo "Hausnummern ohne Gebäude:";294 // Haeuser zum Strassenschluessel295 $sql ="SELECT gml_id, replace (schriftinhalt, ' ','') AS hsnr, ";296 if($epsg == "25832") { // Transform nicht notwendig297 $sql.="st_x(wkb_geometry) AS x, ";298 $sql.="st_y(wkb_geometry) AS y ";299 }300 else {301 $sql.="st_x(st_transform(wkb_geometry, ".$epsg.")) AS x, ";302 $sql.="st_y(st_transform(wkb_geometry, ".$epsg.")) AS y ";303 }304 $sql.="from ap_pto where ";305 $sql.="gml_id IN (Select beziehung_von from alkis_beziehungen ";306 $sql.="where beziehung_zu IN (";307 $sql.="SELECT ";308 $sql.="gml_id ";309 $sql.="FROM ax_lagebezeichnungmithausnummer h ";310 $sql.="WHERE h.land= $1 AND h.regierungsbezirk= $2 AND h.kreis= $3 ";311 $sql.="AND h.gemeinde= $4 AND h.lage= $5 ";312 $sql.="AND replace (h.hausnummer, ' ','') NOT IN (";313 $sql.="SELECT replace (h.hausnummer, ' ','') AS hsnr ";314 $sql.="FROM ax_lagebezeichnungmithausnummer h ";315 $sql.="JOIN alkis_beziehungen v ON h.gml_id=v.beziehung_zu ";316 $sql.="JOIN ax_gebaeude g ON v.beziehung_von=g.gml_id ";317 $sql.="WHERE h.land= $6 AND ";318 $sql.="h.regierungsbezirk= $7 AND h.kreis= $8 AND h.gemeinde= $9 AND ";319 $sql.=" h.lage= $10 ";320 $sql.="AND v.beziehungsart='zeigtAuf' ";321 $sql.=") ORDER BY lpad(split_part(h.hausnummer,' ',1), 4, '0'), split_part(h.hausnummer,' ',2) ";322 $sql.=")) order by lpad(split_part(schriftinhalt,' ',1), 4, '0'), split_part(schriftinhalt,' ',2);";323 $vw=array($land,$regb,$kreis,$gemnd,$nr,$land,$regb,$kreis,$gemnd,$nr);324 #echo "SQL: ".$land." ".$regb." ".$kreis." ".$gemnd." ".$nr;325 $resho=pg_prepare("", $sql);326 $resho=pg_execute("", $vw);327 $cnt=0;328 $count=0;329 #echo $sql;330 echo "\n<table>";331 // mehrere Hausnummern je Zeile ausgeben332 while($rowh = pg_fetch_array($resho)) {333 if($count == 0){echo "\n<tr>";}334 $gml=$rowh["gml_id"];335 $nr=$rowh["hsnr"];336 $x=$rowh["x"];337 $y=$rowh["y"];338 echo "\n\t<td class='hsnr'>";339 echo "<a href='";340 echo "javascript:parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalehs."); ";341 echo "parent.parent.showHighlight(".$x.",".$y.");' ";342 echo "onmouseover='parent.parent.showHighlight(".$x.",".$y.")' ";343 echo "onmouseout='parent.parent.hideHighlight()";344 echo "'>".$nr."</a>";345 echo "</td>";346 $cnt++;347 $count++;348 if($count == 6) {349 echo "\n</tr>";350 $count = 0;351 }352 }353 if($count > 0) {echo "\n</tr>";}354 echo "\n</table>";355 if($cnt > 0) {echo "\n<p class='hilfe'>".$cnt." Hausnummern ohne Gebäude</p>";}356 }357 310 } else { 358 311 echo "\n<p class='err'>Keine Straße.</p>";
Note: See TracChangeset
for help on using the changeset viewer.