... the user friendly GPS tool


Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Umrechnung von Länge-Breiten-Differenzen in Meter
#1
Hallo Christian,
meine Frage richtet sich speziell an Dich.

Für Berechnungen zu GPS-Koordinaten brauche ich die Differenz zwischen zwei Positionen (x1,y1) - (x2,y2).
Schritt 1 ist einfach.
Über den Satz des Pythagoras ist Diff := sqrt( sqr(x2-x1) + sqr(y2-y1) ).
Was mir nun aber weiter fehlt ist die Umrechnung von Länge/Breite bzw. deren Differenz bei zwei Punkten in die Einheit Meter.
Der Abstand der Breitengrade ist ja konstant mit 111,12 km (d.h. 60 NM), aber die Ländengrade zu berechnen ist wohl deutlich komplizierter.
Da gibt es doch bestimmt eine Formel.
Bezugssystem ist bevorzugt WGS 84.

Kannst du mir da weiterhelfen ?

Alternativ würde mir auch helfen, wenn es eine Möglichkeit gäbe, beim RouteConverter den neuen Wert für "Distanz" ins GPX auszugeben, entweder mit einem eigenen Tag, oder wenn das nicht dem offiziellen Definitionen konform wäre, evtl. auch mit dem Tag <desc>. Allerdings wäre es prima, wenn die Genauigkeit beim Export in Meter wäre (bisher nur in 100m).
Meinem Wissendurst käme aber die rechnerische Lösung entgegen, was ich darüber schon gelesen habe, war alles sehr theoretisch und komplex, die Umsetzung für die Praxis fände ich spannend.

Ein Code-Besipiel (gerne in Java) wäre mir recht willkommen, ich programmiere selbst zwar in Delphi, aber Java ist mir auch nicht so fremd, dass ich nichts damit anfangen könnte.

Danke, Gruss Peter
Reply
#2
(24.11.2009, 21:56)pebogufi Wrote: Hallo Christian,
meine Frage richtet sich speziell an Dich.

Für Berechnungen zu GPS-Koordinaten brauche ich die Differenz zwischen zwei Positionen (x1,y1) - (x2,y2).

[..]

Da gibt es doch bestimmt eine Formel.
Bezugssystem ist bevorzugt WGS 84.

Kannst du mir da weiterhelfen ?

Hallo Peter,

schau Dir mal die Klasse Bearing an. Die modelliert die Erde genauer als Ellipsoid und berechnet dann Entfernungen:

/**
* Computes distance (in meters), azimuth (degrees clockwise positive
* from North, 0 to 360), and back azimuth (degrees clockwise positive
* from North, 0 to 360), from latitude-longituide point pt1 to
* latitude-longituide pt2.<p>
* Algorithm from U.S. National Geodetic Survey, FORTRAN program "inverse,"
* subroutine "INVER1," by L. PFEIFER and JOHN G. GERGEN.
* See http://www.ngs.noaa.gov/TOOLS/Inv_Fwd/Inv_Fwd.html
* <P>Original documentation:
* <br>SOLUTION OF THE GEODETIC INVERSE PROBLEM AFTER T.VINCENTY
* <br>MODIFIED RAINSFORD'S METHOD WITH HELMERT'S ELLIPTICAL TERMS
* <br>EFFECTIVE IN ANY AZIMUTH AND AT ANY DISTANCE SHORT OF ANTIPODAL
* <br>STANDPOINT/FOREPOINT MUST NOT BE THE GEOGRAPHIC POLE
* </P>
* Reference ellipsoid is the WGS-84 ellipsoid.
* <br>See http://www.colorado.edu/geography/gcraft...elist.html
* <p/>
* Requires close to 1.4 E-5 seconds wall clock time per call
* on a 550 MHz Pentium with Linux 7.2.
*
* @param longitude1 Lon of point 1
* @param latitude1 Lat of point 1
* @param longitude2 Lon of point 2
* @param latitude2 Lat of point 2
* @return a Bearing object with distance (in meters), azimuth from
* pt1 to pt2 (degrees, 0 = north, clockwise positive)
*/
public static Bearing calculateBearing(double longitude1, double latitude1,
double longitude2, double latitude2) {
[..]
}
--
Christian
Reply
#3
Hi peboguifi,
nachdem Christian Dir schon eine Lösung genannt hat, hier noch was für den Wissendurst.

