<div dir="ltr">Hi Team,<div><br></div><div>I have been trying to get the shortest path for a lot of pairs of start and end points for a given road layer. Although I'm able to achieve this by creating the <b>QgsVectorLayerDirector </b>and Graph object for every pair of start and end points.</div><div><br></div><div>However, I could not reuse the graph object or director object for all the pairs of start and end points, eventually the code is as slow as executing the<b> 'native:shortestpathpointtopoint'</b> processing tool programmatically for each pair of start and end points.</div><div><br></div><div>Essentially, I'm trying to improve the performance by reusing the graph objects. Can someone help me whether there is a possibility to reuse the graph object for large sets of pairs? Here is the code snippet I have used.</div><div><br></div><div><pre style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace;font-size:12px;line-height:1.4;margin-top:0px;margin-bottom:0px;padding:12px;overflow:auto;color:rgb(64,64,64)"><span class="gmail-n" style="box-sizing:border-box">vectorLayer</span> <span class="gmail-o" style="box-sizing:border-box;color:rgb(102,102,102)">=</span> <span class="gmail-n" style="box-sizing:border-box">QgsVectorLayer</span><span class="gmail-p" style="box-sizing:border-box">(</span><span class="gmail-s1" style="box-sizing:border-box;color:rgb(186,33,33)">'testdata/network.gpkg|layername=network_lines'</span><span class="gmail-p" style="box-sizing:border-box">,</span> <span class="gmail-s1" style="box-sizing:border-box;color:rgb(186,33,33)">'lines'</span><span class="gmail-p" style="box-sizing:border-box">)</span>
<span class="gmail-n" style="box-sizing:border-box">director</span> <span class="gmail-o" style="box-sizing:border-box;color:rgb(102,102,102)">=</span> <span class="gmail-n" style="box-sizing:border-box">QgsVectorLayerDirector</span><span class="gmail-p" style="box-sizing:border-box">(</span><span class="gmail-n" style="box-sizing:border-box">vectorLayer</span><span class="gmail-p" style="box-sizing:border-box">,</span> <span class="gmail-o" style="box-sizing:border-box;color:rgb(102,102,102)">-</span><span class="gmail-mi" style="box-sizing:border-box;color:rgb(102,102,102)">1</span><span class="gmail-p" style="box-sizing:border-box">,</span> <span class="gmail-s1" style="box-sizing:border-box;color:rgb(186,33,33)">''</span><span class="gmail-p" style="box-sizing:border-box">,</span> <span class="gmail-s1" style="box-sizing:border-box;color:rgb(186,33,33)">''</span><span class="gmail-p" style="box-sizing:border-box">,</span> <span class="gmail-s1" style="box-sizing:border-box;color:rgb(186,33,33)">''</span><span class="gmail-p" style="box-sizing:border-box">,</span> <span class="gmail-n" style="box-sizing:border-box">QgsVectorLayerDirector</span><span class="gmail-o" style="box-sizing:border-box;color:rgb(102,102,102)">.</span><span class="gmail-n" style="box-sizing:border-box">DirectionBoth</span><span class="gmail-p" style="box-sizing:border-box">)</span>
<span class="gmail-n" style="box-sizing:border-box">strategy</span> <span class="gmail-o" style="box-sizing:border-box;color:rgb(102,102,102)">=</span> <span class="gmail-n" style="box-sizing:border-box">QgsNetworkDistanceStrategy</span><span class="gmail-p" style="box-sizing:border-box">()</span>
<span class="gmail-n" style="box-sizing:border-box">director</span><span class="gmail-o" style="box-sizing:border-box;color:rgb(102,102,102)">.</span><span class="gmail-n" style="box-sizing:border-box">addStrategy</span><span class="gmail-p" style="box-sizing:border-box">(</span><span class="gmail-n" style="box-sizing:border-box">strategy</span><span class="gmail-p" style="box-sizing:border-box">)</span>
<span class="gmail-n" style="box-sizing:border-box">builder</span> <span class="gmail-o" style="box-sizing:border-box;color:rgb(102,102,102)">=</span> <span class="gmail-n" style="box-sizing:border-box">QgsGraphBuilder</span><span class="gmail-p" style="box-sizing:border-box">(</span><span class="gmail-n" style="box-sizing:border-box">vectorLayer</span><span class="gmail-o" style="box-sizing:border-box;color:rgb(102,102,102)">.</span><span class="gmail-n" style="box-sizing:border-box">sourceCrs</span><span class="gmail-p" style="box-sizing:border-box">())</span>
<span class="gmail-n" style="box-sizing:border-box">startPoint</span> <span class="gmail-o" style="box-sizing:border-box;color:rgb(102,102,102)">=</span> <span class="gmail-n" style="box-sizing:border-box">QgsPointXY</span><span class="gmail-p" style="box-sizing:border-box">(</span><span class="gmail-mf" style="box-sizing:border-box;color:rgb(102,102,102)">1179661.925139</span><span class="gmail-p" style="box-sizing:border-box">,</span><span class="gmail-mf" style="box-sizing:border-box;color:rgb(102,102,102)">5419188.074362</span><span class="gmail-p" style="box-sizing:border-box">)</span>
<span class="gmail-n" style="box-sizing:border-box">endPoint</span> <span class="gmail-o" style="box-sizing:border-box;color:rgb(102,102,102)">=</span> <span class="gmail-n" style="box-sizing:border-box">QgsPointXY</span><span class="gmail-p" style="box-sizing:border-box">(</span><span class="gmail-mf" style="box-sizing:border-box;color:rgb(102,102,102)">1180942.970617</span><span class="gmail-p" style="box-sizing:border-box">,</span><span class="gmail-mf" style="box-sizing:border-box;color:rgb(102,102,102)">5420040.097560</span><span class="gmail-p" style="box-sizing:border-box">)</span>
<span class="gmail-n" style="box-sizing:border-box">tiedPoints</span> <span class="gmail-o" style="box-sizing:border-box;color:rgb(102,102,102)">=</span> <span class="gmail-n" style="box-sizing:border-box">director</span><span class="gmail-o" style="box-sizing:border-box;color:rgb(102,102,102)">.</span><span class="gmail-n" style="box-sizing:border-box">makeGraph</span><span class="gmail-p" style="box-sizing:border-box">(</span><span class="gmail-n" style="box-sizing:border-box">builder</span><span class="gmail-p" style="box-sizing:border-box">,</span> <span class="gmail-p" style="box-sizing:border-box">[</span><span class="gmail-n" style="box-sizing:border-box">startPoint</span><span class="gmail-p" style="box-sizing:border-box">,</span> <span class="gmail-n" style="box-sizing:border-box">endPoint</span><span class="gmail-p" style="box-sizing:border-box">])</span>
<span class="gmail-n" style="box-sizing:border-box">tStart</span><span class="gmail-p" style="box-sizing:border-box">,</span> <span class="gmail-n" style="box-sizing:border-box">tStop</span> <span class="gmail-o" style="box-sizing:border-box;color:rgb(102,102,102)">=</span> <span class="gmail-n" style="box-sizing:border-box">tiedPoints</span>
<span class="gmail-n" style="box-sizing:border-box">graph</span> <span class="gmail-o" style="box-sizing:border-box;color:rgb(102,102,102)">=</span> <span class="gmail-n" style="box-sizing:border-box">builder</span><span class="gmail-o" style="box-sizing:border-box;color:rgb(102,102,102)">.</span><span class="gmail-n" style="box-sizing:border-box">graph</span><span class="gmail-p" style="box-sizing:border-box">()</span>
<span class="gmail-n" style="box-sizing:border-box">idxStart</span> <span class="gmail-o" style="box-sizing:border-box;color:rgb(102,102,102)">=</span> <span class="gmail-n" style="box-sizing:border-box">graph</span><span class="gmail-o" style="box-sizing:border-box;color:rgb(102,102,102)">.</span><span class="gmail-n" style="box-sizing:border-box">findVertex</span><span class="gmail-p" style="box-sizing:border-box">(</span><span class="gmail-n" style="box-sizing:border-box">tStart</span><span class="gmail-p" style="box-sizing:border-box">)</span>
<span class="gmail-n" style="box-sizing:border-box">idxEnd</span> <span class="gmail-o" style="box-sizing:border-box;color:rgb(102,102,102)">=</span> <span class="gmail-n" style="box-sizing:border-box">graph</span><span class="gmail-o" style="box-sizing:border-box;color:rgb(102,102,102)">.</span><span class="gmail-n" style="box-sizing:border-box">findVertex</span><span class="gmail-p" style="box-sizing:border-box">(</span><span class="gmail-n" style="box-sizing:border-box">tStop</span><span class="gmail-p" style="box-sizing:border-box">)</span>
<span class="gmail-p" style="box-sizing:border-box">(</span><span class="gmail-n" style="box-sizing:border-box">tree</span><span class="gmail-p" style="box-sizing:border-box">,</span> <span class="gmail-n" style="box-sizing:border-box">costs</span><span class="gmail-p" style="box-sizing:border-box">)</span> <span class="gmail-o" style="box-sizing:border-box;color:rgb(102,102,102)">=</span> <span class="gmail-n" style="box-sizing:border-box">QgsGraphAnalyzer</span><span class="gmail-o" style="box-sizing:border-box;color:rgb(102,102,102)">.</span><span class="gmail-n" style="box-sizing:border-box">dijkstra</span><span class="gmail-p" style="box-sizing:border-box">(</span><span class="gmail-n" style="box-sizing:border-box">graph</span><span class="gmail-p" style="box-sizing:border-box">,</span> <span class="gmail-n" style="box-sizing:border-box">idxStart</span><span class="gmail-p" style="box-sizing:border-box">,</span> <span class="gmail-mi" style="box-sizing:border-box;color:rgb(102,102,102)">0</span><span class="gmail-p" style="box-sizing:border-box">)</span></pre></div><div>-Prem</div><div><br></div><div><br></div></div>