J'ai actuellement une requête de base de données qui calcule la distance entre chaque magasin dans la base de données à partir d'un emplacement "maison". Je calcule la distance de vol en utilisant cette formule.Latitude/Longitude Question mathématique (Distance entre deux coordonnées)
http://www.movable-type.co.uk/scripts/latlong.html
Je suis les commander et de les afficher. J'ai découvert une bien meilleure façon de le faire est seulement la recherche de magasins dont la latitude/longitude sont dans une fourchette. Par exemple, au lieu de calculer la distance entre chaque magasin dans la base de données (plus de 30000), ne groupez que ceux avec lat/long dans une certaine plage et calculez la distance entre ceux-ci.
En ce moment j'essaie de trouver comment calculer les limites réelles. La distance doit être inférieure à 5 km. Donc je divise 5 par 100 et plafonne la latitude et la longitude par ces montants.
SELECT storeid, storedescription, address, city, storebannerdescription, lat, lon,
ROUND (gc_dist (lat, lon, 43.758152, -79.746639), 1) AS distance
FROM storelatlon
WHERE ((lat-43.758152) < 0.05 AND (lat -43.758152) > -0.05) AND ((lon-(-79.746639)) < 0.05 AND (lon-(-79.746639)) > -0.05)
ORDER BY Distance
Quelle est votre question? –
Je ne suis pas sûr de ce que vous demandez, mais je noterai que la soustraction des mesures angulaires ne vous dit rien sur les distances. –
Quelle est la question? Je suppose que c'est "Est-ce une mise en œuvre valide ou bonne?" Aussi, quelle base de données utilisez-vous? Certaines bases de données prennent en charge les calculs lat/long (comme Oracle Locator), mais ce n'est pas forcément gratuit (Oracle Spatial ne l'est pas et il peut être difficile de dire où les lignes se terminent avec Locator et commencent par Spatial). D'autres bases de données fournissent également un support de base, y compris MySQL. – pickypg