C# :: Aufgabe #399 :: Lösung #3
3 Lösungen
#399
Stände von Koordinaten (Standort) im Umkreis von x km ermitteln
Anfänger - C#
von Gustl
- 21.05.2021 um 17:06 Uhr
Erstelle eine Funktion, eventuell mit Hilfe einer Datenbank, welche über die Parameter Location (Latitude & Longitude) und Radius in Kilometer alle Städte in dem Umkreis mit den Koordinaten ausgibt.
Oder eine Liste mit den Koordinaten in diesem Umkreis. Somit können dann die Städte in einer GeoDatenbank ermittelt werden.
Oder eine Liste mit den Koordinaten in diesem Umkreis. Somit können dann die Städte in einer GeoDatenbank ermittelt werden.
#3
von hollst (13980 Punkte)
- 29.06.2021 um 08:30 Uhr
C#-Code
/* Erstelle eine Funktion, eventuell mit Hilfe einer Datenbank, welche über die Parameter Location (Latitude & Longitude) und Radius in Kilometer alle Städte in dem Umkreis mit den Koordinaten ausgibt. Oder eine Liste mit den Koordinaten in diesem Umkreis. Somit können dann die Städte in einer GeoDatenbank ermittelt werden. */ //https://www.kompf.de/gps/distcalc.html //using System; using static System.Console; static bool distance_less_than_radius(Point ref_point, Point city, double radius) => (ref_point.X - city.X) * (ref_point.X - city.X) + (ref_point.Y - city.Y) * (ref_point.Y - city.Y) < radius * radius ? true : false; //test mit 100 zufallsstaedten Point[] locations = new Point[100]; double xmin = 0.0, ymin = 0.0, xmax = 100.0, ymax = 100.0; //Begrenzungsgebiet in km² System.Random random = new System.Random(); for (var i = 0; i < locations.Length; i++) { Point p = new Point(); p.X = xmin + (xmax - xmin) * random.NextDouble(); p.Y = ymin + (ymax - ymin) * random.NextDouble(); locations[i] = p; } double radius = 20.0; //km for (var i = 0; i < locations.Length; i++) { Point pref = new Point() { X = locations[i].X, Y = locations[i].Y }; for (var j = 0; j < locations.Length; j++) { Point city = new Point() { X = locations[j].X, Y = locations[j].Y }; if (j != i && distance_less_than_radius(pref, city, radius)) WriteLine($"city {j, 2} liegt im {radius} km Umkreise von city {i, 2}"); } } WriteLine("ready"); ReadKey(); record Point { public double X; public double Y; }
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1