ERLEDIGT
NEIN
NEIN
ANTWORTEN
10
10
ZUGRIFFE
2748
2748
EMPFEHLEN
-
Hallo!
Ich möchte gerne die Entfernung zwischen zwei Punkten auf der Erdoberfläche ausrechnen. Allerdings hab ich dabei ein paar Probleme.
Die Aufgabe lautet wie folgt:
Geben Sie ein Java-Programman, das für zwei Erdkoordinatenangabenmit jeweils Laenge und Breite mit 0 kleiner gleich Laenge kleiner gleich 180 und 0 kleiner gleich Breite kleiner gleich 180 und einer positiven Distanz diese Oberflächenentfernung berechnet. Sie können als Beispielkoordinaten folgende Werte nehmen, die diese Annahmen erfüllen (Angabe als Länge Nord, Breite Ost): P1 = (7, 181563889, 50, 78023889) , P2 = (6, 0939, 50, 78999167).
P1 = (laenge1, breite1)
P2 = (laenge2, breite2)
Nun, als Hilfe habe ich noch eine Rechenformel für den Distanzfaktor:
distanzfaktor = arccos(sin(breite1) * sin(breite2) + cos(breite1) * cos(breite2)
* cos(laenge2 − laenge1))
und für die Entfernung:
entfernung = radius * distanzfaktor falls distanz größer gleich 0
radius (distanzfaktor + Pi) falls distanz < 0
So, nun gut. Nun dachte ich mir das ich einfach erstmal mit Java den Distanzfaktor ausrechnen kann und zwar mit double, da ich nur so mit Kommazahlen rechnen kann. Doch leider kann ich die Koordinaten nicht so leicht ausrechnen da beide Zahlen zwei Kommas haben und eclipse dann meckert wenn ich versuche etwas auszurechnen.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
public class Erdentfernung { public static void main(String[] args) { double laenge2 = 6.0939.50.78999167; double breite2 = 6.0939.50.78999167; double laenge1 = 7.181563889.50.78023889; double breite1 = 7.181563889.50.78023889; double Distanzfaktor = arccos(Math.sin(breite1) * Math.sin(breite2) + Math.cos(breite1) * Math.cos(breite2) * Math.cos(laenge2 - laenge1)); System.out.println (Distanzfaktor); } private static double arccos(double d) { return 0; } }
Die Entfernung zu berechnen kann gar nicht so schwer sein. Ich stell mich wohl nur zu blöd an. Das ist echt frustrierend.
Für einen Tipp wäre ich dankbar!
Gruß,
DynamaikGeändert von Dynamaik (05.11.09 um 21:20 Uhr)
-
Hallo,
Versuche es mal so:
Code java:1 2 3 4
double laenge2 = 6.0939; double breite2 = 50.78999167; double laenge1 = 7.181563889; double breite1 = 50.78023889;
So sind die X und Y Koordinaten getrennt.
-
Das ganze hatten wir gerade hier: http://www.tutorials.de/forum/archiv...d-zurueck.html
Dort findest du auch Lösungen.
-
...hallo mal an alle....
find das echt lustig..bin an der Fh in Sankt augustin und habe genau die gleiche aufgabe bekommen wie derjenige vor mir.....bin zwar schon weiter habe aber ne abweichung von 6 bis 8 kilometern...hatte andere werte genommen um zu testen ob ich auch die richtige entfernung gemessen habe...hänge aber noch irgendwo ..bzw. finde den fehler selber nicht...wäre schön wenn man mir antworten würde
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
public class Aufgabe2 { public static void main(String[] args) { double x1,y1,x2,y2,radius; double entfernung=0; radius= 6378.137/360; x1=50.7754660; y1=6.0814780; x2=50.7724910; y2=7.1906860; //wert=78.084km double distanz =(x1-x2)+(y1-y2); System.out.println(distanz); double distanzfaktor = Math.acos((Math.sin(y1)*Math.sin(y2))+((Math.cos(y1)*Math.cos(y2))* (Math.cos(x2)-Math.cos(x1)))); if (distanz >=0){ entfernung = radius*distanzfaktor; } else if(distanz < 0){ entfernung = radius*(distanzfaktor + Math.PI); } System.out.println("Entfernung: " + entfernung +" km"); } }
der wert der rauskommen müsste is 78.084km aber ich komm auf nen wert von 86.2825km ...kann mir jemand erklären warum ich diese abweichung habe...bin schon fast am verzweifeln...weil ich meinen eigenen fehler nicht sehe...
Danke schonmal im Voraus
-
Als erstes fällt mir auf, dass du Grad, statt Radian in die trigonometrischen Funktionen steckst.
Die Formel ist aber auch nicht allzu genau, was allerdings bei der kurzen Strecke nicht so ins Gewicht fallen sollte.
-
hmm hast du denn auch nen verbesserungsvorschlag? hmm ich meine ich hab noch nie mit solchen werten in java gearbeitet...deswegen hab ich davon auch nicht wirklich ahnung ....also ich meine wie rechne ich das denn dann bitte um...weil java doch normalerweise wenn ich nen grad wert eingebe automatisch nen radiantwert draus macht oder nicht?
Geändert von whity82 (06.11.10 um 12:31 Uhr)
-
Wie bitte soll Java dass denn wissen was du da für Werte reingibst? Dafür mußt du schon selber mit Math.toRadians(angle) sorgen.
-
hab das nu geändert aber hab immernoch ne abweichung von etwa 5 km ....
x1=Math.toRadians(50.7754660);
y1=Math.toRadians(6.0814780);
x2=Math.toRadians(50.7724910);
y2=Math.toRadians(7.1906860);
-
-
Meiner Meinung nach hast du die Formel wie sie oben steht nicht richtig angewendet. Achte darauf was Längen- und was Breitengrade sind und auf die letzte cos-Funktion.
-
was ich aber nicht verstehe, warum du den erdradius nochmal durch 360 dividierst ?!
Ähnliche Themen
-
die Entfernung der Ort berechnen mit PHP
Von Xching im Forum PHPAntworten: 1Letzter Beitrag: 14.12.10, 16:10 -
Entfernung berechnen anhand der PLZ
Von Sascha1976 im Forum Coders TalkAntworten: 32Letzter Beitrag: 05.08.10, 20:54 -
Funktion für Entfernung berechnen
Von Martin287 im Forum Stellenangebote (entgeltlich)Antworten: 1Letzter Beitrag: 29.12.09, 13:11 -
Entfernung von 2 Orten
Von oppa im Forum PHPAntworten: 7Letzter Beitrag: 30.09.07, 12:20 -
Textur aus Entfernung
Von AMIBC im Forum Cinema 4DAntworten: 11Letzter Beitrag: 06.07.06, 00:48





Zitieren


Login





