<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><font><font color="#000000" face="arial, sans-serif">Hello everyone,</font></font></div><div><font><font color="#000000" face="arial, sans-serif"><br></font></font></div><div><font><font color="#000000" face="arial, sans-serif">As GSoC comes to a close, I am pleased to present my final report summarizing the work I have accomplished over the past twelve weeks. This period has been an incredible experience, providing me with valuable learning opportunities while collaborating with the pgRouting community and mentors. The report adheres to the guidelines outlined by Google [1] and OSGeo GSoC Admins [2].<br></font></font></div><div><font><font color="#000000" face="arial, sans-serif"><br></font></font></div><div><font><font color="#000000" face="arial, sans-serif">1. (a) </font></font><b style="color:rgb(0,0,0);font-family:arial,sans-serif">Title</b><span style="color:rgb(0,0,0);font-family:arial,sans-serif">: </span>Improving Parameters and
Standardizing Results in pgr_withPointsDD
Function for pgRouting</div><div><span style="color:rgb(0,0,0);font-family:arial,sans-serif">    (b) </span><b style="color:rgb(0,0,0);font-family:arial,sans-serif">Organization</b><span style="color:rgb(0,0,0);font-family:arial,sans-serif">: </span><span style="color:rgb(0,0,0)">pgRouting under OSGeo</span></div><div><font color="#000000" face="arial, sans-serif"><br>2. <b>Abstract</b>: </font></div><div><span style="color:rgb(0,0,0);font-family:arial,sans-serif">This project aims to enhance the functionality of the pgr_withPointsDD function in pgRouting </span><span style="color:rgb(0,0,0);font-family:arial,sans-serif">by improving the 'driver_side' optional parameter, adding a result column and normalizing </span><span style="color:rgb(0,0,0);font-family:arial,sans-serif">the output. And all overloads will be implemented (Single vertex & Multiple vertices). </span></div><div><span style="color:rgb(0,0,0);font-family:arial,sans-serif"><br></span></div><div><span style="color:rgb(0,0,0);font-family:arial,sans-serif">The pgr_withPointsDD function modifies the graph to include points and using Dijkstra algorithm, extracts all the nodes and points that have costs less than or equal to the value from the starting point. The edges extracted will conform to the corresponding spanning tree.</span><span style="color:rgb(0,0,0);font-family:arial,sans-serif"><br></span></div><div><span style="color:rgb(0,0,0);font-family:arial,sans-serif"><br></span></div><div><div><font color="#000000" face="arial, sans-serif">During the project, after discussions, the expectations for this function were somewhat different from the original proposal. The final outcome is as follows:</font></div><div><ul><li><font color="#000000" face="arial, sans-serif">The function signatures have changed, incorporating new columns in the new signatures.</font></li><li><font color="#000000" face="arial, sans-serif">The function primarily caters to driving cases, hence the 'driver_side' parameter has transitioned from optional to mandatory. Moreover, the valid values for this parameter differ for directed and undirected graphs.</font></li></ul><font color="#000000" face="arial, sans-serif"><br></font></div></div><div><font color="#000000" face="arial, sans-serif"><font>3. <b>The state of the art before GSoC:</b></font> </font></div><div><br></div><div>Signature of current pgr_withPointsDD function: </div><div><ul><li>The `driving_side` parameter is optional.</li><li>Default value of `driving_side` is `b`.</li></ul><div><font>Results of current pgr_withPointsDD function: </font><br></div><ul><li>Depending on the overload used, the columns `start_vid` might be missing.</li><li>Overload pgr_withPointsDD (Single vertex) does not have `start_vid`.</li></ul></div><div><font>While the pgr_withPointsDD function has been successfully implemented, further
improvements are necessary. Specifically, the result columns need to include depth of node,
and the 'driver_side' optional parameter requires refinement to enhance routing control and
accuracy. Additionally, normalizing the output of all overloads will make the function more
user-friendly. The pgr_withPointDD function will likely officially be part of the next major release, so it is
very important to overload and improve it.</font><br></div><div><font color="#000000" face="arial, sans-serif"><br>4. <b>The addition (added value) that your project brought to the software:</b> </font></div><div><div>The deliverables include code, documentation, documentation tests, and the pgTAP tests of pgr_withPointsDD function:</div></div><div><br></div><div>In all the overloads, the function signatures have been modified:</div><div><ul><li>The `driving_side` parameter now is compulsory.</li><li>Valid values differ for directed and undirected graphs.</li><ul><li>Does not have a default value.</li><li>In directed graph, valid values are [r, R, l, L]</li><li>In undirected graph, valid values are [b, B]</li></ul></ul></div><div>Standardize the output by adding a column to make the
returns including the depth of node, so that it has a unified output with other DD functions
and expand the usability of the function. Return columns on all overloads: </div><div><ul><li><font>Before: seq, [start_vid], node, edge, cost, agg_cost </font><br></li><li>After: seq, depth, start_vid, node, edge, cost, agg_cost </li></ul></div><div><font>Improve documentation on how to migrate to new features, making it easy for users and other
developers to adapt to the new overloaded function. </font><br></div><div><font color="#000000" face="arial, sans-serif"><br>5. <b>Potential Future Work</b>: </font></div><div><font color="#000000" face="arial, sans-serif">The work on the pgr_withPointsDD function has already been completed. However, in line with the goal of standardizing similar functions, the signatures of other relevant functions can also be improved. </font></div><div><font color="#000000" face="arial, sans-serif"><br></font></div><div><font color="#000000" face="arial, sans-serif">Specifically, it would be beneficial to add an optional parameter 'equicost' to the pgr_kruskalDD and pgr_primDD functions, similar to other DD functions. This addition would enhance the functionality and consistency across these functions.</font><br></div><div><font color="#000000" face="arial, sans-serif"><br>6. <b>Links</b>: </font></div><div><ul><li><font color="#000000" face="arial, sans-serif"><b>Tag:</b></font></li><ul><li><font color="#000000" face="arial, sans-serif">pgr_withPointsDD (2023-squarege-withPointsDD-overloads):   <a href="https://github.com/pgRouting/GSoC-pgRouting/releases/tag/2023-squarege-withPointsDD-overloads" target="_blank">https://github.com/pgRouting/GSoC-pgRouting/releases/tag/2023-squarege-withPointsDD-overloads</a><br></font></li></ul><li><font color="#000000" face="arial, sans-serif"><b>Pull Request</b></font></li><ul><li><font color="#000000" face="arial, sans-serif">Final Pull Request: Modifying withpointsdd: </font><a href="https://github.com/pgRouting/pgrouting/pull/2544" target="_blank">https://github.com/pgRouting/pgrouting/pull/2544</a></li><li><font color="#000000" face="arial, sans-serif">Subsequent Pull Request: Modifying withpointsdd supplement:   </font><a href="https://github.com/pgRouting/pgrouting/pull/2545" target="_blank" style="font-family:arial,sans-serif">https://github.com/pgRouting/pgrouting/pull/2545</a></li><li>Intermediate weekly Pull Requests created in GSoC-pgRouting repository:   <a href="https://github.com/pgRouting/GSoC-pgRouting/pulls?q=is%3Apr+author%3Asquarege+created%3A%3C2023-08-28+" target="_blank">https://github.com/pgRouting/GSoC-pgRouting/pulls?q=is%3Apr+author%3Asquarege+created%3A%3C2023-08-28+</a></li></ul></ul><ul><li><font color="#000000" face="arial, sans-serif"><b>Wiki Page</b></font></li><ul><li><font color="#000000" face="arial, sans-serif"><a href="https://github.com/pgRouting/pgrouting/wiki/GSoC-2023-Improving-Parameters-and-Standardizing-Results-in-pgr_withPointsDD-Function-for-pgRouting" target="_blank">https://github.com/pgRouting/pgrouting/wiki/GSoC-2023-Improving-Parameters-and-Standardizing-Results-in-pgr_withPointsDD-Function-for-pgRouting</a></font></li></ul></ul></div><div><br><font><font color="#000000" face="arial, sans-serif">7. </font><b style="color:rgb(0,0,0);font-family:arial,sans-serif">Image</b><font color="#000000" face="arial, sans-serif">: </font></font></div><div><ul><li>Example image: <a href="https://drive.google.com/file/d/1rQUkA5XaKqpIv5iG0OfYPsLTb7MHsh4_/view?usp=sharing" style="font-family:arial,sans-serif">https://drive.google.com/file/d/1rQUkA5XaKqpIv5iG0OfYPsLTb7MHsh4_/view?usp=sharing</a></li></ul></div><div><font><font color="#000000" face="arial, sans-serif"><div>I am thrilled to be a part of the incredible GSoC and OSGeo communities. This experience has been tremendously valuable. It would bring me immense joy to see my code benefit the community. Lastly, thank you everyone for the supports!</div><div><br></div><div>Thanks and Regards,</div><div><br></div><div>Yige Huang</div></font></font></div><div><font><pre><span style="color:rgb(34,34,34);font-family:Arial,Helvetica,sans-serif">[1].</span><span style="font-family:Arial,Helvetica,sans-serif"><font color="#000000"> <a href="https://developers.google.com/open-source/gsoc/help/work-product" target="_blank">https://developers.google.com/open-source/gsoc/help/work-product</a></font></span><font color="#000000">
</font><font face="arial, sans-serif" style="color:rgb(0,0,0)">[2]. <a href="https://lists.osgeo.org/pipermail/soc/2023-August/005114.html" target="_blank">https://lists.osgeo.org/pipermail/soc/2023-August/005114.html</a></font></pre></font></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div>