2010-01-21 2 views
2

Je dois générer une boîte de délimitation des valeurs de latitude et de longitude min et max pour que je puisse retourner les adresses dans un rayon donné.Ajouter le rayon à la longitude et à la latitude avec C#

J'ai deux fonctions <> ci-dessous pour retourner la plage dont j'ai besoin à +/- pour les coordonnées latérales afin d'établir le cadre de délimitation. Cependant, je ne pense pas que les maths soient 100%

J'utilise la formule de Haversine pour générer mes calculs de distance et cela semble fonctionner correctement. J'ai aussi étudié la formule Vincenty pour la distance, mais pour mes besoins, c'était exagéré. Mon problème est que je voudrais que mes résultats de recherche soient aussi précis que Haversine en ce sens que les coordonnées I +/- à lon lat tiennent compte de la courbure ellipsoïdale ou de la terre.

Ok, voici mes func <> s '... S'il vous plaît noter que je ne suis pas un professeur de mathématiques: o)

static Func<double, int, double> GetLatitudeRange = (latitude, distance) => (180.0/Math.PI) * (distance/EARTH_RADIUS_IN_KM); 


static Func<double, double, int, double> GetLongitudeRange = (longitude, latitude, distance) => 
      (
       Math.Asin(
        Math.Sin(distance/EARTH_RADIUS_IN_KM)/Math.Cos(latitude) 
        ) 
      ); 
+0

Si vous avez besoin de précision supplémentaire, regardez dans http://en.wikipedia.org/wiki/Great-circle_distance. – MPelletier

Répondre

Questions connexes