Как сделать карту в навигатор
Как создать свою карту для спутниковой навигации
Идея написания этой статьи родилась ещё в новогодние каникулы, когда я объяснял, как сделать навигационные карты на основе спутниковых снимков. Тогда была снята основная часть скриншотов, но заготовка статьи осталась пылиться на задворках винчестера. И вот уже на улице вовсю светит солнце и тает снег, приближается новый походный сезон, а я, наконец, поборол лень и дописал текст.
Сейчас у многих имеются устройства, так или иначе оснащённые спутниковой GPS-навигацией. Это может быть смартфон, карманный компьютер, коммуникатор или же просто навигатор. Во многих случаях качество предустановленных карт оставляет желать лучшего, особенно для пеших походов. Тут могут помочь online-источники спутниковых снимков и карт. Достаточно сравнить два изображения одного участка:
Слева — спутниковый снимок Google maps, справа — тот же участок на карте. Который из них выглядит подробней?
Для создания полноценной растровой карты нам понадобится набор из двух программ, некоторое количество времени и интернет-трафика. Полученными в результате картами можно будет пользоваться на любом устройстве, для которого имеется программа OziExplorer или её аналоги.
Инструкция пошаговая, подробно иллюстрированная и должна быть понятна любому новичку.
Получение спутникового снимка или карты местности
На этом этапе нам понадобится программа SAS.Планета, скачать которую можно на официальном сайте sasgis.ru
Первым делом требуется указать в качестве источника данных Интернет и кэш:
А также выбрать нужный тип карты. Что это будет — спутник или карта Google, карты Яндекса или спутниковые снимки с геопортала Роскосмоса, а то и генштабовские карты — зависит только от Ваших личных предпочтений и качества источника на требуемом участке.
Итак, находим визуально, по координатам или встроенному поиску нужный участок. Определяем требуемую детализацию, увеличивая масштаб изображения. Текущий масштаб указывается слева, под линейкой масштабирования, в относительных уровнях (z14, z16 и так далее). Он пригодится нам на следующем этапе. Ориентируйтесь на то, чтобы нужные объекты были хорошо различимы и не «замылены». Но и не забывайте, что каждый уровень детализации увеличивает размер результирующей карты.
Уменьшаем масштаб до тех пор, чтобы весь нужный участок карты вошёл в экран. Выбираем инструмент «прямоугольное выделение» (вторая слева кнопка на панели инструментов или сочетание Ctrl+R на клавиатуре), и выделяем границы нашей будущей карты.
По окончании выделения появится диалоговое окно «Операции с выделенной областью». Сейчас нас интересует вкладка «Загрузить». Нужный тип карты уже выбран, а требуемый уровень детализации надо выбрать в выпадающем списке (мы его уточняли чуть раньше). Остается только нажать кнопку «Начать».
Спустя некоторое время (зависящее от детализации и площади карты), её участки будут загружены, и в окне появится надпись «Обработка файлов завершена». Окно загрузки можно закрыть, и переходить к следующему этапу — склейке снимков.
Выбираем в меню выделения пункт «Предыдущее выделение», либо нажимаем Ctrl+B на клавиатуре, чтобы заново не выделять ту же самую область, и появится знакомое нам окно.
На этот раз нас интересует вкладка «Склеить». Здесь потребуется настроить большее количество параметров:
Обработка снимка в графическом редакторе
Нередко из-за не совсем удачных условий освещения, или мешающей дымки, или в силу ещё каких-то причин спутниковые снимки бывают «слепыми», особенно при отображении их на экране мобильного устройства в яркий солнечный день. Для улучшения можно провести небольшую коррекцию в любом графическом редакторе. Я покажу это на примере бесплатного XnView, но Вы можете использовать любой другой подходящий (от IrfanView до Photoshop), эта процедура везде аналогична.
Но если качество и контрастность полученного на предыдущем этапе изображения Вас полностью устраивает, можете пропустить этот этап.
На снимке выше показано исходное изображение и нахождение пункта меню «Автокоррекция уровней», который можно использовать для автоматической подстройки контраста. На снимке ниже — результат этой операции. Как можно увидеть — цветность и контраст изображения увеличились, различимость дорог и водных объектов тоже немного улучшилась.
Можно использовать также ручной режим — правку контраста и гамма-коррекции (увеличить то и другое):
или Оттенка/Насыщенности/Осветленности. Ориентируйтесь на более подходящих для Ваших условий вариант.
После всех преобразований не забудьте сохранить результаты цветокоррекции.
Преобразование снимка в формат OziExplorer
Для дальнейшего преобразования картинки в более компактный формат, понимаемый OziExplorer-ом нам понадобится утилита img2ozf. Скачать её можно бесплатно на официальном сайте OziExplorer: oziexplorer3.com/img2ozf/img2ozf.html. По ссылке — последняя версия утилиты, сохраняющая в ozfx3 формат. Для ozf2-файлов (используются в более старых версиях OziExplorer) потребуется найти более старую версию утилиты. В этом вам поможет поиск.
Отмечаем галочками нужные для конвертирования изображения и нажимаем большую кнопку Process Image Files to OZF Files.
Программа некоторое время пошебуршит, перерабатывая файлы. При этом в строке статуса отображаются текущие операции. Программа создает несколько уровней детализации для разных увеличений, чтобы не тратить ресурсы мобильного устройства для пересчета больших изображений. Поэтому кодирование происходит в несколько проходов.
Теперь осталось оба этих файла залить на мобильное устройство, и указать OziExplorer место, где они лежат.
Например, так выглядит окно OziExplorer со спутниковыми снимками в Windows Mobile:
Вот и все, карты готовы.
Если что-то осталось непонятным — спрашивайте в комментариях — постараюсь ответить.
NaviGuild свой собственный навигатор
История создания
Сам я родом из небольшого города. После переезда в Минск, началась адаптация. Если маршрут дом – работа – дом не вызывал проблем, то возможность проезда в незнакомую точку вызывала дискомфорт. Да, я говорю про общественный транспорт. Сейчас для любого большого города есть навигаторы, но что делать, если город маленький? Вряд ли, что кто-то займется написание программ для всех городов, да и есть ли смысл? По сути все, что нам нужно, это:
Так сложилось, что специфика моей прошлой работы заставляла путешествовать по городам и каждый раз идея написать универсальную программу лишь только крепла. Сейчас идея превратилась в проект.
Описание
Изначальная задумка программы в том, что бы объединить людей для создания общей информационной базы. Функционал программы:
Работа с программой
Схематично жизненный цикл программы я предоставил на следующем рисунке.
При запуске нам нужно указать, откуда мы хотим взять данные (Этап 1). Далее после того, как данные будут указаны, происходит следующее. Мы преобразуем файл расписания в объект, получаем путь к файлу карты и записываем в базу (Этап 2). В качестве базы используется Realm.
После записи базы, нас выбрасывает в главное окно. Где проверяется, создана ли модель базы данных. Если модель создана, ждем изменений в модели (Этап 4), нет — создаем модель (Этап 3). Модель данных выполнена в виде синглтон’а. При изменении в модели, сохраняем обновления в БД (Этап 5). При последующем запуске мы проверяем, создана ли модель и выбираем этап.
Вот так это выглядит
Этап 1
Этап 3
Главное окно
Карта
P.s. С удовольствием отвечу на все ваши вопросы или помогу с созданием расписания.
Как создаются карты
Нарисованная от руки карта в Массачусетском музее современного искусства
Современным картографам гораздо проще, чем их коллегам из прошлого, создававшим далекую от идеала схему с весьма приблизительными расчетами местоположения объектов. До начала XX века картография менялась медленно и, хотя белых пятен к тому моменту почти не осталось, точностью карты похвастаться не могли.
С началом эры аэросъемки местности картографы получили отличный инструмент, позволявший составить детальный план любой территории. Спутниковая съемка должна была, по идее, завершить тысячелетнюю работу по созданию идеального инструмента ориентирования, но картографы столкнулись с новыми проблемами.
Как инструмент решения картографических проблем и ошибок, появился проект OpenStreetMap (OSM), на основе данных которого существует наш сервис MAPS.ME. В OSM огромное количество данных: не только обрисованные спутниковые снимки, но и информация, которую знают только местные жители. Сегодня мы подробнее расскажем, как оцифровывается и становится картой реальный мир.
Фотофиксация местности
Возраст этой карты — 14 000 лет
Первые карты появились еще в период первобытной истории. Изгибы рек, гребни, овраги, скалистые пики, звериные тропы — все объекты обозначалось простыми насечками, волнистыми и прямыми линиями. Последующие карты недалеко ушли от первых схематичных рисунков.
Изобретение компаса, телескопа, секстанта, других приборов морской навигации, и последовавший вслед за этим период Великих географических открытий, привели к расцвету картографии, но карты все еще оставались недостаточно точными. Использование различных приборов и математических методов не могло стать решением проблемы — в конце концов, карты рисовал человек, используя описание или схемы, созданные на натуре.
Новый этап в развитии картографии начался с топографической съемки. Впервые наземные съемочные работы для изготовления топографических карт начали выполняться в 16 веке, а первые аэрофототопографические съемки труднодоступных территорий были выполнены в 1910-е годы. В России как кадастровые, так и пресловутые «карты генштаба», точность и покрытие которых на тот момент времени оказались беспрецедентными, создавались топографами с помощью теодолита.
Пример дешифрования середины прошлого века
После аэросъемки необходим длительный и сложный этап дешифрования. Объекты на снимке нужно выявить и распознать, установить их качественные и количественные характеристики, а также зарегистрировать результаты. Метод дешифрования основывается на закономерностях фотографического воспроизведения оптических и геометрических свойств объектов, а также на взаимосвязях их пространственного размещения. Проще говоря, учитываются три фактора: оптика, геометрия изображения и пространственное размещение.
Для получения данных о рельефе используются контурно-комбинированный и стереотопографический методы. При первом методе непосредственно на местности с помощью геодезических приборов определяют высоты важнейших точек поверхности и затем на аэрофотоснимки наносят положение горизонталей. Стереотопографический метод подразумевает частичное перекрытие друг другом двух снимков таким образом, чтобы на каждом из них изображался один и тот же участок местности. В стереоскоп этот участок выглядит как трехмерное изображение. Далее по этой модели с помощью приборов определяют высоты точек местности.
Спутниковая съемка
Пример стереопары со спутника WorldView-1
Схожим образом, создавая стереоизображение, работают и спутники. Информацию по рельефу (и многие другие данные, включая радарную интерферометрию — построение цифровых моделей местности, определение смещений и деформаций земной поверхности и сооружений), предоставляют радарные и оптические спутники дистанционного зондирования Земли.
Спутники сверхвысокого разрешения фотографируют не все подряд (бескрайние сибирские леса не нужны в высоком разрешении), а по заказу для определенной территории. К таким спутникам относятся, например, Landsat и Sentinel (на орбите находятся Sentinel-1, ответственный за радарную съемку, Sentinel-2, ведущий оптическую съемку поверхности Земли и изучение растительности, и Sentinel-3, наблюдающий за состоянием мирового океана).
Изображение Лос-Анджелеса, снятое спутником Landsat 8
Спутники присылают данные не только в видимом спектре, но и в инфракрасном (и еще нескольких других). Данные из невидимых для глаза человека диапазонов спектра позволяют анализировать типы поверхности, следить за ростом сельскохозяйственных культур, выявлять пожары и многое другое.
Изображение Лос-Анджелеса включает в себя полосы частот электромагнитного спектра, соответствующие (в терминологии Landsat 8) диапазонам 4-3-2. Landsat обозначает красный, зеленый и синий сенсоры как 4, 3 и 2 соответственно. Полноцветное изображение появляется при комбинации изображения с этих сенсоров.
Принимают и обрабатывают данные владельцы спутников и официальные дистрибьютеры — DigitalGlobe, e-Geos, Airbus Defence and Space и другие. В нашей стране основными поставщиками спутниковых снимков являются «Российские космические системы», «Совзонд» и «Сканэкс».
Множество сервисов создано на основе наборов данных Global Land Survey (GLS) от US Geological Survey (USGS) и NASA. GLS получают данные преимущественно от проекта Landsat, создающего спутниковые фотоснимки всей планеты в реальном времени с 1972 года. С помощью Landsat можно получить сведения обо всей земной поверхности, а также об ее изменениях за последние десятилетия. Именно этот проект для всех публичных картографических сервисов остается главным источником данных дистанционного зондирования Земли по мелким масштабам.
Багамские острова с точки зрения MODIS
Сканирующий спектрорадиометр среднего разрешения MODIS (MODerate-resolution Imaging Spectroradiometer) расположен на спутниках Terra и Aqua, являющихся частью комплексной программы NASA EOS (Earth Observing System). Разрешение получаемых изображений грубее результатов большинства других спутников, но охват позволяет получать ежедневную глобальную коллекцию снимков практически в режиме реального времени.
Мультиспектральные данные полезны для анализа земной поверхности, океана и атмосферы, позволяя в оперативном режиме (буквально за несколько часов) изучать изменения облаков, снега, льда, водных объектов, состояние растительности, отслеживать динамику наводнений, пожаров и т.д.
«Living Atlas of the World» — атлас, содержащий карты и данные, посвященные множеству тем: населению, бизнесу, ландшафту, климату, транспорту и др.
Геопортал Роскосмоса — бесплатный (частично) источник данных. Спутниковые снимки предоставлены Роскосмосом и NASA, картографические данные — OpenStreetMap и Росреестром, средства поиска — GeoNames и OpenStreetMap Nominatim.
Кроме спутников есть еще одно перспективное направление «вертикальной» съемки — получение данных с дронов. Так компания DroneMapper отправляет дроны (редко — квадрокоптеры) для съемок фермерских угодий — получается экономичнее, чем использовать спутник или самолет.
Спутники предоставляют огромное количество разнообразной информации и могут сфотографировать всю Землю, но компании заказывают данные только для нужной им территории. В связи с дороговизной спутниковой съемки, компании предпочитают детализировать территории крупных городов. Все, что считается малонаселенной местностью, обычно снимается в самых общих чертах. В регионах с постоянной облачностью спутники делают новые и новые снимки, добиваясь четкого изображения и повышая затраты. Впрочем, некоторые IT-компании могут позволить себе закупать снимки целыми странами. Например, Bing Maps.
На базе спутниковых снимков и замеров на местности создаются векторные карты. Обработанные векторные данные продают компаниям, печатающим бумажные карты и/или создающим картографические сервисы. Рисовать карты самостоятельно по спутниковым снимкам дорого, поэтому многие компании предпочитают купить готовое решение на базе Google Maps API или Mapbox SDK и доработать собственным штатом картографов.
Проблемы спутниковых карт
В простейшем случае, чтобы нарисовать современную карту, достаточно взять снимок со спутника или его фрагмент и перерисовать все объекты в редакторе или в каком-нибудь сервисе online interactive map creator. На первый взгляд в примере выше из OSM все отлично — дороги выглядят, как и должны выглядеть. Но это только на первый взгляд. На самом деле эти цифровые данные не соответствуют реальному миру, так как они искажены и сдвинуты относительно реального расположения объектов.
Спутник фотографирует под углом на большой скорости, время фотографирования ограничено, снимки склеиваются… Ошибки накладываются друг на друга, поэтому для создания карт стали использовать фото- и видеосъемку на местности, а также геотрекинг автомобилей, который является очевидным доказательством существования определенного маршрута.
Пример снимка, на котором возникла проблема из-за плохой орторектификации: у воды треки легли отлично, а на горе справа — съехали
Рельеф, условия съемки и тип камеры влияют на появление искажений в снимках. Процесс устранения искажений и преобразования исходного снимка в ортогональную проекцию, то есть такую, при которой каждая точка местности наблюдается строго вертикально, называют орторектификацией.
Перераспределение пикселей на изображении в результате ортокоррекции
Использовать спутник, который снимал бы только над заданной точкой, затратно, поэтому съемка ведется под углом, который может достигать 45 градусов. С высоты в сотни километров это приводит к значительным искажениям. Для создания точных карт качественная орторектификация жизненно необходима.
Карты быстро теряют актуальность. Открыли новую парковку? Построили объездную дорогу? Магазин переехал по другому адресу? Во всех этих случаях устаревшие снимки территории становятся бесполезны. Не говоря уже о том, что множество важных деталей, будь то брод на реке или тропа в лесу, не видны на снимках из космоса. Поэтому работа над картами — это процесс, в котором невозможно поставить финальную точку.
Как делают карты OpenStreetMap
Изображение
OpenStreetMap — некоммерческий картографический проект, в котором сообщество пользователей со всего мира создает открытую, бесплатную географическую карту. Для создания карт применяют данные с персональных GPS-трекеров, аэрофотографии, видеозаписи, спутниковые снимки, а также знания человека. Ближайший проект, с которым можно сравнить OSM — это Википедия. Аналогичным образом в OSM любой пользователь редактирует карту, а данные проекта распространяются на условиях свободной лицензии.
В OpenStreetMap используют в качестве основы для карт GPS-треки, записанные пользователями, и спутниковые снимки от компаний Bing, Mapbox, DigitalGlobe. Карты коммерческих компаний, например Google и Яндекса, нельзя использовать из-за юридических ограничений.
Снимки привязываются к местности автоматически на этапе получения. Сканы также можно привязать с помощью опорных точек с известными координатами, полученными из треков либо ассоциированными с пунктами геодезической сети.
При редактировании карт снимки со спутников в OSM всегда сдвигаются так, как показывают записанные на земле треки, компенсируя большинство ошибок. Есть масса приложений, позволяющих записывать GPS-треки и делиться ими, например, Geo Tracker, Strava (Android) и GPX Tracker (iOS).
Создатель карты на спутниковом снимке первым делом рисует дороги, используя данные треков. Поскольку треки описывают перемещение в географических координатах, по ним легко определить, где именно проходит дорога. Затем наносятся все остальные объекты. Недостающие и площадные объекты создаются по снимкам, а подписи, указывающие на принадлежность объектов либо дополняющие их справочной информацией, берутся из наблюдений или реестров.
Чтобы создать карту, наполненную различной информацией, используют географическую информационную систему (ГИС), предназначенную для работы с геоданными — для их анализа, преобразования, аналитики и печати. С ГИС можно создать свою собственную карту с визуализацией любых данных. В ГИС для карт можно добавить данные Росстата, муниципальных образований, министерств, ведомств — все так называемые геопространственные данные.
Откуда берутся геоданные
Итак, спутниковые снимки сдвинуты относительно реальности в несколько десятков метров. Чтобы сделать действительно точную карту, нужно вооружиться навигатором (GPS приемником) или обычным телефоном. А затем с помощью приемника или приложения в телефоне записать максимальное количество точек трека. Запись осуществляется вдоль линейных объектов, расположенных на земле — подойдут реки и каналы, тропинки, мосты, ж/д и трамвайные пути и т.д.
Одного трека никогда не бывает достаточно для любого участка — сами они тоже записываются с определенным уровнем погрешности. В дальнейшем спутниковая подложка выравнивается по множественным трекам, записанным в разное время. Любая другая информация берется из открытых источников (или дарится провайдером данных).
Трудно представить карты без информации о различных компаниях. Сбор локальных данных об организациях с привязкой к GPS-позиции делают Yelp, TripAdvisor, Foursquare, 2ГИС и другие. Сообщество (включая непосредственно представителей локального бизнеса) самостоятельно вносит данные на OpenStreetMap и Google Maps. Не все большие сети хотят сами заморачиваться с добавлением информации, поэтому обращаются к компаниям (Brandify, NavAds, Mobilosoft и другие), помогающим размещать филиалы на картах и следить за актуальностью данных.
Иногда информация об объектах реальной местности добавляется на карты через мобильные приложения — сразу, в полевых условиях человек имеет возможность точно актуализировать картографические данные. В MAPS.ME для этого есть встроенный редактор карт, через который уточненные данные поступают напрямую в базу OpenStreetMap. Достоверность информации проверяют другие участники OSM-сообщества. В «обратную сторону» данные из OSM поступают в MAPS.ME в «сыром» виде. Прежде чем оказаться на экране смартфона пользователя, они обрабатываются и упаковываются.
Будущее: нейросети-картографы
В Facebook рассказали, что они использовали алгоритмы машинного обучения, чтобы найти дороги на спутниковых снимках. Но фактчекинг уже делали люди, которые проверяли дороги и «склеивали» их с данными OSM.
Сервис для обмена фотографиями с геометками Mapillary в прошлом году добавил функцию, которая обеспечивает семантическую сегментацию изображений объектов. Фактически они смогли разделить изображения на отдельные группы пикселей, соответствующие одному объекту с одновременным определением типа объекта в каждой области. Люди делают подобное очень легко — например, большинство из нас могут идентифицировать и находить автомобили, пешеходов, дома на изображениях. Однако компьютерам тяжело было ориентироваться в огромном массиве данных.
Используя глубокое обучение на свёрточной нейронной сети, в Mapillary смогли в автоматическом режиме выявить 12 категорий объектов, которые чаще всего встречаются в дорожной сцене. Их метод позволяет добиться прогресса и по другим задачам машинного зрения. Игнорируя совпадения между движущимися объектами (например, облаками и транспортными средствами) можно значительно улучшить цепочку процессов преобразования исходных данных в двухмерную или стереоскопическую картинку. Семантическая сегментация Mapillary позволяет получить приблизительную оценку плотности растительности или наличия тротуаров на некоторых территориях городов.
Юго-Запад Москвы нейросеть поделила на зоны в зависимости от типа застройки
В проекте CityClass проводится анализ типов городской застройки при помощи нейросети. Делать карту функционального зонирования города долго и однообразно, но можно обучить компьютер отличать промышленную зону от жилой, а историческую застройку от микрорайона.
Группа ученых из Стэнфорда натренировала нейросеть предсказывать уровень бедности в Африке по дневным и ночным спутниковым снимкам. Сначала сетка находит крыши домов и дороги, а потом сопоставляет с данными об освещенности территорий в ночное время.
Сообщество продолжает следить за первыми шагами в области автоматического создания карт, и уже использует машинное зрение для рисования некоторых объектов. Трудно сомневаться в том, что будущее будет принадлежать картам, создаваемым не только людьми, но и машинами.