Gibt es eine einfache Berechnung, mit der ich km in einen Wert umwandeln kann, den ich einem Lat- oder Lon-Float hinzufügen kann, um einen Begrenzungsrahmen für Suchvorgänge zu berechnen? Es muss nicht ganz genau sein.
Zum Beispiel: Wenn ich einen Lat / Lon für London, England (51.5001524, -0.1262362) bekommen würde und berechnen möchte, wie hoch der Lat 25 km östlich / westlich von diesem Punkt sein würde und wie hoch der Lon 25 km nördlich / südlich davon sein würde Punkt, was müsste ich tun, um die 25 km in eine Dezimalzahl umzuwandeln und die obigen Werte zu addieren?
Ich suche eine allgemeine Faustregel, dh: 1 km == +/- 0.XXX
Bearbeiten:
Meine ursprüngliche Suche nach "lat lon" hat dieses Ergebnis nicht zurückgegeben:
Wie berechnet man den Begrenzungsrahmen für einen bestimmten Lat / Lng-Standort?
Die akzeptierte Antwort scheint für meine Anforderungen angemessen zu sein.
quelle
Antworten:
Die ungefähren Umrechnungen sind:
Dies korrigiert die polare Abflachung der Erde nicht vollständig - dafür möchten Sie wahrscheinlich eine kompliziertere Formel mit dem WGS84-Referenzellipsoid (dem für GPS verwendeten Modell). Aber der Fehler ist für Ihre Zwecke wahrscheinlich vernachlässigbar.
Quelle: http://en.wikipedia.org/wiki/Latitude
Achtung : Beachten Sie, dass Latlong-Koordinaten in Grad ausgedrückt werden, während die
cos
Funktion in den meisten (allen?) Sprachen normalerweise Bogenmaß akzeptiert. Daher ist eine Umrechnung von Grad in Bogenmaß erforderlich.quelle
cos(0°) = 1
=> Daher wird bei der Berechnung am Äquator kein Korrekturfaktor angewendet. Die Längen sind dort am breitesten.cos(90°) = 0
=> An den Polen treffen sich die Längen in einem Punkt. Es ist keine Entfernung zu berechnen.Wenn Sie Java, Javascript oder PHP verwenden, gibt es eine Bibliothek, die diese Berechnungen genau durchführt und dabei eine amüsant komplizierte (aber immer noch schnelle) Trigonometrie verwendet:
http://www.jstott.me.uk/jcoord/
quelle
http://www.jstott.me.uk/jcoord/ - Verwenden Sie diese Bibliothek
quelle
Interessant, dass ich keine Erwähnung von UTM-Koordinaten gesehen habe.
https://en.wikipedia.org/wiki/Universal_Transverse_Mercator_coordinate_system .
Zumindest wenn Sie km zur gleichen Zone hinzufügen möchten, sollte dies unkompliziert sein (in Python: https://pypi.org/project/utm/ ).
utm.from_latlon und utm.to_latlon.
quelle
Vielen Dank an Jim Lewis für seine großartige Antwort und ich möchte diese Lösung durch meine Funktion in Swift veranschaulichen:
In dieser Funktion zum Konvertieren der Entfernung verwende ich folgende Formeln:
quelle
Warum nicht richtig formulierte Geodatenabfragen verwenden?
Hier ist die SQL Server-Referenzseite auf der STContains-Geodatenfunktion:
https://docs.microsoft.com/en-us/sql/t-sql/spatial-geography/stcontains-geography-data-type?view=sql-server-ver15
oder wenn Sie nicht auf die Box- und Radian-Konvertierung verzichten möchten, können Sie immer die Distanzfunktion verwenden, um die Punkte zu finden, die Sie benötigen:
Es sollte ähnliche Funktionen für fast jede Datenbank geben.
Wenn Sie die Geodatenindizierung korrekt implementiert haben, sind Ihre Suchvorgänge viel schneller als der von Ihnen verwendete Ansatz
quelle