You are not logged in.

Announcement

*** NOTICE: forum.openstreetmap.org is being retired. Please request a category for your community in the new ones as soon as possible using this process, which will allow you to propose your community moderators.
Please create new topics on the new site at community.openstreetmap.org. We expect the migration of data will take a few weeks, you can follow its progress here.***

#1 2012-10-01 10:25:34

joergi2012
Member
Registered: 2012-02-11
Posts: 90

Laufzeitfehler beim Auslesen von Bushaltestellen

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);
?>

Offline

#2 2012-10-01 19:25:51

joergi2012
Member
Registered: 2012-02-11
Posts: 90

Re: Laufzeitfehler beim Auslesen von Bushaltestellen

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 hmm

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

Offline

#3 2012-10-01 19:51:11

user_5359
Member
From: Margetshöchheim
Registered: 2008-12-25
Posts: 333
Website

Re: Laufzeitfehler beim Auslesen von Bushaltestellen

Hallo joergie2012,

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

MfG Georg V. (OSM=user_5359)

Offline

#4 2012-10-01 20:56:43

joergi2012
Member
Registered: 2012-02-11
Posts: 90

Re: Laufzeitfehler beim Auslesen von Bushaltestellen

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 cool

Offline

#5 2012-10-01 21:25:13

SammysHP
Member
From: Celle, Germany
Registered: 2012-02-27
Posts: 1,707
Website

Re: Laufzeitfehler beim Auslesen von Bushaltestellen

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

Offline

#6 2012-10-01 22:04:10

joergi2012
Member
Registered: 2012-02-11
Posts: 90

Re: Laufzeitfehler beim Auslesen von Bushaltestellen

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 roll

Offline

#7 2012-10-01 23:19:07

a4732595
Member
Registered: 2010-08-05
Posts: 17

Re: Laufzeitfehler beim Auslesen von Bushaltestellen

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

Offline

#8 2012-10-02 10:22:33

joergi2012
Member
Registered: 2012-02-11
Posts: 90

Re: Laufzeitfehler beim Auslesen von Bushaltestellen

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)! sad

$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 cool

Offline

#9 2012-10-02 17:24:17

user_5359
Member
From: Margetshöchheim
Registered: 2008-12-25
Posts: 333
Website

Re: Laufzeitfehler beim Auslesen von Bushaltestellen

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)

Offline

#10 2012-10-02 20:33:05

joergi2012
Member
Registered: 2012-02-11
Posts: 90

Re: Laufzeitfehler beim Auslesen von Bushaltestellen

Hi Georg,

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

Offline

Board footer

Powered by FluxBB