Задача: В ПО Мобильная торговля А+ координаты хранятся в виде ГГММ.ММММ, необходимо преобразовать к формату хранения Яндекс/Google, вида ГГ.ГГГГГГ
Решение:
Хорошее описание
здесь, в wiki еще одного поставщика решений для мобильной торговли.
Общие понятия о форматах координат
Единого стандарта записи нет, но существует множество вариантов, которые используются на практике. Среди них:
- DMS (градусы, минуты, секунды) — наиболее понятная для
восприятия запись, в которой раздельно указываются градусы, минуты и
секунды (последние обычно указываются с точностью до определенного
знака). В этой записи чаще всего полушарие обозначается латинской буквой
(N/S и W/E).
- DD (градусы в десятичном виде) — наиболее простая в
числовом выражении запись, в которой целая часть представляет градусы, а
дробная (обычно 6 знаков) — все остальное. Полушария обозначаются
знаком плюса или минуса (реже буквами). Такая запись менее наглядна, но зато удобна для хранения в
информационных системах. Большинство бытовых GPS-устройств и
картографических сервисов использует именно это формат.
- DM, UTM, Geo-Tags и другие менее распространенные и экзотические форматы — используются в различных специализированных системах.
Формат координат в продуктах ST и А+
Как и "А+ Мобильная Торговля 2.0", в программах «ST Чикаго» и «ST Мобильная Торговля» географические координаты в БД хранятся в редко используемом сейчас формате
ГГММ.ММММ.
Где:
ГГ — градусы;
ММ.ММММ — минуты и десятитысячные доли минут.
Это одна из GPS-нотаций, иногда обозначаемая как
GPS (Dec Min).
ПО фактически получает и использует для своих нужд «нормальный» десятичный формат (
DD),
в котором снимают данные большинство современных GPS-приемников (в т.ч.
в смартфонах и планшетах). Однако в БД координаты записываются уже в
формате
ГГММ.ММММ .
В интерфейсах, как правило, используется наиболее наглядный формат
DMS.
Историческая справка
Формат ГГММ.ММММ был унаследован продуктами А+ и ST от навигатора Garmin в начале 2000-х, когда КПК не имели собственных GPS-приемников.
Этот формат есть упрощенная запись формата ГГ°ММ.СС, рекомендуемый для использования в морском радиообмене. В настоящее время используется реже, чем «нормальный» десятичный формат.
Перевод между форматами
ГГММ.ММММ → ГГ.ГГГГГГ
Для перевода необходимо использовать формулу
ГГ + (ММ.ММММ ÷ 60):
ГГ.ГГГГГГ → ГГММ.ММММ
Для перевода необходимо использовать формулу
(ГГ × 100) + (0.ГГГГГГ × 60):
Пример для Excel:
В
Microsoft® Excel можно использовать формулу:
= ЦЕЛОЕ(A1)*100 + ОКРУГЛ((A1-ЦЕЛОЕ(A1))*60;4), где в ячейке A1 находится значение в формате ГГ.ГГГГГГ
Пример для 1С:
Функция КонвертироватьКординатуИзАгентПлюс( _коорд )
Градусы = Цел(_коорд / 100);
Минуты = _коорд - Градусы * 100;
Возврат Окр((Градусы+Минуты/60), 5);
КонецФункции
Функция КонвертироватьКординатуВАгентПлюс( _коорд )
возврат Цел(_коорд)*100 + Окр((_коорд - Цел(_коорд))*60, 4)
КонецФункции