7  Open Street Map (OSM)

Open Street Map (OSM) это некоммерческий проект по созданию подробной, свободной и бесплатной географической карты мира. Наполнение карты осуществляется участниками проекта OSM на добровольных началах. Проект функционирует по принципу Википедии: любой участник может добавлять объекты и их описание на карту. Данные OSM распространяются свободно под открытой лицензией Open Database License. OSM является одним из самых крупных источников информации для создания ГИС.

Загрузите файлы!

Для выполнения последующих заданий загрузите файл по ссылке 1 или ссылке 2 и создайте новый проект:

  • Создайте новую папку проекта под названием “Раздел 7 OSM” а так же новый проект в QGIS.

Файл “osm.gpkg” является файлом GeoPackage и содержит несколько векторных слоев для территории Красноярского края, полученных из базы данных Open Street Map (получить аналогичные данные возможно по ссылке, регион - Siberian Federal District). При загрузке файла “osm.gpkg” появится окно выбора слоев для загрузки в проект. По умолчанию выбраны все слои, но возможно выбрать только некоторые слои из списка. Все слои содержатся в одном файле “osm.gpkg” который является контейнером базы данных SQLite. В описании каждого слоя указывается тип геометрии и количество объектов (Рисунок 7.1).

Рисунок 7.1: Окно выбора слоев файла “osm.gpkg”
Задание 7.1: Задание

Загрузите в проект все слои из файла “osm.gpkg”. Сохраните проект в папку проекта под названием “Раздел 7 OSM”.

В результате выполнения задания загружено 6 слоев:

7.1 Создание границы Красноярского края

Для создания границы Красноярского края из слоя “level_6” применяется инструмент “Вектор” > “Геообработка” > “Объединение по признаку…”. В качестве исходного слоя указывается “level_6”, в пункте “поле слияния” отмечается поле - “admin_level”. В результате геометрии с одинаковым атрибутом “admin_level” будут объединены между собой. Поскольку все геометрии слоя имеют одинаковое значение в поле “admin_level” (число 6), они будут объединены, создав таким образом границу Красноярского края (Рисунок 7.2).

Рисунок 7.2: Результат применения инструмента “Объединение по признаку”
Задание 7.2: Задание

Создайте границу Красноярского края по примеру выше. Сохраните слой в файл “osm.gpkg” под названием “border” (Видео 7.1).

Видео 7.1: Применение инструмента “Объединение по признаку”, объединение по полю “admin_level”

7.2 Подготовка данных

Некоторые объекты слоя “places” не находятся на территории Красноярского края. Обрежем слой по границе полигона “border” что бы удалить населенные пункты не входящие в границы Красноярского края. Для этого используется инструмент “Обрезать” (см. Задание 6.4).

Задание 7.3: Задание

Используйте инструмент “Обрезать” для обрезки слоя “places” по границе Красноярского края. Сохраните слой в файл “osm_krai.gpkg” под названием “places_border”.

7.3 Кейсовые задания

Кейсовые задания предполагают решение задач с применением уже изученных а так же новых инструментов. Это комплексные задания, требующие декомпозиции задачи и решения в несколько шагов, на каждом из которых применяется свой набор инструментов. Для решения последующих заданий Вы можете использовать любые источники информации а так же помощь ваших коллег.
Часть инструментов, необходимых для решения заданий, находится в меню “Инструменты анализа” (Рисунок 7.4).
Окно “Инструменты анализа” открывается в правой части программы нажатием на иконку “Панель инструментов” 1. Если иконка отсутствует, убедитесь что в пункте “Модули” > “Управление модулями…” > вкладка слева “Установленные” присутствует галочка напротив инструмента “Processing”. Если галочка отсутствует - поставьте ее (см. Рисунок 7.3).

Рисунок 7.3: Активация модуля “Processing” (галочка установлена)

Для быстрого поиска инструмента удобно использвать поиск по названию (строка “Поиск…” в верхней части окна”).

Рисунок 7.4: Окно “Инструменты анализа”

7.3.1 Кейс 1 Вычисление протяженности автомобильных дорог по муниципальным районам

Задача: Вычислить протяженность крупных дорог (в слое “roads”, в поле “fclass” это значения ‘trunk’, ‘primary’ и ‘secondary’) для каждого муниципального района Красноярского края. В результате должна быть получена таблица с суммарной длиной дорог на территории каждого района. Результат выполнения кейса приведен на рисунке ниже (Рисунок 7.5).

Рисунок 7.5: Таблица - результат выполнения кейса 1

Исходные данные: слои “roads” и “level_6”.

