Подготовка карты для спортивного ориентирования или рогейна на основании данных OSM и DEM
Подготовка карты для спортивного ориентирования или рогейна на основании данных OSM и DEM Шаг 1. Экспорт данных OSM. Шаг 2. Импорт данных в OpenOrienteering Mapper Шаг 3. Получение изолиний рельефа Где можно скачать DEM Получение изолиний рельефа из данных в формате .hgt в OCAD Получение изолиний рельефа из данных DEM в QGIS (Quantum GIS) Шаг 5. Импорт данных рельефа в OOM Заключение
В настоящее время рогейн, как разновидность спортивного ориентирования, становится всё более популярен. Во многих городах России проводятся локальные соревнования, некоторые регионы проводят региональные и окружные чемпионаты, а также ежегодно проводится чемпионат России. В других странах рогейн тоже очень популярен, многие страны проводят свои чемпионаты. Кульминацией рогейна является ежегодный чемпионат мира, проходящий в разных местах планеты. Основной и первостепенной задачей организаторов рогейна является подготовка качественной карты. За основу карты могут быть взяты разные данные: карты генштаба, спутниковые снимки и т.п., либо карту можно полностью самостоятельно нарисовать “с нуля”. Так почему OSM? - Некоторые регионы, пригодные для проведения рогейнов, достаточно хорошо прорисованы в OpenStreetMap
- OpenStreetMap - система, открытая для редактирования. Каждый желающий может добавлять и изменять картографические данные
- То, что будет сохранено в OSM попадет в общий доступ и другие авторы карт смогут переиспользовать данные, созданные другими авторами
- OpenStreetMap имеет широкие возможности тегирования объектов, поэтому в OSM можно нарисовать практически что угодно
Ниже приведена пошаговая инструкция подготовки карты на основании данных OSM. А также будут рассмотрены возможности генерации изолиний рельефа на основании различных данных, доступных в интернете. Шаг 1. Экспорт данных OSM.Экспортировать данные в формате .osm можно разными способами:
Способ 1: экспортировать данные кнопкой “Экспорт” с сайта OSM https://www.openstreetmap.org/export - просто и быстро, актуальные данные, можно редактировать прямо на сайте
- возможно экспортировать только небольшую площадь
Способ 2: экспортировать данные кнопкой “Overpass API” с сайта OSM https://www.openstreetmap.org/export - используется сторонний сервис, может не работать. Данные могут быть не самые свежие
Способ 3: воспользоваться сторонними сервисами Overpass API, например http://overpass-api.de/, http://overpass.openstreetmap.ru/ и т.п - есть язык запросов, можно экспортировать данные выборочно
- необходимо составлять запрос, сервисы могут не работать, данные могут быть не самыми свежими
Способ 4: https://extract.bbbike.org/. Выбираешь формат, например “OSM XML gzip’d”, вписываешь свой e-mail и ждешь - можно экспортировать в разные форматы, относительно большую область
- данные могут быть не самые свежие
Способ 5: Использовать редактор JOSM http://josm.ru/. Меню Файл - Скачать данные, затем Файл - Сохранить как. - Свежие данные, много возможностей, можно редактировать прямо в редакторе и отправлять изменения на сервер OSM
- Приходится загружать большую область маленькими кусками, сложный интерфейс, необходимо устанавливать Java на компьютер
Конечно же, есть и другие способы, не перечисленные выше.
Шаг 2. Импорт данных в OpenOrienteering MapperДанная инструкция составлена для версии OOM 0.9.5
- Загружаем и устанавливаем OpenOrienteering Mapper (далее - OOM) GitHub, сайт приложения
- Создаем новую карту: выбираем нужный масштаб и набор символов. Можно взять какой-нибудь улучшенный набор (либо потом всё равно придётся стандартный улучшать) , например, вот.
На вопрос о масштабировании отвечаем - Да
- Импортируем данные OSM
Файл - Импорт, выбираем файл .osm, экспортированный на шаге 1. В следующем окне необходимо указать Базовую систему координат UTM и Склонение. Остальные поля заполняются автоматически. Магнитное склонение можно определить на сайте https://www.ngdc.noaa.gov/geomag/calculators/magcalc.shtml Для определения склонения вводим координаты центра карты и предполагаемую дату соревнования. Да да, а что вы думали? Магнитный север постоянно дрйфует 🙂
Далее появляется окно, в котором отображаются правила преобразования тэгов OSM в объекты карты OOM.
Здесь можно подправить правила преобразования либо загрузить предварительно подготовленный .crt файл, содержащий эти правила, например, OSM-ISOM 2017-2.crt, имеющийся в комплекте OOM. Или использовать улучшенный, например, вот. Или создать свой. .crt файл имеет простую текстовую структуру и его можно редактировать в блокноте. А также можно в нем подсмотреть, какие тэги нужно навесить на объекты OSM, чтобы преобразования выполнялись в нужные объекты OOM. Например, видим, что для того чтобы на карте появился символ 508 “Исчезающая тропинка”, нужно в OSM к тэгу highway = path добавить еще тэг smoothness = horrible или smoothness = very_horrible:
Кстати, режим таскания карты включается кнопкой
- После загрузки данных на карте могут присутствовать обозначения, которые не удалось преобразовать .crt файлом, превращаются в фиолетовые линии, области и точки.
Их можно удалить так: - в панели символов жмем правой кнопкой мыши на ненужный символ
- кликаем контекстное меню “Выбрать все объекты с этим символом”
- жмем Del
В результате получаем чистую карту:
- Далее, чтобы все неотрисованные на OSM места карты вместо белого цвета стали залиты “неудобью”, берем символ “403. Неудобное открытое пространство” и рисуем прямоугольник (меню Инструменты - Рисовать прямоугольник”) поверх всей карты
В OOM наложение символов друг на друга (z-order) зависит от цвета символа. Поэтому чтобы наша неудобь не перекрывала другие полезные символы, переходим в меню “Символы - Окно настройки цветов” и двигаем цвет “Желтый 50%” в самый низ.
Шаг 3. Получение изолиний рельефаИзолинии рельефа можно получить из данных DEM (Digital Elevation Model). DEM бывает двух видов: - DSM (Digital Surface Model) предназначена для моделирования и визуализации ландшафта, включает в себя верхушки деревьев и зданий.
- DTM (Digital Terrain Model): предназначена для моделирования поверхности земли
Для карт спортивного ориентирования и рогейна нужна модель DTM, но часто приходится использовать DSM. Источник данных для этих моделей обычно один и тот же, модель DTM получают цифровой обработкой, убирая растительность и здания с поверхности. Естественно, результат обработки сильно зависит от алгоритма.Поэтому лучше всего сгенерировать изолинии из нескольких разных источников и, сравнив результаты, выбрать наилучший.
Источники данных для рельефа: - SRTM (Shuttle Radar Topography Mission) Данные инфракрасной съемки со спутника 2000 года. Вся планета от 56° ю. ш. до 60° с. ш. Разрешение 30 либо 90 м. Точность 10-20 м.
- ASTER GDEM (Advanced Spaceborne Thermal Emission and Reflection Radiometer Global Digital Elevation Model) Оптическая стереосъемка, последняя версия V3 2019 года. Вся планета от 83° ю. ш. до 83° с. ш. Разрешение 30 м. Точность ~20 м.
- LiDAR (Light Detection And Ranging) - данные, получаемые лазерной съемкой поверхности земли с самолёта или квадрокоптера. Очень высокое разрешение и точность (сантиметры), но найти такие данные в свободном доступе довольно сложно. Существуют организации, которые проводят съемку за деньги. А вот, к примеру, Словения имеет в открытом доступе данные по всей стране.
- TanDEM-X и прочие
* Разрешение - это размер пикселя в DEM. Выше разрешение - выше точность, но больше шумов, ниже разрешение - ниже точность, но меньше шумов. * Точность - это насколько точно измерена высота каждого пикселя в DEM.
Множество различных организаций в мире занимаются обработкой исходных данных DEM, удаляя шумы, заполняя пробелы путем объединения данных из разных источников. То, что получается на выходе, обычно называют Dataset. У датасетов разное покрытие, разная точность и разрешение. Эти датасеты доступны для скачивания либо свободно, либо после регистрации, либо за деньги. Часто появляются новые дата сеты, их надо искать, скачивать и пробовать использовать.
Где можно скачать DEM- https://www.viewfinderpanoramas.org
Тут можно взять выгрузки по зонам UTM с разрешением 90 м. Каждый скачиваемый архив содержит несколько файлов .hgt, покрывающих площадь 1х1 градус.
Для Нижнего Новгорода зона примерно O38. Если карта соревнования находится в нескольких квадратах, скачиваем их все.
Тут Северная Америка и рельефная часть Европы с разрешением 30 м Сайтом занимается любитель, по-моему, довольно рассеянный, но увлеченный. Сайт работает уже много лет. - Сайт NASA: в фильтре выбираем нужную область, формат файла HGT. Получаем файлы 1 arc*sec - это разрешение 30 м, 3 arc*sec разрешение 90 м. V001 - это исходная версия SRTM, V003 - то же самое, но с исправленными пробелами. Для скачивания нужно зарегистрироваться.
- Тут можно скачать файлы площадью 1х1 градус: http://step.esa.int/auxdata/dem/SRTMGL1/
- http://srtm.csi.cgiar.org/srtmdata/ Разрешение 90 м. На базе данных NASA V1 с заполненными пробелами
- https://ecodatacube.eu/ Датасет получен из разных источников при помощи машинного обучения. Покрытие: Европа, разрешение 30 м. Высота рельефа в датасете странная - 10х-кратная. При получении изолиний надо делать срезы не по 10, а по 100 м.
- EU-DEM Датасет был создан путем объединения данных о высотах из глобальных наборов данных SRTM и ASTER, а также из советских топографических карт в высоких широтах.Разрешение 25 м. Покрытие - Европа, северная Африка.
- Copernicus DEM Очень качественный датасет, собранный из нескольких источников, покрытие - Европа. Для скачивания данных необходима регистрация. При регистрации обязательно нужно ставить галочку “I am also interested in accessing Copernicus Contributing Missions data”, User Category = Public
Приближаем карту в нужный район, выбираем нужный датасет, задаем Time Range From на пораньше, чтобы найти все обновления, жмем Search, скачиваем найденное. Датасеты DGED и DTED мало отличаются, на мой взгляд DGED лучше очищен от шумов.
- FABDEM - Copernicus DEM с удаленными смещениями высоты зданий и деревьев при помощи машинного обучения. Покрытие 80° ю. ш. до 80° с. ш.Разрешение 30 м.
- Время от времени появляются новые датасеты, надо искать.
Получение изолиний рельефа из данных в формате .hgt в OCAD
Обработка файлов .hgt требует больших вычислительных ресурсов и маломощные компьютеры могут тратить на их обработку много времени (часы), поэтому не стоит брать лишние данные - только то покрытие, что нужно.
Для импорта рельефа в OOM нам потребуется создать изолинии в формате .gpx из данных DEM. Для этого используем OCAD. Для примера использована версия 12.
- Создаем новый файл. Не уверен, что эти настройки имеют значение, но я создавал такой: Map type: “Orienteering map”, Symbol set: “Orienteering map ISMTBOM2010 20000”, Map scale 1:20000
- Меню DEM - DEM Import Wizard - Add, выбираем импортируемые файлы .hgt (Нижний Новгород примерно N56E043.hgt, отвечаем “ОК” на ошибку и задаем координатную систему UTM/WGS84, UTM Zone берем соответствующую файлам .hgt (N38) либо пользуемся кнопкой Find и определяем зону по координатам (Нижний Новгород - примерно N56, E43). Чем меньше файлов выберете, тем быстрее обработка.
- жмем Next, оставляем убираем все галки кроме “Create contour lines”
- жмем Next, задаем интервал изолиний, например, 5м, Line Symbol заполняем “101.000 Contour” и индексных (главных, жирных) изолиний, например, 25м, для которых выбираем символ “102.000 Index contour”
- жмем Next, выбираем “New offset”
- жмем "ОК” и ждем
- Появляются изолинии, обрезаем лишнее: Object/Crop objects. Чем меньше оставим, тем быстрее импортируется в OOM.
- Выбираем символ изолинии 101, Select/Objects by symbol
- Экспортируем. Меню File - Export. Выбираем тип экспорта - GPX, Export line objects as - Tracks.
- Сохраняем 5-метровые изолинии.
- Затем делаем то же самое для индексных изолиний (пп. 8-10), сохраняем 25-метровые изолинии.
Получение изолиний рельефа из данных DEM в QGIS (Quantum GIS)
QGIS - это географическая информационная система (ГИС) с открытым исходным кодом, которая широко используется для просмотра, редактирования и анализа геопространственных данных. Очень крутой инструмент с огромным количеством возможностей. Загрузить установщик для Windows.
- Создаем новый файл
- Если файл из датасета DEM один, то
- можно открыть его через меню “Layer/Add Layer/Add raster layer”
- если файлов несколько, то лучше сразу их объединить в один слой инструментом Merge
- Для удобства добавляем слой OSM: “Layer/Add Layer/Add XYZ layer”
- Обрезаем лишнее в слое с рельефом инструментом “Clip raster by extent”
- Генерируем линии рельефа инструментом Contour
- Такие слои рельефа можно сгенерировать из разных источников и сравнить их качество
- Экспортируем изолинии в файл .gpx
- Чтобы сделать индексные линии рельефа в QGIS
- посмотрите видео.
- сохраните рельеф как GeoTiff, сконвертируйте в .hgt и обработайте в OCAD как написано выше.
Другие способы получения изолиний- Векторизация растровых карт.
- В ООМ: Посмотрите это видео
- В QGIS: Можно попробовать этот плагин
- Вручную обводить линии рельефа в OOM с другой карты, добавленной в качестве подложки
Шаг 5. Импорт данных рельефа в OOMВозвращаемся в OOM
- File/Import, выбираем наш файл 5-метровых изолиний, С геопривязкой
- Может быть задан вопрос про базовую система координат - выбираем UTM
- Вибираем символ “Contour”
- После импорта все загруженные линии становятся “выбранными”, поэтому сразу же делаем это: кликаем символ изолинии “101 Горизонталь”, меню Инструменты - Заменить символы для выбранных объектов, затем меню Инструменты - Преобразовать в кривую (чтобы избавиться от острых углов импортированных изолиний)
.
- То же самое делаем с файлом 25-метровых (индексных) изолиний, только заменяем импортированные линии на символ “102 Утолщенная горизонталь”
- Ну, и можно сказать, что карта готова. Конечно всякие тонкости рельефа типа мелких промоин и лощин придется дорисовывать руками, а также удалить всякие странности типа пересечения озера и холма :), но даже так карта получается вполне приемлемая для проведения рогейнов и мультигонок.
ЗаключениеЕсли у вас есть замечания и предложения по усовершенствованию статьи - пишите комментарии в документе https://docs.google.com/document/d/1Fo_XupCm6jL-R21gfim5af92r07HhS7UBwS0Cjr8Kn8/edit?usp=sharing Либо свяжитесь с автором.
© 2024 Козлов Алексей aka Boogier https://t.me/boogier
|