Posts: 5
Threads: 1
Joined: Aug 2020
18.08.2020, 15:52
(This post was last modified: 18.08.2020, 16:09 by MichaelRC.)
Hallo,
ich möchte verstehe, wie RouteConverter die Länge eines Tracks ermittelt. Hierzu die beigefügte Datei mit zwei Punkten als .gpx und exportiert als .xlsx mit einer Zusatzspalte, in der die Länge mit Pythagoras (siehe Kompf, einfachstes Verfahren) berechnet wird:
Distanz gemäß RouteConverter: 3.251 m
Distanz gemäß Pythagoras: 3.809 m
Für verschiedene Strecken finde ich jeweils Unterschiede zwischen 80 und 90%, hier 85,35%; die RouteConverter-Strecken sind immer kürzer.
Danke, Michael
[url=https://nowtransfer.de/rclength1.gpx][/url]
Posts: 46
Threads: 1
Joined: Feb 2020
Hallo Michael,
mit der vereinfachten Formel komme ich auf 3,183 km, was zwar nicht ganz passt, aber doch schon nah dran ist.
Wenn man spasshalber Latitude und Longitude vertauscht, dann komme ich auf 3,905km, das ist zwar nicht ganz Dein 3,809km, aber nah dran.
Kann es sein, dass bei deiner Formel was vertauscht ist?
Servus
Richard
Posts: 967
Threads: 56
Joined: Jan 2011
(18.08.2020, 15:52)MichaelRC Wrote: Hallo,
ich möchte verstehe, wie RouteConverter die Länge eines Tracks ermittelt. Hierzu die beigefügte Datei mit zwei Punkten als .gpx und exportiert als .xlsx mit einer Zusatzspalte, in der die Länge mit Pythagoras (siehe Kompf, einfachstes Verfahren) berechnet wird:
Distanz gemäß RouteConverter: 3.251 m
Distanz gemäß Pythagoras: 3.809 m
Für verschiedene Strecken finde ich jeweils Unterschiede zwischen 80 und 90%, hier 85,35%; die RouteConverter-Strecken sind immer kürzer.
Danke, Michael
[url=https://nowtransfer.de/rclength1.gpx][/url]
Du hast die Formel falsch in Excel programmiert, die beiden Streckenfaktoren fehlen. Mit
Code: =WURZEL((71,5*(A3-A2))^2+(111,3*(B3-B2))^2)*1000
bekommst du 3184 m als Ergebnis bei deinem Muster, was weniger als 70 m oder 2% Unterschied sind. Diese pythagoreische Formel liefert auch nur für einzelne, sehr kleine Entfernungen einen halbwegs brauchbaren Näherungswert. Für alles andere führt kein Weg an der Berechnung der Orthodrome vorbei, ich vermute, daß RC hierzu eine vorhandene Bibliothek verwendet.
Grüße
Hans
Posts: 7,512
Threads: 226
Joined: Aug 2007
20.08.2020, 15:43
(This post was last modified: 20.08.2020, 15:45 by routeconverter.)
(19.08.2020, 07:33)nordlicht Wrote: [..]
ich vermute, daß RC hierzu eine vorhandene Bibliothek verwendet.
So ähnlich... ich habe dazu Code portiert von einem deutlich komplexeren Modell, das die Erde akkurater modelliert und damit auf der ganzen Erdoberfläche genauere Entfernungsberechnungen ermöglicht. Das Ergebnis ist hier:
https://github.com/cpesch/RouteConverter...aring.java
Im Quelltext stehen die Details.
--
Christian
Posts: 5
Threads: 1
Joined: Aug 2020
22.08.2020, 16:14
(This post was last modified: 22.08.2020, 17:28 by MichaelRC.)
Danke, habe verstanden.
(Wie) Ist es möglich, die Längen einzelner Segmente zu exportieren, die ja in der Punktliste (Spalten Distanz oder Distanzunterschied) angezeigt werden? Habe erfolglos mit .XLSX etc. experimentiert.
Alternativ könnte ich auch eine Berechnung vornehmen, allerdings kann ich kein JAVA und deshalb die GitHub-Anwendung nicht ohne Weiteres nutzen.
Danke, Michael
Posts: 5
Threads: 1
Joined: Aug 2020
22.08.2020, 19:25
(This post was last modified: 22.08.2020, 19:35 by MichaelRC.)
(22.08.2020, 16:14)MichaelRC Wrote: ... eine Berechnung vornehmen Ich habe jetzt als Alternative zur Standard-Formel
Code: =WURZEL((71,5*(A3-A2))^2+(111,3*(B3-B2))^2)*1000
nach der Haversine-Formula diese LibreOffice-Formel eingesetzt:
Code: Distanz [m] =6371000*ARCCOS(COS(BOGENMASS(90-B9))*COS(BOGENMASS(90-B10))+SIN(BOGENMASS(90-B9))*SIN(BOGENMASS(90-B10))*COS(BOGENMASS(A9-A10))))
Abweichung der Strecken-Summe für eine Test-Datei:
- RouteConverter = 2.680 m,
- Standard-Formel = 2.635 m,
- Haversine-Formel = 2.676 m.
Posts: 99
Threads: 13
Joined: Dec 2008
(22.08.2020, 16:14)MichaelRC Wrote: (Wie) Ist es möglich, die Längen einzelner Segmente zu exportieren, die ja in der Punktliste (Spalten Distanz oder Distanzunterschied) angezeigt werden? Habe erfolglos mit .XLSX etc. experimentiert.
Den Wunsch das zu tun habe ich auch schon mal geäußert, wurde abgeblockt. Letztlich habe ich keine Ahnung warum Christian das grundsätzlich nicht erlaubt bzw. unterstützt. (Ich meine damit, warum man die Positionsliste wie sie eingestellt und zu sehen ist, nicht exportieren kann).
MfG
Posts: 7,512
Threads: 226
Joined: Aug 2007
(23.08.2020, 10:40)Zeppelin Wrote: Den Wunsch das zu tun habe ich auch schon mal geäußert, wurde abgeblockt.
Der Darstellung möchte ganz deutlich widersprechen. Ich verstehe das Problem und begrüsse eine Lösung. Da ist nichts, was ich blockiere oder nicht erlaube.
Nur zu, implementiert Lösungen und stellt Pull Requests!
(23.08.2020, 10:40)Zeppelin Wrote: Letztlich habe ich keine Ahnung warum Christian das grundsätzlich nicht erlaubt bzw. unterstützt. (Ich meine damit, warum man die Positionsliste wie sie eingestellt und zu sehen ist, nicht exportieren kann).
Wie gesagt, ich erlaube das und unterstütze Lösungen. Wenn man sich den Quelltext genauer anschaut, wird man feststellen, dass es folgende Herausforderungen gibt:
- In die Zwischenablage werden durch Cut/Copy 2 Formate geschrieben: eine Liste von Objekten der Klasse NavigationPosition, wenn man innerhalb von RouteConverter Paste aufruft, und dieselben Objekte als Glopus-Format serialisiert.
- Das Glopus-Format unterstützt keine Distanzen.
- Distanzen stehen nur auf der View-Ebene zur Verfügung aber nicht im Model, lassen sich also nicht durch die NavigationFormate schreiben, die nur auf dem Model arbeiten.
- Im Endeffekt müsste die komplette Cut/Copy/Paste-Logik neu implementiert werden und die Daten aus dem View mit dem Model kombinieren.
- Ich glaube, das sind viele Stunden Arbeit.
Irgendwie kommt mir das bekannt vor - das habe ich doch schon hier im Forum mal beschrieben. Wieder 15 Minuten fürs Forum aufgewendet und nicht fürs Programmieren... so geht die kostbare Zeit dahin.
--
Christian
Posts: 99
Threads: 13
Joined: Dec 2008
Hallo Christian,
danke für deine Erläuterungen. Wenn das wirklich so kompliziert ist, geht es sicher auch ohne auslesen der Distanz.
Ich programmiere in VB/NET und ich dachte die Tabelle bzw. Übersicht wäre eine Art 'ListBox' bzw. 'ListView'. Unter VB ist das auslesen einer gefüllten Box recht einfach. z.B.:
My.Computer.Clipboard.SetText(ListView1.Items(ListView1.SelectedItems(0).Index).Text & "," & ListView1.Items(ListView1.SelectedItems(0).Index).SubItems(1).Text & "," & ListView1.Items(ListView1.SelectedItems(0).Index).SubItems(2).Text & "," & ListView1.Items(ListView1.SelectedItems(0).Index).SubItems(3).Text)
Damit würde man eine komplette Zeile mit 4 Spalten durch ',' getrennt in die Zwischenablage kopieren. Mit einer For...Next Schleife dann der Rest der Zeilen in die Zwischenablage. So könnte man natürlich auch gleich in eine Datei schreiben lassen etc.
Wenn das unter Java nicht geht, wie gesagt ich kann mit leben.
MfG
Posts: 7,512
Threads: 226
Joined: Aug 2007
(24.08.2020, 08:34)Zeppelin Wrote: Wenn das unter Java nicht geht, wie gesagt ich kann mit leben.
Es geht schon. Und hätte ich es damals anders gebaut, wäre es einfacher...
--
Christian
|