Важно

Translation is a community effort you can join. This page is currently translated at 76.19%.

6.3. Lesson: Network Analysis

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

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

6.3.1. ★☆☆ Follow Along: The Tools and the Data

Вы можете найти все алгоритмы сетевого анализа в меню 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. ★☆☆ Calculate the shortest path (point to point)

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. Click on the button next to Start point (x, y) and choose the location tagged with Starting Point in the picture. Enable the snapping options for an accurate selection. The coordinates of the clicked point are added.

  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. ★★☆ Try Yourself: Fastest path

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

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

6.3.4. ★★☆ Follow Along: Advanced options

Let us explore some more options of the Network Analysis tools. In the previous exercise we calculated the fastest route between two points. As you can imagine, the time depends on the travel speed.

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

  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. Open the field calculator by clicking on the calculateField icon

  9. Add a new field to store the path cost in minutes.

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

That’s it! Now you know how many minutes it will take to get from one point to the other one if the whole network speed is at 4 km/h.

6.3.5. ★★★ Shortest path with speed limit

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

../../../_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. Select the Start point (x, y) and End point (x, y) as we did before

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

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

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

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

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

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

6.3.6. ★★☆ Service area (from layer)

Алгоритм 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. In Conclusion

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

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

6.3.8. What’s Next?

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