Déterminer si le point intersecte 35km rayon autour d'un autre point de? Possible dans LINQ?

StackOverflow https://stackoverflow.com/questions/2954820

  •  23-10-2019
  •  | 
  •  

Question

Supposons que j'ai un point à l'emplacement suivant:

Latitude: 47 ° 36'N Longitude: 122 ° 19'O

Autour du point ci-dessus, je dessine un rayon 35 km. J'ai un autre point maintenant ou plusieurs et je veux voir si elles tombent dans le rayon 35 km? Comment puis-je faire ceci? Est-il possible avec Linq donné les coordonnées (latitude, long) des deux points?

Était-ce utile?

La solution

Bien sûr. Supposons que vous avez une fonction qui calcule la distance Haversine entre deux positions (consistant en une coordonnée latitude et longitude). Si vous ne vous pouvez trouver un . Ensuite, il suffit d'utiliser la fonction comme sélecteur dans une clause Where. Si vous utilisez LINQ to SQL, vous aurez besoin de les matérialiser à vos objets de sorte que la position que vous pouvez utiliser la fonction Haversine sur eux comme LINQ aux objets; il n'y a pas une traduction de SQL, bien que vous pourriez probablement créer une fonction de table d'une valeur qui fait la même chose si vous ne voulez vraiment pas retourner tous les points d'abord.

var origin = new Position( 47.6, 122.3 );
var close = positions.Where( p => Haversine.Distance( origin, p, DistanceType.Km ) <= 35 );
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top