Как стать автором
Обновить

Комментарии 31

А принцип записи? Арифметическое кодирование?
Ничего необычного, просто преобразование двух 7-8-мизначных чисел (широта+долгота без запятой) в десятичной системе в два 3-хзначных числа в 36-ричной системе (26-букв английского алфавита + 10 цифр). В одном городе коммуналищики в штрихкододе на квитанциях использовали.
Видимо было запатентовано, но продажи стали падать — вот и привлекают внимание.
Как такое запоминать? Если улицы и города несут смысловую нагрузку, тут черт-те что.
а их не надо запоминать, их надо вводить в навигатор и это было бы удобнее ввести, чем обычный адрес.
Оке. Мне нужно ввести в навигатор: Москва, Ленина 1. Чтобы найти короткое обозначение этого адреса, мне нужно найти короткую запись этого адреса, следовательно мне нужно ввести в поиск по базе коротких записей: Москва, Ленина 1, потом ввести в навигатор короткую запись?
В силу малого распространения этих кодов, да, двойная работа. С другой стороны, если сразу вместо адреса назовут mapcode, вам было бы удобно забить его в навигатор. Например, если компании на странице «контакты» своего сайта начнут указывать mapcode вместе с обычным адресом.
В который раз убеждаюсь что все гениальное просто. Что может быть проще двух длинных чисел, представляющих широту и долготу? Оказывается, короткая символьная строка в 36-ричной системе:)
А знаки пунктуации? а непечатные символы (\n \r \t ...)? «И создал Он слово, и было оно восемь бит, и увидел Он, что это хорошо» (с)
Есть гораздо более интересный сервис what3words, который дает запоминабельные адреса вроде «дилер.кошка.подбородки»
Они переизобрели Британский Postcode?

Кстати если что, у посткода бывают ещё последние две цифры, идентифицирующие помещение. Но не все о них знают.
А где можно почитать про Британский Postcode?
en.wikipedia.org/wiki/Postcodes_in_the_United_Kingdom

Точнее не скажу. Но вообще, здесь всё на них завязано. Можно не знать своего адреса, тем более, что вместо корпусов и номеров домов часто имена собственные, а разметка на районы часто меняется, но индекс каждый знает наизусть.
Ох, уже эти технологии по мотивам антиутопий)
Весной 145-го, когдa Чипу было десять лет, ему с родителями и с сестрой было предостaвлено путешествие в ЕВР 00001, экскурсия нa УниКомп…
Пaпa Джaн рaботaл глaвным координaтором стройки в ЕВП 55131, в двaдцaти километрaх от 55128, где жилa семья Чипa.…
Другие дедушкa и бaбушкa, по отцу, жили в МЕК 10405…
В 146 году Чипa и его семью вместе с большинством жителей их домa перевели в АФР 71680…
Кнопкa ответa былa прижaтa сувенирным пресс-пaпье из РОС 81655...
Рекомендуется всё же указывать адрес вместе со страной.

Похоже, это не «рекомендуется», а обязательно ("...is sufficient as long as it is clear what country or state the mapcode belongs in. "). А для больших стран — ещё и с районом.

В частности, «18.JQZ» в контексте Голландии — это 52.396547, 4.600973, в контексте «Россия, Москва» — это 55.864236, 37.220438.
Если контекст не указать, он выставляется в default country (причём для разнообразия это не США, а Голландия).
Изобретатели велосипедов блин. Лучше бы изобрели стандартный линк типо как mailto который при тыку на него предложит открыть любой картографический сервис на выбор (или по дефолту) и тогда можно будет его бросать хоть по смс, хоть по почте, да как угодно и без проблем открыть на любом устройстве. Как это сейчас работает с гиперссылками простыми.
Да уже изобретено всё:
Geo URI (RFC 5870). (Правда я не встречал ещё чтобы он использовался, да и браузеры не поддерживают вроде).
— Сервис GeoHack (с помощью него сделаны геоссылки в википедии) — пример
Вот вот, еще бы ими пользовались.
НЛО прилетело и опубликовало эту надпись здесь
Все же JC.B4J выглядит немного лучше чем 55.75,37.616667 на мой взгляд.
Со странами сейчас проблемы, поэтому чистое преобразование координат было бы оптимальным
Со странами вообще чуть ли не каждый год какие-нибудь проблемы (вспомним, например, появление Южного Судана в 2011 году), так что создатели Mapcode совершенно напрасно сделали указание страны его частью.

Ну что мешало им ограничиться одними только географическими координатами места?

