Создавая карту мира

93a39d607b814d85b017cde25f94b748.jpgПодробная и точная карта мира является для нашей компании одним из краеугольных камней. Это основа, точка отсчёта, своеобразное начало координат. Поиск и выбор жилья нашими пользователями начинается именно с анализа нашей карты. И несмотря на обилие картографических сервисов, существующих в мире, нам всё же пришлось в своё время создавать свою собственную карту.Нашего единственного штатного картографа зовут Зак Уокер (Zach Walker). Он отвечает за формирование карты, нанесения всевозможных объектов и границ. Почему же мы пошли по пути наибольшего сопротивления и развиваем собственную карту, вместо того, чтобы адаптировать под себя одно из существующих решений?

Всё дело в AT-AT. Это программный инструмент, который мы разработали для создания схемы взаимосвязей локаций, их влияния друг на друга. Выглядит это так:

201b09dc40ef4c398f7451304798e9ff.gif

Нас постоянно интересует, как люди делают выбор, рассматривая места на карте, где они никогда в жизни не бывали? Как они их себе представляют? Как вы выбираете идеальный маршрут путешествия и место для проживания, глядя на одну лишь карту?

Текущие решенияСо своей стороны, мы стараемся помочь нашим пользователям несколькими разными путями: Когда вы ищете жильё, то, тем самым, помогаете нам улучшить алгоритм подбора оптимальных мест. Соответственно, будущим пользователям он может предложить ещё более соответствующие их вкусам варианты. Когда вы выбираете места, которые хотели бы посетить, наш гид по районам компонует редакционный контент с отобранной вручную необходимой информацией об этих местах, и добавляет профессиональные фотографии. Такие подборки позволяют гораздо полнее узнать об интересующих вас уголках планеты не вставая с кресла. Наша исследовательская команда разрабатывает сложные алгоритмы машинного обучения и обработки информации на различных языках, чтобы в автоматическом режиме собирать информацию из обзоров, листингов и поисковых шаблонов. Это позволяет нам гораздо точнее угадывать пожелания пользователей и предлагать более релевантные подборки вариантов для проживания. Мы предлагаем пользователям всевозможные советы и рекомендации от владельцев жилья. Всё вышеперечисленное призвано помочь путешественникам узнать те или иные места не только с «туристической» точки зрения, не однобоко. Ведь шаблонные обзоры и путеводители обычно дают очень узкое и поверхностное представление о странах и городах.

45761b32e2af43c8ae340aec1867a631.jpgЗелёным выделены традиционные «туристические» места проживания, красным — жильё из базы Airbnb.

Конечно, наша главная задача заключается в том, чтобы предложить пользователю именно те места для проживания, которые лучше всего удовлетворяли бы его пожеланиям. С другой стороны, нам нужно как-то выделить миллионы уникальных листингов, размещённых на нашем сервисе хозяевами по всему миру.

Что дальше? Гид по районам будет полезен только в том случае, если вы ищете идеальное место для проживания. Но на карте не обозначены многие районы, интересные с точки зрения культуры и истории. И не потому, что у нас не доходят руки, просто обычно такая информация известна лишь местным жителям. Причём под «районом» мы подразумеваем не административную городскую единицу. В данном случае районом может быть часть города, расположенная вдоль дороги, пересекающей три «классических» района. Или это может быть конгломерат из нескольких «классических» районов.В обязанности Зака Уокера как раз и входит поиск и нанесение на карту подобных мест, чьи границы очерчены именно по культурно-контекстному принципу, а не административно-территориальному. Для этого Зак изучает различную историческую информацию, расспрашивает местных жителей и переписывается с владельцами жилья. Так что, когда пользователь вводит запрос по какому-то региону, ему предлагаются варианты из разных частей этого региона, а не только самых популярных.

Когда мы приступили к разработке этого механизма, то выяснилось, что наша текущая архитектура и инструментарий не позволяют внедрить подобный функционал. Так мы пришли к необходимости создания вышеупомянутого AT-AT.

Проект AT-AT Нам нужен был инструмент, облегчающий задачу нанесения на карту подобных районов. Кстати, название AT-AT позаимствовано из «Звёздных войн», если помните, так назывались шагающие танки.3679852bba5545ad93fede6b623b5d66.jpg

Схематически состав АТ-АТ можно представить следующим образом:

29c5b32abdb644aaa2116a9330821f9a.jpg

В первую очередь, нам нужно было обобщить существующую систему, чтобы она смогла обрабатывать различные географические полигоны (континенты, регионы, страны, области, специальные районы, маленькие городки и деревни), а не только мегаполисы и административные районы.

bec5a18d151f449585da514ad96609c3.gif

Взаимосвязи d8849ee148134c67baaccf16a0440196.jpgПосле того, как полигон создан, бэкэнд вычисляет:

Родительские полигоны более высокого класса: полигоны, содержащие этот полигон (Сан-Франциско содержит в себе район SoMa). Соседние полигоны того же класса: имеющие общую границу или частично накладывающиеся (района SoMa и ярмарка Folsom Street). Широту и долготу центроида полигона. Навигация Управляться с картой, заполненной всевозможными районами, может быть слишком тяжело. Опытным путём мы пришли к различным режимам отображения, при которых рабочий интерфейс становится прозрачным.Наши разработчики даже сформировали негласные внутренние правила при работе с AT-AT:1) Не ломай кнопку «назад»2) Рендери только то, что необходимо3) Отображай информацию по мере надобности4) Уйди с дороги!

При одиночном клике мыши выбирается полигон и рендерятся только соседние полигоны:

0a0da8121ad748e49f5accc9c545cd82.gif

А при двойном клике происходит фокусирование на выбранном полигоне:

74788ad629a04dde8c81f860ca583f75.gif

Заключение Очевидно, что в работе над таким сложным проектом, как сервис Airbnb, приходится использовать различные внутренние инструменты. АТ-АТ лишь один из многих, он облегчает первичную задачу по нанесению на карту районов, которые потом используются другими нашими сервисами и инструментами. И, создавая свои собственные вспомогательные инструменты для работы над какими-то большими проектами, не забывайте, что невозможно предсказать все будущие сценарии использования.006bd52e838241a2ba404aa1321ad86a.jpg

© Habrahabr.ru