Geocoding - методы получения гео-координат и их применение
А.А.Бильчук, Samsung Electronics Co., Ltd, младший инженер-программист alexander. bilchuk@gmail. com;
Д.Е. Намиот, МГУ им. Ломоносова, кандидат физико-математических наук, старший научный сотрудник факультета ВМК, dnamiot@gmail. com;
Аннотация
В данной статье рассматриваются методы получения географических координат для мобильных устройств, их практическое применение, а также новый в Location Based Services (службах, основанных на определении текущего местоположения) подход «Geo Messages», позволяющий обмениваться информацией о местоположении на «peer -to-peer» основе - непосредственно с заинтересованной стороной. При этом информация о местоположении оформляется в качестве подписи для сообщений Email или SMS, а информация об авторе присутствует только в самом сообщении (адрес электронной почты отправителя или номер телефона).
Статья содержит примеры программного кода на языке Java, которые иллюстрируют концепции и способы разработки полноценного Location-Based сервиса.
Введение
Вопрос "Где ты?" является самым популярным в сетях мобильной связи. По данным Location Business Summit 2010 - на данный вопрос приходится 600 млрд. сообщений в год только в американских мобильных сетях. Для обмена информацией о местоположении в мобильных сервисах обычно используется два основных подхода:
• Подход «Check-in», в котором пользователь сервиса (например, Foursquare) по своей инициативе делает отметки о своем местоположении в социальной сети
• Постоянный мониторинг местоположения пользователя сервисом (например, Google Lattitude)
a) К сожалению, у данных подходов имеются ощутимые недоста-ти. К недостаткам первого подхода можно отнести:
• Данные о местоположении доступны только внутри своего круга социальной сети. Таким образом, пользователям, которым нужна данная информация, должны быть зарегистрированы в той же социальной сети
• «Информационный шум» - большей части социального круга информация о местоположении данного пользователя может быть просто неинтересна
a) Недостатки второго подхода:
• Ускоренный разряд батареи мобильного устройства
• Проблемы с приватностью данных как следствием постоянного мониторинга
Оба подхода также обладают общим недостатком, связанным с обеспечением конфиденциальности пользовательских данных, т.к. информация о местоположении хранится на серверах сервиса вместе с идентификацией пользователя.
«Geo Messages» - это новый подход, позволяющий обмениваться информацией о местоположении на peer-to-peer основе - то есть непосредственно с заинтересованной стороной. Для чего информацию о местоположении оформляется в качестве подписи для сообщений Email или SMS. В сообщения можно также помещать ссылку на карту. При этом информация об авторе присутствует только в самом сообщении (адрес отправителя или телефон в случае SMS). Очевидно, что при таком подходе не требуется никакой регистрации или членства в социальных сетях.
В рамках данной статьи мы рассмотрим современные методы и технологии получения географических координат, службы геокодирования и веб-картографии, а также рассмотрим принципы построения полноценного веб-сервиса LBS, реализующего подход «Geo Messages» и позволяющего определять местоположение мобильных устройств, оборудованных приемником GPS или подключенных к сетям GSM/UMTS, на примере разработанного автором сервиса «GeoSignature».
Методы получения географических координат
На сегодняшний день многие мобильные устройства, такие как сотовые телефоны и коммуникаторы, оборудуются приемниками GPS (Global Positioning System), при помощи которых пользователь может определять свое местоположение. При этом информация о местоположении может быть получена не только от спутниковых систем навигации, но и от существующих сетей связи, в т.ч. и от сотовых сетей GSM/UMTS.
Определение местоположения на основе спутниковых
навигационных систем
Определение местоположения на основе данных от спутниковых навигационных систем (СНС) обеспечивает высокую точность вычисления координат, скорости и направления движения различных объектов. С начала 1990-х гг. действовали две спутниковые навигационные
системы: глобальная навигационная спутниковая система GPS, ранее известная как NAVSTAR (США), и глобальная навигационная спутниковая система ГЛОНАСС (Россия).
Спутниковые навигационные системы состоят из трех основных сегментов: космического сегмента, наземного управляющего сегмента (комплекса управления) и абонентских приемников (пользовательского сегмента).
Космический сегмент состоит из орбитального созвездия, как правило, из 24 спутников. Каждый из них передает навигационный код, по которому приемник определяет расстояние до спутника. Такое количество спутников способно охватить всю земную поверхность равномерным полем радионавигационных сигналов. Данные навигационных сообщений, переданные со спутников, позволяют определить точное местоположение на момент передачи сигналов. СНС — это пассивные системы, т.е. пользователь может только принимать спутниковый сигнал и не имеет обратной связи со спутником.
Все спутники контролируются наземной системой управления, осуществляющей мониторинг навигационного поля, непрерывное слежение за созвездием спутников, управляющей ими и обновляющей навигационные данные. С помощью эталонных приемников измеряются сигналы со спутников, и результаты таких измерений используются для получения параметров орбит (эфемерид) для каждого спутника, а также для вычисления сдвига часов спутника относительно общесистемного времени. Эти сведения об эфемеридах и смещении часов загружаются на спутники для передачи конечным пользователям.
В итоге пользовательский приемник определяет собственное местоположение с точностью до нескольких метров по времени прохождения сигнала от спутников, измеряя расстояние до спутника как произведение групповой скорости распространения радиоволн на время прохождения сигнала по трассе «спутник-приемник», для этого приемнику необходимо иметь информацию о положении спутника и времени передачи сигнала от каждого спутника.
Как правило, для полностью развернутой СНС в зоне видимости приемника находятся от 5 до 11 спутников, из которых приемник может выбрать четыре с оптимальной геометрией (четвертый спутник используется для синхронизации времени из-за неточность часов приемника) или использовать для расчетов информацию от всех наблюдаемых спутников. [1].
Технология A-GPS (Assisted GPS)
Основная идея технологии — развернуть наземную эталонную сеть GPS так, чтобы эталонные приемники уверенно принимали сигналы от видимых в районе действия наземных сетей подвижной связи общего
пользования (PLMN) навигационных спутников и могли функционировать непрерывно. Наземная эталонная сеть навигационных приемников соединяется с PLMN. По запросу мобильной станции или PLMN на мобильной станции от наземной сети GPS передаются вспомогательные данные, которые позволяют улучшить характеристики встроенного в мобильную станцию GPS-приемника. При реализации технологии A-GPS уменьшается период вхождения встроенного в мобильную станцию приемника GPS в активный режим, сокращается диапазон поиска сигнала по частоте и сокращается время измерений, повышается чувствительность приемника и снижается его энергопотребление, поскольку не требуется его непрерывная работа. Но при этом уменьшается точность определения координат (до 400 м.).
Позиционирование мобильных устройств в сотовых сетях
Информация о местоположении может быть получена как от спутниковых систем навигации, так и от существующей (или расширенной измерительными модулями) инфраструктуры сети сотовой связи.
Выделяют следующие категории технологий определения местоположения в сотовых сетях:
На основе мобильной станции (MS-based): мобильное устройство (в терминологии MS - Mobile Station, мобильная станция) измеряет уровень сигнала и определяет местоположение независимо от сотовой сети. К числу технологий определения местоположения на базе MS относится измерение координат с помощью спутниковых навигационных систем (GPS, ГЛОНАСС) или технология A-GPS.
С поддержкой данных сети (Network-assisted): процесс определения местоположения происходит главным образом в MS, однако MS получает поддержку от сети. Примером может служить технология A-GPS, в том случае, когда от эталонного навигационного приемника на терминал через внешнюю наземную сеть поступают уточненные данные, позволяющие терминалу значительно повысить результаты измерений от созвездия спутников GPS. Другим примером служит технология определения наблюдаемой разности времени приема сигналов OTDoA (Observed Time Difference of Arrival): сеть передает мобильной станции необходимую информацию о задержках сигналов для вычисления данных местоположения.
С поддержкой мобильной станции (MS-assisted): MS измеряет уровни принимаемых от базовой станции (BTS - Base Transceiver Station) сигналов, а сеть определяет местоположение, например, с помощью усовершенствованной технологии измерения наблюдаемой разности времени приема сигналов E-OTD (Enhanced Observed Time Difference) для систем GSM или указанной технологии OTDoA для UMTS.
На базе сети (Network-based): сеть выполняет все функции, связанные с определением местоположения. Наиболее известным примером является технология идентификации соты (Cell ID), для которой не требуется определения параметров сигналов, так как это является внутренним свойством сетей мобильной связи. Точность определения местоположения уменьшается с увеличением радиуса сот с нескольких сот метров до нескольких километров.
Другим примером технологий определения местоположения на базе сети является технология определения времени поступления сигналов (Time of Arrival, ToA), согласно которой на трех базовых станциях измеряется время поступления сигналов доступа от одной мобильной станции.
Имеется множество способов определения местоположения мобильных станций, многие из которых позволяют определить местоположение абонента с высокой точностью. Некоторые технологии требуют усложнения конструкции MS и изменения программного обеспечения в них, а также в системе базовых станций. Внедрение других технологий больше влияет на инфраструктуру сети.
Сервисы определения гео-координат в сетях сотовой связи на базе технологии Cell ID
Из всех технологии позиционирования в сетях сотовой связи GSM/UMTS только технологии определения местоположения на основе идентификации соты (Cell ID) не требуют модификаций инфраструктуры сети (например, обеспечения базовых станций блоками LMU) и самих мобильных устройств. Поэтому для получения географических координат мобильного устройства, не оборудованного приемником GPS, для разработанного LBS-сервиса «GeoSignature» была выбрана именно технология Cell ID. При этом стоит отметить, что недостатком этой технологии является большая погрешность определения координат абонента.
В настоящщий момент наиболее распространенными открытыми сервисами для определения координат ячеек (сот) сетей сотовой связи являются:
33) Яндекс. Локатор
34) OpenCellID
35) Location-Api.com
36)Ericsson Labs Mobile Location API
Перечисленные сервисы предоставляют своим пользователям API для доступа к их базе данных. Основное отличие от технологии Cell ID, предоставляемой сотовыми операторами, заключается в том, что эти базы данных пополняются данными о местоположении ячеек самими
пользователями или разработчиками сервиса, а не сотовыми операторами.
Для определения своего примерного местоположения абонент должен передать сервису следующие данные ячейки, в зоне действия которой он находится:
37) Mobile Country Code (MCC) - код страны
38) Mobile Network Code (MNC) - код сети мобильной связи
39) Location Area Code (LAC) - код региона
40) Cell identifier (CellID, CID) - идентификатор соты
Запрос на определение местоположения передается методом GET (POST, в случае использования сервиса «Яндекс.Локатор») протокола HTTP (HyperText Transfer Protocol).
Данные сервисы сообщает координаты центра области (широта, долгота) и максимальное расстояние, в пределах которого может находиться мобильное устройство, в форматах XML или JSON. Погрешность определения координат мобильного устройства зависит от плотности установки базовых станций (в городах - от 200 до 500 м., на окраинах городов - 1500-6000 м.).
Приведем небольшой пример использования сервиса OpenCellID для получения координаты ячейки по заданным параметрам MCC, MNC, LAC и CellID.
Запрос к сервису (параметр "apikey" - ключ API, получаемый при регистрации в системе OpenCellID):
http://www.opencellid.org/cell/get?key=apikey&mnc=1&mcc=2&lac=20 0&cellid=234
Ответ сервиса (в формате XML): <?xml version-'1.0" encoding="UTF-8" ?> <rsp stat="ok">
<cell mnc="99" lac="0" lat="50.5715642160311" nbSamples="57" range="6000" lon="25.2897075399231" cellId="29513" mcc="250" /> </rsp>
Технологии геокодирования и веб-картографии
В большинстве случаев для указания местоположения используется адрес, а не географические координаты. Геокодирование (geocoding) -процесс преобразования почтовых адресов в гео-координаты. Для получения адреса по заданным координатам используется обратное геокодирование (reverse geocoding). Географические координаты (а также адрес посредством его геокодирования) могут использоваться для указания местоположения на карте.
Сервисы веб-картографии предоставляют своим пользователям доступ к электронным топографическим картам и спутниковым снимкам, обеспечивают необходимыми инструментами для работы с картографи-
ческими данными, такими как: сдвиг по осям, масштабирование, центрирование на выбранной точке, поиск местоположения по указанному адресу или географическим координатам, определение маршрута между указанными точками и т.д. Такие сервисы, как Яндекс.Карты или Google Maps, позволяют встраивать свои карты в приложения и вебстраницы, предоставляют удобный API для геокодирования, получение картографических данных и их обработки. Взаимодействие с данными сервисами осуществляется посредством протокола HTTP, для передачи параметров запроса используется метод GET.
Приведем небольшой пример использования Static API Янлекс.Карт.
Запрос на получение изображения карты:
http://static-maps.yandex.ru/1.x/
?ll=37.5295522,55.6986759&size=500,160&z=15&l=map&key=API-ключ
Ответ сервиса (рис. 1):
Рис. 1. Ответ сервиса Яндекс.Карты
Параметры запроса:
41) key - ключ API, получаемый при регистрации в системе Яндекс.Карт
42) ll - центрирование изображения карты по заданным через запятую значениям долготы и широты (пример: 11=37.5295522,55.6986759)
43) size - размер возвращаемого изображения карты в пикселях, через запятую указываются значения ширины и высоты. Максимальный размер изображения - 650x450 пикселей
44) z - уровень масштабирования, может принимать значения от 0 до 17
45) l - тип карты. Возможные значения: «map» (схема), «sat» (спутник) или «sat,skl» (гибрид)
Пример запроса на получение гео-координат по почтовому адресу (прямое геокодирование):
http://geocode-maps.yandex.rn/Lx/
?geocode=Россия,+Москва,+улица+Лебедева&kev=API-ключ Пример запросаобратного геокодирования: http://geocode-maps.yandex.rn/Lx/
?geocode=37.5295522,55.6986759&key=API-^4 В качестве ответа сервис возвращает данные в формате XML (по умолчанию) или JSON (при наличии в запросе дополнительного параметра format=json).
Принципы разработки Location Based сервиса
Мы коротко рассмотрели методы и технологии определения местоположения, а также сервисы, их реализующие и дополняющие. Как уже было сказано раннее, в рамках данной статьи автором был разработан веб-сервис «GeoSignature» для мобильных устройств с поддержкой JME, оборудованных приемником GPS или подключенных к сотовым сетям связи GSM/UMTS. На его примере мы рассмотрим основные принципы разработки Location Based Service. Данная разработка является проектом с открытым исходным кодом и доступна по адресу http://sourceforge.net/projects/geosignature/.
К сервису «GeoSignature» были определены следующие требования:
46) Определение местоположение мобильных устройств, оборудованных приемником GPS или подключенных к сетям GSM/UMTS
47) Поддержка обратного геокодирования - преобразования полученных гео-координат устройства в почтовый адрес
48) Позиционирование мобильного устройства на статической карте
49) Возможность отправки SMS или email с встроенной сигнатурой, которая содержит данные о местоположении устройства
50) Обеспечение конфиденциальности данных о пользователях, их местоположении
В качестве технологии определения местоположения в сотовых сетях была выбрана технология идентификации соты (Cell ID) и использованы сервисы «Яндекс.Локатор» (для получения гео-координат на территории РФ) и OpenCellID (по всему миру).
Для поддержки обратного геокодирования и позиционирования на статической карте были использованы Static API «Яндекс.Карт» и «Google Static Maps API».
Архитектура сервиса представляет собой клиент-серверную модель с тонким клиентом и представлена на рис. 2:
tiPS
Рис. 2. Модель LBS-сервиса
Клиентское приложение, запущенное на исполнение на мобильном устройстве, определяет параметры соты (CelllD, LAC, MCC, MNC), в зоне действия которой находится устройство, или свои географические координаты, при наличии приемника GPS и доступности спутников. Далее клиентское ПО формирует HTTP-GET-запрос с данными по текущей ячейке GSM/UMTS или гео-координатами и передает ее мобильному веб-браузеру, который инициирует HTTP-соединение с серверным приложением. Само клиентское приложение при этом завершает свою работу, пользователь взаимодействует с сервисом посредством веб-браузера.
Серверное приложение получает от клиента параметры соты или его гео-координаты. В первом случае сервер определяет географические координаты мобильного устройства, обращаясь к базам данных Cell ID Яндекс.Локатор или OpenCelllD, в зависимости от мобильного кода страны MCC (Яндекс.Локатор содержит более точные данные расположения ячеек мобильной связи на территории России). Далее по полученным гео-координатам определяется адрес объекта (осуществляется обратное геокодирование) и строится изображение карты местности. Для этого используется Static API Яндекс.Карт (если был использован сервис Яндекс.Локатор или устройство находится на территории РФ) или Google Static Maps API.
Сервер формирует ответ с результатами в виде html-страницы (разметка страницы и размер изображений карт генерируются исходя из разрешения экрана мобильного устройства, приславшего запрос; данные о разрешении экрана сервер получает из параметров запроса клиента) и передает его веб-браузеру пользователя (рис. 3):
Рис. 3. Ответ LBS-сервиса в виде страницы HTML
Пользователь, взаимодействуя с полученной веб-страницей, может определять свое местоположение на карте, управлять масштабом карты (при этом формируется отдельный запрос на сервер для перерисовки изображения), а также отправлять SMS или Email сообщения с данными о местоположении (открывается встроенный в мобильное устройство редактор сообщений, куда автоматически копируются адрес пользователя и его гео-координаты).
Для разработки серверной части сервиса воспользуемся платформой Java Enterprise Edition, для разработки клиентского приложения для мобильных устройств - платформу Java Micro Edition, как наиболее распространенную на момент написания статьи.
Разработка клиентского приложения на базе Java Micro Edition
Для разработки клиентской части Location-Based сервиса для мобильного устройства с поддержкой JME воспользуемся Location API.
Location API (javax.microedition.location) определяется в спецификации JSR-179 как дополнительный пакет для платформы Java Micro Edition (JME), позволяющий разрабатывать LBS-приложения для мобильных устройств с ограниченными системными ресурсами. Данный пакет обеспечивает мобильное устройство простым и независимым от кон-
кретных технологий позиционирования инструментом определения местоположения.
Минимальные системные требования, предъявляемые JSR-179 к мобильному JME устройству для поддержки Location API: поддержка Limited Device Configuration (CLDC) v 1.1 и Mobile Information Device Profile (MIDP) 2.0.
Пример использования API: double lat, long; float speed, course;
// Создание объекта Criteria для задания критериев определения // местоположения Criteria cr = new Criteria();
// Установка максимальной горизонтальной погрешности // определения местоположения cr.setHorizontalAccuracy(500);
LocationProvider lp = LocationProvider.getInstance(cr); // Определение местоположения с максимальной задержкой в 60 с. Location l = lp.getLocation(60); // Определение географических координаты Coordinates c = l.getQualifiedCoordinates(); // Проверка получения координат if (c != null) { lat = c.getLatitude(); // Широта long = c.getLongitude(); // Долгота speed = l.getSpeed(); // Скорость движения course = l.getCourse(); // Направление движения
}
Параметры сотовой сети (MCC, MNC, LAC и CellID) в JME содержатся в системных свойствах. К сожалению, названия этих свойств не стандартизированы и для каждого конкретного производителя мобильного устройства являются разными. Доступ к этим параметрам осуществляется посредством вызова статического метода getProperty() класса System.
После получения гео-координат (при наличии модуля GPS) или данных сотовой сети мобильное приложение формирует HTTP-запрос с данной информацией и передает его мобильному веб-браузеру используя метод platformRequest() класса MIDlet:
Разработка серверного приложения на базе Java
Enterprise Edition
Разрабатанный LBS-сервис представляет собой JEE/Web-приложение в виде архива WAR, установленное и запущенное на исполнения на сервере приложений JEE (например, WebLogic, Glassfish и
др.). Архив WAR (Web application ARchive) содержит в себе сервлеты, страницы Java Server Pages, Java-классы, файлы XML, библиотеки тэгов, а также статические HTML-файлы. По сути WAR является архивом JAR, который, в свою очередь, представляет собой Zip-архив. При установке WAR на сервере приложений JEE осуществляется его развертывание.
Для взаимодействия с сервисами Яндекс.Локатор и OpenCellID, а также Static API Яндекс.Карты и Google Maps Static API используется класс HttpURLConnection.
Рассмотрим формирование и отправку GET-запроса на сервер OpenCellID:
URL serverURL = new URL("http://www.opencellid.org/cell/get" + "?key=" + API_KEY + "&mcc=" + mcc + "&mnc=" + mnc + "&lac=" + lac + "&cellid=" + cid); HttpURLConnection connection = (HttpURLConnection) serverURL.openConnection(); connection.setRequestMethod("GET"); connection. setDoOutput(true); connection. setReadTimeout(10000); connection.connect();
InputStream is = connection.getInputStream();
Запрос вместе с параметрами передается на заданный URL при вызове connector.getInputStream(), при этом метод возвращает ответ в виде InputStream.
Ответ от сервисов Яндекс.Локатор, OpenCellID, а также служб геокодирования Яндекс.Карт и Google Maps возвращается в виде файла XML, следовательно требуются средства его разбора для получения нужных нам данных. Для этого можно использовать SAX или DOM parser.
В разработанном LBS-сервисе за построение изображения карты отвечает отдельный сервлет, а для формирования изображения карты на веб-странице используется тег <img>, аттрибут «src» которого содержит запрос к данному сервлету:
Далее рассмотрим отправку гео-сообщений SMS и Email с данными о местоположении пользователя.
Данные о местоположении пользователя копируются во встроенные редактор сообщений мобильного устройства посредством использования SMS и Email URI (Uniform Resource Identifier). Далее пользователь вводит в поле адреса редактора требуемый номер телефона или адрес Email, может дополнить сообщение текстом или отправить его как есть.
Схема SMS URI:
sms:<phone number>{,< phone number >}[?body=<text>]
Схема Email URI:
mailto : <address> [?<header1>=<value 1>{&<header2>=<value2>}] Где header и value - заголовки параметров и соответствующие им значения, например: body=<text> (тело письма), cc=<address>{,<address>} (копия), subject (тема письма).
Для запуска редактора сообщений мобильного устройства с вебстраницы достаточно поместить вышеописанные URI (с данными о местоположении в параметре body) в атрибут href тега <a>:
Заключение
Разработка и развитие технологий определения местоположения и сервисов LBS является приоритетным направлением. Различные методы и технологии определения географических координат мобильных устройств открывают новые возможности для построения Location-Based сервисов (LBS), таких как: веб-картография, игры и развлечения, реклама, подпись сообщений SMS и Email географическими данными, поиск ближайших автозаправок, кафе, ресторанов, достопримечательностей и других объектов, вызов экстренных служб и т.д.
При этом, для предоставления Location-Based услуг необязательны поддержка системы определения местоположения оператором мобильной связи и наличие у мобильного устройства приемника спутниковых навигационных систем.
Подход «Geo Messages» можно успешно использовать в LBS для передачи данных о местоположении, т.к. он не требует регистрации и поддержки социальных сетей, отвечает всем требованиям по обеспечению конфиденциальности пользовательских данных и удобен в использовании для конечного пользователя. Литература
1. Громаков Ю.А., Северин А.В., Шевцов В.А.Технологии определения местоположения в GSM и UMTS. М.: Эко-Трендз, 2005.
2. Shu Wang, Jungwon Min, Byung K. Yi. Location Based Services for Mobiles: Technologies and Standarts. LG Electronics Mobile Research, USA. 2008.
3. Mobile Information Device Profile for Java™ 2 Micro Edition, Version 2.0. JSR 118 Expert Group, Java Community Process. 2002.
4. Location API for Java™ 2 Micro Edition, Version 1.0.1. JSR 179 Expert Group, Java Community Process. 2006.
5. http://opencellid.org/api
6. http://api.yandex.ru/locator/
7. http://code.google.com/intl/ru-RU/apis/maps/documentation/staticmaps/
8. http://code.google.com/intl/ru-RU/apis/maps/documentation/geocoding/
9. http://api.yandex.ru/maps/staticapi/
10. http://api.yandex.ru/maps/geocoder/doc/desc/concepts/About.xml
11. http://developers.sun.com/mobility/apis/articles/location/
12. http://www.servletsuite.com/geomessage/geomessages.htm