2010-02-01 7 views
7

Eine Frage zu Längen- und Breitengrad ... Wahrscheinlich eine dumme Frage.Finde den nächsten Breiten- und Längengrad

Ich habe eine Reihe von Breiten- und Längengrade für verschiedene locations.And, habe ich die Breite und Länge des Ortes, in dem ich mich befinde.

Jetzt habe ich die nächsten Orte von meinem Orte finden aus die Menge von Breiten und Längen, die ich habe. Ist es eine besondere Art, es zu berechnen, oder ist es nur eine einfache Subtraktion und Überprüfung der Differenz?

Könnten Sie bitte etwas Licht darauf werfen?

Danke, J

+1

Möchte eine Suche nach SO machen - es gibt viele bestehende Antworten darauf. z.B. http://StackOverflow.com/Questions/27928 und http://StackOverflow.com/Questions/23569/Calculating-Distance-between-2-Cities und – Rosstified

Antwort

8

Es hängt davon ab, wie die Punkte angeordnet sind.

Zum Beispiel - wenn die meisten Punkte auf einem Parkplatz sind, dann sollte Euclidean Distance gut funktionieren. In anderen Fällen - Geodesic Distance muss berechnet werden. Diese link sollte Ihnen mit weiteren Informationen helfen.

Hier ist die conversion von Dezimalformat zu Grad-Minute-Sekunde-Format und umgekehrt.

Prost

+0

Hallo Andriyev, Danke für die Informationen. Alle meine Breiten und Längen haben die Form "13.048869". Gibt es eine Möglichkeit, sie in das Format "53 09 02N" zu konvertieren? Tut mir leid, wenn es zu dumm ist. Danke, J – Abhishek

+0

@jadaaih - Ihr lat, lang ist im Dezimalformat. Die Antwort wurde mit einem Link aktualisiert, der die gesuchte Conversion betrifft. – Arnkrishn

+0

Danke ein Haufen Bro! – Abhishek

4

Sie können diese SQL verwenden. Es wählt dann den nächsten Lat, Lng aus Ihren DB-Einträgen aus.

SELECT ID, lat, lng, ((ACOS (SIN (your_lat * PI()/180) * SIN (lat * PI() /180) + COS (your_lat * PI()/180) * COS (lat * PI()/180) * COS ((your_long - lng) * PI()/180)) * 180/PI()) * 60 * 1,1515) AS distance FROM your_table_name HAVING distance < =‘ 10' ORDER BY distance ASC LIMIT 0,10

Hope this helfen.

+0

In welchen Einheiten ist es? – goto

+0

Die Einheit ist Meilen. Um die Entfernung in Kilometern zu erhalten, müssen Sie den Ausdruck "[...] 60 * 1.1515 [...]" mit 1.609344 (also 1 Meile in km) multiplizieren, was zu folgendem Ergebnis führt: "[...] 60 * 1.1515 * 1.609344 [...] ". – user1337

Verwandte Themen