6.3. Занятие: Сетевой анализ

Расчет кратчайшего расстояния между двумя точками это обычная задача GIS. Инструменты для решения этой задачи можно найти в Processing Toolbox.

Цель этого урока: научиться использовать алгоритмы Network analysis.

6.3.1. basic Идем дальше: Инструменты и данные

Вы можете найти все алгоритмы сетевого анализа в меню Processing ► Network Analysis. Как видите, там есть множество инструментов:

../../../_images/select_network_algorithms.png

Откройте проект exercise_data/network_analysis/network.qgz. Он состоит из двух слоев:

  • network_points.

  • network_lines.

Слой network_lines уже показывает направления, которые помогают понять дорожную сеть.

../../../_images/network_map.png

Инструменты поиска кратчайшего пути позволяют рассчитать кратчайший или самый быстрый путь между двумя точками сети при условии, что:

  • на карте выбраны начальная и конечная точки,

  • начальная точка выбрана на карте, а конечные точки взяты из слоя точек,

  • начальные точки взяты из слоя точки, конечная точка отобрана на карте.

Давайте начнем.

6.3.2. basic Рассчитать кратчайший путь (от точки к точке)

Network analysis ► Shortest path (point to point) позволяет вам рассчитать кратчайшее расстояние между двумя вручную выбранными точками на карте.

На данном примере мы рассчитаем кратчайший (не самый быстрый) путь между двумя точками.

  1. Откройте алгоритм Shortest path (point to point).

  2. Выберите network_lines в Vector layer representing network.

  3. Используйте Shortest в Path type to calculate.

    Используйте эти две точки как начальную и конечную точки для анализа:

    ../../../_images/start_end_point.png
  4. Кликни на кнопку рядом с Start point (x, y) и выберите место и пометьте Starting Point на картинке. Координаты отобранной точки добавлены.

  5. Сделайте то же самое, но выбрав место, помеченное Ending point для End point (x, y).

  6. Кликните на кнопку Run:

    ../../../_images/shortest_point.png
  7. Новый линейный слой создан, который представляет кратчайший путь между выбранными точками. Уберите надпись в слое network_lines, чтобы лучше увидеть результат:

    ../../../_images/shortest_point_result.png
  8. Откройте таблицу атрибутов выходного слоя. Там есть три поля, представляющие координаты начальной и конечной точек и стоимость/затраты.

    Мы выбираем Shortest в виде Path type to calculate, чтобы стоимость представляла собой расстояние в единицах слоя между двумя местоположениямиучастками.

    В нашем случае кратчайшее расстояние между выбранными точками составляет около 1000 метров:

    ../../../_images/shortest_point_attributes.png

Теперь, когда вы знаете, как пользоваться этим инструментом, вы можете попробовать с другими участками.

6.3.3. moderate Попробуйте сами: Самый быстрый путь

Используя те же данные, что и в предыдущем упражнении, попробуйте вычислить самый быстрый путь между двумя точками.

Сколько времени вам нужно, чтобы пройти от начальной до конечной точки?

Проверьте свои результаты

6.3.4. moderate Идем дальше: Дополнительные опции

Давайте изучим еще несколько опций инструментов сетевого анализа. В предыдущее упражнении мы рассчитали самый быстрый маршрут между двумя точками. Как вы понимаете, время зависит от скорости движения.

Мы используем те же слои, начальные и конечные точки предыдущих упражнений.

  1. Откройте алгоритм Shortest path (point to point).

  2. Заполните Input layer, Start point (x, y) а также End point (x, y) как мы делали ранее.

  3. Выберите Fastest в Path type to calculate.

  4. Открой меню Advanced parameter.

  5. Измените Default speed (km/h) значение по умолчанию 50 на 4.

    ../../../_images/shortest_path_advanced.png
  6. Кликните на кнопку Run.

  7. После завершения алгоритма закройте диалоговое окно и откройте таблицу с атрибутами выходного слоя.

    Поле стоимости содержит значение в соответствии с выбранным вами параметром скорости. Мы можем преобразовать поле стоимости из часов с дробями в более удобочитаемые значения - минуты.

  8. Откройте поле калькулятора, нажав на значок calculateField и добавьте новое поле minutes, умножив поле cost на 60:

    ../../../_images/shortest_path_conversion.png

Вот и все! Теперь вы знаете, сколько минут потребуется, чтобы добраться из одной точки в другую.

6.3.5. hard Кратчайший путь с ограничением скорости

На панели инструментов сетевого анализа имеются и другие интересные опции. Посмотрите на эту карту:

../../../_images/speed_limit.png

Мы хотели бы узнать самый быстрый маршрут с учетом ограничений скорости на каждом участке дороги (надписи обозначают ограничения скорости в км / ч). Наикратчайший путь без учета ограничений скорости, конечно же, фиолетовый маршрут. Но на этом участке дороги ограничение скорости составляет 20 км / ч, а по зеленой дороге можно ехать со скоростью 100 км/ч!

Как и в первом упражнении, мы используем Network analysis ► Shortest path (point to point) и вручную выберем начальную и конечную точки.

  1. Откройте алгоритм Network analysis ► Shortest path (point to point).

  2. Выберите network_lines в параметрах Vector layer representing network.

  3. Выберите Fastest в Path type to calculate.

  4. Кликни на кнопку рядом с Start point (x, y) и выберите начальную точку.

  5. То же самое проделайте по End point (x, y).

  6. Откройте меню Advanced parameters.

  7. Выберите поле скорости в качестве параметра Speed Field. С этой опцией алгоритм будет учитывать ограничения скорости для каждой дороги.

    ../../../_images/speed_limit_parameters.png
  8. Нажмите на кнопку Run.

  9. Выключите слой network_lines, чтобы лучше увидеть результат.

    ../../../_images/speed_limit_result.png

Как видите, самый быстрый маршрут не соответствует самому короткому.

6.3.6. moderate Зона обслуживания (из слоя)

Алгоритм Network Analysis ► Service area (from layer) может ответить на вопрос: какие местности доступны с учетом значения расстояния или времени?

Примечание

Network Analysis ► Service area (from point) является тем же алгоритмом, но он позволяет вручную выбрать точку на карте.

С учетом расстояние 250 метров, мы хотим узнать, как далеко мы можем пройти в сети от каждой точки слоя network_points.

  1. Снимите флажок со всех слоев, кроме network_points.

  2. Откройте алгоритм Network Analysis ► Service area (from layer).

  3. Выберите network_lines для Vector layer representing network.

  4. Выберите network_points для Vector layer with start points.

  5. Выберите Shortest в Path type to calculate.

  6. Наберите 250 для параметра Travel cost.

  7. Кликните на кнопку Run и закройте диалоговое окно.

    ../../../_images/service_area.png

    Выходной слой представляет собой максимальный путь, который вы можете пройти от точечных объектов на расстоянии 250 метров:

    ../../../_images/service_area_result.png

Круто, не правда ли?

6.3.7. В заключении

Теперь вы узнали, как пользоваться алгоритмом Network analysis для решения задач, связанных с кратчайшим и самыми быстрым маршрутом.

Мы теперь сможем выполнить некоторые действия по пространственной статистике с данными векторного слоя. Поехали!

6.3.8. Что дальше?

Мы покажем Вам, как запускать алгоритмы пространственной статистики для векторных наборов данных.