Дмитрий Грубый высказал в Телеграм интересную идею по подсчету плотности уличной дорожной сети (УДС) в городах. А именно: при подсчете плотности уличной дорожной сети в европейских странах учитываются местные дороги (предназначенные для подъезда к домам, имеющие ограничения скорости в 30 км/ч и, в целом, не предназначенные для сквозного проезда). При этом местных дорог такого типа больше, чем остальных. Дороги аналогичного назначения - дворовые проезды - при подсчете плотности дорожной сети в нашей стране не учитываются. В результате получается, что у нас плотность УДС многократно ниже, чем в Европе.
Дмитрий предложил посчитать плотность не всех дорог, а только тех, где есть хотя бы две полосы движения в одну сторону. Я сделал первый шаг в этом направлении, который читателю нужно воспринимать критически по многим причинам.
Подход
Я постарался прикинуть, какой ответ на этот вопрос на основании геоданных
OpenStreetMap. У подхода есть ряд недостатков:
- у многих дорог не указано число полос
- я исходил из предположения, что если на дороге много полос, то это не велосипедная дорога
- границы городов брались формально по данным OpenStreetMap, что может быть не совсем отражает суть дела
- наверняка не учтены многие мелкие дороги
Методика
- Границы города брались по данным OpenStreetMap
- В городе находились все односторонние дороги с количеством полос, больше одной, и все двусторонние дороги с количеством полос, больше двух.
- Если в поле «количество полос» указывалось несколько значений через точку с запятой, то они суммировались.
- Если пользователь явно делил полосы на группы, то за количество полос в группе бралось первое число (даже если в строке указывалось несколько чисел).
- Плотность дорог считалась как суммарная длина всех учтенных полос, деленная на корень из площади города.
Решение
Для собственно осуществления подсчета была написана
программа на Python. В процессе написания программы не было цели сделать красивый программный код. Он просто работает - и всё. Основная проблема, что была выявлена: Роскомнадзор ухитрился заблокировать API OpenStreetMap для получения фильтрованных данных. Основное время было потрачено на настройку обхода блокировки, а не на собственно полезный труд. При реализации использована библиотека
osmnx.
Результаты
Результаты представлены в таблице:
Представленные площади немного отличаются от опубликованных в Википедии за исключением Москвы. В OpenStreetMap, действительно, выдаются в качестве границ Москвы те, что были до присоединения Новой Москвы. Думаю, что это даже не так уж плохо.
Интересно, что гипотеза Дмитрия подтверждается. Однако, нужно провести критический анализ моей работы - возможно, какие-то существенные аспекты не были учтены или я банально допустил ошибку при программировании.