Дурачьё, позор.
Причина для этого понятна. Таблица стран поддерживается неким Mapcode Foundation и свободна для использования.
Почему вы не потрудились описать принцип кодирования, хотя бы вкратце? Не говоря уже о каком-то анализа плюсов-минусов.
Помню ваши прошлые статьи и не узнаю вас.
Для повседневного использования не хватает избыточных данных. А то можно ошибиться в одной букве и заехать в ебеня.
Попробовал, не сильно удобно. Например, для московского адреса нужно еще и город указать. Укажешь только страну — получишь не то. Да и указав город, получаешь точку в двустах метрах от искомой. Кафе по gps так не найдешь.
Уже было примерно то же самое. Геохеш состоит из буквоцифр и может быть произвольно длинным/коротким. en.wikipedia.org/wiki/Geohash Не пошло.
Позвольте порекомендовать такую редакцию:

состоит из буквоцифр и может быть произвольно длиннокоротким
«For example, the coordinate pair 57.64911,10.40744 (near the tip of the peninsula of Jutland, in Denmark) produces a slightly shorter hash of u4pruydqqvj»
В mapcode это будет всего лишь «Denmark TMD.6RC», либо «WJD0Q.V03F» без указания страны. 9 знаков вместо 11 (не считая точки). Шестибуквенный код + страну можно даже диктовать по телефону, и стандарт позволяет использовать, например, кириллицу вместо латиницы (т.е. никаких эс как доллар).
Вы пропустили «длинным/коротким». Хотите точнее, будет u4pruydqqvjnsd4ns, хотите как в мапкод, будет U4PRUYDQ (это уже всего ±20м!). Там же в статье всё есть, и про длину, и про точность.

И про кириллицу мне тоже понравилось, весь мир будет счастлив.
Попробовал переплюнуть и сделать своё на коленке, но чтоб было не хуже — чтобы можно было обрезать адрес в любом месте (т.е. уточнять местоположение по мере набора), чтобы не было искажений с увеличением широты, и чтобы, возможно, запись получилась короче:

  1. Преобразовал широту и долготу в NESTED-индекс HEALPix с Nside=223 (точность ±0.5 м)
  2. Разделил индекс на компоненты, где первый компонент — номер грани (от 0 до 11), а остальные (от 0 до 3) — «уточняющие» номера квадратов внутри сетки
  3. Записал компоненты последовательно:
    1. Номера граней от 0 до 7 — как 0000b...0111b
    2. Номера граней от 8 до 11 — как 100b...111b
    3. Каждый последующий компонент от 0 до 3 — просто два бита
  4. По мере формирования, записывал base36:
    1. Если первый бит — 0, то последующие пять битов — знаки алфавита от 0 до 31
    2. Если первый бит — 1, то последующие два бита — знаки алфавита от 32 до 35

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

Получились такие результаты для длины хэша в 10 знаков
  • Простой base36: 3FK8F;MB1K, точность ±0.6 метров
  • Geohash: u4pruydqqv, точность ±0.6 метров
  • MapCode: WJD0Q.V03F, точность ±5 метров
  • Моя схема: 3yyyvw9mxz, точность ±7 метров

Не удалось :C
> Вместо «страна, регион, город, улица, дом» и вместо длинных цепочек цифр-координат — что-нибудь типа короткого url.

Вы путаете географические координаты, и адрес, скажем, проживания человека. Человек не живет по координатам, письмо тоже доставляют не по координатам, а именно — по адресу в виде «страна, регион, город, улица, дом, квартира».

MapCode ни разу не решает задачу кодирования адреса, как Вы написали. Она кодирует координаты, притом с привязкой к стране (??!!! ой, когда страны меняют названия, распадаются — что с адресами будет?), притом не передавая подробностей, как внутри точки что-то найти (как указать, грубо говоря, «кабинет 15»).

Привязка к локали… Это треш из треша. Можно указать страну (не номером из списка, чтобы было универсально для любого жителя Земли), а в виде вариантов:

1. нет локали = это таки определенная страна, Голландия, так сказать, «центр мира»
2. Локаль есть, но она может быть сокращена (DC = Округ Колумбия, но он же может быть указан как US-DC, если сообщать адрес внешним для Америки людям)
3. Локаль указана в виде страны кратко (RU), полностью (Russia)

В общем, тупая схема, ни универсальности, ни надежности.

Что мешало сделать то же самое, но с кодирование в масштабах мира — не понимаю. Ладно Том-Том, у них привязка идет от карт, что разрешены в навигаторе, но принимать это как стандарт?!
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации