Карта в браузере: путь от спутникового снимка до...
-
Upload
tech-talks-nsu -
Category
Software
-
view
82 -
download
3
Transcript of Карта в браузере: путь от спутникового снимка до...
Путь карты от спутникового снимка до пользователя
Илья Таратухин, 2ГИС
План● Терминология● Сбор и подготовка данных● Backend● Frontend
Терминология
ТерминологияКарты
● растровые● векторные
ТерминологияГеообъекты:
● точечные● линейные● площадные
ТерминологияГеокодирование
● прямое (объекты)● обратное (координаты)
ТерминологияAPI карт - Библиотека для работы с картографическими данными
● Тайлы● Слои (overlay)
○ Маркер○ Балун (каллаут)○ POI
● Проекции
ТерминологияСистемы координат (проекции)
● Географическая● Проекция меркатора (UTM, эллипсоид WGS84)
○ Проекция EPSG:3857 (тайлы)○ Проекция EPSG:4326 (данные)
Сбор и подготовка данных
Сбор и подготовка данных● Спутниковые снимки● Выверка пешими специалистами● Обзвон компаний● GPS треки
Как стать самым востребованной ГИС?
Актуальность и полнота данных!
Backend
BackendЗадачи бекенда
● прямое и обратное геокодирование● поиск точек интереса (POI)● отдача статики
BackendИнструменты для работы с динамическими данными
● Большой комбайн за деньги● Дайте OpenSource, яжпрограммист
BackendИнструменты для работы с динамическими данными
● PostgreSQL + PostGIS● MySQL + Spatial Data● Можно написать свои
BackendПроблемы статики
● файлов много● файлы маленькие (1-15кб)● на файловой системе хочется положить много файлов рядом● файлов реально много (68 719 476 736 на zoom 18)● очень много маленьких файлов, которые занимают места меньше
размера кластера, просят указатель и которые хочется положить в один каталог
BackendИнструменты для работы со статикой
● Распределенная ФС (например Ceph)● Squashfs● NoSQL (MongoDB + MongoFS)● Nginx + ФС
BackendРаздать статику с помощью FS? Реализуемо!
● отключаем журналирование● уменьшаем размер кластера● разворачиваем пути, например /z/x/y.png можно разложить в /hash[4]
/hash[3]/hash[2]/hash[1]/hash[0].png (mod_tile от OSM)
Backend/hash[4]/hash[3]/hash[2]/hash[1]/hash[0].png
// We attempt to cluster the tiles so that a 16x16 square of tiles will be in a single directory// Hash stores our 40 bit result of mixing the 20 bits of the x & y co-ordinates// 4 bits of x & y are used per byte of output
unsigned char i, hash[5];for (i=0; i<5; i++) { hash[i] = ((x & 0x0f) << 4) | (y & 0x0f);
x >>= 4;y >>= 4;
}
https://github.com/openstreetmap/mod_tile/blob/master/src/store_file_utils.c
Frontend
FrontendЗадачи фронтенда
● Визуализация данных● Взаимодействие с пользователем
FrontendИнструменты
● Leaflet● OpenLayers
Крупнейшие игроки на рынке● Cloudmate● Mapbox● OpenStreetMap● Google
Вопросы?