den Abstand der Längengrade in Metern : 1852 (= 1 NM in Meter) * Cos(Breitengrad) .
Also zum Beispiel Längengradabstand auf

89,9 grad: 1852 * 0,00174532836589830883577820272085 = 3,2323481336436679638612314390143 m
52,0 grad: 1852 * 0,61566147532565827966881109284366 = 1140,2050523031191339466381439465 m
52,5 grad: 1852 * 0,60876142900872063941609754289816 = 1127,4261665241506241986126494474 m
0,0 grad: 1852 * 1 = 1852 m
hoffe es hilft
bis denne
Reply
#4
Hallo,
erstmal vielen Dank für die beiden Anregungen.
Da die Lösung mit dem COS() die einfachere Variante war, habe ich mir die erstmal vorgenommen. Abgesehen von einem kleinen Schönheitsfehler (ein Längengrad hat am Äquator nicht 1 NM sondern 60 NM), ist das eine prima Näherung. Bei meinen Vergleichen gab es Abweichungen zu den Distanz-Werten von routeconverter von ca. 0,2%, beispielsweise bei 100km sind das nur 200m, das stört mich nicht.

Aber ich habe was anderes bemerkt.
Der Zweck meiner Berechnung war die "Steigung in %", die ich schon in einem anderen Thread erwähnt habe.

Diese Steigung habe ich nun in verschiedenen Routen und Tracks berechnet (und in desc reingeschrieben, so dass ich sie im routeconverter sichtbar habe).

1. Track. bei sehr vielen Punkten eines aufgezeichneten Tracks werden bei meinem Navi (Garmin GPSmap 60 CSx) die Höhenangaben aus der GPS-Berechnung genommen, obwohl er einen barometrischen Höhenmesser hat. Diese Höhe schwankt zu stark, eine Landschaft hat dabei eine Oberfläche fast wie ein Igel. D.h. die Steigung an einem Hang springt sehr stark (auch in Minuswerte hinein), obwohl es bergauf geht. Die Höhenkurve müsste man glätten, bervor sie weiter verwendbar ist.

2. Route. Bei wenigen Punkten (ich plante eine Route erst sehr grob mit stufenweiser Verdichtung der Punkte) bekomme ich recht nützliche Informationen für die Steigung, wenn ich z.B. nur am Fuss eines Berges und oben am Pass einen Punkt setze. Natürlich geht das nur, wenn die dazwischen liegende Strecke relativ gerade ist, sonst wird die Entfernung zu stark verfälscht. Wenn ich eine Steigung von bis zu 15% habe, kann ich das mit dem MTB noch machen, wenn ich an einem Hang 40% sehe, weiss ich, das wird vermutlich eine Schiebestrecke, da sind dann bestimmt enge Serpentinen.
Also für eine grobe Information prima.
---
Noch was anderes: Im RouteConverter gibt es zwei Informationen zur Länge der Gasamtstrecke: Die Distanz aus der letzten Position und oben die Länge. Diese beiden Werte weichen erheblich voneinander ab, Beispiel Distanz=589,4; Länge=466,1. Der Wert für Distanz stimmt recht gut, die Länge weniger.
Christian, ist dir das schon bekannt ?

Nochmals vielen Dank für eure Hilfe.
Gruss Peter
Reply
#5
(02.12.2009, 18:12)pebogufi Wrote: Noch was anderes: Im RouteConverter gibt es zwei Informationen zur Länge der Gasamtstrecke: Die Distanz aus der letzten Position und oben die Länge. Diese beiden Werte weichen erheblich voneinander ab, Beispiel Distanz=589,4; Länge=466,1. Der Wert für Distanz stimmt recht gut, die Länge weniger.
Christian, ist dir das schon bekannt ?

Hallo Peter,

ja, z.B. bei Routen weicht die aufsummierte Distanz der Wegpunkte von der Länge ab, da eine Route auch die Zwischenpunkte zwischen Wegpunkten umfaßt. Der Wert für Distanz ist also umso akkurater, je dichter die Wegpunkte liegen.
--
Christian
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)