Проверка соответствия адреса указанному почтовому индексу до оформления заказа
Несовпадение почтового индекса и города в форме заказа выглядит мелкой опечаткой, пока не превращается в доставку совсем в другую часть страны.
Во время погодной чрезвычайной ситуации сведения о том, где нужна помощь и где она доступна, поступают быстро и без всякого единого формата. Региональная группа координации помощи собирала адреса убежищ, пунктов раздачи припасов и сообщения о людях, которым нужна помощь, от волонтёров, писавших в сообщениях любое описание, какое приходило в голову: перекрёсток, ориентир, неполный адрес, координаты, скопированные из картографического приложения на телефоне.
Ничего из этого нельзя напрямую нанести на общую карту без единого формата в основе. Группе координации нужно было привести каждое входящее сообщение к одному виду, паре координат, независимо от того, в каком виде оно поступило. Сообщения в виде текста, адреса или достаточно близкого к нему описания, проходили через /v1/forward для поиска местоположения. Сообщения в виде координат, скопированных из функции отправки геопозиции на телефоне, проходили через /v1/reverse, чтобы получить понятный адрес и административную единицу. Это позволяло показывать волонтёрам простое описание места, а не голую пару чисел на карте.
Когда каждое сообщение было приведено к координате, нанести их все на одну общую карту стало просто, а главное, их стало можно сравнивать: пункт снабжения и заявку о помощи можно было соотнести по реальному расстоянию. Это было крайне важно для эффективного направления волонтёров, вместо того чтобы угадывать близость по текстовым описаниям, которые явно друг с другом не соотносились.
Группа организовала всё через простую форму приёма сообщений, а не что-то более сложное, поскольку во время активных работ приоритетом были скорость и простота, а не отделка. Волонтёру, отправлявшему сообщение, не нужно было знать или думать о том, какой эндпоинт обрабатывает его формат данных: форма сама решала это, смотря, похоже ли сообщение на текст или на координаты, и оба пути заканчивались одной и той же нормализованной точкой на общей карте.
Качество совпадения здесь было важнее, чем в большинстве других применений геокодирования, ведь сообщение во время чрезвычайной ситуации, привязанное к неверному месту даже на небольшом расстоянии, может направить помощь не туда именно в тот момент, когда это важнее всего. Форма приёма показывала уверенность совпадения, возвращённую вызовом прямого геокодирования, непосредственно тому, кто просматривал входящие сообщения, поэтому совпадение с низкой уверенностью быстро проверял человек, прежде чем ему доверяли и действовали по нему, а не наносили на карту с той же кажущейся определённостью, что и чёткое совпадение.
Для всего этого не понадобилось специализированное программное обеспечение для управления чрезвычайными ситуациями. Группа координации запустила форму приёма на уже имевшейся инфраструктуре, добавив геокодирование как единственный недостающий элемент, благодаря которому неструктурированные описания мест от волонтёров превратились в то, что общая карта могла показать и сравнить.
Объём запросов во время активных работ резко и ненадолго возрастал, и под такую картину сложно заранее спланировать фиксированный бюджет. Бесплатная дневная квота покрывала обычное планирование и подготовку между событиями, а предоплаченный баланс поглощал всплеск во время реальных работ, не требуя от группы переходить на более крупный постоянный тариф, который большую часть года был бы не нужен.
Документация по обоим эндпоинтам находится по адресам /docs/forward-geocoding/ и /docs/reverse-geocoding/.