Latitud Longitud en formato incorrecto DDDMM.MMMM 2832.3396N

4 minutos de lectura

avatar de usuario
Ismeet

Tengo un módulo gps que me da latitud en longitud en un formato raro.

DDDMM.MMMM

Como está escrito en el manual del usuario, Grados*100 + Minutos.

Hasta donde yo sé, son grados, minutos, segundos, y los segundos están entre 0 y 59, por encima de esto aumentará el minuto. Pero esto está dando minutos en lugares decimales. ¿Significa esto 1/1000 de un minuto?

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

Además, ¿cómo lo convertiré a decimal? Estoy usando la fórmula.

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

  • .3644 son minutos que equivalen a segundos/60

    – Gangadhar

    26 de agosto de 2013 a las 11:22


  • Hola, tengo un problema similar, el formato recibido por nema es ddmm.mmmm. Necesito convertir lo mismo a ddmm.mmmmmm. 1. ¿Qué explica este formato? ddmm.mmmmmm? Por favor explique. 2. Para convertir ddmm.mmmm a ddmm.mmmmmm, hice ddmm.(mmmm* 60). Es esto correcto

    – Aada

    5 de febrero de 2016 a las 10:11


avatar de usuario
Gangadhar

Para convertir esto al formato decimal, comenzamos manteniendo la porción DD y simplemente dividimos MM.MMM por 60 para confirmar la porción MMM del formato decimal.

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

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

43.80375, -79.98456    

En tu caso

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

Ver este enlace te ayudaría

  • Gracias por esto, paso mucho tiempo

    – Shridhar

    15 de marzo de 2017 a las 10:09

  • resolvió mi problema también. Sabía sobre longi pero no estaba seguro sobre lati.

    – Malkit Singh

    24 de mayo de 2017 a las 10:48

  • @Gangadhar – enlace muerto

    – Ian

    7 de junio de 2017 a las 12:17

Siga el algoritmo para convertir lo mismo.

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

function lat
  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
console.log(lng(g))  

  • Gracias, su código funcionó como el resultado esperado. Obtuve algunos dispositivos de China que proporcionan este formato de datos.

    – Abbas

    18 de junio de 2020 a las 10:04

avatar de usuario
clifford

El valor no es un número sino una cadena de grados y minutos concatenados. Debe tener cuidado porque es probable que los valores de latitud solo tengan dígitos de dos grados (es decir, DDMM.MMMM), por lo que si utiliza el manejo de cadenas para separar los valores, tendrá que tenerlo en cuenta. Sin embargo, tanto long como lat se pueden manejar numéricamente de la siguiente manera:

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

También puede pasar el carácter de hemisferio E/W o N/S a esta función y usarlo para determinar un signo +/- apropiado si es necesario.

  • Esa es una gran solución si se pasa de una cadena dddmm.mmmm a numérica dd.dddd si la cadena original puede variar en longitud.

    – Porco

    24 de agosto de 2018 a las 18:48

1 minuto = 60 segundos, entonces .3644 minutos = .3644 * 60 = 21.86 segundos.

Implementación simple en 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

Reemplace la latitud y la longitud.

avatar de usuario
ImI

Acabo de resolver este problema en Java. Estaba trabajando con el dispositivo IOT que envía la ubicación en forma de latitud, es decir, (3231.5462N) y longitud, es decir, (07406.6945E). Los convertí usando una fórmula simple, tome la porción DD para la latitud y DDD para la longitud tal como está y aplique la conversión de doble en mi caso, puede aplicar lo que desee y convertir la cadena en doble y eliminar el 0 automáticamente si está en el inicio como en mi caso y luego dividir el resto del valor con 60 y tomar la suma de ambos.

public  double[] convertLocationToLatAndLong(String latitude,String longitude){
double lat=(Double.parseDouble(latitude.substring(0, 2)))+(Double.parseDouble(latitude.substring(2, latitude.length()))/60);
double lon=(Double.parseDouble(longitude.substring(0, 3)))+(Double.parseDouble(longitude.substring(3, longitude.length()))/60);

double[] latAndLong= {lat,lon};
return latAndLong;

}

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad