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






