2013-08-26 9 views
8

Ich habe ein GPS-Modul, das mir den Längengrad in einem seltsamen Format gibt.Breite Länge in falschem Format DDDMM.MMMM 2832.3396N

DDDMM.MMMM 

Wie im Benutzerhandbuch geschrieben, Degrees * 100 + Minuten.

Soweit ich weiß, ist es Grad Minuten Sekunden, und Sekunden liegt zwischen 0-59, darüber wird die Minute erhöht. Aber das gibt Minuten in Dezimalstellen. Bedeutet das 1/1000stel einer Minute?

eg. 07717.3644 E 
077 --> degrees 
17 --> minutes 
3644 --> ? 
E --> Direction 

Auch wie werde ich wandle es dezimal, ich die Formel

decimal = degrees + minutes/60 + seconds/3600. 
+0

**. 3644 ** Minuten sind, die zu ** Sekunden/60 ** – Gangadhar

+0

Hallo gleich sind, ich ähnliches Problem konfrontiert bin, erhielt das nema Format DDMM.MMMM ist. Ich muss das gleiche in ddmm.mmmmmm konvertieren. 1. Was erklärt dieses Format? ddmm.mmmmmm? Bitte erkläre. 2. Um ddmm.mmmm in ddmm.mmmmmm zu konvertieren, habe ich ddmm. (Mmmm * 60). Ist das richtig – Aada

Antwort

16

Um dies in das Dezimalformat zu konvertieren, beginnen wir mit der Beibehaltung des DD-Abschnitts und teilen einfach die MM.MMM durch 60, um den MMM-Teil des Dezimalformats zu fixieren.

43. (48.225/60), -79.(59.074/60) 

43.(0.80375), -79.(0.98456) 

43.80375, -79.98456  

In Ihrem Fall

eg. 07717.3644 E is the DDDMM.MMMM format 

077 --> degrees 
17 --> minutes 
.3644 --> minutes equals to sec/60 


decimal = degrees + minutes/60 

decimal = 77 + (17.3644/60) 

decimal = 77.28941 

See this Link Would help you

+0

Danke dafür, ich verbringe viel Zeit – Shridhar

+0

löste mein Problem auch. Ich wusste von Longi, war mir aber über Lati nicht sicher. –

+0

@Gangadhar - toter Link – Ian

2

1 Minute = 60 Sekunden, so dass 0,3644 Minuten = 0,3644 * 60 = 21,86 Sekunden verwenden.

1

Der Wert ist keine Zahl, sondern eine Reihe von degreed und verketteten Minuten. Sie müssen vorsichtig sein, da es wahrscheinlich ist, dass Breitenwerte nur zwei Grad Ziffern haben (d. H. DDMM.MMMM). Wenn Sie also zum Trennen der Werte die Zeichenfolgenbehandlung verwenden, müssen Sie dies berücksichtigen. Long- und lat kann jedoch numerisch behandelt werden, wie folgt:

double GpsEncodingToDegrees(char* gpsencoding) 
{ 
    double a = strtod(gpsencoding, 0) ; 
    double d = (int)a/100 ; 
    a -= d * 100 ; 
    return d + (a/60) ; 
} 

Sie könnten auch die Halbkugel Zeichen E/W oder N/S in diese Funktion und verwenden Sie sie passieren ein entsprechendes +/- Zeichen, um zu bestimmen, falls erforderlich.

1

Einfache Implementierung in Python:

latitude = <ddmm.mmmm> 
longitude = <dddmm.mmmmm> 

# Ricava i gradi della latitudine e longitudine 
lat_degree = int(latitude/100); 
lng_degree = int(longitude/100); 

# Ricava i minuti della latitudine e longitudine 
lat_mm_mmmm = latitude % 100 
lng_mm_mmmmm = longitude % 100 

# Converte il formato di rappresentazione 
converted_latitude = lat_degree + (lat_mm_mmmm/60) 
converted_longitude = lng_degree + (lng_mm_mmmmm/60) 

print converted_latitude, converted_longitude 

ersetzen Breiten- und logitude.

0

Folgen Sie dem Algorithmus, um das gleiche zu konvertieren.

var t = "7523.7983" // (DDMM.MMMM) 
 
var g = "03412.9873" //(DDDMM.MMMM) 
 

 
function lat(t){ 
 
    return (Number(t.slice(0,2)) + (Number(t.slice(2,9))/60)) 
 
} 
 

 
function lng(g) { 
 
    return (Number(g.slice(0,3)) + (Number(g.slice(3,10))/60)) 
 
} 
 

 
console.log(lat(t)) 
 
console.log(lng(g))