Описание: Сначала следует рассмотреть структуру исходных слоев:

  • слой “level_6” содержит полигоны, границы муниципальных районов Красноярского края. В таблице атрибутов слоя содержится название для каждого района (поле “local_name”);
  • слой “roads” содержит линейные объекты, дороги. В атрибутах слоя указаны характеристики дорог, в том числе в поле “fclass” указан тип дороги (подробнее о типах дорог в OSM). Согласно заданию, из всех дорог необходимо выбрать дороги с типами ‘trunk’, ‘primary’ и ‘secondary’.

Для последующего подсчета длины нужно разбить дороги на части по границам муниципальных районов и добавить поле принадлежности к тому или иному району (инструмент “Пересечение”).

После чего в слой дорог добавляют еще одно поле в котором рассчитывают длину каждой части дороги. На последнем этапе суммируют протяженность дорог для каждого муниципального района (инструмент “Агрегировать”). При этом геометрии дорог так же будут объединены в границах каждого района а тип геометрии слоя конвертируется из линии в мультилинию.

Этапы выполнения:

  • из слоя “roads” выберите нужные типы дорог (в поле “fclass” значения ‘trunk’, ‘primary’ и ‘secondary’) (см. Задание 5.9);
  • используйте инструмент “Пересечение”, что бы обрезать дороги по границам муниципальных районов и добавить в атрибуты дорог название муниципального района (см. Задание 6.4);
  • для каждой дороги рассчитайте длину (единицы измерения километры, 3 знака после запятой) (см. Задание 6.7, Задание 6.8);
  • используйте инструмент “Агрегировать” для того, что бы рассчитать суммарную протяженность дорог для каждого района;
  • сохраните таблицу как файл Excel (.xlsx).

7.3.2 Кейс 2 Построить карту количества железнодорожных мостов

Задача: Подсчитать количество железнодорожных мостов (пересечения рек и железных дорог) в каждом административном районе Красноярского края. Построить карту (см. Рисунок 7.6).

Рисунок 7.6: Карта - результат выполнения кейса 2

Исходные данные: слои “railways”, “waterways” и “level_6”.

Описание: Исходными данным для выполнения задания является полигональный слой административных районов (“level_6”), линейный слой железных дорог (“railways”) и линейный слой рек (“waterways”). В слое “waterways” содержатся различные реки (от крупных до мелких). В местах пересечения ЖД и небольших рек обычно стороят насыпи а не мосты, поэтому из слоя “waterways” необходимо выбрать только крупные реки. Для этого применяется фильтр к полю “fclass” и выбираются геометрии с атрибутом “river” (крупные реки). После этого, используйте инструмент “Пересечение линий” на слоях “railways” и отфильтрованом слое “waterways”. В результате будет получен точечный слой пересечения линий из этих слоев.
Следующая сложность заключается в том, что железная дорога часто имеет 2 колеи, но мост при этом один (см. Рисунок 7.7).

Рисунок 7.7: Задвоение точек пересечения

Одинм из способов удаления близко расположенных точек: построение буферов небольшого радиуса (30 м) вокруг каждой из точек (в инструменте “Буферизация…” должен быть установлен чек-бокс в пункте “Результат объединения”). Таким боразом, точки на расстоянии менее 30 метров будут объединены общей буферной зоной. С помощью инструмента “Центроиды” (должен быть установлен чек-бокс в пункте “Создать центроиды для каждой части”) извлекаются центроиды из объединенных буферов. Эти центроиды соответствуют положению ЖД моста.
После того как точечный слой ЖД мостов получен, остается подсчитать количество мостов в каждом муниципальном районе (для этого применяют инструмент “Подсчет точек в полигоне” к слою ЖД мостов и слою “level_6”) и создать карту.

Этапы выполнения:

  • Выбрать из слоя “waterways” крупные реки (в поле “fclass” значение “river”) (см. Задание 5.1);
  • Получить точечный слой пересечений крупных рек и железных дорог (инструмент “Пересечения линий”);
  • Построить буферы радиусом 30 м с объединением пересекающихся буферов (перед построением буферов необходимо перепроецировать слой в систему координат ESRI: 102025) (см. Глава 6.1 и Глава 6.2);
  • Извлечь центроиды из буферов (используется инструмент “Центроиды”, с установленным чек-боксом “Создать центроиды для каждой части”);
  • Рассчитать количество мостов в каждом административном районе (инструмент “Подсчет точек в полигоне”).
  • Составить карту количества ЖД мостов по регионам (см. Глава 4.7).

7.3.3 Кейс 3 Рассчитать площадь, покрытую водной поверхностью для каждого муниципального района.

Задача: Рассчитайте площадь муниципальных районов покрытую реками и озерами (в процентах от общей площади района). Постройте карту.

Исходные данные: слой муниципальных районов “level_6”; слой площадных водных объектов “water”.

