pgRouting release - pgRouting 4.0.0, osm2pgrouting 3.0.0, pgRoutingLayer 4.0.0

Hello pgRouting community,

The pgRouting Team is pleased to announce the release of:

  • pgRouting version 4.0.0
  • osm2pgrouting version 3.0.0
  • pgRoutingLayer version 4.0.0

pgRouting:

This pre-release is available at [1]
For discussions on the release, go to [2]

To see all issues & pull requests closed by this release see the Git closed milestone for 4.0.0 on Github. [3]

Build

  • C++ standard is std17

  • Using this standard, all supported toolchains across our CI matrix will work.- The code is not yet modified to use std17:

  • If needed: -DCMAKE_CXX_STANDARD=14 to lower the standard.- The user’s documentation is built by default.

  • The doxygen documentation is built by default.
    For developers:- Set -DUSE_CLANG_TIDY=ON for clang tidy checks.

  • Tidy checks are done on CI.
    Documentation build- The doxygen documentation is built by default

  • The HTML documentation is built by default

  • The translated languages (en, es, sv, zh_Hans) HTML documentation are built by

  • default

  • WITH-DOC is not used anymore
    User Documentation is not built when- Sphinx is not found

  • When all Sphinx formats are OFF

  • To not build HTML default format: -DBUILD_HTML=OFF- When all languages are OFF

  • To build only English: -DES=OFF -DSV=OFF -DZH_HANS=OFF- Documentation output location: build/doc/_build/

  • For example: for HTML output is on build/doc/_build/html directory
    Developers’ Documentation is not built when- Doxygen is not found

  • To not build Doxygen documentation: -DBUILD_DOXY=OFF
    Summary of changes by function- pgr_aStar

  • Combinations signature promoted to official.- pgr_aStarCost

  • Combinations signature promoted to official.- pgr_bandwidth

  • New experimental function.- pgr_bdAstar

  • Combinations signature promoted to official.- pgr_bdAstarCost

  • Combinations signature promoted to official.- pgr_bdDijkstra

  • Output columns standardized to (seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)

  • Combinations signature promoted to official.- pgr_bdDijkstraCost

  • Combinations signature promoted to official.- pgr_bellmanFord

  • Output columns standardized to (seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)- pgr_binaryBreadthFirstSearch

  • Output columns standardized to (seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)- pgr_bipartite

  • Output columns standardized to (node, color)- pgr_boykovKolmogorov

  • Combinations signature promoted to official.- pgr_breadthFirstSearch

  • Standardizing output columns to (seq, depth, start_vid, pred, node, edge, cost, agg_cost)- pgr_contraction

  • Breaking change, signatures no longer available:

  • pgr_contraction(text,bigint,integer,bigint,boolean)- pgr_dagShortestPath

  • Output columns standardized to (seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)- pgr_depthFirstSearch

  • Standardizing output columns to (seq, depth, start_vid, pred, node, edge, cost, agg_cost)- pgr_dijkstra

  • Combinations signature promoted to official.- pgr_dijkstraCost

  • Combinations signature promoted to official.- pgr_edgeColoring

  • Output columns standardized to (edge, color)- pgr_edgeDisjointPaths

  • Output columns standardized to (seq, path_id, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)- pgr_edmondsKarp

  • Combinations signature promoted to official.- pgr_edwardMoore

  • Output columns standardized to (seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)
    .. rubric:: Version 3.2.0

  • New experimental signature:

  • pgr_edwardMoore(Combinations)
    .. rubric:: Version 3.0.0- New experimental function.- pgr_kingOrdering

  • New experimental function.- pgr_KSP

  • All signatures promoted to official.- pgr_maxFlow

  • Combinations signature promoted to official.- pgr_pushRelabel

  • Combinations signature promoted to official.- pgr_sloanOrdering

  • New experimental function.- pgr_sequentialVertexColoring

  • Output columns standardized to (node, color)- pgr_topologicalSort

  • Standardize output to (seq, node)- pgr_transitiveClosure

  • Standardized output to (node,targets)- pgr_trsp

  • Function promoted to official.
    .. Breaking change

  • Breaking change, signatures no longer available:

  • pgr_trsp(text,integer,integer,boolean,boolean,text)

  • pgr_trsp(text,integer,double precision,integer,double precision,boolean,boolean,text)- pgr_trspVia

  • Function promoted to official.
    .. Breaking change

  • Breaking change, signatures no longer available:

  • pgr_trspviavertices(text,anyarray,boolean,boolean,text)- pgr_trspVia_withPoints

  • Function promoted to official.

  • Driving side parameter is positional unnamed.

  • Valid values depend on kind of graph- Breaking change, signatures no longer available:

  • pgr_trspvia_withpoints(text,text,text,anyarray,boolean,boolean,boolean,character,boolean)- pgr_trspviaedges(text,integer,double precision,boolean,boolean,text)- pgr_trsp_withPoints

  • Function promoted to official.

  • Driving side parameter is positional unnamed and compulsory.

  • Valid values depend on kind of graph- Breaking change, signatures no longer available:

  • pgr_trsp_withpoints(text,text,text,anyarray,anyarray,boolean,character,boolean)

  • pgr_trsp_withpoints(text,text,text,anyarray,bigint,boolean,character,boolean)

  • pgr_trsp_withpoints(text,text,text,bigint,anyarray,boolean,character,boolean)

  • pgr_trsp_withpoints(text,text,text,bigint,bigint,boolean,character,boolean)

  • pgr_trsp_withpoints(text,text,text,text,boolean,character,boolean)- pgr_turnRestrictedPath

  • Output columns standardized to (seq, path_id, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)- pgr_withPoints

  • Function promoted to official.

  • Driving side parameter is positional unnamed and compulsory.

  • Valid values depend on kind of graph- Output columns standardized to (seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)
    .. Breaking change

  • Breaking change, signatures no longer available:

  • pgr_withpoints(text,text,anyarray,anyarray,boolean,character,boolean)

  • pgr_withpoints(text,text,anyarray,bigint,boolean,character,boolean)

  • pgr_withpoints(text,text,bigint,anyarray,boolean,character,boolean)

  • pgr_withpoints(text,text,bigint,bigint,boolean,character,boolean)

  • pgr_withpoints(text,text,text,boolean,character,boolean)- pgr_withPointsCost

  • Function promoted to official.

  • Driving side parameter is unnamed and compulsory.

  • Valid values depend on kind of graph- Output columns standardized to (start_vid, end_vid, agg_cost)

  • Breaking change, signatures no longer available:

  • pgr_withpointscost(text,text,anyarray,anyarray,boolean,character)

  • pgr_withpointscost(text,text,anyarray,bigint,boolean,character)

  • pgr_withpointscost(text,text,bigint,anyarray,boolean,character)

  • pgr_withpointscost(text,text,bigint,bigint,boolean,character)

  • pgr_withpointscost(text,text,text,boolean,character)- pgr_withPointsCostMatrix

  • Function promoted to official.

  • Driving side parameter is positional unnamed and compulsory.

  • Valid values depend on kind of graph- Output columns standardized to (start_vid, end_vid, agg_cost)

  • Breaking change, signatures no longer available:

  • pgr_withpointscostmatrix(text,text,anyarray,boolean,character)- pgr_withPointsDD

  • Function promoted to official.
    .. Breaking change

  • Breaking change, signatures no longer available:

  • pgr_withpointsdd(text,text,bigint,double precision,boolean,character,boolean)

  • pgr_withpointsdd(text,text,anyarray,double precision,boolean,character,boolean,boolean)- pgr_withPointsKSP

  • Function promoted to official.
    .. Breaking change

  • Breaking change, signatures no longer available:

  • pgr_withpointsksp(text,text,bigint,bigint,integer,boolean,boolean,character,boolean)- pgr_withPointsVia

  • Function promoted to official.

  • Driving side parameter is positional unnamed and compulsory.

  • Valid values depend on kind of graph
    .. Breaking change- Breaking change, signatures no longer available:

  • pgr_withpointsvia(text,text,anyarray,boolean,boolean,boolean,character,boolean)
    Functions promoted to official

  • #2701: pgr_trsp

  • #2701: pgr_trspVia

  • #2701: pgr_trspVia_withPoints

  • #2701: pgr_trsp_withPoints

  • #2700: pgr_withPoints

  • #2700: pgr_withPointsCost

  • #2700: pgr_withPointsCostMatrix

  • #2700: pgr_withPointsDD

  • #2700: pgr_withPointsKSP

  • #2700: pgr_withPointsVia
    Signatures promoted to official

  • #2718: pgr_aStar(Combinations)

  • #2718: pgr_aStarCost(Combinations)

  • #2718: pgr_bdAstar(Combinations)

  • #2718: pgr_bdAstarCost(Combinations)

  • #2718: pgr_bdDijkstra(Combinations)

  • #2718: pgr_bdDijkstraCost(Combinations)

  • #2718: pgr_dijkstra(Combinations)

  • #2718: pgr_dijkstraCost(Combinations)

  • #2718: pgr_KSP(All signatures)

  • #2718: pgr_boykovKolmogorov(Combinations)

  • #2718: pgr_edmondsKarp(Combinations)

  • #2718: pgr_maxFlow(Combinations)

  • #2718: pgr_pushRelabel(Combinations)
    New experimental functions.

  • Metrics

  • #2951: pgr_bandwidth- Ordering

  • #2954: pgr_kingOrdering

  • #2955: pgr_sloanOrdering
    SQL signatures and output standardization

#2904: Standardize output columns of functions with different output columns within overloads

Standardized to (seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)

  • #2905: pgr_withPoints

  • #2906: pgr_bdDijkstra

  • #2907: pgr_bellmanFord

  • #2908: pgr_binaryBreadthFirstSearch

  • #2910: pgr_edwardMoore

  • #2913: pgr_dagShortestPath
    Standardized to (start_vid, end_vid, agg_cost)- #2905: pgr_withPointsCost

  • #2905: pgr_withPointsCostMatrix
    Standardized to (seq, path_id, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)- #2909: pgr_edgeDisjointPaths

  • #2909: pgr_turnRestrictedPath
    Standardized to (edge, color)- #2924: pgr_edgeColoring
    Standardized to (node, color)- #2924: pgr_bipartite

  • #2927: pgr_sequentialVertexColoring
    Standardized to (seq, depth, start_vid, pred, node, edge, cost, agg_cost)- #2931: pgr_breadthFirstSearch

  • #2931: pgr_depthFirstSearch
    Standardized to (seq, node)- #2934: pgr_topologicalSort
    Standardized to (node,targets)- #2934: pgr_transitiveClosure
    Removal of SQL deprecated signatures- #2798: pgr_contraction

  • pgr_contraction(text,bigint,integer,bigint,boolean)- #2683: pgr_trsp

  • pgr_trsp(text,integer,integer,boolean,boolean,text)

  • pgr_trsp(text,integer,double precision,integer,double precision,boolean,boolean,text)- #2683: pgr_trspVia

  • pgr_trspviavertices(text,anyarray,boolean,boolean,text)- #2700: pgr_withPointsVia

  • pgr_withpointsvia(text,text,anyarray,boolean,boolean,boolean,character,boolean)- #2888: pgr_findCloseEdges

  • pgr_findcloseedges(text,geometry,double precision,integer,boolean,boolean)

  • pgr_findcloseedges(text,geometry,double precision,integer,boolean,boolean)- #2890: pgr_withPointsDD

  • pgr_withpointsdd(text,text,bigint,double precision,boolean,character,boolean)

  • pgr_withpointsdd(text,text,anyarray,double precision,boolean,character,boolean,boolean)- #2895: pgr_withPointsKSP

  • pgr_withpointsksp(text,text,bigint,bigint,integer,boolean,boolean,character,boolean)- #2899: pgr_maxCardinalityMatch

  • pgr_maxCardinalityMatch(text,boolean)- #2901: pgr_TSP

  • pgr_tsp(text,bigint,bigint,double precision,integer,integer,integer,double

  • precision,double precision,double precision,boolean)- #2901: pgr_TSPeuclidean

  • pgr_tspeuclidean(text,bigint,bigint,double precision,integer,integer,

  • integer,double precision,double precision,double precision,boolean)
    Removal of SQL deprecated functions- #2681: pgr_trspViaedges

  • #2682: pgr_trspViaVertices

  • #2748: pgr_alphaShape

  • #2751: pgr_createTopology

  • #2752: pgr_analyzeGraph

  • #2755: pgr_analyzeOneWay

  • #2827: pgr_createVerticesTable

  • #2886: pgr_nodeNetwork
    Removal of SQL deprecated internal functions- #2748 _pgr_alphaShape(text,double precision)

  • #2861 _pgr_checkVertTab(text,text,integer,text)

  • #2861 _pgr_createIndex(text,text,text,integer,text)

  • #2861 _pgr_createIndex(text,text,text,text,integer,text)

  • #2913 _pgr_dagShortestPath(text,anyarray,anyarray,boolean,boolean)

  • #2913 _pgr_dagShortestPath(text,text,boolean,boolean)

  • #2730 _pgr_dijkstraNear(text,anyarray,anyarray,bigint,boolean)

  • #2730 _pgr_dijkstraNear(text,anyarray,bigint,bigint,boolean)

  • #2730 _pgr_dijkstraNear(text,bigint,anyarray,bigint,boolean)

  • #2730 _pgr_dijkstra(text,anyarray,anyarray,boolean,boolean,boolean,bigint)

  • #2730 _pgr_dijkstra(text,anyarray,anyarray,boolean,boolean,boolean,bigint,boolean)

  • #2730 _pgr_dijkstra(text,text,boolean,boolean,bigint,boolean)

  • #2730 _pgr_dijkstra(text,text,boolean,boolean,boolean)

  • #2735 _pgr_drivingDistance(text,anyarray,double precision,boolean,boolean)

  • #2861 _pgr_endPoint(geometry)

  • #2861 __pgr_getColumnName(text,text,integer,text)

  • #2861 __pgr_getColumnName(text,text,text,integer,text)

  • #2861 __pgr_getColumnType(text,text,integer,text)

  • #2861 __pgr_getColumnType(text,text,text,integer,text)

  • #2861 __pgr_getTableName(text,integer,text)

  • #2861 _pgr_isColumnIndexed(text,text,integer,text)

  • #2861 _pgr_isColumnIndexed(text,text,text,integer,text)

  • #2861 _pgr_isColumnIntable(text,text)

  • #2745 _pgr_kruskal(text,anyarray,text,bigint,double precision)

  • #2897 _pgr_ksp(text,anyarray,anyarray,integer,boolean,boolean,boolean)

  • #2897 _pgr_ksp(text,bigint,bigint,integer,boolean,boolean)

  • #2897 _pgr_ksp(text,text,integer,boolean,boolean)

  • #2899 _pgr_maxCardinalityMatch(text,boolean)

  • #2861 _pgr_msg(integer,text,text)

  • #2861 _pgr_onerror(boolean,integer,text,text,text,text)

  • #2861 _pgr_pointtoid(geometry,double precision,text,integer)

  • #2743 _pgr_prim(text,anyarray,text,bigint,double precision)

  • #2861 _pgr_quote_ident(text)

  • #2861 _pgr_startPoint(geometry)

  • #2683 _pgr_trsp(text,integer,double precision,integer,double precision,boolean,boolean,text)

  • #2683 _pgr_trsp(text,text,anyarray,anyarray,boolean)

  • #2683 _pgr_trsp(text,text,anyarray,bigint,boolean)

  • #2683 _pgr_trsp(text,text,bigint,anyarray,boolean)

  • #2683 _pgr_trsp(text,text,bigint,bigint,boolean)

  • #2682 _pgr_trspViaVertices(text,integer,boolean,boolean,text)

  • #2919 _pgr_trspVia_withPoints(text,text,text,anyarray,boolean,boolean,boolean,character,boolean)

  • #2919 _pgr_trsp_withPoints(text,text,text,anyarray,anyarray,boolean,character,boolean)

  • #2919 _pgr_trsp_withPoints(text,text,text,text,boolean,character,boolean)

  • #2901 _pgr_tspEuclidean(text,bigint,bigint,double precision,integer,integer,integer,double precision,double precision,double precision,boolean)

  • #2901 _pgr_tsp(text,bigint,bigint,double precision,integer,integer,integer,double precision,double precision,double precision,boolean)

  • #2861 _pgr_versionLess(text,text)

  • #2890 _pgr_withPointsDD(text,text,anyarray,double precision,boolean,character,boolean,boolean)

  • #2895 _pgr_withPointsKSP(text,text,anyarray,anyarray,integer,character,boolean,boolean,boolean,boolean)

  • #2895 _pgr_withPointsKSP(text,text,bigint,bigint,integer,boolean,boolean,character,boolean)

  • #2895 _pgr_withPointsKSP(text,text,text,integer,character,boolean,boolean,boolean)

  • #2741 _pgr_withPointsVia(text,bigint,double precision,boolean)

  • #2741 _pgr_withPointsVia(text,text,anyarray,boolean,boolean,boolean,character,boolean)

  • #2683 _trsp(text,text,anyarray,anyarray,boolean)

  • #2683 _v4trsp(text,text,anyarray,anyarray,boolean)

  • #2683 _v4trsp(text,text,text,boolean)
    Summary of functions and signatures no longer on pgrouting

  • #2748 pgr_alphashape(geometry,double precision)

  • #2752 pgr_analyzegraph(text,double precision,text,text,text,text,text)

  • #2755 pgr_analyzeoneway(text,text,text,text,text,boolean,text,text,text)

  • #2798 pgr_contraction(text,bigint,integer,bigint,boolean)

  • #2751 pgr_createtopology(text,double precision,text,text,text,text,text,boolean)

  • #2827 pgr_createverticestable(text,text,text,text,text)

  • #2888 pgr_findcloseedges(text,geometry,double precision,integer,boolean,boolean)

  • #2888 pgr_findcloseedges(text,geometry,double precision,integer,boolean,boolean)

  • #2899 pgr_maxCardinalityMatch(text,boolean)

  • #2886 pgr_nodenetwork(text,double precision,text,text,text,text,boolean)

  • #2683 pgr_trsp(text,integer,double precision,integer,double precision,boolean,boolean,text)

  • #2683 pgr_trsp(text,integer,integer,boolean,boolean,text)

  • #2681 pgr_trspViaedges(text,integer,double precision,boolean,boolean,text)

  • #2682 pgr_trspViaVertices(text,anyarray,boolean,boolean,text)

  • #2919 pgr_trspVia_withPoints(text,text,text,anyarray,boolean,boolean,boolean,character,boolean)

  • #2919 pgr_trsp_withPoints(text,text,text,anyarray,anyarray,boolean,character,boolean)

  • #2919 pgr_trsp_withPoints(text,text,text,anyarray,bigint,boolean,character,boolean)

  • #2919 pgr_trsp_withPoints(text,text,text,bigint,anyarray,boolean,character,boolean)

  • #2919 pgr_trsp_withPoints(text,text,text,bigint,bigint,boolean,character,boolean)

  • #2919 pgr_trsp_withPoints(text,text,text,text,boolean,character,boolean)

  • #2901 pgr_tspEuclidean(text,bigint,bigint,double precision,integer,integer,integer,double precision,double precision,double precision,boolean)

  • #2901 pgr_tsp(text,bigint,bigint,double precision,integer,integer,integer,double precision,double precision,double precision,boolean)

  • #2919 pgr_withPointsCostMatrix(text,text,anyarray,boolean,character)

  • #2919 pgr_withPointsCost(text,text,anyarray,anyarray,boolean,character)

  • #2919 pgr_withPointsCost(text,text,anyarray,bigint,boolean,character)

  • #2919 pgr_withPointsCost(text,text,bigint,anyarray,boolean,character)

  • #2919 pgr_withPointsCost(text,text,bigint,bigint,boolean,character)

  • #2919 pgr_withPointsCost(text,text,text,boolean,character)

  • #2890 pgr_withPointsDD(text,text,anyarray,double precision,boolean,character,boolean,boolean)

  • #2890 pgr_withPointsDD(text,text,bigint,double precision,boolean,character,boolean)

  • #2895 pgr_withPointsKSP(text,text,bigint,bigint,integer,boolean,boolean,character,boolean)

  • #2919 pgr_withPoints(text,text,anyarray,anyarray,boolean,character,boolean)

  • #2919 pgr_withPoints(text,text,anyarray,bigint,boolean,character,boolean)

  • #2919 pgr_withPoints(text,text,bigint,anyarray,boolean,character,boolean)

  • #2919 pgr_withPoints(text,text,bigint,bigint,boolean,character,boolean)

  • #2919 pgr_withPoints(text,text,text,boolean,character,boolean)

  • #2919 pgr_withPointsVia(text,text,anyarray,boolean,boolean,boolean,character,boolean)
    Code enhancements- Removal of unused C/C++ code

  • Refactor the Script to build the update PostgreSQL file.

  • One process & driver for:

  • allpairs: johnson and Floyd-Warshall

  • Shortest path: Dijkstra and withPoints using Dijkstra
    Deprecation of internal C/C++ functions- Deprecated functions are substituted by new function.

  • _pgr_drivingDistance => _pgr_drivingDistancev4

  • _pgr_withPointsDD => _pgr_withPointsddv4

  • _pgr_kruskal => _pgr_kruskalv4

  • _pgr_prim => _pgr_primv4

  • _pgr_dijkstra => _pgr_dijkstra_v4

  • _pgr_withPointsKSP => _pgr_withPointsKSP_v4

  • _pgr_trspVia_withPoints => _pgr_trspVia_withPoints_v4

  • _pgr_trsp_withPoints => _pgr_trsp_withPoints_v4

  • _pgr_withPointsVia => _pgr_withPointsvia_v4
    Internal C/C++ functions in legacy

  • #2683 _trsp

  • #2683 _v4trsp

  • #2748 _pgr_alphaShape

  • #2913 _pgr_dagShortestPath
    To update your database,

  • Download the packaged version from your operating system, and use this command in the database:
    ALTER EXTENSION pgrouting UPDATE TO “4.0.0-alpha1”;


osm2pgrouting:

Changes:

  • cmake >= 3.12
  • geometry column name: geom
    New “ways” table structure, and “ways_vertices_pgr” table structure.

The release is available at [4]
For discussions on the release, go to [5].


pgRoutingLayer:

Changes:

  • Works best for pgRouting 4.0.0 (#150, #149)
  • No longer Support of QGIS < 3.10
  • Using PyQt5- Catch KeyError in openHelp method (#145)
  • Add LICENSE file to zip (#153)
    The release is available at [6]

[1]. https://github.com/pgRouting/pgrouting/releases/tag/v4.0.0
[2]. https://github.com/pgRouting/pgrouting/discussions/2993
[3]. https://github.com/pgRouting/pgrouting/issues?utf8=%E2%9C%93&q=milestone%3A%22Release%204.0.0%22

[4]. https://github.com/pgRouting/osm2pgrouting/releases/tag/v3.0.0

[5]. https://github.com/pgRouting/osm2pgrouting/discussions/322
[6]. https://github.com/pgRouting/pgRoutingLayer/releases/tag/v4.0.0