OLC

Открытый код местоположения (Open Location Code — OLC) — система геокодирования для определения области любой точки Земли[1].

Код был разработан в инженерном офисе Google в Цюрихе[2], и опубликован в конце октября 2014 года[3]. Коды местоположения, созданные системой OLC, называются «плюсовыми кодами», или «плюскодами».

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

Коды OLC получаются преобразованием координат широты и долготы, поэтому любая точка на Земле уже адресуется плюскодом[5]. По длине они похожи на телефонный номер — например, 849VCWC8+R9 — но зачастую сокращаются до четырёх или шести цифр в сочетании с наименованием местности (CWC8+R9, Mountain View). Расположенные рядом места имеют схожие коды. Их можно кодировать или декодировать в автономном режиме. Набор символов для кодирования кодов OLC составлен таким образом, чтобы исключить применение похожих на вид символов для уменьшения путаницы и ошибок, так же исключены гласные, чтобы исключить совпадение плюскода с существующими словами. Kоды OLC не чувствительны к регистру, поэтому их можно легко передать по телефону[6].

С августа 2015 года карты Google поддерживают коды OLC в своей поисковой системе[7]. Алгоритм находится под лицензией Apache License 2.0[8] и доступен на GitHub[9].

Google заявляет, что коды OLC принимаются в качестве почтовых адресов в Кабо-Верде[10], частях Калькутты[11] и в Навахо[12].

Спецификация

[править | править код]

Система открытого кода местоположения[13] основана на широте и долготе в координатах WGS84. Каждый код описывает область, ограниченную двумя параллелями и двумя меридианами фиксированной сетки, указывая широту, долготу и размер области. Самая большая сетка состоит из блоков 20 на 20 градусов (9 строк и 18 столбцов) и делится на подблоки 20 на 20 до четырёх раз. С этого уровня и далее деление происходит на подблоки 5 на 4. В таблице показаны блоки различных размеров, максимально приближённые к экватору. Ширина блока уменьшается с удалением от экватора.

Размеры блоков открытого кода местоположения
Длина кода 2 4 6 8 + 10 11
Размер блока 20° 0,05° (3′) 0,0025° (9″) 0,000125° (0,45″) 0,00003125° × 0,000025°
Примерная точность 2200 км 110 км 5,6 км 277 м 14 м 3 м
Примерная площадь возле широты 75° 1290 393 км² 3 226 км² 8 км² 20 162 м² 50 м² 3 м²
Примерная площадь возле широты 60° 2486 716 км² 6 217 км² 16 км² 38 855 м² 97 м² 5 м²
Примерная площадь возле широты 45° 3505 001 км² 8 763 км² 22 км² 54 766 м² 137 м² 7 м²
Примерная площадь возле широты 30° 4278 266 км² 10 696 км² 27 км² 66 848 м² 167 м² 8 м²
Примерная площадь возле широты 15° 4760 164 км² 11 900 км² 30 км² 74 378 м² 186 м² 9 м²
Примерная площадь возле экватора 4923 639 км² 12 309 км² 31 км² 76 932 м² 192 м² 10 м²

Полная сетка использует смещения от Южного полюса (-90°) и антимеридиана (-180°), выраженные в двадцатеричной системе счисления. Чтобы избежать неправильного прочтения или написания нежелательных слов, кодировка исключает гласные и символы, которые можно легко спутать друг с другом. В следующей таблице показано соответствие.

Кодировка открытого кода местоположения
Вес цифры двадцатеричной системы 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Обозначение цифры двадцатеричной системы 2 3 4 5 6 7 8 9 C F G H J M P Q R V W X

Код начинается с пяти пар цифр, каждая из которых состоит из цифры, представляющей широту, и цифры, представляющей долготу. Самые большие блоки состоят из двух цифр. После 8-й цифры код содержит знак «+» в качестве разделителя для облегчения визуального анализа. После 10 цифр в каждом подразделе подблоки кодируются одной цифрой кода следующим образом:

