J'ai proposé une méthode qui prend une coordonnée et une gamme (en miles) et renvoie une liste de coordonnées qui forment un cercle autour de l'origine. Je semble avoir progressé de progresser avec cela, mais j'ai un problème pour obtenir la partie de la gamme.
private const Double LAT_MILE = 0.0144839;
private const Double LONG_MILE = 0.0190693;
public static List<Gps.Coordinate> GetRadius(Double OriginLatitude, Double OriginLongitude, Double Range, int Points)
{
List<Gps.Coordinate> Result = new List<Coordinate>();
//insert a new point
for (int i = 0; i < Points; i++)
{
Result.Add(new Gps.Coordinate()
{
Latitude = ((Range * LAT_MILE) * System.Math.Cos(i)) + OriginLatitude,
Longitude = ((Range * LONG_MILE) * System.Math.Sin(i)) + OriginLongitude
});
}
//sort using nearest neighbor
return SortCoords(ref Result);
}
3 Réponses :
Regardez-y (Inclut exemple code): http: // www .movable-type.co.uk / scripts / latlong.html p>
La "Loi sphérique des cosinules" vous donne la distance entre deux coordonnées. Il devrait être possible de le modifier pour vous donner les coordonnées autour d'un centre spécifié et d'un rayon spécifié (distance). P>
plutôt que définissant aussi, il semble un peu bizarre que vous prenez et substitut long_mile code> comme une constante, vous devez le calculer à l'intérieur de votre
getradius code> Fonction: long_mile = lat_mile / cos (originLatitude * pi / 180.0) code> sin () code> et cos () code> de votre entier
Index i code>. Si votre intention est de générer des points à 1 intervalles de radian autour de
Le point central, ça va marcher. Mais je soupçonne que vous pouvez vouloir quelque chose de plus comme p> sin (angle_radian) code> pour sin (i) code>, c. p> p>
Faites vos calculs dans un espace de coordonnées sphériques, puis de les convertir en latitude / longitude. P>
N'oubliez pas que les points de désactivation d'une distance constante d'un point fixe serait sembler i> d'être une Elipse et non un cercle si vous avez graphiquement leur lon / lon sur un morceau de papier graphique. En effet (sauf à l'équateur), la distance parcourue par une unité de lat n'est pas la même que pour une unité de Lon.