Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Geokoordinaten Umrechnen in Dezimalgrad (https://www.delphipraxis.net/160707-geokoordinaten-umrechnen-dezimalgrad.html)

BBoy 27. Mai 2011 08:16

Geokoordinaten Umrechnen in Dezimalgrad
 
Ich habe Geokoordinaten in der Form: N 49° 41.567 E 008° 51.356
Und möchte diese in Dezimalgrad umwandeln, also so: 49.531 8.356
Und eben auch umgekehrt. Weiß jemand wie ich das in Delphi realisieren kann?

Danke.

Coffeecoder 27. Mai 2011 08:27

AW: Geokoordinaten Umrechnen in Dezimalgrad
 
Hi,


Guck mal hier rein.

Satty67 27. Mai 2011 08:42

AW: Geokoordinaten Umrechnen in Dezimalgrad
 
Du kannst auch nach NMEA Konvertierungen suchen. Ich müsste irgenwo eine Funktion haben.

Im NMEA String ist "N 49° 41.567" als "4941.5670,N" kodiert. Meine geht mit Grad merken und Rest durch 60 Sekunden (Minuten?) teilen und bei S/W noch negieren.

Ich suche mal die Funktion...

Nersgatt 27. Mai 2011 08:56

AW: Geokoordinaten Umrechnen in Dezimalgrad
 
Zitat:

Zitat von BBoy (Beitrag 1103204)
Ich habe Geokoordinaten in der Form: N 49° 41.567 E 008° 51.356
Und möchte diese in Dezimalgrad umwandeln, also so: 49.531 8.356
Und eben auch umgekehrt. Weiß jemand wie ich das in Delphi realisieren kann?

Danke.

Deine Beispiel stimmen nicht.
Nord = 49 + (41.567 / 60) = 49,692783

Den Weg in die Andere Richtung kannst Du Dir selbst überlegen.

Satty67 27. Mai 2011 09:00

AW: Geokoordinaten Umrechnen in Dezimalgrad
 
Gefunden:

Delphi-Quellcode:
function GeoToDec(Grad : Integer; Min, Sec : Double; Direction : AnsiChar): Double;
begin
  Result := (Min / 60) + (Sec / 3600) + Grad;
  if Direction in ['S', 'W'] then
    Result := -Result;
end;
Also E48° 41' 50.908" wird so übergeben:

Delphi-Quellcode:
GeoToDec(48, 41, 50.908, 'N')

BBoy 27. Mai 2011 09:21

AW: Geokoordinaten Umrechnen in Dezimalgrad
 
Zitat:

Zitat von Nersgatt (Beitrag 1103219)
Zitat:

Zitat von BBoy (Beitrag 1103204)
Ich habe Geokoordinaten in der Form: N 49° 41.567 E 008° 51.356
Und möchte diese in Dezimalgrad umwandeln, also so: 49.531 8.356
Und eben auch umgekehrt. Weiß jemand wie ich das in Delphi realisieren kann?

Danke.

Deine Beispiel stimmen nicht.
Nord = 49 + (41.567 / 60) = 49,692783

Den Weg in die Andere Richtung kannst Du Dir selbst überlegen.

Also die Formel funktioniert. Da muss man nix negieren oder so?
Wäre schon nett wenn Du mir noch den Weg in die andere Richtung beschreiben könntest. Ich komme da nicht drauf. Danke.

Nersgatt 27. Mai 2011 09:34

AW: Geokoordinaten Umrechnen in Dezimalgrad
 
Wenn es Süd oder West ist, dann musst Du es negieren.

Meine Formel mal allgemein formuliert.
Dezimalgrad = Grad + (Minuten / 60)

Stelle die Formel nach "Grad" um und Du hast den Grad-Anteil. Stelle die Formel nach "Minuten" um und Du hast den Minutenanteil.

Satty67 27. Mai 2011 09:45

AW: Geokoordinaten Umrechnen in Dezimalgrad
 
Hab' meine Funktion leicht geändert, somit sind auch Dezimal-Minuten (ohne Sekunden) verwendbar.

BBoy 27. Mai 2011 11:29

AW: Geokoordinaten Umrechnen in Dezimalgrad
 
@Satty67, kann deine Funktion dies: N 49° 52.048 E 008° 33.470 in dies: 49.867467 8.557833 Umwandeln? Scheinbar nimmst du ein anderes Format und zwar dies: N49° 52' 2.88" E8° 33' 28.2", oder?

Für mich wichtig wäre jetzt erst mal die umgekehrte Umwandlung, also dies: 49.867467 8.557833 in N 49° 52.048 E 008° 33.470

Gibt es keine Funktionsbibliothek für solche Geo-Sachen? bräuchte da auch noch Entfernung zw. zwei koordinaten und eventuell die Himmelsrichtung einer Koordinate vom Ausgangspunkt. Aber im Moment ist die og. Umrechnung erst mal wichtig :)

