Name: Md Sakir Ahmed
Project Title: Implement Planar Face Extraction and K-Core Decomposition Algorithms for pgRouting
Mentors: @cvvergara, @robe
Organization: OSGeo / pgRouting
OSGeo Profile: OSGeo Profile Link
Project Wiki: Github Wiki Link
Repository: Repo Link
Period: Community Bonding (May 8 - May 25, 2026)
Work Done in Community Bonding Period
1. Project Onboarding
- Introduced myself on pgRouting mailing lists and bonding discussions.
- Attended mentor meetings regarding project expectations, workflow, and development approach.
- Reviewed pgRouting contribution guidelines, testing workflow, and documentation standards.
- Studied previous GSoC projects and existing pgRouting algorithm integration patterns.
2. Wiki & Documentation Setup
- Created the project wiki page and weekly reporting structure
- Added project summary, repository links, deliverables, and timeline sections to the wiki
- Added placeholder sections for weekly updates, benchmark reports, and final deliverables
- Linked the project wiki on the official GSoC accepted students page
3. Deep Codebase Study
-
Studied pgRouting’s execution pipeline:
SQL ->C wrapper - > C++ driver - > Boost Graph Library - > SQL result mapping
-
Read existing implementations including:
pgr_kruskalpgr_primpgr_connectedComponents
-
Studied how pgRouting handles:
- graph construction from SQL edge tables
- vertex ID remappiing between PostgreSQL IDs and contiguous Boost indices
- result formatting and SRF output generation
- parameter validation and memory management
-
Researched
planar_face_traversalvisitor workflow and outer-face traversal handling. -
Studied Graphviz planar traversal examples and compared traversal behavior with Boost documentation.
-
Researched Batagelji - Zaversniks k-core decomposition workflow and degre-peeling process.
-
Investigated directed-to-undirected conversion handling for planar traversal input.
4. Implementation Planning
-
Prepared implementation structure for:
pgr_planarFacespgr_coreNumbers
-
Planned:
- C++ result structures
- SQL output columns
- wrapper-layer workflow
- benchmark dataset structure
- pgTap testing workflow
-
Refined implementations approach after deeper architecture study and mentor discussions.
5. Community Interaction
- Discussed implementation strategy and traversal workflow with mentors.
- Participated in discussions regarding wrapper structure and integration sequence.
Plans for the Coding Period
- Begin implementation of
pgr_planarFaces()by integrating Boost planar embedding andplanar_face_traversalworkflow into pgRouting’s SQL ->C - > C++ pipeline. - Implement traversal visitor logic, face extraction workflow, and directed-to-undirected graph handling for planar traversal.
- Begin implementation of
pgr_coreNumbers()using Boost’s Batagelj–Zaversnik k-core decomposition algorithm. - Develop graph construction, core-number result mapping, and SQL output formatting for k-core decomposition.
- Write pgTap regression tests and Sphinx documentation for both algorithms alongside implementation.
- Start benchmarking on OpenStreetMap datasets after initial integration and testing stabilize.
Am I blocked on anything?
No, I am not currently blocked on anything.