Geolokalisierung und Karten in C# (.NET): Überblick über wichtige Bibliotheken und Werkzeuge
Die Arbeit mit Geodaten und Kartografie ist eine gefragte Aufgabe in modernen .NET-Anwendungen. Von der Standortermittlung bis zur Visualisierung auf einer Karte bietet das C#-Ökosystem mehrere leistungsstarke Lösungen. In diesem Artikel betrachten wir die wichtigsten Bibliotheken für die Arbeit mit Geolokalisierung und Karten, ihre Funktionen und Anwendungsbeispiele.
1. Integrierte Bibliothek System.Device.Location (GeoCoordinate)
Für die grundlegende Arbeit mit GPS-Koordinaten in .NET Framework steht die Klasse GeoCoordinate aus dem Namensraum System.Device.Location zur Verfügung. Sie ermöglicht es, den aktuellen Standort des Geräts (Windows) zu ermitteln und die Entfernung zwischen zwei Punkten zu berechnen.
Anwendungsbeispiel:
using System.Device.Location;
var watcher = new GeoCoordinateWatcher();watcher.TryStart(false, TimeSpan.FromMilliseconds(1000));
if (watcher.Status == GeoPositionStatus.Ready){ GeoCoordinate coord = watcher.Position.Location; Console.WriteLine($"Breitengrad: {coord.Latitude}, Längengrad: {coord.Longitude}");}
// Entfernung zwischen zwei Punktenvar point1 = new GeoCoordinate(55.7558, 37.6176); // Moskauvar point2 = new GeoCoordinate(59.9343, 30.3351); // Sankt Petersburgdouble distance = point1.GetDistanceTo(point2); // in MeternConsole.WriteLine($"Entfernung: {distance / 1000:F2} km");2. NetTopologySuite — erweiterte Arbeit mit Geometrie
NetTopologySuite (NTS) ist ein .NET-Port der beliebten Java-Bibliothek JTS. Sie bietet leistungsstarke Werkzeuge für die Arbeit mit geometrischen Objekten (Punkte, Linien, Polygone) und räumlichen Operationen (Schnittmenge, Vereinigung, Pufferung).
Hauptfunktionen:
- Erstellung und Analyse geometrischer Formen (Point, LineString, Polygon).
- Räumliche Prädikate (Contains, Intersects, Within).
- Koordinatentransformation und Projektion (zusammen mit ProjNet).
- Lesen/Schreiben von WKT, WKB, GeoJSON.
Beispiel:
using NetTopologySuite.Geometries;using NetTopologySuite.IO;
var geometryFactory = new GeometryFactory();Point point1 = geometryFactory.CreatePoint(new Coordinate(37.6176, 55.7558));Point point2 = geometryFactory.CreatePoint(new Coordinate(30.3351, 59.9343));
double distance = point1.Distance(point2); // in GradConsole.WriteLine($"Entfernung in Grad: {distance:F4}");
// Lesen aus WKTvar reader = new WKTReader();Polygon polygon = reader.Read("POLYGON ((30 20, 45 40, 10 40, 30 20))") as Polygon;Console.WriteLine($"Fläche des Polygons: {polygon.Area}");3. Mapsui — plattformübergreifende Kartografie-Bibliothek
Mapsui ist eine moderne Bibliothek zur Darstellung von Karten in .NET (Windows, Android, iOS, WebAssembly). Sie unterstützt verschiedene Kachelquellen (OpenStreetMap, Bing, MapBox) sowie das Zeichnen benutzerdefinierter Ebenen (Marker, Linien, Polygone).
Wesentliche Merkmale:
- Unterstützung für WPF, MAUI, Avalonia, Blazor.
- Einfache API zum Hinzufügen von Markern und Ebenen.
- Animation und Interaktion (Zoomen, Ziehen).
- Möglichkeit der Verwendung von Offline-Karten (MBTiles).
Beispiel für WPF:
using Mapsui;using Mapsui.Projections;using Mapsui.Tiling;
var map = new Map();map.Layers.Add(OpenStreetMap.CreateTileLayer());
// Marker hinzufügenvar pin = new PointFeature(37.6176, 55.7558);pin["label"] = "Moskau";map.Layers.Add(new Layer { Name = "Marker", DataSource = new MemoryProvider(pin) });
// In XAML: <MapControl Map="{Binding Map}" />// Beispiel für die Bindung im Code:// mapControl.Map = map;4. SharpMap — klassische Bibliothek für Geoinformationssysteme
SharpMap ist eine
Auch in der Bibliothek
Datenvalidierung in Kotlin: Bibliotheken und Ansätze (Kotlin, Java)
Prometheus-Metriken in C# (.NET) — Bibliothek prometheus-net
QR-Code-Generator in Go (Golang) mit der Bibliothek go-qrcode
Autorisierung und Authentifizierung in JavaScript (Node.js): Vollständiger Leitfaden
node-cron: JavaScript-Aufgabenplaner