x

Laufzeitfehler beim Auslesen von Bushaltestellen


  1. Laufzeitfehler beim Auslesen von Bushaltestellen · joergi2012 (Gast) · 01.10.2012 10:25 · [flux]

    Hi,

    ich habe hier ein seltsames Phänomen, welches ich mir nicht erklären kann. Mein nachfolgender Script, liest verschiedene Json Daten aus. Unter anderen auch, welche Bushaltestellen es in der Umgebung gibt. Wenn ich den Script unter PHP 5.2.6 laufen lasse, wird das Ergebnis nach ungefähr 30 Sekunden angezeigt. Unter PHP 5.3.6, hängt sich die Routine auf. Ersetze ich den Suchparameter "bushaltestelle" z.B. durch "tankstelle", funktioniert der Script auch unter PHP 5.3.6 und läuft bedeutend schneller durch als unter PHP 5.2.6.

    Wo liegt der Fehler? Hoffe, Ihr könnt mir helfen :-)

    <?php
    $lat=51.238706;
    $lon=6.77433;
    $uk1=$lon-0.04300;
    $uk2=$lat-0.02700;
    $uk3=$lon+0.04200;
    $uk4=$lat+0.02700;
    $uk5=$lon-0.00570;
    $uk6=$lat-0.00360;
    $uk7=$lon+0.00570;
    $uk8=$lat+0.00360;
    $ja1␣=␣file_get_contents('http://nominatim.openstreetmap.org/search?viewbox='.$uk1.','.$uk2.','.$uk3.','.$uk4.'&bounded=1&format=json&polygon=0&addressdetails=1&q=Arzt&limit=999');
    $jb1␣=␣json_decode($ja1);
    $ja2␣=␣file_get_contents('http://nominatim.openstreetmap.org/search?viewbox='.$uk1.','.$uk2.','.$uk3.','.$uk4.'&bounded=1&format=json&polygon=0&addressdetails=1&q=restaurant&limit=999');
    $jb2␣=␣json_decode($ja2);
    $ja3␣=␣file_get_contents('http://nominatim.openstreetmap.org/search?viewbox='.$uk1.','.$uk2.','.$uk3.','.$uk4.'&bounded=1&format=json&polygon=0&addressdetails=1&q=supermarkt&limit=999');
    $jb3␣=␣json_decode($ja3);
    $ja4␣=␣file_get_contents('http://nominatim.openstreetmap.org/search?viewbox='.$uk1.','.$uk2.','.$uk3.','.$uk4.'&bounded=1&format=json&polygon=0&addressdetails=0&q=naherholungsgebiet&limit=999');
    $jb4␣=␣json_decode($ja4);
    $ja5␣=␣file_get_contents('http://nominatim.openstreetmap.org/search?viewbox='.$uk5.','.$uk6.','.$uk7.','.$uk8.'&bounded=1&format=json&polygon=0&addressdetails=0&q=bushaltestelle&limit=999');
    $jb5␣=␣json_decode($ja5);
    $ja6␣=␣file_get_contents('http://nominatim.openstreetmap.org/search?viewbox='.$uk1.','.$uk2.','.$uk3.','.$uk4.'&bounded=1&format=json&polygon=0&addressdetails=1&q=bahnhof&limit=999');
    $jb6␣=␣json_decode($ja6);
    ?>
    

    • Re: Laufzeitfehler beim Auslesen von Bushaltestellen · joergi2012 (Gast) · 01.10.2012 19:25 · [flux]

      Hi, noch kein kleiner Hinweis: Wenn man in der Variable

      "$ja5" das "bounded=1" gegen ein "bounded=0"

      ersetzt, läuft der script. Leider liefert er dann im Ergebnis nicht die Daten des mit viewbox ausgewählten Bereiches 🤔

      Urgh, ich komme einfach nicht weiter. Hat einer eine Idee? Ich bin am verzeifeln 🙁


    • Re: Laufzeitfehler beim Auslesen von Bushaltestellen · user_5359 (Gast) · 01.10.2012 19:51 · [flux]

      Hallo joergie2012,

      Warum verwendest du denn nicht die Overpass-API für eine solche Abfrage?

      MfG Georg V. (OSM=user_5359)


    • Re: Laufzeitfehler beim Auslesen von Bushaltestellen · joergi2012 (Gast) · 01.10.2012 20:56 · [flux]

      Jau, danke für den Tip.

      Leider verstehe ich nicht ganz, wie ich den script anpassen kann bzw. wie ich eine JSON Ausgabe erstellen kann.

      Kannst Du mir evtl. helfen?

      Wäre Dir echt dankbar 😎


    • Re: Laufzeitfehler beim Auslesen von Bushaltestellen · SammysHP (Gast) · 01.10.2012 21:25 · [flux]

      Du könntest doch auch genauso gut XML parsen. php hat SimpleXML i.d.R. einkompiliert, damit geht das i.A. ausreichend.


    • Re: Laufzeitfehler beim Auslesen von Bushaltestellen · joergi2012 (Gast) · 01.10.2012 22:04 · [flux]

      Wäre zwar möglich. Aber ich würde doch lieber bei JSON bleiben.

      Was mich am meisten ärgert ist die Tatsache, das die Routinen einwandfrei funktionieren. Nur mit dem Wort "bushaltestelle" gibt es Probleme. Keine Ahnung warum.

      Aber wie erzeuge ich mit der vorgeschlagenen API eine JSON (oder zur Not auch XML) Ausgabe, die die gleichen Parameter wie die bisherige API beinhaltet?

      Ein Beispiel wäre suuupäär. Bevor ich wieder die ganze Nacht am compi verbringe 🙄


    • Re: Laufzeitfehler beim Auslesen von Bushaltestellen · a4732595 (Gast) · 01.10.2012 23:19 · [flux]

      http://wiki.openstreetmap.org/wiki/Over … uage_Guide
      da gibts gaaaaaaanz viele beispiele (auch json) ... such dir was passendes aus 😉


    • Re: Laufzeitfehler beim Auslesen von Bushaltestellen · joergi2012 (Gast) · 02.10.2012 10:22 · [flux]

      jau,

      danke für Eure Antworten. Aber anscheinend bin ich einfach zu blöd, das ganze umzusetzen.

      Der folgende Codeschnipsel ist wahrscheinlich komplett falsch, oder? (auf jedenfall gibt es keine Ausgabe)! 🙁

      $ja5␣=␣file_get_contents('http://www.overpass-api.de/api/xapi?query=bushaltestelle;bbox=7.1,51.2,7.2,51.3;out=json');
      

      Gibt es nicht die Möglichkeit, mir die richtige Umsetzung für

      $ja5␣=␣file_get_contents('http://nominatim.openstreetmap.org/search?viewbox='.$uk5.','.$uk6.','.$uk7.','.$uk8.'&bounded=1&format=json&polygon=0&addressdetails=0&q=bushaltestelle&limit=999');
      

      zu nennen. Meine Lobpreisungen wären ihm sicher 😎


    • Re: Laufzeitfehler beim Auslesen von Bushaltestellen · user_5359 (Gast) · 02.10.2012 17:24 · [flux]

      Hallo,

      toc-rox hat ein Perl-Script geschrieben, bei dem man den Querystring einfach als Kommandozeile übergeben kann.

      Den wahrscheinlichen Denkfehler, den Du übrigens gerade aufsitzt, basiert auf der Tatsache das nominatim noch eine Schlüsselwort Übersetzungsliste beinhaltet. In Deinem Fall Bushaltetelle in has-kv k="highway" v="busstop". Habe ich übrigens aus der Anleitung bei Negation entnommen.

      Wenn Du noch etwas Zeit hast, kann ich Dir später per PM noch ein PHP-Script rüberschicken, mit dem ich z.B. die Spielplatzdaten in Münster, die Altstoffbehälter in Wien oder die administrativen Grenzen Deutschlands regelmäßig abziehe. Das sollte relativ einfach auf Deine Bedürfnisse anpassbar sein.

      MfG Georg V. (OSM=user_5359)


    • Re: Laufzeitfehler beim Auslesen von Bushaltestellen · joergi2012 (Gast) · 02.10.2012 20:33 · [flux]

      Hi Georg,

      jau, das wäre super. Dann könnte ich das Problem bestimmt lösen 🙂