New function pgr_makeMaximalPlanar to be added in pgrouting
Los mantenedores suelen responder en 2 días
Nadie ha tomado este issue todavía.
- #3134 de @Mohit242-bit — cerrado sin fusionar
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 40/100
Línea de trabajo
The issue describes adding a new SQL function pgr_makeMaximalPlanar. Look at existing pgRouting functions in the source code to understand the pattern for wrapping Boost Graph Library algorithms. The linked pull request #3134 may show related work. Start by examining the directory structure for where graph algorithms are implemented and how they are exposed to PostgreSQL. The function must be added to the SQL signatures and the underlying C++ implementation.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
pgr_makeMaximalPlanar():
makeMaximalPlanar(): Maximal planar augmentation (triangulation) is an algorithm that takes a biconnected planar graph and adds edges until the graph becomes maximally planar. A graph is maximally planar if no more edges can be added without violating planarity, which results in a triangulated graph where every face is a triangle (satisfying Euler's formula E = 3V - 6). Triangulated planar graphs are required for advanced graph layout algorithms like Chrobak-Payne straight line drawing. This implementation uses the Boost Graph Library's make_maximal_planar algorithm with a time complexity of O(V + E), where V is the number of vertices and E is the number of edges. This will enhance pgRouting's capabilities in planar graph optimization and spatial rendering problems.
The algorithm:
- Works on undirected graphs.
- Requires the input graph to already be biconnected and planar.
- Adds new edges between vertices strictly preserving the planarity of the embedding.
- Outputs the set of edges added to the graph to triangulate it.
- Running time: O(V + E) where V is the number of vertices and E is the number of edges.
Signature:
- pgr_makeMaximalPlanar()
pgr_makeMaximalPlanar(Edges SQL)
Returns set of (seq, start_vid, end_vid)
OR EMPTY SET
Parameters
| Parameter | Type | Description |
|---|---|---|
| Edges SQL | TEXT |
Inner SQL query, as described below. |
Inner Query
Edges SQL: An SQL query returning a set of rows with the following columns:
| Column | Type | Default | Description |
|---|---|---|---|
| id | ANY-INTEGER |
Identifier of the edge. | |
| source | ANY-INTEGER |
Identifier of the first endpoint vertex of the edge. | |
| target | ANY-INTEGER |
Identifier of the second endpoint vertex of the edge. | |
| cost | ANY-NUMERICAL |
Weight of the edge (source, target). When negative, the edge does not exist. |
|
| reverse_cost | ANY-NUMERICAL |
-1 |
Weight of the edge (target, source). When negative, the edge does not exist. |
Where:
ANY-INTEGER=SMALLINT,INTEGER,BIGINTANY-NUMERICAL=SMALLINT,INTEGER,BIGINT,REAL,FLOAT
Result Columns
Returns SETOF (seq, start_vid, end_vid).
| Column | Type | Description |
|---|---|---|
| seq | BIGINT |
Sequential value starting from 1. |
| start_vid | BIGINT |
Identifier of the first endpoint vertex of the added edge. |
| end_vid | BIGINT |
Identifier of the second endpoint vertex of the added edge. |
- Lenguaje dominante
- C++
- Estrellas
- 1.4k
- Forks
- 397
- Merge medio
- 2 d 2 h
- PR fusionados (30 d)
- 4
Preparar el entorno
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de pgRouting/pgrouting
-
Boost broken linksPosiblemente ocupada @Nandan-Raichura-Dev la tomó hoy. AbiertoEnhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
pgRouting/pgrouting#3176 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
Add details to CONTRIBUTING.mdAbiertoAdministrative Enhancement
Dificultad 1/5 Menos de una hora Aptitud para principiantes 80/100
Los mantenedores suelen responder en 2 días
-
points_input Developers docPosiblemente ocupada @withaman69 la tomó hace 85 días. AbiertoC/C++ Developers Doc. good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
pgRouting/pgrouting#973 · 10 comentarios ·
Los mantenedores suelen responder en 2 días
-
get_check_data developers docPosiblemente ocupada @withaman69 la tomó hace 87 días. AbiertoC/C++ Developers Doc. good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
pgRouting/pgrouting#972 · 7 comentarios ·
Los mantenedores suelen responder en 2 días
-
circuits Functionality Request
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
Los mantenedores suelen responder en 2 días
Todos los issues de pgRouting/pgrouting
Issues similares
-
good first issue invalid
Dificultad 1/5 Menos de una hora Aptitud para principiantes 72/100
DanielJerolm/gpcc#74 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
patrick-hudson/put.gd-desktop#808 ·
Los mantenedores suelen responder en 1 día
-
DPI change is not fully handled in the cascading window on WindowsPosiblemente ocupada @yukawa la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
Los mantenedores suelen responder en 4 días
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 1 día
-
enhancement Ready for final check
Dificultad 2/5 1-3 horas Aptitud para principiantes 79/100
mpogue2/SquareDesk#1818 · 1 comentario ·