Использование данных OSM для анализа

Постановка задачи

В рамках проекта Фото-Географического Атласа России (photogeomap.ru) мы собрали ряд фотографий различных ландшафтов страны. Многие из них сделаны в достаточно труднодоступных местах.  Именно эту труднодоступность на качественном уровне мы и хотим оценить для каждой точки (фотографии)/

Индекс «недоступности»

Характеристика, позволяющая косвенно, на качественном уровне оценить сложность попасть к точку съемки данного кадра. Поскольку не нашлось готовых решений по расчету такой характеристики. Решено было создать свою. Назовем ее – индекс «недоступности» (ИН).

От чего он зависит? Очевидно, что от:

  • удаленности от дорог доступных для транспорта

  • удаленности от пеших троп и дорог пригодных только для пешего передвижения

  • удаленности от водных путей сообщения

Источник данных для анализа

Единственным доступным источником векторных данных для такого анализа близости нам видится OSM.   

Спорные моменты и допущения

Сразу опишу все допущения принятые нами

  1. Все расчеты проведены с использованием данных OSM со всеми содержащимися в них огрехами и неточностями.
    На карте могут быть отображены НЕ ВСЕ тропы и не все дороги. Степень валидности существующих объектов также не обсуждалась.

  2. Все расчеты расстояний проведены не в лучшей для этого проекции – но с учетом что нас интересуют довольно небольшие расстояния – искажениями пренебрежём. Тем более что в финале все количественные характеристики все равно переводятся в качественные.

  3. При анализе близости от водных объектов не учитывалась их связность и судоходность. Что в общем случае конечно неверно, но мы сознательно вводим это допущение.

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

1.        Данные OSM на территорию РФ, полученные через https://download.geofabrik.de загружены в СУБД Postgres (c ext. PostGIS).
Основные нужные нам для анализа объекты расположены в таблице planet_osm_line.  
Не забываем индексировать нужные нам поля (в случае дорог это поле highway)

2.        Готовим дороги и тропы. Созданы materialize view для автодороги и тропинок из класса planet_osm_line.

Дороги   - select * from planet_osm_line where highway  is not null and highway != ’track’ (выбраны все типы дорог из данных OSM вне зависимости от типа и качества покрытия) ошибки неверного назначения тегов – проигнорированы…..

Тропы  - select * from planet_osm_line where highway  is not null and highway = ’track’ (выбраны тропинки)

На полученных m.view  - тоже создаем индексы  на нужное поле. Работать будет легче.

3.        Готовим реки. Создаем materialize view для линейных рек  и площадных водных объектов
Теги по которым можно выбрать реки смотрим ТУТ

Краткий анализ что у нас есть по рекам вообще -

--------------------------------
 SELECT t.waterway , count (t.waterway) as cnt FROM public.osm_rivers_l as t where t.waterway is not null group by t.waterway order by cnt desc
---------------------------------

Реки (линейные)
select * from planet_osm_line where waterway  is not null

Реки (площадные)
select * from planet_osm_polygon where water  is not null

Расчет удаления от точек съемки

На этом этапе мы собственно считаем расстояния от наших точек (фото) до дорог, троп и рек.
Выполнить эту процедуру можно в любом настольном ГИС приложении , например в QGIS . В принципе, такой расчет можно провести в самом PostGIS, не вылезая из БД. Но я не программист и мне лень изучать и делать с нуля то, что я могу быстро за 10 мин сделать в той среде где работаю ежедневно (в GIS)

Определение расстояний от точек съемки до дорог - пишем в поле Road_dist и троп  - Track_dist считаем все сразу в километрах!  Определяем расстояние от линейных и площадных рек. Берем минимальное из пары (ближайший водные объект, неважно какой геометрии) и пишем в поле River_dist

Итак у нас есть поля с записанными в них расточениями. Собственно на этом использование данных OSM завершается, но не весь процесс..

Методика расчета

Теперь у нас все готово, и мы начинаем считать сам ИН.  
Сначала мы переводим количественные показатели в качественные характеристики.

1. Введены градации расстояний (поля Road_cat и Track_cat)  и присвоены значения весового коэффициента для удаленности от автодорог и троп (Road_cst и Track_cst)

Track_cst считается только для объектов с удаление от дорог более 5 км – иначе принимается 0

до 1

до 0,5 часа пешком

1

от 1 до 5

до 2х часа

2

от 5 до 10

до 3х часов

4

от 10 до 25

до дня ходьбы

6

более 25

более 1 дня

10

2. Введены градации расстояний (River_cat)  и присвоены значения весового коэффициента для удаленности от рек  (River_cst)  для объектов с удаление более 10 км от любых дорог и троп , иначе принимается 0

до 1 км

до 0,5 часа пешком

