L’Institut national de l’information géographique et forestière (IGN) est un établissement public placé sous la tutelle des ministères chargés de l’écologie et de la forêt. Sa vocation est de produire et diffuser des données (open data) et des représentations (cartes en ligne et papier, géo visualisation) de référence relatives à la connaissance du territoire national et des forêts françaises ainsi que de leur évolution.
Le code se trouve dans : https://github.com/Fangorne/CSharpLibrary/tree/master/GeoServices
Ceci est une méthode C# qui utilise l’objet HttpClient
pour envoyer une requête HTTP POST à l’API de calcul d’itinéraires de l’IGN (Institut national de l’information géographique et forestière) en France. La méthode prend en entrée deux chaînes de caractères qui représentent les coordonnées GPS de départ et d’arrivée, et renvoie un objet de type Root
qui contient les informations sur l’itinéraire calculé.
private static async Task<Root> ComputeWay(string firstCoordinates, string secondCoordinates) { using (var httpClient = new HttpClient()) { using (var request = new HttpRequestMessage(new HttpMethod("POST"), "https://wxs.ign.fr/calcul/geoportail/itineraire/rest/1.0.0/route")) { // Create a new product Carto product = new Carto { resource = "bdtopo-osrm", start = firstCoordinates, end = secondCoordinates, profile = "car", optimization = "fastest", distanceUnit = "meter", timeUnit = "minute" }; var json = JsonConvert.SerializeObject(product); request.Headers.TryAddWithoutValidation("accept", "application/json"); request.Content = new StringContent(json); request.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json"); var response = await httpClient.SendAsync(request); var responseInJson = await response.Content.ReadAsStringAsync(); var root = JsonConvert.DeserializeObject<Root>(responseInJson); Console.WriteLine($"Distance {root.distance} {root.distanceUnit} Durée {root.duration} {root.timeUnit}"); foreach (var step in root.portions[0].steps) { Console.WriteLine( $"{step.instruction} {step.attributes.name} Distance : {step.distance} Durée : {step.duration}"); } return root; } }
Voici comment cette méthode fonctionne en détail :
- Création de l’objet
HttpClient
: l’objetHttpClient
est utilisé pour envoyer et recevoir des requêtes HTTP. Il est créé à l’aide de la directiveusing
afin de s’assurer qu’il est automatiquement libéré une fois qu’il n’est plus utilisé. - Création de la requête HTTP : l’objet
HttpRequestMessage
est utilisé pour représenter la requête HTTP qui sera envoyée à l’API de l’IGN. La requête utilise le verbe HTTP POST et l’URL de l’API de calcul d’itinéraires. - Création de l’objet de données de la requête : l’objet
Carto
est utilisé pour représenter les données de la requête, qui contiennent les informations sur l’itinéraire à calculer (coordonnées de départ et d’arrivée, type de véhicule, etc.). L’objet est serialisé en chaîne de caractères au format JSON à l’aide de la méthodeJsonConvert.SerializeObject
. - Configuration de la requête HTTP : les en-têtes de la requête sont configurés pour indiquer le type d’acceptation et le type de contenu de la requête. Le contenu de la requête est défini en utilisant l’objet
StringContent
qui contient la chaîne de caractères serialisée en JSON. - Envoi de la requête HTTP et réception de la réponse : la méthode
SendAsync
de l’objetHttpClient
est utilisée pour envoyer la requête HTTP et recevoir la réponse de l’API de l’IGN. La réponse est lue en tant que chaîne de caractères