2013-08-26 15 views
8

Mam moduł GPS, który daje mi szerokość geograficzną w dziwnym formacie.Szerokość geograficzna w złym formacie DDDMM.MMMM 2832.3396N

DDDMM.MMMM 

Jak napisano w instrukcji obsługi, Stopnie * 100 + Minuty.

O ile mi wiadomo, to stopnie minut, a sekundy od 0 do 59 powyżej, co zwiększy minutę. Ale to daje minuty w miejscach dziesiętnych. Czy to oznacza 1/1000 minuty?

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

także w jaki sposób przekonwertować go na dziesiętne, używam formuły

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

**. 3644 ** są minuty, które są równe ** sekund/60 ** – Gangadhar

+0

Witam, Jestem stoi podobny problem, otrzymał NEMA format jest ddmm.mmmm. Muszę przekonwertować to samo do ddmm.mmmmmm. 1. co ten format wyjaśnia? ddmm.mmmmmm? Proszę wytłumacz. 2. Aby przekonwertować ddmm.mmmm do ddmm.mmmmmm, zrobiłem ddmm. (Mmmm * 60). Czy to jest poprawne? – Aada

Odpowiedz

16

Aby przekonwertować to na format dziesiętny, rozpoczynamy od zachowania części DD i po prostu dzielimy MM.MMM przez 60, aby wzmocnić część MMM w formacie dziesiętnym.

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

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

43.80375, -79.98456  

W twoim przypadku

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

Dzięki za to spędzam dużo czasu – Shridhar

+0

rozwiązałem również mój problem. Wiedziałem o longi, ale nie byłem pewien lati. –

+0

@Gangadhar - martwy link – Ian

2

1 minuta = 60 sekund, więc .3644 minut = .3644 * 60 = 21.86 sekund.

1

Wartość nie jest liczbą, ale ciąg degreed i minuty łączone. Musisz być ostrożny, ponieważ jest prawdopodobne, że wartości szerokości geograficznej mają tylko cyfry dwu stopni (tj. DDMM.MMMM), więc jeśli użyjesz obsługi ciągów do oddzielenia wartości, musisz to wyjaśnić. Jednak zarówno długa i łac mogą być obsługiwane numerycznie w następujący sposób:

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

Można również przekazać postać półkuli E/W lub N/S do tej funkcji i używać go w celu określenia odpowiedniego +/- znak jeśli jest to wymagane.

1

prosta implementacja w Pythonie:

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 

Wymień szerokości i logitude.

0

Postępuj zgodnie z algorytmem, aby przekonwertować to samo.

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))

Powiązane problemy