Постановка задачи
В рамках проекта Фото-Географического Атласа России (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 очень сложно доступная точка - только
с морских судов и пр пр радости
Собственно - все. Мы посчитали искомую характеристику и теперь
можем расклассифицировать точки на карте по ней (для наглядности)
или просто указать ее в атрибутах.