Géolocalisation et cartes en C# (.NET) : outils pour travailler avec des données spatiales
Le développement d'applications manipulant des coordonnées géographiques, des cartes et des itinéraires est une tâche courante pour les développeurs C#. Dans l'écosystème .NET, il existe plusieurs bibliothèques puissantes qui permettent de résoudre des problèmes allant de la simple détermination de coordonnées à la construction de systèmes d'information géographique (SIG) complexes. Dans cet article, nous examinerons les outils clés pour travailler avec la géolocalisation et les cartes en C#.
1. Outils intégrés : la classe GeoCoordinate
La plateforme .NET fournit une classe de base System.Device.Location.GeoCoordinate (disponible dans .NET Framework et via le package System.Device.Location.Portable pour .NET Core). Elle permet de stocker la latitude et la longitude, ainsi que de calculer la distance entre deux points à l'aide de la formule haversine.
using System.Device.Location;
public class GeoService{ public double CalculateDistance(double lat1, double lon1, double lat2, double lon2) { var point1 = new GeoCoordinate(lat1, lon1); var point2 = new GeoCoordinate(lat2, lon2); return point1.GetDistanceTo(point2); // résultat en mètres }
public void ShowDistance() { double distance = CalculateDistance(55.7558, 37.6176, 59.9343, 30.3351); Console.WriteLine($"Distance Moscou-Saint-Pétersbourg : {distance / 1000:F2} km"); }}Limitations : la classe ne prend pas en charge le travail avec les cartes, le géocodage (conversion d'une adresse en coordonnées) ou la construction d'itinéraires. Pour une utilisation complète des cartes, des bibliothèques tierces sont nécessaires.
2. Mapsui — bibliothèque multiplateforme pour l'affichage de cartes
Mapsui est une bibliothèque multiplateforme moderne pour .NET (prend en charge WPF, MAUI, Avalonia, Blazor). Elle permet d'afficher des cartes provenant de diverses sources : OpenStreetMap (OSM), Bing Maps, Stamen, ainsi que des serveurs de tuiles personnalisés. La bibliothèque est open source et activement développée.
Fonctionnalités principales :
- Affichage de tuiles raster et vectorielles
- Prise en charge des couches (marqueurs, polygones, lignes)
- Interactivité : zoom, panoramique, clics sur les objets
- Intégration avec les fournisseurs de cartes (OSM, CartoDB, MapTiler)
- Prise en charge des projections (EPSG:4326, EPSG:3857)
using Mapsui;using Mapsui.Providers;using Mapsui.Tiling;using Mapsui.Widgets.MapInfo;using Mapsui.Widgets;
// Créer une carte avec des tuiles OpenStreetMapvar map = new Map();map.Layers.Add(OpenStreetMap.CreateTileLayer());
// Ajouter un marqueur (point)var pointLayer = new MemoryLayer{ DataSource = new PointsProvider(new[] { new Feature(new MPoint(37.6176, 55.7558)) { ["Name"] = "Moscou" } }), Style = new SymbolStyle { Fill = new Brush(Color.Red), SymbolScale = 1.5 }};map.Layers.Add(pointLayer);
// Afficher dans WPF MapControl// mapControl.Map = map;Quand l'utiliser : si vous devez intégrer une carte dans une application de bureau ou mobile .NET MAUI/WPF, sans dépendre de clés API tierces (OSM est gratuit).
3. NetTopologySuite (NTS) — travail avec la géométrie et les requêtes spatiales
NetTopologySuite est un port de la célèbre bibliothèque Java JTS (Java Topology Suite) pour .NET. Elle fournit des outils puissants pour travailler avec des objets géométriques : points, lignes, polygones, multipolygones. NTS est utilisée comme base pour de nombreuses applications SIG et ORM (par exemple, Entity Framework Core avec le fournisseur Npgsql pour PostgreSQL/PostGIS).
Fonctionnalités clés :
- Création et manipulation de formes géométriques
- Prédicats spatiaux : intersection, inclusion, tangence
- Bufferisation, union, intersection de polygones
- Lecture/écriture de formats
Aussi dans la bibliothèque
Traitement d'images en Rust : redimensionnement et recadrage avec image et imageproc
Validation des données en Java : aperçu des bibliothèques et outils
Traitement et édition d'images en TypeScript : Jimp, Sharp, Canvas