Описание: По своей сути, задача сводится к тому, что бы добавить в слой “level_6” два новых атрибута: 1. площадь рек в каждом муниц. районе; 2. площадь озер в каждом муниц. районе. После этого рассчитать процент от площади муниципального района не составит труда.
Для начала следует разделить слой “rivers” на 2 слоя. Первый будет содержать реки (в поле “fclass” реки имеют атрибуты “reservoir” и “riverbank”), второй будет содержать озера (в поле “fclass” озера имеют атрибут “water”). Далее каждый слой пересекают со слоем муниц. районов (Инструмент “Пересечение…”) в результате будут получено 2 новых слоя в таблице атрибутов которых появится после “local_name”, обозначающее принадлежность каждой реки/озера к муниц. району. При этом геометрии рек/озер будут обрезаны по границам муниц. районов.

Обратите внимание!

Для большого количества объектов выполнение операции “Пересечение…” может занять продолжительное время.

На следующем этапе, в каждом из слоев создается поле (“area_rivers_km2” и “area_lakes_km2” в слоях с реками и озерами соответственно) в которая записывается площадь (единицы измерения - квадратные километры, тип данных - десятичное число). Далее к каждому из слоев применяется инструмент “Агрегировать” с группировкой по полю “local_name”. Так будет получена суммарная площадь рек/озер для каждого муниципального района. Для добавления площадей из двух полученных слоев в слой “level_6” используется вкладка “Связи” в свойствах слоя “level_6”, связующим выступает поле “local_name” которое присутствует во всех трех слоях. В результате настройки связей, в слое “level_6” должны полявиться поля “area_rivers_km2” и “area_lakes_km2”.
На следующем этапе создается новое поле в слое “level_6” куда записывается площадь административных районов. И два новых поля, куда записывается процент площади района, занятый реками и озерами соответственно. В результате таблица атрибутов слоя “level_6” будет содержать следующие поля (Рисунок 7.8):

Рисунок 7.8: Слой админ. районов с рассчитанным процентом покрытия реками и озерами (поля “area_rivers_perc” и “area_lakes_perc”)

На основе этой таблицы постройте карту покрытия территории Красноярского края реками и озерами (см. Рисунок 7.9)

Рисунок 7.9: Карта - результат выполнения кейса 3

Этапы выполнения:

  • Разделения слоя “water” на 2 слоя по полю “fclass”: реки (reservoir, riverbank) и озера (water) (см. Задание 5.1 и Задание 5.2);
  • Пересечение слоев рек/озер со слоем админ. границ (“level_6”) используя инструмент “Пересечение…” (см. Задание 6.4);
  • Расчет площади рек/озер в границах административных районов (см. Задание 6.10);
  • Суммирование площадей рек/озер по админ. районам при помощи инструмента “Агрегировать”;
  • Добавление в слой админ. районов площади рек/озер путем связи слоев через поле “local_name” (см. Задание 3.9);
  • Расчет процента площади покрытой реками/озерами для каждого админ. района (см. Задание 6.12);
  • Построение карты (Задание 4.10).

7.4 Заключение

В геоинформационных системах большое значение имеет качество исходных данных и полностью применим принцип GIGO (garbage in, garbage out; «мусор на входе — мусор на выходе»). Ситуация осложняется тем, что часто нет большого выбора наборов данных а проводить оцифровку самостоятельно очень долго и трудозатратно. Часто приходится работать с тем что есть. Перед любым анализом следует задаться следующими вопросами:

  1. Источник данных? Это не только вопрос качества исходных данных, но и лицензии. Данные должны быть размещены под открытой лицензией или у Вас должно быть право на использование.
  2. Насколько полны данные? Следует удостовериться в том, что все объекты интереса занесены в географическую базу данных без пропусков (как геометрий так и атрибутов).
  3. Насколько точны данные? Выполняется проверка точности границ объектов и необходимых атрибутов.

Ответ на 2 и 3 вопросы обычно получают путем сравнения векторного набора данных с другим источником информации (космоснимки, топокарты, другие векторные слои). Сравнение может быть как визуальным, так и при помощи статистических методов. В итоге делается один из выводов:

  • о возможности использования данных для решения задачи;
  • о корректировке данных перед использованием (внесение дополнительных объектов и пропущенных атрибутов);
  • о невозможности использования данных.

Так же хорошей практикой является визуальная проверка результата после каждого применения того или иного инструмента. Не стоит забывать о том, что многие инструменты имеют дополнительные настройки, меняющие результат. Как Вы могли убедиться, решение задач включает в себя несколько этапов с последовательными применением различных инструментов. Ошибка на одном из этапов приведет к неверному конечному результату. Следовательно, желательно наиболее раннее обнаружение ошибок.