-
-
Notifications
You must be signed in to change notification settings - Fork 369
GSoC 2017 Area Contraction
- Brief Idea of Area Contraction
- State of Project Before GSoC 2017
- Additions Proposed in GSoc 2017
-
Project
- Proposal
-
My Contributions
- Project Branch
- My pgRouting fork
- My Pull Requests
- Biography
- Meetings
- References
- Weekly Consolidated Reports
- Weekly Tasks
Area contraction refers to contracting the graph of an area (defined by a set of border vertices and edges connecting the border vertices) taking only the shortest paths between each border vertex, keeping the border vertices prohibited from contraction.
Before GSoc 2017, Mr. Sankepally Rohith Reddy added a contraction framework to pgRouting along with dead contraction and linear contraction algorithms. The framework supports addition of new contraction algorithms to pgRouting. This work was undertaken as GSoC 2016 work for pgRouting. Details of his work can be found in his Wiki.
I propose to implement the area contraction algorithm in this GSoC. The detailed approach can be found in the proposal. The proposed additions are:
- Implementation of a function Area Contraction
- This implementation shall have the following characteristics:
- The user will be able to select the border vertices of an area
- Number of overlapping sub-paths will also be provided as output
- Project Branch - gsoc/areaContraction
- My pgRouting fork - daas-ankur-shukla/pgrouting
- My Pull Requests - All PRs to pgRouting main repo
- Name : Ankur Shukla
- Country: India
-
Schools & Degrees :
-
Masters : Geoinformatics and Natural Resources Engineering
- School : Indian Institute of Technology, Bombay
- Department: Centre of Studies in Resources Engineering
-
Bachelors : Electrical Engineering
- School : Kamla Nehru Institute of Technology, Sultanpur
- Department: Department of Electrical Engineering
-
Masters : Geoinformatics and Natural Resources Engineering
-
Contacts :
- Email : work.ankurshukla@gmail.com
- Linkedin : Profile
The following issues contain the gist of my meetings with my mentors and fellow GSoC students. The meetings have been in the form of gitter chats as well as chats on google hangouts. These meetings have served as concepts building sessions, doubt clearing sessions and most importantly bonding sessions for the community: Meeting Issues
- June 22 - Graphs, Vertices and Edges in pgRouting
- June 21 - Psuedo Code for Area Contraction
- June 13 - No Circular Merges
- June 9 & 12 - Preparing Tests & Documentation
- June 7 - contractGraph.c file Code
- June 6 - Issues
- June 3 - Code Structure
- June 2 - New Documentation Structure Discussion
- June 1 - Implement Changes in Template Code and Standardize Array Variable Names
- May 31 - About flow of control in pgRouting
- May 30 - Discussion on pgr_areaContraction
- May 28 - Creating PR when in Doubt
- May 26 - Keeping Upto Date
- CppCon 2015: Michael VanLoon “STL Algorithms in Action”
- Code Linting C++ Coding Style Guide
- PgRouting Developer's Documentation
- CPPReference
June 20 - June 26
-
What did I plan to achieve this week?
- Finish coding
pgr_areaContraction
- Write tests for function logic
- Finish documentation for
pgr_areaContraction
- Finish proposal documentation
- Prepare work for Phase 1 submission
- Finish coding
-
What did I achieve this week?
- Added code for calling many many Dijkstra function -> Commit To #852 & Commit To #852
- Added code for handling duplicate values in border vertices input -> Commit To #852
- Added proof of concept 1 -> Commit To #852
-
What do I plan to do next week?
- Finish coding
pgr_areaContraction
logic - Write tests for function logic
- Finish documentation for
pgr_areaContraction
- Finish proposal documentation
- Prepare work for Phase 1 submission
- Finish coding
-
Impediments?
- No impediments this week
June 13 - June 19
-
What did I plan to achieve this week?
- Learn to use tests in pgRouting
- Use pgTap to create unit tests for pgr_areaContraction
- Generate documentation tests
-
What did I achieve this week?
- Added Skeleton Code for pgr_areaContraction logic -> Issue #35 & PR #852
- Started with Proposal Documentation -> Issue #32 & PR #854
- Prepared documentation for pgr_areaContraction signature -> Issue #32 & PR #850, #851 & #852
- Generated tests for pgr_areaContraction by modifying the template test -> Issue #34 & PR #828
-
What do I plan to do next week?
- Finish coding
pgr_areaContraction
- Write tests for function logic
- Finish documentation for
pgr_areaContraction
- Finish proposal documentation
- Prepare work for Phase 1 submission
- Finish coding
-
Impediments?
- No impediments this week.
June 6 - June 12
-
What did I plan to do this week?
- Study the signature of pgr_contractGraph designed by Rohith
- Work on output parameters of pgr_areaContraction
- Learn to use tests in pgRouting (pgTap)
- Use pgTap to create unit tests for pgr_areaContraction
- Generate documentation tests
- Prepare a brief write up about my conclusions for my comparisons between the signatures of pgr_contractGraph and pgr_dijkstra and study of pgr_contractGraph
- Complete remaining C++ videos
-
What did I achieve this week?
- Made changes to areaContraction_driver.cpp file to fix Travis warning, change to C++ structures -> Issue #30 & PR #820, PR #816
- Watched C++ videos -> Issue #2
- Fixed a petite bug in contractGraph.c -> PR #817
- Learned about contractGraph.c code -> Issue #29
- Fitted areaContraction to contract_rt by modifying output parameters and C code -> Issue #28 & PR #816
- Updated my fork and clone with latest documentation structure changes in develop branch. Moved documentation files in areaContraction directory to get in sync in with the new structure -> Issue #26 & PR #810
- Started discussion on Contraction code. Opened an issue for Q & A on the code for doubt resolution -> Issue #25
-
What do I plan to do next week?
- Learn to use tests in pgRouting (pgTap)
- Use pgTap to create unit tests for pgr_areaContraction
- Generate documentation tests
-
Impediments?
- No impediments this week.
May 30 - June 4
-
What did I plan to do this week?
- Understand the flow of control in pgRouting code for a new function
- Compare the signatures of pgr_contractGraph and pgr_dijkstra_many_to_many
- Draw conclusions weather the difference is trivial or not, based on the comparison
- Design signature for pgr_areaContraction
- Create template code for pgr_areaContraction from create.sh script
- Modify the template code for pgr_areaContraction to suit the new signature
- Fix Travis and Appveyor warnings
- Create relevant issues for tasks and meetings
-
What did I achieve this week?
- Understood the flow of control of code by extensive discussion on the topic with my mentors - Created relevant issues with notes of the discussion. They can come handy for me and others -> Issue #20 & Issue #24
- Compared the signatures of pgr_contractGraph and pgr_dijkstra
- Designed the input signature of pgr_areaContraction ->
pgr_areaContraction(sql, borderVerticesArray)
- Created template code for pgr_areaContraction using that of pgr_dijkstra by modifying create.sh script -> Issue #19 & Issue #21
- Modified the template code for pgr_areaContraction to suit the new signature -> Issue #22
- Implemented new standard of array names in template code
- Fixed Travis and Appveyor warnings by removing tests from
tests.conf
file - Created relevant issues for tasks and meetings
-
What do I plan to do next week?
- Study the signature of pgr_contractGraph designed by Rohith
- Work on output parameters of pgr_areaContraction
- Learn to use tests in pgRouting (pgTap)
- Use pgTap to create unit tests for pgr_areaContraction
- Generate documentation tests
- Complete remaining C++ videos
-
Impediments?
- Initially I was confused regarding the flow of control. But now I have gained clarity on the same.
- My less knowledge about the STL and C++ is slowing me down. I plan to overcome this in the coming week.
- (20 June-26 June)
-
(13 June-19 June)
- Skeleton Code in pgr_areaContract.hpp
- Proposal Documentation
- Documentation for pgr_areaContraction
- Tests for pgr_areaContraction
-
(6 June-12 June)
- Adapt areaContraction_driver.cpp code according to contractGraph_driver.cpp
- Analyse the code in contractGraph_driver.cpp file and adapt areaContraction_driver.cpp file
- Remove code which is not required
- Add required header files
- Remove input parameters which are not required
- Convert to C++ structures
- Solved in PR #820 & PR #816
- Analyse the code in contractGraph_driver.cpp file and adapt areaContraction_driver.cpp file
- Solved a petite bug in contractGraph.c
- Solved in PR #817
- Watched C++ for improving language understanding
- Fitting pgr_areaContraction to the output of contract_rt
- Move files around
-
Issue #26
- Create new branch from gsoc/areaContraction
- Fetch upstream changes and merge to the new branch
- Create the directory
areaContraction
inside doc directory - Move documentation to new directory ->
git mv src/areaContraction/doc/* doc/areaContraction
- Move query files to the doc/queries directory ->
git mv doc/areaContraction/*.queries doc/queries
- Edit doc/queries/CMakeLists.txt to include
doc-pgr_areaContraction.queries
- Create CMakeLists.txt in doc/areaContraction ->
cp doc/allpairs/CMakeLists.txt doc/areaContraction
- Edit the new CMakeLists.txt file to include areaContraction documentation file
pgr_areaContraction.rst
- Uncomment the areaContraction line new configuration.conf file
- Commit and Push
- Merge in gsoc/areaContraction
- Solved by PR #810
-
Issue #26
- Adapt areaContraction_driver.cpp code according to contractGraph_driver.cpp
-
(30 May-5 June)
- Fix Travis and Appveyor Warnings by modifying the code
- Modify areaContraction file according to the new naming standard for array and array size variables
- Vicky Vergara's Fork Issue #150
- Modify the files according to the new standard
- Learn about the flow of control in pgRouting via template excercise
- Create a sample database with pgRouting sample data
- Create template function for pgr_areaContraction
-
Issue #19
- Modify generated template files to suit the needs of the desired function
- Modify
sql\areaContraction\areaContraction.sql
file - Modify
src\areaContraction\src\areaContraction.c
file - Modify
drivers\areaContraction\areaContraction_driver.h
file - Modify
src\areaContraction\src\areaContraction_driver.cpp
file
- Modify
- Make a copy of create.sh as
mycreate.sh
- Change the new script to suit the function signature desired for pgr_areaContraction
- Generate new function directories using the modified script
- Modify generated template files to suit the needs of the desired function
- Solving by PR #151
-
Issue #19
-
Week D (25-29 May)
- Fix PostGIS installation on Appveyor for gsoc/areaContraction branch
- Publish GSoC branches and make gsoc/areaContraction as default
- Publish a the GSoC branches on my fork
- Make gsoc/areaContraction my default branch
- Deleting Stale Branches from Clone and Fork
- fix/forloops
- gsocprac2
- practice/mydijkstra
- fixes
- Issue #12
- Keeping Up to Date with the Latest Changes
-
Issue #13
- git fetch upstream
- git checkout branch
- git merge upstream/branch
-
Issue #13
-
Week C (18-24 May)
- Updated my Wiki
- Create a new function pgr_ankurDijkstra as team work practice task
-
Issue #18
- Make a copy of create.sh as mycreate.sh
- Execute mycreate.sh to create function directories - src/ankurDijkstra
- Change template code to match new function code
- Add pgr_ankurDijkstra to CmakeLists.txt
- Fix pgTap tests
- Fix Appveyor build fail
- Make a pull request to cvvergara' fork
- Solved in PR #138
-
Issue #18
- Special Task
- Create a new structure
-
Week B (11-17 May)
- Practice Code Linting
-
Issue #8 derived from instructions
- Lint
src/trsp/src/trsp_driver.h
- Create PR
- Lint
- Solved in PR #789
-
Issue #8 derived from instructions
- Update OSGeo GSoC
- Create OSGeo Login
- Update Wiki and Github Repo details on OSGeo GSoC page
- Learn about current organization pgRouting
- An Experiment
- Update fork
- Compile locally
- Time local compilation
- Practice Code Linting
-
Week A (4-10 May)
- Add issues to milestones
- Create Milestones on my fork
- Get added to pgRouting on Github
- Get acquainted with other GSoC wikis
- Set up Wiki at main repo
- Proposal Accepted
- Prepare and Improve Proposal
- Share a draft with the community
- Follow OSGeo template
- Consider timeline, improve plan
- Prepare example demo of area contraction using pgRouting sample data
- Integrate demo in proposal
- Finalize proposal
- Rectify Warning Messages for Travis Tests
- Develop familiarity with git branching model and commands
- Develop familiarity with instructions for students and start with project proposal
-
Issue #3
- Read GSoc Student Manual
- Read FLOSS Manual for students
- Read OSGeo Manual for students
- Post proposal link
-
Issue #3
- Get Familiar with C++
-
Issue #2
- Watch C++ and STL Videos
-
Issue #2
- Get familiar with pgRouting
-
Issue #1
- Start on develop branch
- Choose a compilation warning on a file that belongs to pgRouting
- Propose a solution to remove the warning
- Submit a pull request to develop.
-
Issue #1
- Create Travis and Appveyor accounts
- Make starting issues on my fork
- Enable Issues on fork
- Fork pgRouting
- Compile pgRouting
- Install pgRouting Dependencies
- cmake - 3.5.1
- C++ compiler - 5.4.0
- postgreSQL - 9.5
- postGIS - 2.2
- Boost graph library - 1.58
- CGAL - 4.7-4
- perl - 5.22.1-9
- pgtap - 3.31-2
- Install Ubuntu 16.04 LTS Desktop
- Introduce yourself
- Approach the community