2

от 1до 5

до 2х часа

4

от 5 до 10

до 3х часов

6

более 10

до дня ходьбы

10

 3. Вводим характеристику отражающую доступ только с акватории северных морей.
Поле Sea_cst весовой коэффициент по доступу с «северных морей» для объектов, расположенных в Арктике и на побережье северных морей (выбраны по карте визуальное – их не много). В основном все объекты приняты за 0, кроме пары десятков.

с побережья «северных морей»

5

арктические острова

10

 4.        Все 4 поля  *_cst  суммированы в INDEX_IMP
смысл у него примерно такой  - чем он выше  --тем тяжелее добраться к точке.  

менее 3 - относительно легко доступная точка (можно ии приехать на машине или относительно недалеко прийти пешком

в районое первого десятка – приехать на машине и хорошо прогуляться….

второй десяток – уровень автономной экспедиции….

более 30  – очень сложно  доступная точка  - только с морских судов и пр пр радости…

Собственно - все. Мы посчитали искомую характеристику и теперь можем расклассифицировать точки на карте по ней (для наглядности) или просто указать ее в атрибутах.

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

    +1
    Тут явно видно одно сомнительное место. Вы брали тропы, при этом есть такие места, где и троп вообще нет (или их просто никто не наносит за ненадобностью). При этом разница между «пройти 50 км по равнине» и «пройти 50 км по горам или болотам» будет очень большой.

    Опять же: «расстояния от рек». А судоходность реки вы учитываете?
      +1

      Судоходность рек слабо связана с доступностью: на байдарках можно пройти несудоходную реку с порогами.

        +1
        Не, ну как же. Доступность по судоходной реке — это когда вы грузите на круизный лайнер авто, велосипед, детей, собаку и кошку. А теперь все это в байдарку?

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

        На мой взгляд — это и есть разница в доступности. Немножко не такая, не бинарная в форме «доступно/недоступно», но вполне интересная для анализа.
        +1

        Я про это писал, что никак не учитывал.
        Да, сомнительных мест есть и не одно. Согласен. Надо ж было с чего то начать…
        Есть идеи как внести корректировки?

          +1
          Ну, из очевидных — перепады высот попробовать учесть. Но это уже все очевидно будет нетривиально.
            0

            В рамках данной задачи, считаю нецелесообразным учет превышений. Ибо через тайну напролом без троп тоже на сахар…
            Да и шибко много мороки с такими анализами, а ситуацию он радикально, да и вообще вряд ли поменяет

              0
              Ну да, согласен (и потом, это уже маршрут придется строить, а его даже по дорогам пока не всегда получается построить хорошо).

              Ну и потом, если вдуматься, то доступность не является чем-то одномерным, ну скажем, как я чуть выше отвечал уже — доступность для человека с подготовкой (пешком через тайгу напролом с байдаркой ;) и человека с багажом, собакой и детьми — это две разные вещи.
                0

                Ну вот именно в расчёте на фотографа и его рюкзак с техникой и такие весовые коэффициенты на каждый класс значений.
                Я сам как бы фотограф и сам хожу, слегка в темп последние 30 лет. Потому проехать 1500 ам на машине в попой в тепле и пройти 150км по тропе пешком с палаткой — для меня вещи принципиально разные

        +3
        А хаб Криптография как сюда попал?
          +1

          Со слепу. До компа доеду, поправлю.
          Спасибо

            +1

            Убрал

            +2
            Скажите пожалуйста, почему вы берёте свободные ресурсы для своего сайта, однако делаете несвободный сайт? Почему вы запретили использовать ваш контент для всего, кроме цитирования?
              0

              А в чем "несвобода" сайта? Он открыт на всеобщее обозрение.
              Данные из osm были использованы для рассчета, описанной характеристики.
              По поводу " запретил" я вообще не понял. Поясните пожалуйста. Я не большой знаток тонкостей лицензирования открытых данных.

                +2
                На сайте написано, что он доступен по несвободной лицензии (non-commercial). То есть нельзя свободно использовать материалы сайта.

                Если сайт открыт на всеобщее обозрение, а использовать его контент нельзя, тогда он несвободный. Например, автомобили на улицах открыты на всеобщее обозрение, но свободно ездить на них нельзя. Например, книги в библиотеках открыты на всеобщее обозрение, но свободно копировать их нельзя.

                Зачем же установлен такой запрет? Какая причина такого запрета?
                  0

                  Причина — невоаденип темой лицензирования. Предложите варианты — буду благодарен.

                  0

                  Классика жанра. "Свободный" не означает "противоположность тому, что нельзя даже посмотреть". Свободный — это такой, который можно использовать как угодно, в том числе — с коммерческими целями.

              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

              Самое читаемое