myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Grundlagen von C# » Abstand zwischen zwei Punkten berechnen: Python Sample in C# umgesetzt aber untersch. Ergebnis
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Abstand zwischen zwei Punkten berechnen: Python Sample in C# umgesetzt aber untersch. Ergebnis

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Leonie96 Leonie96 ist weiblich
myCSharp.de-Mitglied

Dabei seit: 17.10.2018
Beiträge: 17
Entwicklungsumgebung: Visual Studio Community 2017
Herkunft: Deutschland


Leonie96 ist offline

Abstand zwischen zwei Punkten berechnen: Python Sample in C# umgesetzt aber untersch. Ergebnis

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Leute,

ich habe folgendes Problem.

Und zwar möchte ich die Peilung zwischen zwei GPS Punkten ausrechnen.

Dafür habe ich sehr viel rechachiert und bin auf folgendes gestoßen:

Hierbei handelt es sich um Pythoncode.
Dieser soll den entsprechenden Winkel ausgeben.
 Code für Peilung zwischen GPS Punkten

Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
def haversine(lat1, lon1, lat2, lon2):

      R = 3959.87433 # this is in miles.  For Earth radius in kilometers use 6372.8 km

      dLat = radians(lat2 - lat1)
      dLon = radians(lon2 - lon1)
      lat1 = radians(lat1)
      lat2 = radians(lat2)

      a = sin(dLat/2)**2 + cos(lat1)*cos(lat2)*sin(dLon/2)**2
      c = 2*asin(sqrt(a))

      return R * c

print(haversine(lat1, lon1, lat2, lon2))

Diesen Code habe ich nun in C# übertragen.
Allerdings erhalte ich nicht das richtige Ergebnis wie ein Onlineumrechner. ( Link zum Onlinerechner)

Mein umgewandelter C# Code:

C#-Code:
public double haversine2( double lon1,double lat1,double lon2,double lat2)
        {
            //convert decimal degrees to radians
            double lon11 = DegreesToRadianss(lon1);
            double lat11 = DegreesToRadianss(lat1);
            double lon22 = DegreesToRadianss(lon2);
            double lat22 = DegreesToRadianss(lat2);

    //haversine formula
            double dlon = lon2 - lon1;
            double dlat = lat2 - lat1;

            double a = Math.Sin(dlat / 2) * Math.Sin(dlat / 2) + Math.Cos(lat1) * Math.Cos(lat2) *  Math.Sin(dlon / 2) * Math.Sin(dlon / 2);
            double c = 2 * Math.Asin(Math.Sqrt(a));
            double r = 6371;//# Radius of earth in kilometers. Use 3956 for miles
            return c * r;

        }

Laut Onlineumrechner soll bei folgenden Koordinaten ein Winkel von 263,8° oder 183,81° raus kommen. Jenachdem ob man zuerst lon oder lat eingibt.

double lat1 = 24.70053278;
double lon1 = 47.54109784;
double lat2 = 24.700073517333397;
double lon2 = 47.53644075239231;


Sieht zufällig jemand einen Fehler bei mir in der Konvertierung ?

Würde mich über Hilfe sehr freuen.

Liebe Grüße,

Leonie
14.12.2018 16:59 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.179
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

C#-Code:
R = 3959.87433 # this is in miles.  For Earth radius in kilometers use 6372.8 km

C#-Code:
     double r = 6371;//# Radius of earth in kilometers. Use 3956 for miles
14.12.2018 17:47 Beiträge des Benutzers | zu Buddylist hinzufügen
Leonie96 Leonie96 ist weiblich
myCSharp.de-Mitglied

Dabei seit: 17.10.2018
Beiträge: 17
Entwicklungsumgebung: Visual Studio Community 2017
Herkunft: Deutschland

Themenstarter Thema begonnen von Leonie96

Leonie96 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hey hey,

danke für die schnelle Antwort. Aber die Änderung auf r=6372.8 km hat auch keine Besserung zu Folge. Bin immernoch sehr weit von den Werten dieses Onlineumrechners entfernt.
 Online Umrechner


Bringt mich echt zum verzweifeln. Jemand vielleicht noch eine Idee wo dran es liegen könnte ?


Liebe Grüße
14.12.2018 19:44 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
chilic
myCSharp.de-Poweruser/ Experte

Dabei seit: 12.02.2010
Beiträge: 2.014


chilic ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Die Reihenfolge der Parameter bei der Übergabe ist einmal
lat1, lon1, lat2, lon2
und einmal
lon1, lat1, lon2, lat2

Rufst du das auch angepasst auf?

Stimmt der Python Code, gibt der das gewünschte aus bzw. das selbe wie die Webseite?

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von chilic am 14.12.2018 22:08.

14.12.2018 22:07 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
M.L.
myCSharp.de-Mitglied

Dabei seit: 26.09.2006
Beiträge: 195
Entwicklungsumgebung: VS Community '19


M.L. ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Vielleicht liefert die Umrechnung in diesem Beitrag von Codeproject einen Hinweis:  haverside in C#. Oder man probiert -statt der manuellen Implementierung- einen python2csharp Converter
15.12.2018 00:37 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 11 Monate.
Der letzte Beitrag ist älter als 11 Monate.
Antwort erstellen


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 19.11.2019 03:46