Дуже просто про геокодування

geocoders

Будь-який географічний об’єкт (або більш абстрактно розташування) має опис. Такий опис може бути представлено по-різному для різних об’єктів. Так, для будівель опис практично в обов’язковому порядку включає адресу. Для опису географічних об’єктів, таких як озера і гори, буде досить назви з довідника географічних назв. Географічні координати так само є частиною опису об’єкта.

Процес перетворення опису об’єкта в його відображення на земній поверхні називається геокодування. Результатом геокодування є об’єкт або група об’єктів карти з атрибутами. Атрибути обов’язково включають в себе географічні координати. Так само часто, але не обов’язково, атрибути містять назву об’єкта, адресу, інформацію про адміністративне підпорядкування.

Зворотній процес – витяг описової інформації з об’єкта карти – називається зворотнім геокодування. Зазвичай результатом такого процесу є текстова інформація в заздалегідь обумовленому форматі.

Діапазон, для якого використовується геокодування, досить широкий. Однак часто під геокодуванням мають на увазі пошук географічних координат для заданої адреси або назви місця. Під зворотнім геокодування так само мають на увазі перетворенням географічних координат на адресу.  У даній статті геокодування здебільшого буде розглядатися саме в цьому вужчому контексті.

Як ми казали раніше, різні об’єкти можуть володіти різним набором описових характеристик. Об’єкти так само можуть бути частиною набору даних з обмеженою сферою застосування. Для розуміння процесу геокодування буде змодельовано процес пошуку конкретної адреси.

 

Завдання: знайти будівлю за адресою вулиця Шишківська, 17, Шишківка, Харків, 61070, Україна

Якщо на руках є точна карта вулиць і будинків необхідного району міста, знайти потрібну адресу не складе особливих труднощів.
Якщо є докладний атлас потрібного міста, то для початку доведеться звернутися до переліку вулиць, щоб знайти покажчик на необхідну сторінку, після чого відшукати на ній потрібні вулицю і номер будинку.
У тому випадку, якщо в наявності є тільки політична карта світу, визначити місце розташування точніше, ніж місце положення зазначеного міста не вдасться.

З цікавості припустимо, що у нас є всі необхідні карти і атласи для пошуку будь-якої адреси в світі. У кожної карти і атласу є своя сфера застосування. Наприклад, ніяк не вдасться відшукати задану адресу, маючи на руках лише карту Аляски. Для початку доведеться розібрати адресу на складові компоненти.

Звернемося до політичній карті світу – ця карта охоплює всю поверхню Землі, тому адреса, яку ми шукаємо, гарантовано потрапляє в сферу застосування цієї карти. У списку країн ми знайдемо збіг по слову Україна.

Тепер область пошуку може бути звужена до конкретної країни. Далі з адреси можна виключити назву країни і провести пошук інших компонентів. Область пошуку буде поступово звужуватися: спочатку буде знайдений місто Харків, потім район Шишківка, потім задані вулиця і будинок. Якби ми заздалегідь знали, де саме в заданій адресі знаходиться поштовий індекс, можна було б звернутися до карти поштових індексів і відразу звузити область пошуку до конкретного регіону, де був би проведений пошук вулиці і будинку.

Іншими словами, як тільки область пошуку була звужена до мінімальних розмірів, можна говорити про те, що пошук завершений. Якщо ж не вдалося знайти будинок, то результатом пошуку буде успішно знайдена вулиця. Якщо не вдалося знайти вулицю – район міста або місто. Пошук буде повертати найменшу успішно знайдену єдиницю карти. 

 

Машинний алгоритм, який виконує ці дії називається геокодером.

Геокодер приймає від користувача запит і повертає йому результат. В якості запиту можуть бути надані географічні координати, адреса, назва або будь-яка інша інформація. Залежно від запиту, відповідь буде представляти об’єкт карти (пряме геокодування) або текстовий опис цього об’єкта (зворотнє).

Для зіставлення географічних координат і опису місцевості в процесі геокодування зазвичай використовуються бази даних. Такий підхід забезпечує зручне зберігання даних і швидкий доступ до них геокодером. Для невеликих територій допускається зберігання даних в окремих файлах.

Існує безліч сервісів геокодування. Серед них зустрічаються локальні, що діють на території певної країни, або ж і зовсім в межах конкретної місцевості чи окремо взятого будинку. Найбільш популярні сервіси геокодування, що діють по всьому світу:

  • OpenStreetMaps
  • Google Maps
  • Yandex Maps

Загальні рекомендації по використанню цих сервісів можна виразити таким чином:

  1. Якщо потрібно провести геокодування у великому місті (столиця, обласний або районний центр), слід подивитися в бік геокодерів від великих фірм: Google, Yandex
  2. Для країн центральної та західної Європи Google Maps часто пропонують найбільш коректні результати
  3. Yandex Maps досить добре покривають всі країни східної Європи і країн СНД. У більшості випадків геокодування буде успішним навіть в найменших селах.
  4. Чим менший населений пункт – тим менша ймовірність, що він буде добре покритий сервісами. У разі, якщо інше покриття відсутнє або залишає бажати кращого – варто звернутися до OSM.