Разделение подблоков в открытом коде местоположение
долгота →
широта ↑ R V W X
J M P Q
C F G H
6 7 8 9
2 3 4 5

Области, превышающие 8-значный блок, могут быть указаны путем замены чётного числа конечных цифр перед знаком + на цифру 0, без указания символов после знака «+».

Рассмотрим, для примера, определение плюс-кода Мерлиона (N 1.286785, E 103.854503) в Сингапуре. Он расположен в области вокруг экватора, ограниченного −10° южной широты и +10° северной широты между 100° и 120° восточной долготы. Он смещен на 80° от Южного полюса и на 280° от антимеридиана, что соответствует 4 и 14 для первой пары цифр, по основанию 20 они кодируются как «6» и «P». Таким образом мы получили плюс-код «6P». Он может быть дополнен до 6P000000+.

Теперь уточним этот блок до подблока между 1° и 2° северной широты и 103° и 104° восточной долготы. Это добавляет 11° и 3° к юго-западному углу. Таким образом, вторая пара координат в двадцатеричной системе — «H» и «5». Результат дополнился до 6PH50000+.

После четырёх дополнительных уточнений парке Мерлион будет закодирован как 6PH57VP3+PR.

Следующий шаг требует от нас уточнения положения в сетке 4 на 5 и определения ячейки, на которую указывают координаты. Это ячейка с цифрой «6». Следовательно, итоговый открытый код местоположения: 6PH57VP3+PR6.

Типовое использование

[править | править код]

При использовании кода вместе с Google Maps или сайтом Plus.codes обычно пропускают первые 4 символа кода и добавляют приблизительное местоположение, например город, штат или страну. Таким образом, приведенный выше пример превращается в 7VP3+PR6 Singapore. Необходимо позаботиться о том, чтобы обозначение данного местоположения было достаточно маленьким, чтобы определить уникальное место. Картографические приложения могут использовать местоположение устройства для устранения неоднозначности сокращенных кодов.

Примечания

[править | править код]
  1. Plus codes. Plus.codes. Дата обращения: 3 ноября 2018. Архивировано 2 мая 2021 года.
  2. Open Location Code. Openlocationcode.com. Архивировано 1 марта 2018 года.
  3. See Open Location Code Github Архивная копия от 10 мая 2017 на Wayback Machine and Open Location Code forum Архивная копия от 4 мая 2021 на Wayback Machine.
  4. The Open Location Code website Архивная копия от 1 марта 2018 на Wayback Machine provides an overview. The document «An Evaluation of Location Encoding Systems» Архивная копия от 22 ноября 2019 на Wayback Machine provides a rationale.
  5. Specification: «Open Location Code: An Open Source Standard for Addresses, Independent of Building Numbers And Street Names» Архивная копия от 30 января 2016 на Wayback Machine
  6. Open Location Code: Addresses for everything, everywhere. Google-opensource.blogspot.ch. Дата обращения: 3 ноября 2018. Архивировано 17 августа 2016 года.
  7. Plus codes: A new way to help pinpoint places on the map. Google-latlong.blogspot.in. Дата обращения: 3 ноября 2018. Архивировано 6 марта 2016 года.
  8. google/open-location-code. GitHub.com. Дата обращения: 3 ноября 2018. Архивировано 25 октября 2020 года.
  9. google/open-location-code. GitHub.com. Дата обращения: 3 ноября 2018. Архивировано 4 мая 2021 года.
  10. Redirecting. Дата обращения: 7 мая 2021. Архивировано 7 мая 2021 года.
  11. Plus Codes | Addressing in Kolkata. Дата обращения: 7 мая 2021. Архивировано 7 мая 2021 года.
  12. "The Navajo Nation is getting addresses, thanks to an open-source mapping program used in urban India". The Salt Lake Tribune. 2019-10-25. Архивировано 6 мая 2021. Дата обращения: 7 мая 2021.
  13. google/open-location-code. GitHub. Дата обращения: 3 ноября 2018. Архивировано 30 января 2016 года.