Existe-t-il un calcul simple que je peux faire et qui convertira km en une valeur que je peux ajouter à un flottant lat ou long pour calculer un cadre de sélection? Il n'a pas besoin d'être complètement précis.
Par exemple: si on me donnait une latitude pour Londres, en Angleterre (51.5001524, -0.1262362) et que je voulais calculer quelle serait la latitude à 25 km est/ouest à partir de ce point et celle à l Point, que devrais-je faire pour convertir les 25 km en virgule à ajouter aux valeurs ci-dessus?
Je recherche une règle générale, c'est-à-dire: 1 km == +/- 0.XXX
Modifier:
Ma recherche initiale de "lat lon" n'a pas donné ce résultat:
_ { Comment calculer le cadre de sélection pour un emplacement donné en latitude/longitude? } _
La réponse acceptée semble convenir à mes besoins.
Les conversions approximatives sont:
Cela ne corrige pas totalement l'aplatissement polaire de la Terre - pour cela, vous voudriez probablement une formule plus compliquée utilisant l'ellipsoïde de référence WGS84 (le modèle utilisé pour le GPS). Mais l'erreur est probablement négligeable pour vos besoins.
Source: http://en.wikipedia.org/wiki/Latitude
Attention: Sachez que les coordonnées latlong sont exprimées en degrés, alors que la fonction cos
de la plupart des langues (toutes?) Accepte généralement les radians. Par conséquent, une conversion de degrés en radians est nécessaire.
Si vous utilisez Java, Javascript ou PHP, alors une bibliothèque effectuera ces calculs avec exactitude, en utilisant une trigonométrie amusante et compliquée (mais toujours rapide):
http://www.jstott.me.uk/jcoord/ - utiliser cette bibliothèque
LatLng lld1 = new LatLng(40.718119, -73.995667);
LatLng lld2 = new LatLng(51.499981, -0.125313);
Double distance = lld1.distance(lld2);
Log.d(TAG, "Distance in kilometers " + distance);
Intéressant que je n'ai pas vu une mention des coordonnées UTM.
https://en.wikipedia.org/wiki/Universal_Transverse_Mercator_coordinate_system .
Du moins si vous voulez ajouter des km à la même zone, cela devrait être simple (en Python: https://pypi.org/project/utm/ )
utm.from_latlon et utm.to_latlon.
Merci Jim Lewis pour cette excellente réponse et j'aimerais illustrer cette solution par ma fonction dans Swift:
func getRandomLocation(forLocation location: CLLocation, withOffsetKM offset: Double) -> CLLocation {
let latDistance = (Double(arc4random()) / Double(UInt32.max)) * offset * 2.0 - offset
let longDistanceMax = sqrt(offset * offset - latDistance * latDistance)
let longDistance = (Double(arc4random()) / Double(UInt32.max)) * longDistanceMax * 2.0 - longDistanceMax
let lat: CLLocationDegrees = location.coordinate.latitude + latDistance / 110.574
let lng: CLLocationDegrees = location.coordinate.longitude + longDistance / (111.320 * cos(lat / .pi / 180))
return CLLocation(latitude: lat, longitude: lng)
}
Dans cette fonction pour convertir la distance, j'utilise les formules suivantes:
latDistance / 110.574
longDistance / (111.320 * cos(lat / .pi / 180))