php googlefreier Geocoder gesucht

Hallo,

ich würde gerne, am liebsten mit php, eine adresse in Längengrad/Breitengrad umrechnen lassen.
Das würde ich gerne ohne Google machen (unser Prof ist ein echter Open Software Fan), gibt es da etwas für mich?:rolleyes:

Ach so, es müßte schon ein Script sein, kein externer Anbieter, da ich in einer Schleife n Adressen in Längengrad/Breitengrad umrechnen lassen will.

Das Ganze müßte nicht einmal wirklich laufen, ich würde nur gerne den Weg dahin beschreiben. (also reine Theorie, das würde schon reichen)

Kolibri

Theorie ist nicht meine Stärke: “Unser” Nominatim macht das in der Praxis für OSM :wink:

Hallo,

m. E. könnte das auch mit der Overpass-Api (http://wiki.openstreetmap.org/wiki/DE:Overpass_API) gehen.

Eine Beispiel-Abfrage:
http://overpass-turbo.eu/s/a29

die URI kann man mit php aufrufen und die Rückgabe wäre dann XML oder JSON, wobei ich vermute, dass man beide Formate gut mit php verarbeiten kann.

Viele Grüße
Marcus

Ja, den Nominatim habe ich auch schon gefunden, danke für Deine Bestätigung. Den URL-Aufruf und das anschließende parsen des JSON-Ergebnisses bekomme ich hin.

Danke, Jule

Hallo Jule,

genereller Hinweis auch noch auf http://wiki.openstreetmap.org/wiki/Search_engines

Ja, danke! Genau darüber habe ich gestern Nominatim gefunden.
Kennt jemand ein fertiges PHP(oder Perl)-Skript, was aus eine Adresse eine Suchanfrage an Nominatim erstellt und eine Antwort parsen kann? So müsste ich das Rad nicht neu erfinden. Ansonsten würde ich es selbst programmieren.

Kolibri

…eine Frage noch:

Ich habe mir jetzt einen Parser gebastelt, der mir alle nötigen Infos ausgibt.

Meine Frage: Ich bekomme auch eine Bbox. Nach welchen Kriteren generiert Nominatim diese Box?

Also woher weiß N., welchen Maßstab ich gerne hätte

Kolibri

Nominatim liefert dir ja eine BBOX, auf welchen Zoomlevel die Karte dann gezoomt wird, ist Sache der Anwendung. Also: Nominatim als reiner Geocoder weiss nix von Zoomleveln und Maßstäben, die Seite nominatim.openstreetmap.org/search.php?q=Zeil%2C+Frankfurt+am+Main macht einfach nur


function panToLatLonBoundingBox(lat,lon,minlat,maxlat,minlon,maxlon,wkt) {
			vectorLayer.destroyFeatures();
			var proj_EPSG4326 = new OpenLayers.Projection("EPSG:4326");
			var proj_map = map.getProjectionObject();

			map.zoomToExtent(new OpenLayers.Bounds(minlon,minlat,maxlon,maxlat).transform(proj_EPSG4326, proj_map));

			var lonLat = new OpenLayers.LonLat(lon, lat).transform(proj_EPSG4326, proj_map);
			map.panTo(lonLat, 2);
...

zoomToExtent auf der Karte, d.h. zoomt die Karte so, das alle Ergebnisse draufpassen. Das ist also ne Funktion aus deiner Mapping-Bibliothek.

Wie due genau da implementiert ist kann man im Source nachlesen, ist ja alles Open Source. Lefalet hat so ne Funktion auch, aber k.p. wie die genau heißt.