Facebook
Twitter
Google+
Kommentare
1

Umkreissuche in PHP – Teil 1

Den heutigen Artikel möchte ich Caro widmen. Leider habe ich keine Ahnung wer Caro ist, aber sie hat sich in ihrem letzten Kommentar gewünscht, dass ich doch die Umkreissuche in PHP doch mal vorziehen sollte. Und natürlich ist ihr Wunsch mir Befehl. Gleichzeitig soll dies auch mein erster Beitrag in der Rubrik des schwarzen Magiers sein, da sich bestimmt viele von euch auch schon gefragt haben, wie man mit einfachen Mitteln raus bekommt, welche Mitglieder einer Community z.B. nicht mehr als 10km von einem entfern wohnen. Ich werde also versuchen einen Weg zu beschreiben, den man ohne Kosten und Mühen gehen kann und trotzdem ein gewünschtes Resultat bekommt. Ich konnte es mir nicht verkneifen zu sagen, dass es kostenlos sein wird, denn auf dem Markt findet man hunderte von Anbietern, die einem einen Webservice anbieten, der einem bei der Umkreissuche hilft. Diese sind dann aber meist richtig teuer.

Fangen wir also an, wir brauchen eine Datenbank, die Postleitzahlen (PLZ) in Geo-Koordinaten umsetzt, eine Datenbank mit vielen Usern und den Orten (PLZ) in denen sie wohnen und den Satz des Pythagoras. Fangen wir mit dem einfachsten an, der Datenbank mit PLZ und ihren Koordinaten. Natürlich ist dies auch gleichzeitig der komplexeste Teil, aber dank eines Open Source Projektes wurde uns diese Arbeit schon abgenommen. Die OpenGeoDB ist der Versuch eine möglichst vollständige Datenbank zu allen Orten und Postleitzahlen im europäischen Raum (A, B, CH. DE und FL) aufzubauen. Und diese werden wir einfach für unsere Zwecke verwenden. Wer will kann gleich auch die GeoClassPHP mit runterladen, die einem viele Aufgaben bereits abnimmt. Da wir aber auch hierbei noch etwas lernen wollen, machen wir das jetzt einfach selber. Normalerweise bin ich aber ein Freund des „Rad-nicht-neu-Erfindens“.

Der zweite Punkt, den wir benötigen sind viele User in unsere Community. Natürlich klappt das alles auch mit zwei Leuten, macht aber viel weniger Spaß. Also alle Freunde einladen, die beste Community aller Zeiten bauen und schon sind wir am Ziel. Ein paar Millionen User sollten es schon sein – StudiVZ hat es ja schließlich auch geschafft. Ok wir haben jetzt also unsere Datenbank und eine Million Mitglieder. Es kann also losgehen. Ach ja den Satz des Pythagoras.

Der Satz des Pythagoras ist einer der fundamentalen Sätze der euklidischen Geometrie. Er besagt, dass in allen ebenen rechtwinkligen Dreiecken die Summe der Flächeninhalte der Kathetenquadrate gleich dem Flächeninhalt des Hypotenusenquadrates ist.

Ah ich liebe die Mathematik. Hab ich mal erwähnt, dass Mathe mein Nebenfach beim Studium war? Weiß auch nicht wirklich warum, aber ich hab es sogar bestanden (danke Annette!). Ich will niemanden unterstellen, dass er den Satz nicht verstanden hat, aber ich versuche es einfach nochmal in meinem eigenen Worte zu fassen. Wir haben also ein rechwinkeliges Dreieck (ein Winkel 90°), dort gibt es eine lange Seite, die Hypotenuse und zwei kurze Seiten, die Katheten. Quadriert man nun die Länge der Hypotenuse, so ist das Ergebnis genau so groß wie die Summe der beiden Kathetenquadrate. Wenn ich mir meine Erklärung so durchlesen fällt mir auf, dass sie auch nicht viel besser ist. Aber egal. Vielleicht sind zwei schlechte Erläuterungen ja so gut wie eine gute. Wir merken uns also a2 + b2 = c2

Kommen wir nochmal zurück zu den Geo-Koordinaten. Da wir hier keine super komplizierte Formel haben wollen, um den Abstand zwischen zwei Orten auszurechnen, nehmen wir einfach an, dass die Erde flach ist. Im Atlas geht das ja auch. Wir legen jetzt also durch unsere Deutschlandkarte ein Koordinatensystem. Eigentlich machen diese Geo-Koordinaten ja nichts anderes, der Breitengrad ist unsere Y-Achse, der Längengrad die X-Achse. Eigentlich müssen wir jetzt nur noch den Abstand zweier Punkte berechnen. Dafür nehmen wir den Satz des Pythagoras.

Hier mal eine kleine Grafik um den Zusammenhang zwischen dem Abstand zwischen zwei Punkten und den Satz des Pythagoras zu verdeutlichen. Wir nehmen also die X-Koordinaten der beiden Punkte und ziehen sie voneinander ab und schon haben wir die Länge der ersten Kathede, das gleiche mit den Y-Koordinaten, dann nur noch quadrieren und fertig.

So mehr möchte ich für heute auch nicht erzählen, da es wohl sonst zu viel für einen Tag wird.

Über den Autor

Nils Langner

Nils Langner ist der Gründer von "the web hates me" und auch der Hauptautor. Im wahren Leben leitet er das Qualitätsmanagementteam im Gruner+Jahr-Digitalbereich und ist somit für Seiten wie stern.de, eltern.de und gala.de aus Qualitätssicht verantwortlich. Nils schreibt seit den Anfängen von phphatesme, welches er ebenfalls gegründet hat, nicht nur für diverse Blogs, sondern auch für Fachmagazine, wie das PHP Magazin, die t3n, die c't oder die iX. Nebenbei ist er noch ein gern gesehener Sprecher auf Konferenzen. Herr Langner schreibt die Texte über sich gerne in der dritten Form.
Kommentare

1 Comments

  1. hihi, sau gut…
    hab zwar erst den ersten satz gelesen, aber du bekommst von mir schon jetzt ein (eigentlich zwei) „daumen hoch“!

    ich bin begeistert!

    vielen lieben dank! 🙂

    Reply

Leave a Comment.

Link erfolgreich vorgeschlagen.

Vielen Dank, dass du einen Link vorgeschlagen hast. Wir werden ihn sobald wie möglich prüfen. Schließen