Skip to content

GSOC 2018 Making pgRoutingLayer plugin compatible with QGIS 3 and adding additional GUI support

Aasheesh Tiwari edited this page Apr 26, 2018 · 12 revisions

Contents of the Wiki

Brief Idea about the project

The new version of QGIS has introduced an API break. The key changes in QGIS 3.0 are as follows:

  • Updated from Qt4 to Qt5
  • Updated from PyQt4 to PyQt5
  • Updated from Python 2.7 to Python 3.0
  • QGIS API is improved , many classes have been deprecated or renamed.

The above changes have implications that the pgRoutingLayer plugin is no longer compatible with QGIS 3.0 . For my GSoC project I propose to accomodate these changes in pgRoutingLayer plugin code and also make use of the new features introduced in QGIS 3.0 to improve the functionality of plugin’s GUI. Also I propose to add functionality for the proposed stable functions of following families:

  • Astar : pgr_astarCost , pgr_astarCostMatrix
  • Bidirectional astar : pgr_bdAstarCost , pgr_bdAstarCostMatrix
  • Bidirectional Dijkstra : pgr_bdDijkstraCost , pgr_bdDijkstraCostMatrix
  • Flow

State of Project Before GSoC 2018

The current state of the pgRouting is not compatible with the new version of QGIS. The plugin is written in python 2 . It uses PyQt4 as python binding for Qt4 . There are proposed stable functions scheduled for the next major release. Current plugin has no functionality for these functions.Also there is no test coverage for the plugin code.

Project

Biography

Pre-bonding period

These are the things I did while applying for GSoC

  • Documented the pgRoutingLayer plugin code.
  • Refreshed object oriented programming concepts.
  • Refreshed SQL concepts.
  • Read , documented and ran the pgRouting code on my machine.
  • Read pygis cookbook and made a sample plugin.
  • Studied the basics of Qt , PyQt .
  • Studied about unit tests and wrote few tests for sample plugin.
  • Read QGIS-api break , Qt5 , PyQt5 documentations.
  • Read articles about porting QGIS plugins.
  • Setup QGIS 3.0 environment on my machine.

Community Bonding Period

Following tasks are planned to be done during 23rd April to 14th may.

  • Get in touch with the community, mentors, and introduce my project to them and receive early feedback.
  • Set up wiki page to maintain weekly progress and other information of the project.
  • Study the PyQGIS cookbook and other resources to better understand the pgRouting code.
  • Study the differences between Qt4 and Qt5 and maintain a list of these differences which are relevant to pgRouting code on my wiki page.
  • Study the differences between PyQt4 and PyQt5 and maintain a list of differences specific to pgRouting code on my wiki page.
  • Study the QGIS Api-break documentation and create a list of changes required in pgRouting code on my wiki page.
  • Study the signatures and documentation of proposed functions.

List differences between Qt4 and Qt5 w.r.t pgRoutingLayer plugin

Some of the differences between Qt4 and Qt5 have been mentioned in the project proposal. This list will be constantly updated after reading documentations and pgRoutingLayer code.

List of changes required in pgRoutingLayer code w.r.t QGIS 3.0 API break.

This list will contain all the changes like deprecated functions, renamed functions and functionality changes. I wish to go through the pgRouting code and list all the changes required.

Clone this wiki locally