Y a-t-il un calcul simple que je peux faire qui convertira km en une valeur que je peux ajouter à un flotteur lat ou lon pour calculer une boîte englobante pour les recherches? Il n'a pas besoin d'être complètement précis.
Par exemple: si on me donnait un lat / lon pour Londres, Angleterre (51,5001524, -0,1262362) et que je voulais calculer ce que serait le lat à 25 km est / ouest de ce point, et ce que serait le lon à 25 km au nord / sud de cela point, que dois-je faire pour convertir les 25 km en un nombre décimal à ajouter aux valeurs ci-dessus?
Je recherche une règle générale, à savoir: 1km == +/- 0.XXX
Éditer:
Ma recherche initiale pour "lat lon" n'a pas retourné ce résultat:
Comment calculer la boîte englobante pour un emplacement lat / lng donné?
La réponse acceptée semble adaptée à mes besoins.
la source
Réponses:
Les conversions approximatives sont:
Cela ne corrige pas entièrement 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
cos
fonction dans la plupart des langues (toutes?) Accepte généralement les radians, donc une conversion des degrés en radians est nécessaire.la source
cos(0°) = 1
=> Il n'y a donc pas de facteur de correction appliqué lors du calcul à l'équateur. Les longitudes y sont les plus larges.cos(90°) = 0
=> Aux pôles les longitudes se rencontrent en un point. Il n'y a pas de distance à calculer.Si vous utilisez Java, Javascript ou PHP, il existe une bibliothèque qui effectuera exactement ces calculs, en utilisant une trigonométrie amusante compliquée (mais toujours rapide):
http://www.jstott.me.uk/jcoord/
la source
http://www.jstott.me.uk/jcoord/ - utilisez cette bibliothèque
la source
Intéressant que je n'ai pas vu une mention des coordonnées UTM.
https://en.wikipedia.org/wiki/Universal_Transverse_Mercator_coordinate_system .
Au 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.
la source
Merci Jim Lewis pour sa bonne réponse et je voudrais illustrer cette solution par ma fonction dans Swift:
Dans cette fonction pour convertir la distance, j'utilise les formules suivantes:
la source
Pourquoi ne pas utiliser des requêtes géospatiales correctement formulées ???
Voici la page de référence du serveur SQL sur la fonction géospatiale STContains:
https://docs.microsoft.com/en-us/sql/t-sql/spatial-geography/stcontains-geography-data-type?view=sql-server-ver15
ou si vous ne souhaitez pas utiliser la conversion box et radian, vous pouvez toujours utiliser la fonction distance pour trouver les points dont vous avez besoin:
Il devrait y avoir des fonctionnalités similaires pour presque toutes les bases de données.
Si vous avez correctement implémenté l'indexation géospatiale, vos recherches seraient bien plus rapides que l'approche que vous utilisez
la source