Широта долгота в неправильном формате DDDMM.MMMM 2832.3396 N

у меня есть модуль gps, который дает мне широту в долготе в странном формате.

DDDMM.MMMM

как написано в руководстве пользователя, градусов * 100 + минут.

насколько я знаю, это Градусы минут секунд, а секунды между 0-59, выше, чем это увеличит минуту. Но это дает минуты в десятичных знаках. Означает ли это 1/1000-ю минуту?

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

также, как я буду конвертировать его в десятичный, я использую формулу

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

5 ответов


чтобы преобразовать это в десятичный формат, мы начнем с сохранения части DD и просто разделим MM.MMM на 60, чтобы укрепить часть MMM десятичного формата.

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

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

43.80375, -79.98456    

в вашем случае

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

см. эту ссылку поможет вам


1 минута = 60 секунд, так .3644 минут = .3644 * 60 = 21.86 секунд.


значение не является числом, а строкой градусов и минут, соединенных вместе. Вы должны быть осторожны, потому что, скорее всего, значения широты имеют только две цифры степени (т. е. DDMM.MMMM), поэтому, если вы используете обработку строк для разделения значений, вы должны учитывать это . Однако и long и lat можно обрабатывать численно следующим образом:

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

вы также можете передать символ полусферы E / W или N / S этой функции и использовать его для определения соответствующего знака+/ - если потребуется.


простая реализация в 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

заменить широты и logitude.


следуйте алгоритму, чтобы преобразовать то же самое.

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