Алексей Лобанов — Как создаются Яндекс.Карты

Preview:

DESCRIPTION

Когда мы говорим «Яндекс.Карты», то имеем в виду не только отображение карт, но и ряд сопутствующих сервисов, которые помогают лучше ориентироваться в окружающем мире: маршруты, пробки, спутниковые снимки, панорамы улиц и многое другое. За тем, что видно снаружи, стоит множество данных и процессов, обеспечивающих работу сервиса. В докладе рассказано о том, как создаются Яндекс.Карты и с какими сложностями сталкиваются их разработчики.

Citation preview

Алексей Лобанов, разработчик

Я.Субботник, Минск, 31 августа

Как создаются Яндекс.Карты

2 Яндекс.Карты

3 Геоинформационные сервисы

Спутниковые снимки

Исходные спутниковые снимки

Привязка снимков к карте

5 Спутниковые снимки

6

Исходных данных много

Миллионы квадратных километров

Сотни терабайт исходных данных

Миллиарды тайлов

Сотни тысяч отдельных мозаик тайлов

7

Данные не всегда качественные

Недостаточная точность привязки

Искажения

Дымка, размытость, облачность и т.п.

8

Привязка спутниковых снимков

9

Привязка спутниковых снимков

10

Привязка спутниковых снимков

Создание карты

Оцифровка карты

Наложение дизайна

Задача о расстановке подписей

12

Оцифрованные данные

• Геометрия –точка

–линия

–участок площадь

• Атрибуты –Название

–Тип

–Категория дороги

–Адрес

13

Редактирование данных

Большой объём данных

Одновременные правки

Отслеживание изменений

14

Редактирование данных

Готовые инструменты не подходят

Собственный редактор геоданных

15 Фрагмент слоя улиц без дизайна

16

Наложение дизайна

17

Отрисовка карты

На карте порядка 109-1010 объектов

Рисовать тайлы нужно быстро

Карта не должна быть перегружена

информацией

18 Расстановка подписей

19

Расстановка подписей

Объект может быть подписан разными

способами

Подписи имеют различный вес

Подписи не должны пересекаться

Дополнительные ограничения

20

Расстановка подписей

Задача о максимальном независимом

множестве

NP-трудная задача

Решается с помощью эвристик и

приближений

Публикация данных

22

Подготовка данных для сервисов

• Исходные данные –имеют разные форматы

–большой объем

• Нужно сгенерировать данные для сервисов –Пробок

–Маршрутизации

–Поиска

• Сеть, железо, ПО могут выходить из строя

• Обновляться нужно часто

23 Фрагмент графа задач подготовки данных

24

Система подготовки данных

• Система распределенных вычислений

• Граф зависимостей задач

• Задачи используют разные инструменты –Бинарники на C++

–SQL

–MapReduce

• Система раскладки данных

Маршрутизации

26

Рост графа для маршрутизации

Иерархический алгоритм

Обновление пробок

Ситуация на дорогах меняется

Нужно уметь обновлять граф раз в

несколько минут

29

Заключение

Алексей Лобанов

Разработчик

allobanov@yandex-team.ru

Спасибо

Recommended