Nersgatt 27. Mai 2011 11:37

AW: Geokoordinaten Umrechnen in Dezimalgrad
 
Zitat:

Zitat von BBoy (Beitrag 1103277)
@Satty67, kann deine Funktion dies: N 49° 52.048 E 008° 33.470 in dies: 49.867467 8.557833 Umwandeln? Scheinbar nimmst du ein anderes Format und zwar dies: N49° 52' 2.88" E8° 33' 28.2", oder?

Übergib einfach eine 0 für den Sekundenanteil.

Wo genau liegt Dein Problem, die Formel für die andere Richtung umzuformen?

BBoy 27. Mai 2011 12:03

AW: Geokoordinaten Umrechnen in Dezimalgrad
 
Zitat:

Zitat von Nersgatt (Beitrag 1103280)
Wo genau liegt Dein Problem, die Formel für die andere Richtung umzuformen?

Unwissenheit? Dummheit? Nenne es wie Du willst, ich bekommst halt net gebacken, sorry.

Nersgatt 27. Mai 2011 12:23

AW: Geokoordinaten Umrechnen in Dezimalgrad
 
Ich finde, hier wird das anschaulich erklärt:
http://www.youtube.com/watch?v=lUdDqOcHtTI

BBoy 27. Mai 2011 12:57

AW: Geokoordinaten Umrechnen in Dezimalgrad
 
das ist nicht dein Ernst oder? Komme mir vor wie in einem Hausaufgabenforum, wo keiner eine Lösung geben will.
Nja, vielleicht erbarmt sich ja doch noch jemand :roll:

Satty67 27. Mai 2011 13:01

AW: Geokoordinaten Umrechnen in Dezimalgrad
 
Zitat:

Zitat von BBoy (Beitrag 1103277)
@Satty67, kann deine Funktion dies: N 49° 52.048 E 008° 33.470 in dies: 49.867467 8.557833 Umwandeln? Scheinbar nimmst du ein anderes Format und zwar dies: N49° 52' 2.88" E8° 33' 28.2", oder?

Beide Formate kannst Du übergeben.

Geodaten sind Angaben in
Grad° Minuten' Sekunden"
oder
Grad° Minuten+Sekunden als Dezimalzahl

Beides kannst Du der Funktion übergeben, im zweiten Fall für Sekunden einfach 0 angeben.

Unwissenheit ist übrigens keine Schande, ich weis auch vieles nicht. Im Zeitalter von Internet und Google sollte man aber Informationen sammeln können.

Die Umrechnung ist übrigens genausowenig Hexerei wie 1 Stunde 30 Minuten in 1,5 Stunden umzurechen (das macht fast jeder schnell im Kopf) ;)

Zitat:

Zitat von BBoy (Beitrag 1103294)
das ist nicht dein Ernst oder? Komme mir vor wie in einem Hausaufgabenforum, wo keiner eine Lösung geben will. Naja, vielleicht erbarmt sich ja doch noch jemand :roll:

Hier haben Dir zwei Leute ausführlich und genau den Lösungsweg vorgeschlagen, incl. Funktion (fertiger Quellcode!) Das Du so eine einfach Aufgabe damit nicht gebacken bekommst, kannst Du uns nicht in die Schuhe schieben.

BBoy 27. Mai 2011 13:23

AW: Geokoordinaten Umrechnen in Dezimalgrad
 
ich gebe hier niemanden die Schuld an meiner Unwissenheit....

Klar wie man N 49° 52.048 E 008° 33.470 in dies: 49.867467 8.557833 Umwandelt weis ich ja nun schon lange.
kann deine Funktion auch den umgekehrten weg rechnen? Denn nur darum geht es mir momentan.
Mit dem umgekehrten weg habe ich eben probleme. Ich peil es eben nicht.. hab von dem Koordinaten Kram keine Ahnung und Mathe ist mehr als ewig her.... brauch einfach nur ne Formel.. Sorry...

Und für die bisherige Hilfe bin ich dankbar!! Hat mir weiter geholfen.

Satty67 27. Mai 2011 14:04

AW: Geokoordinaten Umrechnen in Dezimalgrad
 
Für die Rückrechnung gibt es keine einzelne Formel, da der Dezimalwert in 3-4 Einzelergebnisse aufgeteilt werden muss:

Delphi-Quellcode:
function DecToGeo(GeoAsDec : Double): String;
var
  Grad : Integer;
  Value, Min, Sek : Double;
begin
  Value := Abs(GeoAsDec * 60); // In positive Minuten
  Sek := Frac(Value) * 60;    // Nachkomma sind jetzt Sekunden, quasi * 3600
  Min := Trunc(Value) mod 60; // Minuten ist Rest aus Ganzzahlanteil DIV 60, also MOD
  Grad := Trunc(Value) div 60; // Grad ist Ganzzahlanteil DIV 60
  Result := Format('%d° %.0f %.4f', [Grad, Min, Sek]);
end;

BBoy 27. Mai 2011 14:05

AW: Geokoordinaten Umrechnen in Dezimalgrad
 
Hat sich erledigt, habs nun endlich selbst gepeilt.

Dennoch Danke an diejenigen die geholfen haben :)

@Satty67, deine funktion liefert mir: 49° 31 38,3400 aus: 49.5273166666666 zurück. Sollte doch aber: 49° 31.639 sein.
Egal, wie gesagt habe es gepeilt. Ist total einfach. Bsp: 49.52731 die stellen nach dem Punkt einfach mal 60 nehmen = 3163860 = 49° 31.639 gerundet

Coffeecoder 27. Mai 2011 14:07

AW: Geokoordinaten Umrechnen in Dezimalgrad
 
Hi,

Ich habe ein Link gefunden, da kannst du deine Ergebnisse kontrollieren:
http://www.koordinaten.de/online/koo...rechnung.shtml

BBoy 27. Mai 2011 14:45

AW: Geokoordinaten Umrechnen in Dezimalgrad
 
Danke für den Link

Satty67 27. Mai 2011 14:57

AW: Geokoordinaten Umrechnen in Dezimalgrad
 
Zitat:

Zitat von BBoy (Beitrag 1103315)
@Satty67, deine funktion liefert mir: 49° 31 38,3400

Es gibt eben zwei Formate, einmal Sekunden/Minuten getrennt und einmal zusammengefasst.

Ich fand es sinnvoll die Funktion für die feinere Auflösung zu entwerfen, weil hinterher zusammenfassen immer einfacher ist.

BBoy 27. Mai 2011 15:21

AW: Geokoordinaten Umrechnen in Dezimalgrad
 
KLar, wenn man weis wie es geht dann ist das sicher super.
Für meine zwecke reicht erst mal die einfache variante :)
Danke.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz