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

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

Очень интересное исследование, с удовольствием полистал… Оптимизация во всей красе!
… но зачем они воткнули 44 кадр? :)
«if you fan read this message you can get good job with hight pay»
Это как буквы в алфавите, 50% которых можно удалить из текста, и от этого текст не потеряет смысловой нагрузки.

А на слайде написано: If you can read this message you can get a good job with high pay.
if u cn rd ths msg u cn gt a gd jb w hi pa
Это я понял и уже написал в сообщении — просто выделите его :) Я теперь хочу эту работу :)
Угу и делалась параллель на карту мира, мол, можно хранить сеточку
А свои разработки они выложили в OpenSource?
Ребятам из OpenStreetMap такие разработки пригодились бы.
MapBox выкладывает большинство своих разработок, да и сами они используют много из того, что используется и изначально писалось для OpenStreetMap. В частности, насколько я понимаю, рендеринг у них осуществляется с помощью Mapnik, как и на главной OSM. А описанная технология экономной генерации очевидна и используется подобными проектами уже давно. Так что доклад больше для пиара Mapbox Streets и MBTiles сделан.
Я что-то тоже не понял, что такого экстраординарного, сам же osm живёт как-то и карты там более красочные.
Еще в 2010 году я реализовал такую вещь как векторные тайлы, которая сейчас используется в YarMap на iOS и Android. Внутри тайлов лежат vertex и index буферы с геометрией. Минимальный размер тайла в таком случае 56 байт, либо если брать за основу цвет воды для фона рендера, то размер также сведется к 0 байт для мирового океана.
С набирающей популярность WebGL, такие тайлы можно вставлять и в браузер. И это значительно снизит нагрузку на сервера.
Плюс к этому не надо качать новые картинки с выделенными объектами. Достаточно просто подменить цвет вершин.
Также имеется поддержка полного 3D и ландшафтов.
скрин1
скрин2
скрин3
а как вы режите 3D геометрию по тайлам? Появляются ли дополнительные точки на месте срезов по границам тайла?
В случае домов я пишу дополнительно к каждому дому высоту в этажах, на границах тайлов для них делаю срез без дополнительных точек. Затем в реалтайме исходя из этажности достраиваю стенки, крышу сверху и обводку линиями.
В случае с ландшафтом я использую карту высот, на границах тайлов точки расположены в одинаковых позициях.
скрин
Сверху ложится либо текстура, либо раскрашиваем вершины.

Как показала практика, данный метод работает быстрее чем 2gis на iOS(iPhone 2G, 3G, 4) ну и на Android(asus transformer prime).
а какой у вас максимальный объем тайла получается при таком подходе? В центре города например где-нибудь.
При размере тайла 512 на 512, объем в районе 50кб, есть и по 10кб, и по 5кб. Тут нужно еще учесть что тайлы включают в себя не только vertex и index буферы, но и информацию для поиска выделенного объекта, раличные подписи и т.д.
Также можно добавить gzip сжатие, вследствии чего получим еще меньший объем.
Ну вообще говоря размер векторных тайлов всё-таки больше, т.к. png очень хорошо жмётся.
Про разрез: при хранении используются целые, как я понимаю? И при разрезании округляется к целым? Проблем с непрямыми линиями нет?
Минусы растровых тайлов
1) На png не сделаешь полного 3D
2) Не выделишь дом и т.д.
3) При загрузке в память, как не крути, у тебя получится 512 * 512 * 4 байт = 1МБ
4) Не сделаешь локального хранилища всей карты, просто не хватит места
думаю можно найти и еще

в vertex буферах float, сами тайлы в целочисленых координатах: 0, 512, 1024…
никаких проблем не возникло
эксперимента ради попробовал ужать мои тайлы через lzma
тайл размером 67 809 байт -> 25 952 байт
либо сразу 70 тайлов общим объемом 3 445 878 байт -> 1 185 601 байт

как видно, у меня тоже все круто жмется)
Отличный подход, прямо как у Google с WebGL картами!
Жду с нетерпением программы для всего мира на Android, а не только ваш Красноярск. Потому что сейчас под андроид есть либо хороший, но медленный 2gis со своими не-osm данными (он без аппаратного 3D, поэтому такой медленный), либо очень медленный osmand, который по секунде и более рендерит 2D картинку.
Поэтому либо кто-то к быстрому движку google maps или yandex navigator прикрутит osm данные, либо вы напишете свой аналог быстрых 3D карт.
2gis на Galaxy S2 летает, проблема в телефоне :)
На galaxy s не летает.
У всех разные понятия «летает». У меня всё что ниже 60fps «не летает», хотя других устраивает.
А если серьёзно, то в iphone-версии GL, для Android 2.2+ — в планах.
А еще можно клиенты напрячь для рендеринга тайлов.
Если тайл уже есть в базе — отдаем его клиенту, если нет
1. Отдаем клиенту часть вектора
2. Клиент рендерит
3. Клиент отрисовывает отрендеренный тайл
4. Клиент возвращает отрендеренный тайл серверу

Более того, можно, с согласия клиента, напрягать его рендерингом других, не запрошенным им тайлов для общего блага.
И обязательно найдется клиент, который захочет как результат рендеринга отдать какуюнибудь каку.
Для этого вводится избыточность: если допустим 10 разных независимых клиентов вернули один и тот же тайл с одинаковым хешем, значит с большой долей вероятности можно утверждать, что он достоверен и не содержит ошибок или глупостей и его можно утверждать.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории