GPS координаты перевод - PullRequest
       7

GPS координаты перевод

3 голосов
/ 30 апреля 2011

Я занимаюсь разработкой веб-сайта для GPS-отслеживания с устройством от VisionTek с моделью № 86VT

http://www.visiontek.co.in/vehicle-tracking-systems/86vt.html

Я не могу определить местоположение устройства, но не могу разобрать его правильно, поскольку мы используем карты Google. За. Ex. Я получаю следующую долготу для Вишакхапатнама, которая равна 17.xxx в исходной координате в местоположении карт Google.

17480249N

Я не знаю, что это за формат и как конвертировать 17480249N в 17.xxx. Я также знаю, что «N» для положительных значений.

Пожалуйста, помогите, я использую PHP, но любая логика приветствуется.

Вот так я получаю ответ от устройства. Пожалуйста, смотрите жирный текст для координат, я рядом с пляжем Вишакхапатнам.

$ 1, GlamourBik, 14,11,10,14,40,08, 17434800N, 083185195E 02.1,13,0,0, A #

$ 2, GlamourBik, 14,11,10,14,45,08, 17440069N, 083187747E , 19.8,12,1,0, A #

$ 1, GlamourBik, 14,11,10,16,53,42, 17440319N, 083176376E , 00.3,178,1,0, A #

$ 1, GlamourBik, 14,11,10,16,58,41, 17440319N, 083176376E , 00.0,166,1,0, A #

$ 1, GlamourBik, 14,11,10,17,03,42, 17440319N, 083176376E , 00.0,42,1,0, A #

Ответы [ 3 ]

3 голосов
/ 30 апреля 2011

Вы уверены, что это не Локатор? ( N должно означать Север и Долгота для Востока / Запада )

В javascript это, вероятно, должно делать то, что вы хотите ..

function getUsable ( coordinate ) 
{
  var signMultiplier = {'S':-1,'N':1, 'W':-1, 'E':1};
  var sign = coordinate[ coordinate.length-1 ];
  return signMultiplier[sign] * parseInt(coordinate.replace( sign, '' ), 10) / 1000000;
}

с использованием getUsable('17480249N') вернет дружественную для Google-карты версию.

Я предполагаю, что формат представляет собой целочисленное представление с шестизначной точностью.

N положительно, потому что оно обозначает Север, а не Юг, что должно быть отрицательно.
То же самое для E (восток) и W (запад).

Демо на http://jsfiddle.net/gaby/Rjk8e/


Обновление

После вашего обновления с полными координатами и ответом @wallyk, вот версия, которая может вычислять координаты, если они в формате DMS.

function getUsableDMS( coordinate )
{
    var signMultiplier = {'S':-1,'N':1, 'W':-1, 'E':1};
    var sign = coordinate[ coordinate.length-1 ];
    var length = coordinate.length-1;
    var D = parseInt( coordinate.substr(0,(length==8)?2:3), 10 );
    var M = parseInt( coordinate.substr(2,2), 10 );
    var S = parseInt( coordinate.substr(4,4), 10 ) / 100;
  return signMultiplier[sign] * (D + (M/60) + (S/3600));
}

Демо на http://jsfiddle.net/gaby/Rjk8e/1/


Примеры

Первая координата в вашем вопросе 17434800N , 083185195E , расположенная в любом ( оба находятся в море ) из

карта Google с использованием перевода по первому способу
или
карта Google с использованием перевода по методу DMS ?

2 голосов
/ 01 мая 2011

Висакхапатнам расположен в 17 ° 42 'северной широты, 83 ° 15' восточной долготы или в десятичном знаке со знаком + 17,7 °, + 83,25 °.Поскольку Visakapatnam довольно большой, 17480249 , вероятно, означает 17 ° 48 '2,49 ", что составляет около 2,5 км. EESE.

Именно так GPS-единицы форматируют свои данные для NMEA0183 шина , например.

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

Для преобразования градусов, минут и секунд (DMS) в градусы, используйте формулу D + M/60.0 + S/3600.0.

1 голос
/ 30 апреля 2011

Этот формат нигде не указан на этой странице.

http://en.wikipedia.org/wiki/Geographic_coordinate_conversion

Я предлагаю собрать некоторые данные для еще нескольких городов и надеяться, что вы сможете выбрать шаблон.

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