<div dir="ltr"><h2 style="box-sizing:border-box;margin-top:24px;margin-bottom:16px;font-weight:600;line-height:1.25;padding-bottom:0.3em;border-bottom:1px solid rgb(234,236,239);color:rgb(36,41,46);font-family:-apple-system,system-ui,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";text-decoration-style:initial;text-decoration-color:initial"></h2><h1 style="box-sizing:border-box;margin:0px 0px 16px;line-height:1.25;padding-bottom:0.3em;border-bottom:1px solid rgb(234,236,239);background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><font size="4">Making pgRoutingLayer plugin compatible with the new version of QGIS and add GUI support for proposed functions.</font></h1><br><h2 style="box-sizing:border-box;margin-top:24px;margin-bottom:16px;font-size:1.5em;font-weight:600;line-height:1.25;padding-bottom:0.3em;border-bottom:1px solid rgb(234,236,239);color:rgb(36,41,46);font-family:-apple-system,system-ui,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";text-decoration-style:initial;text-decoration-color:initial">Google Summer of Code 2018</h2><ul style="box-sizing:border-box;padding-left:2em;margin-top:0px;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,system-ui,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:16px;text-decoration-style:initial;text-decoration-color:initial"><li style="box-sizing:border-box">Author - Aasheesh Tiwari</li><li style="box-sizing:border-box;margin-top:0.25em">Mentor 1 -<span> </span><a href="https://wiki.osgeo.org/wiki/Cayetano_Benavent" rel="nofollow" style="box-sizing:border-box;background-color:transparent;color:rgb(3,102,214);text-decoration:none">Cayetano Benavent</a></li><li style="box-sizing:border-box;margin-top:0.25em">Mentor 2 -<span> </span><a href="https://wiki.osgeo.org/wiki/User:Cvvergara" rel="nofollow" style="box-sizing:border-box;background-color:transparent;color:rgb(3,102,214);text-decoration:none">Vicky Vergara</a></li><li style="box-sizing:border-box;margin-top:0.25em">Organization -<span> </span><a href="http://www.osgeo.org/" rel="nofollow" style="box-sizing:border-box;background-color:transparent;color:rgb(3,102,214);text-decoration:none">OSGeo</a>,<span> </span><a href="https://pgrouting.org/" rel="nofollow" style="box-sizing:border-box;background-color:transparent;color:rgb(3,102,214);text-decoration:none">pgRouting</a></li><li style="box-sizing:border-box;margin-top:0.25em">Developer Community -<span> </span><a href="https://lists.osgeo.org/mailman/listinfo/pgrouting-dev" rel="nofollow" style="box-sizing:border-box;background-color:transparent;color:rgb(3,102,214);text-decoration:none">pgRouting-dev</a></li></ul><h3 style="box-sizing:border-box;margin-top:24px;margin-bottom:16px;font-size:1.25em;font-weight:600;line-height:1.25;color:rgb(36,41,46);font-family:-apple-system,system-ui,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";text-decoration-style:initial;text-decoration-color:initial"><a id="gmail-user-content-abstract" class="gmail-anchor" href="https://github.com/AasheeshT/pgRoutingLayer/wiki/Final-Report#abstract" style="box-sizing:border-box;background-color:transparent;color:rgb(3,102,214);text-decoration:none;float:left;padding-right:4px;line-height:1"></a>Abstract</h3><p style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,system-ui,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:16px;text-decoration-style:initial;text-decoration-color:initial">pgRoutingLayer is a plugin for QGIS that serves as a GUI for pgRouting which is a popular routing solution for PostGIS database. The plugin is written in python . It uses SIP to create python bindings for C/C++ libraries, pycopg2 for interacting with PostGreSQL. Internally pgRoutingLayer uses pgRouting to provide geospatial routing functionality.</p><h1 style="box-sizing:border-box;font-size:2em;margin:24px 0px 16px;font-weight:600;line-height:1.25;padding-bottom:0.3em;border-bottom:1px solid rgb(234,236,239);color:rgb(36,41,46);font-family:-apple-system,system-ui,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";text-decoration-style:initial;text-decoration-color:initial"><a id="gmail-user-content-architecture-of-pgroutinglayer" class="gmail-anchor" href="https://github.com/AasheeshT/pgRoutingLayer/wiki/Final-Report#architecture-of-pgroutinglayer" style="box-sizing:border-box;background-color:transparent;color:rgb(3,102,214);text-decoration:none;float:left;padding-right:4px;line-height:1"></a>Architecture of pgRoutingLayer</h1><p style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,system-ui,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:16px;text-decoration-style:initial;text-decoration-color:initial">A python plugin for QGIS must have the following files:</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,system-ui,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:16px;text-decoration-style:initial;text-decoration-color:initial"><strong style="box-sizing:border-box;font-weight:600">init_.py</strong><span> </span>: The starting point of the plugin . It has the classFactory() method which makes it known to QGIS . It receives iface (instance of QgisInterface) which is used to interact with QGIS environment.<em style="box-sizing:border-box">init</em>.py returns an instance of our plugin. It also has other initialisation code.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,system-ui,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:16px;text-decoration-style:initial;text-decoration-color:initial"><strong style="box-sizing:border-box;font-weight:600">metadata.txt</strong><span> </span>: It contains general info , version, name and some other metadata used by plugin’s website and plugin infrastructure.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,system-ui,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:16px;text-decoration-style:initial;text-decoration-color:initial"><strong style="box-sizing:border-box;font-weight:600">UI file</strong><span> </span>: It stores the user interface configuration for ther plugin, saved in a XML format. It contains definitions of Qt widgets with slots and signals. There are two ways to use this file , one is to include the file with the app and render and parse it directly at runtime using uic . The other way is to compile the file into python classes and include it in the python source files. pgRoutingLayer plugin uses the first approach.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,system-ui,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:16px;text-decoration-style:initial;text-decoration-color:initial"><strong style="box-sizing:border-box;font-weight:600">Resource file</strong><span> </span>: It contains the resources needed by the plugin like icons,translation file etc. It is an XML based file that lists files on disk and assigns them a resource name that the application must use to access the resource.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,system-ui,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:16px;text-decoration-style:initial;text-decoration-color:initial"><strong style="box-sizing:border-box;font-weight:600">pgRoutinLayer.py</strong><span> </span>: It contains the python code that actually defines the functionality of the plugin. The pgRoutingLayer plugin breaks the large code of main.py into modules that are manageable and easy to understand . Below diagrams introduces the names of files and their dependency.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,system-ui,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:16px;text-decoration-style:initial;text-decoration-color:initial"><img src="https://user-images.githubusercontent.com/6928365/44008376-b22d1814-9ec0-11e8-8d2d-80511eab8517.png" alt="screen shot 2018-08-13 at 2 09 49 am" style="box-sizing: content-box; border-style: none; max-width: 100%; background-color: rgb(255, 255, 255);"></p><h3 style="box-sizing:border-box;margin-top:24px;margin-bottom:16px;font-size:1.25em;font-weight:600;line-height:1.25;color:rgb(36,41,46);font-family:-apple-system,system-ui,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";text-decoration-style:initial;text-decoration-color:initial"><a id="gmail-user-content-pgroutinglayer-before-gsoc-2018" class="gmail-anchor" href="https://github.com/AasheeshT/pgRoutingLayer/wiki/Final-Report#pgroutinglayer-before-gsoc-2018" style="box-sizing:border-box;background-color:transparent;color:rgb(3,102,214);text-decoration:none;float:left;padding-right:4px;line-height:1"></a>pgRoutingLayer before GSoC 2018:</h3><p style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,system-ui,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:16px;text-decoration-style:initial;text-decoration-color:initial">In 2018 QGIS released QGIS 3.0 which introduced an API break for existing plugins including pgRoutinLayer.The key changes in QGIS 3.0 are as follows:</p><ul style="box-sizing:border-box;padding-left:2em;margin-top:0px;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,system-ui,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:16px;text-decoration-style:initial;text-decoration-color:initial"><li style="box-sizing:border-box">Updated from Qt4 to Qt5</li><li style="box-sizing:border-box;margin-top:0.25em">Updated from PyQt4 to PyQt5</li><li style="box-sizing:border-box;margin-top:0.25em">Updated from Python 2.7 to Python 3.0</li><li style="box-sizing:border-box;margin-top:0.25em">QGIS API is improved , many classes have been deprecated or renamed.</li></ul><p style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,system-ui,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:16px;text-decoration-style:initial;text-decoration-color:initial">The above changes have implications that the pgRoutingLayer plugin is no longer compatible with QGIS 3.0 . The aim of this project was to make the pgRoutingLayer plugin compatible with the new version of QGIS. Another objective was to add functionalities for the proposed functions which are to be released with the next mayor release.</p><h3 style="box-sizing:border-box;margin-top:24px;margin-bottom:16px;font-size:1.25em;font-weight:600;line-height:1.25;color:rgb(36,41,46);font-family:-apple-system,system-ui,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";text-decoration-style:initial;text-decoration-color:initial"><a id="gmail-user-content-status-of-plugin-in-qgis-30-before-gsoc-2018" class="gmail-anchor" href="https://github.com/AasheeshT/pgRoutingLayer/wiki/Final-Report#status-of-plugin-in-qgis-30-before-gsoc-2018" style="box-sizing:border-box;background-color:transparent;color:rgb(3,102,214);text-decoration:none;float:left;padding-right:4px;line-height:1"></a>Status of plugin in QGIS 3.0 before GSoC 2018</h3><p style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,system-ui,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:16px;text-decoration-style:initial;text-decoration-color:initial"><img src="https://user-images.githubusercontent.com/6928365/44008466-9ce2866e-9ec1-11e8-8426-81be232063af.png" alt="screen shot 2018-08-13 at 6 24 17 am" style="box-sizing: content-box; border-style: none; max-width: 100%; background-color: rgb(255, 255, 255);"></p><h3 style="box-sizing:border-box;margin-top:24px;margin-bottom:16px;font-size:1.25em;font-weight:600;line-height:1.25;color:rgb(36,41,46);font-family:-apple-system,system-ui,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";text-decoration-style:initial;text-decoration-color:initial"><a id="gmail-user-content-changes-through-this-project" class="gmail-anchor" href="https://github.com/AasheeshT/pgRoutingLayer/wiki/Final-Report#changes-through-this-project" style="box-sizing:border-box;background-color:transparent;color:rgb(3,102,214);text-decoration:none;float:left;padding-right:4px;line-height:1"></a>Changes through this project:</h3><p style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,system-ui,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:16px;text-decoration-style:initial;text-decoration-color:initial">As can be seen above there were 4 major issues which needed to be addressed in order to make the plugin compatible. I followed the below tasks :</p><ol style="box-sizing:border-box;padding-left:2em;margin-top:0px;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,system-ui,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:16px;text-decoration-style:initial;text-decoration-color:initial"><li style="box-sizing:border-box">Ported the plugin from python 2.7 to python 3 . For this, python future library was used. No library can give perfect result, so after that manually made corrections to the code which the library had wrongly ported.</li><li style="box-sizing:border-box;margin-top:0.25em">For making Qt4 to Qt5 conversion, changed all the renamed classes, removed all deprecated classes and replaced them with new equivalent classes, made changes according to the new classes.</li><li style="box-sizing:border-box;margin-top:0.25em">For PyQt4 to PyQt5, the same above process was done.</li><li style="box-sizing:border-box;margin-top:0.25em">Major part of the code uses QGIS API which was changed. So the task was to use the new QGIS classes in the code. QGIS community has released 'QGIS API break' document which contains all the changes made in the new API. So changes to the code were done by following the API break document. This was the most crucial part and also the most time taking part. For every removed class, I had to find an equivalent class and make changes in the code for new class. For every renamed class, needed to change all the code with new class name.</li></ol><p style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,system-ui,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:16px;text-decoration-style:initial;text-decoration-color:initial">The above 4 steps were refined again and again until the code worked.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,system-ui,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:16px;text-decoration-style:initial;text-decoration-color:initial">The second part of the project involved making the plugin ready for the next major release of pgRouting. First removed all the functions which are going to be deprecated. Next task was to make changes in the plugin to accept new parameters for the upcoming functions. So GUI changes were made. Now code was written for new functions which involved sql queries and drawing the output. Due to time constraints only 2 functions could be coded. These functions were unstable so I merged the code into a new branch. Finally documentation for the code and unit test for some files has been written. The final status of plugin is that it works in QGIS 3.0 There are some funtions like pgr_Ksp which needs improvement.</p><h3 style="box-sizing:border-box;margin-top:24px;margin-bottom:16px;font-size:1.25em;font-weight:600;line-height:1.25;color:rgb(36,41,46);font-family:-apple-system,system-ui,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";text-decoration-style:initial;text-decoration-color:initial"><a id="gmail-user-content-final-status-of-plugin-in-qgis-3xx--works-perfectly-" class="gmail-anchor" href="https://github.com/AasheeshT/pgRoutingLayer/wiki/Final-Report#final-status-of-plugin-in-qgis-3xx--works-perfectly-" style="box-sizing:border-box;background-color:transparent;color:rgb(3,102,214);text-decoration:none;float:left;padding-right:4px;line-height:1"></a>Final Status of Plugin in QGIS 3.xx : Works Perfectly !!</h3><p style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,system-ui,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:16px;text-decoration-style:initial;text-decoration-color:initial"><img src="https://user-images.githubusercontent.com/6928365/44008728-2b37c35a-9ec4-11e8-9408-6d0abb9af597.png" alt="screen shot 2018-08-13 at 6 42 32 am" style="box-sizing: content-box; border-style: none; max-width: 100%; background-color: rgb(255, 255, 255);"></p><h3 style="box-sizing:border-box;margin-top:24px;margin-bottom:16px;font-size:1.25em;font-weight:600;line-height:1.25;color:rgb(36,41,46);font-family:-apple-system,system-ui,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";text-decoration-style:initial;text-decoration-color:initial"><a id="gmail-user-content-future-opportunities" class="gmail-anchor" href="https://github.com/AasheeshT/pgRoutingLayer/wiki/Final-Report#future-opportunities" style="box-sizing:border-box;background-color:transparent;color:rgb(3,102,214);text-decoration:none;float:left;padding-right:4px;line-height:1"></a>Future opportunities:</h3><p style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,system-ui,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:16px;text-decoration-style:initial;text-decoration-color:initial">pgRouting has a vast collection of stable functions(probably made by previous GSoC students). These functions need to be present in pgRoutingLayer plugin so that QGIS users can be benefitted. For this we need to add more functionality to the plugin. This is a task on it's own so it may be a potential topic for GSoC 2019.</p><h3 style="box-sizing:border-box;margin-top:24px;margin-bottom:16px;font-size:1.25em;font-weight:600;line-height:1.25;color:rgb(36,41,46);font-family:-apple-system,system-ui,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";text-decoration-style:initial;text-decoration-color:initial"><a id="gmail-user-content-lets-see-some-examples" class="gmail-anchor" href="https://github.com/AasheeshT/pgRoutingLayer/wiki/Final-Report#lets-see-some-examples" style="box-sizing:border-box;background-color:transparent;color:rgb(3,102,214);text-decoration:none;float:left;padding-right:4px;line-height:1"></a>Let's see some examples</h3><p style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,system-ui,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:16px;text-decoration-style:initial;text-decoration-color:initial"><a href="https://docs.google.com/presentation/d/e/2PACX-1vTwGCBLKHqpOEZHqof39exASnhEccR6zUtOE9Swi0ZZ6MazBPNMQT0Wpiuh6U5W603erwzYoAsZwfai/pub?start=false&loop=false&delayms=3000" rel="nofollow" style="box-sizing:border-box;background-color:transparent;color:rgb(3,102,214);text-decoration:none">Link to presentation</a></p><h3 style="box-sizing:border-box;margin-top:24px;margin-bottom:16px;font-size:1.25em;font-weight:600;line-height:1.25;color:rgb(36,41,46);font-family:-apple-system,system-ui,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";text-decoration-style:initial;text-decoration-color:initial"><a id="gmail-user-content-link-to-projects-osgeo-wiki" class="gmail-anchor" href="https://github.com/AasheeshT/pgRoutingLayer/wiki/Final-Report#link-to-projects-osgeo-wiki" style="box-sizing:border-box;background-color:transparent;color:rgb(3,102,214);text-decoration:none;float:left;padding-right:4px;line-height:1"></a>Link to project's OSGeo wiki:</h3><p style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,system-ui,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:16px;text-decoration-style:initial;text-decoration-color:initial"><a href="https://github.com/pgRouting/pgrouting/wiki/GSOC--2018-Making-pgRoutingLayer-plugin-compatible-with-QGIS-3-and-adding-additional-GUI-support" style="box-sizing:border-box;background-color:transparent;color:rgb(3,102,214);text-decoration:none">Wiki</a></p><h3 style="box-sizing:border-box;margin-top:24px;margin-bottom:16px;font-size:1.25em;font-weight:600;line-height:1.25;color:rgb(36,41,46);font-family:-apple-system,system-ui,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";text-decoration-style:initial;text-decoration-color:initial"><a id="gmail-user-content-link-to-project-code" class="gmail-anchor" href="https://github.com/AasheeshT/pgRoutingLayer/wiki/Final-Report#link-to-project-code" style="box-sizing:border-box;background-color:transparent;color:rgb(3,102,214);text-decoration:none;float:left;padding-right:4px;line-height:1"></a>Link to project code:</h3><ul style="box-sizing:border-box;padding-left:2em;margin-top:0px;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,system-ui,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:16px;text-decoration-style:initial;text-decoration-color:initial"><li style="box-sizing:border-box"><a href="https://github.com/pgRouting/pgRoutingLayer/tree/gsoc/python3" style="box-sizing:border-box;background-color:transparent;color:rgb(3,102,214);text-decoration:none">pgRoutingLayer compatible with QGIS 3.0</a></li><li style="box-sizing:border-box;margin-top:0.25em"><a href="https://github.com/pgRouting/pgRoutingLayer/tree/python3" style="box-sizing:border-box;background-color:transparent;color:rgb(3,102,214);text-decoration:none">pgRoutingLayer with Added Functionality</a></li></ul><h3 style="box-sizing:border-box;margin-top:24px;margin-bottom:16px;font-size:1.25em;font-weight:600;line-height:1.25;color:rgb(36,41,46);font-family:-apple-system,system-ui,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";text-decoration-style:initial;text-decoration-color:initial"><a id="gmail-user-content-link-to-commit-history" class="gmail-anchor" href="https://github.com/AasheeshT/pgRoutingLayer/wiki/Final-Report#link-to-commit-history" style="box-sizing:border-box;background-color:transparent;color:rgb(3,102,214);text-decoration:none;float:left;padding-right:4px;line-height:1"></a>Link to commit history</h3><p style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,system-ui,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:16px;text-decoration-style:initial;text-decoration-color:initial">All the changes made by me during GSoC 2018 can be followed through the below link, which directs to commit history.<span> </span><a href="https://github.com/AasheeshT/pgRoutingLayer/commits/master" style="box-sizing:border-box;background-color:transparent;color:rgb(3,102,214);text-decoration:none">Commit history</a></p><h3 style="box-sizing:border-box;margin-top:24px;margin-bottom:16px;font-size:1.25em;font-weight:600;line-height:1.25;color:rgb(36,41,46);font-family:-apple-system,system-ui,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";text-decoration-style:initial;text-decoration-color:initial"><a id="gmail-user-content-whats-left" class="gmail-anchor" href="https://github.com/AasheeshT/pgRoutingLayer/wiki/Final-Report#whats-left" style="box-sizing:border-box;background-color:transparent;color:rgb(3,102,214);text-decoration:none;float:left;padding-right:4px;line-height:1"></a>What's left?</h3><ul style="box-sizing:border-box;padding-left:2em;margin-top:0px;color:rgb(36,41,46);font-family:-apple-system,system-ui,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:16px;text-decoration-style:initial;text-decoration-color:initial;margin-bottom:0px"><li style="box-sizing:border-box">Tsp function gives the output but it is not rendering.</li><li style="box-sizing:border-box;margin-top:0.25em">Ksp function needs improvement.</li><li style="box-sizing:border-box;margin-top:0.25em">Trsp works fine but they are complex to use and tooltips are not well written.</li></ul><br clear="all"><div><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div dir="ltr"><div dir="ltr"><span style="font-size:12.8px;margin:0px;padding:0px;border:0px;color:rgb(0,0,0);font-family:"comic sans ms",sans-serif">Best Regards,</span><br style="font-size:12.8px;font-family:Arial,Helvetica,sans-serif"><div style="margin:0px;padding:0px;border:0px"><font color="#0c343d" face="georgia, serif" size="2"><b><u>Aasheesh Tiwari</u></b></font></div><div style="font-size:12.8px;margin:0px;padding:0px;border:0px;font-family:Arial,Helvetica,sans-serif"><span style="margin:0px;padding:0px;border:0px;font-size:12.8px"><font size="2" style="margin:0px;padding:0px;border:0px"><font face="tahoma, sans-serif" color="#444444" style="margin:0px;padding:0px;border:0px"><b>MTech | CSRE</b></font></font></span></div><div style="font-size:12.8px;margin:0px;padding:0px;border:0px;font-family:Arial,Helvetica,sans-serif"><b style="font-size:12.8px"><font face="times new roman, serif" color="#073763" style="margin:0px;padding:0px;border:0px">Indian Institute Of Technology Bombay</font></b><br></div><div style="font-size:12.8px;margin:0px;padding:0px;border:0px;font-family:Arial,Helvetica,sans-serif"><br></div></div></div></div></div></div>
</div>