/// <summary> /// obtient une liste de RTSSC ainsi que sa distance par rapport à la BGR /// </summary> public IList <Tuple <double, Rtssc> > InverseGeocodeMultipleWithDistance(GeoCoordinate coordonnees, int rayonRecherche, int nombreMaximumRtssRechercher, IEnumerable <int> ideRtss) { // conversion coordonnées gps vers lambert LambertCoordinate lambert = GpsHelper.ConvertNAD83ToLambertMtq(coordonnees.Latitude, coordonnees.Longitude); var request = new ObtenirSousRouteCoordonneesRequete(); request.CoordonneeX = lambert.X; request.CoordonneeY = lambert.Y; request.RayonRecherche = rayonRecherche; request.NombreMaximumRtssRechercher = nombreMaximumRtssRechercher; ObtenirSousRouteCoordonneesReponse response = this.ObtenirSousRouteCoordonnees(request); var listeResultat = response.ListeSousRoute.Select(coord => coord.IdentifiantSousRoute).OrderBy(_ => _).ToArray(); if (ideRtss == null || !listeResultat.Intersect(ideRtss).Any()) { return(InverseGeocodeMultipleRouteWithDistance(lambert, rayonRecherche, listeResultat)); } else { return(InverseGeocodeMultipleRouteWithDistance(lambert, rayonRecherche, listeResultat.Intersect(ideRtss))); } }
/// <summary> /// obtient une liste RTSSC qui se trouvent à la coordonnée GPS demandée /// </summary> public IList <Rtssc> InverseGeocodeMultiple(GeoCoordinate coordonnees, int rayonRecherche, int nombreMaximumRtssRechercher) { // conversion coordonnées gps vers lambert LambertCoordinate lambert = GpsHelper.ConvertNAD83ToLambertMtq(coordonnees.Latitude, coordonnees.Longitude); var request = new ObtenirSousRouteCoordonneesRequete(); request.CoordonneeX = lambert.X; request.CoordonneeY = lambert.Y; request.RayonRecherche = rayonRecherche; request.NombreMaximumRtssRechercher = nombreMaximumRtssRechercher; ObtenirSousRouteCoordonneesReponse response = this.ObtenirSousRouteCoordonnees(request); return(InverseGeocodeMultipleRoute <Rtssc>(coordonnees, rayonRecherche, response.ListeSousRoute.Select(coord => coord.IdentifiantSousRoute))); }