Открытый код местоположения — это технология, которая позволяет кодировать местоположение в форме, более простой в использовании, чем широта и долгота. Генерируемые коды называются плюсовыми кодами, поскольку их отличительным признаком является наличие в них символа «+».
Технология предназначена для создания кодов, которые можно использовать вместо уличных адресов, особенно в местах, где здания не пронумерованы или улицы не названы.
Плюсовые коды представляют собой область, а не точку. По мере добавления цифр к коду область сжимается, поэтому длинный код более точен, чем короткий.
Сходные коды расположены ближе друг к другу, чем разные коды.
Местоположение можно преобразовать в код, и этот (полный) код можно преобразовать обратно в местоположение полностью в автономном режиме, без каких-либо таблиц данных для поиска или необходимости использования онлайн-сервисов.
Коды можно сокращать для облегчения связи, и в этом случае их можно использовать на региональном уровне или в сочетании со ссылочным местоположением, о котором должны знать все пользователи этого короткого кода. Если опорное местоположение задано в виде названия местоположения, для восстановления исходного местоположения может потребоваться использование службы геокодирования.
Алгоритмы
являются общедоступными и могут использоваться без ограничений. Сервисы геокодирования не являются частью технологии Open Location Code.
Коды состоят из последовательности цифр, выбранных из набора из 20. Цифры в коде чередуются между широтой и долготой. Первые четыре цифры описывают область в один градус широты и один градус долготы, выровненную по градусам. Добавление к коду еще двух цифр уменьшает площадь до 1/20 градуса на 1/20 градуса в пределах предыдущей области. И так далее – каждая пара цифр уменьшает площадь до 1/400 от предыдущей площади.
Например, здания парламента в Найроби, Кения, расположены по адресу 6GCRPR6C+24. 6GCR — это область от 2°ю.ш.36°в.д. до 1°ю.ш.37°в.д. PR6C+24 представляет собой территорию шириной 14 на 14 метров на территории 6GCR.
Символ «+» используется после восьми цифр, чтобы разбить код на две части и отличить коды от почтовых индексов.
Будут места, где 10-значный код недостаточно точен, но его уточнение в 20 раз будет i) излишне точным и ii) потребует расширения кода на две цифры. Вместо этого после 10 цифр область делится на сетку 4x5 и одну цифру, используемую для обозначения квадрата сетки. За один шаг уточнения сетки площадь уменьшается примерно до 3,5x2,8 метра.
Коды можно сокращать относительно местоположения. Это уменьшает количество цифр, которые необходимо запомнить, за счет использования местоположения для определения приблизительной области, а затем генерации ближайшего соответствующего кода. При сокращении кода, если это возможно, в начале кода будут удалены четыре или более цифр. Степень сокращения кода зависит от близости эталонного местоположения.
Если опорное местоположение получено из названия города или города, это зависит от точности службы геокодирования. Хотя один сервис может разместить «Цюрих» рядом с офисом Google, другой может переместить его на сотню метров и более, и этого может быть достаточно, чтобы предотвратить восстановление исходного кода. Вместо объекта большого размера для создания опорного местоположения лучше использовать меньшие объекты окрестностей, результаты геокодирования которых не будут сильно различаться.
Рекомендации по сокращению кодов можно найти в вики.
Восстановление сокращенных кодов осуществляется путем предоставления короткого кода и ссылки на местоположение. Это не обязательно должно быть то же место, что и место, использованное для сокращения кода, но оно должно быть рядом. Сокращенные коды всегда включают символ «+», поэтому недостающий компонент легко вычислить.
В подкаталогах содержатся примеры реализаций и тесты для разных языков. Каждая реализация предоставляет следующие функции: