Geodaten aus Adresse ermitteln mit PHP und Curl und der Google-API
Für ein Projekt musste ich zu einer verhältnismäßig großen Anzahl von Adressdaten die entsprechende Geoposition (Längen- und Breitengrad) ermitteln.
Getreu nach dem Motto “Viele Wege führen nach Rom” gibt es sicherlich diverse mehr oder minder aufwendige und elegante Wege dies zu tun.
Denn wenn es z.B. nur um eine Visualisierung in einer Google-Karte geht, lässt sich die Google-Api auch direkt mit der Adresse füttern.
Ich brauchte jedoch explizit den Längengrad und den Breitengrad (Longitude, Latitude) und habe mir schnell eine Krücke aus PHP, Curl und der Google-API gebaut, um zur vorliegenden Adresse jeweils die Geodaten zu erhalten:
//Google API Key (geht auch für wenige Anfragen ohne)
$google_api_key = “XYZ”//Adresse, zu der die Geodaten ermittelt werden sollen durch Komma getrennt
$query=”Adresse, PLZ, Ort”
//Curl Optionen setzen und Aufruf starten
$str = array(‘Accept-Language: ‘.$_SERVER["HTTP_ACCEPT_LANGUAGE"]);
$curl_req = curl_init();
curl_setopt($curl_req, CURLOPT_URL, ‘http://maps.google.com/maps/geo?q=’.rawurlencode($query).’&output=csv&key=’.$google_api_key);
curl_setopt($curl_req, CURLOPT_HTTPHEADER, $str);
curl_setopt($curl_req, CURLOPT_CONNECTTIMEOUT, 4);
curl_setopt($curl_req, CURLOPT_RETURNTRANSFER, TRUE);
$curl_res = curl_exec($curl_req);
//Dir API Rückgabe (CSV) in ein Array überführen
$position = explode(‘,’,$curl_res);//Lat und Long aus dem Array in eigene Variablen zur Weiterverarbeitung speichern$lat=$position[2];
$long=$position[3];
Anzumerken ist, dass gerade bei vielen Abfragen ggf. ein kurzes sleep(1) mit in die Schleife eingebaut werden sollte, um einer vorübergehenden Sperrung von Google vorzubeugen, dies gilt besonders wenn kein API Key verwendet wird!
No related posts.
