Ir al contenido principal
Todas las coleccionesPara DesarrolladoresIntegración con Video Hikvision
Para desarrolladores - Conversión de coordenadas de GPS Hikvision a GMS y GD
Para desarrolladores - Conversión de coordenadas de GPS Hikvision a GMS y GD

GMS - (grados, minutos, segundos) GD (grados decimales)

Xavier Guereque avatar
Escrito por Xavier Guereque
Actualizado hace más de un año

En este ejemplo utilizaremos los eventos del GPS de un grabador móvil a través de un HikGateway, la instrucción es la siguiente:

curl --digest -u admin:lkjhaSGr34Yg --location --request POST 'http://19.117.175.92/ISAPI/Event/notification/subscribeDeviceMgmt?format=json' \
--header 'Content-Type: application/json' \
--data-raw '{
"SubscribeDeviceMgmt":
{
"eventMode": "all",
"defenceMode":"all"
}
}'

El API nos arrojará eventos similares al siguiente:

{
"EventNotificationAlert":{
"GPS":{
"direction":0,
"divisionEW":"W",
"divisionNS":"N",
"height":145330,
"latitude":10306222,
"longitude":38185400,
"precision":140,
"retransFlag":0,
"satellites":6,
"speed":0
},
"activePostCount":1,
"channelID":"1",
"channelName":"Camera 01",
"dateTime":"2023-01-06T12:42:44+08:00",
"devIndex":"6FCDB203-45C8-4DC0-9D00-14CD85C6FFD0",
"deviceID":"G32742006",
"eventDescription":"GPS information",
"eventState":"active",
"eventType":"GPSUpload"
}
}

Guardamos los siguientes valores:

divisionEW = W
divisionNS = N
latitud = 10306222
longitud = 38185400

Para convertir las coordenadas a GSM utilizamos las siguientes formulas:

Latitud

Grados y minutos latitud son valores tipo INT y segundos latitud es tipo FLOAT, ejemplo:

INT gradosLatitud = 10306222/(3600*100) = 28.6283 = 28
INT minutosLatitud = (10306222-28*3600*100)/(60*100) = 37.7036 = 37
FLOAT segLatitud = (10306222-(28*3600*100)-(37*60*100))/100 = 42.22

Longitud

Grados y minutos son valores tipo INT y segundos es tipo FLOAT, por ejemplo:

INT gradosLongitud = 38185400/(3600*100) = 106.0705 = 106
INT minutosLongitud = (38185400-106*3600*100)/(60*100) = 4.2333 = 4
FLOAT segLongitud = (38185400-(106*3600*100)-(4*60*100))/100 = 14

El resultado sería el siguiente:

Latitud = 28º37'42.22" N

Longitud = 106º04'14" W

Gráficamente en el grabador aparecerá de la siguiente manera:

Si necesitamos las coordenadas en formato GD sólo utilizamos la siguiente formula (tomando como base las coordenadas GMS):

latitud = 28 + (37/60) + (42.2/60) = 28.6283888889
longitud = 106 + (04/60) + (14/3600) = 106.0705555556

N y E son positivos, W y S son negativos, por lo que el resultado sería el siguiente:

28.628388, -106.070555

Ejemplo

¿Ha quedado contestada tu pregunta?