Koordinaten konvertieren und speichern (float-problem)

pantera44

Grünschnabel
Koordinaten umwandeln.

Hallo jeder Punkt dieser Erde lässt sich ja mit Koordinaten beschreiben, die aus zwei Angaben (x,y) bestehen. Um diese Koordinaten darzustellen, gibt es mehrere Formate.
z.B. Grad Minuten Sekunden; Grad Minuten,Minuten und als float wert z.b. 12,3122
Da ich nicht für eine Koordinate mehrere Werte speichern möchte, ist die float-variante die beste, außerdem lässt sich hiermit am einfachsten Entfernungen berechnen.

Wenn ich aber jetzt eine Koordinatenangabe in der form 51 12,13 habe und möchte diese umwandeln so bleibit die 51 erhalten, und die 12,13 teile ich dursch 60, die neue Koordinate
ist 51+(12,13/60) also 51,20216. Wie setzte ich dieses Umwandlung am einfachsten in PHP um?
Ich kann ja schlecht aus einem Float-wet einen vor und nachkomma-anteil bilden?

ganz lieber gruß, Pantera
 
Öhm... Doch!?

Du benutzt die von dir genannte Formel, aber statt der festen Zahlen setzt du Variablen ein, die du entsprechend dann mit den Werten füllst...
Zum aufschlüsseln benutzt du die gleiche Formel nur Rückwärts...
Mit preg_match und/oder so kannste dir aus dem Floatwert den nötigen Teil holen...

Wäre so das einfachste und schnellste was mir spontan einfällt ^^
 
Hallo und danke für die Antwort. Ich habe jetzt mit deiner Hilfe eine halbe Lösung gefunden, finde diese aber nicht schön, da sie nicht immer funktioniert.
PHP:
<?php
error_reporting(E_ALL);
$int_grad["0"]=12;              #gegebene Variable
$float_minuten["2"]=00.001;     #gegebene Variable


$float_minuten["2"]/=60;       #Nachkommanteil umrechnen

$zeichenkette = $float_minuten["2"];
$suchmuster = '/^0[.]/';  //suche etwas was mit "0."anfängt
$ersetzung = '';          //ersetze den punkt dursch nix
$float_minuten["2"]= preg_replace($suchmuster, $ersetzung, $zeichenkette);

//in string steht dann das Endergebnis
$string=$int_grad["0"];
$string.=',';
$string.=$float_minuten["2"];
echo $string;

Das Problem liegt an der Division mit 60. Normalerweise kommt als Ergebnis was mit 0.raus, dann funktioniert meine Lösung, sollte aber der Dividend einen extrem niedrigen wert haben, wie hier im Beispiel ($float_minuten["2"]) ist der Quotient irgendwas mit 1.

Dieses Problem muss aber doch ein Standard-Problem der Informatik sein, sollte das Thema nicht gegebenenfalls verschoben werden?

LG,Pantera
 
Super, habe diese Funktion zwar im manual gefunden, aber nur kurz überschlagen. Dachte nicht das sie mein Freund ist.

Vielen Vielen Dank
 
Ich habe diesen Super code von Chaosengel_Gabriel mal in meinem beispiel eingebaut, sieht jetzt so aus
PHP:
echo "ausgangswert: ";
echo $float_minuten;
echo "<BR>";
echo "augangswert /60: ";
$float_minuten/=60;
echo $float_minuten;
echo "<BR>";
$float_minuten=round($float_minuten,4);
echo "gerundet:";
echo $float_minuten;
echo "<BR>";
$vorkomma_stellen = floor($float_minuten);
$nachkomma_stellen = $float_minuten - floor($float_minuten);
echo "vorkommastellen: ";
echo $vorkomma_stellen;
echo "<BR>";
echo "nachkommastellen: ";
echo $nachkomma_stellen;
echo "<BR>";

Die Ausgabe ist diese hier.
Code:
ausgangswert: 2.221
augangswert /60: 0.0370166666667
gerundet:0.037
vorkommastellen: 0
nachkommastellen: 0.037



Gibt es jetzt noch einen Trick, wie ich die führende 0 bei 0.037 eliminiere?
Ich möchte also nur 037 haben. ohne das 0.

gruß, Pantera
 
Zuletzt bearbeitet:
Holla

Geht es nur darum die Null aus der Zahl zu bekommen oder allgemein das was vor dem Punkt (+Komma ?) weg zu bringen ?

Sonst würde ich dir nämlich die Funktion strstr empfehlen :)


mit freundlichen Grüßen
SimonErich
 
Danke für die schnellen Antworten, ich habe es jetzt mit einem regulären ausdruck und der Funktion preg_replace gelöst

$suchmuster = '/^0[.]|^1[.]/'; //suche etwas was mit 0. oder 1.anfängt.

ich gucke mir das morgen nochmal alles in ruhe an.

gruß, pantera
 
Hi,

so wie $nachkomma_stellen berechnet ist, steht da immer "0." davor, sonst wären es ja nicht die Nachkommastellen. Irgendwie verstehe ich die ganze Problematik nicht...

LG
 
Zurück