Расчет расстояний по графу

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Ответить
2labu2dab
Новоприбывший
Сообщения: 2
Зарегистрирован: 05 май 2022, 06:12
Репутация: 0
Откуда: Kamchatka

Расчет расстояний по графу

Сообщение 2labu2dab » 21 дек 2022, 02:19

Всем привет.
Есть полигональный слой с земельными участками и слой дорог. Дороги бывают нескольких типов (тип дороги отражен в атрибуте). Задача следующая: рассчитать расстояния от земельных участков до разных типов дорог по графу дорог. Первым делом я нашел тип ближайшей дороги к каждому ЗУ с помощью выражения "overlay_nearest(layer:='Road', expression:="Type", limit:=1)[0]".
Далее я нашел расстояние до этой дороги.
Выражение:
"length(shortest_line($geometry, geometry( get_feature( 'Road',fid, overlay_nearest(layer:='Road', expression:=fid, limit:=1)[0] ) ) ))".
Далее я нашел ближайшую точку на слое дорог от ЗУ.
Выражение:
"end_point( shortest_line($geometry, geometry( get_feature( 'road',fid, overlay_nearest(layer:='road', expression:=fid, limit:=1)[0] ) ) ))".
И вот теперь от множества этих точек (Множество А) мне нужно рассчитать расстояния до остальных типов дорог.
Screenshot_2.png
Земельные участки и ближайшие дороги
Screenshot_2.png (29.82 КБ) 946 просмотров
Предварительно я нашел "пересечения" разных типов дорог получив множество точек (Множество Б).
Screenshot_1.png
Дороги и пересечения
Screenshot_1.png (97.72 КБ) 946 просмотров
То есть мне нужно найти расстояние от Аn до нескольких точек Б (количество точек зависит от количества типов дорог)
С помощью библиотеки сетевого анализа я написал алгоритм, который считает расстояние от Аn до всех точек Б (используя слой дорог как граф) и выбирает минимальные расстояние для каждого типа дорог.
Проблема в следующем: Множество точек Б очень велико и алгоритм работает медленно.
Есть у кого идеи как сократить множество Б(Я уже прописал в алгоритме, чтобы он не считал расстояние до типа дороги, который является ближайшим)?.

konst555
Активный участник
Сообщения: 211
Зарегистрирован: 11 авг 2015, 16:13
Репутация: 45

Re: Расчет расстояний по графу

Сообщение konst555 » 21 дек 2022, 16:44

Есть такая функция

Distance matrix
This algorithm creates a table containing a distance matrix, with distances between all the points in a points layer.

Там можно указать сколько использовать ближайших точек. К сожалению, это число постоянное.
Может это даже лучше?

konst555
Активный участник
Сообщения: 211
Зарегистрирован: 11 авг 2015, 16:13
Репутация: 45

Re: Расчет расстояний по графу

Сообщение konst555 » 21 дек 2022, 16:48

Извините, вам нужно вдоль дорог...

Ответить

Вернуться в «QGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 8 гостей