6.3. Занятие: Сетевой анализ
Расчет кратчайшего расстояния между двумя точками это обычная задача GIS. Инструменты для решения этой задачи можно найти в Processing Toolbox.
Цель этого урока: научиться использовать алгоритмы Network analysis.
6.3.1. Идем дальше: Инструменты и данные
Вы можете найти все алгоритмы сетевого анализа в меню
. Как видите, там есть множество инструментов:Откройте проект exercise_data/network_analysis/network.qgz
. Он состоит из двух слоев:
network_points
.network_lines
.
Слой network_lines уже показывает направления, которые помогают понять дорожную сеть.
Инструменты поиска кратчайшего пути позволяют рассчитать кратчайший или самый быстрый путь между двумя точками сети при условии, что:
на карте выбраны начальная и конечная точки,
начальная точка выбрана на карте, а конечные точки взяты из слоя точек,
начальные точки взяты из слоя точки, конечная точка отобрана на карте.
Давайте начнем.
6.3.2. Рассчитать кратчайший путь (от точки к точке)
позволяет вам рассчитать кратчайшее расстояние между двумя вручную выбранными точками на карте.
На данном примере мы рассчитаем кратчайший (не самый быстрый) путь между двумя точками.
Откройте алгоритм Shortest path (point to point).
Выберите network_lines в Vector layer representing network.
Используйте
Shortest
в Path type to calculate.Используйте эти две точки как начальную и конечную точки для анализа:
Кликни на кнопку … рядом с Start point (x, y) и выберите место и пометьте
Starting Point
на картинке. Координаты отобранной точки добавлены.Сделайте то же самое, но выбрав место, помеченное
Ending point
для End point (x, y).Кликните на кнопку Run:
Новый линейный слой создан, который представляет кратчайший путь между выбранными точками. Уберите надпись в слое
network_lines
, чтобы лучше увидеть результат:Откройте таблицу атрибутов выходного слоя. Там есть три поля, представляющие координаты начальной и конечной точек и стоимость/затраты.
Мы выбираем
Shortest
в виде Path type to calculate, чтобы стоимость представляла собой расстояние в единицах слоя между двумя местоположениямиучастками.В нашем случае кратчайшее расстояние между выбранными точками составляет около
1000
метров:
Теперь, когда вы знаете, как пользоваться этим инструментом, вы можете попробовать с другими участками.
6.3.3. Попробуйте сами: Самый быстрый путь
Используя те же данные, что и в предыдущем упражнении, попробуйте вычислить самый быстрый путь между двумя точками.
Сколько времени вам нужно, чтобы пройти от начальной до конечной точки?
6.3.4. Идем дальше: Дополнительные опции
Давайте изучим еще несколько опций инструментов сетевого анализа. В предыдущее упражнении мы рассчитали самый быстрый маршрут между двумя точками. Как вы понимаете, время зависит от скорости движения.
Мы используем те же слои, начальные и конечные точки предыдущих упражнений.
Откройте алгоритм Shortest path (point to point).
Заполните Input layer, Start point (x, y) а также End point (x, y) как мы делали ранее.
Выберите
Fastest
в Path type to calculate.Открой меню Advanced parameter.
Измените Default speed (km/h) значение по умолчанию
50
на4
.Кликните на кнопку Run.
После завершения алгоритма закройте диалоговое окно и откройте таблицу с атрибутами выходного слоя.
Поле стоимости содержит значение в соответствии с выбранным вами параметром скорости. Мы можем преобразовать поле стоимости из часов с дробями в более удобочитаемые значения - минуты.
Откройте поле калькулятора, нажав на значок и добавьте новое поле minutes, умножив поле cost на 60:
Вот и все! Теперь вы знаете, сколько минут потребуется, чтобы добраться из одной точки в другую.
6.3.5. Кратчайший путь с ограничением скорости
На панели инструментов сетевого анализа имеются и другие интересные опции. Посмотрите на эту карту:
Мы хотели бы узнать самый быстрый маршрут с учетом ограничений скорости на каждом участке дороги (надписи обозначают ограничения скорости в км / ч). Наикратчайший путь без учета ограничений скорости, конечно же, фиолетовый маршрут. Но на этом участке дороги ограничение скорости составляет 20 км / ч, а по зеленой дороге можно ехать со скоростью 100 км/ч!
Как и в первом упражнении, мы используем
и вручную выберем начальную и конечную точки.Откройте алгоритм
.Выберите network_lines в параметрах Vector layer representing network.
Выберите
Fastest
в Path type to calculate.Кликни на кнопку … рядом с Start point (x, y) и выберите начальную точку.
То же самое проделайте по End point (x, y).
Откройте меню Advanced parameters.
Выберите поле скорости в качестве параметра Speed Field. С этой опцией алгоритм будет учитывать ограничения скорости для каждой дороги.
Нажмите на кнопку Run.
Выключите слой
network_lines
, чтобы лучше увидеть результат.
Как видите, самый быстрый маршрут не соответствует самому короткому.
6.3.6. Зона обслуживания (из слоя)
Алгоритм
может ответить на вопрос: какие местности доступны с учетом значения расстояния или времени?Примечание
является тем же алгоритмом, но он позволяет вручную выбрать точку на карте.
С учетом расстояние 250
метров, мы хотим узнать, как далеко мы можем пройти в сети от каждой точки слоя network_points.
Снимите флажок со всех слоев, кроме
network_points
.Откройте алгоритм
.Выберите
network_lines
для Vector layer representing network.Выберите
network_points
для Vector layer with start points.Выберите
Shortest
в Path type to calculate.Наберите
250
для параметра Travel cost.Кликните на кнопку Run и закройте диалоговое окно.
Выходной слой представляет собой максимальный путь, который вы можете пройти от точечных объектов на расстоянии 250 метров:
Круто, не правда ли?
6.3.7. В заключении
Теперь вы узнали, как пользоваться алгоритмом Network analysis для решения задач, связанных с кратчайшим и самыми быстрым маршрутом.
Мы теперь сможем выполнить некоторые действия по пространственной статистике с данными векторного слоя. Поехали!
6.3.8. Что дальше?
Мы покажем Вам, как запускать алгоритмы пространственной статистики для векторных наборов данных.