• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

GeoNames - Zend - PEAR

CornMd

New member
Guten Tag,
zur Zeit arbeite ich an einem Projekt, dass über GeoDaten verfügen muss. Ich habe mich nun nach längerer Recherche für die Datensätze von GeoNames entschieden. Diese kann man zum einen herunterladen, zum anderen als Webservice nutzen. Den Webservice spricht man am besten, wie ich es verstanden habe über das Zend Framework oder PEAR an. Diese beiden korrekt zu installieren ist mir aber bisher nicht gelungen.
Nun meine Fragen:
a) PEAR installiert man, indem man go-pear.php in einen Ordner der Webseite ablegt. Dieses extrahiert dann die Dateien, die man braucht. Dann habe ich in dem Inntal-Feld "Services_GeoNames" eingetragen und es hat funktioniert. Nun bin ich in die php.ini gegangen und habe eingetragen "pear/PEAR/". Nun habe ich in der index.php über require_once aufgerufen: "Services/GeoNames.php". Wieso sagt er mir, dass er das nicht finden konnte?
b) Wie kann ich PEAR über die Konsole starten?
c) Kann man das Zend Framework ähnlich installieren? Ich habe das Projekt begonnen und nun brauch ich Zend, ohne mein Projekt übern Haufen schmeißen zu wollen.
d) Wie kann ich eines der beiden später auf meinem gemieteten Webspace installieren?
Evt. nötige Infos:
Ich benutze den integrierten Webserver von OS X 10.8 mit PHP 5.3.15 und einen MySQL Server 5.5.25a.
 
ev brauchst du gar nix von beidem, was willst du denn mit den Geodaten machen? vielleicht gibts da eine simplere lösung.
aus adressen geokoordinaten bekommen und zwei punkte auf distanz prüfen? Orte positionieren? Umkreissuche?
 
Vielen Dank für die ersten Antworten.

Zunächst, was ich damit machen möchte:
Ich brauche eine Datenbank mit den größten Städten der Welt, je mehr desto besser. Man kann sich das so vorstellen, dass z.B. eine Seite wie Immobilienscout24.de auch Städte braucht in denen die Immobilien stehen. Gleichermaßen brauche ich das global. Vom Datensatz gefällt mir GeoNames sehr gut. Mein Problem ist, dass sich die Welt verändert. Ich brauche also eine smarte Lösung um meine Datenbank in Form zu halten. Meine Idee war es ein Script zu schreiben, was alle 1/4 Jahre die ganzen Städte neu lädt und meine Datenbank anpasst, sodass die Datenintegrität nicht verloren geht. Dazu wollte ich über PEAR GeoNames aufrufen. Inwieweit man die ganze Datenbank zu denen auslagern kann, weiß ich noch nicht.

Warum ich PEAR nutze:
ich denke das es leichter ist als direkt GeoNames zu benutzen & ich möchte noch mehr Services nutzen z.B. OpenStreetMaps.

Zum technischen Problem:

Ich habe die Installation auf meinem Computer aufgegeben. Habe es nun probeweise auf dem meinem Webspace versucht (1Blu). Dort ist pear vorinstalliert und ich muss es nur eine lokale Kopie erstellen. Leider ist dort PEAR noch in Version 1.9.1 statt 1.9.5, sodass das GeoNames-Packet nicht installiert werden kann. Ich werde mal mit denen schnacken, wann die ein Update durchführen. Ich denke, dass sich die Fragen erstmal soweit erledigt haben und ich melde mich sobald ich mit meinem Hoster telefoniert habe.

Vielen Dank
 
warum berechnest du mit einer funktion nicht einfach die geoposition der städte die du haben willst, kannst ja mit cronjob auch jeden tag neu generieren.
eine smarte lösung bietet da google zB. hatte mich mir mal das zusammengebaut:
PHP:
function getGeoCode($adresse,$geo){
	$adresse_clean	= umlaute($adresse,$dir = "down");
	$base_url 		= "http://maps.google.com/maps/geo?output=xml&key=123";
    $request_url 	= $base_url . "&q=" . urlencode($adresse_clean);
    $xml 			= simplexml_load_file($request_url);
    $status 		= $xml->Response->Status->code;
    if(strcmp($status, "200") == 0) {
		$coordinates 		= $xml->Response->Placemark->Point->coordinates;
		$coordinatesSplit 	= split(",", $coordinates);
		if($geo == "lat"){ return $coordinatesSplit[1]; }
		else if($geo == "lng"){ return $coordinatesSplit[0]; }
    }else{ return "faild"; }
}
Mit getGeoCode('New York','lat'); bekommste dann den lat-wert von NewYork, hast du lat&lng kannst du einiges damit anstellen.
Diese kannst du dann in eine datenbank schreiben wenn du magst, oder jedesmal halt dynamisch berechnen lassen.
Funktioniert auch mit kompletten Adressen ala getGeoCode('Deutschland,Hamburg,Berndesstr.37','lat');
 
Zurück
Oben