Namen der Autobahnen raufiltern, sofern vorhanden

Hi,

ich suche eine Möglichkeit, mittels PHP die Namen von Autobahnen, soweit vorhanden auszulesen. Diese befinden sich im array “->elements->tags->ref”. Aber irgendwie funktioniert das nicht. Wo der Fehler liegt ist mir klar ($z3=…). Aber ich weiß nicht, wie ich das Problem lösen kann. Habt Ihr eine Idee? Danke im voraus für Eure Hilfe :slight_smile:


<?php
$url='http://www.overpass-api.de/api/interpreter?data=[out:json];way[highway="motorway_link"]('.$x1.','.$x2.','.$x3.','.$x4.');out;';
$ja7 = file_get_contents($url);
$jb7 = json_decode($ja7);
$z1=0;
$z2=count($jb7->elements); // gibt die richtige Anzahl der Elemente zurück
while ($z1<$z2)
{
$z3=$jb7[$z1]->tags->ref; // hier ist der Fehler :-(
echo "<br>*".$z3;
$z1++;
}
?>

Hallo,

vorab: geht hier noch um das gleiche Problem wie in diesem Thread? http://forum.openstreetmap.org/viewtopic.php?id=19775

Wenn ja, schau doch bitte nochmal im Post unten nach, Roland hat dort die Funktionsweise der Abfrage im Detail erklärt. Dort sollten dann auch die Autobahnen samt ref=* herauskommen, sofern sie an einer Auf- oder Abfahrt liegt.

http://forum.openstreetmap.org/viewtopic.php?pid=305380#p305380

Gruß,

Hi mmd,

ja, es ist dasselbe Problem. Leider blicke ich bei der foreach Schleife nicht durch. Bin noch PHP Anfänger. Wie gesagt suche ich einen einfachen Weg, das Element “ref” anzuzeigen :confused:

Nahmd,

Probiere es mal so:


[...]
$text = file_get_contents($url);
$tree = json_decode($text);
$elements = $tree->elements;
$refs=array();
foreach ($elements as $element) {
        $tags = $element->tags;
        $ref = $tags->ref;
        if ($ref) $refs[] = $ref;
}
sort($refs);
echo join (", ", array_unique($refs));
?>

Gruß Wolf

Hi Netzwolf,

Suuuppäärr, klappt einwandfrei. Du hast mir sehr geholfen. Vielen Dank :slight_smile: