I ask for your help with the PyQGIS API. Being a new user of GIS I would like to carry out an operation.
It is for me to look for the shortest path in a graph using the DIJKSTRA algorithm.
The code of the QGIS doc after some small adaptations works well except that I do not recover anything at the end if it is not a graphic plot. After the execution I would like to retrieve the shortest path found (the result) as an entity that I insert in a table and so on for possibly other shorter paths that I will calculate.
from PyQt4.QtCore import * from PyQt4.QtGui import * from qgis.core import * from qgis.gui import * from qgis.networkanalysis import * vl = qgis.utils.iface.mapCanvas().currentLayer() director = QgsLineVectorLayerDirector(vl, -1, '', '', '', 3) properter = QgsDistanceArcProperter() director.addProperter(properter) crs = qgis.utils.iface.mapCanvas().mapRenderer().destinationCrs() builder = QgsGraphBuilder(crs) pStart = QgsPoint(-0.835953, 0.15679) pStop = QgsPoint(-1.1027, 0.699986) tiedPoints = director.makeGraph(builder, [pStart, pStop]) graph = builder.graph() tStart = tiedPoints tStop = tiedPoints idStart = graph.findVertex(tStart) idStop = graph.findVertex(tStop) (tree, cost) = QgsGraphAnalyzer.dijkstra(graph, idStart, 0) if tree[idStop] == -1: print "Path not found" else: p =  curPos = idStop while curPos != idStart: p.append(graph.vertex(graph.arc(tree[curPos]).inVertex()).point()) curPos = graph.arc(tree[curPos]).outVertex(); p.append(tStart) rb = QgsRubberBand(qgis.utils.iface.mapCanvas()) rb.setColor(Qt.red) for pnt in p: rb.addPoint(pnt)
May somebody help?