Geolokalisierung und Karten in C# (.NET): Überblick über Bibliotheken und Werkzeuge

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Geolokalisierung und Karten in C# (.NET): Werkzeuge für die Arbeit mit räumlichen Daten



Die Entwicklung von Anwendungen, die mit geografischen Koordinaten, Karten und Routen arbeiten, ist eine gefragte Aufgabe für C#-Entwickler. Im .NET-Ökosystem gibt es mehrere leistungsstarke Bibliotheken, die Aufgaben von der einfachen Koordinatenbestimmung bis zum Aufbau komplexer Geoinformationssysteme (GIS) lösen. In diesem Artikel betrachten wir die wichtigsten Werkzeuge für die Arbeit mit Geolokalisierung und Karten in C#.



1. Integrierte Mittel: Die Klasse GeoCoordinate



Die .NET-Plattform bietet die Basisklasse System.Device.Location.GeoCoordinate (verfügbar in .NET Framework und über das Paket System.Device.Location.Portable für .NET Core). Sie ermöglicht das Speichern von Breiten- und Längengrad sowie die Berechnung der Entfernung zwischen zwei Punkten mit der Haversine-Formel.



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); // Ergebnis in Metern }

public void ShowDistance() { double distance = CalculateDistance(55.7558, 37.6176, 59.9343, 30.3351); Console.WriteLine($"Entfernung Moskau-St. Petersburg: {distance / 1000:F2} km"); }}


Einschränkungen: Die Klasse unterstützt keine Arbeit mit Karten, Geokodierung (Umwandlung von Adressen in Koordinaten) oder Routenplanung. Für eine vollwertige Arbeit mit Karten sind Drittanbieter-Bibliotheken erforderlich.



2. Mapsui — plattformübergreifende Bibliothek zur Kartendarstellung



Mapsui ist eine moderne plattformübergreifende Bibliothek für .NET (unterstützt WPF, MAUI, Avalonia, Blazor). Sie ermöglicht die Darstellung von Karten aus verschiedenen Quellen: OpenStreetMap (OSM), Bing Maps, Stamen sowie eigenen Kachelservern. Die Bibliothek ist Open Source und wird aktiv weiterentwickelt.



Hauptfunktionen:

  • Darstellung von Raster- und Vektorkacheln
  • Unterstützung von Ebenen (Marker, Polygone, Linien)
  • Interaktivität: Zoomen, Schwenken, Klicken auf Objekte
  • Integration mit Kartenanbietern (OSM, CartoDB, MapTiler)
  • Unterstützung von Projektionen (EPSG:4326, EPSG:3857)


using Mapsui;using Mapsui.Providers;using Mapsui.Tiling;using Mapsui.Widgets.MapInfo;using Mapsui.Widgets;

// Karte mit OpenStreetMap-Kacheln erstellenvar map = new Map();map.Layers.Add(OpenStreetMap.CreateTileLayer());

// Marker (Punkt) hinzufügenvar pointLayer = new MemoryLayer{ DataSource = new PointsProvider(new[] { new Feature(new MPoint(37.6176, 55.7558)) { ["Name"] = "Moskau" } }), Style = new SymbolStyle { Fill = new Brush(Color.Red), SymbolScale = 1.5 }};map.Layers.Add(pointLayer);

// In WPF MapControl anzeigen// mapControl.Map = map;


Wann verwenden: Wenn Sie eine Karte in eine Desktop- oder mobile Anwendung unter .NET MAUI/WPF einbetten müssen, die nicht von Drittanbieter-API-Schlüsseln abhängt (OSM ist kostenlos).



3. NetTopologySuite (NTS) — Arbeit mit Geometrie und räumlichen Abfragen



NetTopologySuite ist ein Port der bekannten Java-Bibliothek JTS (Java Topology Suite) für .NET. Sie bietet leistungsstarke Werkzeuge für die Arbeit mit geometrischen Objekten: Punkten, Linien, Polygonen, Multipolygonen. NTS wird als Grundlage für viele GIS-Anwendungen und ORMs verwendet (z. B. Entity Framework Core mit dem Npgsql-Anbieter für PostgreSQL/PostGIS).



Wichtige Funktionen:

  • Erstellung und Manipulation geometrischer Formen
  • Räumliche Prädikate: Schnittmenge, Enthaltensein, Berührung
  • Pufferung, Vereinigung, Schnittmenge von Polygonen
  • Lesen/Schreiben von Forma

Empfehlungen