Постановка задачи
В рамках проекта Фото-Географического Атласа России (photogeomap.ru) мы собрали ряд фотографий различных ландшафтов страны. Многие из них сделаны в достаточно труднодоступных местах. Именно эту труднодоступность на качественном уровне мы и хотим оценить для каждой точки (фотографии)/
Индекс «недоступности»
Характеристика, позволяющая косвенно, на качественном уровне оценить сложность попасть к точку съемки данного кадра. Поскольку не нашлось готовых решений по расчету такой характеристики. Решено было создать свою. Назовем ее – индекс «недоступности» (ИН).
От чего он зависит? Очевидно, что от:
удаленности от дорог доступных для транспорта
удаленности от пеших троп и дорог пригодных только для пешего передвижения
удаленности от водных путей сообщения
Источник данных для анализа
Единственным доступным источником векторных данных для такого анализа близости нам видится OSM.
Спорные моменты и допущения
Сразу опишу все допущения принятые нами
Все расчеты проведены с использованием данных OSM со всеми содержащимися в них огрехами и неточностями.
На карте могут быть отображены НЕ ВСЕ тропы и не все дороги. Степень валидности существующих объектов также не обсуждалась.Все расчеты расстояний проведены не в лучшей для этого проекции – но с учетом что нас интересуют довольно небольшие расстояния – искажениями пренебрежём. Тем более что в финале все количественные характеристики все равно переводятся в качественные.
При анализе близости от водных объектов не учитывалась их связность и судоходность. Что в общем случае конечно неверно, но мы сознательно вводим это допущение.
Подготовка данных 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 – очень сложно доступная точка - только с морских судов и пр пр радости…
Собственно - все. Мы посчитали искомую характеристику и теперь можем расклассифицировать точки на карте по ней (для наглядности) или просто указать ее в атрибутах.
sshikov
Тут явно видно одно сомнительное место. Вы брали тропы, при этом есть такие места, где и троп вообще нет (или их просто никто не наносит за ненадобностью). При этом разница между «пройти 50 км по равнине» и «пройти 50 км по горам или болотам» будет очень большой.
Опять же: «расстояния от рек». А судоходность реки вы учитываете?
Romanticus
Судоходность рек слабо связана с доступностью: на байдарках можно пройти несудоходную реку с порогами.
sshikov
Не, ну как же. Доступность по судоходной реке — это когда вы грузите на круизный лайнер авто, велосипед, детей, собаку и кошку. А теперь все это в байдарку?
Впрочем, попробуйте наоборот, пройти на байдарке судоходную реку типа Невы, где шастают Метеоры на подводных крыльях. Ну или как нельзя на велике скажем вылезать на МКАД.
На мой взгляд — это и есть разница в доступности. Немножко не такая, не бинарная в форме «доступно/недоступно», но вполне интересная для анализа.
AlexRybakov Автор
Я про это писал, что никак не учитывал.
Да, сомнительных мест есть и не одно. Согласен. Надо ж было с чего то начать…
Есть идеи как внести корректировки?
sshikov
Ну, из очевидных — перепады высот попробовать учесть. Но это уже все очевидно будет нетривиально.
AlexRybakov Автор
В рамках данной задачи, считаю нецелесообразным учет превышений. Ибо через тайну напролом без троп тоже на сахар…
Да и шибко много мороки с такими анализами, а ситуацию он радикально, да и вообще вряд ли поменяет
sshikov
Ну да, согласен (и потом, это уже маршрут придется строить, а его даже по дорогам пока не всегда получается построить хорошо).
Ну и потом, если вдуматься, то доступность не является чем-то одномерным, ну скажем, как я чуть выше отвечал уже — доступность для человека с подготовкой (пешком через тайгу напролом с байдаркой ;) и человека с багажом, собакой и детьми — это две разные вещи.
AlexRybakov Автор
Ну вот именно в расчёте на фотографа и его рюкзак с техникой и такие весовые коэффициенты на каждый класс значений.
Я сам как бы фотограф и сам хожу, слегка в темп последние 30 лет. Потому проехать 1500 ам на машине в попой в тепле и пройти 150км по тропе пешком с палаткой — для меня вещи принципиально разные