Я только что впервые попробовал инструменты обработки QGIS.
При первом использовании поиска по кратчайшему пути алгоритм строит график пути (конечно). Тем не менее, график никогда не используется повторно. Каждый раз, когда используется алгоритм, построение графика начинается снова. Я не знаком с точным кодом, используемым для него, но я думаю, что график является общесетевым, не связанным с указанными точками c, которые я выбрал. Так есть ли способ повторно использовать график? Даже экспортировать его в файл?
Моя сеть большая (более 200 тыс. Функций), поэтому эффективность важна. Сеть редко обновляется, поэтому вычисление графика может быть легко выполнено время от времени.
Я просмотрел документы и настройки инструментов обработки, и эта опция кажется недоступной (что удивительно). Так что, может быть, я что-то упустил, или, может быть, кто-то может предложить способ сериализации графика и сохранить его с использованием кода python? Я использую QGIS 3.1 (Ла-Корунья).
Как указано на странице anitagraser github инструменты обработки, использующие графики, выглядят просто, используя Dijkstra algoritghm.
builder = QgsGraphBuilder( crs )
graph = builder.graph()
from_id = graph.findVertex(from_point)
to_id = graph.findVertex(to_point)
(tree,cost) = QgsGraphAnalyzer.dijkstra(graph,from_id,0)
Я полагаю, что для использования этого потребуется создание другого инструмента, а не удобный инструмент поиска кратчайшего пути с хорошим GUI и интеграцией с выбором точки и так далее. Это было бы неприемлемо. Цель состояла в том, чтобы иметь возможность выполнить одну и ту же задачу на любом p c с неизмененным QGIS (надстройки не нужны, только скрипт). Но может случиться так, что это невозможно. Таким образом, проблема приводит к:
- возможно ли настроить существующий инструмент обработки, кэшировать график или даже сохранить его в файле?
- может Я как-то дублирую инструмент и применяю небольшие изменения?
Я уже задавал этот вопрос на gis stack echange . Мой вопрос, вероятно, имеет программный ответ, поэтому я делаю репост как исключение .