Matrix aus Koordinaten



  • Schönen guten Abend, ich zerbreche mir gerade den Kopf, ich muss eine Kreuztabelle aus Distanzen bestimmen. Gegeben ist eine Funktion(gps2distance) in die 2 Städte, beziehungsweise 2 Längen- und Breitengrade(Latitude, Longitude) übergeben werden, die Funktion gibt die Distanz zwischen Koordinaten zurück. Die Längen und Breitengrade der einzelnen Städte kann ich mithilfe eines Index auslesen. Die Funktion sieht so aus:

          double gps2distance(double latitude1, double longitude1, double latitude2, 
                              double longitude2, double radius);
    

    Der Radius ist eine Konstante. Ich habe jetzt eine Matrix[i][j] erstellt und versucht mithilfe einer for schleife die Kreuztabelle zu erstellen. Die Diagonale muss dabei natürlich 0 sein. bislang kommen bei mir entweder ziemlich krumme Ergebnisse raus oder alle Werte sind 0. i und j sind maximal 25 Werte.

    for (i = 0; i < 25; i++) {
    	for (j = 0; j < 25; j++) {
    		matrix[i][j] = gps2distance(latitude_list[i],longitude_list[j],latitude_list[i],longitude_list[j], radius);
    		printf("%0.f ", matrix[i][j]);
    	}
    	printf("\n");
    }


  • Du übergibst doch 2 identische Koordinatenpunkte an die Funktion, kein Wunder, wenn da Entfernung 0 bei rauskommt ....



  • @Belli ja ich weiß, dass es so keinen Sinn macht. Ich wollte nur veranschaulichen, wie der code aussieht.



  • Ah ... alles klar.



  • Und warum verwendest du nicht gleich die richtigen Indizes?



  • Und warum heißt die Funktion überhaupt "gps2distance"? Was hat das ganze mit GPS zu tun? (Längen- und Breitengrade gab es schon lange vor GPS). Viel interessanter: soll die direkte Distanz (gerade Linie durch die Erde) rauskommen oder die Distanz an der Oberfläche einer idealisierten Kugel? Warum geht der Radius ein? Müsste man nicht eher die Erde komplett modellieren? (Die Erde ist nur näherungsweise eine Kugel.)

    Edit: und wo kommt die 25 her? Es ist keine gute Idee, solche magischen Zahlen direkt zu verwenden. Warum nicht Länge deines latitude/longitude-Vectors? (Ich hoffe doch, dass das vectoren sind?) Warum hast du eigentlich separate Lon/Lat-Vectoren? Wäre es nicht wesentlich weniger fehleranfällig, wenn du Lon/Lat zu einer GeoCoordinate-Struct zusammenfassen würdest?



  • @wob sagte in Matrix aus Koordinaten:

    Müsste man nicht eher die Erde komplett modellieren? (Die Erde ist nur näherungsweise eine Kugel.)

    GPS liegt der Rotationsellipsoid auf Basis von WGS 84 zugrunde.

    Daher ist GPS im Funktionsnahmen ok und eine weitere Modellierung nicht nötig.

    Ma sollte aber bedenken, dass der für Deutschland benutzte Ellipsoid von WGS 84 (etwas) abweicht.



  • @wob sagte in Matrix aus Koordinaten:

    Und warum heißt die Funktion überhaupt "gps2distance"?

    Weil man GPS (genauer GNSS) Koordinaten in ein kartesisches Kooridnatensystem wie Gauß Krüger oder UTM umrechnen kann.

    Siehe auch Geodätisches Datum


Log in to reply