diff --git a/.github/workflows/boost_version.yml b/.github/workflows/boost_version.yml index b5c697698f..3cdbd830c5 100644 --- a/.github/workflows/boost_version.yml +++ b/.github/workflows/boost_version.yml @@ -131,5 +131,5 @@ jobs: sudo service postgresql start psql -c "CREATE DATABASE ___pgr___test___;" DIR=$(git rev-parse --show-toplevel) - bash "${DIR}/tools/testers/setup_db.sh" "${PGPORT}" ___pgr___test___ "${PG_RUNNER_USER}" "3.7.0" + bash "${DIR}/tools/testers/setup_db.sh" "${PGPORT}" ___pgr___test___ "${PG_RUNNER_USER}" "4.0.0" pg_prove -Q -f --normalize --directives --recurse -U "${PG_RUNNER_USER}" -d ___pgr___test___ "pgtap" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 59ce4f79f0..b06cc6b955 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -79,6 +79,7 @@ jobs: python -m pip install --upgrade pip pip install Sphinx pip install sphinx-bootstrap-theme + pip install sphinx-collapse pip list - name: Configure diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index 4a023e06d4..5574b9d43d 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -29,7 +29,7 @@ jobs: strategy: fail-fast: false matrix: - psql: [13,14,15,16] + psql: [13,14,15,16,17] postgis: [3] os: [ubuntu-latest, ubuntu-22.04, ubuntu-20.04] diff --git a/.github/workflows/update-locale.yml b/.github/workflows/update-locale.yml index 9e93208483..65c7fe2a30 100644 --- a/.github/workflows/update-locale.yml +++ b/.github/workflows/update-locale.yml @@ -8,8 +8,12 @@ name: Update Locale on: workflow_dispatch: push: - branches: - - 'develop' + paths: + - '.github/workflows/update-locale.yml' + - 'doc/**' + + branches-ignore: + - 'gh-pages' permissions: contents: read @@ -20,7 +24,6 @@ jobs: contents: write # for Git to git push name: Update Locale runs-on: ubuntu-latest - if: ${{ github.repository_owner == 'pgRouting' }} strategy: fail-fast: false @@ -74,6 +77,7 @@ jobs: pip install Sphinx pip install sphinx-bootstrap-theme pip install sphinx-intl[transifex] + pip install sphinx-collapse pip list - name: Initialize mandatory git config diff --git a/.github/workflows/update.yml b/.github/workflows/update.yml index 2678618ec9..d781f1edca 100644 --- a/.github/workflows/update.yml +++ b/.github/workflows/update.yml @@ -21,14 +21,15 @@ permissions: contents: read jobs: - build: + update-ver: name: Build runs-on: ubuntu-latest strategy: fail-fast: false matrix: - old_pgr: [3.6.3, 3.6.2, 3.6.1, 3.6.0, 3.5.1, 3.5.0, 3.4.2, 3.4.1, 3.4.0, 3.3.5, 3.3.4, 3.3.3, 3.3.2, 3.3.1, 3.3.0, 3.0.0, 3.0.1, 3.0.2, 3.0.3, 3.0.4, 3.0.6, 3.1.0, 3.1.1, 3.1.2, 3.1.3, 3.2.0, 3.2.1, 3.2.2] + boost_minor: [56] + old_pgr: [3.8.0, 3.7.3, 3.7.2, 3.7.1, 3.7.0, 3.6.3, 3.6.2, 3.6.1, 3.6.0, 3.5.1, 3.5.0, 3.4.2, 3.4.1, 3.4.0, 3.3.5, 3.3.4, 3.3.3, 3.3.2, 3.3.1, 3.3.0, 3.0.0, 3.0.1, 3.0.2, 3.0.3, 3.0.4, 3.0.6, 3.1.0, 3.1.1, 3.1.2, 3.1.3, 3.2.0, 3.2.1, 3.2.2] steps: - uses: actions/checkout@v4 @@ -63,7 +64,6 @@ jobs: run: | sudo apt-get update sudo apt-get install -y \ - libboost-graph-dev \ libtap-parser-sourcehandler-pgtap-perl \ postgresql-${PGVER} \ postgresql-${PGVER}-pgtap \ @@ -74,6 +74,10 @@ jobs: python -m pip install --upgrade pip pip install -r requirements.txt + wget https://sourceforge.net/projects/boost/files/boost/1.${{ matrix.boost_minor }}.0/boost_1_${{ matrix.boost_minor }}_0.tar.bz2 + sudo tar --bzip2 -xf boost_1_${{ matrix.boost_minor }}_0.tar.bz2 + sudo mv boost_1_${{ matrix.boost_minor }}_0/boost /usr/include/ + - name: get old version uses: actions/checkout@v4 with: @@ -90,16 +94,16 @@ jobs: cmake -DPOSTGRESQL_VERSION=${PGVER} -DCMAKE_BUILD_TYPE=Release -DWITH_DOC=OFF .. make -j 4 sudo make install - sudo service postgresql start - createdb -p "${PGPORT}" ___pgr___test___ - psql -p "${PGPORT}" -d ___pgr___test___ -c "CREATE EXTENSION pgrouting CASCADE;" - name: Test old version before update with current tests run: | sudo service postgresql start + createdb -p "${PGPORT}" ___pgr___test___ + psql -p "${PGPORT}" -d ___pgr___test___ -c "CREATE EXTENSION pgrouting CASCADE;" psql -p "${PGPORT}" -d ___pgr___test___ -c "SELECT * FROM pgr_full_version();" DIR=$(git rev-parse --show-toplevel) bash "${DIR}/tools/testers/setup_db.sh" "${PGPORT}" ___pgr___test___ "${PG_RUNNER_USER}" "${{ matrix.old_pgr }}" + psql -p "${PGPORT}" -d ___pgr___test___ -c "SELECT * FROM pgr_full_version();" pg_prove -Q -f --normalize --directives --recurse -U "${PG_RUNNER_USER}" -d ___pgr___test___ "pgtap" - name: Build current version @@ -114,14 +118,17 @@ jobs: - name: Test old version with currrent tests after installing current run: | sudo service postgresql start - psql -p "${PGPORT}" -d ___pgr___test___ -c "SELECT * FROM pgr_full_version();" + dropdb -p "${PGPORT}" ___pgr___test___ + createdb -p "${PGPORT}" ___pgr___test___ DIR=$(git rev-parse --show-toplevel) + bash "${DIR}/tools/testers/setup_db.sh" "${PGPORT}" ___pgr___test___ "${PG_RUNNER_USER}" "${{ matrix.old_pgr }}" + psql -p "${PGPORT}" -d ___pgr___test___ -c "SELECT * FROM pgr_full_version();" pg_prove -Q -f --normalize --directives --recurse -U "${PG_RUNNER_USER}" -d ___pgr___test___ "pgtap" - name: Test old version with current tests after update run: | sudo service postgresql start psql -p "${PGPORT}" -d ___pgr___test___ -c "SELECT * FROM pgr_full_version();" - psql -p "${PGPORT}" -d ___pgr___test___ -c "ALTER EXTENSION pgrouting UPDATE TO '3.7.0';" + psql -p "${PGPORT}" -d ___pgr___test___ -c "ALTER EXTENSION pgrouting UPDATE TO '4.0.0';" psql -p "${PGPORT}" -d ___pgr___test___ -c "SELECT * FROM pgr_full_version();" pg_prove -Q -f --normalize --directives --recurse -U "${PG_RUNNER_USER}" -d ___pgr___test___ "pgtap" diff --git a/.github/workflows/website.yml b/.github/workflows/website.yml index abcab337e1..536dd5be24 100644 --- a/.github/workflows/website.yml +++ b/.github/workflows/website.yml @@ -76,6 +76,7 @@ jobs: pip install Sphinx pip install sphinx-bootstrap-theme pip install sphinx-intl[transifex] + pip install sphinx-collapse pip list - name: Configure and build documentation diff --git a/.gitignore b/.gitignore index 3b0eb5ae1c..4b6cdf25db 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,5 @@ src/version/version.h .directory notUsed *.swp + +.vscode diff --git a/CMakeLists.txt b/CMakeLists.txt index 8735fba9e7..329125b24d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.12 FATAL_ERROR) if (${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) message(FATAL_ERROR "In-source builds not allowed. @@ -6,6 +6,18 @@ if (${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) You may need to remove CMakeCache.txt." ) endif() +if(POLICY CMP0144) + cmake_policy(SET CMP0144 OLD) +endif() + +if(POLICY CMP0167) + cmake_policy(SET CMP0167 OLD) +endif() + +if(POLICY CMP0148) + cmake_policy(SET CMP0148 OLD) +endif() + #--------------------------------------------- # Setting kind of build #--------------------------------------------- @@ -18,9 +30,9 @@ include(pgr/BuildType) #--------------------------------------------- #--------------------------------------------- -project(PGROUTING VERSION 3.7.0 +project(PGROUTING VERSION 4.0.0 LANGUAGES C CXX ) -set(PROJECT_VERSION_DEV "") +set(PROJECT_VERSION_DEV "-dev") string(TOLOWER "${PROJECT_NAME}" PROJECT_NAME_LOWER) include(pgr/GitInfo) @@ -31,8 +43,13 @@ set(PROJECT_LIB_NAME "${PROJECT_NAME_LOWER}-${PROJECT_LIB_VERSION}") string(TIMESTAMP COMPILATION_DATE "%Y/%m/%d" UTC) -set(MINORS 3.7 3.6 3.5 3.4 3.3 3.2 3.1 3.0 2.6) +set(MINORS 4.0 3.8 3.7 3.6 3.5 3.4 3.3 3.2 3.1 3.0 2.6) set(OLD_SIGNATURES + 3.8.0 + 3.7.3 + 3.7.2 + 3.7.1 + 3.7.0 3.6.3 3.6.2 3.6.1 diff --git a/NEWS.md b/NEWS.md index f376a82821..6c8bdc9e60 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,11 +1,185 @@ +# pgRouting 4 + + +## pgRouting 4.0 + + +.. current + +### pgRouting 4.0.0 Release Notes + +To see all issues & pull requests closed by this release see the [Git closed +milestone for 4.0.0 +](https://github.com/pgRouting/pgrouting/issues?utf8=%E2%9C%93&q=milestone%3A%22Release%204.0.0%22) + +**Functions promoted to official** + +* pgr_trsp +* pgr_trspVia +* pgr_trspVia_withPoints +* pgr_trsp_withPoints +* pgr_withPoints +* pgr_withPointsCost +* pgr_withPointsCostMatrix +* pgr_withPointsDD +* pgr_withPointsKSP +* pgr_withPointsVia + +**Signatures promoted to official** + +* pgr_aStar(Combinations) +* pgr_aStarCost(Combinations) +* pgr_bdAstar(Combinations) +* pgr_bdAstarCost(Combinations) +* pgr_bdDijkstra(Combinations) +* pgr_bdDijkstraCost(Combinations) +* pgr_dijkstra(Combinations) +* pgr_dijkstraCost(Combinations) +* pgr_KSP(All signatures) +* pgr_boykovKolmogorov(Combinations) +* pgr_edmondsKarp(Combinations) +* pgr_maxFlow(Combinations) +* pgr_pushRelabel(Combinations) + +**code enhancements:** + +* Removal of unused C/C++ code + +**Removal of SQL deprecated functions** + +* pgr_trsp(text,integer,double precision,integer,double precision,boolean,boolean,text) +* pgr_trsp(text,integer,integer,boolean,boolean,text) +* pgr_trspviaedges(text,integer[],double precision[],boolean,boolean,text) +* pgr_trspviavertices(text,anyarray,boolean,boolean,text) + +**Removal of SQL deprecated internal functions** + +* _pgr_dijkstranear(text,anyarray,anyarray,bigint,boolean) +* _pgr_dijkstranear(text,anyarray,bigint,bigint,boolean) +* _pgr_dijkstranear(text,bigint,anyarray,bigint,boolean) +* _pgr_dijkstra(text,anyarray,anyarray,boolean,boolean,boolean,bigint) +* _pgr_dijkstra(text,text,boolean,boolean,boolean) +* _pgr_drivingdistance(text,anyarray,double precision,boolean,boolean) +* _pgr_kruskal(text,anyarray,text,bigint,double precision) +* _pgr_prim(text,anyarray,text,bigint,double precision) +* _pgr_trsp(text,integer,double precision,integer,double precision,boolean,boolean,text) +* _pgr_trsp(text,text,anyarray,anyarray,boolean) +* _pgr_trsp(text,text,anyarray,bigint,boolean) +* _pgr_trsp(text,text,bigint,anyarray,boolean) +* _pgr_trsp(text,text,bigint,bigint,boolean) +* _pgr_trspviavertices(text,integer[],boolean,boolean,text) +* _pgr_withpointsvia(text,bigint[],double precision[],boolean) +* _trsp(text,text,anyarray,anyarray,boolean) +* _v4trsp(text,text,anyarray,anyarray,boolean) +* _v4trsp(text,text,text,boolean) + +**Deprecation of internal C/C++ functions** + +* _pgr_drivingdistance(text,anyarray,double precision,boolean,boolean) +* _pgr_kruskal(text,anyarray,text,bigint,double precision) +* _pgr_prim(text,anyarray,text,bigint,double precision) + +**Internal C/C++ functions in legacy** + +* _trsp(text,text,anyarray,anyarray,boolean) +* _v4trsp(text,text,anyarray,anyarray,boolean) +* _v4trsp(text,text,text,boolean) + # pgRouting 3 -## pgRouting 3.7 +## pgRouting 3.8 .. current +### pgRouting 3.8.0 Release Notes + +**Promotion to official function of pgRouting.** + +* pgr_extractVertices + + * Error messages adjustment. + * Function promoted to official. + +* pgr_degree + + * Error messages adjustment. + * New signature with only Edges SQL. + * Function promoted to official. + +* pgr_findCloseEdges + + * Error messages adjustment. + * ``partial`` option is removed. + * Function promoted to official. + +**Official functions changes** + +* [#2786](https://github.com/pgRouting/pgrouting/issues/2786): pgr_contraction + + * New signature: + * Previously compulsory parameter **Contraction order** is now optional with + name ``methods``. + * New name and order of optional parameters. + * Deprecated signature pgr_contraction(text,bigint[],integer,bigint[],boolean) + +**New proposed functions** + +* Contraction + + * [#2790](https://github.com/pgRouting/pgrouting/issues/2790): pgr_contractionDeadEnd + * [#2791](https://github.com/pgRouting/pgrouting/issues/2791): pgr_contractionLinear + +## pgRouting 3.7 + + +### pgRouting 3.7.3 Release Notes + +To see all issues & pull requests closed by this release see the [Git closed +milestone for 3.7.3 +](https://github.com/pgRouting/pgrouting/issues?utf8=%E2%9C%93&q=milestone%3A%22Release%203.7.3%22) + +* [#2731](https://github.com/pgRouting/pgrouting/pull/2731) Build Failure on Ubuntu 22 + +### pgRouting 3.7.2 Release Notes + +To see all issues & pull requests closed by this release see the [Git closed +milestone for 3.7.2 +](https://github.com/pgRouting/pgrouting/issues?utf8=%E2%9C%93&q=milestone%3A%22Release%203.7.2%22) + +**Build** + +* [#2713](https://github.com/pgRouting/pgrouting/pull/2713) cmake missing + some policies and min version + + - Using OLD policies: CMP0148, CMP0144, CMP0167 + - Minimum cmake version 3.12 + +**Bug fixes** + +* [#2707](https://github.com/pgRouting/pgrouting/pull/2707) Build failure in + pgRouting 3.7.1 on Alpine +* [#2706](https://github.com/pgRouting/pgrouting/pull/2706) winnie crashing + on pgr_betweennessCentrality + +### pgRouting 3.7.1 Release Notes + +To see all issues & pull requests closed by this release see the [Git closed +milestone for 3.7.1 +](https://github.com/pgRouting/pgrouting/issues?utf8=%E2%9C%93&q=milestone%3A%22Release%203.7.1%22) + +**Bug fixes** + +* [#2680](https://github.com/pgRouting/pgrouting/pull/2680) fails to compile + under mingw64 gcc 13.2 +* [#2689](https://github.com/pgRouting/pgrouting/pull/2689) When point is a + vertex, the withPoints family do not return results. + +**C/C++ code enhancemet** + +* TRSP family + ### pgRouting 3.7.0 Release Notes To see all issues & pull requests closed by this release see the [Git closed @@ -28,7 +202,7 @@ milestone for 3.7.0 **Official functions changes** -* [#2605](https://github.com/pgRouting/pgrouting/pull/2605) Standarize +* [#2605](https://github.com/pgRouting/pgrouting/pull/2605) Standardize spanning tree functions output * Functions: @@ -50,7 +224,7 @@ milestone for 3.7.0 * ``pgr_lineGraph`` - * Promoted to **proposed** signature. + * Function promoted to proposed. * Works for directed and undirected graphs. **Code enhancement** @@ -93,7 +267,7 @@ milestone for 3.6.3 **Documentation** -* Results of documentation queries adujsted to boost 1.83.0 version: +* Results of documentation queries adujsted to 1.83.0 version: * pgr_edgeDisjointPaths * pgr_stoerWagner @@ -140,83 +314,83 @@ milestone for 3.6.0 **Official functions changes** -* [#2516](https://github.com/pgRouting/pgrouting/pull/2516) Standarize output +* [#2516](https://github.com/pgRouting/pgrouting/pull/2516) Standardize output pgr_aStar - * Standarizing output columns to ``(seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)`` + * Standardize output columns to ``(seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)`` - * ``pgr_aStar`` (`One to One`) added ``start_vid`` and ``end_vid`` columns. - * ``pgr_aStar`` (`One to Many`) added ``end_vid`` column. - * ``pgr_aStar`` (`Many to One`) added ``start_vid`` column. + * pgr_aStar(One to One) added ``start_vid`` and ``end_vid`` columns. + * pgr_aStar(One to Many) added ``end_vid`` column. + * pgr_aStar(Many to One) added ``start_vid`` column. -* [#2523](https://github.com/pgRouting/pgrouting/pull/2523) Standarize output +* [#2523](https://github.com/pgRouting/pgrouting/pull/2523) Standardize output pgr_bdAstar - * Standarizing output columns to ``(seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)`` + * Standardize output columns to ``(seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)`` - * ``pgr_bdAstar`` (`One to One`) added ``start_vid`` and ``end_vid`` + * pgr_bdAstar(One to One) added ``start_vid`` and ``end_vid`` columns. - * ``pgr_bdAstar`` (`One to Many`) added ``end_vid`` column. - * ``pgr_bdAstar`` (`Many to One`) added ``start_vid`` column. + * pgr_bdAstar(One to Many) added ``end_vid`` column. + * pgr_bdAstar(Many to One) added ``start_vid`` column. -* [#2547](https://github.com/pgRouting/pgrouting/pull/2547) Standarize output +* [#2547](https://github.com/pgRouting/pgrouting/pull/2547) Standardize output and modifying signature pgr_KSP * Result columns standarized to: ``(seq, path_id, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)`` - * ``pgr_ksp`` (One to One) + * pgr_ksp(One to One) * Added ``start_vid`` and ``end_vid`` result columns. - * New overload functions: - * ``pgr_ksp`` (One to Many) - * ``pgr_ksp`` (Many to One) - * ``pgr_ksp`` (Many to Many) - * ``pgr_ksp`` (Combinations) + * New proposed signatures: + * pgr_ksp(One to Many) + * pgr_ksp(Many to One) + * pgr_ksp(Many to Many) + * pgr_ksp(Combinations) -* [#2548](https://github.com/pgRouting/pgrouting/pull/2548) Standarize output - pgr_drivingdistance +* [#2548](https://github.com/pgRouting/pgrouting/pull/2548) Standardize output + pgr_drivingDistance * Standarizing output columns to ``(seq, depth, start_vid, pred, node, edge, cost, agg_cost)`` - * ``pgr_drivingdistance`` (Single vertex) + * pgr_drivingDistance(Single vertex) * Added ``depth`` and ``start_vid`` result columns. - * ``pgr_drivingdistance`` (Multiple vertices) + * pgr_drivingDistance(Multiple vertices) * Result column name change: ``from_v`` to ``start_vid``. * Added ``depth`` and ``pred`` result columns. **Proposed functions changes** -* [#2544](https://github.com/pgRouting/pgrouting/pull/2544) Standarize output +* [#2544](https://github.com/pgRouting/pgrouting/pull/2544) Standardize output and modifying signature pgr_withPointsDD * Signature change: ``driving_side`` parameter changed from named optional to unnamed compulsory **driving side**. - * ``pgr_withPointsDD`` (`Single vertex`) - * ``pgr_withPointsDD`` (`Multiple vertices`) + * pgr_withPointsDD(Single vertex) + * pgr_withPointsDD(Multiple vertices) * Standarizing output columns to ``(seq, depth, start_vid, pred, node, edge, cost, agg_cost)`` - * ``pgr_withPointsDD`` (`Single vertex`) + * pgr_withPointsDD(Single vertex) * Added ``depth``, ``pred`` and ``start_vid`` column. - * ``pgr_withPointsDD`` (`Multiple vertices`) + * pgr_withPointsDD(Multiple vertices) * Added ``depth``, ``pred`` columns. * When ``details`` is ``false``: * Only points that are visited are removed, that is, points reached within the distance are included * Deprecated signatures - * ``pgr_withpointsdd(text,text,bigint,double precision,boolean,character,boolean)`` - * ``pgr_withpointsdd(text,text,anyarray,double precision,boolean,character,boolean,boolean)`` + * pgr_withpointsdd(text,text,bigint,double precision,boolean,character,boolean) + * pgr_withpointsdd(text,text,anyarray,double precision,boolean,character,boolean,boolean) -* [#2546](https://github.com/pgRouting/pgrouting/pull/2546) Standarize output +* [#2546](https://github.com/pgRouting/pgrouting/pull/2546) Standardize output and modifying signature pgr_withPointsKSP * Standarizing output columns to ``(seq, path_id, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)`` - * ``pgr_withPointsKSP`` (One to One) + * pgr_withPointsKSP(One to One) * Signature change: ``driving_side`` parameter changed from named optional to unnamed compulsory **driving side**. * Added ``start_vid`` and ``end_vid`` result columns. - * New overload functions - * ``pgr_withPointsKSP`` (One to Many) - * ``pgr_withPointsKSP`` (Many to One) - * ``pgr_withPointsKSP`` (Many to Many) - * ``pgr_withPointsKSP`` (Combinations) + * New proposed signatures: + * pgr_withPointsKSP(One to Many) + * pgr_withPointsKSP(Many to One) + * pgr_withPointsKSP(Many to Many) + * pgr_withPointsKSP(Combinations) * Deprecated signature - * ``pgr_withpointsksp(text,text,bigint,bigint,integer,boolean,boolean,char,boolean)`` + * pgr_withpointsksp(text,text,bigint,bigint,integer,boolean,boolean,char,boolean)`` **C/C++ code enhancements** @@ -240,9 +414,9 @@ milestone for 3.6.0 * [#2490](https://github.com/pgRouting/pgrouting/pull/2490) Automatic page history links. -* ..rubric:: SQL standarization +* ..rubric:: Standardize SQL -* [#2555](https://github.com/pgRouting/pgrouting/pull/2555) standarize +* [#2555](https://github.com/pgRouting/pgrouting/pull/2555) Standardize deprecated messages * On new internal function: do not use named parameters and default parameters. @@ -269,7 +443,7 @@ Changes on the documentation to the following: **Issue fixes** * [#2565](https://github.com/pgRouting/pgrouting/issues/2565) - pgr_pgr_lengauerTarjanDominatorTree triggers an assertion + pgr_lengauerTarjanDominatorTree triggers an assertion **SQL enhancements** @@ -300,11 +474,11 @@ milestone for 3.5.0 * Dijkstra - * Standarizing output columns to ``(seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)`` + * Standardize output columns to ``(seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)`` - * ``pgr_dijkstra`` (`One to One`) added ``start_vid`` and ``end_vid`` columns. - * ``pgr_dijkstra`` (`One to Many`) added ``end_vid`` column. - * ``pgr_dijkstra`` (`Many to One`) added ``start_vid`` column. + * pgr_dijkstra(One to One) added ``start_vid`` and ``end_vid`` columns. + * pgr_dijkstra(One to Many) added ``end_vid`` column. + * pgr_dijkstra(Many to One) added ``start_vid`` column. ## pgRouting 3.4 @@ -346,70 +520,70 @@ milestone for 3.4.0 * [#1891](https://github.com/pgRouting/pgrouting/issues/1891): pgr_ksp doesn't give all correct shortest path -**New proposed functions** +**New proposed functions.** * With points - * ``pgr_withPointsVia`` (One Via) + * pgr_withPointsVia(One Via) * Turn Restrictions * Via with turn restrictions - * ``pgr_trspVia`` (One Via) - * ``pgr_trspVia_withPoints`` (One Via) + * pgr_trspVia(One Via) + * pgr_trspVia_withPoints(One Via) - * ``pgr_trsp`` + * pgr_trsp - * ``pgr_trsp`` (One to One) - * ``pgr_trsp`` (One to Many) - * ``pgr_trsp`` (Many to One) - * ``pgr_trsp`` (Many to Many) - * ``pgr_trsp`` (Combinations) + * pgr_trsp(One to One) + * pgr_trsp(One to Many) + * pgr_trsp(Many to One) + * pgr_trsp(Many to Many) + * pgr_trsp(Combinations) * ``pgr_trsp_withPoints`` - * ``pgr_trsp_withPoints`` (One to One) - * ``pgr_trsp_withPoints`` (One to Many) - * ``pgr_trsp_withPoints`` (Many to One) - * ``pgr_trsp_withPoints`` (Many to Many) - * ``pgr_trsp_withPoints`` (Combinations) + * pgr_trsp_withPoints(One to One) + * pgr_trsp_withPoints(One to Many) + * pgr_trsp_withPoints(Many to One) + * pgr_trsp_withPoints(Many to Many) + * pgr_trsp_withPoints(Combinations) * Topology - * ``pgr_degree`` + * pgr_degree * Utilities - * ``pgr_findCloseEdges`` (One point) - * ``pgr_findCloseEdges`` (Many points) + * pgr_findCloseEdges(One point) + * pgr_findCloseEdges(Many points) **New experimental functions** * Ordering - * ``pgr_cuthillMckeeOrdering`` + * pgr_cuthillMckeeOrdering * Unclassified - * ``pgr_hawickCircuits`` + * pgr_hawickCircuits **Official functions changes** * Flow functions - * ``pgr_maxCardinalityMatch(text)`` + * pgr_maxCardinalityMatch(text) - * Deprecating ``pgr_maxCardinalityMatch(text,boolean)`` + * Deprecating: pgr_maxCardinalityMatch(text,boolean) **Deprecated Functions** * Turn Restrictions - * ``pgr_trsp(text,integer,integer,boolean,boolean,text)`` - * ``pgr_trsp(text,integer,float8,integer,float8,boolean,boolean,text)`` - * ``pgr_trspViaVertices(text,anyarray,boolean,boolean,text)`` - * ``pgr_trspViaEdges(text,integer[],float[],boolean,boolean,text)`` + * pgr_trsp(text,integer,integer,boolean,boolean,text) + * pgr_trsp(text,integer,float8,integer,float8,boolean,boolean,text) + * pgr_trspViaVertices(text,anyarray,boolean,boolean,text) + * pgr_trspViaEdges(text,integer[],float[],boolean,boolean,text) ## pgRouting 3.3 @@ -445,7 +619,7 @@ milestone for 3.3.3 * Flow functions - * ``pgr_maxCardinalityMatch(text,boolean)`` + * pgr_maxCardinalityMatch(text,boolean) * Ignoring optional boolean parameter, as the algorithm works only for undirected graphs. @@ -631,7 +805,7 @@ on Github. * pgr_sequentialVertexColoring -**New proposed functions** +**New proposed functions.** * Astar @@ -742,7 +916,7 @@ milestone for 3.1.0 ](https://github.com/pgRouting/pgrouting/issues?utf8=%E2%9C%93&q=milestone%3A%22Release%203.1.0%22) on Github. -**New proposed functions** +**New proposed functions.** * pgr_dijkstra(combinations) * pgr_dijkstraCost(combinations) @@ -873,7 +1047,7 @@ on Github. * [#1006](https://github.com/pgRouting/pgrouting/issues/1006): No loss of information -**New functions** +**New Functions** * Kruskal family @@ -894,66 +1068,57 @@ on Github. * aStar Family - * pgr_aStar(one to many) - * pgr_aStar(many to one) - * pgr_aStar(many to many) - * pgr_aStarCost(one to one) - * pgr_aStarCost(one to many) - * pgr_aStarCost(many to one) - * pgr_aStarCost(many to many) - * pgr_aStarCostMatrix(one to one) - * pgr_aStarCostMatrix(one to many) - * pgr_aStarCostMatrix(many to one) - * pgr_aStarCostMatrix(many to many) + * pgr_aStar(One to Many) + * pgr_aStar(Many to One) + * pgr_aStar(Many to Many) + * pgr_aStarCost(One to One) + * pgr_aStarCost(One to Many) + * pgr_aStarCost(Many to One) + * pgr_aStarCost(Many to Many) + * pgr_aStarCostMatrix * bdAstar Family - * pgr_bdAstar(one to many) - * pgr_bdAstar(many to one) - * pgr_bdAstar(many to many) - * pgr_bdAstarCost(one to one) - * pgr_bdAstarCost(one to many) - * pgr_bdAstarCost(many to one) - * pgr_bdAstarCost(many to many) - * pgr_bdAstarCostMatrix(one to one) - * pgr_bdAstarCostMatrix(one to many) - * pgr_bdAstarCostMatrix(many to one) - * pgr_bdAstarCostMatrix(many to many) + * pgr_bdAstar(One to Many) + * pgr_bdAstar(Many to One) + * pgr_bdAstar(Many to Many) + * pgr_bdAstarCost(One to One) + * pgr_bdAstarCost(One to Many) + * pgr_bdAstarCost(Many to One) + * pgr_bdAstarCost(Many to Many) + * pgr_bdAstarCostMatrix * bdDijkstra Family - * pgr_bdDijkstra(one to many) - * pgr_bdDijkstra(many to one) - * pgr_bdDijkstra(many to many) - * pgr_bdDijkstraCost(one to one) - * pgr_bdDijkstraCost(one to many) - * pgr_bdDijkstraCost(many to one) - * pgr_bdDijkstraCost(many to many) - * pgr_bdDijkstraCostMatrix(one to one) - * pgr_bdDijkstraCostMatrix(one to many) - * pgr_bdDijkstraCostMatrix(many to one) - * pgr_bdDijkstraCostMatrix(many to many) + * pgr_bdDijkstra(One to Many) + * pgr_bdDijkstra(Many to One) + * pgr_bdDijkstra(Many to Many) + * pgr_bdDijkstraCost(One to One) + * pgr_bdDijkstraCost(One to Many) + * pgr_bdDijkstraCost(Many to One) + * pgr_bdDijkstraCost(Many to Many) + * pgr_bdDijkstraCostMatrix * Flow Family - * pgr_pushRelabel(one to one) - * pgr_pushRelabel(one to many) - * pgr_pushRelabel(many to one) - * pgr_pushRelabel(many to many) - * pgr_edmondsKarp(one to one) - * pgr_edmondsKarp(one to many) - * pgr_edmondsKarp(many to one) - * pgr_edmondsKarp(many to many) - * pgr_boykovKolmogorov (one to one) - * pgr_boykovKolmogorov (one to many) - * pgr_boykovKolmogorov (many to one) - * pgr_boykovKolmogorov (many to many) + * pgr_pushRelabel(One to One) + * pgr_pushRelabel(One to Many) + * pgr_pushRelabel(Many to One) + * pgr_pushRelabel(Many to Many) + * pgr_edmondsKarp(One to One) + * pgr_edmondsKarp(One to Many) + * pgr_edmondsKarp(Many to One) + * pgr_edmondsKarp(Many to Many) + * pgr_boykovKolmogorov (One to One) + * pgr_boykovKolmogorov (One to Many) + * pgr_boykovKolmogorov (Many to One) + * pgr_boykovKolmogorov (Many to Many) * pgr_maxCardinalityMatching * pgr_maxFlow - * pgr_edgeDisjointPaths(one to one) - * pgr_edgeDisjointPaths(one to many) - * pgr_edgeDisjointPaths(many to one) - * pgr_edgeDisjointPaths(many to many) + * pgr_edgeDisjointPaths(One to One) + * pgr_edgeDisjointPaths(One to Many) + * pgr_edgeDisjointPaths(Many to One) + * pgr_edgeDisjointPaths(Many to Many) * Components family @@ -1068,7 +1233,7 @@ on Github. * pgr_floydWarshall * pgr_johnson - * pgr_astar + * pgr_aStar * pgr_bdAstar * pgr_bdDijstra * pgr_alphashape @@ -1151,13 +1316,15 @@ on Github. ### pgRouting 2.5.4 Release Notes -To see the issues closed by this release see the [Git closed milestone for 2.5.4](https://github.com/pgRouting/pgrouting/issues?utf8=%E2%9C%93&q=milestone%3A%22Release%202.5.4%22%20) on Github. +To see the issues closed by this release see the [Git closed milestone for 2.5.4 +](https://github.com/pgRouting/pgrouting/issues?utf8=%E2%9C%93&q=milestone%3A%22Release%202.5.4%22%20) +on Github. * Fixes server crash on several functions. * pgr_floydWarshall * pgr_johnson - * pgr_astar + * pgr_aStar * pgr_bdAstar * pgr_bdDijstra * pgr_alphashape @@ -1238,29 +1405,29 @@ on Github. * Added path_id, cost and agg_cost columns on the result * Parameter names changed - * The many version results are the union of the one to one version + * The many version results are the union of the One to One version **New Signatures** -* pgr_bdAstar(one to one) +* pgr_bdAstar(One to One) -**New Proposed functions** +**New proposed functions.** -* pgr_bdAstar(one to many) -* pgr_bdAstar(many to one) -* pgr_bdAstar(many to many) -* pgr_bdAstarCost(one to one) -* pgr_bdAstarCost(one to many) -* pgr_bdAstarCost(many to one) -* pgr_bdAstarCost(many to many) +* pgr_bdAstar(One to Many) +* pgr_bdAstar(Many to One) +* pgr_bdAstar(Many to Many) +* pgr_bdAstarCost(One to One) +* pgr_bdAstarCost(One to Many) +* pgr_bdAstarCost(Many to One) +* pgr_bdAstarCost(Many to Many) * pgr_bdAstarCostMatrix -* pgr_bdDijkstra(one to many) -* pgr_bdDijkstra(many to one) -* pgr_bdDijkstra(many to many) -* pgr_bdDijkstraCost(one to one) -* pgr_bdDijkstraCost(one to many) -* pgr_bdDijkstraCost(many to one) -* pgr_bdDijkstraCost(many to many) +* pgr_bdDijkstra(One to Many) +* pgr_bdDijkstra(Many to One) +* pgr_bdDijkstra(Many to Many) +* pgr_bdDijkstraCost(One to One) +* pgr_bdDijkstraCost(One to Many) +* pgr_bdDijkstraCost(Many to One) +* pgr_bdDijkstraCost(Many to Many) * pgr_bdDijkstraCostMatrix * pgr_lineGraph * pgr_lineGraphFull @@ -1325,24 +1492,24 @@ To see the issues closed by this release see the [Git closed issues for 2.4.0 ](https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.4.0%22+is%3Aclosed) on Github. -**New Signatures** +**New Functions** * pgr_bdDijkstra -**New Proposed Signatures** +**New proposed signatures:** * pgr_maxFlow -* pgr_astar(one to many) -* pgr_astar(many to one) -* pgr_astar(many to many) -* pgr_astarCost(one to one) -* pgr_astarCost(one to many) -* pgr_astarCost(many to one) -* pgr_astarCost(many to many) -* pgr_astarCostMatrix +* pgr_aStar(One to Many) +* pgr_aStar(Many to One) +* pgr_aStar(Many to Many) +* pgr_aStarCost(One to One) +* pgr_aStarCost(One to Many) +* pgr_aStarCost(Many to One) +* pgr_aStarCost(Many to Many) +* pgr_aStarCostMatrix -**Deprecated signatures** +**Deprecated signatures.** * pgr_bddijkstra - use pgr_bdDijkstra instead @@ -1406,34 +1573,34 @@ on Github. * pgr_eucledianTSP -**New Proposed functions** +**New proposed functions.** * pgr_dijkstraCostMatrix * pgr_withPointsCostMatrix -* pgr_maxFlowPushRelabel(one to one) -* pgr_maxFlowPushRelabel(one to many) -* pgr_maxFlowPushRelabel(many to one) -* pgr_maxFlowPushRelabel(many to many) -* pgr_maxFlowEdmondsKarp(one to one) -* pgr_maxFlowEdmondsKarp(one to many) -* pgr_maxFlowEdmondsKarp(many to one) -* pgr_maxFlowEdmondsKarp(many to many) -* pgr_maxFlowBoykovKolmogorov (one to one) -* pgr_maxFlowBoykovKolmogorov (one to many) -* pgr_maxFlowBoykovKolmogorov (many to one) -* pgr_maxFlowBoykovKolmogorov (many to many) +* pgr_maxFlowPushRelabel(One to One) +* pgr_maxFlowPushRelabel(One to Many) +* pgr_maxFlowPushRelabel(Many to One) +* pgr_maxFlowPushRelabel(Many to Many) +* pgr_maxFlowEdmondsKarp(One to One) +* pgr_maxFlowEdmondsKarp(One to Many) +* pgr_maxFlowEdmondsKarp(Many to One) +* pgr_maxFlowEdmondsKarp(Many to Many) +* pgr_maxFlowBoykovKolmogorov (One to One) +* pgr_maxFlowBoykovKolmogorov (One to Many) +* pgr_maxFlowBoykovKolmogorov (Many to One) +* pgr_maxFlowBoykovKolmogorov (Many to Many) * pgr_maximumCardinalityMatching -* pgr_edgeDisjointPaths(one to one) -* pgr_edgeDisjointPaths(one to many) -* pgr_edgeDisjointPaths(many to one) -* pgr_edgeDisjointPaths(many to many) +* pgr_edgeDisjointPaths(One to One) +* pgr_edgeDisjointPaths(One to Many) +* pgr_edgeDisjointPaths(Many to One) +* pgr_edgeDisjointPaths(Many to Many) * pgr_contractGraph **Deprecated signatures** * pgr_tsp - use pgr_TSP or pgr_eucledianTSP instead -* pgr_astar - use pgr_aStar instead +* pgr_aStar - use pgr_aStar instead **Deprecated Functions** @@ -1517,21 +1684,21 @@ on Github. - pgr_floydWarshall - pgr_Johnson -- pgr_dijkstraCost(one to one) -- pgr_dijkstraCost(one to many) -- pgr_dijkstraCost(many to one) -- pgr_dijkstraCost(many to many) +- pgr_dijkstraCost(One to One) +- pgr_dijkstraCost(One to Many) +- pgr_dijkstraCost(Many to One) +- pgr_dijkstraCost(Many to Many) **Proposed Functionality** -- pgr_withPoints(one to one) -- pgr_withPoints(one to many) -- pgr_withPoints(many to one) -- pgr_withPoints(many to many) -- pgr_withPointsCost(one to one) -- pgr_withPointsCost(one to many) -- pgr_withPointsCost(many to one) -- pgr_withPointsCost(many to many) +- pgr_withPoints(One to One) +- pgr_withPoints(One to Many) +- pgr_withPoints(Many to One) +- pgr_withPoints(Many to Many) +- pgr_withPointsCost(One to One) +- pgr_withPointsCost(One to Many) +- pgr_withPointsCost(Many to One) +- pgr_withPointsCost(Many to Many) - pgr_withPointsDD(single vertex) - pgr_withPointsDD(multiple vertices) - pgr_withPointsKSP @@ -1560,14 +1727,14 @@ on Github. **New Signatures** -- pgr_dijkstra(one to many) -- pgr_dijkstra(many to one) -- pgr_dijkstra(many to many) +- pgr_dijkstra(One to Many) +- pgr_dijkstra(Many to One) +- pgr_dijkstra(Many to Many) - pgr_drivingDistance(multiple vertices) **Refactored** -- pgr_dijkstra(one to one) +- pgr_dijkstra(One to One) - pgr_ksp - pgr_drivingDistance(single vertex) diff --git a/README.md b/README.md index 3b4a0e0b17..29e6f15109 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ The latest documentation: https://docs.pgrouting.org/latest * Postgresql = Supported [version](https://www.postgresql.org/support/versioning/) by PostgreSQL * Not supporting v12 & under * The Boost Graph Library (BGL) >= 1.56 -* CMake >= 3.2 +* CMake >= 3.12 * 7.0 > Sphinx >= 4.0.0 ### User's requirements diff --git a/ci/winnie/build_pgrouting.sh b/ci/winnie/build_pgrouting.sh index 72ca229af9..bf820df0d7 100644 --- a/ci/winnie/build_pgrouting.sh +++ b/ci/winnie/build_pgrouting.sh @@ -20,185 +20,164 @@ # File used in Jenkis setup #------------------------- -JENKINS_DEBUG=1 - -#----------------- -# variables setup -# Variables recived by jenkins setup -#----------------- -#export OS_BUILD= -#export PG_VER= -#export PGHOST= -#export PGPORT= -#export PGROUTING_VER= -#export POSTIGS_VER= -#GCC_TYPE= -#export GIT_COMMIT= +# Setting defaults +if [[ "${OS_BUILD}" == '' ]] ; then + OS_BUILD=64 +fi; +if [[ "${PG_VER}" == '' ]] ; then + PG_VER=14 +fi; + +if [[ "${PGPORT}" == '' ]] ; then + PGPORT=54613 +fi; + +if [[ "${PGROUTING_VER}" == '' ]] ; then + PGROUTING_VER=cvvergara +fi; + +if [[ "${POSTGIS_VER}" == '' ]] ; then + POSTGIS_VER=3.3.2 +fi; + +if [[ "${GCC_TYPE}" == '' ]] ; then + GCC_TYPE=gcc81 +fi; + +if [[ "${BOOST_VER}" == '' ]] ; then + BOOST_VER=1.78.0 +fi; +BOOST_VER_WU=$(echo "${BOOST_VER//./_}") + +echo "DEBUG ${DEBUG}" + +# debugging options +if [[ "$DEBUG" == 'true' ]] +then + JENKINS_DEBUG=1 + VERBOSE=ON + BUILD_TYPE=Debug +else + JENKINS_DEBUG=0 + VERBOSE=OFF + BUILD_TYPE=Release +fi + +TAPTEST=${TAPTEST%%*([[:blank:]])} +TAPTEST=${TAPTEST##*([[:blank:]])} + +echo "GIT_COMMIT ${GIT_COMMIT}" if [ $JENKINS_DEBUG -eq 1 ] then - #--------------- echo echo "***************************" - echo Recived variables + echo Recived variables used in this script echo "**************************" - #--------------- + echo "OS_BUILD ${OS_BUILD}" echo "PG_VER ${PG_VER}" - echo "PGHOST ${PGHOST}" echo "PGPORT ${PGPORT}" echo "PGROUTING_VER ${PGROUTING_VER}" echo "POSTGIS_VER ${POSTGIS_VER}" echo "GCC_TYPE ${GCC_TYPE}" - echo "GIT_COMMIT ${GIT_COMMIT}" + echo "BOOST_VER ${BOOST_VER}" + echo "calculated BOOST_VER_WU ${BOOST_VER_WU}" + echo "TAPTEST ${TAPTEST}" + echo "DEBUG ${DEBUG}" fi -#--------------- -echo -echo "***************************" -echo Deduced variables -echo "***************************" -#--------------- - export PGUSER=postgres export PROJECTS=/projects -export PGPATHEDB=${PROJECTS}/postgresql/rel/pg${PG_VER}w${OS_BUILD}${GCC_TYPE}edb #this is so winnie know's where to copy the dlls for vc++ edb compiled postgresql testing + +#this is so winnie know's where to copy the dlls for vc++ edb compiled postgresql testing +export PGPATHEDB=${PROJECTS}/postgresql/rel/pg${PG_VER}w${OS_BUILD}${GCC_TYPE}edb + export PGPATH=${PROJECTS}/postgresql/rel/pg${PG_VER}w${OS_BUILD}${GCC_TYPE} -export PATHOLD=$PATH -#export PATHOLD="/mingw/bin:/mingw/include:/c/Windows/system32:/c/Windows" export PGWINVER=${PG_VER}w${OS_BUILD}${GCC_TYPE}edb -export PATH="${PATHOLD}:/usr/bin:${PGPATH}/bin:${PGPATH}/lib:${PGPATH}/include" +export BOOSTROOT_PATH="${PROJECTS}/boost/rel-${BOOST_VER_WU}w${OS_BUILD}${GCC_TYPE}" +export PATH="${PATH}:/usr/bin:${PGPATH}/bin:${PGPATH}/lib:${PGPATH}/include" export PATH="${PROJECTS}/rel-libiconv-1.13.1w${OS_BUILD}${GCC_TYPE}/include:${PATH}" +export PATH="${PATH}:${BOOSTROOT_PATH}/lib" +export PATH="${PATH}:/cmake/bin" +export PATH="${PATH}:.:/bin:/include" + if [ $JENKINS_DEBUG -eq 1 ] then + echo "***************************" + echo Paths + echo "***************************" + echo "PGUSER ${PGUSER}" echo "PROJECTS ${PROJECTS}" echo "PGPATHEDB ${PGPATHEDB}" echo "PGPATH ${PGPATH}" - echo "PATHOLD ${PATHOLD}" echo "PGWINVER ${PGWINVER}" echo "PATH ${PATH}" + echo "BOOSTROOT_PATH ${BOOSTROOT_PATH}" fi -BOOST_VER=1.78.0 -BOOST_VER_WU=1_78_0 -BOOST_VER_WUM=1_78 -ZLIB_VER=1.2.13 -echo "${BOOST_VER}" +#--------------- +echo "Cleanup ${PGPATH} & ${PGPATHEDB}" +rm -f ${PGPATH}/lib/libpgrouting* +rm -f ${PGPATH}/share/extension/pgrouting* +rm -f ${PGPATHEDB}/lib/libpgrouting* +rm -f ${PGPATHEDB}/share/extension/pgrouting* if [ $JENKINS_DEBUG -eq 1 ] then - echo "BOOST_VER_WU ${BOOST_VER_WU}" - echo "BOOST_VER_WUM ${BOOST_VER_WUM}" - echo "ZLIB_VER ${ZLIB_VER}" + echo "${PGPATH} & ${PGPATHEDB} pgrouting related files" + ls ${PGPATH}/lib/libpgrouting* 2>/dev/null + ls ${PGPATH}/share/extension/pgrouting* 2>/dev/null + ls ${PGPATHEDB}/lib/libpgrouting* 2>/dev/null + ls ${PGPATHEDB}/share/extension/pgrouting* 2>/dev/null fi -#zlib -ZLIB_PATH="${PROJECTS}/zlib/rel-${ZLIB_VER}w${OS_BUILD}${GCC_TYPE}" -PATH="${PATH}:${ZLIB_PATH}/include:${ZLIB_PATH}/lib:${ZLIB_PATH}/bin" - -#boost -BOOSTROOT_PATH="${PROJECTS}/boost/rel-${BOOST_VER_WU}w${OS_BUILD}${GCC_TYPE}" -PATH="${PATH}:${BOOSTROOT_PATH}/lib" - -#cmake -export PATH="${PATH}:/cmake/bin" -export PATH="${PATH}:.:/bin:/include" - cmake --version -echo "PATH ${PATH}" - cd "${PROJECTS}/pgrouting" || exit 1 +DATABASE="___pgr___test___" +PGR_VERSION=$(grep -Po '(?<=project\(PGROUTING VERSION )[^;]+' "branches/${PGROUTING_VER}/CMakeLists.txt") +if [ $JENKINS_DEBUG -eq 1 ] +then + echo "pgRouting VERSION ${PGR_VERSION}" +fi + rm -rf "build${PGROUTING_VER}w${OS_BUILD}${GCC_TYPE}" mkdir "build${PGROUTING_VER}w${OS_BUILD}${GCC_TYPE}" cd "build${PGROUTING_VER}w${OS_BUILD}${GCC_TYPE}" || exit 1 - -#--------------- -echo -echo "***************************" -echo "Current contents of PGPATH ${PGPATH}" -echo "***************************" -#--------------- -ls ${PGPATH}/lib/libpgrouting* -ls ${PGPATH}/share/extension/pgrouting* - -#--------------- -echo -echo "***************************" -echo "Current contents of PGPATHEDB ${PGPATHEDB}" -echo "***************************" -#--------------- -ls ${PGPATHEDB}/lib/libpgrouting* -ls ${PGPATHEDB}/share/extension/pgrouting* - -rm ${PGPATH}/lib/libpgrouting* -rm ${PGPATH}/share/extension/pgrouting* -rm ${PGPATHEDB}/lib/libpgrouting -rm ${PGPATHEDB}/share/extension/pgrouting* - -#--------------- -echo -echo "***************************" -echo "After removing in PGPATH ${PGPATH}" -echo "***************************" -#--------------- -ls ${PGPATH}/lib/libpgrouting* -ls ${PGPATH}/share/extension/pgrouting* - -#--------------- -echo -echo "***************************" -echo "After removing in PGPATHEDB ${PGPATHEDB}" -echo "***************************" -#--------------- -ls ${PGPATHEDB}/lib/libpgrouting* -ls ${PGPATHEDB}/share/extension/pgrouting* -cmake --version - -cmake -G "MSYS Makefiles" -DCMAKE_VERBOSE_MAKEFILE=ON \ +cmake -G "MSYS Makefiles" -DCMAKE_VERBOSE_MAKEFILE="${VERBOSE}" \ -DBOOST_ROOT:PATH="${BOOSTROOT_PATH}" \ -DBoost_USE_STATIC_LIBS=ON \ - -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_BUILD_TYPE="${BUILD_TYPE}" \ "../branches/${PGROUTING_VER}" #--------------- echo echo "***************************" -echo make -echo "***************************" -#--------------- -make - -#--------------- -echo -echo "***************************" -echo make install +echo Building and installing echo "***************************" #--------------- make install -#--------------- -echo -echo "***************************" -echo "Current contents of PGPATH ${PGPATH}" -echo "***************************" -#--------------- -ls ${PGPATH}/lib/libpgrouting* -ls ${PGPATH}/share/extension/pgrouting* +if [ $JENKINS_DEBUG -eq 1 ] +then + echo "***************************" + echo "Installation on PGPATH ${PGPATH}" + echo "***************************" + ls ${PGPATH}/lib/libpgrouting* + ls ${PGPATH}/share/extension/pgrouting* -#--------------- -echo -echo "***************************" -echo "Current contents of PGPATHEDB ${PGPATHEDB}" -echo Should be empty -echo "***************************" -#--------------- -ls ${PGPATHEDB}/lib/libpgrouting* -ls ${PGPATHEDB}/share/extension/pgrouting* + echo "***************************" + echo "Current contents of PGPATHEDB ${PGPATHEDB}" + echo Should be empty + echo "***************************" + ls ${PGPATHEDB}/lib/libpgrouting* + ls ${PGPATHEDB}/share/extension/pgrouting* +fi #we need uninstall and reinstall copy to VC++ EDB instance if we want to test on standard Windows installed versions @@ -207,36 +186,37 @@ cp -r ${PGPATH}/lib/libpgrouting*.dll ${PGPATHEDB}/lib/ cp -r ${PGPATH}/share/extension/pgrouting*.sql ${PGPATHEDB}/share/extension/ cp -r ${PGPATH}/share/extension/pgrouting.control ${PGPATHEDB}/share/extension/ -#--------------- -echo -echo "***************************" -echo "After copying to PGPATHEDB ${PGPATHEDB}" -echo "***************************" -#--------------- -ls ${PGPATHEDB}/lib/libpgrouting* -ls ${PGPATHEDB}/share/extension/pgrouting* +if [ $JENKINS_DEBUG -eq 1 ] +then + echo + echo "***************************" + echo "Installation on PGPATHEDB ${PGPATHEDB}" + echo "***************************" + ls ${PGPATHEDB}/lib/libpgrouting* + ls ${PGPATHEDB}/share/extension/pgrouting* +fi cd "${PROJECTS}/pgrouting/branches/${PGROUTING_VER}" || exit 1 -#perl tools/test-runner.pl -pgver ${PG_VER} -pgport "${PGPORT}" -clean -#perl tools/testers/doc_queries_generator.pl -pgver ${PG_VER} -pgisver "${POSTGIS_VER}" -pgport "${PGPORT}" -alg common -clean -v -#perl tools/testers/doc_queries_generator.pl -pgver ${PG_VER} -pgisver "${POSTGIS_VER}" -pgport "${PGPORT}" -alg dijkstra -clean -v -#perl tools/testers/doc_queries_generator.pl -pgver ${PG_VER} -pgisver "${POSTGIS_VER}" -pgport "${PGPORT}" -alg contraction - -#perl tools/testers/doc_queries_generator.pl -pgver ${PG_VER} -pgisver "${POSTGIS_VER}" -pgport "${PGPORT}" +echo "***************************" +# Testing +echo "***************************" -if [ "${OS_BUILD}" -eq 32 ] +if [ -n "${TAPTEST}" ] then - perl tools/testers/doc_queries_generator.pl -pgver "${PG_VER}" -pgisver "${POSTGIS_VER}" -pgport "${PGPORT}" + psql -c "CREATE DATABASE ${DATABASE}" + bash tools/testers/setup_db.sh "${PGPORT}" "${DATABASE}" "${PGUSER}" "${PGR_VERSION}" + pg_prove -v --normalize --directives --recurse -p "${PGPORT}" -d "${DATABASE}" "${TAPTEST}" + psql -c "DROP DATABASE ${DATABASE}" -else +fi - psql -c "CREATE DATABASE ___pgr___test___" - tools/testers/pg_prove_tests.sh "${PGUSER}" "${PGPORT}" - psql -c "DROP DATABASE ___pgr___test___" -fi +psql -c "CREATE DATABASE ${DATABASE}" +tools/testers/pg_prove_tests.sh "${PGUSER}" "${PGPORT}" +psql -c "DROP DATABASE ${DATABASE}" + cd "${PROJECTS}/pgrouting/build${PGROUTING_VER}w${OS_BUILD}${GCC_TYPE}/lib" || exit 1 strip ./*.dll diff --git a/configuration.conf b/configuration.conf index 1f63c98998..f75b968ac8 100644 --- a/configuration.conf +++ b/configuration.conf @@ -14,6 +14,7 @@ common | Y | Y | N # Has the command needed to link with prostgresl #---------------------- dijkstra | Y | Y | Y +legacy | Y | N | N allpairs | Y | Y | Y astar | Y | Y | Y driving_distance | Y | Y | Y @@ -26,7 +27,7 @@ trsp | Y | Y | Y max_flow | Y | Y | Y contraction | Y | Y | Y pickDeliver | Y | Y | Y -vrp_basic | N | Y | Y +vrp_basic | N | Y | N withPoints | Y | Y | Y lineGraph | Y | Y | Y components | Y | Y | Y @@ -37,9 +38,9 @@ chinese | Y | Y | Y spanningTree | Y | Y | Y mincut | Y | Y | Y version | Y | Y | Y -topologicalSort | Y | Y | Y +topologicalSort | Y | Y | N transitiveClosure | Y | Y | Y -breadthFirstSearch | Y | Y | Y +breadthFirstSearch | Y | Y | N traversal | Y | Y | Y coloring | Y | Y | Y planar | Y | Y | Y @@ -47,6 +48,8 @@ dominator | Y | Y | Y ordering | Y | Y | Y circuits | Y | Y | Y metrics | Y | Y | Y +categories | N | N | Y + #---------------------- # SQL only directories #---------------------- diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index d32b651da9..9608406041 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -215,7 +215,9 @@ message(STATUS "PGR_DOCUMENTATION_BUILD_DIR = ${PGR_DOCUMENTATION_BUILD_DIR}") #--------------------------------------------- foreach (subdir ${PROJECT_DOC_DIRECTORIES} "src") add_subdirectory("${subdir}") - add_subdirectory("../docqueries/${subdir}" "build/doc/${subdir}") + if (EXISTS "../docqueries/${subdir}") + add_subdirectory("../docqueries/${subdir}" "build/doc/${subdir}") + endif() endforeach() add_subdirectory("images") @@ -262,7 +264,7 @@ if (LOCALE) "${PGR_DOCUMENTATION_SOURCE_DIR}" "${CMAKE_SOURCE_DIR}/locale/pot" - COMMAND sphinx-intl update -d ${CMAKE_SOURCE_DIR}/locale -l en > locale_changes.txt + COMMAND sphinx-intl update -p ${CMAKE_SOURCE_DIR}/locale/pot -d ${CMAKE_SOURCE_DIR}/locale -l en > locale_changes.txt #COMMAND sphinx-intl update -p ${CMAKE_SOURCE_DIR}/locale/pot -d ${CMAKE_SOURCE_DIR}/locale --language=${SPHINXINTL_LANGUAGE} #COMMAND sphinx-intl update-txconfig-resources --locale-dir ${CMAKE_SOURCE_DIR}/locale --pot-dir ${CMAKE_SOURCE_DIR}/locale/pot --transifex-project-name pgrouting @@ -293,6 +295,8 @@ foreach (target ${PROJECT_DOC_TARGETS}) #-q # Enable for quiet mode #-Q # Enable for even more quiet mode -v # increase verbosity + -n # warn about all missing references + --color -W --keep-going -j auto diff --git a/doc/_static/page_history.js b/doc/_static/page_history.js index c29bbf5d25..052b17ff41 100644 --- a/doc/_static/page_history.js +++ b/doc/_static/page_history.js @@ -1,10 +1,11 @@ -function createInfo(file, newat, altnames = '') { +function createInfo(file, newat, altnames = '', removedat = '') { this.file = file; this.newat = newat; this.altnames = altnames; + this.removedat = removedat; } -var versionsArr = ['3.7', '3.6', '3.5', '3.4', '3.3', '3.2', '3.1', '3.0']; +const versionsArr = ['3.8','3.7', '3.6', '3.5', '3.4', '3.3', '3.2', '3.1', '3.0']; var unsuportedArr = ['2.6', '2.5', '2.4', '2.3', '2.2', '2.1', '2.0']; var titles = [ {k: 'en', v: ['Supported versions', 'Unsupported versions']}, @@ -14,11 +15,13 @@ var titles = [ var newpages = [ + {v: '3.8', pages: ['pgr_contractionDeadEnd', 'pgr_contractionLinear']}, + {v: '3.7', pages: ['metrics-family', 'pgr_betweennessCentrality']}, {v: '3.4', pages: ['TRSP-family', 'pgr_withPointsVia', 'pgr_trsp_withPoints', 'pgr_trspVia_withPoints', 'pgr_trspVia', 'pgr_hawickCircuits', 'pgr_findCloseEdges', 'pgr_cuthillMckeeOrdering', 'ordering-family', - 'migration']}, + 'migration', 'pgr_degree']}, {v: '3.3', pages: ['withPoints-category', 'via-category', 'reference', 'pgr_edgeColoring', 'DFS-category', 'BFS-category']}, @@ -46,276 +49,219 @@ var newpages = [ var filesArr = [ + new createInfo('spanningTree-category', '3.0', [ + { v: '3.7', n: 'spanningTree-family'}, + ]), + + /* Documentation from version 2.3 */ new createInfo('TSP-family', '2.3', [ - { v: '2.3', n: 'tsp', d: 'tsp'}, + { v: '2.3', n: 'src/tsp/doc/tsp', d: 'tsp'}, ]), + new createInfo('pgr_withPointsCostMatrix', '2.3', [ - { v: '2.3', n: 'pgr_withPointsCostMatrix', d: 'costMatrix'}, + { v: '2.3', n: 'src/costMatrix/doc/pgr_withPointsCostMatrix'}, ]), + new createInfo('pgr_maxCardinalityMatch', '2.3', [ - { v: '2.3', n: 'pgr_maximumCardinalityMatching', d: 'max_flow'}, - { v: '2.4', n: 'pgr_maximumCardinalityMatching', d: ''}, + { v: '2.3', n: 'src/max_flow/doc/pgr_maximumCardinalityMatching'}, + { v: '2.4', n: 'pgr_maximumCardinalityMatching'}, ]), new createInfo('pgr_pushRelabel', '2.3', [ - { v: '2.3', n: 'pgr_maxFlowPushRelabel', d: 'max_flow'}, - { v: '2.4', n: 'pgr_maxFlowPushRelabel', d: ''}, + { v: '2.3', n: 'src/max_flow/doc/pgr_maxFlowPushRelabel'}, + { v: '2.4', n: 'pgr_maxFlowPushRelabel'}, ]), new createInfo('pgr_edmondsKarp', '2.3', [ - { v: '2.3', n: 'pgr_maxFlowEdmondsKarp', d: 'max_flow'}, - { v: '2.4', n: 'pgr_maxFlowEdmondsKarp', d: ''}, + { v: '2.3', n: 'src/max_flow/doc/pgr_maxFlowEdmondsKarp'}, + { v: '2.4', n: 'pgr_maxFlowEdmondsKarp'}, ]), new createInfo('pgr_boykovKolmogorov', '2.3', [ - { v: '2.3', n: 'pgr_maxFlowBoykovKolmogorov', d: 'max_flow'}, - { v: '2.4', n: 'pgr_maxFlowBoykovKolmogorov', d: ''}, + { v: '2.3', n: 'src/max_flow/doc/pgr_maxFlowBoykovKolmogorov'}, + { v: '2.4', n: 'pgr_maxFlowBoykovKolmogorov'}, ]), new createInfo('pgr_TSPeuclidean', '2.3', [ - { v: '2.3', n: 'pgr_eucledianTSP', d: 'tsp'}, - { v: '2.4', n: 'pgr_eucledianTSP', d: ''}, - { v: '2.5', n: 'pgr_eucledianTSP', d: ''}, - { v: '2.6', n: 'pgr_eucledianTSP', d: ''}, + { v: '2.3', n: 'src/tsp/doc/pgr_eucledianTSP'}, + { v: '2.6', n: 'pgr_eucledianTSP'}, ]), new createInfo('pgr_edgeDisjointPaths', '2.3', [ - { v: '2.3', n: 'pgr_edgeDisjointPaths', d: 'max_flow'}, + { v: '2.3', n: 'src/max_flow/doc/pgr_edgeDisjointPaths'}, ]), new createInfo('pgr_dijkstraCostMatrix', '2.3', [ - { v: '2.3', n: 'pgr_dijkstraCostMatrix', d: 'costMatrix'}, + { v: '2.3', n: 'src/costMatrix/doc/pgr_dijkstraCostMatrix'}, ]), new createInfo('pgr_contraction', '2.3', [ - { v: '2.3', n: 'pgr_contractGraph', d: 'contraction'}, - { v: '2.4', n: 'pgr_contractGraph', d: ''}, - { v: '2.5', n: 'pgr_contractGraph', d: ''}, - { v: '2.6', n: 'pgr_contractGraph', d: ''}, + { v: '2.3', n: 'src/contraction/doc/pgr_contractGraph'}, + { v: '2.6', n: 'pgr_contractGraph'}, ]), new createInfo('flow-family', '2.3', [ - { v: '2.3', n: 'maxFlow', d: 'max_flow'}, + { v: '2.3', n: 'src/max_flow/doc/maxFlow'}, ]), + + /* Documentation from version 2.2 */ new createInfo('withPoints-family', '2.2', [ - { v: '2.2', n: 'withPoints', d: 'withPoints'}, - { v: '2.3', n: 'withPoints', d: 'withPoints'}, + { v: '2.3', n: 'src/withPoints/doc/withPoints'}, ]), new createInfo('withPoints-family', '2.2', [ - { v: '2.2', n: 'withPoints', d: 'withPoints'}, - { v: '2.3', n: 'withPoints', d: 'withPoints'}, + { v: '2.3', n: 'src/withPoints/doc/withPoints'}, ]), new createInfo('experimental', '2.2', [ - { v: '2.2', n: 'src/proposed', d: ''}, - { v: '2.3', n: 'src/proposed', d: ''}, - { v: '2.4', n: 'proposed', d: ''}, - { v: '2.5', n: 'proposed', d: ''}, - { v: '2.6', n: 'proposed', d: ''}, + { v: '2.2', n: 'src/proposed'}, + { v: '2.3', n: 'src/proposed'}, + { v: '2.4', n: 'proposed'}, + { v: '2.5', n: 'proposed'}, + { v: '2.6', n: 'proposed'}, ]), new createInfo('proposed', '2.2', [ - { v: '2.2', n: 'src/proposed', d: ''}, - { v: '2.3', n: 'src/proposed', d: ''}, + { v: '2.2', n: 'src/proposed'}, + { v: '2.3', n: 'src/proposed'}, ]), new createInfo('pgr_withPointsKSP', '2.2', [ - { v: '2.2', n: 'pgr_withPointsKSP', d: 'withPoints'}, - { v: '2.3', n: 'pgr_withPointsKSP', d: 'withPoints'}, + { v: '2.3', n: 'src/withPoints/doc/pgr_withPointsKSP'}, ]), new createInfo('pgr_withPoints', '2.2', [ - { v: '2.2', n: 'pgr_withPoints', d: 'withPoints'}, - { v: '2.3', n: 'pgr_withPoints', d: 'withPoints'}, + { v: '2.3', n: 'src/withPoints/doc/pgr_withPoints'}, ]), new createInfo('pgr_withPointsDD', '2.2', [ - { v: '2.2', n: 'pgr_withPointsDD', d: 'withPoints'}, - { v: '2.3', n: 'pgr_withPointsDD', d: 'withPoints'}, + { v: '2.3', n: 'src/withPoints/doc/pgr_withPointsDD'}, ]), new createInfo('pgr_withPointsCost', '2.2', [ - { v: '2.2', n: 'pgr_withPointsCost', d: 'withPoints'}, - { v: '2.3', n: 'pgr_withPointsCost', d: 'withPoints'}, + { v: '2.3', n: 'src/withPoints/doc/pgr_withPointsCost'}, ]), new createInfo('pgr_withPointsCost', '2.2', [ - { v: '2.2', n: 'pgr_withPointsCost', d: 'withPoints'}, - { v: '2.3', n: 'pgr_withPointsCost', d: 'withPoints'}, + { v: '2.3', n: 'src/withPoints/doc/pgr_withPointsCost'}, ]), new createInfo('pgr_dijkstraVia', '2.2', [ - { v: '2.2', n: 'pgr_dijkstraVia', d: 'dijkstra'}, - { v: '2.3', n: 'pgr_dijkstraVia', d: 'dijkstra'}, + { v: '2.3', n: 'src/dijkstra/doc/pgr_dijkstraVia'}, ]), new createInfo('pgr_dijkstraCost', '2.2', [ - { v: '2.2', n: 'pgr_dijkstraCost', d: 'dijkstra'}, - { v: '2.3', n: 'pgr_dijkstraCost', d: 'dijkstra'}, + { v: '2.3', n: 'src/dijkstra/doc/pgr_dijkstraCost'}, ]), new createInfo('dijkstra-family', '2.2', [ - { v: '2.2', n: 'dijkstra', d: 'dijkstra'}, - { v: '2.3', n: 'dijkstra', d: 'dijkstra'}, + { v: '2.3', n: 'src/dijkstra/doc/dijkstra'}, ]), new createInfo('contraction-family', '2.2', [ - { v: '2.2', n: 'contraction', d: 'contraction'}, - { v: '2.3', n: 'contraction', d: 'contraction'}, + { v: '2.3', n: 'src/contraction/doc/contraction'}, ]), new createInfo('allpairs-family', '2.2', [ - { v: '2.2', n: 'allpairs', d: 'allpairs'}, - { v: '2.3', n: 'allpairs', d: 'allpairs'}, + { v: '2.3', n: 'src/allpairs/doc/allpairs'}, ]), + + /* Documentation from version 2.1 */ new createInfo('pgr_pickDeliverEuclidean', '2.1', [ - { v: '2.1', n: 'index', d: 'vrppdtw'}, - { v: '2.2', n: 'index', d: 'vrppdtw'}, - { v: '2.3', n: 'pgr_gsoc_vrppdtw', d: 'vrppdtw'}, - { v: '2.4', n: 'pgr_gsoc_vrppdtw', d: ''}, - { v: '2.5', n: 'pgr_gsoc_vrppdtw', d: ''}, - { v: '2.6', n: 'pgr_gsoc_vrppdtw', d: ''}, + { v: '2.2', n: 'src/vrppdtw/doc/index'}, + { v: '2.3', n: 'src/vrppdtw/doc/pgr_gsoc_vrppdtw'}, + { v: '2.6', n: 'pgr_gsoc_vrppdtw'}, ]), new createInfo('pgr_vrpOneDepot', '2.1', [ - { v: '2.1', n: 'index', d: 'vrp_basic'}, - { v: '2.2', n: 'pgr_vrpOneDepot', d: 'vrp_basic'}, - { v: '2.3', n: 'pgr_vrpOneDepot', d: 'vrp_basic'}, + { v: '2.1', n: 'src/vrp_basic/doc/index'}, + { v: '2.3', n: 'src/vrp_basic/doc/pgr_vrpOneDepot'}, ]), + + /* Documentation from version 2.0 */ new createInfo('pgr_version', '2.0', [ - { v: '2.0', n: 'utilities/version', d: 'common'}, - { v: '2.1', n: 'utilities/version', d: 'common'}, - { v: '2.2', n: 'pgr_version', d: 'common'}, - { v: '2.3', n: 'pgr_version', d: 'common'}, + { v: '2.1', n: 'src/common/doc/utilities/version'}, + { v: '2.3', n: 'src/common/doc/pgr_version'}, ]), new createInfo('routingFunctions', '2.0', [ - { v: '2.0', n: 'src/index', d: ''}, - { v: '2.1', n: 'src/index', d: ''}, - { v: '2.2', n: 'src/routingFunctions', d: ''}, - { v: '2.3', n: 'src/routingFunctions', d: ''}, + { v: '2.1', n: 'src/index'}, + { v: '2.3', n: 'src/routingFunctions'}, ]), new createInfo('index', '2.0', [ - { v: '2.0', n: 'index', d: ''}, - { v: '2.1', n: 'index', d: ''}, - { v: '2.2', n: 'index', d: ''}, - { v: '2.3', n: 'index', d: ''}, + { v: '2.3', n: 'doc/index'}, ]), new createInfo('pgr_TSP', '2.0', [ - { v: '2.0', n: 'index', d: 'tsp'}, - { v: '2.1', n: 'index', d: 'tsp'}, - { v: '2.2', n: 'pgr_tsp', d: 'tsp'}, - { v: '2.3', n: 'pgr_tsp', d: 'tsp'}, + { v: '2.1', n: 'src/tsp/doc/index'}, + { v: '2.3', n: 'src/tsp/doc/pgr_tsp'}, ]), new createInfo('pgr_trsp', '2.0', [ - { v: '2.0', n: 'index', d: 'trsp'}, - { v: '2.1', n: 'index', d: 'trsp'}, - { v: '2.2', n: 'pgr_trsp', d: 'trsp'}, - { v: '2.3', n: 'pgr_trsp', d: 'trsp'} + { v: '2.1', n: 'src/trsp/doc/index'}, + { v: '2.3', n: 'src/trsp/doc/pgr_trsp'} ]), new createInfo('pgr_KSP', '2.0', [ - { v: '2.0', n: 'index', d: 'ksp'}, - { v: '2.1', n: 'index', d: 'ksp'}, - { v: '2.2', n: 'pgr_ksp', d: 'ksp'}, - { v: '2.3', n: 'pgr_ksp', d: 'ksp'}, + { v: '2.0', n: 'src/ksp/doc/index'}, + { v: '2.1', n: 'src/ksp/doc/ksp_v3'}, + { v: '2.3', n: 'src/ksp/doc/pgr_ksp'}, ]), new createInfo('pgr_dijkstra', '2.0', [ - { v: '2.0', n: 'index', d: 'dijkstra'}, - { v: '2.1', n: 'index', d: 'dijkstra'}, - { v: '2.2', n: 'pgr_dijkstra', d: 'dijkstra'}, - { v: '2.3', n: 'pgr_dijkstra', d: 'dijkstra'} + { v: '2.0', n: 'src/dijkstra/doc/index'}, + { v: '2.1', n: 'src/dijkstra/doc/dijkstra_v3'}, + { v: '2.3', n: 'src/dijkstra/doc/pgr_dijkstra'} ]), new createInfo('pgr_bdDijkstra', '2.0', [ - { v: '2.0', n: 'index', d: 'bd_dijkstra'}, - { v: '2.1', n: 'index', d: 'bd_dijkstra'}, - { v: '2.2', n: 'pgr_bdDijkstra', d: 'bd_dijkstra'}, - { v: '2.3', n: 'pgr_bdDijkstra', d: 'bd_dijkstra'} + { v: '2.1', n: 'src/bd_dijkstra/doc/index'}, + { v: '2.3', n: 'src/bd_dijkstra/doc/pgr_bdDijkstra'} ]), new createInfo('pgr_bdAstar', '2.0', [ - { v: '2.0', n: 'index', d: 'bd_astar'}, - { v: '2.1', n: 'index', d: 'bd_astar'}, - { v: '2.2', n: 'pgr_bdAstar', d: 'bd_astar'}, - { v: '2.3', n: 'pgr_bdAstar', d: 'bd_astar'} + { v: '2.1', n: 'src/bd_astar/doc/index'}, + { v: '2.3', n: 'src/bd_astar/doc/pgr_bdAstar'} ]), new createInfo('pgr_aStar', '2.0', [ - { v: '2.0', n: 'index', d: 'astar'}, - { v: '2.1', n: 'index', d: 'astar'}, - { v: '2.2', n: 'pgr_astar', d: 'astar'}, - { v: '2.3', n: 'pgr_astar', d: 'astar'}, + { v: '2.1', n: 'src/astar/doc/index'}, + { v: '2.3', n: 'src/astar/doc/pgr_astar'}, ]), new createInfo('pgr_floydWarshall', '2.0', [ - { v: '2.0', n: 'index', d: 'apsp_warshall'}, - { v: '2.1', n: 'index', d: 'apsp_warshall'}, - { v: '2.2', n: 'pgr_floydWarshall', d: 'allpairs'}, - { v: '2.3', n: 'pgr_floydWarshall', d: 'allpairs'} + { v: '2.1', n: 'src/apsp_warshall/doc/index'}, + { v: '2.3', n: 'src/allpairs/doc/pgr_floydWarshall'} ]), new createInfo('pgr_johnson', '2.0', [ - { v: '2.0', n: 'index', d: 'apsp_johnson'}, - { v: '2.1', n: 'index', d: 'apsp_johnson'}, - { v: '2.2', n: 'pgr_johnson', d: 'allpairs'}, - { v: '2.3', n: 'pgr_johnson', d: 'allpairs'} + { v: '2.1', n: 'src/apsp_johnson/doc/index'}, + { v: '2.3', n: 'src/allpairs/doc/pgr_johnson'} ]), new createInfo('pgr_nodeNetwork', '2.0', [ - { v: '2.0', n: 'functions/node_network', d: 'common'}, - { v: '2.1', n: 'functions/node_network', d: 'common'}, - { v: '2.2', n: 'pgr_nodeNetwork', d: 'topology'}, - { v: '2.3', n: 'pgr_nodeNetwork', d: 'topology'}, + { v: '2.1', n: 'src/common/doc/functions/node_network'}, + { v: '2.3', n: 'src/topology/doc/pgr_nodeNetwork'}, ]), new createInfo('topology-functions', '2.0', [ - { v: '2.0', n: 'functions/index', d: 'common'}, - { v: '2.1', n: 'functions/index', d: 'common'}, - { v: '2.2', n: 'topology', d: 'topology'}, - { v: '2.3', n: 'topology', d: 'topology'}, + { v: '2.1', n: 'src/common/doc/functions/index'}, + { v: '2.3', n: 'src/topology/doc/topology'}, ]), new createInfo('pgr_createVerticesTable', '2.0', [ - { v: '2.0', n: 'functions/create_vert_table', d: 'common'}, - { v: '2.1', n: 'functions/create_vert_table', d: 'common'}, - { v: '2.2', n: 'pgr_createVerticesTable', d: 'topology'}, - { v: '2.3', n: 'pgr_createVerticesTable', d: 'topology'}, + { v: '2.1', n: 'src/common/doc/functions/create_vert_table'}, + { v: '2.3', n: 'src/topology/doc/pgr_createVerticesTable'}, ]), new createInfo('pgr_createTopology', '2.0', [ - { v: '2.0', n: 'functions/create_topology', d: 'common'}, - { v: '2.1', n: 'functions/create_topology', d: 'common'}, - { v: '2.2', n: 'pgr_createTopology', d: 'topology'}, - { v: '2.3', n: 'pgr_createTopology', d: 'topology'}, + { v: '2.1', n: 'src/common/doc/functions/create_topology'}, + { v: '2.3', n: 'src/topology/doc/pgr_createTopology'}, ]), new createInfo('pgr_analyzeOneWay', '2.0', [ - { v: '2.0', n: 'functions/analyze_oneway', d: 'common'}, - { v: '2.1', n: 'functions/analyze_oneway', d: 'common'}, - { v: '2.2', n: 'pgr_analyzeOneWay', d: 'topology'}, - { v: '2.3', n: 'pgr_analyzeOneWay', d: 'topology'}, + { v: '2.1', n: 'src/common/doc/functions/analyze_oneway'}, + { v: '2.3', n: 'src/topology/doc/pgr_analyzeOneWay'}, ]), new createInfo('pgr_analyzeGraph', '2.0', [ - { v: '2.0', n: 'functions/analyze_graph', d: 'common'}, - { v: '2.1', n: 'functions/analyze_graph', d: 'common'}, - { v: '2.2', n: 'pgr_analyzeGraph', d: 'topology'}, - { v: '2.3', n: 'pgr_analyzeGraph', d: 'topology'}, + { v: '2.1', n: 'src/common/doc/functions/analyze_graph'}, + { v: '2.3', n: 'src/topology/doc/pgr_analyzeGraph'}, ]), new createInfo('pgRouting-concepts', '2.0', [ - { v: '2.0', n: 'doc/src/tutorial/tutorial', d: ''}, - { v: '2.1', n: 'doc/src/tutorial/tutorial', d: ''}, - { v: '2.2', n: 'doc/src/tutorial/tutorial', d: ''}, - { v: '2.3', n: 'doc/src/tutorial/tutorial', d: ''}, + { v: '2.3', n: 'doc/src/tutorial/tutorial'}, ]), new createInfo('support', '2.0', [ - { v: '2.0', n: 'doc/src/introduction/support', d: ''}, - { v: '2.1', n: 'doc/src/introduction/support', d: ''}, - { v: '2.2', n: 'doc/src/introduction/support', d: ''}, - { v: '2.3', n: 'doc/src/introduction/support', d: ''}, + { v: '2.3', n: 'doc/src/introduction/support'}, ]), new createInfo('pgRouting-introduction', '2.0', [ - { v: '2.0', n: 'doc/src/introduction/introduction', d: ''}, - { v: '2.1', n: 'doc/src/introduction/introduction', d: ''}, - { v: '2.2', n: 'doc/src/introduction/introduction', d: ''}, - { v: '2.3', n: 'doc/src/introduction/introduction', d: ''}, + { v: '2.3', n: 'doc/src/introduction/introduction'}, ]), new createInfo('pgRouting-installation', '2.0', [ - { v: '2.0', n: 'doc/src/installation/index', d: ''}, - { v: '2.1', n: 'doc/src/installation/index', d: ''}, - { v: '2.2', n: 'doc/src/installation/installation', d: ''}, - { v: '2.3', n: 'doc/src/installation/installation', d: ''}, + { v: '2.1', n: 'doc/src/installation/index'}, + { v: '2.3', n: 'doc/src/installation/installation'}, ]), new createInfo('sampledata', '2.0', [ - { v: '2.0', n: 'doc/src/developer/sampledata', d: ''}, - { v: '2.1', n: 'doc/src/developer/sampledata', d: ''}, - { v: '2.2', n: 'doc/src/developer/sampledata', d: ''}, - { v: '2.3', n: 'doc/src/developer/sampledata', d: ''}, + { v: '2.3', n: 'doc/src/developer/sampledata'}, ]), new createInfo('release_notes', '2.0', [ - { v: '2.0', n: 'doc/src/changelog/index', d: ''}, - { v: '2.1', n: 'doc/src/changelog/index', d: ''}, - { v: '2.2', n: 'doc/src/changelog/index', d: ''}, - { v: '2.3', n: 'doc/src/changelog/release_notes', d: ''}, + { v: '2.2', n: 'doc/src/changelog/index'}, + { v: '2.3', n: 'doc/src/changelog/release_notes'}, + ]), + new createInfo('drivingDistance-category', '2.0', [ + { v: '2.1', n: 'src/driving_distance/doc/index'}, + { v: '2.3', n: 'src/driving_distance/doc/drivingDistance'}, ]), new createInfo('pgr_drivingDistance', '2.0', [ - { v: '2.0', n: 'dd_driving_distance', d: 'driving_distance'}, - { v: '2.1', n: 'dd_driving_distance_v3', d: 'driving_distance'}, - { v: '2.2', n: 'pgr_drivingDistance', d: 'driving_distance'}, - { v: '2.3', n: 'pgr_drivingDistance', d: 'driving_distance'} + { v: '2.0', n: 'src/driving_distance/doc/dd_driving_distance'}, + { v: '2.1', n: 'src/driving_distance/doc/dd_driving_distance_v3'}, + { v: '2.3', n: 'src/driving_distance/doc/pgr_drivingDistance'} ]), new createInfo('pgr_alphaShape', '2.0', [ - { v: '2.0', n: 'dd_alphashape', d: 'driving_distance'}, - { v: '2.1', n: 'dd_alphashape', d: 'driving_distance'}, - { v: '2.2', n: 'pgr_alphaShape', d: 'alpha_shape'}, - { v: '2.3', n: 'pgr_alphaShape', d: 'alpha_shape'} + { v: '2.1', n: 'src/driving_distance/doc/dd_alphashape'}, + { v: '2.3', n: 'src/alpha_shape/doc/pgr_alphaShape'} ]), ]; @@ -326,11 +272,19 @@ function get_titles(data, k) { } return ''; } -function get_vdata(data, v) { + +function get_vdata(data, v, file, lang) { + let info = ''; + let link = ''; for (var i = 0; i < data.length; i++) { - if (data[i].v == v) { return data[i]; } + if (v <= data[i].v) { info = data[i]; break; } } - return ''; + if (info === '') { + link = `${lang}/${file}.html">${v}`; + } else { + link = `${lang}/${info.n}.html">${v}`; + } + return link; } function get(name) { @@ -362,12 +316,13 @@ function get_history(name, lang) { validlang = lang; if (versionsArr[i] < data.newat) break; + if (data.removedat != '' && versionsArr[i] > data.newat) break; /* for zh-Hans non translated versions use english */ - validlang = (lang == 'zh-Hans' && versionsArr[i] == '3.7')? lang : 'en'; + validlang = (lang == 'zh-Hans' && versionsArr[i] >= '3.7')? 'zh_Hans' : 'en'; - var link = home + versionsArr[i] + '/'; - link += validlang + '/' + data.file + '.html">' + versionsArr[i] + ''; + let link = `${home}${versionsArr[i]}/` + link += get_vdata(data.altnames, versionsArr[i], data.file, validlang); if (versionsArr[i] == latest) result += '(' + link + ') '; else result += link + ' '; } @@ -385,29 +340,7 @@ function get_history(name, lang) { if (data.newat > unsuportedArr[i]) break; var link = home + unsuportedArr[i] + '/'; - switch(unsuportedArr[i]) { - case '2.4': - var info = get_vdata(data.altnames, unsuportedArr[i]); - if (info === '') { - link += validlang + '/' + data.file + '.html">' + unsuportedArr[i] + ''; - } else { - link += validlang + '/' + info.n + '.html">' + unsuportedArr[i] + ''; - } - break; - case '2.3': - case '2.2': - case '2.1': - case '2.0': - var info = get_vdata(data.altnames, unsuportedArr[i]); - if (info.d == '') { - link += validlang + '/' + info.n + '.html">' + unsuportedArr[i] + ''; - } else { - link += validlang + '/src/' + info.d + '/doc/' + info.n + '.html">' + unsuportedArr[i] + ''; - } - break; - default: - link += validlang + '/' + data.file + '.html">' + unsuportedArr[i] + ''; - } + link += get_vdata(data.altnames, unsuportedArr[i], data.file, validlang); result += link + ' '; } } diff --git a/doc/allpairs/allpairs-family.rst b/doc/allpairs/allpairs-family.rst index f467feac2f..d963b68ae8 100644 --- a/doc/allpairs/allpairs-family.rst +++ b/doc/allpairs/allpairs-family.rst @@ -7,21 +7,22 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: All Pairs Family +| All Pairs - Family of Functions =============================================================================== The following functions work on all vertices pair combinations -.. index from here +.. official-start * :doc:`pgr_floydWarshall` - Floyd-Warshall's algorithm. * :doc:`pgr_johnson` - Johnson's algorithm -.. index to here +.. official-end .. toctree:: :hidden: diff --git a/doc/allpairs/pgr_floydWarshall.rst b/doc/allpairs/pgr_floydWarshall.rst index d0e5b687fa..c9709d91c2 100644 --- a/doc/allpairs/pgr_floydWarshall.rst +++ b/doc/allpairs/pgr_floydWarshall.rst @@ -7,8 +7,11 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: All Pairs Family ; pgr_floydWarshall + single: floydWarshall +| ``pgr_floydWarshall`` =============================================================================== @@ -16,11 +19,6 @@ ``pgr_floydWarshall`` - Returns the sum of the costs of the shortest path for each pair of nodes in the graph using Floyd-Warshall algorithm. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/floyd_warshall_shortest.html - - Boost Graph Inside - .. rubric:: Availability * Version 2.2.0 @@ -30,7 +28,7 @@ each pair of nodes in the graph using Floyd-Warshall algorithm. * Version 2.0.0 - * **Official** function + * New official function. Description ------------------------------------------------------------------------------- @@ -44,6 +42,8 @@ We use Boost's implementation which runs in :math:`\Theta(V^3)` time, :start-after: characteristics_start :end-before: characteristics_end +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- @@ -99,9 +99,9 @@ See Also ------------------------------------------------------------------------------- * :doc:`pgr_johnson` +* :doc:`sampledata` * Boost `floyd-Warshall `_ -* Queries uses the :doc:`sampledata` network. .. rubric:: Indices and tables diff --git a/doc/allpairs/pgr_johnson.rst b/doc/allpairs/pgr_johnson.rst index 69102e68fb..d489b26a50 100644 --- a/doc/allpairs/pgr_johnson.rst +++ b/doc/allpairs/pgr_johnson.rst @@ -7,8 +7,11 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: All Pairs Family ; pgr_johnson + single: johnson +| ``pgr_johnson`` =============================================================================== @@ -16,11 +19,6 @@ ``pgr_johnson`` - Returns the sum of the costs of the shortest path for each pair of nodes in the graph using Floyd-Warshall algorithm. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/johnson_all_pairs_shortest.html - - Boost Graph Inside - .. rubric:: Availability * Version 2.2.0 @@ -30,7 +28,7 @@ pair of nodes in the graph using Floyd-Warshall algorithm. * Version 2.0.0 - * **Official** function + * New official function. Description ------------------------------------------------------------------------------- @@ -43,6 +41,8 @@ It usees the Boost's implementation which runs in :math:`O(V E \log V)` time, :start-after: characteristics_start :end-before: characteristics_end +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- @@ -97,9 +97,9 @@ See Also ------------------------------------------------------------------------------- * :doc:`pgr_floydWarshall` +* :doc:`sampledata` * Boost `Johnson `_ -* Queries uses the :doc:`sampledata` network. .. rubric:: Indices and tables diff --git a/doc/alpha_shape/pgr_alphaShape.rst b/doc/alpha_shape/pgr_alphaShape.rst index 81abc58200..e57f1a75ad 100644 --- a/doc/alpha_shape/pgr_alphaShape.rst +++ b/doc/alpha_shape/pgr_alphaShape.rst @@ -7,8 +7,11 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: alphaShape + +| ``pgr_alphaShape`` =============================================================================== @@ -33,7 +36,7 @@ * Version 2.0.0 - * **Official** function + * New official function. * Renamed from version 1.x .. rubric:: Support @@ -57,12 +60,11 @@ Characteristics * When the total number of points is less than 3, returns an EMPTY geometry +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- -.. rubric:: Summary -.. index:: - single: alphaShape .. admonition:: \ \ :class: signatures @@ -103,7 +105,7 @@ See Also ------------------------------------------------------------------------------- * :doc:`pgr_drivingDistance` -* :doc:`sampledata` network. +* :doc:`sampledata` * `ST_ConcaveHull `__ .. rubric:: Indices and tables diff --git a/doc/astar/aStar-family.rst b/doc/astar/aStar-family.rst index 168bddb105..f281c51efd 100644 --- a/doc/astar/aStar-family.rst +++ b/doc/astar/aStar-family.rst @@ -7,8 +7,9 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: single: aStar Family +| A* - Family of functions =============================================================================== @@ -17,13 +18,13 @@ The A* (pronounced "A Star") algorithm is based on Dijkstra's algorithm with a heuristic that allow it to solve most shortest path problems by evaluation only a sub-set of the overall graph. -.. index from here +.. official-start - :doc:`pgr_aStar` - A* algorithm for the shortest path. - :doc:`pgr_aStarCost` - Get the aggregate cost of the shortest paths. - :doc:`pgr_aStarCostMatrix` - Get the cost matrix of the shortest paths. -.. index to here +.. official-end .. toctree:: :hidden: @@ -179,7 +180,7 @@ See Also ------------------------------------------------------------------------------- * :doc:`bdAstar-family` -* https://www.boost.org/libs/graph/doc/astar_search.html +* `Boost: A* search `__ * https://en.wikipedia.org/wiki/A*_search_algorithm .. rubric:: Indices and tables diff --git a/doc/astar/pgr_aStar.rst b/doc/astar/pgr_aStar.rst index 95f268e276..3a0b024fc6 100644 --- a/doc/astar/pgr_aStar.rst +++ b/doc/astar/pgr_aStar.rst @@ -7,56 +7,58 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: aStar Family ; pgr_aStar + single: aStar +| ``pgr_aStar`` =============================================================================== ``pgr_aStar`` — Shortest path using the A* algorithm. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/astar_search.html +.. rubric:: Availability - Boost Graph Inside +* Version 4.0.0 -.. rubric:: Availability + * Combinations signature promoted to official. * Version 3.6.0 * Standarizing output columns to |short-generic-result| - * ``pgr_aStar`` (`One to One`_) added ``start_vid`` and ``end_vid`` columns. - * ``pgr_aStar`` (`One to Many`_) added ``end_vid`` column. - * ``pgr_aStar`` (`Many to One`_) added ``start_vid`` column. + * pgr_aStar(One to One) added ``start_vid`` and ``end_vid`` columns. + * pgr_aStar(One to Many) added ``end_vid`` column. + * pgr_aStar(Many to One) added ``start_vid`` column. * Version 3.2.0 - * New **proposed** signature: + * New proposed signature: - * ``pgr_aStar`` (`Combinations`_) + * pgr_aStar(Combinations) * Version 3.0.0 - * **Official** function + * Function promoted to official. * Version 2.4.0 - * New **Proposed** signatures: + * New proposed signatures: - * ``pgr_aStar`` (`One to Many`_) - * ``pgr_aStar`` (`Many to One`_) - * ``pgr_aStar`` (`Many to Many`_) + * pgr_aStar(One to Many) + * pgr_aStar(Many to One) + * pgr_aStar(Many to Many) * Version 2.3.0 - * Signature change on ``pgr_astar`` (`One to One`_) + * Signature change on pgr_aStar(One to One) * Old signature no longer supported * Version 2.0.0 - * **Official** ``pgr_aStar`` (`One to One`_) + * New official function. Description ------------------------------------------------------------------------------- @@ -70,10 +72,12 @@ Description * The results are equivalent to the union of the results of the `pgr_aStar(` `One to One`_ `)` on the: - * ``pgr_aStar`` (`One to Many`_) - * ``pgr_aStar`` (`Many to One`_) - * ``pgr_aStar`` (`Many to Many`_) - * ``pgr_aStar`` (`Combinations`_) + * pgr_aStar(One to Many) + * pgr_aStar(Many to One) + * pgr_aStar(Many to Many) + * pgr_aStar(Combinations) + +|Boost| Boost Graph Inside Signatures ------------------------------------------------------------------------------- @@ -96,7 +100,7 @@ Signatures Optional parameters are `named parameters` and have a default value. .. index:: - single: aStar(One to One) + single: aStar ; One to One One to One ............................................................................... @@ -118,7 +122,7 @@ One to One :end-before: -- q3 .. index:: - single: astar(One to Many) + single: aStar ; One to Many One to Many ............................................................................... @@ -140,7 +144,7 @@ One to Many :end-before: -- q4 .. index:: - single: aStar(Many to One) + single: aStar ; Many to One Many to One ............................................................................... @@ -162,7 +166,7 @@ Many to One :end-before: -- q5 .. index:: - single: aStar(Many to Many) + single: aStar ; Many to Many Many to Many ............................................................................... @@ -184,7 +188,7 @@ Many to Many :end-before: -- q51 .. index:: - single: aStarCost(Combinations) - Proposed on v3.2 + single: aStar ; Combinations Combinations ............................................................................... @@ -285,7 +289,7 @@ See Also * :doc:`aStar-family` * :doc:`bdAstar-family` * :doc:`sampledata` -* https://www.boost.org/libs/graph/doc/astar_search.html +* `Boost: A* search `__ * https://en.wikipedia.org/wiki/A*_search_algorithm .. rubric:: Indices and tables diff --git a/doc/astar/pgr_aStarCost.rst b/doc/astar/pgr_aStarCost.rst index e25866d385..611f2d907d 100644 --- a/doc/astar/pgr_aStarCost.rst +++ b/doc/astar/pgr_aStarCost.rst @@ -7,34 +7,37 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: aStar Family ; pgr_aStarCost + single: aStarCost + +| -pgr_aStarCost +``pgr_aStarCost`` =============================================================================== ``pgr_aStarCost`` - Total cost of the shortest path using the A* algorithm. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/astar_search.html +.. rubric:: Availability - Boost Graph Inside +* Version 4.0.0 -.. rubric:: Availability + * Combinations signature promoted to official. * Version 3.2.0 - * New **proposed** signature: + * New proposed signature: - * ``pgr_aStarCost`` (`Combinations`_) + * pgr_aStarCost(Combinations) * Version 3.0.0 - * **Official** function + * Function promoted to official. * Version 2.4.0 - * New **proposed** function + * New proposed function. Description ------------------------------------------------------------------------------- @@ -63,6 +66,8 @@ using the A* algorithm. - `start_vid` ascending - `end_vid` ascending +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- @@ -82,7 +87,7 @@ Signatures | OR EMPTY SET .. index:: - single: aStarCost(One to One) + single: aStarCost ; One to One One to One ............................................................................... @@ -104,7 +109,7 @@ One to One :end-before: -- q3 .. index:: - single: aStarCost(One to Many) + single: aStarCost ; One to Many One to Many ............................................................................... @@ -126,7 +131,7 @@ One to Many :end-before: -- q4 .. index:: - single: aStarCost(Many to One) + single: aStarCost ; Many to One Many to One ............................................................................... @@ -148,7 +153,7 @@ Many to One :end-before: -- q5 .. index:: - single: aStarCost(Many to Many) + single: aStarCost ; Many to Many Many to Many ............................................................................... @@ -170,7 +175,7 @@ Many to Many :end-before: -- q51 .. index:: - single: aStarCost(Combinations) - Proposed on v3.2 + single: aStarCost ; Combinations Combinations ............................................................................... @@ -271,6 +276,7 @@ See Also * :doc:`aStar-family` * :doc:`cost-category` * :doc:`sampledata` +* `Boost: A* search `__ .. rubric:: Indices and tables diff --git a/doc/astar/pgr_aStarCostMatrix.rst b/doc/astar/pgr_aStarCostMatrix.rst index 7f0320e57d..526914e8cc 100644 --- a/doc/astar/pgr_aStarCostMatrix.rst +++ b/doc/astar/pgr_aStarCostMatrix.rst @@ -7,28 +7,28 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: aStar Family ; pgr_aStarCostMatrix + single: Cost Matrix Category ; pgr_aStarCostMatrix + single: aStarCostMatrix + +| ``pgr_aStarCostMatrix`` =============================================================================== ``pgr_aStarCostMatrix`` - Calculates the a cost matrix using :doc:`pgr_aStar`. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org//libs/graph/doc/astar_search.html - - Boost Graph Inside - .. rubric:: Availability * Version 3.0.0 - * **Official** function + * Function promoted to official. * Version 2.4.0 - * New **proposed** function + * New proposed function. Description ------------------------------------------------------------------------------- @@ -52,8 +52,7 @@ Description * When the graph is **undirected** the cost matrix is symmetric -.. index:: - single: aStarCostMatrix +|Boost| Boost Graph Inside Signatures ------------------------------------------------------------------------------- @@ -130,6 +129,7 @@ See Also * :doc:`costMatrix-category` * :doc:`TSP-family` * :doc:`sampledata` +* `Boost: A* search `__ .. rubric:: Indices and tables diff --git a/doc/bdAstar/bdAstar-family.rst b/doc/bdAstar/bdAstar-family.rst index d36f1c2eef..71086c8d0f 100644 --- a/doc/bdAstar/bdAstar-family.rst +++ b/doc/bdAstar/bdAstar-family.rst @@ -7,8 +7,9 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: Bidirectional A* Family +| Bidirectional A* - Family of functions =============================================================================== @@ -16,7 +17,7 @@ Bidirectional A* - Family of functions The bidirectional A* (pronounced "A Star") algorithm is based on the A* algorithm. -.. index from here +.. official-start - :doc:`pgr_bdAstar` - Bidirectional A* algorithm for obtaining paths. - :doc:`pgr_bdAstarCost` - Bidirectional A* algorithm to calculate the cost of @@ -24,7 +25,7 @@ algorithm. - :doc:`pgr_bdAstarCostMatrix` - Bidirectional A* algorithm to calculate a cost matrix of paths. -.. index to here +.. official-end .. toctree:: :hidden: @@ -52,7 +53,7 @@ The main Characteristics are: * For large graphs where there is a path bewtween the starting vertex and ending vertex: - * It is expected to terminate faster than pgr_astar + * It is expected to terminate faster than pgr_aStar See :ref:`heuristics ` available and :ref:`factor ` handling. @@ -61,7 +62,7 @@ See Also ------------------------------------------------------------------------------- * :doc:`aStar-family` -* https://www.boost.org/libs/graph/doc/astar_search.html +* `Boost: A* search `__ * https://en.wikipedia.org/wiki/A*_search_algorithm .. rubric:: Indices and tables diff --git a/doc/bdAstar/pgr_bdAstar.rst b/doc/bdAstar/pgr_bdAstar.rst index 5ef6b9a46c..b39d4d7c31 100644 --- a/doc/bdAstar/pgr_bdAstar.rst +++ b/doc/bdAstar/pgr_bdAstar.rst @@ -7,54 +7,56 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Bidirectional A* Family ; pgr_bdAstar + single: bdAstar +| ``pgr_bdAstar`` =============================================================================== ``pgr_bdAstar`` — Shortest path using the bidirectional A* algorithm. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/astar_search.html +.. rubric:: Availability - Boost Graph Inside +* Version 4.0.0 -.. rubric:: Availability + * Combinations signature promoted to official. * Version 3.6.0 * Standarizing output columns to |short-generic-result| - * ``pgr_bdAstar`` (`One to One`_) added ``start_vid`` and ``end_vid`` columns. - * ``pgr_bdAstar`` (`One to Many`_) added ``end_vid`` column. - * ``pgr_bdAstar`` (`Many to One`_) added ``start_vid`` column. + * pgr_bdAstar(One to One) added ``start_vid`` and ``end_vid`` columns. + * pgr_bdAstar(One to Many) added ``end_vid`` column. + * pgr_bdAstar(Many to One) added ``start_vid`` column. * Version 3.2.0 - * New **proposed** signature: + * New proposed signature: - * ``pgr_bdAstar`` (`Combinations`_) + * pgr_bdAstar(Combinations) * Version 3.0.0 - * **Official** function + * Function promoted to official. * Version 2.5.0 - * New **Proposed** signatures: + * New proposed signatures: - * ``pgr_bdAstar`` (`One to Many`_) - * ``pgr_bdAstar`` (`Many to One`_) - * ``pgr_bdAstar`` (`Many to Many`_) + * pgr_bdAstar(One to Many) + * pgr_bdAstar(Many to One) + * pgr_bdAstar(Many to Many) - * Signature change on ``pgr_bdAstar`` (`One to One`_) + * Signature change on pgr_bdAstar(One to One) * Old signature no longer supported * Version 2.0.0 - * **Official** ``pgr_bdAstar`` (`One to One`_) + * New official function. Description ------------------------------------------------------------------------------- @@ -65,13 +67,15 @@ Description :start-after: astar general info start :end-before: astar general info end -* The results are equivalent to the union of the results of the `pgr_bdAStar(` - `One to One`_ `)` on the: +* The results are equivalent to the union of the results of the + pgr_bdAStar(One to One) on the: + + * pgr_bdAstar(One to Many) + * pgr_bdAstar(Many to One) + * pgr_bdAstar(Many to Many) + * pgr_bdAstar(Combinations) - * ``pgr_bdAstar`` (`One to Many`_) - * ``pgr_bdAstar`` (`Many to One`_) - * ``pgr_bdAstar`` (`Many to Many`_) - * ``pgr_bdAstar`` (`Combinations`_) +|Boost| Boost Graph Inside Signatures ------------------------------------------------------------------------------- @@ -94,7 +98,7 @@ Signatures Optional parameters are `named parameters` and have a default value. .. index:: - single: bdAstar(One to One) + single: bdAstar ; One to One One to One ............................................................................... @@ -116,7 +120,7 @@ One to One :end-before: -- q3 .. index:: - single: bdAstar(One to Many) + single: bdAstar ; One to Many One to Many ............................................................................... @@ -138,7 +142,7 @@ One to Many :end-before: -- q4 .. index:: - single: bdAstar(Many to One) + single: bdAstar ; Many to One Many to One ............................................................................... @@ -160,7 +164,7 @@ Many to One :end-before: -- q5 .. index:: - single: bdAstar(Many to Many) + single: bdAstar ; Many to Many Many to Many ............................................................................... @@ -182,7 +186,7 @@ Many to Many :end-before: -- q51 .. index:: - single: bdAstar(Combinations) - Proposed on v3.2 + single: bdAstar ; Combinations Combinations ............................................................................... @@ -283,7 +287,7 @@ See Also * :doc:`aStar-family` * :doc:`bdAstar-family` * :doc:`sampledata` -* https://www.boost.org/libs/graph/doc/astar_search.html +* `Boost: A* search `__ * https://en.wikipedia.org/wiki/A*_search_algorithm .. rubric:: Indices and tables diff --git a/doc/bdAstar/pgr_bdAstarCost.rst b/doc/bdAstar/pgr_bdAstarCost.rst index 0a1fe77cb5..adcca916e2 100644 --- a/doc/bdAstar/pgr_bdAstarCost.rst +++ b/doc/bdAstar/pgr_bdAstarCost.rst @@ -7,35 +7,37 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Bidirectional A* Family ; pgr_bdAstarCost + single: bdAstarCost +| -pgr_bdAstarCost +``pgr_bdAstarCost`` =============================================================================== ``pgr_bdAstarCost`` - Total cost of the shortest path using the bidirectional A* algorithm. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/astar_search.html +.. rubric:: Availability - Boost Graph Inside +* Version 4.0.0 -.. rubric:: Availability + * Combinations signature promoted to official. * Version 3.2.0 - * New **proposed** signature: + * New proposed signature: - * ``pgr_bdAstarCost`` (`Combinations`_) + * pgr_bdAstarCost(Combinations) * Version 3.0.0 - * **Official** function + * Function promoted to official. * Version 2.4.0 - * New **proposed** function + * New proposed function. Description ------------------------------------------------------------------------------- @@ -64,6 +66,8 @@ using the bidirectional A* algorithm. - `start_vid` ascending - `end_vid` ascending +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- @@ -83,7 +87,7 @@ Signatures | OR EMPTY SET .. index:: - single: bdAstarCost(One to One) + single: bdAstarCost ; One to One One to One ............................................................................... @@ -105,7 +109,7 @@ One to One :end-before: -- q3 .. index:: - single: bdAstarCost(One to Many) + single: bdAstarCost ; One to Many One to Many ............................................................................... @@ -127,7 +131,7 @@ One to Many :end-before: -- q4 .. index:: - single: bdAstarCost(Many to One) + single: bdAstarCost ; Many to One Many to One ............................................................................... @@ -149,7 +153,7 @@ Many to One :end-before: -- q5 .. index:: - single: bdAstarCost(Many to Many) + single: bdAstarCost ; Many to Many Many to Many ............................................................................... @@ -171,7 +175,7 @@ Many to Many :end-before: -- q51 .. index:: - single: bdAstarCost(Combinations) - Proposed on v3.2 + single: bdAstarCost ; Combinations Combinations ............................................................................... @@ -272,6 +276,7 @@ See Also * :doc:`bdAstar-family` * :doc:`cost-category` * :doc:`sampledata` +* `Boost: A* search `__ .. rubric:: Indices and tables diff --git a/doc/bdAstar/pgr_bdAstarCostMatrix.rst b/doc/bdAstar/pgr_bdAstarCostMatrix.rst index 6f97f58127..c0464bc4f3 100644 --- a/doc/bdAstar/pgr_bdAstarCostMatrix.rst +++ b/doc/bdAstar/pgr_bdAstarCostMatrix.rst @@ -7,28 +7,27 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Bidirectional A* Family ; pgr_bdAstarCostMatrix + single: Cost Matrix Category ; pgr_bdAstarCostMatrix + single: bdAstarCostMatrix +| ``pgr_bdAstarCostMatrix`` =============================================================================== ``pgr_bdAstarCostMatrix`` - Calculates the a cost matrix using :doc:`pgr_aStar`. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org//libs/graph/doc/astar_search.html - - Boost Graph Inside - .. rubric:: Availability * Version 3.0.0 - * **Official** function + * Function promoted to official. * Version 2.5.0 - * New **proposed** function + * New proposed function. Description ------------------------------------------------------------------------------- @@ -52,14 +51,11 @@ Description * When the graph is **undirected** the cost matrix is symmetric -.. index:: - single: bdAstarCostMatrix +|Boost| Boost Graph Inside Signatures ------------------------------------------------------------------------------- -.. rubric:: Summary - .. admonition:: \ \ :class: signatures @@ -130,6 +126,7 @@ See Also * :doc:`costMatrix-category` * :doc:`TSP-family` * :doc:`sampledata` +* `Boost: A* search `__ .. rubric:: Indices and tables diff --git a/doc/bdDijkstra/bdDijkstra-family.rst b/doc/bdDijkstra/bdDijkstra-family.rst index a1c2cb0c31..e2c3dbf8f4 100644 --- a/doc/bdDijkstra/bdDijkstra-family.rst +++ b/doc/bdDijkstra/bdDijkstra-family.rst @@ -7,15 +7,15 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| -.. rubric:: Previous versions of this page +.. index:: Bidirectional Dijkstra Family +| Bidirectional Dijkstra - Family of functions =============================================================================== -.. index from here +.. official-start * :doc:`pgr_bdDijkstra` - Bidirectional Dijkstra algorithm for the shortest paths. @@ -24,7 +24,7 @@ Bidirectional Dijkstra - Family of functions * :doc:`pgr_bdDijkstraCostMatrix` - Bidirectional Dijkstra algorithm to create a matrix of costs of the shortest paths. -.. index to here +.. official-end .. toctree:: :hidden: diff --git a/doc/bdDijkstra/pgr_bdDijkstra.rst b/doc/bdDijkstra/pgr_bdDijkstra.rst index da46ca8c1a..cb24f0db02 100644 --- a/doc/bdDijkstra/pgr_bdDijkstra.rst +++ b/doc/bdDijkstra/pgr_bdDijkstra.rst @@ -7,8 +7,11 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Bidirectional Dijkstra Family ; pgr_bdDijkstra + single: bdDijkstra +| ``pgr_bdDijkstra`` =============================================================================== @@ -16,40 +19,39 @@ ``pgr_bdDijkstra`` — Returns the shortest path using Bidirectional Dijkstra algorithm. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/table_of_contents.html +.. rubric:: Availability: - Boost Graph Inside +* Version 4.0.0 -.. rubric:: Availability: + * Combinations signature promoted to official. * Version 3.2.0 - * New **proposed** signature: + * New proposed signature: - * pgr_bdDijkstra(`Combinations`_) + * pgr_bdDijkstra(Combinations) * Version 3.0.0 - * **Official** function + * Function promoted to official. * Version 2.5.0 - * New **Proposed** functions: + * New proposed signatures: - * ``pgr_bdDijkstra`` (`One to Many`_) - * ``pgr_bdDijkstra`` (`Many to One`_) - * ``pgr_bdDijkstra`` (`Many to Many`_) + * pgr_bdDijkstra(One to Many) + * pgr_bdDijkstra(Many to One) + * pgr_bdDijkstra(Many to Many) * Version 2.4.0 - * Signature change on ``pgr_bdDijsktra`` (`One to One`_) + * Signature change on pgr_bdDijsktra(One to One) * Old signature no longer supported * Version 2.0.0 - * **Official** ``pgr_bdDijkstra`` (`One to One`_) + * New official function. Description @@ -61,6 +63,8 @@ Description :start-after: description start :end-before: description end +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- @@ -79,7 +83,7 @@ Signatures | OR EMPTY SET .. index:: - single: bdDijkstra(One to One) + single: bdDijkstra ; One to One One to One ............................................................................... @@ -99,7 +103,7 @@ One to One :end-before: -- q3 .. index:: - single: bdDijkstra(One to Many) + single: bdDijkstra ; One to Many One to Many ............................................................................... @@ -120,7 +124,7 @@ One to Many :end-before: -- q4 .. index:: - single: bdDijkstra(Many to One) + single: bdDijkstra ; Many to One Many to One ............................................................................... @@ -141,7 +145,7 @@ Many to One :end-before: -- q5 .. index:: - single: bdDijkstra(Many to Many) + single: bdDijkstra ; Many to Many Many to Many ............................................................................... @@ -162,7 +166,7 @@ Many to Many :end-before: -- q51 .. index:: - single: bdDijkstra(Combinations) - Proposed on v3.2 + single: bdDijkstra ; Combinations Combinations ............................................................................... @@ -253,7 +257,6 @@ See Also * :doc:`bdDijkstra-family` * :doc:`sampledata` -* https://www.cs.princeton.edu/courses/archive/spr06/cos423/Handouts/EPP%20shortest%20path%20algorithms.pdf * https://en.wikipedia.org/wiki/Bidirectional_search .. rubric:: Indices and tables diff --git a/doc/bdDijkstra/pgr_bdDijkstraCost.rst b/doc/bdDijkstra/pgr_bdDijkstraCost.rst index 69cd2e453d..49d760447e 100644 --- a/doc/bdDijkstra/pgr_bdDijkstraCost.rst +++ b/doc/bdDijkstra/pgr_bdDijkstraCost.rst @@ -7,8 +7,11 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Bidirectional Dijkstra Family ; pgr_bdDijkstraCost + single: bdDijkstraCost +| ``pgr_bdDijkstraCost`` =============================================================================== @@ -16,26 +19,25 @@ ``pgr_bdDijkstraCost`` — Returns the shortest path's cost using Bidirectional Dijkstra algorithm. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/table_of_contents.html +.. rubric:: Availability - Boost Graph Inside +* Version 4.0.0 -.. rubric:: Availability + * Combinations signature promoted to official. * Version 3.2.0 - * New **proposed** signature: + * New proposed signature: - * ``pgr_bdDijkstraCost`` (`Combinations`_) + * pgr_bdDijkstraCost(Combinations) * Version 3.0.0 - * **Official** function + * Function promoted to official. * Version 2.5.0 - * New **proposed** function + * New proposed function. Description @@ -52,6 +54,8 @@ using the bidirectional Dijkstra Algorithm. :start-after: cost_traits_start :end-before: cost_traits_end +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- @@ -70,7 +74,7 @@ Signatures | OR EMPTY SET .. index:: - single: bdDijkstraCost(One to One) + single: bdDijkstraCost ; One to One One to One ............................................................................... @@ -90,7 +94,7 @@ One to One :end-before: -- q3 .. index:: - single: bdDijkstraCost(One to Many) + single: bdDijkstraCost ; One to Many One to Many ............................................................................... @@ -111,7 +115,7 @@ One to Many :end-before: -- q4 .. index:: - single: bdDijkstraCost(Many to One) + single: bdDijkstraCost ; Many to One Many to One ............................................................................... @@ -132,7 +136,7 @@ Many to One :end-before: -- q5 .. index:: - single: bdDijkstraCost(Many to Many) + single: bdDijkstraCost ; Many to Many Many to Many ............................................................................... @@ -153,7 +157,7 @@ Many to Many :end-before: -- q51 .. index:: - single: bdDijkstraCost(Combinations) - Proposed on v3.2 + single: bdDijkstraCost ; Combinations Combinations ............................................................................... @@ -244,7 +248,6 @@ See Also * :doc:`bdDijkstra-family` * :doc:`sampledata` -* https://www.cs.princeton.edu/courses/archive/spr06/cos423/Handouts/EPP%20shortest%20path%20algorithms.pdf * https://en.wikipedia.org/wiki/Bidirectional_search .. rubric:: Indices and tables diff --git a/doc/bdDijkstra/pgr_bdDijkstraCostMatrix.rst b/doc/bdDijkstra/pgr_bdDijkstraCostMatrix.rst index cebff3a600..4006da9b8d 100644 --- a/doc/bdDijkstra/pgr_bdDijkstraCostMatrix.rst +++ b/doc/bdDijkstra/pgr_bdDijkstraCostMatrix.rst @@ -7,8 +7,12 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Bidirectional Dijkstra Family ; pgr_bdDijkstraCostMatrix + single: Cost Matrix Category ; pgr_bdDijkstraCostMatrix + single: bdDijkstraCostMatrix +| ``pgr_bdDijkstraCostMatrix`` =============================================================================== @@ -16,21 +20,15 @@ ``pgr_bdDijkstraCostMatrix`` - Calculates a cost matrix using :doc:`pgr_bdDijkstra`. - -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/table_of_contents.html - - Boost Graph Inside - .. rubric:: Availability * Version 3.0.0 - * **Official** function + * Function promoted to official. * Version 2.5.0 - * New **proposed** function + * New proposed function. Description ------------------------------------------------------------------------------- @@ -45,8 +43,7 @@ Using bidirectional Dijkstra algorithm, calculate and return a cost matrix. :start-after: costMatrix_details_start :end-before: costMatrix_details_end -.. index:: - single: bdDijkstraCostMatrix +|Boost| Boost Graph Inside Signatures ------------------------------------------------------------------------------- diff --git a/doc/bellman_ford/pgr_bellmanFord.rst b/doc/bellman_ford/pgr_bellmanFord.rst index b0292322d7..9c185a95a4 100644 --- a/doc/bellman_ford/pgr_bellmanFord.rst +++ b/doc/bellman_ford/pgr_bellmanFord.rst @@ -7,39 +7,32 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Shortest Path Category; pgr_bellmanFord - Experimental + single: bellmanFord - Experimental +| ``pgr_bellmanFord - Experimental`` =============================================================================== ``pgr_bellmanFord`` — Shortest path using Bellman-Ford algorithm. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/bellman_ford_shortest.html - - Boost Graph Inside - .. include:: experimental.rst - :start-after: begin-warn-expr - :end-before: end-warn-expr + :start-after: warning-begin + :end-before: end-warning .. rubric:: Availability * Version 3.2.0 - * New **experimental** signature: + * New experimental signature: - * ``pgr_bellmanFord`` (`Combinations`_) + * pgr_bellmanFord(Combinations) * Version 3.0.0 - * New **experimental** signatures: - - * ``pgr_bellmanFord`` (`One to One`_) - * ``pgr_bellmanFord`` (`One to Many`_) - * ``pgr_bellmanFord`` (`Many to One`_) - * ``pgr_bellmanFord`` (`Many to Many`_) + * New experimental function. Description ------------------------------------------------------------------------------- @@ -78,6 +71,7 @@ implementation can be used with a directed graph and an undirected graph. * Running time: :math:`O(| start\_vids | * ( V * E))` +|Boost| Boost Graph Inside Signatures ------------------------------------------------------------------------------- @@ -97,7 +91,7 @@ Signatures | OR EMPTY SET .. index:: - single: bellman_ford(One to One) - Experimental on v3.0 + single: bellmanFord - Experimental; One to One - Experimental on v3.0 One to One ............................................................................... @@ -117,7 +111,7 @@ One to One :end-before: -- q3 .. index:: - single: bellmanFord(One to Many) - Experimental on v3.0 + single: bellmanFord - Experimental ; One to Many - Experimental on v3.0 One to Many ............................................................................... @@ -138,7 +132,7 @@ One to Many :end-before: -- q4 .. index:: - single: bellman_ford(Many to One) - Experimental on v3.0 + single: bellmanFord - Experimental ; Many to One - Experimental on v3.0 Many to One ............................................................................... @@ -159,7 +153,7 @@ Many to One :end-before: -- q5 .. index:: - single: bellmanFord(Many to Many) - Experimental on v3.0 + single: bellmanFord - Experimental; Many to Many - Experimental on v3.0 Many to Many ............................................................................... @@ -180,7 +174,7 @@ Many to Many :end-before: -- q51 .. index:: - single: bellmanFord(Combinations) - Experimental on v3.2 + single: bellmanFord - Experimental; Combinations - Experimental on v3.2 Combinations ............................................................................... @@ -269,8 +263,12 @@ Additional Examples See Also ------------------------------------------------------------------------------- -* https://en.wikipedia.org/wiki/Bellman%E2%80%93Ford_algorithm * :doc:`sampledata` +* `Boost: Bellman Ford `__ +* https://en.wikipedia.org/wiki/Bellman%E2%80%93Ford_algorithm + + Boost Graph Inside + .. rubric:: Indices and tables diff --git a/doc/bellman_ford/pgr_edwardMoore.rst b/doc/bellman_ford/pgr_edwardMoore.rst index e4a2c93ecc..2073f17bcc 100644 --- a/doc/bellman_ford/pgr_edwardMoore.rst +++ b/doc/bellman_ford/pgr_edwardMoore.rst @@ -7,35 +7,33 @@ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Shortest Path Category; pgr_edwardMoore - Experimental + single: edwardMoore - Experimental +| -``pgr_edwardMoore - Experimental`` +``pgr_edwardMoore`` - Experimental =============================================================================== ``pgr_edwardMoore`` — Returns the shortest path using Edward-Moore algorithm. .. include:: experimental.rst - :start-after: begin-warn-expr - :end-before: end-warn-expr + :start-after: warning-begin + :end-before: end-warning .. rubric:: Availability * Version 3.2.0 - * New **experimental** signature: + * New experimental signature: - * ``pgr_edwardMoore`` (`Combinations`_) + * pgr_edwardMoore(Combinations) * Version 3.0.0 - * New **experimental** signatures: - - * ``pgr_edwardMoore`` (`One to One`_) - * ``pgr_edwardMoore`` (`One to Many`_) - * ``pgr_edwardMoore`` (`Many to One`_) - * ``pgr_edwardMoore`` (`Many to Many`_) + * New experimental function. Description ------------------------------------------------------------------------------- @@ -81,6 +79,8 @@ and is at-worst,as good as Bellman-Ford algorithm * Worst case: :math:`O(| V | * | E |)` * Average case: :math:`O( | E | )` +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- @@ -99,7 +99,7 @@ Signatures | OR EMPTY SET .. index:: - single: edwardMoore(One to One) - Experimental on v3.0 + single: edwardMoore - Experimental ; One to One - Experimental on v3.0 One to One ............................................................................... @@ -119,7 +119,7 @@ One to One :end-before: -- q3 .. index:: - single: edwardMoore(One to Many) - Experimental on v3.0 + single: edwardMoore - Experimental ; One to Many - Experimental on v3.0 One to Many ............................................................................... @@ -140,7 +140,7 @@ One to Many :end-before: -- q4 .. index:: - single: edwardMoore(Many to One) - Experimental on v3.0 + single: edwardMoore - Experimental ; Many to One - Experimental on v3.0 Many to One ............................................................................... @@ -161,7 +161,7 @@ Many to One :end-before: -- q5 .. index:: - single: edwardMoore(Many to Many) - Experimental on v3.0 + single: edwardMoore - Experimental ; Many to Many - Experimental on v3.0 Many to Many ............................................................................... @@ -182,7 +182,7 @@ Many to Many :end-before: -- q51 .. index:: - single: edwardMoore(Combinations) - Experimental on v3.2 + single: edwardMoore - Experimental ; Combinations - Experimental on v3.2 Combinations ............................................................................... diff --git a/doc/breadthFirstSearch/CMakeLists.txt b/doc/breadthFirstSearch/CMakeLists.txt deleted file mode 100644 index 7fe33f3ae4..0000000000 --- a/doc/breadthFirstSearch/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ - -SET(LOCAL_FILES - pgr_breadthFirstSearch.rst - pgr_binaryBreadthFirstSearch.rst - ) - -foreach (f ${LOCAL_FILES}) - configure_file(${f} "${PGR_DOCUMENTATION_SOURCE_DIR}/${f}") - list(APPEND LOCAL_DOC_FILES ${PGR_DOCUMENTATION_SOURCE_DIR}/${f}) -endforeach() - -add_subdirectory("images") -set(PROJECT_DOC_FILES ${PROJECT_DOC_FILES} ${LOCAL_DOC_FILES} PARENT_SCOPE) diff --git a/doc/breadthFirstSearch/images/CMakeLists.txt b/doc/breadthFirstSearch/images/CMakeLists.txt deleted file mode 100644 index 20eae979ce..0000000000 --- a/doc/breadthFirstSearch/images/CMakeLists.txt +++ /dev/null @@ -1,11 +0,0 @@ -SET(LOCAL_FILES - bfs-descending.png - bfs-ascending.png - ) - -foreach (f ${LOCAL_FILES}) - configure_file(${f} "${PGR_DOCUMENTATION_SOURCE_DIR}/images/${f}" COPYONLY) - list(APPEND LOCAL_IMG_FILES "${PGR_DOCUMENTATION_SOURCE_DIR}/images/${f}") -endforeach() - -set(PROJECT_IMG_FILES ${PROJECT_IMG_FILES} ${LOCAL_IMG_FILES} PARENT_SCOPE) diff --git a/doc/traversal/BFS-category.rst b/doc/categories/BFS-category.rst similarity index 98% rename from doc/traversal/BFS-category.rst rename to doc/categories/BFS-category.rst index 7893747ec0..206d883a27 100644 --- a/doc/traversal/BFS-category.rst +++ b/doc/categories/BFS-category.rst @@ -7,18 +7,19 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: Breadth First Search Category +| BFS - Category =============================================================================== -.. index from here +.. official-start * :doc:`pgr_kruskalBFS` * :doc:`pgr_primBFS` -.. index to here +.. official-end Traversal using breadth first search. diff --git a/doc/categories/CMakeLists.txt b/doc/categories/CMakeLists.txt new file mode 100644 index 0000000000..ccb9af99ee --- /dev/null +++ b/doc/categories/CMakeLists.txt @@ -0,0 +1,21 @@ + +SET(LOCAL_FILES + BFS-category.rst + cost-category.rst + costMatrix-category.rst + DFS-category.rst + drivingDistance-category.rst + KSP-category.rst + spanningTree-category.rst + via-category.rst + VRP-category.rst + withPoints-category.rst +) + +foreach (f ${LOCAL_FILES}) + configure_file(${f} "${PGR_DOCUMENTATION_SOURCE_DIR}/${f}") + list(APPEND LOCAL_DOC_FILES ${PGR_DOCUMENTATION_SOURCE_DIR}/${f}) +endforeach() + +set(PROJECT_DOC_FILES ${PROJECT_DOC_FILES} ${LOCAL_DOC_FILES} PARENT_SCOPE) +set(PROJECT_IMG_FILES ${PROJECT_IMG_FILES} PARENT_SCOPE) diff --git a/doc/traversal/DFS-category.rst b/doc/categories/DFS-category.rst similarity index 92% rename from doc/traversal/DFS-category.rst rename to doc/categories/DFS-category.rst index 0841b42f88..fad9334a64 100644 --- a/doc/traversal/DFS-category.rst +++ b/doc/categories/DFS-category.rst @@ -7,27 +7,26 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: Depth First Search Category +| DFS - Category =============================================================================== Traversal using Depth First Search. -.. index from here +.. official-start * :doc:`pgr_kruskalDFS` * :doc:`pgr_primDFS` -.. index to here - +.. official-end -.. rubric:: Proposed .. include:: proposed.rst - :start-after: stable-begin-warning - :end-before: stable-end-warning + :start-after: warning-begin + :end-before: end-warning * :doc:`pgr_depthFirstSearch` - Depth first search traversal of the graph. diff --git a/doc/ksp/KSP-category.rst b/doc/categories/KSP-category.rst similarity index 79% rename from doc/ksp/KSP-category.rst rename to doc/categories/KSP-category.rst index 2c282c94f5..8416fcb0b8 100644 --- a/doc/ksp/KSP-category.rst +++ b/doc/categories/KSP-category.rst @@ -7,29 +7,28 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: K Shortest Paths Category +| K shortest paths - Category =============================================================================== -.. index from here +.. official-start * :doc:`pgr_KSP` - Yen's algorithm based on pgr_dijkstra -.. index to here - -.. rubric:: Proposed +.. official-end .. include:: proposed.rst - :start-after: stable-begin-warning - :end-before: stable-end-warning + :start-after: warning-begin + :end-before: end-warning -.. index proposed from here +.. proposed-start * :doc:`pgr_withPointsKSP` - Yen's algorithm based on pgr_withPoints -.. index proposed to here +.. proposed-end .. rubric:: Indices and tables diff --git a/doc/pickDeliver/VRP-category.rst b/doc/categories/VRP-category.rst similarity index 98% rename from doc/pickDeliver/VRP-category.rst rename to doc/categories/VRP-category.rst index 34c656a69a..6565fe75b9 100644 --- a/doc/pickDeliver/VRP-category.rst +++ b/doc/categories/VRP-category.rst @@ -7,17 +7,18 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: Vehicle Routing Functions Category +| -Vehicle Routing Functions - Category (Experimental) +Vehicle Routing Functions - Category =============================================================================== .. include:: experimental.rst - :start-after: begin-warn-expr - :end-before: end-warn-expr + :start-after: warning-begin + :end-before: end-warning -.. index experimental from here +.. experimental-start * Pickup and delivery problem @@ -28,7 +29,7 @@ Vehicle Routing Functions - Category (Experimental) - :doc:`pgr_vrpOneDepot` - From a single depot, distributes orders -.. index experimental to here +.. experimental-end .. contents:: @@ -766,7 +767,7 @@ See Also ------------------------------------------------------------------------------- * https://en.wikipedia.org/wiki/Vehicle_routing_problem -* The queries use the :doc:`sampledata` network. +* :doc:`sampledata` .. rubric:: Indices and tables diff --git a/doc/src/cost-category.rst b/doc/categories/cost-category.rst similarity index 92% rename from doc/src/cost-category.rst rename to doc/categories/cost-category.rst index a45eb1d004..305cda3277 100644 --- a/doc/src/cost-category.rst +++ b/doc/categories/cost-category.rst @@ -7,15 +7,16 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: Cost Category +| Cost - Category =============================================================================== -.. index from here +.. official-start * :doc:`pgr_aStarCost` * :doc:`pgr_bdAstarCost` @@ -23,19 +24,17 @@ Cost - Category * :doc:`pgr_bdDijkstraCost` * :doc:`pgr_dijkstraNearCost` -.. index to here - -.. rubric:: Proposed +.. official-end .. include:: proposed.rst - :start-after: begin-warning + :start-after: warning-begin :end-before: end-warning -.. index proposed from here +.. proposed-start * :doc:`pgr_withPointsCost` -.. index proposed to here +.. proposed-end General Information diff --git a/doc/src/costMatrix-category.rst b/doc/categories/costMatrix-category.rst similarity index 97% rename from doc/src/costMatrix-category.rst rename to doc/categories/costMatrix-category.rst index 0b50a2615a..1ea0a04380 100644 --- a/doc/src/costMatrix-category.rst +++ b/doc/categories/costMatrix-category.rst @@ -7,33 +7,32 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: Cost Matrix Category +| Cost Matrix - Category =============================================================================== -.. index from here +.. official-start * :doc:`pgr_aStarCostMatrix` * :doc:`pgr_dijkstraCostMatrix` * :doc:`pgr_bdAstarCostMatrix` * :doc:`pgr_bdDijkstraCostMatrix` -.. index to here - +.. official-end -.. rubric:: proposed .. include:: proposed.rst - :start-after: begin-warning + :start-after: warning-begin :end-before: end-warning -.. index proposed from here +.. proposed-start * :doc:`pgr_withPointsCostMatrix` -.. index proposed to here +.. proposed-end General Information ------------------------------------------------------------------------------- diff --git a/doc/driving_distance/drivingDistance-category.rst b/doc/categories/drivingDistance-category.rst similarity index 95% rename from doc/driving_distance/drivingDistance-category.rst rename to doc/categories/drivingDistance-category.rst index 440e6820ed..3439eb3c35 100644 --- a/doc/driving_distance/drivingDistance-category.rst +++ b/doc/categories/drivingDistance-category.rst @@ -7,34 +7,33 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: Driving Distance Category +| Driving Distance - Category =============================================================================== -.. index from here +.. official-start * :doc:`pgr_drivingDistance` - Driving Distance based on Dijkstra's algorithm * :doc:`pgr_primDD` - Driving Distance based on Prim's algorithm * :doc:`pgr_kruskalDD` - Driving Distance based on Kruskal's algorithm -* Post pocessing +* Post processing * :doc:`pgr_alphaShape` - Alpha shape computation -.. index to here - -.. rubric:: Proposed +.. official-end .. include:: proposed.rst - :start-after: stable-begin-warning - :end-before: stable-end-warning + :start-after: warning-begin + :end-before: end-warning -.. index proposed from here +.. proposed-start * :doc:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints -.. index proposed to here +.. proposed-end .. toctree:: :hidden: diff --git a/doc/spanningTree/spanningTree-family.rst b/doc/categories/spanningTree-category.rst similarity index 96% rename from doc/spanningTree/spanningTree-family.rst rename to doc/categories/spanningTree-category.rst index 60c45b5619..24b9a30819 100644 --- a/doc/spanningTree/spanningTree-family.rst +++ b/doc/categories/spanningTree-category.rst @@ -7,18 +7,19 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: Spanning Tree Category +| Spanning Tree - Category =============================================================================== -.. index from here +.. official-start * :doc:`kruskal-family` * :doc:`prim-family` -.. index to here +.. official-end A spanning tree of an undirected graph is a tree that includes all the vertices of G with the minimum possible number of edges. diff --git a/doc/src/via-category.rst b/doc/categories/via-category.rst similarity index 97% rename from doc/src/via-category.rst rename to doc/categories/via-category.rst index a120c54a2c..6fec87e3d8 100644 --- a/doc/src/via-category.rst +++ b/doc/categories/via-category.rst @@ -7,16 +7,15 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: Via Category +| Via - Category =============================================================================== -.. rubric:: proposed - .. include:: proposed.rst - :start-after: begin-warning + :start-after: warning-begin :end-before: end-warning .. proposed start @@ -36,7 +35,7 @@ This category intends to solve the general problem: Given a graph and a list of vertices, find the shortest path between :math:`vertex_i` and :math:`vertex_{i+1}` for all vertices -In other words, find a continuos route that visits all the vertices in the order +In other words, find a continuous route that visits all the vertices in the order given. :path: represents a section of a **route**. diff --git a/doc/src/withPoints-category.rst b/doc/categories/withPoints-category.rst similarity index 99% rename from doc/src/withPoints-category.rst rename to doc/categories/withPoints-category.rst index ef6ce9ef3e..0f4a2a9d04 100644 --- a/doc/src/withPoints-category.rst +++ b/doc/categories/withPoints-category.rst @@ -7,8 +7,9 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: With Points Category +| withPoints - Category =============================================================================== @@ -16,7 +17,7 @@ withPoints - Category When points are added to the graph. .. include:: proposed.rst - :start-after: begin-warning + :start-after: warning-begin :end-before: end-warning .. proposed start diff --git a/doc/chinese/chinesePostmanProblem-family.rst b/doc/chinese/chinesePostmanProblem-family.rst index eb5b026687..dd1e84a8da 100644 --- a/doc/chinese/chinesePostmanProblem-family.rst +++ b/doc/chinese/chinesePostmanProblem-family.rst @@ -9,16 +9,15 @@ | - Chinese Postman Problem - Family of functions (Experimental) =============================================================================== -.. index from here +.. official-start * :doc:`pgr_chinesePostman` * :doc:`pgr_chinesePostmanCost` -.. index to here +.. official-end .. toctree:: :hidden: @@ -27,8 +26,8 @@ Chinese Postman Problem - Family of functions (Experimental) pgr_chinesePostmanCost .. include:: experimental.rst - :start-after: begin-warn-expr - :end-before: end-warn-expr + :start-after: warning-begin + :end-before: end-warning Description ------------------------------------------------------------------------------- diff --git a/doc/chinese/pgr_chinesePostman.rst b/doc/chinese/pgr_chinesePostman.rst index 4991c9bc25..3b9ee31196 100644 --- a/doc/chinese/pgr_chinesePostman.rst +++ b/doc/chinese/pgr_chinesePostman.rst @@ -7,9 +7,12 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Cost Category ; pgr_chinesePostman - Experimental + single: Miscellaneous Algorithms ; pgr_chinesePostman - Experimental + single: chinesePostman - Experimental on v3.0 -* **Supported versions** +| ``pgr_chinesePostman`` - Experimental =============================================================================== @@ -18,14 +21,14 @@ every edge in a directed graph and starts and ends on the same vertex. .. include:: experimental.rst - :start-after: begin-warn-expr - :end-before: end-warn-expr + :start-after: warning-begin + :end-before: end-warning .. rubric:: Availability * Version 3.0.0 - * New **experimental** signature + * New experimental function. Description ------------------------------------------------------------------------------- @@ -36,12 +39,11 @@ Description - Returns ``EMPTY SET`` on a disconnected graph +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- -.. index:: - single: chinesePostman - Experimental on v3.0 - .. admonition:: \ \ :class: signatures diff --git a/doc/chinese/pgr_chinesePostmanCost.rst b/doc/chinese/pgr_chinesePostmanCost.rst index 99fcdaa617..7e21ca97c0 100644 --- a/doc/chinese/pgr_chinesePostmanCost.rst +++ b/doc/chinese/pgr_chinesePostmanCost.rst @@ -7,8 +7,12 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Cost Category ; pgr_chinesePostmanCost - Experimental + single: Miscellaneous Algorithms ; pgr_chinesePostmanCost - Experimental + single: chinesePostmanCost - Experimental on v3.0 +| ``pgr_chinesePostmanCost`` - Experimental =============================================================================== @@ -18,14 +22,14 @@ which contains every edge in a directed graph and starts and ends on the same vertex. .. include:: experimental.rst - :start-after: begin-warn-expr - :end-before: end-warn-expr + :start-after: warning-begin + :end-before: end-warning .. rubric:: Availability * Version 3.0.0 - * New **experimental** signature + * New experimental function. Description ------------------------------------------------------------------------------- @@ -36,12 +40,11 @@ Description - Return value when the graph if disconnected +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- -.. index:: - single: chinesePostmanCost - Experimental on v3.0 - .. admonition:: \ \ :class: signatures diff --git a/doc/circuits/pgr_hawickCircuits.rst b/doc/circuits/pgr_hawickCircuits.rst index dd207b95d3..30a7c42fdd 100644 --- a/doc/circuits/pgr_hawickCircuits.rst +++ b/doc/circuits/pgr_hawickCircuits.rst @@ -7,29 +7,26 @@ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Miscellaneous Algorithms ; pgr_hawickCircuits + single: Hawick Circuits - Experimental on v3.4 +| -``pgr_hawickCircuits - Experimental`` +``pgr_hawickCircuits`` - Experimental =============================================================================== -``pgr_hawickCircuits`` — Returns the list of cirucits using hawick circuits algorithm. - -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/hawick_circuits.html +``pgr_hawickCircuits`` — Returns the list of ciruits using hawick circuits algorithm. .. include:: experimental.rst - :start-after: begin-warn-expr - :end-before: end-warn-expr + :start-after: warning-begin + :end-before: end-warning .. rubric:: Availability * Version 3.4.0 - * New **experimental** signature: - - * ``pgr_hawickCircuits`` - + * New experimental function. Description ------------------------------------------------------------------------------- @@ -58,11 +55,11 @@ implemenent this variation. - :math:`|V|` is the number of vertices in the graph. - :math:`|c|` is the number of circuts in the graph. +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- -.. rubric:: Summary - .. admonition:: \ \ :class: signatures @@ -71,9 +68,6 @@ Signatures | Returns set of |generic-result| | OR EMPTY SET -.. index:: - single: Hawick Circuits - Experimental on v3.4 - :Example: Circuits present in the pgRouting :doc:`sampledata` .. literalinclude:: hawickCircuits.queries diff --git a/doc/coloring/coloring-family.rst b/doc/coloring/coloring-family.rst index fde5da3568..38014ae0d4 100644 --- a/doc/coloring/coloring-family.rst +++ b/doc/coloring/coloring-family.rst @@ -7,39 +7,35 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| - +.. index:: Coloring Family +| Coloring - Family of functions =============================================================================== -.. rubric:: Proposed - .. include:: proposed.rst - :start-after: stable-begin-warning - :end-before: stable-end-warning + :start-after: warning-begin + :end-before: end-warning -.. index proposed from here +.. proposed-start * :doc:`pgr_sequentialVertexColoring` - Vertex coloring algorithm using greedy approach. -.. index proposed to here - -.. rubric:: Experimental +.. proposed-end .. include:: experimental.rst - :start-after: begin-warn-expr - :end-before: end-warn-expr + :start-after: warning-begin + :end-before: end-warning -.. index from here +.. official-start * :doc:`pgr_bipartite` - Bipartite graph algorithm using a DFS-based coloring approach. * :doc:`pgr_edgeColoring` - Edge Coloring algorithm using Vizing's theorem. -.. index to here +.. official-end .. toctree:: @@ -88,18 +84,7 @@ Column Type Description See Also ------------------------------------------------------------------------------- -.. include:: pgr_sequentialVertexColoring.rst - :start-after: see also start - :end-before: see also end - -.. include:: pgr_bipartite.rst - :start-after: see also start - :end-before: see also end - -.. include:: pgr_edgeColoring.rst - :start-after: see also start - :end-before: see also end - +* `Boost: `__ .. rubric:: Indices and tables diff --git a/doc/coloring/pgr_bipartite.rst b/doc/coloring/pgr_bipartite.rst index 732ca04c93..971b9d0c4b 100644 --- a/doc/coloring/pgr_bipartite.rst +++ b/doc/coloring/pgr_bipartite.rst @@ -7,30 +7,27 @@ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Coloring Family ; pgr_bipartite - Experimental + single: bipartite - Experimental on v3.2 +| -pgr_bipartite -Experimental +``pgr_bipartite`` - Experimental =============================================================================== ``pgr_bipartite`` — Disjoint sets of vertices such that no two vertices within the same set are adjacent. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/is_bipartite.html - - Boost Graph Inside - .. include:: experimental.rst - :start-after: begin-warn-expr - :end-before: end-warn-expr + :start-after: warning-begin + :end-before: end-warning .. rubric:: Availability * Version 3.2.0 - * New **experimental** signature - + * New experimental function. Description ------------------------------------------------------------------------------- @@ -49,13 +46,11 @@ colored with the same color. - If graph is not bipartite then algorithm returns empty set. - Running time: :math:`O(V + E)` +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- -.. index:: - single: bipartite - Experimental on v3.2 - - .. admonition:: \ \ :class: signatures @@ -118,16 +113,12 @@ Edges in blue represent odd length cycle subgraph. See Also ------------------------------------------------------------------------------- -.. see also start - * `Boost: is_bipartite `__ * `Wikipedia: bipartite graph `__ -.. see also end - -* :doc:`sampledata` network. +* :doc:`sampledata` .. rubric:: Indices and tables diff --git a/doc/coloring/pgr_edgeColoring.rst b/doc/coloring/pgr_edgeColoring.rst index 509ee6e850..b4968f9f63 100644 --- a/doc/coloring/pgr_edgeColoring.rst +++ b/doc/coloring/pgr_edgeColoring.rst @@ -7,30 +7,27 @@ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Coloring Family ; pgr_edgeColoring - Experimental + single: edgeColoring - Experimental on v3.3 +| -pgr_edgeColoring - Experimental +``pgr_edgeColoring`` - Experimental =============================================================================== ``pgr_edgeColoring`` — Returns the edge coloring of undirected and loop-free graphs -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/edge_coloring.html - - Boost Graph Inside - .. include:: experimental.rst - :start-after: begin-warn-expr - :end-before: end-warn-exp + :start-after: warning-begin + :end-before: end-warning .. rubric:: Availability * Version 3.3.0 - * New **experimental** signature - + * New experimental function. Description ------------------------------------------------------------------------------- @@ -70,12 +67,11 @@ no two adjacent edges have the same color. - where :math:`|E|` is the number of edges in the graph, - :math:`|V|` is the number of vertices in the graph. +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------ -.. index:: - single: edgeColoring - Experimental on v3.3 - .. admonition:: \ \ :class: signatures @@ -120,16 +116,11 @@ Result columns See Also ------------------------------------------------------------------------------- -* The queries use the :doc:`sampledata` network. - -.. see also start - -* `Boost: Edge Coloring Algorithm documentation +* :doc:`sampledata` +* `Boost: Edge Coloring `__ * `Wikipedia: Graph coloring `__ -.. see also end - .. rubric:: Indices and tables * :ref:`genindex` diff --git a/doc/coloring/pgr_sequentialVertexColoring.rst b/doc/coloring/pgr_sequentialVertexColoring.rst index 568fa305a8..6d027eb00d 100644 --- a/doc/coloring/pgr_sequentialVertexColoring.rst +++ b/doc/coloring/pgr_sequentialVertexColoring.rst @@ -7,33 +7,31 @@ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Coloring Family ; pgr_sequentialVertexColoring - Proposed + single: sequentialVertexColoring - Proposed on v3.3 +| -pgr_sequentialVertexColoring - Proposed +``pgr_sequentialVertexColoring`` - Proposed =============================================================================== ``pgr_sequentialVertexColoring`` — Returns the vertex coloring of an undirected graph, using greedy approach. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/sequential_vertex_coloring.html - - Boost Graph Inside - .. include:: proposed.rst - :start-after: stable-begin-warning - :end-before: stable-end-warning + :start-after: warning-begin + :end-before: end-warning .. rubric:: Availability * Version 3.3.0 - * Promoted to **proposed** signature + * Function promoted to proposed. * Version 3.2.0 - * New **experimental** signature + * New experimental function. Description @@ -60,12 +58,11 @@ manner, such that no edge connects two identically colored vertices. - :math:`d` is the maximum degree of the vertices in the graph, - :math:`k` is the number of colors used. +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------ -.. index:: - single: sequentialVertexColoring - Proposed on v3.3 - .. admonition:: \ \ :class: signatures @@ -110,16 +107,11 @@ Result columns See Also ------------------------------------------------------------------------------- -* The queries use the :doc:`sampledata` network. - -.. see also start - -* `Boost: Sequential Vertex Coloring algorithm documentation +* :doc:`sampledata` +* `Boost: Sequential Vertex Coloring `__ * `Wikipedia: Graph coloring `__ -.. see also end - .. rubric:: Indices and tables * :ref:`genindex` diff --git a/doc/components/components-family.rst b/doc/components/components-family.rst index 62367530d7..1222b10fe8 100644 --- a/doc/components/components-family.rst +++ b/doc/components/components-family.rst @@ -7,14 +7,15 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: Components Family +| Components - Family of functions =============================================================================== -.. index from here +.. official-start * :doc:`pgr_connectedComponents` - Connected components of an undirected graph. * :doc:`pgr_strongComponents` - Strongly connected components of a directed @@ -24,19 +25,17 @@ Components - Family of functions * :doc:`pgr_articulationPoints` - Articulation points of an undirected graph. * :doc:`pgr_bridges` - Bridges of an undirected graph. -.. index to here - -.. rubric:: Experimental +.. official-end .. include:: experimental.rst - :start-after: begin-warn-expr - :end-before: end-warn-expr + :start-after: warning-begin + :end-before: end-warning -.. index experimental from here +.. experimental-start * :doc:`pgr_makeConnected` - Details of edges to make graph connected. -.. index experimental to here +.. experimental-end .. toctree:: diff --git a/doc/components/pgr_articulationPoints.rst b/doc/components/pgr_articulationPoints.rst index 8c1775231c..e8d25e9ef4 100644 --- a/doc/components/pgr_articulationPoints.rst +++ b/doc/components/pgr_articulationPoints.rst @@ -7,9 +7,12 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Components Family ; pgr_articulationPoints + single: articulationPoints +| ``pgr_articulationPoints`` =============================================================================== @@ -17,21 +20,16 @@ ``pgr_articulationPoints`` - Return the articulation points of an undirected graph. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/biconnected_components.html - - Boost Graph Inside - .. rubric:: Availability * Version 3.0.0 * Result columns change: ``seq`` is removed - * **Official** function + * Function promoted to official. * Version 2.5.0 - * New **experimental** function + * New experimental function. Description ------------------------------------------------------------------------------- @@ -51,8 +49,7 @@ This implementation can only be used with an undirected graph. - Running time: :math:`O(V + E)` -.. index:: - single: articulationPoints +|Boost| Boost Graph Inside Signatures ------------------------------------------------------------------------------- @@ -114,8 +111,8 @@ See Also ------------------------------------------------------------------------------- * :doc:`components-family` -* The queries use the :doc:`sampledata` network. -* Boost: `Biconnected components & articulation points +* :doc:`sampledata` +* `Boost: Biconnected components & articulation points `__ * wikipedia: `Biconnected component `__ diff --git a/doc/components/pgr_biconnectedComponents.rst b/doc/components/pgr_biconnectedComponents.rst index a4ed2df7b5..edce2172d4 100644 --- a/doc/components/pgr_biconnectedComponents.rst +++ b/doc/components/pgr_biconnectedComponents.rst @@ -7,20 +7,18 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Components Family ; pgr_biconnectedComponents + single: biconnectedComponents +| ``pgr_biconnectedComponents`` =============================================================================== ``pgr_biconnectedComponents`` — Biconnected components of an undirected graph. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/biconnected_components.html - - Boost Graph Inside - .. rubric:: Availability * Version 3.0.0 @@ -30,11 +28,11 @@ * ``n_seq`` is removed * ``seq`` changed type to ``BIGINT`` - * **Official** function + * Function promoted to official. * Version 2.5.0 - * New **experimental** function + * New experimental function. Description @@ -59,8 +57,7 @@ only be contained in a single biconnected component. - Running time: :math:`O(V + E)` -.. index:: - single: biconnectedComponents +|Boost| Boost Graph Inside Signatures ------------------------------------------------------------------------------- @@ -128,8 +125,8 @@ See Also ------------------------------------------------------------------------------- * :doc:`components-family` -* The queries use the :doc:`sampledata` network. -* Boost: `Biconnected components +* :doc:`sampledata` +* `Boost: Biconnected components & articulation points `__ * wikipedia: `Biconnected component `__ diff --git a/doc/components/pgr_bridges.rst b/doc/components/pgr_bridges.rst index 093d622487..ee459a1121 100644 --- a/doc/components/pgr_bridges.rst +++ b/doc/components/pgr_bridges.rst @@ -7,29 +7,27 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Components Family ; pgr_bridges + single: bridges +| ``pgr_bridges`` =============================================================================== ``pgr_bridges`` - Return the bridges of an undirected graph. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/connected_components.html - - Boost Graph Inside - .. rubric:: Availability * Version 3.0.0 * Result columns change: ``seq`` is removed - * **Official** function + * Function promoted to official. * Version 2.5.0 - * New **experimental** function + * New experimental function. Description ------------------------------------------------------------------------------- @@ -47,8 +45,7 @@ This implementation can only be used with an undirected graph. - Running time: :math:`O(E * (V + E))` -.. index:: - single: bridges +|Boost| Boost Graph Inside Signatures ------------------------------------------------------------------------------- @@ -108,7 +105,9 @@ See Also ------------------------------------------------------------------------------- * https://en.wikipedia.org/wiki/Bridge_%28graph_theory%29 -* The queries use the :doc:`sampledata` network. +* :doc:`sampledata` +* `Boost: Connected components + `__ .. rubric:: Indices and tables diff --git a/doc/components/pgr_connectedComponents.rst b/doc/components/pgr_connectedComponents.rst index b29b99fdca..d4d787edcb 100644 --- a/doc/components/pgr_connectedComponents.rst +++ b/doc/components/pgr_connectedComponents.rst @@ -7,20 +7,18 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Components Family ; pgr_connectedComponents + single: connectedComponents +| -pgr_connectedComponents +``pgr_connectedComponents`` =============================================================================== ``pgr_connectedComponents`` — Connected components of an undirected graph using a DFS-based approach. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/connected_components.html - - Boost Graph Inside - .. rubric:: Availability * Version 3.0.0 @@ -30,11 +28,11 @@ a DFS-based approach. * ``n_seq`` is removed * ``seq`` changed type to ``BIGINT`` - * **Official** function + * Function promoted to official. * Version 2.5.0 - * New **experimental** function + * New experimental function. Description @@ -56,8 +54,7 @@ from each other. - Running time: :math:`O(V + E)` -.. index:: - single: connectedComponents +|Boost| Boost Graph Inside Signatures ------------------------------------------------------------------------------- @@ -140,8 +137,8 @@ See Also ------------------------------------------------------------------------------- * :doc:`components-family` -* The queries use the :doc:`sampledata` network. -* Boost: `Connected components +* :doc:`sampledata` +* `Boost: Connected components `__ * wikipedia: `Connected component `__ diff --git a/doc/components/pgr_makeConnected.rst b/doc/components/pgr_makeConnected.rst index 47f38dee98..f58c7d762d 100644 --- a/doc/components/pgr_makeConnected.rst +++ b/doc/components/pgr_makeConnected.rst @@ -7,28 +7,27 @@ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Components Family ; pgr_makeConnected - Experimental + single: makeConnected - Experimental on v3.2 +| + ``pgr_makeConnected`` - Experimental =============================================================================== ``pgr_makeConnected`` — Set of edges that will connect the graph. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/make_connected.html - - Boost Graph Inside - .. include:: experimental.rst - :start-after: begin-warn-expr - :end-before: end-warn-expr + :start-after: warning-begin + :end-before: end-warning .. rubric:: Availability * Version 3.2.0 - * New **experimental** function + * New experimental function. Description @@ -52,9 +51,7 @@ The main characteristics are: - The algorithm does not considers geometric topology in the calculations. - Running time: :math:`O(V + E)` - -.. index:: - single: makeConnected - Experimental on v3.2 +|Boost| Boost Graph Inside Signatures ------------------------------------------------------------------------------- @@ -67,8 +64,7 @@ Signatures | Returns set of |result-component-make| | OR EMPTY SET -:Example: Query done on :doc:`sampledata` network gives the list of edges that - are needed to connect the graph. +:Example: List of edges that are needed to connect the graph. .. literalinclude:: makeConnected.queries :start-after: -- q1 @@ -117,8 +113,9 @@ Returns set of |result-component-make| See Also ------------------------------------------------------------------------------- -* https://www.boost.org/libs/graph/doc/make_connected.html -* The queries use the :doc:`sampledata` network. +* `Boost: make connected + `__ +* :doc:`sampledata` .. rubric:: Indices and tables diff --git a/doc/components/pgr_strongComponents.rst b/doc/components/pgr_strongComponents.rst index d39b94ccf9..04371159e1 100644 --- a/doc/components/pgr_strongComponents.rst +++ b/doc/components/pgr_strongComponents.rst @@ -7,8 +7,11 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Components Family ; pgr_strongComponents + single: strongComponents +| ``pgr_strongComponents`` =============================================================================== @@ -16,11 +19,6 @@ ``pgr_strongComponents`` — Strongly connected components of a directed graph using Tarjan's algorithm based on DFS. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/strong_components.html - - Boost Graph Inside - .. rubric:: Availability * Version 3.0.0 @@ -30,11 +28,11 @@ using Tarjan's algorithm based on DFS. * ``n_seq`` is removed * ``seq`` changed type to ``BIGINT`` - * **Official** function + * Function promoted to official. * Version 2.5.0 - * New **experimental** function + * New experimental function. Description @@ -54,8 +52,7 @@ all reachable from each other. - Running time: :math:`O(V + E)` -.. index:: - single: strongComponents +|Boost| Boost Graph Inside Signatures ------------------------------------------------------------------------------- @@ -106,8 +103,8 @@ See Also ------------------------------------------------------------------------------- * :doc:`components-family` -* The queries use the :doc:`sampledata` network. -* Boost: `Strong components +* :doc:`sampledata` +* `Boost: Strong components `__ * wikipedia: `Strongly connected component `__ diff --git a/doc/conf.py.in b/doc/conf.py.in index f7848e052d..563eb984ff 100644 --- a/doc/conf.py.in +++ b/doc/conf.py.in @@ -54,6 +54,7 @@ extensions = [ 'sphinx.ext.mathjax', 'sphinx.ext.graphviz', 'sphinx.ext.autosectionlabel', + 'sphinx_collapse', ] autosectionlabel_prefix_document = True @@ -73,14 +74,14 @@ master_doc = 'index' # General information about the project. project = u'pgRouting' -copyright = u'pgRouting Contributors - Version @PROJECT_FULL_VERSION@' +copyright = u'pgRouting Contributors - Version v@PROJECT_LIB_VERSION@' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. -version = '@PROJECT_FULL_VERSION@' +version = 'v@PROJECT_LIB_VERSION@' # The full version, including alpha/beta/rc tags. release = '@PROJECT_FULL_VERSION@' @@ -392,6 +393,10 @@ rst_epilog=""" .. |result-disjoint-m-m| replace:: ``(seq, path_id, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)`` .. |result-mincut| replace:: ``(seq, edge, cost, mincut)`` .. |result-pickdrop| replace:: ``(seq, vehicle_number, vehicle_id, stop, order_id, stop_type, cargo, travel_time, arrival_time, wait_time, service_time, departure_time)`` +.. |boost| image:: images/boost-inside.jpeg + :target: https://www.boost.org/libs/graph + :alt: Boost Graph Inside + :height: 18 .. |epilog_end| replace:: just a marker for notes2news """ diff --git a/doc/contraction/CMakeLists.txt b/doc/contraction/CMakeLists.txt index 1c77d1be7f..d07ec34388 100644 --- a/doc/contraction/CMakeLists.txt +++ b/doc/contraction/CMakeLists.txt @@ -2,6 +2,8 @@ SET(LOCAL_FILES contraction-family.rst pgr_contraction.rst + pgr_contractionDeadEnd.rst + pgr_contractionLinear.rst ) foreach (f ${LOCAL_FILES}) diff --git a/doc/contraction/contraction-family.rst b/doc/contraction/contraction-family.rst index 87a9c127cd..f11bc635a9 100644 --- a/doc/contraction/contraction-family.rst +++ b/doc/contraction/contraction-family.rst @@ -7,23 +7,36 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: Contraction Family +| Contraction - Family of functions =============================================================================== -.. index from here +.. official-start * :doc:`pgr_contraction` -.. index to here +.. official-end + +.. include:: proposed.rst + :start-after: warning-begin + :end-before: end-warning + +.. proposed-start + +* :doc:`pgr_contractionDeadEnd` + +.. proposed-end .. toctree:: :hidden: pgr_contraction + pgr_contractionDeadEnd + pgr_contractionLinear Introduction @@ -47,683 +60,9 @@ Allowing the user to: - Decide the order of the contraction algorithms and set the maximum number of times they are to be executed. -Dead end contraction -------------------------------------------------------------------------------- - -Contraction of the leaf nodes of the graph. - -Dead end -.............................................................................. - -A node is considered a **dead end** node when - -* On undirected graphs: - - * The number of adjacent vertices is 1. - -* On directed graphs: - - * The number of adjacent vertices is 1. - * There are no outgoing edges and has at least one incoming edge. - * There are no incoming edges and has at least one outgoing edge. - - -When the conditions are true then the `Operation: Dead End Contraction`_ can be -done. - -Dead end vertex on undirected graph -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -- The green nodes are `dead end`_ nodes -- The blue nodes have an unlimited number of edges. - -.. graphviz:: - - graph G { - u, v [shape=circle;style=filled;width=.4;color=deepskyblue]; - a, b [style=filled; color=green]; - G [shape=tripleoctagon;width=1.5;style=filled; - color=deepskyblue;label = "Rest of the Graph"]; - - rankdir=LR; - G -- {u, v} [dir=none, weight=1, penwidth=3]; - u -- a [color=black]; - u -- a [color=darkgray]; - v -- b; - } - -.. list-table:: - :width: 80 - :widths: auto - :header-rows: 1 - - * - Node - - Adjecent nodes - - Number of adjacent nodes - * - :math:`a` - - :math:`\{u\}` - - 1 - * - :math:`b` - - :math:`\{v\}` - - 1 - - -Dead end vertex on directed graph -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -- The green nodes are `dead end`_ nodes -- The blue nodes have an unlimited number of incoming and/or outgoing edges. - -.. graphviz:: - - digraph G { - u, v, w, x, y [shape=circle;style=filled;width=.4;color=deepskyblue]; - a, b, c, d, e [style=filled; color=green]; - G [shape=tripleoctagon;width=1.5;style=filled; - color=deepskyblue;label = "Rest of the Graph"]; - - rankdir=LR; - G -> {u, v, w} [dir=none, weight=1, penwidth=3]; - {x, y} -> G [dir=none, weight=1, penwidth=3]; - u -> a -> u; - v -> b; - {w, v} -> c; - d -> x; - e -> {x, y}; - } - - -.. list-table:: - :width: 80 - :widths: auto - :header-rows: 1 - - * - Node - - Adjecent nodes - - Number of adjacent nodes - - Number of incoming edges - - Number of outgoing edges - * - :math:`a` - - :math:`\{u\}` - - 1 - - - - - * - :math:`b` - - :math:`\{v\}` - - 1 - - - - - * - :math:`c` - - :math:`\{v, w\}` - - 2 - - 2 - - 0 - * - :math:`d` - - :math:`\{x\}` - - 1 - - - - - * - :math:`e` - - :math:`\{x, y\}` - - 2 - - 0 - - 2 - - -From above, nodes :math:`\{a, b, d\}` are dead ends because the -number of adjacent vertices is 1. No further checks are needed for those nodes. - -On the following table, nodes :math:`\{c, e\}` because the -even that the number of adjacent vertices is not 1 for - -* :math:`c` - - * There are no outgoing edges and has at least one incoming edge. - -* :math:`e` - - * There are no incoming edges and has at least one outgoing edge. - -Operation: Dead End Contraction -............................................................................... - -The dead end contraction will stop until there are no more dead end nodes. -For example from the following graph where :math:`w` is the `dead end`_ node: - -.. graphviz:: - - digraph G { - u, v [shape=circle;style=filled;width=.4;color=deepskyblue]; - w [style=filled; color=green]; - "G" [shape=tripleoctagon;style=filled; - color=deepskyblue; label = "Rest of the Graph"]; - - rankdir=LR; - G -> u [dir=none, weight=1, penwidth=3]; - u -> v -> w; - } - - -After contracting :math:`w`, node :math:`v` is now a `dead end`_ node and is -contracted: - -.. graphviz:: - - digraph G { - u [shape=circle;style=filled;width=.4;color=deepskyblue]; - v [style=filled; color=green, label="v{w}"]; - "G" [shape=tripleoctagon;style=filled; - color=deepskyblue; label = "Rest of the Graph"]; - - rankdir=LR; - G -> u [dir=none, weight=1, penwidth=3]; - u -> v; - } - -After contracting :math:`v`, stop. Node :math:`u` has the information of nodes -that were contrcted. - -.. graphviz:: - - digraph G { - u [style=filled; color=green, label="u{v,w}"]; - "G" [shape=tripleoctagon;style=filled; - color=deepskyblue; label = "Rest of the Graph"]; - - rankdir=LR; - G -> u [dir=none, weight=1, penwidth=3]; - } - -Node :math:`u` has the information of nodes that were contracted. - - -Linear contraction -------------------------------------------------------------------------------- -In the algorithm, linear contraction is represented by 2. - -Linear -................................................................................ - -In case of an undirected graph, a node is considered a `linear` node when - -* The number of adjacent vertices is 2. - -In case of a directed graph, a node is considered a `linear` node when - -* The number of adjacent vertices is 2. -* Linearity is symmetrical - -Linear vertex on undirected graph -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -- The green nodes are `linear`_ nodes -- The blue nodes have an unlimited number of incoming and outgoing edges. - - -.. rubric:: Undirected - -.. graphviz:: - - graph G { - u, w [shape=circle;style=filled;width=.4;color=deepskyblue]; - v [style=filled; color=green]; - G [shape=tripleoctagon;width=1.5;style=filled; - color=deepskyblue;label = "Rest of the Graph"]; - - rankdir=LR; - w -- G -- u [dir=none, weight=1, penwidth=3]; - u -- v -- w; - } - -.. list-table:: - :width: 80 - :widths: auto - :header-rows: 1 - - * - Node - - Adjecent nodes - - Number of adjacent nodes - * - :math:`v` - - :math:`\{u, w\}` - - 2 - -Linear vertex on directed graph -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -- The green nodes are `linear`_ nodes -- The blue nodes have an unlimited number of incoming and outgoing edges. -- The white node is not linear because the linearity is not symetrical. - - * It is possible to go :math:`y \rightarrow c \rightarrow z` - * It's not possible to go :math:`z \rightarrow c \rightarrow y` - -.. graphviz:: - - digraph G { - u, v, w, x, y, z [shape=circle;style=filled;width=.4;color=deepskyblue]; - a, b [style=filled; color=green]; - G [shape=tripleoctagon;width=1.5;style=filled; - color=deepskyblue;label = "Rest of the Graph"]; - - rankdir=LR; - {u, v} -> G -> {x, w, y, z} [dir=none, weight=1, penwidth=3]; - u -> a -> v; - w -> b -> x; - x -> b -> w [color=darkgray]; - y -> c -> z -> c; - } - -.. list-table:: - :width: 80 - :widths: auto - :header-rows: 1 - - * - Node - - Adjecent nodes - - Number of adjacent nodes - - Is symmetrical? - * - :math:`a` - - :math:`\{u, v\}` - - 2 - - yes - * - :math:`b` - - :math:`\{w, x\}` - - 2 - - yes - * - :math:`c` - - :math:`\{y, z\}` - - 2 - - no - -Operation: Linear Contraction -............................................................................... - -The linear contraction will stop when there are no more linear nodes. -For example from the following graph where :math:`v` and :math:`w` are `linear`_ -nodes: - -.. graphviz:: - - digraph G { - u, z [shape=circle;style=filled;color=deepskyblue]; - v, w [style=filled; color=green]; - "G" [shape=tripleoctagon; style=filled; - color=deepskyblue;label = "Rest of the Graph"]; - - rankdir=LR; - G -> {u, z} [dir=none, weight=1, penwidth=3]; - u -> v -> w -> z; - } - -Contracting :math:`w`, - -* The vertex :math:`w` is removed from the graph -* The edges :math:`v \rightarrow w` and :math:`w \rightarrow z` are removed - from the graph. -* A new edge :math:`v \rightarrow z` is inserted represented with red color. - -.. graphviz:: - - digraph G { - u, z [shape=circle;style=filled;color=deepskyblue]; - v [style=filled; color=green]; - "G" [shape=tripleoctagon; style=filled; - color=deepskyblue;label = "Rest of the Graph"]; - - rankdir=LR; - G -> {u, z} [dir=none, weight=1, penwidth=3]; - u -> v; - v -> z [label="{w}";color=red] - } - -Contracting :math:`v`: - -* The vertex :math:`v` is removed from the graph -* The edges :math:`u \rightarrow v` and :math:`v \rightarrow z` are removed - from the graph. -* A new edge :math:`u \rightarrow z` is inserted represented with red color. - - -.. graphviz:: - - digraph G { - u, z [shape=circle;style=filled;color=deepskyblue]; - "G" [shape=tripleoctagon; style=filled; - color=deepskyblue;label = "Rest of the Graph"]; - - rankdir=LR; - G -> {u, z} [dir=none, weight=1, penwidth=3]; - u -> z [label="{v, w}";color=red] - } - -Edge :math:`u \rightarrow z` has the information of nodes that were contracted. - - -The cycle -------------------------------------------------------------------------------- - -Contracting a graph, can be done with more than one operation. -The order of the operations affect the resulting contracted graph, after -applying one operation, the set of vertices that can be contracted -by another operation changes. - -This implementation, cycles ``max_cycles`` times through ``operations_order`` . - -.. parsed-literal:: - - - do max_cycles times { - for (operation in operations_order) - { do operation } - } - - - -Contracting sample data -------------------------------------------------------------------------------- - -In this section, building and using a contracted graph will be shown by example. - -- The :doc:`sampledata` for an undirected graph is used -- a dead end operation first followed by a linear operation. - - -.. contents:: - :local: - -Construction of the graph in the database -............................................................................... - -.. rubric:: Original Data - -The following query shows the original data involved in the contraction -operation. - -.. literalinclude:: contraction-family.queries - :start-after: -- q00 - :end-before: -- q01 - -The original graph: - -.. image:: /images/Fig6-undirected.png - :scale: 25% - -Contraction results -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -The results do not represent the contracted graph. -They represent the changes done to the graph after applying the contraction -algorithm. - -Observe that vertices, for example, :math:`6` do not appear in the results -because it was not affected by the contraction algorithm. - -.. literalinclude:: contraction-family.queries - :start-after: -- q2 - :end-before: -- q3 - -After doing the dead end contraction operation: - -.. image:: images/undirected_sampledata_b.png - :scale: 25% - -After doing the linear contraction operation to the graph above: - -.. image:: images/undirected_sampledata_c.png - :scale: 25% - -The process to create the contraction graph on the database: - -.. contents:: - :local: - -Add additional columns -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -Adding extra columns to the ``edge_table`` and ``edge_table_vertices_pgr`` -tables, where: - -.. list-table:: - :width: 80 - :widths: auto - :header-rows: 1 - - * - Column - - Description - * - ``contracted_vertices`` - - The vertices set belonging to the vertex/edge - * - ``is_contracted`` - - On the vertex table - - * when ``true`` the vertex is contracted, its not part of the contracted - graph. - * when ``false`` the vertex is not contracted, its part of the contracted - graph. - * - ``is_new`` - - On the edge table - - * when ``true`` the edge was generated by the contraction algorithm. its - part of the contracted graph. - * when ``false`` the edge is an original edge, might be or not part of - the contracted graph. - -.. literalinclude:: contraction-family.queries - :start-after: -- q1 - :end-before: -- q2 - -Store contraction information -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -Store the `contraction results`_ in a table - -.. literalinclude:: contraction-family.queries - :start-after: -- q3 - :end-before: -- q4 - - -The vertex table update -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -Use ``is_contracted`` column to indicate the vertices that are contracted. - -.. literalinclude:: contraction-family.queries - :start-after: -- q4 - :end-before: -- q5 - -Fill ``contracted_vertices`` with the information from the results tha belong to -the vertices. - -.. literalinclude:: contraction-family.queries - :start-after: -- q6 - :end-before: -- q7 - -The modified vertices table: - -.. literalinclude:: contraction-family.queries - :start-after: -- q7 - :end-before: -- q8 - -The edge table update -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -Insert the new edges generated by pgr_contraction. - -.. literalinclude:: contraction-family.queries - :start-after: -- q8 - :end-before: -- q9 - -The modified ``edge_table``. - -.. literalinclude:: contraction-family.queries - :start-after: -- q9 - :end-before: -- q10 - - -The contracted graph -............................................................................... - -Vertices that belong to the contracted graph. -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -.. literalinclude:: contraction-family.queries - :start-after: -- q10 - :end-before: -- q11 - -Edges that belong to the contracted graph. -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -.. literalinclude:: contraction-family.queries - :start-after: -- q11 - :end-before: -- case1 - -Contracted graph -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -.. image:: images/newgraph.png - :scale: 25% - -Using the contracted graph -............................................................................... - -Using the contracted graph with ``pgr_dijkstra`` - -There are three cases when calculating the shortest path between a given source -and target in a contracted graph: - -- Case 1: Both source and target belong to the contracted graph. -- Case 2: Source and/or target belong to an edge subgraph. -- Case 3: Source and/or target belong to a vertex. - -Case 1: Both source and target belong to the contracted graph. -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -Using the `Edges that belong to the contracted graph.`_ on lines 11 to 20. - -.. literalinclude:: contraction-family.queries - :emphasize-lines: 11-20 - :start-after: -- case1 - :end-before: -- use1 - :linenos: - -.. rubric:: Case 1 - -When both source and target belong to the contracted graph, a path is found. - -.. literalinclude:: contraction-family.queries - :start-after: -- use1 - :end-before: -- use1-1 - -.. rubric:: Case 2 - -When source and/or target belong to an edge subgraph then a path is not found. - -In this case, the contracted graph do not have an edge connecting with -node :math:`4`. - -.. literalinclude:: contraction-family.queries - :start-after: -- use1-1 - :end-before: -- use1-2 - -.. rubric:: Case 3 - -When source and/or target belong to a vertex then a path is not found. - -In this case, the contracted graph do not have an edge connecting with -node :math:`7` and of node :math:`4` of the second case. - -.. literalinclude:: contraction-family.queries - :start-after: -- use1-2 - :end-before: -- case2 - -Case 2: Source and/or target belong to an edge subgraph. -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -Refining the above function to include nodes that belong to an edge. - -- The vertices that need to be expanded are calculated on lines 11 to 17. -- Adding to the contracted graph that additional section on lines 26 to 28. - -.. literalinclude:: contraction-family.queries - :emphasize-lines: 11-17, 26-28 - :start-after: -- case2 - :end-before: -- use2 - :linenos: - -.. rubric:: Case 1 - -When both source and target belong to the contracted graph, a path is found. - -.. literalinclude:: contraction-family.queries - :start-after: -- use2 - :end-before: -- use2-1 - -.. rubric:: Case 2 - -When source and/or target belong to an edge subgraph, now, a path is found. - -The routing graph now has an edge connecting with node :math:`4`. - -.. literalinclude:: contraction-family.queries - :start-after: -- use2-1 - :end-before: -- use2-2 - -.. rubric:: Case 3 - -When source and/or target belong to a vertex then a path is not found. - -In this case, the contracted graph do not have an edge connecting with -node :math:`7`. - -.. literalinclude:: contraction-family.queries - :start-after: -- use2-2 - :end-before: -- case3 - -Case 3: Source and/or target belong to a vertex. -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -Refining the above function to include nodes that belong to an edge. - -- The vertices that need to be expanded are calculated on lines 19 to 24. -- Adding to the contracted graph that additional section on lines 38 to 40. - -.. literalinclude:: contraction-family.queries - :emphasize-lines: 19-24, 39-41 - :start-after: -- case3 - :end-before: -- use3 - :linenos: - -.. rubric:: Case 1 - -When both source and target belong to the contracted graph, a path is found. - -.. literalinclude:: contraction-family.queries - :start-after: -- use3 - :end-before: -- use3-1 - -.. rubric:: Case 2 - -The code change do not affect this case so when source and/or target belong -to an edge subgraph, a path is still found. - -.. literalinclude:: contraction-family.queries - :start-after: -- use3-1 - :end-before: -- use3-2 - -.. rubric:: Case 3 - -When source and/or target belong to a vertex, now, a path is found. - -Now, the routing graph has an edge connecting with node :math:`7`. - -.. literalinclude:: contraction-family.queries - :start-after: -- use3-2 - :end-before: -- end - See Also ------------------------------------------------------------------------------- -* :doc:`pgr_contraction` -* :doc:`sampledata` * https://www.cs.cmu.edu/afs/cs/academic/class/15210-f12/www/lectures/lecture16.pdf * https://algo2.iti.kit.edu/documents/routeplanning/geisberger_dipl.pdf diff --git a/doc/contraction/pgr_contraction.rst b/doc/contraction/pgr_contraction.rst index 7505cfe6be..2f9dcdf430 100644 --- a/doc/contraction/pgr_contraction.rst +++ b/doc/contraction/pgr_contraction.rst @@ -7,9 +7,12 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Contraction Family ; pgr_contraction + single: contraction +| ``pgr_contraction`` =============================================================================== @@ -17,28 +20,35 @@ ``pgr_contraction`` — Performs graph contraction and returns the contracted vertices and edges. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/table_of_contents.html +.. rubric:: Availability - Boost Graph Inside +.. rubric:: Version 3.8.0 -.. rubric:: Availability +* New signature: + + * Previously compulsory parameter **Contraction order** is now optional with + name ``methods``. + * New name and order of optional parameters. + +* Deprecated signature pgr_contraction(text,bigint[],integer,bigint[],boolean) -* Version 3.0.0 +.. rubric:: Version 3.0.0 - * Result columns change: ``seq`` is removed - * Name change from ``pgr_contractGraph`` - * Bug fixes - * **Official** function +* Result columns change: ``seq`` is removed +* Name change from ``pgr_contractGraph`` +* Bug fixes +* Function promoted to official. -* Version 2.3.0 +.. rubric:: Version 2.3.0 - * New **experimental** function +* New experimental function. Description ------------------------------------------------------------------------------- +.. characteristics_start + Contraction reduces the size of the graph by removing some of the vertices and edges and, for example, might add edges that represent a sequence of original edges decreasing the total time and space used in graph algorithms. @@ -46,46 +56,42 @@ edges decreasing the total time and space used in graph algorithms. The main Characteristics are: - Process is done only on edges with positive costs. -- Does not return the full contracted graph - - - Only changes on the graph are returned +- Does not return the full contracted graph. -- Currnetly there are two types of contraction methods + - Only changes on the graph are returned. - - Dead End Contraction - - Linear Contraction +- The returned values include: -- The returned values include - - - the added edges by linear contraction. - - the modified vertices by dead end contraction. + - The new edges generated by linear contraction. + - The modified vertices generated by dead end contraction. - The returned values are ordered as follows: - - column ``id`` ascending when type is ``v`` - - column ``id`` descending when type is ``e`` + - column ``id`` ascending when its a modified vertex. + - column ``id`` with negative numbers descending when its a new edge. +.. characteristics_end -Signatures -------------------------------------------------------------------------------- +- Currently there are two types of contraction methods included in this + function: -.. rubric:: Summary + - Dead End Contraction. See :doc:`pgr_contractionDeadEnd`. + - Linear Contraction. See :doc:`pgr_contractionLinear`. -The pgr_contraction function has the following signature: +|Boost| Boost Graph Inside -.. index:: - single: contraction +Signatures +------------------------------------------------------------------------------- .. admonition:: \ \ :class: signatures - | pgr_contraction(`Edges SQL`_, **contraction order**, [**options**]) + | pgr_contraction(`Edges SQL`_, [**options**]) - | **options:** ``[ max_cycles, forbidden_vertices, directed]`` + | **options:** ``[directed, methods, cycles, forbidden]`` | Returns set of |result-contract| -:Example: Making a dead end and linear contraction in that order on an - undirected graph. +:Example: Dead end and linear contraction in that order on an undirected graph. .. literalinclude:: contraction.queries :start-after: -- q1 @@ -105,12 +111,6 @@ Parameters * - `Edges SQL`_ - ``TEXT`` - `Edges SQL`_ as described below. - * - **contraction Order** - - ``ARRAY[`` **ANY-INTEGER** ``]`` - - Ordered contraction operations. - - - 1 = Dead end contraction - - 2 = Linear contraction Optional parameters ............................................................................... @@ -124,22 +124,29 @@ Contraction optional parameters .. list-table:: :width: 81 - :widths: 19 22 7 40 + :widths: auto :header-rows: 1 * - Column - Type - Default - Description - * - ``forbidden_vertices`` - - ``ARRAY[`` **ANY-INTEGER** ``]`` - - **Empty** - - Identifiers of vertices forbidden for contraction. - * - ``max_cycles`` + * - ``methods`` + - ``INTEGER[]`` + - ``ARRAY[1,2]`` + - Ordered contraction operations. + + - 1 = Dead end contraction + - 2 = Linear contraction + + * - ``cycles`` - ``INTEGER`` - :math:`1` - - Number of times the contraction operations on ``contraction_order`` will - be performed. + - Number of times the contraction methods will be performed. + * - ``forbidden`` + - ``BIGINT[]`` + - ``ARRAY[]::BIGINT[]`` + - Identifiers of vertices forbidden for contraction. Inner Queries ------------------------------------------------------------------------------- @@ -168,14 +175,14 @@ The function returns a single row. The columns of the row are: - Description * - ``type`` - ``TEXT`` - - Type of the ``id``. + - Type of the row. * ``v`` when the row is a vertex. - * Column ``id`` has a positive value + * Column ``id`` has a positive value. * ``e`` when the row is an edge. - * Column ``id`` has a negative value + * Column ``id`` has a negative value. * - ``id`` - ``BIGINT`` - All numbers on this column are ``DISTINCT`` @@ -211,18 +218,222 @@ The function returns a single row. The columns of the row are: Additional Examples ------------------------------------------------------------------------------- -:Example: Only dead end contraction +.. contents:: + :local: + +Only dead end contraction +................................................................................ .. literalinclude:: contraction.queries :start-after: -- q2 :end-before: -- q3 -:Example: Only linear contraction +Only linear contraction +................................................................................ .. literalinclude:: contraction.queries :start-after: -- q3 :end-before: -- q4 +The cycle +................................................................................ + +Contracting a graph can be done with more than one operation. +The order of the operations affect the resulting contracted graph, after +applying one operation, the set of vertices that can be contracted +by another operation changes. + +This implementation cycles ``cycles`` times through the ``methods`` . + +.. parsed-literal:: + + + do max_cycles times { + for (operation in operations_order) + { do operation } + } + + + +Contracting sample data +------------------------------------------------------------------------------- + +In this section, building and using a contracted graph will be shown by example. + +- The :doc:`sampledata` for an undirected graph is used +- a dead end operation first followed by a linear operation. + + +.. contents:: + :local: + +Construction of the graph in the database +............................................................................... + +The original graph: + +.. image:: /images/Fig6-undirected.png + :scale: 25% + +The results do not represent the contracted graph. +They represent the changes that need to be done to the graph after applying the +contraction methods. + +Observe that vertices, for example, :math:`6` do not appear in the results +because it was not affected by the contraction algorithm. + +.. literalinclude:: contraction.queries + :start-after: -- cg2 + :end-before: -- cg3 + +After doing the dead end contraction operation: + +.. image:: images/undirected_sampledata_b.png + :scale: 25% + +After doing the linear contraction operation to the graph above: + +.. image:: images/undirected_sampledata_c.png + :scale: 25% + +The process to create the contraction graph on the database: +------------------------------------------------------------------------------- + +.. contents:: + :local: + +Add additional columns +............................................................................... + +Adding extra columns to the edges and vertices tables. +In this documentation the following will be used: + +.. list-table:: + :width: 80 + :widths: auto + :header-rows: 1 + + * - Column. + - Description + * - ``contracted_vertices`` + - The vertices set belonging to the vertex/edge + * - ``is_contracted`` + - On the vertex table + + * when ``true`` the vertex is contracted, its not part of the contracted + graph. + * when ``false`` the vertex is not contracted, its part of the contracted + graph. + * - ``is_new`` + - On the edge table + + * when ``true`` the edge was generated by the contraction algorithm. its + part of the contracted graph. + * when ``false`` the edge is an original edge, might be or not part of + the contracted graph. + +.. literalinclude:: contraction.queries + :start-after: -- cg1 + :end-before: -- cg2 + +Store contraction information +............................................................................... + +Store the contraction results in a table. + +.. literalinclude:: contraction.queries + :start-after: -- cg3 + :end-before: -- cg4 + +Update the edges and vertices tables +............................................................................... + +Use ``is_contracted`` column to indicate the vertices that are contracted. + +.. literalinclude:: contraction.queries + :start-after: -- cg4 + :end-before: -- cg5 + +Fill ``contracted_vertices`` with the information from the results that belong +to the vertices. + +.. literalinclude:: contraction.queries + :start-after: -- cg6 + :end-before: -- cg7 + +Insert the new edges generated by pgr_contraction. + +.. literalinclude:: contraction.queries + :start-after: -- cg7 + :end-before: -- cg8 + +The contracted graph +............................................................................... + +Vertices that belong to the contracted graph. + +.. literalinclude:: contraction.queries + :start-after: -- cg8 + :end-before: -- cg9 + +Edges that belong to the contracted graph. + +.. literalinclude:: contraction.queries + :start-after: -- cg9 + :end-before: -- cg10 + +Visually: + +.. image:: images/newgraph.png + :scale: 25% + +Using the contracted graph +------------------------------------------------------------------------------- + +Depending on the final application the graph is to be prepared. +In this example the final application will be to calculate the cost from two +vertices in the original graph by using the contracted graph with ``pgr_dijkstraCost`` + +There are three cases when calculating the shortest path between a given source +and target in a contracted graph: + +- Case 1: Both source and target belong to the contracted graph. +- Case 2: Source and/or target belong to an edge subgraph. +- Case 3: Source and/or target belong to a vertex. + +The final application should consider all of those cases. + + +Create a view (or table) of the contracted graph: + +.. literalinclude:: contraction.queries + :start-after: -- cg10 + :end-before: -- cg11 + +Create the function that will use the contracted graph. + +.. literalinclude:: contraction.queries + :start-after: -- cg11 + :end-before: -- cg12 + +Case 1: Both source and target belong to the contracted graph. + +.. literalinclude:: contraction.queries + :start-after: -- cg12 + :end-before: -- cg13 + +Case 2: Source and/or target belong to an edge that has contracted vertices. + +.. literalinclude:: contraction.queries + :start-after: -- cg13 + :end-before: -- cg14 + +Case 3: Source and/or target belong to a vertex that has been contracted. + +.. literalinclude:: contraction.queries + :start-after: -- cg14 + :end-before: -- cg15 + See Also ------------------------------------------------------------------------------- diff --git a/doc/contraction/pgr_contractionDeadEnd.rst b/doc/contraction/pgr_contractionDeadEnd.rst new file mode 100644 index 0000000000..6ac4db2315 --- /dev/null +++ b/doc/contraction/pgr_contractionDeadEnd.rst @@ -0,0 +1,603 @@ +.. + **************************************************************************** + pgRouting Manual + Copyright(c) pgRouting Contributors + + This documentation is licensed under a Creative Commons Attribution-Share + Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ + **************************************************************************** + + +.. index:: + single: Contraction Family ; pgr_contractionDeadEnd - Proposed + single: contractionDeadEnd - Proposed + +| + +``pgr_contractionDeadEnd`` - Proposed +=============================================================================== + +``pgr_contractionDeadEnd`` — Performs graph contraction and returns the contracted +vertices and edges. + +.. include:: proposed.rst + :start-after: warning-begin + :end-before: end-warning + +.. rubric:: Availability + +* Version 3.8.0 + + * New proposed function. + +Description +------------------------------------------------------------------------------- + +.. include:: pgr_contraction.rst + :start-after: characteristics_start + :end-before: characteristics_end + +A node is considered a dead end node when: + +* On undirected graphs: + + * The number of adjacent vertices is 1. + +* On directed graphs: + + * When there is only one adjacent vertex or + * When all edges are incoming regardless of the number of adjacent vertices. + +|Boost| Boost Graph Inside + +Signatures +------------------------------------------------------------------------------- + +.. admonition:: \ \ + :class: signatures + + | pgr_contractionDeadEnd(`Edges SQL`_, [**options**]) + + | **options:** ``[directed, forbidden_vertices]`` + | Returns set of |result-contract| + +:Example: Dead end contraction on an undirected graph. + +.. literalinclude:: contractionDeadEnd.queries + :start-after: -- q1 + :end-before: -- q2 + +- The green nodes are dead end nodes. + + - Node :math:`3` is a dead end node after node :math:`1` is contracted. + +.. graphviz:: + + graph G { + splines=false; + 1,2,3,5,9,13 [shape=circle;style=filled;color=lightgreen;fontsize=8;width=0.3;fixedsize=true]; + 4,6,7,8,10,11,12,14,15,16,17 [shape=circle;style=filled;color=cyan;fontsize=8;width=0.3;fixedsize=true]; + + 4 [label="4,{2}"]; + 6 [label="6,{5}"]; + 7 [label="7,{1,3}"]; + 8 [label="8,{9}"]; + 14 [label="14,{13}"]; + 6 -- 10 [label="2",fontsize=8]; + 10 -- 15 [label="3",fontsize=8]; 6 -- 7 [label="4",fontsize=8]; + 10 -- 11 [label="5",fontsize=8]; + 7 -- 11 [label="8",fontsize=8]; + 11 -- 16 [label="9",fontsize=8]; 7 -- 8 [label="10",fontsize=8]; + 11 -- 12 [label="11",fontsize=8]; 8 -- 12 [label="12",fontsize=8]; + 12 -- 17 [label="13",fontsize=8]; + 16 -- 17 [label="15",fontsize=8]; 15 -- 16 [label="16",fontsize=8]; + + 1 [pos="0,2!"]; 2 [pos="0.5,3.5!"]; + 3 [pos="1,2!"]; 4 [pos="2,3.5!"]; + 5 [pos="2,0!"]; 6 [pos="2,1!"]; + 7 [pos="2,2!"]; 8 [pos="2,3!"]; + 9 [pos="2,4!"]; 10 [pos="3,1!"]; + 11 [pos="3,2!"]; 12 [pos="3,3!"]; + 13 [pos="3.5,2.3!"]; 14 [pos="3.5,4!"]; + 15 [pos="4,1!"]; 16 [pos="4,2!"]; + 17 [pos="4,3!"]; + } + +Parameters +------------------------------------------------------------------------------- + +.. list-table:: + :width: 81 + :widths: auto + :header-rows: 1 + + * - Parameter + - Type + - Description + * - `Edges SQL`_ + - ``TEXT`` + - `Edges SQL`_ as described below. + +Optional parameters +............................................................................... + +.. include:: dijkstra-family.rst + :start-after: dijkstra_optionals_start + :end-before: dijkstra_optionals_end + +Contraction optional parameters +............................................................................... + +.. contraction_optional_start + +.. list-table:: + :width: 81 + :widths: 19 22 7 40 + :header-rows: 1 + + * - Column + - Type + - Default + - Description + * - ``forbidden_vertices`` + - ``ARRAY[`` |ANY-INTEGER| ``]`` + - **Empty** + - Identifiers of vertices forbidden for contraction. + +.. contraction_optional_end + +Inner Queries +------------------------------------------------------------------------------- + +Edges SQL +............................................................................... + +.. include:: pgRouting-concepts.rst + :start-after: basic_edges_sql_start + :end-before: basic_edges_sql_end + +Result columns +------------------------------------------------------------------------------- + +Returns set of |result-contract| + +The function returns a single row. The columns of the row are: + +.. list-table:: + :width: 81 + :widths: auto + :header-rows: 1 + + * - Column + - Type + - Description + * - ``type`` + - ``TEXT`` + - Value = ``e`` indicating the row is an edge. + * - ``id`` + - ``BIGINT`` + - A pseudo `id` of the edge. + + * All numbers on this column are ``DISTINCT`` + * Decreasing sequence starting from **-1**. + * - ``contracted_vertices`` + - ``ARRAY[BIGINT]`` + - Array of contracted vertex identifiers. + * - ``source`` + - ``BIGINT`` + - Identifier of the source vertex of the current edge. + * - ``target`` + - ``BIGINT`` + - Identifier of the target vertex of the current edge. + * - ``cost`` + - ``FLOAT`` + - Weight of the current edge. + +Additional Examples +------------------------------------------------------------------------------- + +.. contents:: + :local: + +Dead end vertex on undirected graph +............................................................................... + +The green nodes are dead end nodes. + +- They have only one adjacent node. + +.. graphviz:: + + graph G { + G [shape=record;style=filled;fillcolor=deepskyblue; + label="{Rest of the Graph | {<5> 5 | <6> 6}}"; pos="2.5,1!"]; + 1,2,3,4 [shape=circle;fontsize=8;fixedsize=true;style=filled]; + 2,3 [color=deepskyblue]; + 1,4 [color=green]; + {G:5,G:6} -- {2,3} [weight=1, penwidth=3]; + 1 -- 2 -- 1; + 3 -- 4; + 1 [pos="1,0!"]; 2 [pos="2,0!"]; 3 [pos="3,0!"]; 4 [pos="4,0!"]; + } + +.. literalinclude:: contractionDeadEnd.queries + :start-after: -- q2 + :end-before: -- q3 + +.. graphviz:: + + graph G { + G [shape=record;style=filled;fillcolor=deepskyblue; + label="{Rest of the Graph | {<5> 5 | <6> 6}}"; pos="2.5,1!"]; + 2,3 [shape=circle;fontsize=8;fixedsize=true;style=filled]; + 2,3 [color=deepskyblue]; + 2 [label="2, {1}"]; 3 [label="3, {4}"]; + {G:5,G:6} -- {2,3} [weight=1, penwidth=3]; + 2 [pos="2,0!"]; 3 [pos="3,0!"]; + } + +Dead end vertex on directed graph +............................................................................... + +- The green nodes are dead end nodes +- The blue nodes have an unlimited number of incoming and/or outgoing edges. + +.. graphviz:: + + digraph G { + G [shape=record;style=filled;fillcolor=deepskyblue; + label="{Rest of the Graph | { | | | | }}"; pos="2.5,3!"]; + 1,2,3,4,5,6,7,8,9,10 [shape=circle;fontsize=8;fixedsize=true;style=filled]; + 1,2,3,4,5,10 [color=deepskyblue]; + 6,7,8,9 [color=green]; + + {1,2,3,4,5} -> G [dir=both;weight=1, penwidth=3]; + 1 -> 6 -> 1; + 2 -> 7; + {3, 2} -> 8; + 9 -> 4; + 10 -> {4, 5}; + + 2 [pos="1,4!"]; 3 [pos="2,4!"]; + G [pos="2.5,3!"]; + 1 [pos="1,1!"]; 2 [pos="2,1!"]; 3 [pos="3,1!"]; 4 [pos="4,1!"]; 5 [pos="5,1!"]; + 6 [pos="1,0!"]; 7 [pos="2,0!"]; 8 [pos="3,0!"]; 9 [pos="4,0!"]; 10 [pos="5,0!"]; + } + +.. list-table:: + :width: 80 + :widths: auto + :header-rows: 1 + + * - Node + - Adjacent nodes + - Dead end + - Reason + * - :math:`6` + - :math:`\{1\}` + - Yes + - Has only one adjacent node. + * - :math:`7` + - :math:`\{2\}` + - Yes + - Has only one adjacent node. + * - :math:`8` + - :math:`\{2, 3\}` + - Yes + - Has more than one adjacent node and all edges are incoming. + * - :math:`9` + - :math:`\{4\}` + - Yes + - Has only one adjacent node. + * - :math:`10` + - :math:`\{4, 5\}` + - No + - Has more than one adjacent node and all edges are outgoing. + * - :math:`1,2,3,4,5` + - Many adjacent nodes. + - No + - Has more than one adjacent node and some edges are incoming and some are + outgoing. + + +From above, nodes :math:`\{6, 7, 9\}` are dead ends because the +total number of adjacent vertices is one. + +When there are more than one adjacent vertex, all edges need to be +all incoming edges otherwise it is not a dead end. + +.. literalinclude:: contractionDeadEnd.queries + :start-after: -- q3 + :end-before: -- q4 + +.. graphviz:: + + digraph G { + G [shape=record;style=filled;fillcolor=deepskyblue; + label="{Rest of the Graph | { | | | | }}"; pos="2.5,3!"]; + 1,2,3,4,5,10 [shape=circle;fontsize=8;fixedsize=true;style=filled]; + 1,2,3,4,5,10 [color=deepskyblue]; + + {1,2,3,4,5} -> G [dir=both;weight=1, penwidth=3]; + 10 -> {4, 5}; + + 2 [pos="1,4!"]; 3 [pos="2,4!"]; + G [pos="2.5,3!"]; + 1 [label="1, {6}";pos="1,1!"]; 2 [label="2, {7,8}";pos="2,1!"]; + 3 [label="3, {8}";pos="3,1!"]; 4 [label="4, {9}";pos="4,1!"]; 5 [pos="5,1!"]; + 10 [pos="5,0!"]; + } + +Step by step dead end contraction +............................................................................... + +The dead end contraction will stop until there are no more dead end nodes. +For example, from the following graph where :math:`3` is the dead end node: + +.. graphviz:: + + digraph G { + G [shape=record;style=filled;fillcolor=deepskyblue; + label="{Rest of the Graph | { | | | | }}"; pos="2,3!"]; + 1,2,3 [shape=circle;fontsize=8;fixedsize=true;style=filled]; + 1,2 [color=deepskyblue]; + 3 [color=green]; + + {1} -> G [dir=both;weight=1, penwidth=3]; + 1 -> 2 -> 3; + + G [pos="2.5,3!"]; + 1 [pos="1,1!"]; 2 [pos="2,1!"]; 3 [pos="3,1!"]; + } + + +After contracting :math:`3`, node :math:`2` is now a dead end node and is +contracted: + +.. graphviz:: + + digraph G { + G [shape=record;style=filled;fillcolor=deepskyblue; + label="{Rest of the Graph | { | | | | }}"; pos="2,3!"]; + 1,2 [shape=circle;fontsize=8;fixedsize=true;style=filled]; + 1 [color=deepskyblue]; + 2 [color=green]; + + {1} -> G [dir=both;weight=1, penwidth=3]; + 1 -> 2; + + G [pos="2.5,3!"]; + 1 [pos="1,1!"]; 2 [label="2, {3}";pos="2,1!"]; + } + +After contracting :math:`2`, stop. Node :math:`1` has the information of nodes +that were contracted. + +.. graphviz:: + + digraph G { + G [shape=record;style=filled;fillcolor=deepskyblue; + label="{Rest of the Graph | { | | | | }}"; pos="2,3!"]; + 1 [shape=circle;fontsize=8;fixedsize=true;style=filled]; + 1 [color=deepskyblue]; + + {1} -> G [dir=both;weight=1, penwidth=3]; + + G [pos="2.5,3!"]; + 1 [label="1, {2,3}";pos="2,1!"]; + } + +.. literalinclude:: contractionDeadEnd.queries + :start-after: -- q4 + :end-before: -- q5 + +Creating the contracted graph +............................................................................... + +.. contents:: + :local: + +Steps for the creation of the contracted graph +############################################################################### + +Add additional columns. + +.. literalinclude:: contractionDeadEnd.queries + :start-after: -- cg1 + :end-before: -- cg2 + +Save results into a table. + +.. literalinclude:: contractionDeadEnd.queries + :start-after: -- cg2 + :end-before: -- cg3 + +Use ``is_contracted`` column to indicate the vertices that are contracted. + +.. literalinclude:: contractionDeadEnd.queries + :start-after: -- cg3 + :end-before: -- cg4 + +Fill ``contracted_vertices`` with the information from the results that belong +to the vertices. + +.. literalinclude:: contractionDeadEnd.queries + :start-after: -- cg4 + :end-before: -- cg5 + +The contracted vertices are not part of the contracted graph. + +.. literalinclude:: contractionDeadEnd.queries + :start-after: -- cg5 + :end-before: -- cg6 + +The contracted graph +############################################################################### + +.. literalinclude:: contractionDeadEnd.queries + :start-after: -- cg6 + :end-before: -- cg7 + + +.. graphviz:: + + graph G { + splines=false; + 4,6,7,8,10,11,12,14,15,16,17 [shape=circle;style=filled;color=cyan;fontsize=8;width=0.3;fixedsize=true]; + + 4 [label="4,{2}"]; + 6 [label="6,{5}"]; + 7 [label="7,{1,3}"]; + 8 [label="8,{9}"]; + 14 [label="14,{13}"]; + 6 -- 10 [label="2",fontsize=8]; + 10 -- 15 [label="3",fontsize=8]; 6 -- 7 [label="4",fontsize=8]; + 10 -- 11 [label="5",fontsize=8]; + 7 -- 11 [label="8",fontsize=8]; + 11 -- 16 [label="9",fontsize=8]; 7 -- 8 [label="10",fontsize=8]; + 11 -- 12 [label="11",fontsize=8]; 8 -- 12 [label="12",fontsize=8]; + 12 -- 17 [label="13",fontsize=8]; + 16 -- 17 [label="15",fontsize=8]; 15 -- 16 [label="16",fontsize=8]; + + 4 [pos="2,3.5!"]; + 6 [pos="2,1!"]; + 7 [pos="2,2!"]; 8 [pos="2,3!"]; + 10 [pos="3,1!"]; + 11 [pos="3,2!"]; 12 [pos="3,3!"]; + 14 [pos="3.5,4!"]; + 15 [pos="4,1!"]; 16 [pos="4,2!"]; + 17 [pos="4,3!"]; + } + +Using when departure and destination are in the contracted graph +............................................................................... + +.. literalinclude:: contractionDeadEnd.queries + :language: sql + :start-after: -- cg7 + :end-before: -- cg8 + +.. graphviz:: + + graph G { + splines=false; + 4,6,7,8,10,11,12,14,15,16,17 [shape=circle;style=filled;color=cyan;fontsize=8;width=0.3;fixedsize=true]; + + 4 [label="4,{2}"]; + 6 [label="6,{5}"]; + 7 [label="7,{1,3}"]; + 8 [label="8,{9}"]; + 14 [label="14,{13}"]; + 6 -- 10 [label="2",fontsize=8]; + 10 -- 15 [label="3",fontsize=8]; 6 -- 7 [color=red;label="4",fontsize=8]; + 10 -- 11 [label="5",fontsize=8]; + 7 -- 11 [color=red;label="8",fontsize=8]; + 11 -- 16 [label="9",fontsize=8]; 7 -- 8 [label="10",fontsize=8]; + 11 -- 12 [color=red;label="11",fontsize=8]; 8 -- 12 [label="12",fontsize=8]; + 12 -- 17 [color=red;label="13",fontsize=8]; + 16 -- 17 [label="15",fontsize=8]; 15 -- 16 [label="16",fontsize=8]; + + 4 [pos="2,3.5!"]; + 6 [pos="2,1!"]; + 7 [pos="2,2!"]; 8 [pos="2,3!"]; + 10 [pos="3,1!"]; + 11 [pos="3,2!"]; 12 [pos="3,3!"]; + 14 [pos="3.5,4!"]; + 15 [pos="4,1!"]; 16 [pos="4,2!"]; + 17 [pos="4,3!"]; + } + +Using when departure/destination is not in the contracted graph +............................................................................... + +.. literalinclude:: contractionDeadEnd.queries + :language: sql + :start-after: -- cg8 + :end-before: -- cg9 + +.. graphviz:: + + graph G { + splines=false; + 1,3 [shape=circle;style=filled;color=lightgreen;fontsize=8;width=0.3;fixedsize=true]; + 4,6,7,8,10,11,12,14,15,16,17 [shape=circle;style=filled;color=cyan;fontsize=8;width=0.3;fixedsize=true]; + + 4 [label="4,{2}"]; + 6 [label="6,{5}"]; + 7 [label="7,{1,3}"]; + 8 [label="8,{9}"]; + 14 [label="14,{13}"]; + 1 -- 3 [color=red;label="6",fontsize=8]; + 3 -- 7 [color=red;label="7",fontsize=8]; + 6 -- 10 [label="2",fontsize=8]; + 10 -- 15 [label="3",fontsize=8]; 6 -- 7 [label="4",fontsize=8]; + 10 -- 11 [label="5",fontsize=8]; + 7 -- 11 [color=red;label="8",fontsize=8]; + 11 -- 16 [color=red;label="9",fontsize=8]; 7 -- 8 [label="10",fontsize=8]; + 11 -- 12 [label="11",fontsize=8]; 8 -- 12 [label="12",fontsize=8]; + 12 -- 17 [label="13",fontsize=8]; + 16 -- 17 [color=red;label="15",fontsize=8]; 15 -- 16 [label="16",fontsize=8]; + + 1 [pos="0,2!"]; + 3 [pos="1,2!"]; 4 [pos="2,3.5!"]; + 6 [pos="2,1!"]; + 7 [pos="2,2!"]; 8 [pos="2,3!"]; + 10 [pos="3,1!"]; + 11 [pos="3,2!"]; 12 [pos="3,3!"]; + 14 [pos="3.5,4!"]; + 15 [pos="4,1!"]; 16 [pos="4,2!"]; + 17 [pos="4,3!"]; + } + +Using when departure and destination are not in the contracted graph +............................................................................... + +.. literalinclude:: contractionDeadEnd.queries + :start-after: -- cg9 + :end-before: -- cg10 + +.. graphviz:: + + graph G { + splines=false; + 1,3,9 [shape=circle;style=filled;color=lightgreen;fontsize=8;width=0.3;fixedsize=true]; + 4,6,7,8,10,11,12,14,15,16,17 [shape=circle;style=filled;color=cyan;fontsize=8;width=0.3;fixedsize=true]; + + 4 [label="4,{2}"]; + 6 [label="6,{5}"]; + 7 [label="7,{1,3}"]; + 8 [label="8,{9}"]; + 14 [label="14,{13}"]; + 1 -- 3 [color=red;label="6",fontsize=8]; + 3 -- 7 [color=red;label="7",fontsize=8]; + 8 -- 9 [color=red;label="7",fontsize=8]; + 6 -- 10 [label="2",fontsize=8]; + 10 -- 15 [label="3",fontsize=8]; 6 -- 7 [label="4",fontsize=8]; + 10 -- 11 [label="5",fontsize=8]; + 7 -- 11 [label="8",fontsize=8]; + 11 -- 16 [label="9",fontsize=8]; 7 -- 8 [label="10",fontsize=8]; + 11 -- 12 [label="11",fontsize=8]; 8 -- 12 [label="12",fontsize=8]; + 12 -- 17 [label="13",fontsize=8]; + 16 -- 17 [label="15",fontsize=8]; 15 -- 16 [label="16",fontsize=8]; + + 1 [pos="0,2!"]; + 3 [pos="1,2!"]; 4 [pos="2,3.5!"]; + 6 [pos="2,1!"]; + 7 [pos="2,2!"]; 8 [pos="2,3!"]; + 9 [pos="2,4!"]; 10 [pos="3,1!"]; + 11 [pos="3,2!"]; 12 [pos="3,3!"]; + 14 [pos="3.5,4!"]; + 15 [pos="4,1!"]; 16 [pos="4,2!"]; + 17 [pos="4,3!"]; + } + +See Also +------------------------------------------------------------------------------- + +* :doc:`contraction-family` + +.. rubric:: Indices and tables + +* :ref:`genindex` +* :ref:`search` + diff --git a/doc/contraction/pgr_contractionLinear.rst b/doc/contraction/pgr_contractionLinear.rst new file mode 100644 index 0000000000..580707ed3d --- /dev/null +++ b/doc/contraction/pgr_contractionLinear.rst @@ -0,0 +1,633 @@ +.. + **************************************************************************** + pgRouting Manual + Copyright(c) pgRouting Contributors + + This documentation is licensed under a Creative Commons Attribution-Share + Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ + **************************************************************************** + + +.. index:: + single: Contraction Family ; pgr_contractionLinear - Proposed + single: contractionLinear - Proposed + +| + +``pgr_contractionLinear`` - Proposed +=============================================================================== + +``pgr_contractionLinear`` — Performs graph contraction and returns the contracted +vertices and edges. + +.. rubric:: Availability + +* Version 3.8.0 + + * New proposed function. + + +Description +------------------------------------------------------------------------------- + +.. include:: pgr_contraction.rst + :start-after: characteristics_start + :end-before: characteristics_end + +|Boost| Boost Graph Inside + +Signatures +------------------------------------------------------------------------------- + +.. admonition:: \ \ + :class: signatures + + | pgr_contractionLinear(`Edges SQL`_, [**options**]) + + | **options:** ``[directed, max_cycles, forbidden_vertices]`` + | Returns set of |result-contract| + +:Example: Linear contraction on an undirected graph. + +.. literalinclude:: contractionLinear.queries + :start-after: -- q1 + :end-before: -- q2 + +- The green nodes are linear nodes and will not be part of the contracted graph. + + - All edges adjacent will not be part of the contracted graph. + +- The red lines will be new edges of the contracted graph. + +.. graphviz:: + + graph G { + splines=false; + 3,15,17 [shape=circle;style=filled;color=lightgreen;fontsize=8;width=0.3;fixedsize=true]; + 1,2,4,5,6,7,8,9,10,11,12,13,14,16 [shape=circle;style=filled;color=cyan;fontsize=8;width=0.3;fixedsize=true]; + + 1:n -- 7:n [label="-1",fontsize=8,color=red]; + 12:s -- 17:sw -- 16:w [label="-2",fontsize=8,color=red]; + 10:n -- 15:nw -- 16:w [label="-3",fontsize=8,color=red]; + 5 -- 6 [label="1",fontsize=8]; 6 -- 10 [label="2",fontsize=8]; + 10 -- 15 [label="3",fontsize=8]; 6 -- 7 [label="4",fontsize=8]; + 10 -- 11 [label="5",fontsize=8]; 1 -- 3 [label="6",fontsize=8]; + 3 -- 7 [label="7",fontsize=8]; 7 -- 11 [label="8",fontsize=8]; + 11 -- 16 [label="9",fontsize=8]; 7 -- 8 [label="10",fontsize=8]; + 11 -- 12 [label="11",fontsize=8]; 8 -- 12 [label="12",fontsize=8]; + 12 -- 17 [label="13",fontsize=8]; 8 -- 9 [label="",fontsize=8]; + 16 -- 17 [label="15",fontsize=8]; 15 -- 16 [label="16",fontsize=8]; + 2 -- 4 [label="17",fontsize=8]; 13 -- 14 [label="18",fontsize=8]; + + 1 [pos="0,2!"]; 2 [pos="0.5,3.5!"]; + 3 [pos="1,2!"]; 4 [pos="2,3.5!"]; + 5 [pos="2,0!"]; 6 [pos="2,1!"]; + 7 [pos="2,2!"]; 8 [pos="2,3!"]; + 9 [pos="2,4!"]; 10 [pos="3,1!"]; + 11 [pos="3,2!"]; 12 [pos="3,3!"]; + 13 [pos="3.5,2.3!"]; 14 [pos="3.5,4!"]; + 15 [pos="4,1!"]; 16 [pos="4,2!"]; + 17 [pos="4,3!"]; + } + +Parameters +------------------------------------------------------------------------------- + +.. list-table:: + :width: 81 + :widths: auto + :header-rows: 1 + + * - Parameter + - Type + - Description + * - `Edges SQL`_ + - ``TEXT`` + - `Edges SQL`_ as described below. + * - **contraction Order** + - ``ARRAY[`` **ANY-INTEGER** ``]`` + - Ordered contraction operations. + + - 1 = Dead end contraction + - 2 = Linear contraction + +Optional parameters +............................................................................... + +.. include:: dijkstra-family.rst + :start-after: dijkstra_optionals_start + :end-before: dijkstra_optionals_end + +Contraction optional parameters +............................................................................... + +.. list-table:: + :width: 81 + :widths: 19 22 7 40 + :header-rows: 1 + + * - Column + - Type + - Default + - Description + * - ``forbidden_vertices`` + - ``ARRAY[`` **ANY-INTEGER** ``]`` + - **Empty** + - Identifiers of vertices forbidden for contraction. + * - ``max_cycles`` + - ``INTEGER`` + - :math:`1` + - Number of times the contraction operations on ``contraction_order`` will + be performed. + +Inner Queries +------------------------------------------------------------------------------- + +Edges SQL +............................................................................... + +.. include:: pgRouting-concepts.rst + :start-after: basic_edges_sql_start + :end-before: basic_edges_sql_end + +Result columns +------------------------------------------------------------------------------- + +Returns set of |result-contract| + +The function returns a single row. The columns of the row are: + +.. list-table:: + :width: 81 + :widths: auto + :header-rows: 1 + + * - Column + - Type + - Description + * - ``type`` + - ``TEXT`` + - Value = ``e`` indicating the row is an edge. + * - ``id`` + - ``BIGINT`` + - A pseudo `id` of the edge. + + * All numbers on this column are ``DISTINCT`` + * Decreasing sequence starting from **-1**. + * - ``contracted_vertices`` + - ``ARRAY[BIGINT]`` + - Array of contracted vertex identifiers. + * - ``source`` + - ``BIGINT`` + - Identifier of the source vertex of the current edge. + * - ``target`` + - ``BIGINT`` + - Identifier of the target vertex of the current edge. + * - ``cost`` + - ``FLOAT`` + - Weight of the current edge. + +Additional Examples +------------------------------------------------------------------------------- + +.. contents:: + :local: + +Linear edges +................................................................................ + +.. rubric:: Undirected graph + +A node connects two (or more) `linear` edges when + +* The number of adjacent vertices is 2. + +.. graphviz:: + + graph G { + label = "Linear edges" + 2 [shape=circle;style=filled;color=lightgreen;fontsize=8;width=0.3;fixedsize=true]; + 1,3 [shape=circle;style=filled;color=cyan;fontsize=8;width=0.3;fixedsize=true]; + 1 -- 2 -- 3 -- 2; + 1 [pos="0,2!"]; 2 [pos="1,2!"]; 3 [pos="2,2!"]; + } + +.. graphviz:: + + graph G { + label = "Non linear edges" + 4,5,6,7 [shape=circle;style=filled;color=cyan;fontsize=8;width=0.3;fixedsize=true]; + 4 -- 5 -- 6 -- 5; 5 --7; + 4 [pos="0,0!"]; 5 [pos="1,0!"]; 6 [pos="2,0!"]; + 7 [pos="1,1!"]; + } + + +In case of a directed graph, a node is considered a `linear` node when + +* The number of adjacent vertices is 2. +* Linearity is symmetrical. + +.. graphviz:: + + digraph G { + label = "Linearity is symmetrical." + 2 [shape=circle;style=filled;color=lightgreen;fontsize=8;width=0.3;fixedsize=true]; + 1,3 [shape=circle;style=filled;color=cyan;fontsize=8;width=0.3;fixedsize=true]; + 1 -> 2 -> 3 -> 2 -> 1; + 1 [pos="0,2!"]; 2 [pos="1,2!"]; 3 [pos="2,2!"]; + } + +.. graphviz:: + + digraph G { + label = "Linearity is not symmetrical." + 2 [shape=circle;style=filled;color=lightgreen;fontsize=8;width=0.3;fixedsize=true]; + 1,3 [shape=circle;style=filled;color=cyan;fontsize=8;width=0.3;fixedsize=true]; + 1 -> 2 -> 3 -> 2; + 1 [pos="0,2!"]; 2 [pos="1,2!"]; 3 [pos="2,2!"]; + } + +Linearity is not symmetrical +................................................................................ + +.. rubric:: Directed graph + +Graph where linearity is not symmetrical. + +.. graphviz:: + + digraph G { + 2 [shape=circle;style=filled;color=lightgreen;fontsize=8;width=0.3;fixedsize=true]; + 1,3 [shape=circle;style=filled;color=cyan;fontsize=8;width=0.3;fixedsize=true]; + + 1 -> 2 [label="1",fontsize=8]; + 2 -> 3 [label="3",fontsize=8]; + 3 -> 2 [label="4",fontsize=8]; + + 1 [pos="0,2!"]; 2 [pos="1,2!"]; 3 [pos="2,2!"]; + } + +When the graph is processed as a directed graph, linearity is not symmetrical, +therefore the graph can not be contracted. + +.. literalinclude:: contractionLinear.queries + :start-after: -- q2 + :end-before: -- q3 + +.. rubric:: Undirected graph + +When the same graph is processed as an undirected graph, linearity is symmetrical, +therefore the graph can be contracted. + +.. graphviz:: + + graph G { + 2 [shape=circle;style=filled;color=lightgreen;fontsize=8;width=0.3;fixedsize=true]; + 1,3 [shape=circle;style=filled;color=cyan;fontsize=8;width=0.3;fixedsize=true]; + 1 -- 2 [label="1",fontsize=8]; + 2 -- 3 [label="3",fontsize=8]; + 3 -- 2 [label="4",fontsize=8]; + 1 [pos="0,2!"]; 2 [pos="1,2!"]; 3 [pos="2,2!"]; + } + +.. literalinclude:: contractionLinear.queries + :start-after: -- q3 + :end-before: -- q4 + +The three edges can be replaced by one undirected edge + +- Edge :math:`1 - 3`. + + - With cost: :math:`4`. + - Contracted vertices in the edge: :math:`\{2\}`. + +.. graphviz:: + + graph G { + 1,3 [shape=circle;style=filled;color=cyan;fontsize=8;width=0.3;fixedsize=true]; + 1 -- 3 [label="4, {2}",fontsize=8;color=red]; + 1 [pos="0,2!"]; 3 [pos="2,2!"]; + } + + +Linearity is symmetrical +................................................................................ + +.. rubric:: Directed graph + +Graph where linearity is symmetrical. + +.. graphviz:: + + digraph G { + 2 [shape=circle;style=filled;color=lightgreen;fontsize=8;width=0.3;fixedsize=true]; + 1,3 [shape=circle;style=filled;color=cyan;fontsize=8;width=0.3;fixedsize=true]; + + 1 -> 2 [label="1",fontsize=8]; + 2 -> 1 [label="2",fontsize=8]; + 2 -> 3 [label="3",fontsize=8]; + 3 -> 2 [label="4",fontsize=8]; + + 1 [pos="0,2!"]; 2 [pos="1,2!"]; 3 [pos="2,2!"]; + } + +When the graph is processed as a directed graph, linearity is not symmetrical, +therefore the graph can not be contracted. + +.. literalinclude:: contractionLinear.queries + :start-after: -- q4 + :end-before: -- q5 + +The four edges can be replaced by two directed edges. + +- Edge :math:`1 - 3`. + + - With cost: :math:`4`. + - Contracted vertices in the edge: :math:`\{2\}`. + +- Edge :math:`3 - 1`. + + - With cost: :math:`6`. + - Contracted vertices in the edge: :math:`\{2\}`. + +.. graphviz:: + + digraph G { + 1,3 [shape=circle;style=filled;color=cyan;fontsize=8;width=0.3;fixedsize=true]; + + 1 -> 3 [label="4, {2}",fontsize=8;color=red]; + 3 -> 1 [label="6, {2}",fontsize=8;color=red]; + + 1 [pos="0,2!"]; 3 [pos="2,2!"]; + } + +.. rubric:: Undirected graph + +When the same graph is processed as an undirected graph, linearity is symmetrical, +therefore the graph can be contracted. + +.. graphviz:: + + graph G { + 2 [shape=circle;style=filled;color=lightgreen;fontsize=8;width=0.3;fixedsize=true]; + 1,3 [shape=circle;style=filled;color=cyan;fontsize=8;width=0.3;fixedsize=true]; + 1 -- 2 [label="1",fontsize=8]; + 2 -- 1 [label="2",fontsize=8]; + 2 -- 3 [label="3",fontsize=8]; + 3 -- 2 [label="4",fontsize=8]; + 1 [pos="0,2!"]; 2 [pos="1,2!"]; 3 [pos="2,2!"]; + } + +.. literalinclude:: contractionLinear.queries + :start-after: -- q5 + :end-before: -- q6 + +The four edges can be replaced by one undirected edge. + +- Edge :math:`1 - 3`. + + - With cost: :math:`4`. + - Contracted vertices in the edge: :math:`\{2\}`. + +.. graphviz:: + + graph G { + 1,3 [shape=circle;style=filled;color=cyan;fontsize=8;width=0.3;fixedsize=true]; + + 1 -- 3 [label="4, {2}",fontsize=8;color=red]; + + 1 [pos="0,2!"]; 3 [pos="2,2!"]; + } + +Step by step linear contraction +................................................................................ + +The linear contraction will stop when there are no more linear edges. +For example from the following graph there are linear edges + +.. graphviz:: + + digraph G { + 1, 2, 3, 4, G [fontsize=8;fixedsize=true;style=filled]; + 1, 2, 3, 4 [shape=circle]; + 1, 4 [color=deepskyblue]; + 2, 3 [color=green]; + G [shape=tripleoctagon;width=1.5;color=deepskyblue;label = "Rest of the Graph"]; + G -> {1, 4} [dir=none, weight=1, penwidth=3]; + 1 -> 2 [label="1";fontsize=8;fixedsize=true]; + 2 -> 3 [label="1";fontsize=8;fixedsize=true]; + 3 -> 4 [label="1";fontsize=8;fixedsize=true]; + G [pos="1,1!"]; + 1 [pos="0,0!"]; 2 [pos="1,0!"]; 3 [pos="2,0!"]; 4 [pos="3,0!"]; + } + +Contracting vertex :math:`3`, + +* The vertex :math:`3` is removed from the graph +* The edges :math:`2 \rightarrow 3` and :math:`w \rightarrow z` are removed + from the graph. +* A new edge :math:`2 \rightarrow 4` is inserted represented with red color. + +.. graphviz:: + + digraph G { + 1, 2, 4, G [fontsize=8;fixedsize=true;style=filled]; + 1, 2, 4 [shape=circle]; + 1, 4 [color=deepskyblue]; + 2 [color=green]; + G [shape=tripleoctagon;width=1.5;color=deepskyblue;label = "Rest of the Graph"]; + G -> {1, 4} [dir=none, weight=1, penwidth=3]; + 1 -> 2 [label="1";fontsize=8;fixedsize=true]; + 2 -> 4 [label="2, {3}";color=red;fontsize=8;fixedsize=true]; + G [pos="1,1!"]; + 1 [pos="0,0!"]; 2 [pos="1,0!"]; 4 [pos="3,0!"]; + } + +Contracting vertex :math:`2`: + +* The vertex :math:`2` is removed from the graph +* The edges :math:`1 \rightarrow 2` and :math:`2 \rightarrow 3` are removed + from the graph. +* A new edge :math:`1 \rightarrow 3` is inserted represented with red color. + +.. graphviz:: + + digraph G { + 1, 4, G [fontsize=8;fixedsize=true;style=filled]; + 1, 4 [shape=circle]; + 1, 4 [color=deepskyblue]; + G [shape=tripleoctagon;width=1.5;color=deepskyblue;label = "Rest of the Graph"]; + G -> {1, 4} [dir=none, weight=1, penwidth=3]; + 1 -> 4 [label="3, {2,3}";color=red;fontsize=8;fixedsize=true] + G [pos="1,1!"]; + 1 [pos="0,0!"]; 4 [pos="3,0!"]; + } + +Edge :math:`1 \rightarrow 3` has the information of cost and the nodes that were +contracted. + +.. literalinclude:: contractionLinear.queries + :start-after: -- q6 + :end-before: -- q7 + +Creating the contracted graph +............................................................................... + +.. contents:: + :local: + +Steps for the creation of the contracted graph +############################################################################### + +Add additional columns. + +.. literalinclude:: contractionLinear.queries + :start-after: -- cg1 + :end-before: -- cg2 + +Save results into a table. + +.. literalinclude:: contractionLinear.queries + :start-after: -- cg2 + :end-before: -- cg3 + +Use ``is_contracted`` column to indicate the vertices that are contracted. + +.. literalinclude:: contractionLinear.queries + :start-after: -- cg3 + :end-before: -- cg4 + +The contracted vertices are not part of the contracted graph. + +.. literalinclude:: contractionLinear.queries + :start-after: -- cg4 + :end-before: -- cg5 + +Insert the new edges generated by pgr_contraction. + +.. literalinclude:: contractionLinear.queries + :start-after: -- cg5 + :end-before: -- cg6 + +Create the contracted graph. + +.. literalinclude:: contractionLinear.queries + :start-after: -- cg6 + :end-before: -- cg7 + +The contracted graph +############################################################################### + +.. literalinclude:: contractionLinear.queries + :start-after: -- cg7 + :end-before: -- cg8 + +.. graphviz:: + + graph G { + splines=false; + 1,2,4,5,6,7,8,9,10,11,12,13,14,16 [shape=circle;style=filled;color=cyan;fontsize=8;width=0.3;fixedsize=true]; + + 1 -- 7 [label="19, (2, {3})",fontsize=8]; + 12 -- 16 [label="20, (2, {17})",fontsize=8]; + 10 -- 16 [label="21, (2, {15})",fontsize=8]; + 5 -- 6 [label="1",fontsize=8]; 6 -- 10 [label="2",fontsize=8]; + 6 -- 7 [label="4",fontsize=8]; + 10 -- 11 [label="5",fontsize=8]; + 7 -- 11 [label="8",fontsize=8]; + 11 -- 16 [label="9",fontsize=8]; 7 -- 8 [label="10",fontsize=8]; + 11 -- 12 [label="11",fontsize=8]; 8 -- 12 [label="12",fontsize=8]; + 8 -- 9 [label="",fontsize=8]; + 2 -- 4 [label="17",fontsize=8]; 13 -- 14 [label="18",fontsize=8]; + + 1 [pos="0,2!"]; 2 [pos="0.5,3.5!"]; + 4 [pos="2,3.5!"]; + 5 [pos="2,0!"]; 6 [pos="2,1!"]; + 7 [pos="2,2!"]; 8 [pos="2,3!"]; + 9 [pos="2,4!"]; 10 [pos="3,1!"]; + 11 [pos="3,2!"]; 12 [pos="3,3!"]; + 13 [pos="3.5,2.3!"]; 14 [pos="3.5,4!"]; + 16 [pos="4,2!"]; + } + +Using when departure and destination are in the contracted graph +............................................................................... + +.. literalinclude:: contractionLinear.queries + :start-after: -- cg8 + :end-before: -- cg9 + +.. graphviz:: + + graph G { + splines=false; + 1,2,4,5,6,7,8,9,10,11,12,13,14,16 [shape=circle;style=filled;color=cyan;fontsize=8;width=0.3;fixedsize=true]; + + 1 -- 7 [label="19, (2, {3})",fontsize=8]; + 12 -- 16 [label="20, (2, {17})",fontsize=8]; + 10 -- 16 [label="21, (2, {15})",fontsize=8]; + 5 -- 6 [label="1",fontsize=8]; 6 -- 10 [label="2",fontsize=8]; + 6 -- 7 [label="4",fontsize=8]; + 10 -- 11 [label="5",fontsize=8]; + 7 -- 11 [label="8",fontsize=8;color=red]; + 11 -- 16 [label="9",fontsize=8;color=red]; 7 -- 8 [label="10",fontsize=8]; + 11 -- 12 [label="11",fontsize=8]; 8 -- 12 [label="12",fontsize=8]; + 8 -- 9 [label="",fontsize=8]; + 2 -- 4 [label="17",fontsize=8]; 13 -- 14 [label="18",fontsize=8]; + + 1 [pos="0,2!"]; 2 [pos="0.5,3.5!"]; + 4 [pos="2,3.5!"]; + 5 [pos="2,0!"]; 6 [pos="2,1!"]; + 7 [pos="2,2!"]; 8 [pos="2,3!"]; + 9 [pos="2,4!"]; 10 [pos="3,1!"]; + 11 [pos="3,2!"]; 12 [pos="3,3!"]; + 13 [pos="3.5,2.3!"]; 14 [pos="3.5,4!"]; + 16 [pos="4,2!"]; + } + +Using when departure/destination is not in the contracted graph +............................................................................... + +.. literalinclude:: contractionLinear.queries + :start-after: -- cg9 + :end-before: -- cg10 + +.. graphviz:: + + graph G { + 17 [shape=circle;style=filled;color=lightgreen;fontsize=8;width=0.3;fixedsize=true]; + 1,2,4,5,6,7,8,9,10,11,12,13,14,16 [shape=circle;style=filled;color=cyan;fontsize=8;width=0.3;fixedsize=true]; + + 1 -- 7 [label="19, (2, {3})",fontsize=8;color=red]; + 12 -- 16 [label="20, (2, {17})",fontsize=8]; + 10 -- 16 [label="21, (2, {15})",fontsize=8]; + 5 -- 6 [label="1",fontsize=8]; 6 -- 10 [label="2",fontsize=8]; + 6 -- 7 [label="4",fontsize=8]; + 10 -- 11 [label="5",fontsize=8]; + 7 -- 11 [label="8",fontsize=8;color=red]; 12 -- 17 [label="13",fontsize=8]; + 11 -- 16 [label="9",fontsize=8;color=red]; 7 -- 8 [label="10",fontsize=8]; + 11 -- 12 [label="11",fontsize=8]; 8 -- 12 [label="12",fontsize=8]; + 8 -- 9 [label="",fontsize=8]; 16 -- 17 [label="15",fontsize=8;color=red]; + 2 -- 4 [label="17",fontsize=8]; 13 -- 14 [label="18",fontsize=8]; + + 1 [pos="0,2!"]; 2 [pos="0.5,3.5!"]; + 4 [pos="2,3.5!"]; + 5 [pos="2,0!"]; 6 [pos="2,1!"]; + 7 [pos="2,2!"]; 8 [pos="2,3!"]; + 9 [pos="2,4!"]; 10 [pos="3,1!"]; + 11 [pos="3,2!"]; 12 [pos="3,3!"]; + 13 [pos="3.5,2.3!"]; 14 [pos="3.5,4!"]; + 16 [pos="4,2!"]; 17 [pos="4,3!"]; + } + +See Also +------------------------------------------------------------------------------- + +* :doc:`contraction-family` + +.. rubric:: Indices and tables + +* :ref:`genindex` +* :ref:`search` + diff --git a/doc/dagShortestPath/pgr_dagShortestPath.rst b/doc/dagShortestPath/pgr_dagShortestPath.rst index c7a118b2f3..005799c942 100644 --- a/doc/dagShortestPath/pgr_dagShortestPath.rst +++ b/doc/dagShortestPath/pgr_dagShortestPath.rst @@ -7,36 +7,35 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Shortest Path Category ; pgr_dagShortestPath - Experimental + single: Directed Acyclic Graph Category ; pgr_dagShortestPath - Experimental + single: dagShortestPath - Experimental +| -pgr_dagShortestPath - Experimental +``pgr_dagShortestPath`` - Experimental =============================================================================== ``pgr_dagShortestPath`` — Returns the shortest path for weighted directed acyclic graphs(DAG). In particular, the DAG shortest paths algorithm implemented by Boost.Graph. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/dag_shortest_paths.html - - Boost Graph Inside - .. include:: experimental.rst - :start-after: begin-warn-expr - :end-before: end-warn-expr + :start-after: warning-begin + :end-before: end-warning .. rubric:: Availability * Version 3.2.0 - * New **experimental** function: + * New experimental function. * pgr_dagShortestPath(Combinations) * Version 3.0.0 - * New **experimental** function + * New experimental function. Description @@ -78,6 +77,7 @@ The main characteristics are: * Running time: :math:`O(| start\_vids | * (V + E))` +|Boost| Boost Graph Inside Signatures ------------------------------------------------------------------------------- @@ -98,7 +98,7 @@ Signatures .. index:: - single: dagShortestPath(One to One) - Experimental on v3.0 + single: dagShortestPath - Experimental ; One to One - Experimental on v3.0 One to One ............................................................................... @@ -118,7 +118,7 @@ One to One :end-before: -- q3 .. index:: - single: dagShortestPath(One to Many) - Experimental on v3.0 + single: dagShortestPath - Experimental ; One to Many - Experimental on v3.0 One to Many ............................................................................... @@ -138,7 +138,7 @@ One to Many :end-before: -- q4 .. index:: - single: dagShortestPath(Many to One) - Experimental on v3.0 + single: dagShortestPath - Experimental ; Many to One - Experimental on v3.0 Many to One ............................................................................... @@ -158,7 +158,7 @@ Many to One :end-before: -- q5 .. index:: - single: dagShortestPath(Many to Many) - Experimental on v3.0 + single: dagShortestPath - Experimental ; Many to Many - Experimental on v3.0 Many to Many ............................................................................... @@ -179,7 +179,7 @@ Many to Many :end-before: -- q51 .. index:: - single: dagShortestPath(Combinations) - Experimental on v3.2 + single: dagShortestPath - Experimental ; Combinations - Experimental on v3.2 Combinations ............................................................................... @@ -262,6 +262,8 @@ See Also ------------------------------------------------------------------------------- * :doc:`sampledata` +* `Boost: DAG shortest paths + `__ * https://en.wikipedia.org/wiki/Topological_sorting .. rubric:: Indices and tables diff --git a/doc/dijkstra/dijkstra-family.rst b/doc/dijkstra/dijkstra-family.rst index f90c0a5eb5..b7582a3185 100644 --- a/doc/dijkstra/dijkstra-family.rst +++ b/doc/dijkstra/dijkstra-family.rst @@ -7,13 +7,14 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: Dijkstra Family +| Dijkstra - Family of functions =============================================================================== -.. index from here +.. official-start * :doc:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths. * :doc:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths. @@ -23,22 +24,20 @@ Dijkstra - Family of functions * :doc:`pgr_KSP` - Use Yen algorithm with pgr_dijkstra to get the K shortest paths. -.. index to here - -.. rubric:: Proposed +.. official-end .. include:: proposed.rst - :start-after: stable-begin-warning - :end-before: stable-end-warning + :start-after: warning-begin + :end-before: end-warning -.. index proposed from here +.. proposed-start -* :doc:`pgr_dijkstraVia` - Get a route of a seuence of vertices. +* :doc:`pgr_dijkstraVia` - Get a route of a sequence of vertices. * :doc:`pgr_dijkstraNear` - Get the route to the nearest vertex. * :doc:`pgr_dijkstraNearCost` - Get the cost to the nearest vertex. -.. index proposed to here +.. proposed-end .. toctree:: :hidden: @@ -191,7 +190,7 @@ The graphs are defined as follows: .. rubric:: Directed graph -The weighted directed graph, :math:`G_d(V,E)`, is definied by: +The weighted directed graph, :math:`G_d(V,E)`, is defined by: * the set of vertices :math:`V` @@ -210,7 +209,7 @@ The weighted directed graph, :math:`G_d(V,E)`, is definied by: .. rubric:: Undirected graph -The weighted undirected graph, :math:`G_u(V,E)`, is definied by: +The weighted undirected graph, :math:`G_u(V,E)`, is defined by: * the set of vertices :math:`V` diff --git a/doc/dijkstra/pgr_dijkstra.rst b/doc/dijkstra/pgr_dijkstra.rst index a436670035..997c06bec2 100644 --- a/doc/dijkstra/pgr_dijkstra.rst +++ b/doc/dijkstra/pgr_dijkstra.rst @@ -7,54 +7,57 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Dijkstra Family ; pgr_dijkstra + single: Shortest Path Category ; pgr_dijkstra + single: dijkstra +| ``pgr_dijkstra`` =============================================================================== ``pgr_dijkstra`` — Shortest path using Dijkstra algorithm. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/dijkstra_shortest_paths.html +.. rubric:: Availability - Boost Graph Inside +* Version 4.0.0 -.. rubric:: Availability + * Combinations signature promoted to official. * Version 3.5.0 * Standarizing output columns to |short-generic-result| - * ``pgr_dijkstra`` (`One to One`_) added ``start_vid`` and ``end_vid`` columns. - * ``pgr_dijkstra`` (`One to Many`_) added ``end_vid`` column. - * ``pgr_dijkstra`` (`Many to One`_) added ``start_vid`` column. + * pgr_dijkstra(One to One) added ``start_vid`` and ``end_vid`` columns. + * pgr_dijkstra(One to Many) added ``end_vid`` column. + * pgr_dijkstra(Many to One) added ``start_vid`` column. * Version 3.1.0 - * New **Proposed** functions: + * New proposed signature: - * ``pgr_dijkstra`` (`Combinations`_) + * pgr_dijkstra(Combinations) * Version 3.0.0 - * **Official** functions + * Function promoted to official. * Version 2.2.0 - * New **proposed** functions: + * New proposed signatures: - * ``pgr_dijkstra`` (`One to Many`_) - * ``pgr_dijkstra`` (`Many to One`_) - * ``pgr_dijkstra`` (`Many to Many`_) + * pgr_dijkstra(One to Many) + * pgr_dijkstra(Many to One) + * pgr_dijkstra(Many to Many) * Version 2.1.0 - * Signature change on ``pgr_dijkstra`` (`One to One`_) + * Signature change on pgr_dijkstra(One to One) * Version 2.0.0 - * **Official** ``pgr_dijkstra`` (`One to One`_) + * Official function. Description @@ -68,6 +71,7 @@ Description :start-after: dijkstra_details_start :end-before: dijkstra_details_end +|Boost| Boost Graph Inside Signatures ------------------------------------------------------------------------------- @@ -93,7 +97,7 @@ Signatures the new result columns. .. index:: - single: dijkstra(One to One) + single: dijkstra ; One to One One to One ............................................................................... @@ -113,7 +117,7 @@ One to One :end-before: -- q3 .. index:: - single: dijkstra(One to Many) + single: dijkstra ; One to Many One to Many ............................................................................... @@ -133,7 +137,7 @@ One to Many :end-before: -- q4 .. index:: - single: dijkstra(Many to One) + single: dijkstra ; Many to One Many to One ............................................................................... @@ -154,7 +158,7 @@ Many to One :end-before: -- q5 .. index:: - single: dijkstra(Many to Many) + single: dijkstra ; Many to Many Many to Many ............................................................................... @@ -175,7 +179,7 @@ Many to Many :end-before: -- q51 .. index:: - single: dijkstra(Combinations) - Proposed on v3.1 + single: dijkstra ; Combinations Combinations ............................................................................... @@ -599,8 +603,10 @@ The following examples find the path for :math:`\{6\}\rightarrow\{10\}` See Also ------------------------------------------------------------------------------- +* :doc:`sampledata` +* `Boost: Dijkstra shortest paths + `__ * https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm -* The queries use the :doc:`sampledata` network. .. rubric:: Indices and tables diff --git a/doc/dijkstra/pgr_dijkstraCost.rst b/doc/dijkstra/pgr_dijkstraCost.rst index 96265e27f9..331471478f 100644 --- a/doc/dijkstra/pgr_dijkstraCost.rst +++ b/doc/dijkstra/pgr_dijkstraCost.rst @@ -7,9 +7,13 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Dijkstra Family ; pgr_dijkstraCost + single: Cost Category ; pgr_dijkstraCost + single: dijkstraCost +| ``pgr_dijkstraCost`` =============================================================================== @@ -17,22 +21,21 @@ ``pgr_dijkstraCost`` - Total cost of the shortest path using Dijkstra algorithm. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/dijkstra_shortest_paths.html +.. rubric:: Availability - Boost Graph Inside +* Version 4.0.0 -.. rubric:: Availability + * Combinations signature promoted to official. * Version 3.1.0 - * New **proposed** signature: + * New proposed signature: - * ``pgr_dijkstraCost`` (`Combinations`_) + * pgr_dijkstraCost(Combinations) * Version 2.2.0 - * New **Official** function + * Official function. Description @@ -53,6 +56,8 @@ using Dijkstra Algorithm. :start-after: cost_traits_start :end-before: cost_traits_end +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- @@ -71,7 +76,7 @@ Signatures | OR EMPTY SET .. index:: - single: dijkstraCost(One to One) + single: dijkstraCost ; One to One One to One ............................................................................... @@ -91,7 +96,7 @@ One to One :end-before: -- q3 .. index:: - single: dijkstraCost(One to Many) + single: dijkstraCost ; One to Many One to Many ............................................................................... @@ -112,7 +117,7 @@ One to Many :end-before: -- q4 .. index:: - single: dijkstraCost(Many to One) + single: dijkstraCost ; Many to One Many to One ............................................................................... @@ -133,7 +138,7 @@ Many to One :end-before: -- q5 .. index:: - single: dijkstraCost(Many to Many) + single: dijkstraCost ; Many to Many Many to Many ............................................................................... @@ -154,7 +159,7 @@ Many to Many :end-before: -- q51 .. index:: - single: dijkstraCost(Combinations) - Proposed on v3.1 + single: dijkstraCost ; Combinations Combinations ............................................................................... @@ -245,6 +250,8 @@ See Also * :doc:`dijkstra-family` * :doc:`sampledata` +* `Boost: Dijkstra shortest paths + `__ * https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm .. rubric:: Indices and tables diff --git a/doc/dijkstra/pgr_dijkstraCostMatrix.rst b/doc/dijkstra/pgr_dijkstraCostMatrix.rst index 3ad97f1f70..89b42cbd21 100644 --- a/doc/dijkstra/pgr_dijkstraCostMatrix.rst +++ b/doc/dijkstra/pgr_dijkstraCostMatrix.rst @@ -7,28 +7,27 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Dijkstra Family ; pgr_dijkstraCostMatrix + single: Cost Matrix Category ; pgr_dijkstraCostMatrix + single: dijkstraCostMatrix +| ``pgr_dijkstraCostMatrix`` =============================================================================== ``pgr_dijkstraCostMatrix`` - Calculates a cost matrix using :doc:`pgr_dijkstra`. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/table_of_contents.html - - Boost Graph Inside - .. rubric:: Availability * Version 3.0.0 - * **Official** function + * Function promoted to official. * Version 2.3.0 - * New **proposed** function + * New proposed function. Description ------------------------------------------------------------------------------- @@ -43,8 +42,7 @@ Using Dijkstra algorithm, calculate and return a cost matrix. :start-after: costMatrix_details_start :end-before: costMatrix_details_end -.. index:: - single: dijkstraCostMatrix +|Boost| Boost Graph Inside Signatures ------------------------------------------------------------------------------- @@ -113,6 +111,8 @@ See Also * :doc:`costMatrix-category` * :doc:`TSP-family` * :doc:`sampledata` +* `Boost: Dijkstra shortest paths + `__ .. rubric:: Indices and tables diff --git a/doc/dijkstra/pgr_dijkstraNear.rst b/doc/dijkstra/pgr_dijkstraNear.rst index f1989f7412..5f7bd2186b 100644 --- a/doc/dijkstra/pgr_dijkstraNear.rst +++ b/doc/dijkstra/pgr_dijkstraNear.rst @@ -7,8 +7,12 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Dijkstra Family ; pgr_dijkstraNear - Proposed + single: Near Category ; pgr_dijkstraNear - Proposed + single: dijkstraNear - Proposed +| ``pgr_dijkstraNear`` - Proposed =============================================================================== @@ -17,23 +21,18 @@ the nearest vertex. .. include:: proposed.rst - :start-after: stable-begin-warning - :end-before: stable-end-warning - -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/table_of_contents.html - - Boost Graph Inside + :start-after: warning-begin + :end-before: end-warning .. rubric:: Availability * Version 3.3.0 - * Promoted to **proposed** function + * Function promoted to proposed. * Version 3.2.0 - * New **experimental** function + * New experimental function. Description @@ -74,6 +73,8 @@ Characteristics .. dijkstraNear characteristics end +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- @@ -93,7 +94,7 @@ Signatures | OR EMPTY SET .. index:: - single: dijkstraNear(One to Many) - Proposed on v3.3 + single: dijkstraNear - Proposed; One to Many - Proposed on v3.3 One to Many ............................................................................... @@ -126,7 +127,7 @@ One to Many The result shows that station at vertex :math:`11` is the nearest. .. index:: - single: dijkstraNear(Many to One) - Proposed on v3.3 + single: dijkstraNear - Proposed; Many to One - Proposed on v3.3 Many to One ............................................................................... @@ -157,7 +158,7 @@ The result shows that station at vertex :math:`10` is the nearest and the next best is :math:`11`. .. index:: - single: dijkstraNear(Many to Many) - Proposed on v3.3 + single: dijkstraNear - Proposed; Many to Many - Proposed on v3.3 Many to Many ............................................................................... @@ -193,7 +194,7 @@ the first subway line and at vertex :math:`10` of the second subway line. Only `one` route is returned because `global` is ``true`` and `cap` is ``1`` .. index:: - single: dijkstraNear(Combinations) - Proposed on v3.3 + single: dijkstraNear - Proposed; Combinations - Proposed on v3.3 Combinations ............................................................................... @@ -325,8 +326,9 @@ See Also * :doc:`dijkstra-family` * :doc:`pgr_dijkstraNearCost` -* :doc:`sampledata` network. -* boost: https://www.boost.org/libs/graph/doc/table_of_contents.html +* :doc:`sampledata` +* `Boost: Dijkstra shortest paths + `__ * Wikipedia: https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm .. rubric:: Indices and tables diff --git a/doc/dijkstra/pgr_dijkstraNearCost.rst b/doc/dijkstra/pgr_dijkstraNearCost.rst index 4327b8d4f7..34b4fa8b66 100644 --- a/doc/dijkstra/pgr_dijkstraNearCost.rst +++ b/doc/dijkstra/pgr_dijkstraNearCost.rst @@ -7,8 +7,14 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Dijkstra Family ; pgr_dijkstraNearCost - Proposed + single: Near Category ; pgr_dijkstraNearCost - Proposed + single: Cost Category ; pgr_dijkstraNearCost - Proposed + single: dijkstraNearCost - Proposed + +| ``pgr_dijkstraNearCost`` - Proposed =============================================================================== @@ -17,23 +23,18 @@ to the nearest vertex. .. include:: proposed.rst - :start-after: stable-begin-warning - :end-before: stable-end-warning - -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/table_of_contents.html - - Boost Graph Inside + :start-after: warning-begin + :end-before: end-warning .. rubric:: Availability * Version 3.3.0 - * Promoted to **proposed** function + * Function promoted to proposed. * Version 3.2.0 - * New **experimental** function + * New experimental function. Description @@ -49,6 +50,8 @@ Characteristics :start-after: dijkstraNear characteristics start :end-before: dijkstraNear characteristics end +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- @@ -68,7 +71,7 @@ Signatures | OR EMPTY SET .. index:: - single: dijkstraNearCost(One to Many) - Proposed on v3.3 + single: dijkstraNearCost - Proposed ; One to Many - Proposed on v3.3 One to Many ............................................................................... @@ -101,7 +104,7 @@ One to Many The result shows that station at vertex :math:`11` is the nearest. .. index:: - single: dijkstraNearCost(Many to One) - Proposed on v3.3 + single: dijkstraNearCost - Proposed ; Many to One - Proposed on v3.3 Many to One ............................................................................... @@ -132,7 +135,7 @@ The result shows that station at vertex :math:`10` is the nearest and the next best is :math:`11`. .. index:: - single: dijkstraNearCost(Many to Many) - Proposed on v3.3 + single: dijkstraNearCost - Proposed ; Many to Many - Proposed on v3.3 Many to Many ............................................................................... @@ -168,7 +171,7 @@ the first subway line and at vertex :math:`10` of the second subway line. Only `one` route is returned because `global` is ``true`` and `cap` is ``1`` .. index:: - single: dijkstraNearCost(Combinations) - Proposed on v3.3 + single: dijkstraNearCost - Proposed ; Combinations - Proposed on v3.3 Combinations ............................................................................... @@ -279,8 +282,9 @@ See Also * :doc:`dijkstra-family` * :doc:`pgr_dijkstraNear` -* :doc:`sampledata` network. -* boost: https://www.boost.org/libs/graph/doc/table_of_contents.html +* :doc:`sampledata` +* `Boost: Dijkstra shortest paths + `__ * Wikipedia: https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm .. rubric:: Indices and tables diff --git a/doc/dijkstra/pgr_dijkstraVia.rst b/doc/dijkstra/pgr_dijkstraVia.rst index 9a6b0f00e2..c410b5938c 100644 --- a/doc/dijkstra/pgr_dijkstraVia.rst +++ b/doc/dijkstra/pgr_dijkstraVia.rst @@ -7,8 +7,12 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Dijkstra Family ; pgr_dijkstraVia - Proposed + single: Via Category ; pgr_dijkstraVia - Proposed + single: dijkstraVia - Proposed +| ``pgr_dijkstraVia`` - Proposed =============================================================================== @@ -16,19 +20,14 @@ ``pgr_dijkstraVia`` — Route that goes through a list of vertices. .. include:: proposed.rst - :start-after: stable-begin-warning - :end-before: stable-end-warning - -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/table_of_contents.html - - Boost Graph Inside + :start-after: warning-begin + :end-before: end-warning .. rubric:: Availability * Version 2.2.0 - * New **proposed** function + * New proposed function. Description ------------------------------------------------------------------------------- @@ -40,11 +39,13 @@ shortest path between :math:`vertex_i` and :math:`vertex_{i+1}` for all :math:`i :Route: is a sequence of paths. :Path: is a section of the route. +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- .. index:: - single: dijkstraVia - Proposed on 2.2 + single: dijkstraVia - Proposed ; One Via - Proposed on 2.2 One Via ............................................................................... @@ -159,7 +160,9 @@ See Also * :doc:`via-category`. * :doc:`dijkstra-family`. -* :doc:`sampledata` network. +* :doc:`sampledata` +* `Boost: Dijkstra shortest paths + `__ * https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm .. rubric:: Indices and tables diff --git a/doc/dominator/pgr_lengauerTarjanDominatorTree.rst b/doc/dominator/pgr_lengauerTarjanDominatorTree.rst index cbdd2049ca..b32d04f5ce 100644 --- a/doc/dominator/pgr_lengauerTarjanDominatorTree.rst +++ b/doc/dominator/pgr_lengauerTarjanDominatorTree.rst @@ -7,29 +7,27 @@ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Miscellaneous Algorithms ; pgr_lengauerTarjanDominatorTree + single: lengauerTarjanDominatorTree - Experimental on v3.2 +| -pgr_lengauerTarjanDominatorTree -Experimental +``pgr_lengauerTarjanDominatorTree`` - Experimental =============================================================================== ``pgr_lengauerTarjanDominatorTree`` — Returns the immediate dominator of all vertices. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/lengauer_tarjan_dominator.htm - - Boost Graph Inside - .. include:: experimental.rst - :start-after: begin-warn-expr - :end-before: end-warn-expr + :start-after: warning-begin + :end-before: end-warning .. rubric:: Availability * Version 3.2.0 - * New **experimental** function + * New experimental function. Description @@ -46,6 +44,8 @@ The algorithm calculates the *immidiate dominator* of each vertex called - If the *root vertex* not present in the graph then it returns empty set. - Running time: :math:`O((V+E)log(V+E))` +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- @@ -60,9 +60,6 @@ Signatures | OR EMPTY SET -.. index:: - single: lengauerTarjanDominatorTree - Experimental on v3.2 - :Example: The dominator tree with root vertex :math:`5` @@ -117,7 +114,7 @@ See Also ------------------------------------------------------------------------------- * :doc:`sampledata` -* `Boost: Lengauer-Tarjan dominator tree algorithm +* `Boost: Lengauer-Tarjan dominator `__ * `Wikipedia: dominator tree `__ diff --git a/doc/driving_distance/CMakeLists.txt b/doc/driving_distance/CMakeLists.txt index 21952a669a..26b87d7797 100644 --- a/doc/driving_distance/CMakeLists.txt +++ b/doc/driving_distance/CMakeLists.txt @@ -1,6 +1,5 @@ SET(LOCAL_FILES - drivingDistance-category.rst pgr_drivingDistance.rst ) diff --git a/doc/driving_distance/pgr_drivingDistance.rst b/doc/driving_distance/pgr_drivingDistance.rst index e8ca25e24f..437e35765f 100644 --- a/doc/driving_distance/pgr_drivingDistance.rst +++ b/doc/driving_distance/pgr_drivingDistance.rst @@ -7,42 +7,45 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Driving Distance Category ; pgr_drivingDistance + single: drivingDistance +| ``pgr_drivingDistance`` =============================================================================== ``pgr_drivingDistance`` - Returns the driving distance from a start node. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/table_of_contents.html - - Boost Graph Inside - .. rubric:: Availability .. rubric:: Version 3.6.0 * Standarizing output columns to |result-spantree| - * ``pgr_drivingdistance`` (Single vertex) + * pgr_drivingDistance(Single vertex) * Added ``depth`` and ``start_vid`` result columns. - * ``pgr_drivingdistance`` (Multiple vertices) + * pgr_drivingDistance(Multiple vertices) * Result column name change: ``from_v`` to ``start_vid``. * Added ``depth`` and ``pred`` result columns. .. rubric:: Version 2.1.0 -* Signature change pgr_drivingDistance(single vertex) -* New **Official** pgr_drivingDistance(multiple vertices) +* Signature change: + + * pgr_drivingDistance(single vertex) + +* New official signature: + + * pgr_drivingDistance(multiple vertices) .. rubric:: Version 2.0.0 -* Official:: pgr_drivingDistance(single vertex) +* Official function. Description @@ -52,6 +55,8 @@ Using the Dijkstra algorithm, extracts all the nodes that have costs less than or equal to the value ``distance``. The edges extracted will conform to the corresponding spaning tree. +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- @@ -65,7 +70,7 @@ Signatures | Returns set of |result-spantree| .. index:: - single: drivingDistance(Single vertex) + single: drivingDistance ; Single vertex Single Vertex ............................................................................... @@ -84,7 +89,7 @@ Single Vertex :end-before: --q6 .. index:: - single: drivingDistance(Multiple vertices) + single: drivingDistance ; Multiple vertices Multiple Vertices ............................................................................... @@ -173,7 +178,7 @@ See Also ------------------------------------------------------------------------------- * :doc:`pgr_alphaShape` - Alpha shape computation -* :doc:`sampledata` network. +* :doc:`sampledata` .. rubric:: Indices and tables diff --git a/doc/ksp/CMakeLists.txt b/doc/ksp/CMakeLists.txt index e1c7150a2a..8e15236a2d 100644 --- a/doc/ksp/CMakeLists.txt +++ b/doc/ksp/CMakeLists.txt @@ -1,6 +1,5 @@ SET(LOCAL_FILES - KSP-category.rst pgr_KSP.rst ) diff --git a/doc/ksp/pgr_KSP.rst b/doc/ksp/pgr_KSP.rst index e0d7dd5f3f..bb6bd76910 100644 --- a/doc/ksp/pgr_KSP.rst +++ b/doc/ksp/pgr_KSP.rst @@ -7,35 +7,36 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: K Shortest Paths Category ; pgr_KSP + single: KSP +| -pgr_KSP +``pgr_KSP`` =============================================================================== ``pgr_KSP`` — Yen's algorithm for K shortest paths using Dijkstra. +.. rubric:: Availability -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/table_of_contents.html - - Boost Graph Inside +* Version 4.0.0 -.. rubric:: Availability + * All signatures promoted to official. .. rubric:: Version 3.6.0 * Result columns standarized to: |nksp-result| -* ``pgr_ksp`` (One to One) +* pgr_ksp(One to One) * Added ``start_vid`` and ``end_vid`` result columns. -* New overload functions: +* New proposed signatures: - * ``pgr_ksp`` (One to Many) - * ``pgr_ksp`` (Many to One) - * ``pgr_ksp`` (Many to Many) - * ``pgr_ksp`` (Combinations) + * pgr_ksp(One to Many) + * pgr_ksp(Many to One) + * pgr_ksp(Many to Many) + * pgr_ksp(Combinations) .. rubric:: Version 2.1.0 @@ -45,7 +46,7 @@ pgr_KSP .. rubric:: Version 2.0.0 -* **Official** function +* Official function. Description @@ -54,6 +55,8 @@ Description The K shortest path routing algorithm based on Yen's algorithm. "K" is the number of shortest paths desired. +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- @@ -73,7 +76,7 @@ Signatures | OR EMPTY SET .. index:: - single: ksp(One to One) + single: KSP ; One to One One to One ............................................................................... @@ -94,7 +97,7 @@ One to One :end-before: --q2 .. index:: - single: ksp(One to Many) + single: KSP ; One to Many One to Many ............................................................................... @@ -115,7 +118,7 @@ One to Many :end-before: --q3 .. index:: - single: ksp(Many to One) + single: KSP ; Many to One Many to One ............................................................................... @@ -136,7 +139,7 @@ Many to One :end-before: --q4 .. index:: - single: ksp(Many to Many) + single: KSP ; Many to Many Many to Many ............................................................................... @@ -157,7 +160,7 @@ Many to Many :end-before: --q5 .. index:: - single: ksp(Combinations) + single: KSP ; Combinations Combinations ............................................................................... diff --git a/doc/lineGraph/pgr_lineGraph.rst b/doc/lineGraph/pgr_lineGraph.rst index 8d64d93e98..dfe3f581b8 100644 --- a/doc/lineGraph/pgr_lineGraph.rst +++ b/doc/lineGraph/pgr_lineGraph.rst @@ -7,34 +7,32 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Transformation Family ; pgr_lineGraph + single: lineGraph - Proposed on v3.7 +| -pgr_lineGraph - Proposed +``pgr_lineGraph`` - Proposed =============================================================================== ``pgr_lineGraph`` — Transforms the given graph into its corresponding edge-based graph. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/dijkstra_shortest_paths.html - - Boost Graph Inside - .. include:: proposed.rst - :start-after: stable-begin-warning - :end-before: stable-end-warning + :start-after: warning-begin + :end-before: end-warning .. rubric:: Availability * Version 3.7.0 - * Promoted to **proposed** signature. + * Function promoted to proposed. * Works for directed and undirected graphs. * Version 2.5.0 - * New **Experimental** function + * New experimental function. Description @@ -60,8 +58,7 @@ Given a graph :math:`G`, its line graph :math:`L(G)` is a graph such that: - The ``reverse_cost`` is always :math:`-1`. -.. index:: - single: lineGraph - Proposed on v3.7 +|Boost| Boost Graph Inside Signatures ------------------------------------------------------------------------------- diff --git a/doc/lineGraph/pgr_lineGraphFull.rst b/doc/lineGraph/pgr_lineGraphFull.rst index aecceeb83f..3d98206e81 100644 --- a/doc/lineGraph/pgr_lineGraphFull.rst +++ b/doc/lineGraph/pgr_lineGraphFull.rst @@ -7,8 +7,11 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Transformation Family ; pgr_lineGraphFull + single: lineGraphFull - Experimental on v2.6 +| ``pgr_lineGraphFull`` - Experimental =============================================================================== @@ -17,14 +20,14 @@ the vertices from the original graph are converted to line graphs. .. include:: experimental.rst - :start-after: begin-warn-expr - :end-before: end-warn-expr + :start-after: warning-begin + :end-before: end-warning .. rubric:: Availability * Version 2.6.0 - * New **Experimental** function + * New experimental function. Description @@ -54,8 +57,7 @@ The main characteristics are: - Results are undefined when a duplicated edge id is used in the input graph. - Running time: TBD -.. index:: - single: lineGraphFull - Experimental on v2.6 +|Boost| Boost Graph Inside Signatures ------------------------------------------------------------------------------- @@ -141,9 +143,9 @@ Additional Examples .. contents:: :local: -The examples of this section are based on the :doc:`sampledata` network. -The examples include the subgraph including edges 4, 7, 8, and 10 with -``reverse_cost``. +* The examples of this section are based on the :doc:`sampledata` network. +* The examples include the subgraph including edges 4, 7, 8, and 10 with + ``reverse_cost``. The data ............................................................................... diff --git a/doc/lineGraph/transformation-family.rst b/doc/lineGraph/transformation-family.rst index 393329caca..18e123702e 100644 --- a/doc/lineGraph/transformation-family.rst +++ b/doc/lineGraph/transformation-family.rst @@ -8,30 +8,33 @@ **************************************************************************** +.. index:: Transformation Family + +| Transformation - Family of functions =============================================================================== .. include:: proposed.rst - :start-after: stable-begin-warning - :end-before: stable-end-warning + :start-after: warning-begin + :end-before: end-warning -.. index proposed from here +.. proposed-start * :doc:`pgr_lineGraph` - Transformation algorithm for generating a Line Graph. -.. index proposed to here +.. proposed-end .. include:: experimental.rst - :start-after: begin-warn-expr - :end-before: end-warn-expr + :start-after: warning-begin + :end-before: end-warning -.. index experimental from here +.. experimental-start * :doc:`pgr_lineGraphFull` - Transformation algorithm for generating a Line Graph out of each vertex in the input graph. -.. index experimental to here +.. experimental-end .. toctree:: diff --git a/doc/max_flow/flow-family.rst b/doc/max_flow/flow-family.rst index b2ce974d73..2e2b782c5b 100644 --- a/doc/max_flow/flow-family.rst +++ b/doc/max_flow/flow-family.rst @@ -7,13 +7,14 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: Flow Family +| Flow - Family of functions =================================== -.. index from here +.. official-start * :doc:`pgr_maxFlow` - Only the Max flow calculation using Push and Relabel algorithm. @@ -30,20 +31,18 @@ Flow - Family of functions * :doc:`pgr_maxCardinalityMatch` - Calculates a maximum cardinality matching in a graph. -.. index to here - -.. rubric:: Experimental +.. official-end .. include:: experimental.rst - :start-after: begin-warn-expr - :end-before: end-warn-expr + :start-after: warning-begin + :end-before: end-warning -.. index experimental from here +.. experimental-start * :doc:`pgr_maxFlowMinCost` - Details of flow and cost on edges. * :doc:`pgr_maxFlowMinCost_Cost` - Only the Min Cost calculation. -.. index experimental to here +.. experimental-end .. toctree:: :hidden: @@ -70,7 +69,7 @@ Flow Functions General Information - When the maximum flow is 0 then there is no flow and **EMPTY SET** is returned. - - There is no flow when source has the same vaule as target. + - There is no flow when source has the same value as target. - Any duplicated values in source or target are ignored. - Calculates the flow/residual capacity for each edge. In the output diff --git a/doc/max_flow/pgr_boykovKolmogorov.rst b/doc/max_flow/pgr_boykovKolmogorov.rst index 99900409ab..76e875b03d 100644 --- a/doc/max_flow/pgr_boykovKolmogorov.rst +++ b/doc/max_flow/pgr_boykovKolmogorov.rst @@ -7,8 +7,11 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Flow Family ; pgr_boykovKolmogorov + single: boykovKolmogorov +| ``pgr_boykovKolmogorov`` =============================================================================== @@ -16,31 +19,30 @@ ``pgr_boykovKolmogorov`` — Calculates the flow on the graph edges that maximizes the flow from the sources to the targets using Boykov Kolmogorov algorithm. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/boykov_kolmogorov_max_flow.html +.. Rubric:: Availability - Boost Graph Inside +* Version 4.0.0 -.. Rubric:: Availability + * Combinations signature promoted to official. * Version 3.2.0 - * New **proposed** signature + * New proposed signature: - * ``pgr_boykovKolmogorov`` (`Combinations`_) + * pgr_boykovKolmogorov(Combinations) * Version 3.0.0 - * **Official** function + * Function promoted to official. * Version 2.5.0 * Renamed from ``pgr_maxFlowBoykovKolmogorov`` - * **Proposed** function + * Function promoted to proposed. * Version 2.3.0 - * New **Experimental** function + * New experimental function. Description @@ -52,6 +54,8 @@ Description * Running time: Polynomial +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- @@ -70,7 +74,7 @@ Signatures | OR EMPTY SET .. index:: - single: boykovKolmogorov(One to One) + single: boykovKolmogorov ; One to One One to One ............................................................................... @@ -90,7 +94,7 @@ One to One :end-before: -- q2 .. index:: - single: boykovKolmogorov(One to Many) + single: boykovKolmogorov ; One to Many One to Many ............................................................................... @@ -110,7 +114,7 @@ One to Many :end-before: -- q3 .. index:: - single: boykovKolmogorov(Many to One) + single: boykovKolmogorov ; Many to One Many to One ............................................................................... @@ -130,7 +134,7 @@ Many to One :end-before: -- q4 .. index:: - single: boykovKolmogorov(Many to Many) + single: boykovKolmogorov ; Many to Many Many to Many ............................................................................... @@ -150,7 +154,7 @@ Many to Many :end-before: -- q5 .. index:: - single: boykovKolmogorov(Combinations) - Proposed on v3.2 + single: boykovKolmogorov ; Combinations Combinations ............................................................................... @@ -226,7 +230,8 @@ See Also * :doc:`pgr_edmondsKarp` * :doc:`pgr_pushRelabel` -* https://www.boost.org/libs/graph/doc/boykov_kolmogorov_max_flow.html +* `Boost: Boykov Kolmogorov max flow + `__ .. rubric:: Indices and tables diff --git a/doc/max_flow/pgr_edgeDisjointPaths.rst b/doc/max_flow/pgr_edgeDisjointPaths.rst index 12e7ea1364..893c63732f 100644 --- a/doc/max_flow/pgr_edgeDisjointPaths.rst +++ b/doc/max_flow/pgr_edgeDisjointPaths.rst @@ -7,8 +7,11 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Flow Family ; pgr_edgeDisjointPaths + single: edgeDisjointPaths +| ``pgr_edgeDisjointPaths`` =============================================================================== @@ -17,30 +20,25 @@ vertices. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/boykov_kolmogorov_max_flow.html - - Boost Graph Inside - .. Rubric:: Availability * Version 3.2.0 - * New **proposed** function: + * New proposed signature: * pgr_edgeDisjointPaths(Combinations) * Version 3.0.0 - * **Official** function + * Function promoted to official. * Version 2.5.0 - * **Proposed** function + * Function promoted to proposed. * Version 2.3.0 - * New **Experimental** function + * New experimental function. Description @@ -55,6 +53,8 @@ The main characterics are: - The graph can be directed or undirected. - Uses :doc:`pgr_boykovKolmogorov` to calculate the paths. +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- @@ -73,7 +73,7 @@ Signatures | OR EMPTY SET .. index:: - single: edgeDisjointPaths(One to One) + single: edgeDisjointPaths ; One to One One to One ............................................................................... @@ -93,7 +93,7 @@ One to One :end-before: -- q2 .. index:: - single: edgeDisjointPaths(One to Many) + single: edgeDisjointPaths ; One to Many One to Many ............................................................................... @@ -114,7 +114,7 @@ One to Many :end-before: -- q3 .. index:: - single: edgeDisjointPaths(Many to One) + single: edgeDisjointPaths ; Many to One Many to One ............................................................................... @@ -134,7 +134,7 @@ Many to One :end-before: -- q4 .. index:: - single: edgeDisjointPaths(Many to Many) + single: edgeDisjointPaths ; Many to Many Many to Many ............................................................................... @@ -154,7 +154,7 @@ Many to Many :end-before: -- q5 .. index:: - single: edgeDisjointPaths(Combinations) -- Proposed on v3.2 + single: edgeDisjointPaths ; Combinations -- Proposed on v3.2 Combinations ............................................................................... @@ -234,6 +234,8 @@ See Also ------------------------------------------------------------------------------- * :doc:`flow-family` +* `Boost: Boykov Kolmogorov max flow + `__ .. rubric:: Indices and tables diff --git a/doc/max_flow/pgr_edmondsKarp.rst b/doc/max_flow/pgr_edmondsKarp.rst index d6eb81f362..e1b5e9e304 100644 --- a/doc/max_flow/pgr_edmondsKarp.rst +++ b/doc/max_flow/pgr_edmondsKarp.rst @@ -7,8 +7,11 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Flow Family ; pgr_edmondsKarp + single: edmondsKarp +| ``pgr_edmondsKarp`` =============================================================================== @@ -16,31 +19,30 @@ ``pgr_edmondsKarp`` — Calculates the flow on the graph edges that maximizes the flow from the sources to the targets using Edmonds Karp Algorithm. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/push_relabel_max_flow.html +.. Rubric:: Availability - Boost Graph Inside +* Version 4.0.0 -.. Rubric:: Availability + * Combinations signature promoted to official. * Version 3.2.0 - * New **proposed** signature + * New proposed signature: - * ``pgr_edmondsKarp`` (`Combinations`_) + * pgr_edmondsKarp(Combinations) * Version 3.0.0 - * **Official** function + * Function promoted to official. * Version 2.5.0 * Renamed from ``pgr_maxFlowEdmondsKarp`` - * **Proposed** function + * Function promoted to proposed. * Version 2.3.0 - * New **Experimental** function + * New experimental function. Description @@ -52,6 +54,8 @@ Description * Running time: :math:`O( V * E ^ 2)` +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- @@ -70,7 +74,7 @@ Signatures | OR EMPTY SET .. index:: - single: edmondsKarp(One to One) + single: edmondsKarp ; One to One One to One ............................................................................... @@ -90,7 +94,7 @@ One to One :end-before: -- q2 .. index:: - single: edmondsKarp(One to Many) + single: edmondsKarp ; One to Many One to Many ............................................................................... @@ -110,7 +114,7 @@ One to Many :end-before: -- q3 .. index:: - single: edmondsKarp(Many to One) + single: edmondsKarp ; Many to One Many to One ............................................................................... @@ -130,7 +134,7 @@ Many to One :end-before: -- q4 .. index:: - single: edmondsKarp(Many to Many) + single: edmondsKarp ; Many to Many Many to Many ............................................................................... @@ -150,7 +154,7 @@ Many to Many :end-before: -- q5 .. index:: - single: edmondsKarp(Combinations) - Proposed on v3.2 + single: edmondsKarp ; Combinations Combinations ............................................................................... @@ -226,7 +230,8 @@ See Also * :doc:`pgr_boykovKolmogorov` * :doc:`pgr_pushRelabel` -* https://www.boost.org/libs/graph/doc/edmonds_karp_max_flow.html +* `Boost: Edmonds Karp max flow + `__ * https://en.wikipedia.org/wiki/Edmonds%E2%80%93Karp_algorithm .. rubric:: Indices and tables diff --git a/doc/max_flow/pgr_maxCardinalityMatch.rst b/doc/max_flow/pgr_maxCardinalityMatch.rst index b27682342f..86aac8566e 100644 --- a/doc/max_flow/pgr_maxCardinalityMatch.rst +++ b/doc/max_flow/pgr_maxCardinalityMatch.rst @@ -7,20 +7,18 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Flow Family ; pgr_maxCardinalityMatch + single: maxCardinalityMatch +| -pgr_maxCardinalityMatch +``pgr_maxCardinalityMatch`` =============================================================================== ``pgr_maxCardinalityMatch`` — Calculates a maximum cardinality matching in a graph. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/maximum_matching.html - - Boost Graph Inside - .. Rubric:: Availability * Version 3.4.0 @@ -30,26 +28,26 @@ graph. * Works for undirected graphs. * New signature - * ``pgr_maxCardinalityMatch(text)`` returns only ``edge`` column. + * pgr_maxCardinalityMatch(text) returns only ``edge`` column. * Deprecated signature - * ``pgr_maxCardinalityMatch(text,boolean)`` + * pgr_maxCardinalityMatch(text,boolean) - * ``directed => false`` when used. + * directed => ``false`` when used. * Version 3.0.0 - * **Official** function + * Function promoted to official. * Version 2.5.0 * Renamed from ``pgr_maximumCardinalityMatching`` - * **Proposed** function + * Function promoted to proposed. * Version 2.3.0 - * New **Experimental** function + * New experimental function. Description @@ -72,6 +70,8 @@ The main characteristics are: .. _Ackermann function: https://en.wikipedia.org/wiki/Ackermann_function +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- @@ -159,7 +159,8 @@ See Also * :doc:`flow-family` * :doc:`migration` -* https://www.boost.org/libs/graph/doc/maximum_matching.html +* `Boost: maximum_matching + `__ * https://en.wikipedia.org/wiki/Matching_%28graph_theory%29 * https://en.wikipedia.org/wiki/Ackermann_function diff --git a/doc/max_flow/pgr_maxFlow.rst b/doc/max_flow/pgr_maxFlow.rst index 2428ff99fb..d5e3037424 100644 --- a/doc/max_flow/pgr_maxFlow.rst +++ b/doc/max_flow/pgr_maxFlow.rst @@ -7,8 +7,11 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Flow Family ; pgr_maxFlow + single: maxFlow +| ``pgr_maxFlow`` =============================================================================== @@ -16,26 +19,25 @@ ``pgr_maxFlow`` — Calculates the maximum flow in a directed graph from the source(s) to the targets(s) using the Push Relabel algorithm. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/push_relabel_max_flow.html +.. Rubric:: Availability - Boost Graph Inside +* Version 4.0.0 -.. Rubric:: Availability + * Combinations signature promoted to official. * Version 3.2.0 - * New **proposed** signature + * New proposed signature: - * ``pgr_maxFlow`` (`Combinations`_) + * pgr_maxFlow(Combinations) * Version 3.0.0 - * **Official** function + * Function promoted to official. * Version 2.4.0 - * New **Proposed** function + * New proposed function. Description @@ -54,6 +56,8 @@ Description * Running time: :math:`O( V ^ 3)` +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- @@ -71,7 +75,7 @@ Signatures | RETURNS ``BIGINT`` .. index:: - single: maxFlow(One to One) + single: maxFlow ; One to One One to One ............................................................................... @@ -90,7 +94,7 @@ One to One :end-before: -- q2 .. index:: - single: maxFlow(One to Many) + single: maxFlow ; One to Many One to Many ............................................................................... @@ -109,7 +113,7 @@ One to Many :end-before: -- q3 .. index:: - single: maxFlow(Many to One) + single: maxFlow ; Many to One Many to One ............................................................................... @@ -128,7 +132,7 @@ Many to One :end-before: -- q4 .. index:: - single: maxFlow(Many to Many) + single: maxFlow ; Many to Many Many to Many ............................................................................... @@ -147,7 +151,7 @@ Many to Many :end-before: -- q5 .. index:: - single: maxFlow(Combinations) - Proposed on v3.2 + single: maxFlow ; Combinations Combinations ............................................................................... @@ -223,7 +227,8 @@ See Also * :doc:`pgr_pushRelabel` -* https://www.boost.org/libs/graph/doc/push_relabel_max_flow.html +* `Boost: push relabel max flow + `__ * https://en.wikipedia.org/wiki/Push%E2%80%93relabel_maximum_flow_algorithm .. rubric:: Indices and tables diff --git a/doc/max_flow/pgr_maxFlowMinCost.rst b/doc/max_flow/pgr_maxFlowMinCost.rst index 031d016ac0..4c02e1871c 100644 --- a/doc/max_flow/pgr_maxFlowMinCost.rst +++ b/doc/max_flow/pgr_maxFlowMinCost.rst @@ -7,8 +7,11 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Flow Family ; pgr_maxFlowMinCost - Experimental + single: maxFlowMinCost - Experimental +| ``pgr_maxFlowMinCost`` - Experimental =============================================================================== @@ -16,31 +19,23 @@ ``pgr_maxFlowMinCost`` — Calculates the edges that minimizes the total cost of the maximum flow on a graph -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/push_relabel_max_flow.html - - Boost Graph Inside - -.. include:: experimental.rst - :start-after: begin-warn-expr - :end-before: end-warn-expr - .. rubric:: Availability * Version 3.2.0 - * New **experimental** function: + * New experimental signature: - * ``pgr_maxFlowMinCost`` (`Combinations`_) + * pgr_maxFlowMinCost(Combinations) * Version 3.0.0 -* New **experimental** function - + * New experimental function. Description ------------------------------------------------------------------------------- +|boost| graph inside. + .. include:: flow-family.rst :start-after: characteristics_start :end-before: characteristics_end @@ -57,6 +52,12 @@ Description * :math:`U` is upper bound on number of iterations. In many real world cases number of iterations is much smaller than :math:`U`. +.. include:: experimental.rst + :start-after: warning-begin + :end-before: end-warning + +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- @@ -75,7 +76,7 @@ Signatures | OR EMPTY SET .. index:: - single: maxFlowMinCost(One to One) - Experimental on v3.0 + single: maxFlowMinCost - Experimental ; One to One - Experimental on v3.0 One to One ............................................................................... @@ -95,7 +96,7 @@ One to One :end-before: -- q2 .. index:: - single: maxFlowMinCost(One to Many) - Experimental on v3.0 + single: maxFlowMinCost - Experimental ; One to Many - Experimental on v3.0 One to Many ............................................................................... @@ -115,7 +116,7 @@ One to Many :end-before: -- q3 .. index:: - single: maxFlowMinCost(Many to One) - Experimental on v3.0 + single: maxFlowMinCost - Experimental ; Many to One - Experimental on v3.0 Many to One ............................................................................... @@ -135,7 +136,7 @@ Many to One :end-before: -- q4 .. index:: - single: maxFlowMinCost(Many to Many) - Experimental on v3.0 + single: maxFlowMinCost - Experimental ; Many to Many - Experimental on v3.0 Many to Many ............................................................................... @@ -155,7 +156,7 @@ Many to Many :end-before: -- q5 .. index:: - single: maxFlowMinCost(Combinations) -- Experimental on v3.2 + single: maxFlowMinCost - Experimental ; Combinations -- Experimental on v3.2 Combinations ............................................................................... @@ -227,7 +228,8 @@ See Also ------------------------------------------------------------------------------- * :doc:`flow-family` -* https://www.boost.org/libs/graph/doc/successive_shortest_path_nonnegative_weights.html +* `Boost: push relabel max flow + `__ .. rubric:: Indices and tables diff --git a/doc/max_flow/pgr_maxFlowMinCost_Cost.rst b/doc/max_flow/pgr_maxFlowMinCost_Cost.rst index 7d39f4d45d..5de1974f93 100644 --- a/doc/max_flow/pgr_maxFlowMinCost_Cost.rst +++ b/doc/max_flow/pgr_maxFlowMinCost_Cost.rst @@ -7,8 +7,12 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Flow Family ; pgr_maxFlowMinCost_Cost - Experimental + single: Cost Category ; pgr_maxFlowMinCost_Cost - Experimental + single: maxFlowMinCost_Cost - Experimental +| ``pgr_maxFlowMinCost_Cost`` - Experimental =============================================================================== @@ -16,26 +20,17 @@ ``pgr_maxFlowMinCost_Cost`` — Calculates the minimum total cost of the maximum flow on a graph -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/push_relabel_max_flow.html - - Boost Graph Inside - -.. include:: experimental.rst - :start-after: begin-warn-expr - :end-before: end-warn-expr - .. rubric:: Availability * Version 3.2.0 - * New **experimental** function: + * New experimental signature: - * ``pgr_maxFlowMinCost_Cost`` (`Combinations`_) + * pgr_maxFlowMinCost_Cost(Combinations) * Version 3.0.0 - * New **experimental** function + * New experimental function. Description @@ -62,6 +57,12 @@ Description * :math:`U` is upper bound on number of iterations. In many real world cases number of iterations is much smaller than :math:`U`. +.. include:: experimental.rst + :start-after: warning-begin + :end-before: end-warning + +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- @@ -79,7 +80,7 @@ Signatures | RETURNS FLOAT .. index:: - single: maxFlowMinCost_Cost(One to One) - Experimental on v3.0 + single: maxFlowMinCost_Cost - Experimental ; One to One - Experimental on v3.0 One to One ............................................................................... @@ -98,7 +99,7 @@ One to One :end-before: -- q2 .. index:: - single: maxFlowMinCost_Cost(One to Many) - Experimental on v3.0 + single: maxFlowMinCost_Cost - Experimental ; One to Many - Experimental on v3.0 One to Many ............................................................................... @@ -117,7 +118,7 @@ One to Many :end-before: -- q4 .. index:: - single: maxFlowMinCost_Cost(Many to One) - Experimental on v3.0 + single: maxFlowMinCost_Cost - Experimental ; Many to One - Experimental on v3.0 Many to One ............................................................................... @@ -136,7 +137,7 @@ Many to One :end-before: -- q3 .. index:: - single: maxFlowMinCost_Cost(Many to Many) - Experimental on v3.0 + single: maxFlowMinCost_Cost - Experimental ; Many to Many - Experimental on v3.0 Many to Many ............................................................................... @@ -156,7 +157,7 @@ Many to Many :end-before: -- q5 .. index:: - single: maxFlowMinCost_Cost(Combinations) - Experimental on v3.2 + single: maxFlowMinCost_Cost - Experimental ; Combinations - Experimental on v3.2 Combinations ............................................................................... @@ -229,7 +230,8 @@ See Also ------------------------------------------------------------------------------- * :doc:`flow-family` -* https://www.boost.org/libs/graph/doc/successive_shortest_path_nonnegative_weights.html +* `Boost: push relabel max flow + `__ .. rubric:: Indices and tables diff --git a/doc/max_flow/pgr_pushRelabel.rst b/doc/max_flow/pgr_pushRelabel.rst index b1a8abc239..8b28166ece 100644 --- a/doc/max_flow/pgr_pushRelabel.rst +++ b/doc/max_flow/pgr_pushRelabel.rst @@ -7,8 +7,11 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Flow Family ; pgr_pushRelabel + single: pushRelabel +| ``pgr_pushRelabel`` =============================================================================== @@ -16,31 +19,30 @@ ``pgr_pushRelabel`` — Calculates the flow on the graph edges that maximizes the flow from the sources to the targets using Push Relabel Algorithm. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/push_relabel_max_flow.html +.. Rubric:: Availability - Boost Graph Inside +* Version 4.0.0 -.. Rubric:: Availability + * Combinations signature promoted to official. * Version 3.2.0 - * New **proposed** signature + * New proposed signature: - * ``pgr_pushRelabel`` (`Combinations`_) + * pgr_pushRelabel(Combinations) * Version 3.0.0 - * **Official** function + * Function promoted to official. * Version 2.5.0 * Renamed from ``pgr_maxFlowPushRelabel`` - * **Proposed** function + * Function promoted to proposed. * Version 2.3.0 - * New **Experimental** function + * New experimental function. Description @@ -52,6 +54,8 @@ Description * Running time: :math:`O( V ^ 3)` +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- @@ -70,7 +74,7 @@ Signatures | OR EMPTY SET .. index:: - single: pushRelabel(One to One) + single: pushRelabel ; One to One One to One ............................................................................... @@ -90,7 +94,7 @@ One to One :end-before: -- q2 .. index:: - single: pushRelabel(One to Many) + single: pushRelabel ; One to Many One to Many ............................................................................... @@ -110,7 +114,7 @@ One to Many :end-before: -- q3 .. index:: - single: pushRelabel(Many to One) + single: pushRelabel ; Many to One Many to One ............................................................................... @@ -130,7 +134,7 @@ Many to One :end-before: -- q4 .. index:: - single: pushRelabel(Many to Many) + single: pushRelabel ; Many to Many Many to Many ............................................................................... @@ -150,7 +154,7 @@ Many to Many :end-before: -- q5 .. index:: - single: pushRelabel(Combinations) - Proposed on v3.2 + single: pushRelabel ; Combinations Combinations ............................................................................... @@ -226,7 +230,8 @@ See Also * :doc:`pgr_boykovKolmogorov` * :doc:`pgr_edmondsKarp` -* https://www.boost.org/libs/graph/doc/push_relabel_max_flow.html +* `Boost: push relabel max flow + `__ * https://en.wikipedia.org/wiki/Push%E2%80%93relabel_maximum_flow_algorithm .. rubric:: Indices and tables diff --git a/doc/metrics/CMakeLists.txt b/doc/metrics/CMakeLists.txt index 5adba5a42a..d668b5a950 100644 --- a/doc/metrics/CMakeLists.txt +++ b/doc/metrics/CMakeLists.txt @@ -2,6 +2,7 @@ SET(LOCAL_FILES metrics-family.rst pgr_betweennessCentrality.rst + pgr_degree.rst ) foreach (f ${LOCAL_FILES}) diff --git a/doc/metrics/metrics-family.rst b/doc/metrics/metrics-family.rst index 66cacabdc6..5b5ec524d6 100644 --- a/doc/metrics/metrics-family.rst +++ b/doc/metrics/metrics-family.rst @@ -7,29 +7,38 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: Metrics Family +| Metrics - Family of functions =============================================================================== -.. rubric:: Experimental +.. official-start + +- :doc:`pgr_degree` - Returns a set of vertices and corresponding count of + incident edges to the vertex. + +.. official-end -.. include:: experimental.rst - :start-after: begin-warn-expr - :end-before: end-warn-expr +.. collapse:: Experimental -.. index experimental from here + .. include:: experimental.rst + :start-after: warning-begin + :end-before: end-warning -* :doc:`pgr_betweennessCentrality` - Calculates relative betweenness centrality using Brandes Algorithm +.. experimental-start -.. index experimental to here +* :doc:`pgr_betweennessCentrality` - Calculates relative betweenness centrality + using Brandes Algorithm +.. experimental-end .. toctree:: :hidden: + pgr_degree pgr_betweennessCentrality See Also diff --git a/doc/metrics/pgr_betweennessCentrality.rst b/doc/metrics/pgr_betweennessCentrality.rst index 5a92199a7d..ffee73eb18 100644 --- a/doc/metrics/pgr_betweennessCentrality.rst +++ b/doc/metrics/pgr_betweennessCentrality.rst @@ -7,27 +7,23 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Metrics Family ; pgr_betweennessCentrality - Experimental + single: betweennessCentrality - Experimental on v3.7 +| -``pgr_betweennessCentrality`` +``pgr_betweennessCentrality`` - Experimental =============================================================================== -``pgr_betweennessCentrality`` - Calculates the relative betweeness centrality +``pgr_betweennessCentrality`` - Calculates the relative betweenness centrality using Brandes Algorithm -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/doc/libs/1_84_0/libs/graph/doc/betweenness_centrality.html - - Boost Graph Inside - .. rubric:: Availability * Version 3.7.0 - * New **experimental** function: - - * ``pgr_betweennessCentrality`` + * New experimental function. Description ------------------------------------------------------------------------------- @@ -50,6 +46,8 @@ This implementation work for both directed and undirected graphs. - Running space: :math:`\Theta(VE)` - Throws when there are no edges in the graph +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- @@ -138,9 +136,9 @@ Result columns See Also ------------------------------------------------------------------------------- -* Boost's `betweenness_centrality - `_ -* Queries use the :doc:`sampledata` network. +* :doc:`sampledata` +* `Boost: betweenness centrality + `_ .. rubric:: Indices and tables diff --git a/doc/metrics/pgr_degree.rst b/doc/metrics/pgr_degree.rst new file mode 100644 index 0000000000..6bab5575d4 --- /dev/null +++ b/doc/metrics/pgr_degree.rst @@ -0,0 +1,383 @@ +.. + **************************************************************************** + pgRouting Manual + Copyright(c) pgRouting Contributors + + This documentation is licensed under a Creative Commons Attribution-Share + Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ + **************************************************************************** + +.. index:: + single: Metrics Family ; pgr_degree + single: degree + +| + +``pgr_degree`` +=============================================================================== + +``pgr_degree`` — For each vertex in an undirected graph, return the count of +edges incident to the vertex. + + +.. include:: proposed.rst + :start-after: warning-begin + :end-before: end-warning + +.. rubric:: Availability + +.. rubric:: Version 3.8.0 + +* Error messages adjustment. +* New signature with only Edges SQL. +* Function promoted to official. + +.. rubric:: Version 3.4.0 + +* New proposed function. + + +Description +------------------------------------------------------------------------------- + +Calculates the degree of the vertices of an undirected graph + +The degree (or valency) of a vertex of a graph is the number of edges that are +incident to the vertex. + +- Works for **undirected** graphs. +- A loop contributes 2 to a vertex's degree. +- A vertex with degree 0 is called an isolated vertex. + + - Isolated vertex is not part of the result + +- Vertex not participating on the subgraph is considered and isolated vertex. +- There can be a ``dryrun`` execution and the code used to get the answer will + be shown in a PostgreSQL ``NOTICE``. + + - The code can be used as base code for the particular application + requirements. + +- No ordering is performed. + +Signatures +------------------------------------------------------------------------------- + +.. admonition:: \ \ + :class: signatures + + | pgr_degree(`Edges SQL`_ , [``dryrun``]) + | pgr_degree(`Edges SQL`_ , `Vertex SQL`_, [``dryrun``]) + + | RETURNS SETOF |result-degree| + | OR EMPTY SET + +.. index:: + single: degree ; Edges and Vertices + +Edges +............................................................................... + +.. admonition:: \ \ + :class: signatures + + | pgr_degree(`Edges SQL`_ , [``dryrun``]) + + | RETURNS SETOF |result-degree| + | OR EMPTY SET + +:example: Get the degree of the vertices defined on the edges table + +.. literalinclude:: degree.queries + :start-after: -- q1 + :end-before: -- q2 + +Edges and Vertices +............................................................................... + +.. admonition:: \ \ + :class: signatures + + | pgr_degree(`Edges SQL`_ , `Vertex SQL`_, [``dryrun``]) + + | RETURNS SETOF |result-degree| + | OR EMPTY SET + +:Example: Extracting the vertex information + +``pgr_degree`` can use :doc:`pgr_extractVertices` embedded in the call. + +For decent size networks, it is best to prepare your vertices table before hand +and use it on ``pgr_degree`` calls. (See `Using a vertex table`_) + +Calculate the degree of the nodes: + +.. literalinclude:: degree.queries + :start-after: -- q2 + :end-before: -- q3 + +.. index:: + single: degree ; Edges + + +Parameters +------------------------------------------------------------------------------- + +============== ======== ================================ +Parameter Type Description +============== ======== ================================ +`Edges SQL`_ ``TEXT`` `Edges SQL`_ as described below +`Vertex SQL`_ ``TEXT`` `Vertex SQL`_ as described below +============== ======== ================================ + +Optional parameters +------------------------------------------------------------------------------- + +=========== ============= ========== ======================================= +Parameter Type Default Description +=========== ============= ========== ======================================= +``dryrun`` ``BOOLEAN`` ``false`` * When true do not process and get in a + NOTICE the resulting query. +=========== ============= ========== ======================================= + +Inner Queries +------------------------------------------------------------------------------- + +.. contents:: + :local: + +Edges SQL +............................................................................... + +.. rubric:: For the `Edges and Vertices`_ signature: + +.. list-table:: + :width: 81 + :widths: auto + :header-rows: 1 + + * - Column + - Type + - Description + * - ``id`` + - ``BIGINT`` + - Identifier of the edge. + +For the `Edges`_ signature: + +.. list-table:: + :width: 81 + :widths: auto + :header-rows: 1 + + * - Column + - Type + - Description + * - ``id`` + - ``BIGINT`` + - Identifier of the edge. + * - ``source`` + - ``BIGINT`` + - Identifier of the first end point vertex of the edge. + * - ``target`` + - ``BIGINT`` + - Identifier of the second end point vertex of the edge. + +Vertex SQL +............................................................................... + +.. rubric:: For the `Edges and Vertices`_ signature: + +.. list-table:: + :width: 81 + :widths: auto + :header-rows: 1 + + * - Column + - Type + - Description + * - ``id`` + - ``BIGINT`` + - Identifier of the first end point vertex of the edge. + * - ``in_edges`` + - ``BIGINT[]`` + - Array of identifiers of the edges that have the vertex ``id`` as *first + end point*. + + * When missing, ``out_edges`` must exist. + * - ``out_edges`` + - ``BIGINT[]`` + - Array of identifiers of the edges that have the vertex ``id`` as *second + end point*. + + * When missing, ``in_edges`` must exist. + + +Result columns +------------------------------------------------------------------------------- + +.. list-table:: + :width: 81 + :widths: auto + :header-rows: 1 + + * - Column + - Type + - Description + * - ``node`` + - ``BIGINT`` + - Vertex identifier + * - ``degree`` + - ``BIGINT`` + - Number of edges that are incident to the vertex ``id`` + +Additional Examples +------------------------------------------------------------------------------- + +.. contents:: + :local: + +Degree of a loop +............................................................................... + +A loop contributes 2 to a vertex's degree. + +.. graphviz:: + + graph G { + 2 [shape=circle;style=filled;color=green;fontsize=8;width=0.3;fixedsize=true]; + 2 -- 2 [label="1",fontsize=8]; + } + +.. rubric:: Using the `Edges`_ signature. + +.. literalinclude:: degree.queries + :start-after: -- q3 + :end-before: -- q4 + +.. rubric:: Using the `Edges and Vertices`_ signature. + +.. literalinclude:: degree.queries + :start-after: -- q4 + :end-before: -- q5 + +Degree of a sub graph +............................................................................... + +For the following is a subgraph of the :doc:`sampledata`: + +- :math:`E = \{(1, 5 \leftrightarrow 6), (1, 6 \leftrightarrow 10)\}` +- :math:`V = \{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17\}` + + +.. graphviz:: + + graph G { + 5,6,10 [shape=circle;style=filled;color=lightgreen;fontsize=8;width=0.3;fixedsize=true]; + 1,2,3,4,7,8,9,11,12,13,14,15,16,17 [shape=circle;style=filled;color=cyan;fontsize=8;width=0.3;fixedsize=true]; + + 5 -- 6 [label="1",fontsize=8]; + 10 -- 6 [label="2",fontsize=8]; + + 1 [pos="0,2!"]; + 2 [pos="0.5,3.5!"]; + 3 [pos="1,2!"]; + 4 [pos="2,3.5!"]; + 5 [pos="2,0!"]; + 6 [pos="2,1!"]; + 7 [pos="2,2!"]; + 8 [pos="2,3!"]; + 9 [pos="2,4!"]; + 10 [pos="3,1!"]; + 11 [pos="3,2!"]; + 12 [pos="3,3!"]; + 13 [pos="3.5,2.3!"]; + 14 [pos="3.5,4!"]; + 15 [pos="4,1!"]; + 16 [pos="4,2!"]; + 17 [pos="4,3!"]; + } + +The vertices not participating on the edge are considered isolated + +- their degree is 0 in the subgraph and +- their degree is not shown in the output. + +.. rubric:: Using the `Edges`_ signature. + +.. literalinclude:: degree.queries + :start-after: -- q5 + :end-before: -- q6 + +.. rubric:: Using the `Edges and Vertices`_ signature. + +.. literalinclude:: degree.queries + :start-after: -- q6 + :end-before: -- q7 + +Using a vertex table +............................................................................... + +For decent size networks, it is best to prepare your vertices table before hand +and use it on ``pgr_degree`` calls. + +Extract the vertex information and save into a table: + +.. literalinclude:: degree.queries + :start-after: -- q8 + :end-before: -- q9 + +Calculate the degree of the nodes: + +.. literalinclude:: degree.queries + :start-after: -- q9 + :end-before: -- q10 + +Dry run execution +............................................................................... + +To get the query generated used to get the vertex information, use ``dryrun => +true``. + +The results can be used as base code to make a refinement based on the backend +development needs. + +.. literalinclude:: degree.queries + :start-after: -- q10 + :end-before: -- q11 + +Finding dead ends +............................................................................... + +If there is a vertices table already built using ``pgr_extractVertices`` +and want the degree of the whole graph rather than a subset, it can be forgo using +``pgr_degree`` and work with the ``in_edges`` and ``out_edges`` columns +directly. + +The degree of a dead end is 1. + +.. include:: pgRouting-concepts.rst + :start-after: degree_from_table_start + :end-before: degree_from_table_end + +Finding linear vertices +............................................................................... + +The degree of a linear vertex is 2. + +If there is a vertices table already built using the ``pgr_extractVertices`` + +.. include:: pgRouting-concepts.rst + :start-after: linear_degree_from_table_start + :end-before: linear_degree_from_table_end + +See Also +------------------------------------------------------------------------------- + +* :doc:`topology-functions` +* :doc:`pgr_extractVertices` + +.. rubric:: Indices and tables + +* :ref:`genindex` +* :ref:`search` diff --git a/doc/mincut/pgr_stoerWagner.rst b/doc/mincut/pgr_stoerWagner.rst index a08d0630f3..aec41d25d3 100644 --- a/doc/mincut/pgr_stoerWagner.rst +++ b/doc/mincut/pgr_stoerWagner.rst @@ -7,27 +7,26 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** +.. index:: + single: Miscellaneous Algorithms ; pgr_stoerWagner + single: stoerWagner - Experimental on v3.0 +| -pgr_stoerWagner - Experimental +``pgr_stoerWagner`` - Experimental =============================================================================== ``pgr_stoerWagner`` — The min-cut of graph using stoerWagner algorithm. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/stoer_wagner_min_cut.html - - Boost Graph Inside - .. include:: experimental.rst - :start-after: begin-warn-expr - :end-before: end-warn-expr + :start-after: warning-begin + :end-before: end-warning .. rubric:: Availability * Version 3.0 - * New **Experimental** function + * New experimental function. Description @@ -66,12 +65,11 @@ weight on the cut determines whether it is a minimum cut. * Running time: :math:`O(V*E + V^2*log V)`. +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- -.. index:: - single: stoerWagner - Experimental on v3.0 - .. admonition:: \ \ :class: signatures @@ -136,6 +134,8 @@ See Also ------------------------------------------------------------------------------- * :doc:`sampledata` +* `Boost: Stoer Wagner min cut + `__ * https://en.wikipedia.org/wiki/Stoer%E2%80%93Wagner_algorithm .. rubric:: Indices and tables diff --git a/doc/ordering/CMakeLists.txt b/doc/ordering/CMakeLists.txt index 124b440c36..be5034c16e 100644 --- a/doc/ordering/CMakeLists.txt +++ b/doc/ordering/CMakeLists.txt @@ -1,6 +1,7 @@ SET(LOCAL_FILES ordering-family.rst pgr_cuthillMckeeOrdering.rst + pgr_topologicalSort.rst ) foreach (f ${LOCAL_FILES}) diff --git a/doc/ordering/ordering-family.rst b/doc/ordering/ordering-family.rst index f629e546a1..04cd2677b0 100644 --- a/doc/ordering/ordering-family.rst +++ b/doc/ordering/ordering-family.rst @@ -7,29 +7,31 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: Ordering Family +| Ordering - Family of functions =============================================================================== -.. rubric:: Experimental - .. include:: experimental.rst - :start-after: begin-warn-expr - :end-before: end-warn-expr + :start-after: warning-begin + :end-before: end-warning -.. index from here +.. official-start * :doc:`pgr_cuthillMckeeOrdering` - Return reverse Cuthill-McKee ordering of an undirected graph. +* :doc:`pgr_topologicalSort` - Linear ordering of the vertices for directed + acyclic graph. -.. index to here +.. official-end .. toctree:: :hidden: pgr_cuthillMckeeOrdering + pgr_topologicalSort See Also ------------------------------------------------------------------------------- diff --git a/doc/ordering/pgr_cuthillMckeeOrdering.rst b/doc/ordering/pgr_cuthillMckeeOrdering.rst index cdc878633c..a09ed6bbcf 100644 --- a/doc/ordering/pgr_cuthillMckeeOrdering.rst +++ b/doc/ordering/pgr_cuthillMckeeOrdering.rst @@ -7,8 +7,11 @@ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Ordering Family ; pgr_cuthillMckeeOrdering + single: pgr_cuthillMckeeOrdering +| ``pgr_cuthillMckeeOrdering`` - Experimental =============================================================================== @@ -16,20 +19,15 @@ ``pgr_cuthillMckeeOrdering`` — Returns the reverse Cuthill-Mckee ordering of an undirected graphs -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/cuthill_mckee_ordering.html - - Boost Graph Inside - .. include:: experimental.rst - :start-after: begin-warn-expr - :end-before: end-warn-exp + :start-after: warning-begin + :end-before: end-warning .. rubric:: Availability * Version 3.4.0 - * New **experimental** function + * New experimental function. Description @@ -52,6 +50,8 @@ each step, the adjacent vertices are placed in the queue in order of increasing - where :math:`|V|` is the number of vertices, - :math:`m` is the maximum degree of the vertices in the graph. +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------ @@ -106,7 +106,7 @@ Column Type Description See Also ------------------------------------------------------------------------------- -* The queries use the :doc:`sampledata` network. +* :doc:`sampledata` * `Boost: Cuthill-McKee Ordering `__ * `Wikipedia: Cuthill-McKee Ordering diff --git a/doc/topologicalSort/pgr_topologicalSort.rst b/doc/ordering/pgr_topologicalSort.rst similarity index 92% rename from doc/topologicalSort/pgr_topologicalSort.rst rename to doc/ordering/pgr_topologicalSort.rst index 3e4bddc70d..c65c30f534 100644 --- a/doc/topologicalSort/pgr_topologicalSort.rst +++ b/doc/ordering/pgr_topologicalSort.rst @@ -7,8 +7,11 @@ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Ordering Family ; pgr_topologicalSort + single: topologicalSort - Experimental on v3.0 +| ``pgr_topologicalSort`` - Experimental =============================================================================== @@ -16,20 +19,15 @@ ``pgr_topologicalSort`` — Linear ordering of the vertices for directed acyclic graphs (DAG). -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/topological_sort.html - - Boost Graph Inside - .. include:: experimental.rst - :start-after: begin-warn-expr - :end-before: end-warn-expr + :start-after: warning-begin + :end-before: end-warning .. rubric:: Availability * Version 3.0.0 - * New **experimental** function + * New experimental function. Description ------------------------------------------------------------------------------- @@ -50,15 +48,13 @@ The main characteristics are: * Running time: :math:`O(V + E)` +|Boost| Boost Graph Inside Signatures ------------------------------------------------------------------------------- .. rubric:: Summary -.. index:: - single: topologicalSort - Experimental on v3.0 - .. admonition:: \ \ :class: signatures @@ -129,6 +125,8 @@ See Also ------------------------------------------------------------------------------- * :doc:`sampledata` +* `Boost: topological sort + `__ * https://en.wikipedia.org/wiki/Topological_sorting .. rubric:: Indices and tables diff --git a/doc/pickDeliver/CMakeLists.txt b/doc/pickDeliver/CMakeLists.txt index babc6748cb..cfa9258a24 100644 --- a/doc/pickDeliver/CMakeLists.txt +++ b/doc/pickDeliver/CMakeLists.txt @@ -2,7 +2,7 @@ SET(LOCAL_FILES pgr_pickDeliverEuclidean.rst pgr_pickDeliver.rst - VRP-category.rst + pgr_vrpOneDepot.rst ) foreach (f ${LOCAL_FILES}) diff --git a/doc/pickDeliver/pgr_pickDeliver.rst b/doc/pickDeliver/pgr_pickDeliver.rst index 77dc4abb54..6981b0aaf4 100644 --- a/doc/pickDeliver/pgr_pickDeliver.rst +++ b/doc/pickDeliver/pgr_pickDeliver.rst @@ -7,8 +7,11 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Vehicle Routing Functions Category ; pgr_pickDeliver + single: pickDeliver - Experimental on v3.0 +| ``pgr_pickDeliver`` - Experimental =============================================================================== @@ -16,14 +19,14 @@ ``pgr_pickDeliver`` - Pickup and delivery Vehicle Routing Problem .. include:: experimental.rst - :start-after: begin-warn-expr - :end-before: end-warn-expr + :start-after: warning-begin + :end-before: end-warning .. rubric:: Availability * Version 3.0.0 - * New **experimental** function + * New experimental function. Synopsis @@ -70,9 +73,6 @@ Characteristics - Six different initial will be optimized - the best solution found will be result -.. index:: - single: pgr_pickDeliver - Experimental on v3.0 - Signature ------------------------------------------------------------------------------- diff --git a/doc/pickDeliver/pgr_pickDeliverEuclidean.rst b/doc/pickDeliver/pgr_pickDeliverEuclidean.rst index 4f0d491dfd..3b406c6ee1 100644 --- a/doc/pickDeliver/pgr_pickDeliverEuclidean.rst +++ b/doc/pickDeliver/pgr_pickDeliverEuclidean.rst @@ -7,8 +7,11 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Vehicle Routing Functions Category ; pgr_pickDeliverEuclidean + single: pickDeliverEuclidean - Experimental on 3.0 +| ``pgr_pickDeliverEuclidean`` - Experimental =============================================================================== @@ -16,15 +19,15 @@ ``pgr_pickDeliverEuclidean`` - Pickup and delivery Vehicle Routing Problem .. include:: experimental.rst - :start-after: begin-warn-expr - :end-before: end-warn-expr + :start-after: warning-begin + :end-before: end-warning .. rubric:: Availability * Version 3.0.0 * Replaces ``pgr_gsoc_vrppdtw`` - * New **experimental** function + * New experimental function. Synopsis @@ -70,11 +73,6 @@ Characteristics - the best solution found will be result - -.. index:: - single: pgr_pickDeliverEuclidean - Experimental on 3.0 - - Signature ------------------------------------------------------------------------------- @@ -202,7 +200,7 @@ See Also ------------------------------------------------------------------------------- * :doc:`VRP-category` -* The queries use the :doc:`sampledata` network. +* :doc:`sampledata` .. rubric:: Indices and tables diff --git a/doc/vrp_basic/pgr_vrpOneDepot.rst b/doc/pickDeliver/pgr_vrpOneDepot.rst similarity index 85% rename from doc/vrp_basic/pgr_vrpOneDepot.rst rename to doc/pickDeliver/pgr_vrpOneDepot.rst index 5dd273d67d..17e7e127fa 100644 --- a/doc/vrp_basic/pgr_vrpOneDepot.rst +++ b/doc/pickDeliver/pgr_vrpOneDepot.rst @@ -7,15 +7,18 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Vehicle Routing Functions Category ; pgr_vrpOneDepot + single: vrpOneDepot - Experimental on v2.1.0 +| -pgr_vrpOneDepot - Experimental +``pgr_vrpOneDepot`` - Experimental =============================================================================== .. include:: experimental.rst - :start-after: begin-warn-expr - :end-before: end-warn-expr + :start-after: warning-begin + :end-before: end-warning **No documentation available** @@ -23,7 +26,7 @@ pgr_vrpOneDepot - Experimental * Version 2.1.0 - * New **experimental** function + * New experimental function. * **TBD** diff --git a/doc/planar/pgr_isPlanar.rst b/doc/planar/pgr_isPlanar.rst index 25485a2955..8e1654a6bf 100644 --- a/doc/planar/pgr_isPlanar.rst +++ b/doc/planar/pgr_isPlanar.rst @@ -7,28 +7,26 @@ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Planar Family ; pgr_isPlanar + single: isPlanar - Experimental on v3.2 +| ``pgr_isPlanar`` - Experimental =============================================================================== ``pgr_isPlanar`` — Returns a boolean depending upon the planarity of the graph. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/boyer_myrvold.html - - Boost Graph Inside - .. include:: experimental.rst - :start-after: begin-warn-expr - :end-before: end-warn-expr + :start-after: warning-begin + :end-before: end-warning .. rubric:: Availability * Version 3.2.0 - * New **experimental** function + * New experimental function. Description @@ -49,14 +47,13 @@ The main characteristics are: * The algorithm does not considers traversal costs in the calculations. * Running time: :math:`O(|V|)` +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- .. rubric:: Summary -.. index:: - single: isPlanar - Experimental on v3.2 - .. admonition:: \ \ :class: signatures @@ -123,7 +120,8 @@ See Also ------------------------------------------------------------------------------- * :doc:`sampledata` -* https://www.boost.org/libs/graph/doc/boyer_myrvold.html +* `Boost: Boyer Myrvold + `__ .. rubric:: Indices and tables diff --git a/doc/spanningTree/CMakeLists.txt b/doc/spanningTree/CMakeLists.txt index 6d52dafb27..b209adcc44 100644 --- a/doc/spanningTree/CMakeLists.txt +++ b/doc/spanningTree/CMakeLists.txt @@ -1,7 +1,6 @@ SET(LOCAL_FILES #pgr_randomSpanTree.rst - spanningTree-family.rst kruskal-family.rst prim-family.rst pgr_kruskal.rst diff --git a/doc/spanningTree/kruskal-family.rst b/doc/spanningTree/kruskal-family.rst index 3c48495345..8b182ae71d 100644 --- a/doc/spanningTree/kruskal-family.rst +++ b/doc/spanningTree/kruskal-family.rst @@ -7,25 +7,23 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Spanning Tree Category ; Kruskal Family + single: Kruskal Family +| Kruskal - Family of functions =============================================================================== -.. index from here +.. official-start * :doc:`pgr_kruskal` * :doc:`pgr_kruskalBFS` * :doc:`pgr_kruskalDD` * :doc:`pgr_kruskalDFS` -.. index to here - -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/kruskal_min_spanning_tree.html - - Boost Graph Inside +.. official-end .. toctree:: :hidden: @@ -46,7 +44,7 @@ two trees in the forest. .. kruskal-description-start -.. include:: spanningTree-family.rst +.. include:: spanningTree-category.rst :start-after: spanntree_traits_start :end-before: spanntree_traits_end @@ -65,8 +63,9 @@ Inner Queries See Also ------------------------------------------------------------------------------- -* :doc:`spanningTree-family` +* :doc:`spanningTree-category` * `Boost: Kruskal's algorithm `__ +* `Boost: Prim's algorithm `__ * `Wikipedia: Kruskal's algorithm `__ .. rubric:: Indices and tables diff --git a/doc/spanningTree/pgr_kruskal.rst b/doc/spanningTree/pgr_kruskal.rst index 35f48b4a3d..f1f6094473 100644 --- a/doc/spanningTree/pgr_kruskal.rst +++ b/doc/spanningTree/pgr_kruskal.rst @@ -7,24 +7,23 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Kruskal Family ; pgr_kruskal + single: Spanning Tree Category ; pgr_kruskal + single: kruskal +| ``pgr_kruskal`` =============================================================================== ``pgr_kruskal`` — Minimum spanning tree of a graph using Kruskal's algorithm. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/kruskal_min_spanning_tree.html - - Boost Graph Inside - .. rubric:: Availability * Version 3.0.0 - * New **Official** function + * New official function. Description @@ -44,9 +43,6 @@ graph using Kruskal's algorithm. Signatures ------------------------------------------------------------------------------- -.. index:: - single: kruskal - .. rubric:: Summary .. admonition:: \ \ @@ -90,9 +86,9 @@ Result columns See Also ------------------------------------------------------------------------------- -* :doc:`spanningTree-family` +* :doc:`spanningTree-category` * :doc:`kruskal-family` -* The queries use the :doc:`sampledata` network. +* :doc:`sampledata` * `Boost: Kruskal's algorithm `__ * `Wikipedia: Kruskal's algorithm diff --git a/doc/spanningTree/pgr_kruskalBFS.rst b/doc/spanningTree/pgr_kruskalBFS.rst index 5fca24275e..6b7fe05e70 100644 --- a/doc/spanningTree/pgr_kruskalBFS.rst +++ b/doc/spanningTree/pgr_kruskalBFS.rst @@ -7,8 +7,13 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Kruskal Family ; pgr_kruskalBFS + single: Spanning Tree Category ; pgr_kruskalBFS + single: Breadth First Search Category ; pgr_kruskalBFS + single: kruskalBFS +| ``pgr_kruskalBFS`` =============================================================================== @@ -16,11 +21,6 @@ ``pgr_kruskalBFS`` — Kruskal's algorithm for Minimum Spanning Tree with breadth First Search ordering. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/kruskal_min_spanning_tree.html - - Boost Graph Inside - .. rubric:: Availability :Version 3.7.0: @@ -31,7 +31,7 @@ First Search ordering. :Version 3.0.0: - * New **Official** function + * New official function. Description ------------------------------------------------------------------------------- @@ -60,7 +60,7 @@ Signatures | Returns set of |result-spantree| .. index:: - single: kruskalBFS(Single vertex) + single: kruskalBFS ; Single vertex Single vertex ............................................................................... @@ -79,7 +79,7 @@ Single vertex :end-before: -- q2 .. index:: - single: kruskalBFS(Multiple vertices) + single: kruskalBFS ; Multiple vertices Multiple vertices ............................................................................... @@ -132,7 +132,7 @@ Result columns See Also ------------------------------------------------------------------------------- -* :doc:`spanningTree-family` +* :doc:`spanningTree-category` * :doc:`kruskal-family` * :doc:`sampledata` * `Boost: Kruskal's algorithm diff --git a/doc/spanningTree/pgr_kruskalDD.rst b/doc/spanningTree/pgr_kruskalDD.rst index 400206a976..48e712e464 100644 --- a/doc/spanningTree/pgr_kruskalDD.rst +++ b/doc/spanningTree/pgr_kruskalDD.rst @@ -7,19 +7,20 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Kruskal Family ; pgr_kruskalDD + single: Spanning Tree Category ; pgr_kruskalDD + single: Driving Distance Category ; pgr_kruskalDD + single: kruskalDD + +| ``pgr_kruskalDD`` =============================================================================== ``pgr_kruskalDD`` — Catchament nodes using Kruskal's algorithm. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/kruskal_min_spanning_tree.html - - Boost Graph Inside - .. rubric:: Availability :Version 3.7.0: @@ -30,7 +31,7 @@ :Version 3.0.0: - * New **Official** function + * New official function. Description ------------------------------------------------------------------------------- @@ -52,6 +53,8 @@ calculated minimum spanning tree. - Returned tree nodes from a root vertex are on Depth First Search order. - Depth First Search running time: :math:`O(E + V)` +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- @@ -64,7 +67,7 @@ Signatures | Returns set of |result-spantree| .. index:: - single: kruskalDD(Single vertex) + single: kruskalDD ; Single vertex Single vertex ............................................................................... @@ -84,7 +87,7 @@ Single vertex :end-before: -- q2 .. index:: - single: kruskalDD(Multiple vertices) + single: kruskalDD ; Multiple vertices Multiple vertices ............................................................................... @@ -130,7 +133,7 @@ Result columns See Also ------------------------------------------------------------------------------- -* :doc:`spanningTree-family` +* :doc:`spanningTree-category` * :doc:`kruskal-family` * :doc:`sampledata` * `Boost: Kruskal's algorithm diff --git a/doc/spanningTree/pgr_kruskalDFS.rst b/doc/spanningTree/pgr_kruskalDFS.rst index 616bb96e7e..5def6ca23c 100644 --- a/doc/spanningTree/pgr_kruskalDFS.rst +++ b/doc/spanningTree/pgr_kruskalDFS.rst @@ -7,8 +7,13 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Kruskal Family ; pgr_kruskalDFS + single: Spanning Tree Category ; pgr_kruskalDFS + single: Depth First Search Category ; pgr_kruskalBFS + single: kruskalDFS +| ``pgr_kruskalDFS`` =============================================================================== @@ -16,11 +21,6 @@ ``pgr_kruskalDFS`` — Kruskal's algorithm for Minimum Spanning Tree with Depth First Search ordering. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/kruskal_min_spanning_tree.html - - Boost Graph Inside - .. rubric:: Availability :Version 3.7.0: @@ -31,7 +31,7 @@ First Search ordering. :Version 3.0.0: - * New **Official** function + * New official function. Description @@ -49,6 +49,8 @@ of the Minimum Spanning Tree created using Kruskal's algorithm. - Returned tree nodes from a root vertex are on Depth First Search order - Depth First Search Running time: :math:`O(E + V)` +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- @@ -61,7 +63,7 @@ Signatures | Returns set of |result-spantree| .. index:: - single: kruskalDFS(Single vertex) + single: kruskalDFS ; Single vertex Single vertex ............................................................................... @@ -80,7 +82,7 @@ Single vertex :end-before: -- q2 .. index:: - single: kruskalDFS(Multiple vertices) + single: kruskalDFS ; Multiple vertices Multiple vertices ............................................................................... @@ -133,7 +135,7 @@ Result columns See Also ------------------------------------------------------------------------------- -* :doc:`spanningTree-family` +* :doc:`spanningTree-category` * :doc:`kruskal-family` * :doc:`sampledata` * `Boost: Kruskal's algorithm diff --git a/doc/spanningTree/pgr_prim.rst b/doc/spanningTree/pgr_prim.rst index 88f567cfef..1225000743 100644 --- a/doc/spanningTree/pgr_prim.rst +++ b/doc/spanningTree/pgr_prim.rst @@ -7,24 +7,23 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Prim Family ; pgr_prim + single: Spanning Tree Category ; pgr_prim + single: prim +| ``pgr_prim`` =============================================================================== ``pgr_prim`` — Minimum spanning forest of a graph using Prim's algorithm. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/prim_minimum_spanning_tree.html - - Boost Graph Inside - .. rubric:: Availability * Version 3.0.0 - * New **Official** function + * New official function. Description ------------------------------------------------------------------------------- @@ -40,13 +39,11 @@ graph using Prim's algorithm. - EMPTY SET is returned when there are no edges in the graph. +|Boost| Boost Graph Inside Signatures ------------------------------------------------------------------------------- -.. index:: - single: prim - .. rubric:: Summary .. admonition:: \ \ @@ -91,9 +88,9 @@ Result columns See Also ------------------------------------------------------------------------------- -* :doc:`spanningTree-family` +* :doc:`spanningTree-category` * :doc:`prim-family` -* The queries use the :doc:`sampledata` network. +* :doc:`sampledata` * `Boost: Prim's algorithm documentation `__ * `Wikipedia: Prim's algorithm diff --git a/doc/spanningTree/pgr_primBFS.rst b/doc/spanningTree/pgr_primBFS.rst index b5d799bcc1..3cf9c4cdb6 100644 --- a/doc/spanningTree/pgr_primBFS.rst +++ b/doc/spanningTree/pgr_primBFS.rst @@ -7,8 +7,13 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Prim Family ; pgr_primBFS + single: Spanning Tree Category ; pgr_primBFS + single: Breadth First Search Category ; pgr_primBFS + single: primBFS +| ``pgr_primBFS`` =============================================================================== @@ -16,11 +21,6 @@ ``pgr_primBFS`` — Prim's algorithm for Minimum Spanning Tree with Depth First Search ordering. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/prim_minimum_spanning_tree.html - - Boost Graph Inside - .. rubric:: Availability :Version 3.7.0: @@ -31,7 +31,7 @@ Search ordering. :Version 3.0.0: - * New **Official** function + * New official function. Description ------------------------------------------------------------------------------- @@ -48,6 +48,8 @@ of the Minimum Spanning Tree created using Prims's algorithm. - Returned tree nodes from a root vertex are on Breath First Search order - Breath First Search Running time: :math:`O(E + V)` +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- @@ -60,7 +62,7 @@ Signatures | Returns set of |result-spantree| .. index:: - single: primBFS(Single vertex) + single: primBFS ; Single vertex Single vertex ............................................................................... @@ -79,7 +81,7 @@ Single vertex :end-before: -- q2 .. index:: - single: primBFS(Multiple vertices) + single: primBFS ; Multiple vertices Multiple vertices ............................................................................... @@ -132,10 +134,10 @@ Result columns See Also ------------------------------------------------------------------------------- -* :doc:`spanningTree-family` +* :doc:`spanningTree-category` * :doc:`prim-family` * :doc:`sampledata` -* `Boost: Prim's algorithm documentation +* `Boost: Prim's algorithm `__ * `Wikipedia: Prim's algorithm `__ diff --git a/doc/spanningTree/pgr_primDD.rst b/doc/spanningTree/pgr_primDD.rst index 9e96b28727..a0196cc2b6 100644 --- a/doc/spanningTree/pgr_primDD.rst +++ b/doc/spanningTree/pgr_primDD.rst @@ -7,19 +7,19 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Prim Family ; pgr_primDD + single: Spanning Tree Category ; pgr_primDD + single: Driving Distance Category ; pgr_primDD + single: primDD +| ``pgr_primDD`` =============================================================================== ``pgr_primDD`` — Catchament nodes using Prim's algorithm. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/prim_minimum_spanning_tree.html - - Boost Graph Inside - .. rubric:: Availability .. rubric:: Version 3.7.0 @@ -30,7 +30,7 @@ .. rubric:: Version 3.0.0 -* New **Official** function +* New official function. Description ------------------------------------------------------------------------------- @@ -52,6 +52,8 @@ calculated minimum spanning tree. - Returned tree nodes from a root vertex are on Depth First Search order. - Depth First Search running time: :math:`O(E + V)` +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- @@ -64,7 +66,7 @@ Signatures | Returns set of |result-spantree| .. index:: - single: primDD(Single vertex) + single: primDD ; Single vertex Single vertex ............................................................................... @@ -84,7 +86,7 @@ Single vertex :end-before: -- q2 .. index:: - single: primDD(Multiple vertices) + single: primDD ; Multiple vertices Multiple vertices ............................................................................... @@ -130,10 +132,10 @@ Result columns See Also ------------------------------------------------------------------------------- -* :doc:`spanningTree-family` +* :doc:`spanningTree-category` * :doc:`prim-family` * :doc:`sampledata` -* `Boost: Prim's algorithm documentation +* `Boost: Prim's algorithm `__ * `Wikipedia: Prim's algorithm `__ diff --git a/doc/spanningTree/pgr_primDFS.rst b/doc/spanningTree/pgr_primDFS.rst index c2822fb88f..1b32d3b37e 100644 --- a/doc/spanningTree/pgr_primDFS.rst +++ b/doc/spanningTree/pgr_primDFS.rst @@ -7,8 +7,13 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Prim Family ; pgr_primDFS + single: Spanning Tree Category ; pgr_primDFS + single: Depth First Search Category ; pgr_primDFS + single: primDFS +| ``pgr_primDFS`` =============================================================================== @@ -16,11 +21,6 @@ ``pgr_primDFS`` — Prim algorithm for Minimum Spanning Tree with Depth First Search ordering. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/prim_minimum_spanning_tree.html - - Boost Graph Inside - .. rubric:: Availability :Version 3.7.0: @@ -31,7 +31,7 @@ Search ordering. :Version 3.0.0: - * New **Official** function + * New official function. Description ------------------------------------------------------------------------------- @@ -48,6 +48,8 @@ of the Minimum Spanning Tree created using Prims's algorithm. - Returned tree nodes from a root vertex are on Depth First Search order - Depth First Search Running time: :math:`O(E + V)` +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- @@ -60,7 +62,7 @@ Signatures | Returns set of |result-spantree| .. index:: - single: primDFS(Single vertex) + single: primDFS ; Single vertex Single vertex ............................................................................... @@ -79,7 +81,7 @@ Single vertex :end-before: -- q2 .. index:: - single: primDFS(Multiple vertices) + single: primDFS ; Multiple vertices Multiple vertices ............................................................................... @@ -132,10 +134,10 @@ Result columns See Also ------------------------------------------------------------------------------- -* :doc:`spanningTree-family` +* :doc:`spanningTree-category` * :doc:`prim-family` * :doc:`sampledata` -* `Boost: Prim's algorithm documentation +* `Boost: Prim's algorithm `__ * `Wikipedia: Prim's algorithm `__ diff --git a/doc/spanningTree/prim-family.rst b/doc/spanningTree/prim-family.rst index 5f9b25a0dc..229ed80fae 100644 --- a/doc/spanningTree/prim-family.rst +++ b/doc/spanningTree/prim-family.rst @@ -7,25 +7,23 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Spanning Tree Category ; Prim Family + single: Prim Family +| Prim - Family of functions =============================================================================== -.. index from here +.. official-start * :doc:`pgr_prim` * :doc:`pgr_primBFS` * :doc:`pgr_primDD` * :doc:`pgr_primDFS` -.. index to here - -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/prim_minimum_spanning_tree.html - - Boost Graph Inside +.. official-end .. toctree:: :hidden: @@ -57,7 +55,7 @@ forest. .. prim-description-start -.. include:: spanningTree-family.rst +.. include:: spanningTree-category.rst :start-after: spanntree_traits_start :end-before: spanntree_traits_end @@ -80,7 +78,7 @@ Inner Queries See Also ------------------------------------------------------------------------------- -* :doc:`spanningTree-family` +* :doc:`spanningTree-category` * Boost: `Prim's algorithm `__ * Wikipedia: `Prim's algorithm diff --git a/doc/src/CMakeLists.txt b/doc/src/CMakeLists.txt index fe7457a2d8..73890a5f0c 100644 --- a/doc/src/CMakeLists.txt +++ b/doc/src/CMakeLists.txt @@ -10,10 +10,6 @@ SET(LOCAL_FILES routingFunctions.rst sampledata.rst support.rst - cost-category.rst - costMatrix-category.rst - via-category.rst - withPoints-category.rst migration.rst ) diff --git a/doc/src/experimental.rst b/doc/src/experimental.rst index 6f054c9324..495c906dba 100644 --- a/doc/src/experimental.rst +++ b/doc/src/experimental.rst @@ -9,91 +9,92 @@ | - Experimental Functions =============================================================================== -.. begin-warn-expr +.. warning-begin + +.. collapse:: Experimental -.. warning:: Possible server crash + .. warning:: Possible server crash - - These functions might create a server crash + - These functions might create a server crash -.. warning:: Experimental functions + .. warning:: Experimental functions - - They are not officially of the current release. - - They likely will not be officially be part of the next release: + - They are not officially of the current release. + - They likely will not be officially be part of the next release: - - The functions might not make use of ANY-INTEGER and ANY-NUMERICAL - - Name might change. - - Signature might change. - - Functionality might change. - - pgTap tests might be missing. - - Might need c/c++ coding. - - May lack documentation. - - Documentation if any might need to be rewritten. - - Documentation examples might need to be automatically generated. - - Might need a lot of feedback from the comunity. - - Might depend on a proposed function of pgRouting - - Might depend on a deprecated function of pgRouting + - The functions might not make use of ANY-INTEGER and ANY-NUMERICAL + - Name might change. + - Signature might change. + - Functionality might change. + - pgTap tests might be missing. + - Might need c/c++ coding. + - May lack documentation. + - Documentation if any might need to be rewritten. + - Documentation examples might need to be automatically generated. + - Might need a lot of feedback from the community. + - Might depend on a proposed function of pgRouting + - Might depend on a deprecated function of pgRouting -.. end-warn-expr +.. end-warning .. rubric:: Families :doc:`flow-family` .. include:: flow-family.rst - :start-after: index experimental from here - :end-before: index experimental to here + :start-after: experimental-start + :end-before: experimental-end :doc:`chinesePostmanProblem-family` .. include:: chinesePostmanProblem-family.rst - :start-after: index from here - :end-before: index to here + :start-after: official-start + :end-before: official-end :doc:`coloring-family` .. include:: coloring-family.rst - :start-after: index from here - :end-before: index to here + :start-after: official-start + :end-before: official-end :doc:`transformation-family` .. include:: transformation-family.rst - :start-after: index experimental from here - :end-before: index experimental to here + :start-after: experimental-start + :end-before: experimental-end :doc:`traversal-family` .. include:: traversal-family.rst - :start-after: index experimental from here - :end-before: index experimental to here + :start-after: experimental-start + :end-before: experimental-end :doc:`components-family` .. include:: components-family.rst - :start-after: index experimental from here - :end-before: index experimental to here + :start-after: experimental-start + :end-before: experimental-end :doc:`ordering-family` .. include:: ordering-family.rst - :start-after: index from here - :end-before: index to here + :start-after: official-start + :end-before: official-end :doc:`metrics-family` .. include:: metrics-family.rst - :start-after: index experimental from here - :end-before: index experimental to here + :start-after: experimental-start + :end-before: experimental-end :doc:`TRSP-family` .. include:: TRSP-family.rst - :start-after: index experimental from here - :end-before: index experimental to here + :start-after: experimental-start + :end-before: experimental-end .. toctree:: :hidden: @@ -102,46 +103,55 @@ Experimental Functions transformation-family components-family ordering-family - metrics-family .. rubric:: categories :doc:`VRP-category` .. include:: VRP-category.rst - :start-after: index experimental from here - :end-before: index experimental to here + :start-after: experimental-start + :end-before: experimental-end .. toctree:: :hidden: VRP-category -.. rubric:: Unclassified +.. rubric:: Shortest Path Category - :doc:`pgr_bellmanFord` - :doc:`pgr_dagShortestPath` - :doc:`pgr_edwardMoore` -- :doc:`pgr_isPlanar` -- :doc:`pgr_stoerWagner` -- :doc:`pgr_topologicalSort` -- :doc:`pgr_transitiveClosure` -- :doc:`pgr_lengauerTarjanDominatorTree` -- :doc:`pgr_hawickCircuits` .. toctree:: :hidden: pgr_bellmanFord - pgr_binaryBreadthFirstSearch - pgr_breadthFirstSearch pgr_dagShortestPath pgr_edwardMoore + +.. rubric:: Planar Family + +- :doc:`pgr_isPlanar` + +.. toctree:: + :hidden: + pgr_isPlanar + +.. rubric:: Miscellaneous Algorithms + +- :doc:`pgr_lengauerTarjanDominatorTree` +- :doc:`pgr_stoerWagner` +- :doc:`pgr_transitiveClosure` +- :doc:`pgr_hawickCircuits` + +.. toctree:: + :hidden: + + pgr_lengauerTarjanDominatorTree pgr_stoerWagner - pgr_topologicalSort pgr_transitiveClosure - pgr_lengauerTarjanDominatorTree pgr_hawickCircuits diff --git a/doc/src/index.rst b/doc/src/index.rst index e3f8eee218..f240d486ca 100644 --- a/doc/src/index.rst +++ b/doc/src/index.rst @@ -91,7 +91,7 @@ Available Functions but not official pgRouting functions .. include:: release_notes.rst :start-after: current - :end-before: pgRouting 3.6 + :end-before: pgRouting 3 All releases ------------------------------------------------------------------------------- diff --git a/doc/src/migration.rst b/doc/src/migration.rst index 072e60275a..5df8deea89 100644 --- a/doc/src/migration.rst +++ b/doc/src/migration.rst @@ -22,13 +22,7 @@ Results can be different because of the changes. All deprecated functions will be removed on next mayor version 4.0.0 .. contents:: Contents - -Migration of functions -******************************************************************************* - -.. contents:: Migrating functions - :local: - + :depth: 2 Migration of ``pgr_aStar`` ------------------------------------------------------------------------------- @@ -233,7 +227,7 @@ Signatures to be migrated: the function ``my_dijkstra`` returns the new additional columns of ``pgr_dijkstra``. -Migration of ``pgr_drivingdistance`` +Migration of ``pgr_drivingDistance`` ------------------------------------------------------------------------------- Starting from `v3.6.0 `__ @@ -244,18 +238,18 @@ Starting from `v3.6.0 `__ Signatures to be migrated: -* ``pgr_drivingdistance`` (Single vertex) -* ``pgr_drivingdistance`` (Multiple vertices) +* pgr_drivingDistance(Single vertex) +* pgr_drivingDistance(Multiple vertices) :Before Migration: Output columns were |result-dij-dd| -* ``pgr_drivingdistance`` (Single vertex) +* pgr_drivingDistance(Single vertex) * Does not have ``start_vid`` and ``depth`` result columns. -* ``pgr_drivingdistance`` (Multiple vertices) +* pgr_drivingDistance(Multiple vertices) * Has ``from_v`` instead of ``start_vid`` result column. * does not have ``depth`` result column. @@ -264,7 +258,7 @@ Output columns were |result-dij-dd| * Be aware of the existence and name change of the result columns. -``pgr_drivingdistance`` (Single vertex) +pgr_drivingDistance(Single vertex) ............................................................................... Using `this @@ -285,7 +279,7 @@ If needed filter out the added columns, for example, to return the original colu :start-after: --drivingdistance2 :end-before: --drivingdistance3 -``pgr_drivingdistance`` (Multiple vertices) +pgr_drivingDistance(Multiple vertices) ............................................................................... Using `this @@ -770,200 +764,40 @@ columns: :start-after: --withPointsKSP2 :end-before: --withPointsKSP3 -Migration of turn restrictions -******************************************************************************* - -.. contents:: Contents - :local: - -Migration of restrictions -------------------------------------------------------------------------------- - -Starting from `v3.4.0 `__ - -The structure of the restrictions have changed: - -Old restrictions structure -............................................................................... - -On the deprecated signatures: - -* Column ``rid`` is ignored -* ``via_path`` - - * Must be in reverse order. - * Is of type ``TEXT``. - * When more than one via edge must be separated with ``,``. - -* ``target_id`` - - * Is the last edge of the forbidden path. - * Is of type ``INTEGER``. - -* ``to_cost`` - - * Is of type ``FLOAT``. - -Creation of the old restrictions table - -.. literalinclude:: migration.queries - :start-after: --rest00 - :end-before: --rest01 - -Old restrictions fill up - -.. literalinclude:: migration.queries - :start-after: --rest01 - :end-before: --rest1 - -Old restrictions contents -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -.. literalinclude:: migration.queries - :start-after: --rest1 - :end-before: --rest2 - -The restriction with ``rid = 2`` is representing :math:`3 \rightarrow 5 -\rightarrow9` - -* :math:`3\rightarrow5` - - * is on column ``via_path`` in reverse order - * is of type ``TEXT`` - -* :math:`9` - - * is on column ``target_id`` - * is of type ``INTEGER`` - - -New restrictions structure -............................................................................... - -* Column ``id`` is ignored -* Column ``path`` - - * Is of type ``ARRAY[ANY-INTEGER]``. - * Contains all the edges involved on the restriction. - * The array has the ordered edges of the restriction. - -* Column ``cost`` - - * Is of type ``ANY-NUMERICAL`` - -.. include:: sampledata.rst - :start-after: the_restrictions_start - :end-before: the_restrictions_end - - -The restriction with ``rid = 2`` represents the path :math:`3 \rightarrow5 -\rightarrow9`. - -* By inspection the path is clear. - -Migration -............................................................................... - -To transform the old restrictions table to the new restrictions structure, - -* Create a new table with the new restrictions structure. - - * In this migration guide ``new_restrictions`` is been used. - -* For this migration pgRouting supplies an auxiliary function for reversal of an - array ``_pgr_array_reverse`` needed for the migration. - - * ``_pgr_array_reverse``: - - * Was created temporally for this migration - * Is not documented. - * Will be removed on the next mayor version 4.0.0 - -.. literalinclude:: migration.queries - :start-after: --rest3 - :end-before: --rest4 - -The migrated table contents: - -.. literalinclude:: migration.queries - :start-after: --rest4 - :end-before: --rest5 - Migration of ``pgr_trsp`` (Vertices) ------------------------------------------------------------------------------- -:doc:`pgr_trsp` signatures have changed and many issues have been fixed in the -new signatures. This section will show how to migrate from the old signatures to -the new replacement functions. This also affects the restrictions. - -Starting from `v3.4.0 `__ - -Signature to be migrated: +Signature: .. parsed-literal:: - pgr_trsp(Edges SQL, source, target, - directed boolean, has_rcost boolean + pgr_trsp(Edges SQL, source, target, directed boolean, has_rcost boolean [,restrict_sql text]); RETURNS SETOF (seq, id1, id2, cost) -* The integral type of the ``Edges SQL`` can only be ``INTEGER``. -* The floating point type of the ``Edges SQL`` can only be ``FLOAT``. -* ``directed`` flag is compulsory. - - * Does not have a default value. - -* Does not autodetect if ``reverse_cost`` column exist. - - * User must be careful to match the existence of the column with the value of - ``has_rcost`` parameter. +:Deprecated: `v3.4.0 `__ +:Removed: `v4.0.0 `__ -* The restrictions inner query is optional. -* The output column names are meaningless - -Migrate by using: +.. contents:: + :local: -* :doc:`pgr_dijkstra` when there are no restrictions, -* :doc:`pgr_trsp` (One to One) when there are restrictions. +.. rubric:: See Also +- :doc:`pgr_dijkstra` +- :doc:`pgr_trsp` +- `Migration of restrictions`_ -Migrating ``pgr_trsp`` (Vertices) using ``pgr_dijkstra`` +Use ``pgr_dijkstra`` when there are no restrictions. ............................................................................... -The following query does not have restrictions. - -.. literalinclude:: migration.queries - :start-after: --verticesv1 - :end-before: --verticesv2 - -* A message about deprecation is shown - - * Deprecated functions will be removed on the next mayor version 4.0.0 - Use :doc:`pgr_dijkstra` instead. - .. literalinclude:: migration.queries :start-after: --verticesv2 :end-before: --verticesv3 -* The types casting has been removed. -* :doc:`pgr_dijkstra`: - - * Autodetects if ``reverse_cost`` column is in the edges - SQL. - * Accepts ``ANY-INTEGER`` on integral types - * Accepts ``ANY-NUMERICAL`` on floating point types - * ``directed`` flag has a default value of ``true``. - - * Use the same value that on the original query. - * In this example it is ``true`` which is the default value. - - * The flag has been omitted and the default is been used. - -When the need of using strictly the same (meaningless) names and types of the -function been migrated then: +To get the original column names: .. literalinclude:: migration.queries :start-after: --verticesv3 @@ -972,50 +806,16 @@ function been migrated then: * ``id1`` is the node * ``id2`` is the edge - -Migrating ``pgr_trsp`` (Vertices) using ``pgr_trsp`` +Use ``pgr_trsp`` when there are restrictions. ............................................................................... -The following query has restrictions. - -.. literalinclude:: migration.queries - :start-after: --verticesv4 - :end-before: --verticesv5 - -* A message about deprecation is shown - - * Deprecated functions will be removed on the next mayor version 4.0.0 - -* The restrictions are the last parameter of the function - - * Using the old structure of restrictions - Use :doc:`pgr_trsp` (One to One) instead. .. literalinclude:: migration.queries :start-after: --verticesv5 :end-before: --verticesv6 -* The new structure of restrictions is been used. - - * It is the second parameter. - -* The types casting has been removed. -* :doc:`pgr_trsp`: - - * Autodetects if ``reverse_cost`` column is in the edges - SQL. - * Accepts ``ANY-INTEGER`` on integral types - * Accepts ``ANY-NUMERICAL`` on floating point types - * ``directed`` flag has a default value of ``true``. - - * Use the same value that on the original query. - * In this example it is ``true`` which is the default value. - - * The flag has been omitted and the default is been used. - -When the need of using strictly the same (meaningless) names and types of the -function been migrated then: +To get the original column names: .. literalinclude:: migration.queries :start-after: --verticesv6 @@ -1027,7 +827,7 @@ function been migrated then: Migration of ``pgr_trsp`` (Edges) ------------------------------------------------------------------------------- -Signature to be migrated: +Signature: .. parsed-literal:: @@ -1037,67 +837,28 @@ Signature to be migrated: [,restrict_sql text]); RETURNS SETOF (seq, id1, id2, cost) -* The integral types of the ``sql`` can only be ``INTEGER``. -* The floating point type of the ``sql`` can only be ``FLOAT``. -* ``directed`` flag is compulsory. - - * Does not have a default value. - -* Does not autodetect if ``reverse_cost`` column exist. - - * User must be careful to match the existence of the column with the value of - ``has_rcost`` parameter. - -* The restrictions inner query is optional. - -For these migration guide the following points will be used: +:Deprecated: `v3.4.0 `__ +:Removed: `v4.0.0 `__ -.. literalinclude:: migration.queries - :start-after: --verticesv7 - :end-before: --edgesv1 +.. contents:: + :local: -Migrate by using: +.. rubric:: See Also -* :doc:`pgr_withPoints` when there are no restrictions, -* :doc:`pgr_trsp_withPoints` (One to One) when there are restrictions. +- :doc:`pgr_withPoints` +- :doc:`pgr_trsp_withPoints` +- `Migration of restrictions`_ -Migrating ``pgr_trsp`` (Edges) using ``pgr_withPoints`` +Use ``pgr_withPoints`` when there are no restrictions. ............................................................................... -The following query does not have restrictions. - -.. literalinclude:: migration.queries - :start-after: --edgesv1 - :end-before: --edgesv2 - -* A message about deprecation is shown - - * Deprecated functions will be removed on the next mayor version 4.0.0 - -Use :doc:`pgr_withPoints` instead. +Use :doc:`pgr_withPoints` (One to One) instead. .. literalinclude:: migration.queries :start-after: --edgesv2 :end-before: --edgesv3 -* The types casting has been removed. -* Do not show details, as the deprecated function does not show details. -* :doc:`pgr_withPoints`: - - * Autodetects if ``reverse_cost`` column is in the edges - SQL. - * Accepts ``ANY-INTEGER`` on integral types - * Accepts ``ANY-NUMERICAL`` on floating point types - * ``directed`` flag has a default value of ``true``. - - * Use the same value that on the original query. - * In this example it is ``true`` which is the default value. - - * The flag has been omitted and the default is been used. - * On the points query do not include the ``side`` column. - -When the need of using strictly the same (meaningless) names and types, and node -values of the function been migrated then: +To get the original column names: .. literalinclude:: migration.queries :start-after: --edgesv3 @@ -1106,52 +867,16 @@ values of the function been migrated then: * ``id1`` is the node * ``id2`` is the edge - -Migrating ``pgr_trsp`` (Edges) using ``pgr_trsp_withPoints`` +Use ``pgr_trsp_withPoints`` when there are restrictions. ............................................................................... -The following query has restrictions. - -.. literalinclude:: migration.queries - :start-after: --edgesv4 - :end-before: --edgesv5 - -* A message about deprecation is shown - - * Deprecated functions will be removed on the next mayor version 4.0.0 - -* The restrictions are the last parameter of the function - - * Using the old structure of restrictions - Use :doc:`pgr_trsp_withPoints` instead. .. literalinclude:: migration.queries :start-after: --edgesv5 :end-before: --edgesv6 -* The new structure of restrictions is been used. - - * It is the second parameter. - -* The types casting has been removed. -* Do not show details, as the deprecated function does not show details. -* :doc:`pgr_trsp_withPoints`: - - * Autodetects if ``reverse_cost`` column is in the edges - SQL. - * Accepts ``ANY-INTEGER`` on integral types - * Accepts ``ANY-NUMERICAL`` on floating point types - * ``directed`` flag has a default value of ``true``. - - * Use the same value that on the original query. - * In this example it is ``true`` which is the default value. - - * The flag has been omitted and the default is been used. - * On the points query do not include the ``side`` column. - -When the need of using strictly the same (meaningless) names and types, and node -values of the function been migrated then: +To get the original column names: .. literalinclude:: migration.queries :start-after: --edgesv6 @@ -1163,7 +888,7 @@ values of the function been migrated then: Migration of ``pgr_trspViaVertices`` ------------------------------------------------------------------------------- -Signature to be migrated: +Signature: .. parsed-literal:: @@ -1172,62 +897,29 @@ Signature to be migrated: [, turn_restrict_sql text]); RETURNS SETOF (seq, id1, id2, id3, cost) +:Deprecated: `v3.4.0 `__ +:Removed: `v4.0.0 `__ -* The integral types of the ``Edges SQL`` can only be ``INTEGER``. -* The floating point type of the ``Edges SQL`` can only be ``FLOAT``. -* ``directed`` flag is compulsory. - - * Does not have a default value. - -* Does not autodetect if ``reverse_cost`` column exist. - - * User must be careful to match the existence of the column with the value of - ``has_rcost`` parameter. - -* The restrictions inner query is optional. - +.. contents:: + :local: + :depth: 1 -Migrate by using: +.. rubric:: See Also -* :doc:`pgr_dijkstraVia` when there are no restrictions, -* :doc:`pgr_trspVia` when there are restrictions. +- :doc:`pgr_dijkstraVia` +- :doc:`pgr_trspVia` +- `Migration of restrictions`_ -Migrating ``pgr_trspViaVertices`` using ``pgr_dijkstraVia`` +Use ``pgr_dijkstraVia`` when there are no restrictions ............................................................................... -The following query does not have restrictions. - -.. literalinclude:: migration.queries - :start-after: --viav1 - :end-before: --viav2 - -* A message about deprecation is shown - - * Deprecated functions will be removed on the next mayor version 4.0.0 - Use :doc:`pgr_dijkstraVia` instead. .. literalinclude:: migration.queries :start-after: --viav2 :end-before: --viav3 -* The types casting has been removed. -* :doc:`pgr_dijkstraVia`: - - * Autodetects if ``reverse_cost`` column is in the edges - SQL. - * Accepts ``ANY-INTEGER`` on integral types - * Accepts ``ANY-NUMERICAL`` on floating point types - * ``directed`` flag has a default value of ``true``. - - * Use the same value that on the original query. - * In this example it is ``true`` which is the default value. - - * The flag has been omitted and the default is been used. - * On the points query do not include the ``side`` column. - -When the need of using strictly the same (meaningless) names and types of the -function been migrated then: +To get the original column names: .. literalinclude:: migration.queries :start-after: --viav3 @@ -1237,51 +929,16 @@ function been migrated then: * ``id2`` is the node * ``id3`` is the edge - -Migrating ``pgr_trspViaVertices`` using ``pgr_trspVia`` +Use ``pgr_trspVia`` when there are restrictions ............................................................................... -The following query has restrictions. - -.. literalinclude:: migration.queries - :start-after: --viav4 - :end-before: --viav5 - -* A message about deprecation is shown - - * Deprecated functions will be removed on the next mayor version 4.0.0 - -* The restrictions are the last parameter of the function - - * Using the old structure of restrictions - Use :doc:`pgr_trspVia` instead. .. literalinclude:: migration.queries :start-after: --viav5 :end-before: --viav6 -* The new structure of restrictions is been used. - - * It is the second parameter. - -* The types casting has been removed. -* :doc:`pgr_trspVia`: - - * Autodetects if ``reverse_cost`` column is in the edges - SQL. - * Accepts ``ANY-INTEGER`` on integral types - * Accepts ``ANY-NUMERICAL`` on floating point types - * ``directed`` flag has a default value of ``true``. - - * Use the same value that on the original query. - * In this example it is ``true`` which is the default value. - - * The flag has been omitted and the default is been used. - * On the points query do not include the ``side`` column. - -When the need of using strictly the same (meaningless) names and types of the -function been migrated then: +To get the original column names: .. literalinclude:: migration.queries :start-after: --viav6 @@ -1294,7 +951,7 @@ function been migrated then: Migration of ``pgr_trspViaEdges`` ------------------------------------------------------------------------------- -Signature to be migrated: +Signature: .. parsed-literal:: @@ -1303,132 +960,169 @@ Signature to be migrated: [, turn_restrict_sql text]); RETURNS SETOF (seq, id1, id2, id3, cost) +:Deprecated: `v3.4.0 `__ +:Removed: `v4.0.0 `__ -* The integral types of the ``Edges SQL`` can only be ``INTEGER``. -* The floating point type of the ``Edges SQL`` can only be ``FLOAT``. -* ``directed`` flag is compulsory. - - * Does not have a default value. +.. contents:: + :local: + :depth: 1 -* Does not autodetect if ``reverse_cost`` column exist. +.. rubric:: See Also - * User must be careful to match the existence of the column with the value of - ``has_rcost`` parameter. +- :doc:`pgr_withPointsVia` +- :doc:`pgr_trspVia_withPoints` +- `Migration of restrictions`_ -* The restrictions inner query is optional. +Use ``pgr_withPointsVia`` when there are no restrictions +............................................................................... -For these migration guide the following points will be used: +Use :doc:`pgr_withPointsVia` instead. .. literalinclude:: migration.queries - :start-after: --viav7 - :end-before: --edgesvia1 + :start-after: --edgesvia2 + :end-before: --edgesvia3 -And will travel thru the following Via points :math:`4\rightarrow3\rightarrow6` +To get the original column names: -Migrate by using: +.. literalinclude:: migration.queries + :start-after: --edgesvia3 + :end-before: --edgesvia4 -* :doc:`pgr_withPointsVia` when there are no restrictions, -* :doc:`pgr_trspVia_withPoints` when there are restrictions. +* ``id1`` is the path identifier +* ``id2`` is the node +* ``id3`` is the edge -Migrating ``pgr_trspViaEdges`` using ``pgr_withPointsVia`` +Use ``pgr_trspVia_withPoints`` when there are restrictions ............................................................................... -The following query does not have restrictions. +Use :doc:`pgr_trspVia_withPoints` instead. .. literalinclude:: migration.queries - :start-after: --edgesvia1 - :end-before: --edgesvia2 + :start-after: --edgesvia5 + :end-before: --edgesvia6 -* A message about deprecation is shown +To get the original column names: - * Deprecated functions will be removed on the next mayor version 4.0.0 +.. literalinclude:: migration.queries + :start-after: --edgesvia6 + :end-before: --edgesvia7 -Use :doc:`pgr_withPointsVia` instead. +* ``id1`` is the path identifier +* ``id2`` is the node +* ``id3`` is the edge -.. literalinclude:: migration.queries - :start-after: --edgesvia2 - :end-before: --edgesvia3 +Migration of restrictions +------------------------------------------------------------------------------- + +Starting from `v3.4.0 `__ + +The structure of the restrictions have changed: + +Old restrictions structure +............................................................................... + +On the deprecated signatures: + +* Column ``rid`` is ignored +* ``via_path`` -* The types casting has been removed. -* Do not show details, as the deprecated function does not show details. -* :doc:`pgr_withPointsVia`: + * Must be in reverse order. + * Is of type ``TEXT``. + * When more than one via edge must be separated with ``,``. - * Autodetects if ``reverse_cost`` column is in the edges - SQL. - * Accepts ``ANY-INTEGER`` on integral types - * Accepts ``ANY-NUMERICAL`` on floating point types - * ``directed`` flag has a default value of ``true``. +* ``target_id`` - * Use the same value that on the original query. - * In this example it is ``true`` which is the default value. + * Is the last edge of the forbidden path. + * Is of type ``INTEGER``. - * The flag has been omitted and the default is been used. - * On the points query do not include the ``side`` column. +* ``to_cost`` -When the need of using strictly the same (meaningless) names and types, and node -values of the function been migrated then: + * Is of type ``FLOAT``. + +Creation of the old restrictions table .. literalinclude:: migration.queries - :start-after: --edgesvia3 - :end-before: --edgesvia4 + :start-after: --rest00 + :end-before: --rest01 -* ``id1`` is the path identifier -* ``id2`` is the node -* ``id3`` is the edge +Old restrictions fill up -Migrating ``pgr_trspViaEdges`` using ``pgr_trspVia_withPoints`` -............................................................................... +.. literalinclude:: migration.queries + :start-after: --rest01 + :end-before: --rest1 -The following query has restrictions. +Old restrictions contents ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ .. literalinclude:: migration.queries - :start-after: --edgesvia4 - :end-before: --edgesvia5 + :start-after: --rest1 + :end-before: --rest2 -* A message about deprecation is shown +The restriction with ``rid = 2`` is representing :math:`3 \rightarrow 5 +\rightarrow9` - * Deprecated functions will be removed on the next mayor version 4.0.0 +* :math:`3\rightarrow5` -* The restrictions are the last parameter of the function + * is on column ``via_path`` in reverse order + * is of type ``TEXT`` - * Using the old structure of restrictions +* :math:`9` -Use :doc:`pgr_trspVia_withPoints` instead. + * is on column ``target_id`` + * is of type ``INTEGER`` -.. literalinclude:: migration.queries - :start-after: --edgesvia5 - :end-before: --edgesvia6 -* The new structure of restrictions is been used. +New restrictions structure +............................................................................... + +* Column ``id`` is ignored +* Column ``path`` + + * Is of type ``ARRAY[ANY-INTEGER]``. + * Contains all the edges involved on the restriction. + * The array has the ordered edges of the restriction. + +* Column ``cost`` + + * Is of type ``ANY-NUMERICAL`` + +.. include:: sampledata.rst + :start-after: the_restrictions_start + :end-before: the_restrictions_end + - * It is the second parameter. +The restriction with ``rid = 2`` represents the path :math:`3 \rightarrow5 +\rightarrow9`. -* The types casting has been removed. -* Do not show details, as the deprecated function does not show details. -* :doc:`pgr_trspVia_withPoints`: +* By inspection the path is clear. - * Autodetects if ``reverse_cost`` column is in the edges - SQL. - * Accepts ``ANY-INTEGER`` on integral types - * Accepts ``ANY-NUMERICAL`` on floating point types - * ``directed`` flag has a default value of ``true``. +Migration +............................................................................... - * Use the same value that on the original query. - * In this example it is ``true`` which is the default value. +To transform the old restrictions table to the new restrictions structure, - * The flag has been omitted and the default is been used. - * On the points query do not include the ``side`` column. +* Create a new table with the new restrictions structure. -When the need of using strictly the same (meaningless) names and types, and node -values of the function been migrated then: + * In this migration guide ``new_restrictions`` is been used. + +* For this migration pgRouting supplies an auxiliary function for reversal of an + array ``_pgr_array_reverse`` needed for the migration. + + * ``_pgr_array_reverse``: + + * Was created temporally for this migration + * Is not documented. + * Will be removed on the next mayor version 4.0.0 .. literalinclude:: migration.queries - :start-after: --edgesvia6 - :end-before: --edgesvia7 + :start-after: --rest3 + :end-before: --rest4 -* ``id1`` is the path identifier -* ``id2`` is the node -* ``id3`` is the edge +The migrated table contents: + +.. literalinclude:: migration.queries + :start-after: --rest4 + :end-before: --rest5 See Also diff --git a/doc/src/pgRouting-concepts.rst b/doc/src/pgRouting-concepts.rst index 07177a3b5e..6ae64e634d 100644 --- a/doc/src/pgRouting-concepts.rst +++ b/doc/src/pgRouting-concepts.rst @@ -830,23 +830,62 @@ the number of dead ends and/or the number of linear edges. A complete method on how to contract and how to use the contracted graph is described on :doc:`contraction-family` -.. degree_from_table_start Dead ends +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +.. degree_from_table_start + To get the dead ends: .. literalinclude:: concepts.queries :start-after: -- contract1 :end-before: -- contract2 -That information is correct, for example, when the dead end is on the limit of -the imported graph. +A dead end happens when + +- The vertex is the limit of a cul-de-sac, a no-through road or a no-exit + road. +- The vertex is on the limit of the imported graph. -Visually node :math:`4` looks to be as start/ending of 3 edges, but it is not. + - If a larger graph is imported then the vertex might not be a dead end -Is that correct? +Node :math:`4`, is a dead end on the query, even that it visually looks like an +end point of 3 edges. + +.. image:: images/Fig1-originalData.png + :scale: 20% + +.. rubric:: Is node :math:`4` a dead end or not? + +.. graphviz:: + + graph G { + 1,2,4,5,9,13,14 [shape=circle;style=filled;color=lightgreen;fontsize=8;width=0.3;fixedsize=true]; + 3,6,7,8,10,11,12,15,16,17 [shape=circle;style=filled;color=cyan;fontsize=8;width=0.3;fixedsize=true]; + + 5 -- 6 [label="1",fontsize=8]; 6 -- 10 [label="2",fontsize=8]; + 10 -- 15 [label="3",fontsize=8]; 6 -- 7 [label="4",fontsize=8]; + 10 -- 11 [label="5",fontsize=8]; 1 -- 3 [label="6",fontsize=8]; + 3 -- 7 [label="7",fontsize=8]; 7 -- 11 [label="8",fontsize=8]; + 11 -- 16 [label="9",fontsize=8]; 7 -- 8 [label="10",fontsize=8]; + 11 -- 12 [label="11",fontsize=8]; 8 -- 12 [label="12",fontsize=8]; + 12 -- 17 [label="13",fontsize=8]; 8 -- 9 [label="",fontsize=8]; + 16 -- 17 [label="15",fontsize=8]; 15 -- 16 [label="16",fontsize=8]; + 2 -- 4 [label="17",fontsize=8]; 13 -- 14 [label="18",fontsize=8]; + + 1 [pos="0,2!"]; 2 [pos="0.5,3.5!"]; + 3 [pos="1,2!"]; 4 [pos="2,3.5!"]; + 5 [pos="2,0!"]; 6 [pos="2,1!"]; + 7 [pos="2,2!"]; 8 [pos="2,3!"]; + 9 [pos="2,4!"]; 10 [pos="3,1!"]; + 11 [pos="3,2!"]; 12 [pos="3,3!"]; + 13 [pos="3.5,2.3!"]; 14 [pos="3.5,4!"]; + 15 [pos="4,1!"]; 16 [pos="4,2!"]; + 17 [pos="4,3!"]; + } + +The answer to that question will depend on the application. * Is there such a small curb: @@ -859,25 +898,59 @@ Is that correct? * Is there a big cliff and from eagles view look like the dead end is close to the segment? -When there are many dead ends, to speed up, the :doc:`contraction-family` -functions can be used to divide the problem. +Depending on the answer, modification of the data might be needed. + +When there are many dead ends, to speed up processing, the :doc:`contraction-family` +functions can be used to contract the graph. + +.. degree_from_table_end Linear edges +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +.. linear_degree_from_table_start + To get the linear edges: .. literalinclude:: concepts.queries :start-after: -- contract2 :end-before: -- contract3 -This information is correct, for example, when the application is taking into -account speed bumps, stop signals. +.. graphviz:: -When there are many linear edges, to speed up, the :doc:`contraction-family` -functions can be used to divide the problem. + graph G { + 3,15,17 [shape=circle;style=filled;color=lightgreen;fontsize=8;width=0.3;fixedsize=true]; + 1,2,4,5,6,7,8,9,10,11,12,13,14,16 [shape=circle;style=filled;color=cyan;fontsize=8;width=0.3;fixedsize=true]; + + 5 -- 6 [label="1",fontsize=8]; 6 -- 10 [label="2",fontsize=8]; + 10 -- 15 [label="3",fontsize=8]; 6 -- 7 [label="4",fontsize=8]; + 10 -- 11 [label="5",fontsize=8]; 1 -- 3 [label="6",fontsize=8]; + 3 -- 7 [label="7",fontsize=8]; 7 -- 11 [label="8",fontsize=8]; + 11 -- 16 [label="9",fontsize=8]; 7 -- 8 [label="10",fontsize=8]; + 11 -- 12 [label="11",fontsize=8]; 8 -- 12 [label="12",fontsize=8]; + 12 -- 17 [label="13",fontsize=8]; 8 -- 9 [label="",fontsize=8]; + 16 -- 17 [label="15",fontsize=8]; 15 -- 16 [label="16",fontsize=8]; + 2 -- 4 [label="17",fontsize=8]; 13 -- 14 [label="18",fontsize=8]; + + 1 [pos="0,2!"]; 2 [pos="0.5,3.5!"]; + 3 [pos="1,2!"]; 4 [pos="2,3.5!"]; + 5 [pos="2,0!"]; 6 [pos="2,1!"]; + 7 [pos="2,2!"]; 8 [pos="2,3!"]; + 9 [pos="2,4!"]; 10 [pos="3,1!"]; + 11 [pos="3,2!"]; 12 [pos="3,3!"]; + 13 [pos="3.5,2.3!"]; 14 [pos="3.5,4!"]; + 15 [pos="4,1!"]; 16 [pos="4,2!"]; + 17 [pos="4,3!"]; + } -.. degree_from_table_end +These linear vertices are correct, for example, when those the vertices are speed +bumps, stop signals and the application is taking them into account. + +When there are many linear vertices, that need not to be taken into account, to +speed up the processing, the :doc:`contraction-family` functions can be used to +contract the problem. + +.. linear_degree_from_table_end Function's structure ------------------------------------------------------------------------------- @@ -889,7 +962,7 @@ The general form of a pgRouting function call is: .. admonition:: \ \ :class: signatures - pgr_(`Inner queries`_, **parameters**, [ ``Optional parameters``) + pgr_(`Inner queries`_, **parameters**, [ ``Optional parameters``) Where: @@ -1896,10 +1969,18 @@ To get faster results bound the queries to an area of interest of routing. In this example Use an inner query SQL that does not include some edges in the routing function and is within the area of the results. +Given this area: + .. literalinclude:: concepts.queries :start-after: -- performance1 :end-before: -- performance2 +Calculate a route: + +.. literalinclude:: concepts.queries + :start-after: -- performance2 + :end-before: -- performance3 + How to contribute ------------------------------------------------------------------------------- @@ -1917,7 +1998,7 @@ How to contribute * `Example `__ -.. rubric:: Adding Functionaity to pgRouting +.. rubric:: Adding Functionality to pgRouting Consult the `developer's documentation diff --git a/doc/src/pgRouting-introduction.rst b/doc/src/pgRouting-introduction.rst index 661c38a9e9..ab0cae909b 100644 --- a/doc/src/pgRouting-introduction.rst +++ b/doc/src/pgRouting-introduction.rst @@ -99,6 +99,7 @@ Abhinav Jain, Aditya Pratap Singh, Adrien Berchet, Akio Takubo, +Alay Sharma, Andrea Nardelli, Anthony Tasca, Anton Patrushev, diff --git a/doc/src/proposed.rst b/doc/src/proposed.rst index b18137967e..f790b88283 100644 --- a/doc/src/proposed.rst +++ b/doc/src/proposed.rst @@ -13,70 +13,72 @@ Proposed Functions ================================== -.. stable-begin-warning +.. warning-begin -.. warning:: Proposed functions for next mayor release. +.. collapse:: Proposed - - They are not officially in the current release. - - They will likely officially be part of the next mayor release: + .. warning:: Proposed functions for next mayor release. - - The functions make use of ANY-INTEGER and ANY-NUMERICAL - - Name might not change. (But still can) - - Signature might not change. (But still can) - - Functionality might not change. (But still can) - - pgTap tests have being done. But might need more. - - Documentation might need refinement. + - They are not officially in the current release. + - They will likely officially be part of the next mayor release: -.. stable-end-warning + - The functions make use of ANY-INTEGER and ANY-NUMERICAL + - Name might not change. (But still can) + - Signature might not change. (But still can) + - Functionality might not change. (But still can) + - pgTap tests have being done. But might need more. + - Documentation might need refinement. + +.. end-warning .. rubric:: Families :doc:`dijkstra-family` .. include:: dijkstra-family.rst - :start-after: index proposed from here - :end-before: index proposed to here + :start-after: proposed-start + :end-before: proposed-end :doc:`withPoints-family` .. include:: withPoints-family.rst - :start-after: index proposed from here - :end-before: index proposed to here + :start-after: proposed-start + :end-before: proposed-end :doc:`TRSP-family` .. include:: TRSP-family.rst - :start-after: index proposed from here - :end-before: index proposed to here + :start-after: proposed-start + :end-before: proposed-end .. toctree:: :hidden: TRSP-family -:doc:`topology-functions` - -.. include:: topology-functions.rst - :start-after: topology_proposed_start - :end-before: topology_proposed_end - :doc:`transformation-family` .. include:: transformation-family.rst - :start-after: index proposed from here - :end-before: index proposed to here + :start-after: proposed-start + :end-before: proposed-end :doc:`coloring-family` .. include:: coloring-family.rst - :start-after: index proposed from here - :end-before: index proposed to here + :start-after: proposed-start + :end-before: proposed-end + +:doc:`contraction-family` + +.. include:: contraction-family.rst + :start-after: proposed-start + :end-before: proposed-end :doc:`traversal-family` .. include:: traversal-family.rst - :start-after: index from here - :end-before: index to here + :start-after: official-start + :end-before: official-end .. toctree:: :hidden: @@ -89,26 +91,26 @@ Proposed Functions :doc:`cost-category` .. include:: cost-category.rst - :start-after: index proposed from here - :end-before: index proposed to here + :start-after: proposed-start + :end-before: proposed-end :doc:`costMatrix-category` .. include:: costMatrix-category.rst - :start-after: index proposed from here - :end-before: index proposed to here + :start-after: proposed-start + :end-before: proposed-end :doc:`drivingDistance-category` .. include:: drivingDistance-category.rst - :start-after: index proposed from here - :end-before: index proposed to here + :start-after: proposed-start + :end-before: proposed-end :doc:`KSP-category` .. include:: KSP-category.rst - :start-after: index proposed from here - :end-before: index proposed to here + :start-after: proposed-start + :end-before: proposed-end :doc:`via-category` @@ -130,15 +132,6 @@ Proposed Functions via-category withPoints-category -.. rubric:: Utilities - -:doc:`pgr_findCloseEdges` - -.. toctree:: - :hidden: - - pgr_findCloseEdges - See Also ------------------------------------------------------------------------------- diff --git a/doc/src/release_notes.rst b/doc/src/release_notes.rst index 3fac319973..f3466fb453 100644 --- a/doc/src/release_notes.rst +++ b/doc/src/release_notes.rst @@ -20,6 +20,102 @@ To see the full list of changes check the list of `Git commits :local: :depth: 1 +pgRouting 4 +******************************************************************************* + +.. contents:: Minors 4.x + :local: + :depth: 1 + +pgRouting 4.0 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +.. contents:: Contents + :local: + :depth: 1 + +.. current + +pgRouting 4.0.0 Release Notes +------------------------------------------------------------------------------- + +To see all issues & pull requests closed by this release see the `Git closed +milestone for 4.0.0 +`__ + +.. rubric:: Functions promoted to official + +* pgr_trsp +* pgr_trspVia +* pgr_trspVia_withPoints +* pgr_trsp_withPoints +* pgr_withPoints +* pgr_withPointsCost +* pgr_withPointsCostMatrix +* pgr_withPointsDD +* pgr_withPointsKSP +* pgr_withPointsVia + +.. rubric:: Signatures promoted to official + +* pgr_aStar(Combinations) +* pgr_aStarCost(Combinations) +* pgr_bdAstar(Combinations) +* pgr_bdAstarCost(Combinations) +* pgr_bdDijkstra(Combinations) +* pgr_bdDijkstraCost(Combinations) +* pgr_dijkstra(Combinations) +* pgr_dijkstraCost(Combinations) +* pgr_KSP(All signatures) +* pgr_boykovKolmogorov(Combinations) +* pgr_edmondsKarp(Combinations) +* pgr_maxFlow(Combinations) +* pgr_pushRelabel(Combinations) + +.. rubric:: code enhancements: + +* Removal of unused C/C++ code + +.. rubric:: Removal of SQL deprecated functions + +* pgr_trsp(text,integer,double precision,integer,double precision,boolean,boolean,text) +* pgr_trsp(text,integer,integer,boolean,boolean,text) +* pgr_trspviaedges(text,integer[],double precision[],boolean,boolean,text) +* pgr_trspviavertices(text,anyarray,boolean,boolean,text) + +.. rubric:: Removal of SQL deprecated internal functions + +* _pgr_dijkstranear(text,anyarray,anyarray,bigint,boolean) +* _pgr_dijkstranear(text,anyarray,bigint,bigint,boolean) +* _pgr_dijkstranear(text,bigint,anyarray,bigint,boolean) +* _pgr_dijkstra(text,anyarray,anyarray,boolean,boolean,boolean,bigint) +* _pgr_dijkstra(text,text,boolean,boolean,boolean) +* _pgr_drivingdistance(text,anyarray,double precision,boolean,boolean) +* _pgr_kruskal(text,anyarray,text,bigint,double precision) +* _pgr_prim(text,anyarray,text,bigint,double precision) +* _pgr_trsp(text,integer,double precision,integer,double precision,boolean,boolean,text) +* _pgr_trsp(text,text,anyarray,anyarray,boolean) +* _pgr_trsp(text,text,anyarray,bigint,boolean) +* _pgr_trsp(text,text,bigint,anyarray,boolean) +* _pgr_trsp(text,text,bigint,bigint,boolean) +* _pgr_trspviavertices(text,integer[],boolean,boolean,text) +* _pgr_withpointsvia(text,bigint[],double precision[],boolean) +* _trsp(text,text,anyarray,anyarray,boolean) +* _v4trsp(text,text,anyarray,anyarray,boolean) +* _v4trsp(text,text,text,boolean) + +.. rubric:: Deprecation of internal C/C++ functions + +* _pgr_drivingdistance(text,anyarray,double precision,boolean,boolean) +* _pgr_kruskal(text,anyarray,text,bigint,double precision) +* _pgr_prim(text,anyarray,text,bigint,double precision) + +.. rubric:: Internal C/C++ functions in legacy + +* _trsp(text,text,anyarray,anyarray,boolean) +* _v4trsp(text,text,anyarray,anyarray,boolean) +* _v4trsp(text,text,text,boolean) + pgRouting 3 ******************************************************************************* @@ -27,7 +123,7 @@ pgRouting 3 :local: :depth: 1 -pgRouting 3.7 +pgRouting 3.8 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ .. contents:: Contents @@ -36,6 +132,100 @@ pgRouting 3.7 .. current +pgRouting 3.8.0 Release Notes +------------------------------------------------------------------------------- + +.. rubric:: Promotion to official function of pgRouting. + +* pgr_extractVertices + + .. include:: pgr_extractVertices.rst + :start-after: Version 3.8.0 + :end-before: .. rubric + +* pgr_degree + + .. include:: pgr_degree.rst + :start-after: Version 3.8.0 + :end-before: .. rubric + +* pgr_findCloseEdges + + .. include:: pgr_findCloseEdges.rst + :start-after: Version 3.8.0 + :end-before: .. rubric + +.. rubric:: Official functions changes + +* `#2786 `__: pgr_contraction + + .. include:: pgr_contraction.rst + :start-after: Version 3.8.0 + :end-before: .. rubric + +.. rubric:: New proposed functions + +* Contraction + + * `#2790 `__: pgr_contractionDeadEnd + * `#2791 `__: pgr_contractionLinear + +pgRouting 3.7 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +.. contents:: Contents + :local: + :depth: 1 + +pgRouting 3.7.3 Release Notes +------------------------------------------------------------------------------- + +To see all issues & pull requests closed by this release see the `Git closed +milestone for 3.7.3 +`__ + +* `#2731 `__ Build Failure on Ubuntu 22 + +pgRouting 3.7.2 Release Notes +------------------------------------------------------------------------------- + +To see all issues & pull requests closed by this release see the `Git closed +milestone for 3.7.2 +`__ + +.. rubric:: Build + +* `#2713 `__ cmake missing + some policies and min version + + - Using OLD policies: CMP0148, CMP0144, CMP0167 + - Minimum cmake version 3.12 + +.. rubric:: Bug fixes + +* `#2707 `__ Build failure in + pgRouting 3.7.1 on Alpine +* `#2706 `__ winnie crashing + on pgr_betweennessCentrality + +pgRouting 3.7.1 Release Notes +------------------------------------------------------------------------------- + +To see all issues & pull requests closed by this release see the `Git closed +milestone for 3.7.1 +`__ + +.. rubric:: Bug fixes + +* `#2680 `__ fails to compile + under mingw64 gcc 13.2 +* `#2689 `__ When point is a + vertex, the withPoints family do not return results. + +.. rubric:: C/C++ code enhancemet + +* TRSP family + pgRouting 3.7.0 Release Notes ------------------------------------------------------------------------------- @@ -59,7 +249,7 @@ milestone for 3.7.0 .. rubric:: Official functions changes -* `#2605 `__ Standarize +* `#2605 `__ Standardize spanning tree functions output * Functions: @@ -181,34 +371,34 @@ milestone for 3.6.0 .. rubric:: Official functions changes -* `#2516 `__ Standarize output +* `#2516 `__ Standardize output pgr_aStar - * Standarizing output columns to |short-generic-result| + * Standardize output columns to |short-generic-result| - * ``pgr_aStar`` (`One to One`) added ``start_vid`` and ``end_vid`` columns. - * ``pgr_aStar`` (`One to Many`) added ``end_vid`` column. - * ``pgr_aStar`` (`Many to One`) added ``start_vid`` column. + * pgr_aStar(One to One) added ``start_vid`` and ``end_vid`` columns. + * pgr_aStar(One to Many) added ``end_vid`` column. + * pgr_aStar(Many to One) added ``start_vid`` column. -* `#2523 `__ Standarize output +* `#2523 `__ Standardize output pgr_bdAstar - * Standarizing output columns to |short-generic-result| + * Standardize output columns to |short-generic-result| - * ``pgr_bdAstar`` (`One to One`) added ``start_vid`` and ``end_vid`` + * pgr_bdAstar(One to One) added ``start_vid`` and ``end_vid`` columns. - * ``pgr_bdAstar`` (`One to Many`) added ``end_vid`` column. - * ``pgr_bdAstar`` (`Many to One`) added ``start_vid`` column. + * pgr_bdAstar(One to Many) added ``end_vid`` column. + * pgr_bdAstar(Many to One) added ``start_vid`` column. -* `#2547 `__ Standarize output +* `#2547 `__ Standardize output and modifying signature pgr_KSP .. include:: pgr_KSP.rst :start-after: Version 3.6.0 :end-before: .. rubric -* `#2548 `__ Standarize output - pgr_drivingdistance +* `#2548 `__ Standardize output + pgr_drivingDistance .. include:: pgr_drivingDistance.rst :start-after: Version 3.6.0 @@ -216,14 +406,14 @@ milestone for 3.6.0 .. rubric:: Proposed functions changes -* `#2544 `__ Standarize output +* `#2544 `__ Standardize output and modifying signature pgr_withPointsDD .. include:: pgr_withPointsDD.rst :start-after: Version 3.6.0 :end-before: .. rubric -* `#2546 `__ Standarize output +* `#2546 `__ Standardize output and modifying signature pgr_withPointsKSP .. include:: pgr_withPointsKSP.rst @@ -252,9 +442,9 @@ milestone for 3.6.0 * `#2490 `__ Automatic page history links. -* ..rubric:: SQL standarization +* ..rubric:: Standardize SQL -* `#2555 `__ standarize +* `#2555 `__ Standardize deprecated messages * On new internal function: do not use named parameters and default parameters. @@ -286,7 +476,7 @@ Changes on the documentation to the following: .. rubric:: Issue fixes * `#2565 `__ - pgr_pgr_lengauerTarjanDominatorTree triggers an assertion + pgr_lengauerTarjanDominatorTree triggers an assertion .. rubric:: SQL enhancements @@ -318,11 +508,11 @@ milestone for 3.5.0 * Dijkstra - * Standarizing output columns to |short-generic-result| + * Standardize output columns to |short-generic-result| - * ``pgr_dijkstra`` (`One to One`) added ``start_vid`` and ``end_vid`` columns. - * ``pgr_dijkstra`` (`One to Many`) added ``end_vid`` column. - * ``pgr_dijkstra`` (`Many to One`) added ``start_vid`` column. + * pgr_dijkstra(One to One) added ``start_vid`` and ``end_vid`` columns. + * pgr_dijkstra(One to Many) added ``end_vid`` column. + * pgr_dijkstra(Many to One) added ``start_vid`` column. pgRouting 3.4 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ @@ -371,70 +561,70 @@ milestone for 3.4.0 * `#1891 `__: pgr_ksp doesn't give all correct shortest path -.. rubric:: New proposed functions +.. rubric:: New proposed functions. * With points - * ``pgr_withPointsVia`` (One Via) + * pgr_withPointsVia(One Via) * Turn Restrictions * Via with turn restrictions - * ``pgr_trspVia`` (One Via) - * ``pgr_trspVia_withPoints`` (One Via) + * pgr_trspVia(One Via) + * pgr_trspVia_withPoints(One Via) - * ``pgr_trsp`` + * pgr_trsp - * ``pgr_trsp`` (One to One) - * ``pgr_trsp`` (One to Many) - * ``pgr_trsp`` (Many to One) - * ``pgr_trsp`` (Many to Many) - * ``pgr_trsp`` (Combinations) + * pgr_trsp(One to One) + * pgr_trsp(One to Many) + * pgr_trsp(Many to One) + * pgr_trsp(Many to Many) + * pgr_trsp(Combinations) * ``pgr_trsp_withPoints`` - * ``pgr_trsp_withPoints`` (One to One) - * ``pgr_trsp_withPoints`` (One to Many) - * ``pgr_trsp_withPoints`` (Many to One) - * ``pgr_trsp_withPoints`` (Many to Many) - * ``pgr_trsp_withPoints`` (Combinations) + * pgr_trsp_withPoints(One to One) + * pgr_trsp_withPoints(One to Many) + * pgr_trsp_withPoints(Many to One) + * pgr_trsp_withPoints(Many to Many) + * pgr_trsp_withPoints(Combinations) * Topology - * ``pgr_degree`` + * pgr_degree * Utilities - * ``pgr_findCloseEdges`` (One point) - * ``pgr_findCloseEdges`` (Many points) + * pgr_findCloseEdges(One point) + * pgr_findCloseEdges(Many points) .. rubric:: New experimental functions * Ordering - * ``pgr_cuthillMckeeOrdering`` + * pgr_cuthillMckeeOrdering * Unclassified - * ``pgr_hawickCircuits`` + * pgr_hawickCircuits .. rubric:: Official functions changes * Flow functions - * ``pgr_maxCardinalityMatch(text)`` + * pgr_maxCardinalityMatch(text) - * Deprecating ``pgr_maxCardinalityMatch(text,boolean)`` + * Deprecating: pgr_maxCardinalityMatch(text,boolean) .. rubric:: Deprecated Functions * Turn Restrictions - * ``pgr_trsp(text,integer,integer,boolean,boolean,text)`` - * ``pgr_trsp(text,integer,float8,integer,float8,boolean,boolean,text)`` - * ``pgr_trspViaVertices(text,anyarray,boolean,boolean,text)`` - * ``pgr_trspViaEdges(text,integer[],float[],boolean,boolean,text)`` + * pgr_trsp(text,integer,integer,boolean,boolean,text) + * pgr_trsp(text,integer,float8,integer,float8,boolean,boolean,text) + * pgr_trspViaVertices(text,anyarray,boolean,boolean,text) + * pgr_trspViaEdges(text,integer[],float[],boolean,boolean,text) pgRouting 3.3 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ @@ -477,7 +667,7 @@ milestone for 3.3.3 * Flow functions - * ``pgr_maxCardinalityMatch(text,boolean)`` + * pgr_maxCardinalityMatch(text,boolean) * Ignoring optional boolean parameter, as the algorithm works only for undirected graphs. @@ -673,7 +863,7 @@ on Github. * pgr_sequentialVertexColoring -.. rubric:: New proposed functions +.. rubric:: New proposed functions. * Astar @@ -793,7 +983,7 @@ milestone for 3.1.0 `_ on Github. -.. rubric:: New proposed functions +.. rubric:: New proposed functions. * pgr_dijkstra(combinations) * pgr_dijkstraCost(combinations) @@ -938,7 +1128,7 @@ on Github. * `#1006 `__: No loss of information -.. rubric:: New functions +.. rubric:: New Functions * Kruskal family @@ -959,66 +1149,57 @@ on Github. * aStar Family - * pgr_aStar(one to many) - * pgr_aStar(many to one) - * pgr_aStar(many to many) - * pgr_aStarCost(one to one) - * pgr_aStarCost(one to many) - * pgr_aStarCost(many to one) - * pgr_aStarCost(many to many) - * pgr_aStarCostMatrix(one to one) - * pgr_aStarCostMatrix(one to many) - * pgr_aStarCostMatrix(many to one) - * pgr_aStarCostMatrix(many to many) + * pgr_aStar(One to Many) + * pgr_aStar(Many to One) + * pgr_aStar(Many to Many) + * pgr_aStarCost(One to One) + * pgr_aStarCost(One to Many) + * pgr_aStarCost(Many to One) + * pgr_aStarCost(Many to Many) + * pgr_aStarCostMatrix * bdAstar Family - * pgr_bdAstar(one to many) - * pgr_bdAstar(many to one) - * pgr_bdAstar(many to many) - * pgr_bdAstarCost(one to one) - * pgr_bdAstarCost(one to many) - * pgr_bdAstarCost(many to one) - * pgr_bdAstarCost(many to many) - * pgr_bdAstarCostMatrix(one to one) - * pgr_bdAstarCostMatrix(one to many) - * pgr_bdAstarCostMatrix(many to one) - * pgr_bdAstarCostMatrix(many to many) + * pgr_bdAstar(One to Many) + * pgr_bdAstar(Many to One) + * pgr_bdAstar(Many to Many) + * pgr_bdAstarCost(One to One) + * pgr_bdAstarCost(One to Many) + * pgr_bdAstarCost(Many to One) + * pgr_bdAstarCost(Many to Many) + * pgr_bdAstarCostMatrix * bdDijkstra Family - * pgr_bdDijkstra(one to many) - * pgr_bdDijkstra(many to one) - * pgr_bdDijkstra(many to many) - * pgr_bdDijkstraCost(one to one) - * pgr_bdDijkstraCost(one to many) - * pgr_bdDijkstraCost(many to one) - * pgr_bdDijkstraCost(many to many) - * pgr_bdDijkstraCostMatrix(one to one) - * pgr_bdDijkstraCostMatrix(one to many) - * pgr_bdDijkstraCostMatrix(many to one) - * pgr_bdDijkstraCostMatrix(many to many) + * pgr_bdDijkstra(One to Many) + * pgr_bdDijkstra(Many to One) + * pgr_bdDijkstra(Many to Many) + * pgr_bdDijkstraCost(One to One) + * pgr_bdDijkstraCost(One to Many) + * pgr_bdDijkstraCost(Many to One) + * pgr_bdDijkstraCost(Many to Many) + * pgr_bdDijkstraCostMatrix * Flow Family - * pgr_pushRelabel(one to one) - * pgr_pushRelabel(one to many) - * pgr_pushRelabel(many to one) - * pgr_pushRelabel(many to many) - * pgr_edmondsKarp(one to one) - * pgr_edmondsKarp(one to many) - * pgr_edmondsKarp(many to one) - * pgr_edmondsKarp(many to many) - * pgr_boykovKolmogorov (one to one) - * pgr_boykovKolmogorov (one to many) - * pgr_boykovKolmogorov (many to one) - * pgr_boykovKolmogorov (many to many) + * pgr_pushRelabel(One to One) + * pgr_pushRelabel(One to Many) + * pgr_pushRelabel(Many to One) + * pgr_pushRelabel(Many to Many) + * pgr_edmondsKarp(One to One) + * pgr_edmondsKarp(One to Many) + * pgr_edmondsKarp(Many to One) + * pgr_edmondsKarp(Many to Many) + * pgr_boykovKolmogorov (One to One) + * pgr_boykovKolmogorov (One to Many) + * pgr_boykovKolmogorov (Many to One) + * pgr_boykovKolmogorov (Many to Many) * pgr_maxCardinalityMatching * pgr_maxFlow - * pgr_edgeDisjointPaths(one to one) - * pgr_edgeDisjointPaths(one to many) - * pgr_edgeDisjointPaths(many to one) - * pgr_edgeDisjointPaths(many to many) + * pgr_edgeDisjointPaths(One to One) + * pgr_edgeDisjointPaths(One to Many) + * pgr_edgeDisjointPaths(Many to One) + * pgr_edgeDisjointPaths(Many to Many) * Components family @@ -1144,7 +1325,7 @@ on Github. * pgr_floydWarshall * pgr_johnson - * pgr_astar + * pgr_aStar * pgr_bdAstar * pgr_bdDijstra * pgr_alphashape @@ -1234,13 +1415,15 @@ on Github. pgRouting 2.5.4 Release Notes ------------------------------------------------------------------------------- -To see the issues closed by this release see the `Git closed milestone for 2.5.4 `_ on Github. +To see the issues closed by this release see the `Git closed milestone for 2.5.4 +`_ +on Github. * Fixes server crash on several functions. * pgr_floydWarshall * pgr_johnson - * pgr_astar + * pgr_aStar * pgr_bdAstar * pgr_bdDijstra * pgr_alphashape @@ -1325,29 +1508,29 @@ on Github. * Added path_id, cost and agg_cost columns on the result * Parameter names changed - * The many version results are the union of the one to one version + * The many version results are the union of the One to One version .. rubric:: New Signatures -* pgr_bdAstar(one to one) +* pgr_bdAstar(One to One) -.. rubric:: New Proposed functions +.. rubric:: New proposed functions. -* pgr_bdAstar(one to many) -* pgr_bdAstar(many to one) -* pgr_bdAstar(many to many) -* pgr_bdAstarCost(one to one) -* pgr_bdAstarCost(one to many) -* pgr_bdAstarCost(many to one) -* pgr_bdAstarCost(many to many) +* pgr_bdAstar(One to Many) +* pgr_bdAstar(Many to One) +* pgr_bdAstar(Many to Many) +* pgr_bdAstarCost(One to One) +* pgr_bdAstarCost(One to Many) +* pgr_bdAstarCost(Many to One) +* pgr_bdAstarCost(Many to Many) * pgr_bdAstarCostMatrix -* pgr_bdDijkstra(one to many) -* pgr_bdDijkstra(many to one) -* pgr_bdDijkstra(many to many) -* pgr_bdDijkstraCost(one to one) -* pgr_bdDijkstraCost(one to many) -* pgr_bdDijkstraCost(many to one) -* pgr_bdDijkstraCost(many to many) +* pgr_bdDijkstra(One to Many) +* pgr_bdDijkstra(Many to One) +* pgr_bdDijkstra(Many to Many) +* pgr_bdDijkstraCost(One to One) +* pgr_bdDijkstraCost(One to Many) +* pgr_bdDijkstraCost(Many to One) +* pgr_bdDijkstraCost(Many to Many) * pgr_bdDijkstraCostMatrix * pgr_lineGraph * pgr_lineGraphFull @@ -1419,24 +1602,24 @@ To see the issues closed by this release see the `Git closed issues for 2.4.0 `_ on Github. -.. rubric:: New Signatures +.. rubric:: New Functions * pgr_bdDijkstra -.. rubric:: New Proposed Signatures +.. rubric:: New proposed signatures: * pgr_maxFlow -* pgr_astar(one to many) -* pgr_astar(many to one) -* pgr_astar(many to many) -* pgr_astarCost(one to one) -* pgr_astarCost(one to many) -* pgr_astarCost(many to one) -* pgr_astarCost(many to many) -* pgr_astarCostMatrix +* pgr_aStar(One to Many) +* pgr_aStar(Many to One) +* pgr_aStar(Many to Many) +* pgr_aStarCost(One to One) +* pgr_aStarCost(One to Many) +* pgr_aStarCost(Many to One) +* pgr_aStarCost(Many to Many) +* pgr_aStarCostMatrix -.. rubric:: Deprecated signatures +.. rubric:: Deprecated signatures. * pgr_bddijkstra - use pgr_bdDijkstra instead @@ -1504,34 +1687,34 @@ on Github. * pgr_eucledianTSP -.. rubric:: New Proposed functions +.. rubric:: New proposed functions. * pgr_dijkstraCostMatrix * pgr_withPointsCostMatrix -* pgr_maxFlowPushRelabel(one to one) -* pgr_maxFlowPushRelabel(one to many) -* pgr_maxFlowPushRelabel(many to one) -* pgr_maxFlowPushRelabel(many to many) -* pgr_maxFlowEdmondsKarp(one to one) -* pgr_maxFlowEdmondsKarp(one to many) -* pgr_maxFlowEdmondsKarp(many to one) -* pgr_maxFlowEdmondsKarp(many to many) -* pgr_maxFlowBoykovKolmogorov (one to one) -* pgr_maxFlowBoykovKolmogorov (one to many) -* pgr_maxFlowBoykovKolmogorov (many to one) -* pgr_maxFlowBoykovKolmogorov (many to many) +* pgr_maxFlowPushRelabel(One to One) +* pgr_maxFlowPushRelabel(One to Many) +* pgr_maxFlowPushRelabel(Many to One) +* pgr_maxFlowPushRelabel(Many to Many) +* pgr_maxFlowEdmondsKarp(One to One) +* pgr_maxFlowEdmondsKarp(One to Many) +* pgr_maxFlowEdmondsKarp(Many to One) +* pgr_maxFlowEdmondsKarp(Many to Many) +* pgr_maxFlowBoykovKolmogorov (One to One) +* pgr_maxFlowBoykovKolmogorov (One to Many) +* pgr_maxFlowBoykovKolmogorov (Many to One) +* pgr_maxFlowBoykovKolmogorov (Many to Many) * pgr_maximumCardinalityMatching -* pgr_edgeDisjointPaths(one to one) -* pgr_edgeDisjointPaths(one to many) -* pgr_edgeDisjointPaths(many to one) -* pgr_edgeDisjointPaths(many to many) +* pgr_edgeDisjointPaths(One to One) +* pgr_edgeDisjointPaths(One to Many) +* pgr_edgeDisjointPaths(Many to One) +* pgr_edgeDisjointPaths(Many to Many) * pgr_contractGraph .. rubric:: Deprecated signatures * pgr_tsp - use pgr_TSP or pgr_eucledianTSP instead -* pgr_astar - use pgr_aStar instead +* pgr_aStar - use pgr_aStar instead .. rubric:: Deprecated Functions @@ -1624,21 +1807,21 @@ on Github. - pgr_floydWarshall - pgr_Johnson -- pgr_dijkstraCost(one to one) -- pgr_dijkstraCost(one to many) -- pgr_dijkstraCost(many to one) -- pgr_dijkstraCost(many to many) +- pgr_dijkstraCost(One to One) +- pgr_dijkstraCost(One to Many) +- pgr_dijkstraCost(Many to One) +- pgr_dijkstraCost(Many to Many) .. rubric:: Proposed Functionality -- pgr_withPoints(one to one) -- pgr_withPoints(one to many) -- pgr_withPoints(many to one) -- pgr_withPoints(many to many) -- pgr_withPointsCost(one to one) -- pgr_withPointsCost(one to many) -- pgr_withPointsCost(many to one) -- pgr_withPointsCost(many to many) +- pgr_withPoints(One to One) +- pgr_withPoints(One to Many) +- pgr_withPoints(Many to One) +- pgr_withPoints(Many to Many) +- pgr_withPointsCost(One to One) +- pgr_withPointsCost(One to Many) +- pgr_withPointsCost(Many to One) +- pgr_withPointsCost(Many to Many) - pgr_withPointsDD(single vertex) - pgr_withPointsDD(multiple vertices) - pgr_withPointsKSP @@ -1672,14 +1855,14 @@ on Github. .. rubric:: New Signatures -- pgr_dijkstra(one to many) -- pgr_dijkstra(many to one) -- pgr_dijkstra(many to many) +- pgr_dijkstra(One to Many) +- pgr_dijkstra(Many to One) +- pgr_dijkstra(Many to Many) - pgr_drivingDistance(multiple vertices) .. rubric:: Refactored -- pgr_dijkstra(one to one) +- pgr_dijkstra(One to One) - pgr_ksp - pgr_drivingDistance(single vertex) diff --git a/doc/src/routingFunctions.rst b/doc/src/routingFunctions.rst index 59a76a6e72..8670804047 100644 --- a/doc/src/routingFunctions.rst +++ b/doc/src/routingFunctions.rst @@ -7,8 +7,6 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| - ******************************************************************************* Function Families @@ -21,84 +19,93 @@ Function Families :doc:`allpairs-family` .. include:: allpairs-family.rst - :start-after: index from here - :end-before: index to here + :start-after: official-start + :end-before: official-end :doc:`aStar-family` .. include:: aStar-family.rst - :start-after: index from here - :end-before: index to here + :start-after: official-start + :end-before: official-end :doc:`bdAstar-family` .. include:: bdAstar-family.rst - :start-after: index from here - :end-before: index to here + :start-after: official-start + :end-before: official-end :doc:`bdDijkstra-family` .. include:: bdDijkstra-family.rst - :start-after: index from here - :end-before: index to here + :start-after: official-start + :end-before: official-end :doc:`components-family` .. include:: components-family.rst - :start-after: index from here - :end-before: index to here + :start-after: official-start + :end-before: official-end :doc:`contraction-family` .. include:: contraction-family.rst - :start-after: index from here - :end-before: index to here + :start-after: official-start + :end-before: official-end :doc:`dijkstra-family` .. include:: dijkstra-family.rst - :start-after: index from here - :end-before: index to here + :start-after: official-start + :end-before: official-end :doc:`flow-family` .. include:: flow-family.rst - :start-after: index from here - :end-before: index to here + :start-after: official-start + :end-before: official-end :doc:`kruskal-family` .. include:: kruskal-family.rst - :start-after: index from here - :end-before: index to here + :start-after: official-start + :end-before: official-end + +:doc:`metrics-family` + +.. include:: metrics-family.rst + :start-after: official-start + :end-before: official-end :doc:`prim-family` .. include:: prim-family.rst - :start-after: index from here - :end-before: index to here + :start-after: official-start + :end-before: official-end :doc:`reference` .. include:: reference.rst - :start-after: index from here - :end-before: index to here + :start-after: official-start + :end-before: official-end :doc:`topology-functions` .. include:: topology-functions.rst - :start-after: topology_index_start - :end-before: topology_index_end + :start-after: official-start + :end-before: official-end :doc:`TSP-family` .. include:: TSP-family.rst - :start-after: index from here - :end-before: index to here + :start-after: official-start + :end-before: official-end :doc:`pgr_trsp` - Turn Restriction Shortest Path (TRSP) +.. rubric:: Utilities family + +:doc:`pgr_findCloseEdges` Functions by categories =============================================================================== @@ -106,45 +113,45 @@ Functions by categories :doc:`cost-category` .. include:: cost-category.rst - :start-after: index from here - :end-before: index to here + :start-after: official-start + :end-before: official-end :doc:`costMatrix-category` .. include:: costMatrix-category.rst - :start-after: index from here - :end-before: index to here + :start-after: official-start + :end-before: official-end :doc:`drivingDistance-category` .. include:: drivingDistance-category.rst - :start-after: index from here - :end-before: index to here + :start-after: official-start + :end-before: official-end :doc:`KSP-category` .. include:: KSP-category.rst - :start-after: index from here - :end-before: index to here + :start-after: official-start + :end-before: official-end -:doc:`spanningTree-family` +:doc:`spanningTree-category` -.. include:: spanningTree-family.rst - :start-after: index from here - :end-before: index to here +.. include:: spanningTree-category.rst + :start-after: official-start + :end-before: official-end :doc:`BFS-category` .. include:: BFS-category.rst - :start-after: index from here - :end-before: index to here + :start-after: official-start + :end-before: official-end :doc:`DFS-category` .. include:: DFS-category.rst - :start-after: index from here - :end-before: index to here + :start-after: official-start + :end-before: official-end .. to-here @@ -160,21 +167,26 @@ Functions by categories dijkstra-family flow-family kruskal-family + metrics-family prim-family reference topology-functions TSP-family - spanningTree-family - KSP-category + pgr_findCloseEdges .. toctree:: :hidden: + BFS-category cost-category costMatrix-category + DFS-category drivingDistance-category - spanningTree-family - BFS-category + KSP-category + spanningTree-category + via-category + VRP-category + withPoints-category See Also ------------------------------------------------------------------------------- diff --git a/doc/src/sampledata.rst b/doc/src/sampledata.rst index 7535489873..cc49627431 100644 --- a/doc/src/sampledata.rst +++ b/doc/src/sampledata.rst @@ -15,8 +15,8 @@ Sample Data The documentation provides very simple example queries based on a small sample network that resembles a city. -To be able to execute the mayority of the examples queries, follow the -instructions bellow. +To be able to execute the majority of the examples queries, follow the +instructions below. .. contents:: :local: @@ -31,7 +31,7 @@ The following city is to be inserted into the database: .. figure:: /images/Fig1-originalData.png Information known at this point is the geometry of the edges, cost values, -cpacity values, category values and some locations that are not in the graph. +capacity values, category values and some locations that are not in the graph. The process to have working topology starts by inserting the edges. After that everything else is calculated. @@ -40,9 +40,9 @@ Edges ............................................................................... The database design for the documentation of pgRouting, keeps in the same row 2 -segments, one in the direction of the geometry and the second in the oposite -direction. Therfore some information has the ``reverse_`` prefix which -corresponds to the segment on the oposite direction of the geometry. +segments, one in the direction of the geometry and the second in the opposite +direction. Therefore some information has the ``reverse_`` prefix which +corresponds to the segment on the opposite direction of the geometry. .. list-table:: :width: 81 @@ -72,12 +72,12 @@ corresponds to the segment on the oposite direction of the geometry. * - ``x1`` - :math:`x` coordinate of the starting vertex of the geometry. - - For convinience it is saved on the table but can be calculated as + - For convenience it is saved on the table but can be calculated as ``ST_X(ST_StartPoint(geom))``. * - ``y2`` - :math:`y` coordinate of the ending vertex of the geometry. - - For convinience it is saved on the table but can be calculated as + - For convenience it is saved on the table but can be calculated as ``ST_Y(ST_EndPoint(geom))``. * - ``geom`` - The geometry of the segments. @@ -96,11 +96,11 @@ Starting on PostgreSQL 12:: ... Optionally indexes on different columns can be created. -The recomendation is to have +The recommendation is to have * ``id`` indexed. * ``source`` and ``target`` columns indexed to speed up pgRouting queries. -* ``geom`` indexed to speed up gemetry processes that might be needed in the +* ``geom`` indexed to speed up geometry processes that might be needed in the front end. For this small example the indexes are skipped, except for ``id`` @@ -197,27 +197,53 @@ will be stored on a table. * - ``pid`` - A unique identifier. * - ``edge_id`` - - Identifier of the edge nearest edge that allows an arrival to the point. + - Identifier of the nearest segment. * - ``side`` - - Is it on the left, right or both sides of the segment ``edge_id`` + - Is it on the left, right or both sides of the segment ``edge_id``. * - ``fraction`` - Where in the segment is the point located. * - ``geom`` - The geometry of the points. + * - ``distance`` + - The distance between ``geom`` and the segment ``edge_id``. + * - ``edge`` + - A segment that connects the ``geom`` of the point to the closest point + on the segment ``edge_id``. * - ``newPoint`` - - The geometry of the points moved on top of the segment. + - A point on segment ``edge_id`` that is the closest to ``geom``. .. literalinclude:: sampledata.queries :start-after: -- p1 :end-before: -- p2 -Points of interest fillup +Points of interest fill up +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +Inserting the points of interest. + .. literalinclude:: sampledata.queries :start-after: -- p2 :end-before: -- p3 +Filling the rest of the table. + +.. literalinclude:: sampledata.queries + :start-after: -- p3 + :end-before: -- p4 + +Any other additional modification: In this manual, point :math:`6` can be +reached from both sides. + +.. literalinclude:: sampledata.queries + :start-after: -- p4 + :end-before: -- p5 + +The points of interest: + +.. literalinclude:: sampledata.queries + :start-after: -- p6 + :end-before: -- p7 + .. pois_end Support tables @@ -229,7 +255,7 @@ Combinations Many functions can be used with a combinations of ``(source, target)`` pairs when wanting a route from ``source`` to ``target``. -For convinence of this documentations, some combinations will be stored on a +For convenience of this documentation, some combinations will be stored on a table: .. literalinclude:: sampledata.queries @@ -347,7 +373,7 @@ https://www.sintef.no/projectweb/top/pdptw/li-lim-benchmark/ The vehicles ............................................................................... -There are 25 vehciles in the problem all with the same characteristics. +There are 25 vehicles in the problem all with the same characteristics. .. literalinclude:: lc101.queries :start-after: -- q1 @@ -366,7 +392,7 @@ order. The orders ............................................................................... -The original data needs to be converted to an appropiate table: +The original data needs to be converted to an appropriate table: .. literalinclude:: lc101.queries :start-after: -- q3 diff --git a/doc/topologicalSort/CMakeLists.txt b/doc/topologicalSort/CMakeLists.txt deleted file mode 100644 index 9ec20ce2ed..0000000000 --- a/doc/topologicalSort/CMakeLists.txt +++ /dev/null @@ -1,12 +0,0 @@ - -SET(LOCAL_FILES - pgr_topologicalSort.rst - ) - -foreach (f ${LOCAL_FILES}) - configure_file(${f} "${PGR_DOCUMENTATION_SOURCE_DIR}/${f}") - list(APPEND LOCAL_DOC_FILES ${PGR_DOCUMENTATION_SOURCE_DIR}/${f}) -endforeach() - -set(PROJECT_DOC_FILES ${PROJECT_DOC_FILES} ${LOCAL_DOC_FILES} PARENT_SCOPE) - diff --git a/doc/topology/CMakeLists.txt b/doc/topology/CMakeLists.txt index 6f5b114abf..332f7a90bb 100644 --- a/doc/topology/CMakeLists.txt +++ b/doc/topology/CMakeLists.txt @@ -7,7 +7,6 @@ SET(LOCAL_FILES pgr_createVerticesTable.rst pgr_extractVertices.rst topology-functions.rst - pgr_degree.rst ) foreach (f ${LOCAL_FILES}) diff --git a/doc/topology/pgr_analyzeGraph.rst b/doc/topology/pgr_analyzeGraph.rst index 64c68bb56c..0c13122df5 100644 --- a/doc/topology/pgr_analyzeGraph.rst +++ b/doc/topology/pgr_analyzeGraph.rst @@ -7,10 +7,13 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Topology Family ; pgr_analyzeGraph + single: analyzeGraph +| -pgr_analyzeGraph +``pgr_analyzeGraph`` =============================================================================== ``pgr_analyzeGraph`` — Analyzes the network topology. @@ -19,7 +22,7 @@ pgr_analyzeGraph * Version 2.0.0 - * **Official** function + * Official function. Description @@ -275,12 +278,10 @@ Additional Examples :start-after: -- q28 :end-before: -- q28.1 -The examples use the :doc:`sampledata` network. - - See Also ------------------------------------------------------------------------------- +* :doc:`sampledata` * :doc:`topology-functions` * :doc:`pgr_analyzeOneWay` * :doc:`pgr_createVerticesTable` diff --git a/doc/topology/pgr_analyzeOneWay.rst b/doc/topology/pgr_analyzeOneWay.rst index a5dd2c6d18..c2d864b43f 100644 --- a/doc/topology/pgr_analyzeOneWay.rst +++ b/doc/topology/pgr_analyzeOneWay.rst @@ -7,10 +7,13 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Topology Family ; pgr_analyzeOneWay + single: analyzeOneWay +| -pgr_analyzeOneWay +``pgr_analyzeOneWay`` =============================================================================== ``pgr_analyzeOneWay`` — Analyzes oneway Sstreets and identifies flipped segments. @@ -22,7 +25,7 @@ segments. * Version 2.0.0 - * **Official** function + * Official function. Description @@ -57,6 +60,8 @@ table _vertices_pgr that stores the vertices information. - Use :doc:`pgr_createVerticesTable` to create the vertices table. - Use :doc:`pgr_createTopology` to create the topology and the vertices table. +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- diff --git a/doc/topology/pgr_createTopology.rst b/doc/topology/pgr_createTopology.rst index 9e4886d9ec..b5c1499d99 100644 --- a/doc/topology/pgr_createTopology.rst +++ b/doc/topology/pgr_createTopology.rst @@ -7,10 +7,13 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Topology Family ; pgr_createTopology + single: createTopology +| -pgr_createTopology +``pgr_createTopology`` =============================================================================== ``pgr_createTopology`` — Builds a network topology based on the geometry @@ -20,8 +23,8 @@ information. * Version 2.0.0 + * Official function. * Renamed from version 1.x - * **Official** function Description ------------------------------------------------------------------------------- @@ -32,6 +35,8 @@ The function returns: created. - ``FAIL`` when the network topology was not built due to an error. +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- @@ -268,11 +273,10 @@ the rest of the edges. :start-after: --q17 :end-before: --q17.1 -The example uses the :doc:`sampledata` network. - See Also ------------------------------------------------------------------------------- +* :doc:`sampledata` * :doc:`topology-functions` * :doc:`pgr_createVerticesTable` * :doc:`pgr_analyzeGraph` diff --git a/doc/topology/pgr_createVerticesTable.rst b/doc/topology/pgr_createVerticesTable.rst index b17ad3d10a..0ad78639cb 100644 --- a/doc/topology/pgr_createVerticesTable.rst +++ b/doc/topology/pgr_createVerticesTable.rst @@ -7,10 +7,13 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Topology Family ; pgr_createVerticesTable + single: createVerticesTable +| -pgr_createVerticesTable +``pgr_createVerticesTable`` =============================================================================== ``pgr_createVerticesTable`` — Reconstructs the vertices table based on the @@ -20,8 +23,8 @@ source and target information. * Version 2.0.0 + * Official function. * Renamed from version 1.x - * **Official** function Description ------------------------------------------------------------------------------- @@ -31,6 +34,8 @@ The function returns: - ``OK`` after the vertices table has been reconstructed. - ``FAIL`` when the vertices table was not reconstructed due to an error. +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- @@ -271,11 +276,10 @@ values for the column names do not match the column names of the table. :start-after: --q17 :end-before: --q17.1 -The example uses the :doc:`sampledata` network. - See Also ------------------------------------------------------------------------------- +* :doc:`sampledata` * :doc:`topology-functions` for an overview of a topology for routing algorithms. * :doc:`pgr_createTopology` ` to create a topology based on diff --git a/doc/topology/pgr_degree.rst b/doc/topology/pgr_degree.rst deleted file mode 100644 index 4b474714ae..0000000000 --- a/doc/topology/pgr_degree.rst +++ /dev/null @@ -1,197 +0,0 @@ -.. - **************************************************************************** - pgRouting Manual - Copyright(c) pgRouting Contributors - - This documentation is licensed under a Creative Commons Attribution-Share - Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ - **************************************************************************** - -| - - -``pgr_degree`` -- Proposed -=============================================================================== - -``pgr_degree`` — For each vertex in an undirected graph, return the count of edges incident to the vertex. - - -.. include:: proposed.rst - :start-after: stable-begin-warning - :end-before: stable-end-warning - -.. rubric:: Availability - -* Version 3.4.0 - - * New **proposed** function - - -Description -------------------------------------------------------------------------------- - -Calculates the degree of the vertices of an **undirected** graph - - -Signatures -------------------------------------------------------------------------------- - -.. index:: - single: pgr_degree - Proposed on v3.4 - -.. admonition:: \ \ - :class: signatures - - | pgr_degree(`Edges SQL`_ , `Vertex SQL`_, [``dryrun``]) - - | RETURNS SETOF |result-degree| - | OR EMTPY SET - -:Example: Extracting the vertex information - -pgr_degree can utilize output from `pgr_extractVertices` or can have `pgr_extractVertices` embedded in the call. -For decent size networks, it is best to prep your vertices table before hand and use that vertices table -for pgr_degree calls. - -.. literalinclude:: degree.queries - :start-after: -- q1 - :end-before: -- q2 - - -Parameters -------------------------------------------------------------------------------- - -============== ======== ================================ -Parameter Type Description -============== ======== ================================ -`Edges SQL`_ ``TEXT`` `Edges SQL`_ as described below -`Vertex SQL`_ ``TEXT`` `Vertex SQL`_ as described below -============== ======== ================================ - -Optional parameters -------------------------------------------------------------------------------- - -.. TODO move to pgRouting concepts - -=========== ============= ========== ======================================= -Parameter Type Default Description -=========== ============= ========== ======================================= -``dryrun`` ``BOOLEAN`` ``false`` * When true do not process and get in a - NOTICE the resulting query. -=========== ============= ========== ======================================= - -Inner Queries -------------------------------------------------------------------------------- - -.. contents:: - :local: - -Edges SQL -............................................................................... - -.. TODO move to pgRouting concepts - -================= =================== =================================== -Column Type Description -================= =================== =================================== -``id`` ``BIGINT`` Identifier of the edge. -================= =================== =================================== - -Vertex SQL -............................................................................... - -.. TODO move to pgRouting concepts - -.. list-table:: - :width: 81 - :widths: auto - :header-rows: 1 - - * - Column - - Type - - Description - * - ``id`` - - ``BIGINT`` - - Identifier of the first end point vertex of the edge. - * - ``in_edges`` - - ``BIGINT[]`` - - Array of identifiers of the edges that have the vertex ``id`` as *first - end point*. - - * When missing, ``out_edges`` must exist. - * - ``out_edges`` - - ``BIGINT[]`` - - Array of identifiers of the edges that have the vertex ``id`` as *second - end point*. - - * When missing, ``in_edges`` must exist. - - -Result columns -------------------------------------------------------------------------------- - -.. TODO move to pgRouting concepts - -.. list-table:: - :width: 81 - :widths: auto - :header-rows: 1 - - * - Column - - Type - - Description - * - ``node`` - - ``BIGINT`` - - Vertex identifier - * - ``degree`` - - ``BIGINT`` - - Number of edges that are incident to the vertex ``id`` - -Additional Examples -------------------------------------------------------------------------------- - -.. contents:: - :local: - -Degree of a sub graph -............................................................................... - -.. literalinclude:: degree.queries - :start-after: -- q2 - :end-before: -- q3 - -Dry run execution -............................................................................... - -To get the query generated used to get the vertex information, use ``dryrun => -true``. - -The results can be used as base code to make a refinement based on the backend -development needs. - -.. literalinclude:: degree.queries - :start-after: -- q3 - :end-before: -- q4 - -Degree from an existing table -............................................................................... -If you have a vertices table already built using ``pgr_extractVertices`` -and want the degree of the whole graph rather than a subset, you can forgo using pgr_degree -and work with the ``in_edges`` and ``out_edges`` columns directly. - - -.. include:: pgRouting-concepts.rst - :start-after: degree_from_table_start - :end-before: degree_from_table_end - - -See Also -------------------------------------------------------------------------------- - -* :doc:`topology-functions` -* :doc:`pgr_extractVertices` - -.. rubric:: Indices and tables - -* :ref:`genindex` -* :ref:`search` diff --git a/doc/topology/pgr_extractVertices.rst b/doc/topology/pgr_extractVertices.rst index fed52d23af..d0e0e5c42f 100644 --- a/doc/topology/pgr_extractVertices.rst +++ b/doc/topology/pgr_extractVertices.rst @@ -7,28 +7,31 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Topology Family ; pgr_extractVertices + single: extractVertices +| -pgr_extractVertices -- Proposed +``pgr_extractVertices`` =============================================================================== ``pgr_extractVertices`` — Extracts the vertices information +.. rubric:: Availability -.. include:: proposed.rst - :start-after: stable-begin-warning - :end-before: stable-end-warning +.. rubric:: Version 3.8.0 -.. rubric:: Availability +* Error messages adjustment. +* Function promoted to official. -* Version 3.3.0 +.. rubric:: Version 3.3.0 - * Classified as **proposed** function +* Function promoted to proposed. -* Version 3.0.0 +.. rubric:: Version 3.0.0 - * New **experimental** function +* New experimental function. Description @@ -41,11 +44,12 @@ of edges of a graph. edges +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- -.. index:: - single: pgr_extractVertices - Proposed on v3.3 +.. rubric:: Summary .. admonition:: \ \ :class: signatures diff --git a/doc/topology/pgr_nodeNetwork.rst b/doc/topology/pgr_nodeNetwork.rst index 239cf54858..2ded2fa5d6 100644 --- a/doc/topology/pgr_nodeNetwork.rst +++ b/doc/topology/pgr_nodeNetwork.rst @@ -7,10 +7,13 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Topology Family ; pgr_nodeNetwork + single: nodeNetwork +| -pgr_nodeNetwork +``pgr_nodeNetwork`` =============================================================================== ``pgr_nodeNetwork`` - Nodes an network edge table. @@ -35,7 +38,7 @@ edges into a new table. * Version 2.0.0 - * **Official** function + * Official function. Description diff --git a/doc/topology/topology-functions.rst b/doc/topology/topology-functions.rst index 3ecedd7fd6..d44694828c 100644 --- a/doc/topology/topology-functions.rst +++ b/doc/topology/topology-functions.rst @@ -7,8 +7,9 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: Topology Family +| Topology - Family of Functions =============================================================================== @@ -21,19 +22,7 @@ undirected, if an edge is one way on a directed graph, and depending on the final application needs, suitable topology(s) need to be created. -pgRouting suplies some functions to create a routing topology and to analyze the -topology. - -Additional functions to create a graph: - -* :doc:`contraction-family` - -Additional functions to analyze a graph: - -* :doc:`components-family` - - -.. topology_index_start +.. official-start The following functions modify the database directly therefore the user must have special permissions given by the administrators to use them. @@ -45,26 +34,23 @@ have special permissions given by the administrators to use them. table. - :doc:`pgr_analyzeOneWay` - to analyze directionality of the edges. - :doc:`pgr_nodeNetwork` - to create nodes to a not noded edge table. +- :doc:`pgr_extractVertices` - Extracts vertex information based on the edge + table information. -.. topology_index_end - - +.. official-end -.. rubric:: Proposed +pgRouting supplies some functions to create a routing topology and to analyze the +topology. -.. include:: proposed.rst - :start-after: stable-begin-warning - :end-before: stable-end-warning +Additional functions to create a graph: -.. topology_proposed_start +* :doc:`contraction-family` -These proposed functions do not modify the database. +Additional functions to analyze a graph: -- :doc:`pgr_degree` - Returns a set of vertices and corresponding count of incidet edges to the vertex. -- :doc:`pgr_extractVertices` - Extracts vertex information based on the edge - table information. +* :doc:`components-family` -.. topology_proposed_end +.. proposed-end .. toctree:: :hidden: @@ -75,7 +61,6 @@ These proposed functions do not modify the database. pgr_analyzeOneWay pgr_nodeNetwork pgr_extractVertices - pgr_degree See Also ------------------------------------------------------------------------------- diff --git a/doc/transitiveClosure/pgr_transitiveClosure.rst b/doc/transitiveClosure/pgr_transitiveClosure.rst index 0417be5f79..340cd472e2 100644 --- a/doc/transitiveClosure/pgr_transitiveClosure.rst +++ b/doc/transitiveClosure/pgr_transitiveClosure.rst @@ -7,28 +7,26 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Miscellaneous Algorithms ; pgr_transitiveClosure + single: transitiveClosure - Experimental on v3.0 +| ``pgr_transitiveClosure`` - Experimental =============================================================================== ``pgr_transitiveClosure`` — Transitive closure graph of a directed graph. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/transitive_closure.html - - Boost Graph Inside - .. include:: experimental.rst - :start-after: begin-warn-expr - :end-before: end-warn-expr + :start-after: warning-begin + :end-before: end-warning .. rubric:: Availability * Version 3.0.0 - * New **experimental** function + * New experimental function. Description @@ -49,6 +47,7 @@ The main characteristics are: * The returned graph is compresed * Running time: :math:`O(|V||E|)` +|Boost| Boost Graph Inside Signatures ------------------------------------------------------------------------------- @@ -57,9 +56,6 @@ Signatures The pgr_transitiveClosure function has the following signature: -.. index:: - single: transitiveClosure - Experimental on v3.0 - .. admonition:: \ \ :class: signatures @@ -119,6 +115,7 @@ See Also ------------------------------------------------------------------------------- * :doc:`sampledata` +* `Boost: transitive closure `__ * https://en.wikipedia.org/wiki/Transitive_closure .. rubric:: Indices and tables diff --git a/doc/traversal/CMakeLists.txt b/doc/traversal/CMakeLists.txt index 32743fe889..ca3cfe4d3b 100644 --- a/doc/traversal/CMakeLists.txt +++ b/doc/traversal/CMakeLists.txt @@ -1,10 +1,10 @@ SET(LOCAL_FILES - traversal-family.rst - BFS-category.rst - DFS-category.rst + pgr_binaryBreadthFirstSearch.rst + pgr_breadthFirstSearch.rst pgr_depthFirstSearch.rst - ) + traversal-family.rst +) foreach (f ${LOCAL_FILES}) configure_file(${f} "${PGR_DOCUMENTATION_SOURCE_DIR}/${f}") diff --git a/doc/traversal/images/CMakeLists.txt b/doc/traversal/images/CMakeLists.txt index 8e2e4ea0a4..745f68a14a 100644 --- a/doc/traversal/images/CMakeLists.txt +++ b/doc/traversal/images/CMakeLists.txt @@ -1,6 +1,8 @@ SET(LOCAL_FILES Fig1-AscendingOrder.png Fig2-DescendingOrder.png + bfs-ascending.png + bfs-descending.png ) foreach (f ${LOCAL_FILES}) diff --git a/doc/breadthFirstSearch/images/bfs-ascending.png b/doc/traversal/images/bfs-ascending.png similarity index 100% rename from doc/breadthFirstSearch/images/bfs-ascending.png rename to doc/traversal/images/bfs-ascending.png diff --git a/doc/breadthFirstSearch/images/bfs-descending.png b/doc/traversal/images/bfs-descending.png similarity index 100% rename from doc/breadthFirstSearch/images/bfs-descending.png rename to doc/traversal/images/bfs-descending.png diff --git a/doc/breadthFirstSearch/pgr_binaryBreadthFirstSearch.rst b/doc/traversal/pgr_binaryBreadthFirstSearch.rst similarity index 88% rename from doc/breadthFirstSearch/pgr_binaryBreadthFirstSearch.rst rename to doc/traversal/pgr_binaryBreadthFirstSearch.rst index 010310100b..ebdedac726 100644 --- a/doc/breadthFirstSearch/pgr_binaryBreadthFirstSearch.rst +++ b/doc/traversal/pgr_binaryBreadthFirstSearch.rst @@ -7,8 +7,12 @@ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Traversal Family ; pgr_binaryBreadthFirstSearch - Experimental + single: Breadth First Search Category ; pgr_binaryBreadthFirstSearch - Experimental + single: binaryBreadthFirstSearch - Experimental +| ``pgr_binaryBreadthFirstSearch`` - Experimental =============================================================================== @@ -19,31 +23,21 @@ graph. Any graph whose edge-weights belongs to the set {0,X}, where 'X' is any non-negative integer, is termed as a 'binary graph'. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/breadth_first_search.html - - Boost Graph Inside - .. include:: experimental.rst - :start-after: begin-warn-expr - :end-before: end-warn-expr + :start-after: warning-begin + :end-before: end-warning .. rubric:: Availability * Version 3.2.0 - * New **experimental** signature: + * New experimental signature: - * pgr_binaryBreadthFirstSearch(`Combinations`_) + * pgr_binaryBreadthFirstSearch(Combinations) * Version 3.0.0 - * New **experimental** signatures: - - * pgr_binaryBreadthFirstSearch(`One to One`_) - * pgr_binaryBreadthFirstSearch(`One to Many`_) - * pgr_binaryBreadthFirstSearch(`Many to One`_) - * pgr_binaryBreadthFirstSearch(`Many to Many`_) + * New experimental function. Description ------------------------------------------------------------------------------- @@ -77,6 +71,8 @@ edge belongs to the set {0,X}, where 'X' is any non-negative real integer. * Running time: :math:`O(| start\_vids | * |E|)` +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- @@ -98,7 +94,7 @@ Signatures :math:`1``) .. index:: - single: binaryBreadthFirstSearch(One to One) - Experimental on v3.0 + single: binaryBreadthFirstSearch - Experimental ; One to One - Experimental on v3.0 One to One ............................................................................... @@ -118,7 +114,7 @@ One to One :end-before: -- q2 .. index:: - single: binaryBreadthFirstSearch(One to Many) - Experimental on v3.0 + single: binaryBreadthFirstSearch - Experimental ; One to Many - Experimental on v3.0 One to Many ............................................................................... @@ -139,7 +135,7 @@ One to Many :end-before: -- q3 .. index:: - single: binaryBreadthFirstSearch(Many to One) - Experimental on v3.0 + single: binaryBreadthFirstSearch - Experimental ; Many to One - Experimental on v3.0 Many to One ............................................................................... @@ -160,7 +156,7 @@ Many to One :end-before: -- q4 .. index:: - single: binaryBreadthFirstSearch(Many to Many) - Experimental on v3.0 + single: binaryBreadthFirstSearch - Experimental ; Many to Many - Experimental on v3.0 Many to Many ............................................................................... @@ -181,7 +177,7 @@ Many to Many :end-before: -- q5 .. index:: - single: binaryBreadthFirstSearch(Combinations) - Experimental on v3.2 + single: binaryBreadthFirstSearch - Experimental ; Combinations - Experimental on v3.2 Combinations ............................................................................... @@ -259,6 +255,8 @@ Additional Examples See Also ------------------------------------------------------------------------------- * :doc:`sampledata` +* `Boost: Breadth First Search + `__ * https://cp-algorithms.com/graph/01_bfs.html * https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm#Specialized_variants diff --git a/doc/breadthFirstSearch/pgr_breadthFirstSearch.rst b/doc/traversal/pgr_breadthFirstSearch.rst similarity index 89% rename from doc/breadthFirstSearch/pgr_breadthFirstSearch.rst rename to doc/traversal/pgr_breadthFirstSearch.rst index eb8c6d61e2..d8638e6dd0 100644 --- a/doc/breadthFirstSearch/pgr_breadthFirstSearch.rst +++ b/doc/traversal/pgr_breadthFirstSearch.rst @@ -7,8 +7,12 @@ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Traversal Family ; pgr_breadthFirstSearch - Experimental + single: Breadth First Search Category ; pgr_breadthFirstSearch - Experimental + single: breadthFirstSearch - Experimental +| ``pgr_breadthFirstSearch`` - Experimental =============================================================================== @@ -16,23 +20,15 @@ ``pgr_breadthFirstSearch`` — Returns the traversal order(s) using Breadth First Search algorithm. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/breadth_first_search.html - - Boost Graph Inside - .. include:: experimental.rst - :start-after: begin-warn-expr - :end-before: end-warn-expr + :start-after: warning-begin + :end-before: end-warning .. rubric:: Availability * Version 3.0.0 - * New **experimental** signature: - - * ``pgr_breadthFirstSearch`` (`Single Vertex`_) - * ``pgr_breadthFirstSearch`` (`Multiple Vertices`_) + * New experimental function. Description ------------------------------------------------------------------------------- @@ -47,6 +43,8 @@ particular depth. target depth level. * Running time: :math:`O(E + V)` +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- @@ -62,7 +60,7 @@ Signatures | Returns set of |result-bfs| .. index:: - single: breadthFirstSearch(Single vertex) - Experimental on v3.0 + single: breadthFirstSearch - Experimental ; Single vertex - Experimental on v3.0 Single vertex ............................................................................... @@ -83,7 +81,7 @@ Single vertex :end-before: -- q2 .. index:: - single: breadthFirstSearch(Multiple vertices) - Experimental on v3.0 + single: breadthFirstSearch - Experimental ; Multiple vertices - Experimental on v3.0 Multiple vertices ............................................................................... @@ -174,7 +172,7 @@ See Also * :doc:`BFS-category` * :doc:`sampledata` -* `Boost: Breadth First Search algorithm documentation +* `Boost: Breadth First Search `__ * `Wikipedia: Breadth First Search algorithm `__ diff --git a/doc/traversal/pgr_depthFirstSearch.rst b/doc/traversal/pgr_depthFirstSearch.rst index 70560f0d4e..c9c8b35128 100644 --- a/doc/traversal/pgr_depthFirstSearch.rst +++ b/doc/traversal/pgr_depthFirstSearch.rst @@ -7,8 +7,12 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Traversal Family ; pgr_depthFirstSearch - Proposed + single: Depth First Search Category ; pgr_depthFirstSearch - Proposed + single: depthFirstSearch - Proposed +| ``pgr_depthFirstSearch`` - Proposed =============================================================================== @@ -16,27 +20,19 @@ ``pgr_depthFirstSearch`` — Returns a depth first search traversal of the graph. The graph can be directed or undirected. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/depth_first_search.html - - Boost Graph Inside - .. include:: proposed.rst - :start-after: stable-begin-warning - :end-before: stable-end-warning + :start-after: warning-begin + :end-before: end-warning .. rubric:: Availability * Version 3.3.0 - * Promoted to **proposed** function + * Function promoted to proposed. * Version 3.2.0 - * New **experimental** signatures: - - * ``pgr_depthFirstSearch`` (`Single Vertex`_) - * ``pgr_depthFirstSearch`` (`Multiple Vertices`_) + * New experimental function. Description ------------------------------------------------------------------------------- @@ -60,6 +56,8 @@ continues until all the vertices reachable from the root vertex are visited. - The returned values are ordered in ascending order of `start_vid`. - Depth First Search Running time: :math:`O(E + V)` +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- @@ -75,7 +73,7 @@ Signatures | Returns set of |result-bfs| .. index:: - single: depthFirstSearch(Single vertex) - Proposed on v3.3 + single: depthFirstSearch - Proposed ; Single vertex - Proposed on v3.3 Single vertex ............................................................................... @@ -96,7 +94,7 @@ Single vertex :end-before: -- q2 .. index:: - single: depthFirstSearch(Multiple vertices) - Proposed on v3.3 + single: depthFirstSearch - Proposed ; Multiple vertices - Proposed on v3.3 Multiple vertices ............................................................................... @@ -183,9 +181,9 @@ See Also * :doc:`DFS-category` * :doc:`sampledata` -* `Boost: Depth First Search algorithm documentation +* `Boost: Depth First Search `__ -* `Boost: Undirected DFS algorithm documentation +* `Boost: Undirected DFS `__ * `Wikipedia: Depth First Search algorithm `__ diff --git a/doc/traversal/traversal-family.rst b/doc/traversal/traversal-family.rst index 3911a992dd..ec3be222f3 100644 --- a/doc/traversal/traversal-family.rst +++ b/doc/traversal/traversal-family.rst @@ -7,39 +7,36 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: Traversal Family +| Traversal - Family of functions =============================================================================== -.. rubric:: Proposed - .. include:: proposed.rst - :start-after: stable-begin-warning - :end-before: stable-end-warning + :start-after: warning-begin + :end-before: end-warning -.. index from here +.. official-start * :doc:`pgr_depthFirstSearch` - Depth first search traversal of the graph. -.. index to here - -.. rubric:: Experimental +.. official-end .. include:: experimental.rst - :start-after: begin-warn-expr - :end-before: end-warn-expr + :start-after: warning-begin + :end-before: end-warning -.. index experimental from here +.. experimental-start * :doc:`pgr_breadthFirstSearch` - Breath first search traversal of the graph. * :doc:`pgr_binaryBreadthFirstSearch` - Breath first search traversal of the graph. -.. index experimental to here +.. experimental-end -Aditionaly there are 2 categories under this family +Additionally there are 2 categories under this family * :doc:`BFS-category` * :doc:`DFS-category` diff --git a/doc/trsp/TRSP-family.rst b/doc/trsp/TRSP-family.rst index 7eea9cc086..f0e2c17044 100644 --- a/doc/trsp/TRSP-family.rst +++ b/doc/trsp/TRSP-family.rst @@ -7,43 +7,40 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: Turn Restriction Shortest Path Family +| TRSP - Family of functions =============================================================================== When points are also given as input: -.. rubric:: Proposed - .. include:: proposed.rst - :start-after: begin-warning + :start-after: warning-begin :end-before: end-warning -.. index proposed from here +.. proposed-start - :doc:`pgr_trsp` - Vertex - Vertex routing with restrictions. - :doc:`pgr_trspVia` - Via Vertices routing with restrictions. - :doc:`pgr_trsp_withPoints` - Vertex/Point routing with restrictions. - :doc:`pgr_trspVia_withPoints` - Via Vertex/point routing with restrictions. -.. index proposed to here +.. proposed-end .. Warning:: Read the :doc:`migration` about how to migrate from the deprecated TRSP functionality to the new signatures or replacement functions. -.. rubric:: Experimental - .. include:: experimental.rst - :start-after: begin-warn-expr - :end-before: end-warn-expr + :start-after: warning-begin + :end-before: end-warning -.. index experimental from here +.. experimental-start - :doc:`pgr_turnRestrictedPath` - Routing with restrictions. -.. index experimental to here +.. experimental-end .. toctree:: :hidden: diff --git a/doc/trsp/pgr_trsp.rst b/doc/trsp/pgr_trsp.rst index cb979f7322..d63fb62656 100644 --- a/doc/trsp/pgr_trsp.rst +++ b/doc/trsp/pgr_trsp.rst @@ -7,52 +7,52 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Turn Restriction Shortest Path Family ; pgr_trsp + single: Shortest Path Category ; pgr_trsp + single: Restrictions Category ; pgr_trsp + single: trsp +| -pgr_trsp - Proposed +``pgr_trsp`` =============================================================================== ``pgr_trsp`` - routing vertices with restrictions. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/table_of_contents.html - - Boost Graph Inside +.. rubric:: Availability -.. include:: proposed.rst - :start-after: begin-warning - :end-before: end-warning +* Version 4.0.0 -.. rubric:: Availability + * Function promoted to official. * Version 3.4.0 - * New proposed signatures + * New proposed signatures: - * ``pgr_trsp`` (`One to One`_) - * ``pgr_trsp`` (`One to Many`_) - * ``pgr_trsp`` (`Many to One`_) - * ``pgr_trsp`` (`Many to Many`_) - * ``pgr_trsp`` (`Combinations`_) + * pgr_trsp(One to One) + * pgr_trsp(One to Many) + * pgr_trsp(Many to One) + * pgr_trsp(Many to Many) + * pgr_trsp(Combinations) * Deprecated signatures - * ``pgr_trsp(text,integer,integer,boolean,boolean,text)`` - * ``pgr_trsp(text,integer,float,integer,float,boolean,boolean,text)`` - * ``pgr_trspViaVertices(text,anyarray,boolean,boolean,text)`` - * ``pgr_trspviaedges(text,integer[],double precision[],boolean,boolean,text)`` + * pgr_trsp(text,integer,integer,boolean,boolean,text) + * pgr_trsp(text,integer,float,integer,float,boolean,boolean,text) + * pgr_trspViaVertices(text,anyarray,boolean,boolean,text) + * pgr_trspviaedges(text,integer[],double precision[],boolean,boolean,text) * Version 2.1.0 * New prototypes - * ``pgr_trspViaVertices`` - * ``pgr_trspViaEdges`` + * pgr_trspViaVertices + * pgr_trspViaEdges * Version 2.0.0 - * **Official** function + * Official function. Description ------------------------------------------------------------------------------- @@ -72,10 +72,12 @@ The general algorithm is as follows: * Execute the **TRSP** algorithm with restrictions. +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- -.. rubric:: Proposed +.. rubric:: Summary .. admonition:: \ \ :class: signatures @@ -90,7 +92,7 @@ Signatures | OR EMPTY SET .. index:: - single: trsp(One to One) -- Proposed on v3.4 + single: trsp ; One to One One to One ............................................................................... @@ -110,7 +112,7 @@ One to One :end-before: -- q3 .. index:: - single: trsp(One to Many) -- Proposed on v3.4 + single: trsp ; One to Many One to Many ............................................................................... @@ -131,7 +133,7 @@ One to Many :end-before: -- q4 .. index:: - single: trsp(Many to One) -- Proposed on v3.4 + single: trsp ; Many to One Many to One ............................................................................... @@ -152,7 +154,7 @@ Many to One :end-before: -- q5 .. index:: - single: trsp(Many to Many) -- Proposed on v3.4 + single: trsp ; Many to Many Many to Many ............................................................................... @@ -174,7 +176,7 @@ Many to Many :end-before: -- q6 .. index:: - single: trsp(Combinations) - Proposed on v3.4 + single: trsp ; Combinations Combinations ............................................................................... diff --git a/doc/trsp/pgr_trspVia.rst b/doc/trsp/pgr_trspVia.rst index 546eedcbc8..4afd743556 100644 --- a/doc/trsp/pgr_trspVia.rst +++ b/doc/trsp/pgr_trspVia.rst @@ -7,30 +7,28 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Turn Restriction Shortest Path Family ; pgr_trspVia + single: Via Category ; pgr_trspVia + single: Restrictions Category ; pgr_trspVia + single: trspVia +| -``pgr_trspVia`` - Proposed +``pgr_trspVia`` =============================================================================== ``pgr_trspVia`` Route that goes through a list of vertices with restrictions. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/table_of_contents.html - - Boost Graph Inside +.. rubric:: Availability -.. include:: proposed.rst - :start-after: stable-begin-warning - :end-before: stable-end-warning +* Version 4.0.0 -.. rubric:: Availability + * Function promoted to official. * Version 3.4.0 - * New proposed function: - - * ``pgr_trspVia`` (`One Via`_) + * New proposed function. Description ------------------------------------------------------------------------------- @@ -49,12 +47,13 @@ The general algorithm is as follows: * Execute the **TRSP** algorithm with restrictions for the paths. * **NOTE** when this is done, ``U_turn_on_edge`` flag is ignored. +|Boost| Boost Graph Inside Signatures ------------------------------------------------------------------------------- .. index:: - single: trspVia - Proposed on v3.4 + single: trspVia ; One Via One Via ............................................................................... @@ -231,7 +230,7 @@ See Also ------------------------------------------------------------------------------- * :doc:`via-category` -* :doc:`sampledata` network. +* :doc:`sampledata` .. rubric:: Indices and tables diff --git a/doc/trsp/pgr_trspVia_withPoints.rst b/doc/trsp/pgr_trspVia_withPoints.rst index 1c0714e480..b4e310f0fc 100644 --- a/doc/trsp/pgr_trspVia_withPoints.rst +++ b/doc/trsp/pgr_trspVia_withPoints.rst @@ -7,31 +7,30 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Turn Restriction Shortest Path Family ; pgr_trspVia_withPoints + single: Via Category ; pgr_trspVia_withPoints + single: Restrictions Category ; pgr_trspVia_withPoints + single: With Points Category ; pgr_trspVia_withPoints + single: trspVia_withPoints +| -``pgr_trspVia_withPoints`` - Proposed +``pgr_trspVia_withPoints`` =============================================================================== ``pgr_trspVia_withPoints`` - Route that goes through a list of vertices and/or points with restrictions. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/table_of_contents.html - - Boost Graph Inside +.. rubric:: Availability -.. include:: proposed.rst - :start-after: stable-begin-warning - :end-before: stable-end-warning +* Version 4.0.0 -.. rubric:: Availability + * Function promoted to official. * Version 3.4.0 - * New proposed function: - - ``pgr_trspVia_withPoints`` (`One Via`_) + * New proposed function. Description ------------------------------------------------------------------------------- @@ -60,11 +59,13 @@ The general algorithm is as follows: .. Note:: Do not use negative values on identifiers of the inner queries. +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- .. index:: - single: trspVia_withPoints - Proposed on v3.4 + single: trspVia_withPoints ; One Via One Via ............................................................................... @@ -281,7 +282,7 @@ See Also * :doc:`TRSP-family` * :doc:`via-category` * :doc:`withPoints-category` -* :doc:`sampledata` network. +* :doc:`sampledata` .. rubric:: Indices and tables diff --git a/doc/trsp/pgr_trsp_withPoints.rst b/doc/trsp/pgr_trsp_withPoints.rst index 2b66b43d6a..da09cc8019 100644 --- a/doc/trsp/pgr_trsp_withPoints.rst +++ b/doc/trsp/pgr_trsp_withPoints.rst @@ -7,34 +7,29 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Turn Restriction Shortest Path Family ; pgr_trsp_withPoints + single: Shortest Path Category ; pgr_trsp_withPoints + single: Restrictions Category ; pgr_trsp_withPoints + single: With Points Category ; pgr_trsp_withPoints + single: trsp_withPoints +| -pgr_trsp_withPoints - Proposed +``pgr_trsp_withPoints`` =============================================================================== ``pgr_trsp_withPoints`` Routing Vertex/Point with restrictions. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/table_of_contents.html - - Boost Graph Inside +.. rubric:: Availability -.. include:: proposed.rst - :start-after: begin-warning - :end-before: end-warning +* Version 4.0.0 -.. rubric:: Availability + * Function promoted to official. * Version 3.4.0 - * New proposed signatures: - - * ``pgr_trsp_withPoints`` (`One to One`_) - * ``pgr_trsp_withPoints`` (`One to Many`_) - * ``pgr_trsp_withPoints`` (`Many to One`_) - * ``pgr_trsp_withPoints`` (`Many to Many`_) - * ``pgr_trsp_withPoints`` (`Combinations`_) + * New proposed function. Description ------------------------------------------------------------------------------- @@ -69,6 +64,8 @@ Characteristics: * Running time: :math:`O(|start\_vids|\times(V \log V + E))` +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- @@ -88,7 +85,7 @@ Signatures | OR EMPTY SET .. index:: - single: trsp_withPoints(One to One) - Proposed on v3.4 + single: trsp_withPoints ; One to One One to One ............................................................................... @@ -110,7 +107,7 @@ One to One :end-before: --e2 .. index:: - single: trsp_withPoints(One to Many) - Proposed on v3.4 + single: trsp_withPoints ; One to Many One to Many ............................................................................... @@ -131,7 +128,7 @@ One to Many :end-before: --e3 .. index:: - single: trsp_withPoints(Many to One) - Proposed on v3.4 + single: trsp_withPoints ; Many to One Many to One ............................................................................... @@ -152,7 +149,7 @@ Many to One :end-before: --e4 .. index:: - single: trsp_withPoints(Many to Many) - Proposed on v3.4 + single: trsp_withPoints ; Many to Many Many to Many ............................................................................... @@ -174,7 +171,7 @@ Many to Many :end-before: --e5 .. index:: - single: trsp_withPoints(Combinations) - Proposed on v3.4 + single: trsp_withPoints ; Combinations Combinations ............................................................................... diff --git a/doc/trsp/pgr_turnRestrictedPath.rst b/doc/trsp/pgr_turnRestrictedPath.rst index 59fd8379c9..a07fe2d365 100644 --- a/doc/trsp/pgr_turnRestrictedPath.rst +++ b/doc/trsp/pgr_turnRestrictedPath.rst @@ -7,24 +7,29 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Turn Restriction Shortest Path Family ; pgr_turnRestrictedPath + single: Shortest Path Category ; pgr_turnRestrictedPath + single: Restrictions Category ; pgr_turnRestrictedPath + single: turnRestrictedPath +| -pgr_turnRestrictedPath - Experimental +``pgr_turnRestrictedPath`` - Experimental =============================================================================== -``pgr_turnRestrictedPath`` Using Yen's algorithm Vertex -Vertex routing with +``pgr_turnRestrictedPath`` Using Yen's algorithm Vertex - Vertex routing with restrictions .. include:: experimental.rst - :start-after: begin-warn-expr - :end-before: end-warn-expr + :start-after: warning-begin + :end-before: end-warning .. rubric:: Availability * Version 3.0.0 - * New experimental function + * New experimental function. Description ------------------------------------------------------------------------------- @@ -32,12 +37,11 @@ Description Using Yen's algorithm to obtain K shortest paths and analyze the paths to select the paths that do not use the restrictions +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- -.. index:: - single: turnRestrictedPath - Experimental on v3.0 - .. admonition:: \ \ :class: signatures diff --git a/doc/tsp/TSP-family.rst b/doc/tsp/TSP-family.rst index 7479529e11..3b21d57ef3 100644 --- a/doc/tsp/TSP-family.rst +++ b/doc/tsp/TSP-family.rst @@ -7,18 +7,19 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: Traveling Sales Person Family +| Traveling Sales Person - Family of functions =============================================================================== -.. index from here +.. official-start * :doc:`pgr_TSP` - When input is given as matrix cell information. * :doc:`pgr_TSPeuclidean` - When input are coordinates. -.. index to here +.. official-end .. toctree:: :hidden: @@ -138,7 +139,7 @@ See Also .. rubric:: References -* `Boost's metric appro's metric approximation +* `Boost: metric TSP approx `__ * `University of Waterloo TSP `__ * `Wikipedia: Traveling Salesman Problem diff --git a/doc/tsp/pgr_TSP.rst b/doc/tsp/pgr_TSP.rst index db9db05478..28feb2bc26 100644 --- a/doc/tsp/pgr_TSP.rst +++ b/doc/tsp/pgr_TSP.rst @@ -7,19 +7,16 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Traveling Sales Person Family ; pgr_TSP + single: pgr_TSP +| ``pgr_TSP`` =============================================================================== -* ``pgr_TSP`` - Aproximation using *metric* algorithm. - -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/metric_tsp_approx.html - - Boost Graph Inside - +* ``pgr_TSP`` - Approximation using *metric* algorithm. .. rubric:: Availability: @@ -43,7 +40,7 @@ * Version 2.0.0 - * **Official** function + * Official function. Description @@ -105,6 +102,8 @@ Description - the missing values will be calculated with dijkstra algorithm. +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- @@ -233,7 +232,7 @@ See Also * :doc:`TSP-family` * :doc:`sampledata` -* `Boost's metric appro's metric approximation +* `Boost: metric TSP approx `__ * `Wikipedia: Traveling Salesman Problem `__ diff --git a/doc/tsp/pgr_TSPeuclidean.rst b/doc/tsp/pgr_TSPeuclidean.rst index 0c1e1e4fba..8de9f3817c 100644 --- a/doc/tsp/pgr_TSPeuclidean.rst +++ b/doc/tsp/pgr_TSPeuclidean.rst @@ -7,25 +7,22 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Traveling Sales Person Family ; pgr_TSPeuclidean + single: pgr_TSPeuclidean +| ``pgr_TSPeuclidean`` ============================================================================= -* ``pgr_TSPeuclidean`` - Aproximation using *metric* algorithm. - -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/metric_tsp_approx.html - - Boost Graph Inside - +* ``pgr_TSPeuclidean`` - Approximation using *metric* algorithm. .. rubric:: Availability: * Version 3.2.1 - * Metric Algorithm from `Boost library + * Using `Boost: metric TSP approx `__ * Simulated Annealing Algorithm no longer supported @@ -41,7 +38,7 @@ * Version 2.3.0 - * New **Official** function + * New official function. Description @@ -70,6 +67,7 @@ Description 2, 3.5, 1.0 2, 3.6, 1.1 +|Boost| Boost Graph Inside Signatures ------------------------------------------------------------------------------- @@ -194,8 +192,8 @@ See Also ------------------------------------------------------------------------------- * :doc:`TSP-family` -* :doc:`sampledata` network. -* `Boost's metric appro's metric approximation +* :doc:`sampledata` +* `Boost: metric TSP approx `__ * `University of Waterloo TSP `__ * `Wikipedia: Traveling Salesman Problem diff --git a/doc/utilities/pgr_findCloseEdges.rst b/doc/utilities/pgr_findCloseEdges.rst index 5fcc373353..502ab2989d 100644 --- a/doc/utilities/pgr_findCloseEdges.rst +++ b/doc/utilities/pgr_findCloseEdges.rst @@ -7,28 +7,28 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| - +.. index:: + single: Utilities ; pgr_findCloseEdges + single: findCloseEdges +| ``pgr_findCloseEdges`` =============================================================================== ``pgr_findCloseEdges`` - Finds the close edges to a point geometry. -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/dijkstra_shortest_paths.html - - Boost Graph Inside - .. rubric:: Availability -* Version 3.4.0 +.. rubric:: Version 3.8.0 - * New **proposed** signatures: +* Error messages adjustment. +* ``partial`` option is removed. +* Function promoted to official. - * ``pgr_findCloseEdges`` (`One point`_) - * ``pgr_findCloseEdges`` (`Many points`_) +.. rubric:: Version 3.4.0 + +* New proposed function. Description ------------------------------------------------------------------------------- @@ -39,7 +39,9 @@ point geometry. * The geometries must be in the same coordinate system (have the same SRID). * The code to do the calculations can be obtained for further specific adjustments needed by the application. -* ``EMTPY SET`` is returned on dryrun executions +* ``EMPTY SET`` is returned on dryrun executions + +|Boost| Boost Graph Inside Signatures ------------------------------------------------------------------------------- @@ -51,13 +53,13 @@ Signatures | pgr_findCloseEdges(`Edges SQL`_, **point**, **tolerance**, [**options**]) | pgr_findCloseEdges(`Edges SQL`_, **points**, **tolerance**, [**options**]) - | **options:** ``[cap, partial, dryrun]`` + | **options:** ``[cap, dryrun]`` | Returns set of |result-find| | OR EMPTY SET .. index:: - single: findCloseEdges(One point) + single: findCloseEdges ; One point One point ............................................................................... @@ -66,33 +68,21 @@ One point :class: signatures | pgr_findCloseEdges(`Edges SQL`_, **point**, **tolerance**, [**options**]) - | **options:** ``[cap, partial, dryrun]`` + | **options:** ``[cap, dryrun]`` | Returns set of |result-find| | OR EMPTY SET -:Example: With default values +:Example: Get two close edges to points of interest with :math:`pid = 5` -* Default: ``cap => 1`` - - * Maximum one row answer. -* Default: ``partial => true`` - - * With less calculations as possible. -* Default: ``dryrun => false`` - - * Process query -* Returns - - * values on ``edge_id``, ``fraction``, ``side`` columns. - * ``NULL`` on ``distance``, ``geom``, ``edge`` columns. +* ``cap => 2`` .. literalinclude:: findCloseEdges.queries :start-after: -- q1 :end-before: -- q2 .. index:: - single: findCloseEdges(One point) + single: findCloseEdges ; Many points Many points ............................................................................... @@ -101,29 +91,17 @@ Many points :class: signatures | pgr_findCloseEdges(`Edges SQL`_, **points**, **tolerance**, [**options**]) - | **options:** ``[cap, partial, dryrun]`` + | **options:** ``[cap, dryrun]`` | Returns set of |result-find| | OR EMPTY SET -:Example: Find at most :math:`2` edges close to all vertices on the points of - interest table. - -One answer per point, as small as possible. +:Example: For each points of interests, find the closest edge. .. literalinclude:: findCloseEdges.queries :start-after: -- q2 :end-before: -- q3 -Columns ``edge_id``, ``fraction``, ``side`` and ``geom`` are returned with -values. - -``geom`` contains the original point geometry to assist on deterpartialing to which -point geometry the row belongs to. - -.. index:: - single: findCloseEdges(Many points) - Parameters ------------------------------------------------------------------------------- @@ -165,12 +143,6 @@ Optional parameters - ``INTEGER`` - :math:`1` - Limit output rows - * - ``partial`` - - ``BOOLEAN`` - - ``true`` - - * When ``true`` only columns needed for :doc:`withPoints-category` are - calculated. - * When ``false`` all columns are calculated * - ``dryrun`` - ``BOOLEAN`` - ``false`` @@ -219,127 +191,26 @@ Returns set of |result-find| * When :math:`cap = 1`, it is the closest edge. * - ``fraction`` - ``FLOAT`` - - Value in <0,1> that indicates the relative postition from the first + - Value in <0,1> that indicates the relative position from the first end-point of the edge. * - ``side`` - ``CHAR`` - Value in ``[r, l]`` indicating if the point is: - * In the right ``r``. - * In the left ``l``. + * At the right ``r`` of the segment. * When the point is on the line it is considered to be on the right. + * At the left ``l`` of the segment. * - ``distance`` - ``FLOAT`` - - Distance from point to edge. - - * ``NULL`` when ``cap = 1`` on the `One point`_ signature + - Distance from the point to the edge. * - ``geom`` - ``geometry`` - - ``POINT`` geometry - - * `One Point`_: Contains the point on the edge that is ``fraction`` away - from the starting point of the edge. - * `Many Points`_: Contains the corresponding **original point** + - Original ``POINT`` geometry. * - ``edge`` - ``geometry`` - - ``LINESTRING`` geometry from the **original point** to the closest point - of the edge with identifier ``edge_id`` - - -.. rubric:: One point results - -* The green nodes is the **original point** -* The geometry ``geom`` is a point on the :math:`sp \rightarrow ep` edge. -* The geometry ``edge`` is a line that connects the **original point** with - ``geom`` - -.. graphviz:: - - digraph G { - splines=false; - subgraph cluster0 { - point [shape=circle;style=filled;color=green]; - geom [shape=point;color=black;size=0]; - sp, ep; - - edge[weight=0]; - point -> geom [dir=none; penwidth=0, color=red]; - edge[weight=2]; - sp -> geom -> ep [dir=none;penwidth=3 ]; - - {rank=same; point, geom} - } - - subgraph cluster1 { - point1 [shape=circle;style=filled;color=green;label=point]; - geom1 [shape=point;color=deepskyblue; xlabel="geom"; width=0.3]; - sp1 [label=sp]; ep1 [label=ep]; - - edge[weight=0]; - point1 -> geom1 [weight=0, penwidth=3, color=red, - label="edge"]; - edge[weight=2]; - sp1 -> geom1 -> ep1 [dir=none;weight=1, penwidth=3 ]; - - - geom1 -> point1 [dir=none;weight=0, penwidth=0, color=red]; - {rank=same; point1, geom1} - } - } - -.. rubric:: Many point results - -* The green nodes are the **original points** -* The geometry ``geom``, marked as **g1** and **g2** are the **original - points** -* The geometry ``edge``, marked as **edge1** and **edge2** is a line that - connects the **original point** with the closest point on the :math:`sp - \rightarrow ep` edge. - -.. graphviz:: - - digraph G { - splines = false; - subgraph cluster0 { - p1 [shape=circle;style=filled;color=green]; - g1 [shape=point;color=black;size=0]; - g2 [shape=point;color=black;size=0]; - sp, ep; - p2 [shape=circle;style=filled;color=green]; - - sp -> g1 [dir=none;weight=1, penwidth=3 ]; - g1 -> g2 [dir=none;weight=1, penwidth=3 ]; - g2 -> ep [weight=1, penwidth=3 ]; - - g2 -> p2 [dir=none;weight=0, penwidth=0, color=red, partiallen=3]; - p1 -> g1 [dir=none;weight=0, penwidth=0, color=red, partiallen=3]; - p1 -> {g1, g2} [dir=none;weight=0, penwidth=0, color=red;] - - {rank=same; p1; g1} - {rank=same; p2; g2} - } - subgraph cluster1 { - p3 [shape=circle;style=filled;color=deepskyblue;label=g1]; - g3 [shape=point;color=black;size=0]; - g4 [shape=point;color=black;size=0]; - sp1 [label=sp]; ep1 [label=ep]; - p4 [shape=circle;style=filled;color=deepskyblue;label=g2]; - - sp1 -> g3 [dir=none;weight=1, penwidth=3 ]; - g3 -> g4 [dir=none;weight=1, penwidth=3,len=10]; - g4 -> ep1 [weight=1, penwidth=3, len=10]; - - g4 -> p4 [dir=back;weight=0, penwidth=3, color=red, partiallen=3, - label="edge2"]; - p3 -> g3 [weight=0, penwidth=3, color=red, partiallen=3, - label="edge1"]; - p3 -> {g3, g4} [dir=none;weight=0, penwidth=0, color=red]; - - {rank=same; p3; g3} - {rank=same; p4; g4} - } - } + - ``LINESTRING`` geometry that connects the original **point** to the + closest point of the edge with identifier ``edge_id`` Additional Examples @@ -348,261 +219,128 @@ Additional Examples .. contents:: :local: -One point examples +One point in an edge ............................................................................... -At most two answers -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -* ``cap => 2`` - - * Maximum two row answer. -* Default: ``partial => true`` - - * With less calculations as possible. -* Default: ``dryrun => false`` - - * Process query - .. literalinclude:: findCloseEdges.queries - :start-after: -- o1 - :end-before: -- o2 - -.. rubric:: Understanding the result - -* ``NULL`` on ``geom``, ``edge`` -* ``edge_id`` identifier of the edge close to the **original point** + :start-after: -- o0 + :end-before: -- o1 - * Two edges are withing :math:`0.5` distance units from the **original - point**: :math:`{5, 8}` -* For edge :math:`5`: - - * ``fraction``: The closest point from the **original point** is at the - :math:`0.8` fraction of the edge :math:`5`. - * ``side``: The **original point** is located to the left side of edge - :math:`5`. - * ``distance``: The **original point** is located :math:`0.1` length units - from edge :math:`5`. -* For edge :math:`8`: - - * ``fraction``: The closest point from the **original point** is at the - :math:`0.89..` fraction of the edge :math:`8`. - * ``side``: The **original point** is located to the right side of edge - :math:`8`. - * ``distance``: The **original point** is located :math:`0.19..` length units - from edge :math:`8`. - -One answer, all columns -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -* Default: ``cap => 1`` - - * Maximum one row answer. -* ``partial => false`` - - * Calculate all columns -* Default: ``dryrun => false`` - - * Process query - -.. literalinclude:: findCloseEdges.queries - :start-after: -- o2 - :end-before: -- o3 - -.. rubric:: Understanding the result - -* ``edge_id`` identifier of the edge **closest** to the **original point** +.. graphviz:: - * From all edges within :math:`0.5` distance units from the **original - point**: :math:`{5}` is the closest one. -* For edge :math:`5`: + digraph D { + subgraph cluster0 { + label="data"; + point [shape=circle;style=filled;color=green;fontsize=8;width=0.3;fixedsize=true]; + point [pos="0,1.5!"] - * ``fraction``: The closest point from the **original point** is at the - :math:`0.8` fraction of the edge :math:`5`. - * ``side``: The **original point** is located to the left side of edge - :math:`5`. - * ``distance``: The **original point** is located :math:`0.1` length units - from edge :math:`5`. - * ``geom``: Contains the geometry of the closest point on edge :math:`5` from - the **original point**. - * ``edge``: Contains the ``LINESTRING`` geometry of the **original point** to - the closest point on on edge :math:`5` ``geom`` + sp, ep [shape=circle;fontsize=8;width=0.3;fixedsize=true]; + sp[pos="2,0!"] + ep[pos="2,3!"] -At most two answers with all columns -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + sp -> ep:s + } + subgraph cluster1 { + label="results"; + geom [shape=circle;style=filled;color=green;fontsize=8;width=0.3;fixedsize=true]; + geom [pos="3,1.5!"] -* ``cap => 2`` + np11 [shape=point;color=black;size=0;fontsize=8;fixedsize=true]; + np11 [pos="5,1.5!";xlabel="fraction=0.5"]; - * Maximum two row answer. -* ``partial => false`` + sp1, ep1 [shape=circle;fontsize=8;width=0.3;fixedsize=true]; + sp1[pos="5,0!"] + ep1[pos="5,3!"] - * Calculate all columns -* Default: ``dryrun => false`` + sp1:n -> np11:s [dir=none] + np11:n -> ep1:s - * Process query + geom -> np11 [color=red,label="edge"]; + } + } -.. literalinclude:: findCloseEdges.queries - :start-after: -- o3 - :end-before: -- o4 - -.. rubric:: Understanding the result: - -* ``edge_id`` identifier of the edge close to the **original point** - - * Two edges are withing :math:`0.5` distance units from the **original - point**: :math:`{5, 8}` -* For edge :math:`5`: - - * ``fraction``: The closest point from the **original point** is at the - :math:`0.8` fraction of the edge :math:`5`. - * ``side``: The **original point** is located to the left side of edge - :math:`5`. - * ``distance``: The **original point** is located :math:`0.1` length units - from edge :math:`5`. - * ``geom``: Contains the geometry of the closest point on edge :math:`5` from - the **original point**. - * ``edge``: Contains the ``LINESTRING`` geometry of the **original point** to - the closest point on on edge :math:`5` ``geom`` -* For edge :math:`8`: - - * ``fraction``: The closest point from the **original point** is at the - :math:`0.89..` fraction of the edge :math:`8`. - * ``side``: The **original point** is located to the right side of edge - :math:`8`. - * ``distance``: The **original point** is located :math:`0.19..` length units - from edge :math:`8`. - * ``geom``: Contains the geometry of the closest point on edge :math:`8` from - the **original point**. - * ``edge``: Contains the ``LINESTRING`` geometry of the **original point** to - the closest point on on edge :math:`8` ``geom`` +* The green node is the original point. +* ``geom`` has the value of the original point. +* The geometry ``edge`` is a line that connects the original point with the edge + :math:`sp \rightarrow ep` edge. +* The point is located at the left of the edge. One point dry run execution -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -* Returns ``EMPTY SET``. - +............................................................................... -* ``partial => true`` +Using the query from the previous example: - * Is ignored - * Because it is a **dry run** excecution, the code for all calculations are - shown on the PostgreSQL ``NOTICE``. +* Returns ``EMPTY SET``. * ``dryrun => true`` - * Do not process query - * Generate a PostgreSQL ``NOTICE`` with the code used to calculate all columns - - * ``cap`` and **original point** are used in the code + * Generates a PostgreSQL ``NOTICE`` with the code used. + * The generated code can be used as a starting base code for additional + requirements, like taking into consideration the SRID. .. literalinclude:: findCloseEdges.queries :start-after: -- o5 :end-before: -- o6 -Many points examples +Many points in an edge ............................................................................... -At most two answers per point -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -* ``cap => 2`` - - * Maximum two row answer. -* Default: ``partial => true`` - - * With less calculations as possible. -* Default: ``dryrun => false`` - - * Process query +* The green nodes are the **original points** +* The geometry ``geom``, marked as **g1** and **g2** are the **original + points** +* The geometry ``edge``, marked as **edge1** and **edge2** is a line that + connects the **original point** with the closest point on the :math:`sp + \rightarrow ep` edge. .. literalinclude:: findCloseEdges.queries - :start-after: -- m1 - :end-before: -- m2 - -.. rubric:: Understanding the result - -* ``NULL`` on ``edge`` -* ``edge_id`` identifier of the edge close to a **original point** (``geom``) + :start-after: -- m0 + :end-before: -- m1 - * Two edges at most withing :math:`0.5` distance units from each of the - **original points**: - - * For ``POINT(1.8 0.4)`` and ``POINT(0.3 1.8)`` only one edge was found. - * For the rest of the points two edges were found. -* For point ``POINT(2.9 1.8)`` - - * Edge :math:`5` is before :math:`8` therefore edge :math:`5` has the shortest - distance to ``POINT(2.9 1.8)``. - * For edge :math:`5`: - - * ``fraction``: The closest point from the **original point** is at the - :math:`0.8` fraction of the edge :math:`5`. - * ``side``: The **original point** is located to the left side of edge - :math:`5`. - * ``distance``: The **original point** is located :math:`0.1` length units - from edge :math:`5`. - * For edge :math:`8`: - - * ``fraction``: The closest point from the **original point** is at the - :math:`0.89..` fraction of the edge :math:`8`. - * ``side``: The **original point** is located to the right side of edge - :math:`8`. - * ``distance``: The **original point** is located :math:`0.19..` length - units from edge :math:`8`. - -One answer per point, all columns -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -* Default: ``cap => 1`` +.. graphviz:: - * Maximum one row answer. -* ``partial => false`` + digraph G { + subgraph cluster0 { + p1,p2 [shape=circle;style=filled;color=green;fontsize=8;width=0.3;fixedsize=true]; + p1 [pos="0,2!"] + p2 [pos="3,1!"] - * Calculate all columns -* Default: ``dryrun => false`` + sp, ep [shape=circle;fontsize=8;width=0.3;fixedsize=true]; + sp[pos="1,0!"] + ep[pos="1,3!"] - * Process query + sp -> ep:s + } -.. literalinclude:: findCloseEdges.queries - :start-after: -- m2 - :end-before: -- m3 + subgraph cluster1 { + g1, g2 [shape=circle;style=filled;color=green;fontsize=8;width=0.3;fixedsize=true]; + g1 [pos="4,2!"] + g2 [pos="7,1!"] -.. rubric:: Understanding the result + np11,np21 [shape=point;color=black;size=0;fontsize=8;fixedsize=true]; + np11 [pos="5,2!";xlabel="fraction=0.63"]; + np21 [pos="5,1!";xlabel="fraction=0.33"]; -* ``edge_id`` identifier of the edge **closest** to the **original point** + sp1, ep1 [shape=circle;fontsize=8;width=0.3;fixedsize=true]; + sp1[pos="5,0!"] + ep1[pos="5,3!"] - * From all edges within :math:`0.5` distance units from the **original - point**: :math:`{5}` is the closest one. -* For the **original point** ``POINT(2.9 1.8)`` + sp1:n -> np21:s [dir=none] + np21:n -> np11:s [dir=none] + np11:n -> ep1:s - * Edge :math:`5` is the closest edge to the **original point** - * ``fraction``: The closest point from the **original point** is at the - :math:`0.8` fraction of the edge :math:`5`. - * ``side``: The **original point** is located to the left side of edge - :math:`5`. - * ``distance``: The **original point** is located :math:`0.1` length units - from edge :math:`5`. - * ``geom``: Contains the geometry of the **original point** ``POINT(2.9 1.8)`` - * ``edge``: Contains the ``LINESTRING`` geometry of the **original point** - (``geom``) to the closest point on on edge. + g1 -> np11 [color=red;label="edge"]; + g2 -> np21 [color=red;label="edge"] + } + } Many points dry run execution -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +............................................................................... * Returns ``EMPTY SET``. - - -* ``partial => true`` - - * Is ignored - * Because it is a **dry run** excecution, the code for all calculations are - shown on the PostgreSQL ``NOTICE``. * ``dryrun => true`` * Do not process query * Generate a PostgreSQL ``NOTICE`` with the code used to calculate all columns - * ``cap`` and **original point** are used in the code - .. literalinclude:: findCloseEdges.queries :start-after: -- m4 :end-before: -- m5 @@ -625,14 +363,6 @@ Handling points outside the graph. :start-after: pois_start :end-before: pois_end -Connecting disconnected components -............................................................................... - -.. include:: pgRouting-concepts.rst - :start-after: connecting_graph_start - :end-before: connecting_graph_end - - See Also ------------------------------------------------------------------------------- diff --git a/doc/version/pgr_full_version.rst b/doc/version/pgr_full_version.rst index 8d32604add..f771b6f4ca 100644 --- a/doc/version/pgr_full_version.rst +++ b/doc/version/pgr_full_version.rst @@ -7,8 +7,11 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Reference ; pgr_full_version + single: full_version +| ``pgr_full_version`` =============================================================================== @@ -19,7 +22,7 @@ * Version 3.0.0 - * New **official** function + * Official function. Description @@ -27,8 +30,7 @@ Description Get complete details of pgRouting version information -.. index:: - single: full_version +|Boost| Boost Graph Inside Signatures ------------------------------------------------------------------------------- diff --git a/doc/version/pgr_version.rst b/doc/version/pgr_version.rst index 88807fe1d2..53d5fa5588 100644 --- a/doc/version/pgr_version.rst +++ b/doc/version/pgr_version.rst @@ -7,8 +7,12 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Reference ; pgr_version + single: version + +| ``pgr_version`` =============================================================================== @@ -24,7 +28,7 @@ * Version 2.0.0 - * **Official** function + * Official function. Description @@ -32,9 +36,6 @@ Description Returns pgRouting version information. -.. index:: - single: version - Signature ------------------------------------------------------------------------------- diff --git a/doc/version/reference.rst b/doc/version/reference.rst index ae4e821239..79c34e41c1 100644 --- a/doc/version/reference.rst +++ b/doc/version/reference.rst @@ -7,18 +7,20 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: Reference +| Reference =============================================================================== -.. index from here +.. official-start * :doc:`pgr_version` * :doc:`pgr_full_version` -.. index to here +.. official-end .. toctree:: :hidden: diff --git a/doc/vrp_basic/CMakeLists.txt b/doc/vrp_basic/CMakeLists.txt deleted file mode 100644 index 1bcd9b5dfb..0000000000 --- a/doc/vrp_basic/CMakeLists.txt +++ /dev/null @@ -1,12 +0,0 @@ - -SET(LOCAL_FILES - pgr_vrpOneDepot.rst - ) - -foreach (f ${LOCAL_FILES}) - configure_file(${f} "${PGR_DOCUMENTATION_SOURCE_DIR}/${f}") - list(APPEND LOCAL_DOC_FILES ${PGR_DOCUMENTATION_SOURCE_DIR}/${f}) -endforeach() - -set(PROJECT_DOC_FILES ${PROJECT_DOC_FILES} ${LOCAL_DOC_FILES} PARENT_SCOPE) - diff --git a/doc/withPoints/pgr_withPoints.rst b/doc/withPoints/pgr_withPoints.rst index 3eeb99caa9..fb881b64d3 100644 --- a/doc/withPoints/pgr_withPoints.rst +++ b/doc/withPoints/pgr_withPoints.rst @@ -7,35 +7,35 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: withPoints Family ; pgr_withPoints + single: With Points Category ; pgr_withPoints + single: Shortest Path Category ; pgr_withPoints + single: withPoints +| -``pgr_withPoints`` - Proposed +``pgr_withPoints`` =============================================================================== ``pgr_withPoints`` - Returns the shortest path in a graph with additional temporary vertices. -.. include:: proposed.rst - :start-after: begin-warning - :end-before: end-warning - -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/table_of_contents.html +.. rubric:: Availability - Boost Graph Inside +* Version 4.0.0 -.. rubric:: Availability + * Function promoted to official. * Version 3.2.0 - * New **proposed** function: + * New proposed signature: * pgr_withPoints(Combinations) * Version 2.2.0 - * New **proposed** function + * New proposed function. Description ------------------------------------------------------------------------------- @@ -68,6 +68,8 @@ Using Dijkstra algorithm, find the shortest path * Running time: :math:`O(|start\_vids|\times(V \log V + E))` +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- @@ -87,7 +89,7 @@ Signatures | OR EMTPY SET .. index:: - single: withPoints(One to One) - Proposed on v2.2 + single: withPoints ; One to One One to One ............................................................................... @@ -108,7 +110,7 @@ One to One :end-before: -- q2 .. index:: - single: withPoints(One to Many) - Proposed on v2.2 + single: withPoints ; One to Many One to Many ............................................................................... @@ -130,7 +132,7 @@ One to Many :end-before: -- q3 .. index:: - single: withPoints(Many to One) - Proposed on v2.2 + single: withPoints ; Many to One Many to One ............................................................................... @@ -151,7 +153,7 @@ Many to One :end-before: -- q4 .. index:: - single: withPoints(Many to Many) - Proposed on v2.2 + single: withPoints ; Many to Many Many to Many ............................................................................... @@ -173,7 +175,7 @@ Many to Many :end-before: -- q5 .. index:: - single: withPoints(Combinations) - Proposed on v3.2 + single: withPoints ; Combinations Combinations ............................................................................... diff --git a/doc/withPoints/pgr_withPointsCost.rst b/doc/withPoints/pgr_withPointsCost.rst index 59f186a61d..3bdd184a84 100644 --- a/doc/withPoints/pgr_withPointsCost.rst +++ b/doc/withPoints/pgr_withPointsCost.rst @@ -7,36 +7,36 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: withPoints Family ; pgr_withPointsCost + single: With Points Category ; pgr_withPointsCost + single: Cost Category ; pgr_withPointsCost + single: withPointsCost +| -``pgr_withPointsCost`` - Proposed +``pgr_withPointsCost`` =============================================================================== ``pgr_withPointsCost`` - Calculates the shortest path and returns only the aggregate cost of the shortest path found, for the combination of points given. -.. include:: proposed.rst - :start-after: begin-warning - :end-before: end-warning - -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/table_of_contents.html +.. rubric:: Availability - Boost Graph Inside +* Version 4.0.0 -.. rubric:: Availability + * Function promoted to official. * Version 3.2.0 - * New **proposed** function: + * New proposed signature: * pgr_withPointsCost(Combinations) * Version 2.2.0 - * New **proposed** function + * New proposed function. Description @@ -87,6 +87,8 @@ The main characteristics are: - Running time: :math:`O(|start\_vids|\times(V \log V + E))` +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- @@ -109,7 +111,7 @@ Signatures withPoints family of functions. .. index:: - single: withPointsCost(One To One) - Proposed on v2.2 + single: withPointsCost ; One to One One to One ............................................................................... @@ -130,7 +132,7 @@ One to One :end-before: -- q2 .. index:: - single: withPointsCost(One To Many) - Proposed on v2.2 + single: withPointsCost ; One to Many One to Many ............................................................................... @@ -152,7 +154,7 @@ One to Many :end-before: -- q3 .. index:: - single: withPointsCost(Many To One) - Proposed on v2.2 + single: withPointsCost ; Many to One Many to One ............................................................................... @@ -173,7 +175,7 @@ Many to One :end-before: -- q4 .. index:: - single: withPointsCost(Many To Many) - Proposed on v2.2 + single: withPointsCost ; Many to Many Many to Many ............................................................................... @@ -195,7 +197,7 @@ Many to Many :end-before: -- q5 .. index:: - single: withPointsCost(Combinations) -- Proposed on v3.2 + single: withPointsCost ; Combinations Combinations ............................................................................... @@ -358,7 +360,7 @@ Traveling from point :math:`1` and vertex :math:`5` to points :math:`\{2, 3, :start-after: -- q8 :end-before: -- q9 -The queries use the :doc:`sampledata` network. +:doc:`sampledata` See Also ------------------------------------------------------------------------------- diff --git a/doc/withPoints/pgr_withPointsCostMatrix.rst b/doc/withPoints/pgr_withPointsCostMatrix.rst index b5f434ce44..a2c508ff95 100644 --- a/doc/withPoints/pgr_withPointsCostMatrix.rst +++ b/doc/withPoints/pgr_withPointsCostMatrix.rst @@ -7,29 +7,29 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: withPoints Family ; pgr_withPointsCostMatrix + single: With Points Category ; pgr_withPointsCostMatrix + single: Cost Matrix Category ; pgr_withPointsCostMatrix + single: withPointsCostMatrix +| -``pgr_withPointsCostMatrix`` - proposed +``pgr_withPointsCostMatrix`` =============================================================================== ``pgr_withPointsCostMatrix`` - Calculates a cost matrix using :doc:`pgr_withPoints`. -.. include:: proposed.rst - :start-after: begin-warning - :end-before: end-warning - -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/table_of_contents.html +.. rubric:: Availability - Boost Graph Inside +* Version 4.0.0 -.. rubric:: Availability + * Function promoted to official. * Version 2.2.0 - * New **proposed** function + * New proposed function. Description ------------------------------------------------------------------------------- @@ -44,14 +44,11 @@ Using Dijkstra algorithm, calculate and return a cost matrix. :start-after: costMatrix_details_start :end-before: costMatrix_details_end -.. index:: - single: withPointsCostMatrix - proposed +|Boost| Boost Graph Inside Signatures ------------------------------------------------------------------------------- -.. rubric:: Summary - .. admonition:: \ \ :class: signatures diff --git a/doc/withPoints/pgr_withPointsDD.rst b/doc/withPoints/pgr_withPointsDD.rst index 7988acb3e1..eb7f69072f 100644 --- a/doc/withPoints/pgr_withPointsDD.rst +++ b/doc/withPoints/pgr_withPointsDD.rst @@ -7,41 +7,40 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: withPoints Family ; pgr_withPointsDD + single: With Points Category ; pgr_withPointsDD + single: Driving Distance Category ; pgr_withPointsDD + single: withPointsDD +| -``pgr_withPointsDD`` - Proposed +``pgr_withPointsDD`` =============================================================================== ``pgr_withPointsDD`` - Returns the driving **distance** from a starting point. -.. include:: proposed.rst - :start-after: begin-warning - :end-before: end-warning - -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/table_of_contents.html - - Boost Graph Inside +.. rubric:: Availability +.. rubric:: Version 4.0.0 -.. rubric:: Availability +* Function promoted to official. .. rubric:: Version 3.6.0 * Signature change: ``driving_side`` parameter changed from named optional to unnamed compulsory **driving side**. - * ``pgr_withPointsDD`` (`Single vertex`) - * ``pgr_withPointsDD`` (`Multiple vertices`) + * pgr_withPointsDD(Single vertex) + * pgr_withPointsDD(Multiple vertices) * Standarizing output columns to |result-spantree| - * ``pgr_withPointsDD`` (`Single vertex`) + * pgr_withPointsDD(Single vertex) * Added ``depth``, ``pred`` and ``start_vid`` column. - * ``pgr_withPointsDD`` (`Multiple vertices`) + * pgr_withPointsDD(Multiple vertices) * Added ``depth``, ``pred`` columns. @@ -52,12 +51,12 @@ * Deprecated signatures - * ``pgr_withpointsdd(text,text,bigint,double precision,boolean,character,boolean)`` - * ``pgr_withpointsdd(text,text,anyarray,double precision,boolean,character,boolean,boolean)`` + * pgr_withpointsdd(text,text,bigint,double precision,boolean,character,boolean) + * pgr_withpointsdd(text,text,anyarray,double precision,boolean,character,boolean,boolean) .. rubric:: Version 2.2.0 -* New **proposed** function +* New proposed function. Description @@ -68,6 +67,8 @@ the nodes and points that have costs less than or equal to the value ``**distance**`` from the starting point. The edges extracted will conform the corresponding spanning tree. +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- @@ -83,7 +84,7 @@ Signatures | OR EMPTY SET .. index:: - single: withPointsDD(Single Vertex) - Proposed on v2.2 + single: withPointsDD ; Single Vertex Single vertex ............................................................................... @@ -105,7 +106,7 @@ Single vertex :end-before: -- q3 .. index:: - single: withPointsDD(Multiple Vertices) - Proposed on v2.2 + single: withPointsDD ; Multiple Vertices Multiple vertices ............................................................................... diff --git a/doc/withPoints/pgr_withPointsKSP.rst b/doc/withPoints/pgr_withPointsKSP.rst index 648614dbfb..f90cc575e9 100644 --- a/doc/withPoints/pgr_withPointsKSP.rst +++ b/doc/withPoints/pgr_withPointsKSP.rst @@ -7,48 +7,46 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: withPoints Family ; pgr_withPointsKSP + single: With Points Category ; pgr_withPointsKSP + single: K Shortest Paths Category ; pgr_withPointsKSP + single: withPointsKSP +| -pgr_withPointsKSP - Proposed +``pgr_withPointsKSP`` =============================================================================== ``pgr_withPointsKSP`` — Yen's algorithm for K shortest paths using Dijkstra. -.. include:: proposed.rst - :start-after: begin-warning - :end-before: end-warning - -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/table_of_contents.html +.. rubric:: Version 4.0.0 - Boost Graph Inside - -.. rubric:: Availability +* Function promoted to official. .. rubric:: Version 3.6.0 * Standarizing output columns to |nksp-result| -* ``pgr_withPointsKSP`` (One to One) +* pgr_withPointsKSP(One to One) * Signature change: ``driving_side`` parameter changed from named optional to unnamed compulsory **driving side**. * Added ``start_vid`` and ``end_vid`` result columns. -* New overload functions +* New proposed signatures: - * ``pgr_withPointsKSP`` (One to Many) - * ``pgr_withPointsKSP`` (Many to One) - * ``pgr_withPointsKSP`` (Many to Many) - * ``pgr_withPointsKSP`` (Combinations) + * pgr_withPointsKSP(One to Many) + * pgr_withPointsKSP(Many to One) + * pgr_withPointsKSP(Many to Many) + * pgr_withPointsKSP(Combinations) * Deprecated signature - * ``pgr_withpointsksp(text,text,bigint,bigint,integer,boolean,boolean,char,boolean)`` + * pgr_withpointsksp(text,text,bigint,bigint,integer,boolean,boolean,char,boolean)`` .. rubric:: Version 2.2.0 -* New **proposed** function +* New proposed function. Description @@ -57,8 +55,7 @@ Description Modifies the graph to include the points defined in the `Points SQL`_ and using Yen algorithm, finds the :math:`K` shortest paths. -.. index:: - single: withPointsKSP - Proposed on v2.2 +|Boost| Boost Graph Inside Signatures ------------------------------------------------------------------------------- @@ -77,7 +74,7 @@ Signatures | OR EMPTY SET .. index:: - single: withPointsKSP(One to One) + single: withPointsKSP ; One to One One to One ............................................................................... @@ -103,7 +100,7 @@ One to One :end-before: --q2 .. index:: - single: withPointsKSP(One to Many) + single: withPointsKSP ; One to Many One to Many ............................................................................... @@ -125,7 +122,7 @@ One to Many :end-before: --q3 .. index:: - single: withPointsKSP(Many to One) + single: withPointsKSP ; Many to One Many to One ............................................................................... @@ -147,7 +144,7 @@ Many to One :end-before: --q4 .. index:: - single: withPointsKSP(Many to Many) + single: withPointsKSP ; Many to Many Many to Many ............................................................................... @@ -169,7 +166,7 @@ Many to Many :end-before: --q5 .. index:: - single: withPointsKSP(Combinations) + single: withPointsKSP ; Combinations Combinations ............................................................................... @@ -333,8 +330,6 @@ point :math:`2` with heap paths and details. :start-after: --q8 :end-before: --q9 -The queries use the :doc:`sampledata` network. - See Also ------------------------------------------------------------------------------- diff --git a/doc/withPoints/pgr_withPointsVia.rst b/doc/withPoints/pgr_withPointsVia.rst index 07108684a3..1435ee335d 100644 --- a/doc/withPoints/pgr_withPointsVia.rst +++ b/doc/withPoints/pgr_withPointsVia.rst @@ -7,29 +7,29 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: + single: withPoints Family ; pgr_withPointsVia + single: With Points Category ; pgr_withPointsVia + single: Via Category ; pgr_withPointsVia + single: withPointsVia +| -``pgr_withPointsVia`` - Proposed +``pgr_withPointsVia`` =============================================================================== ``pgr_withPointsVia`` - Route that goes through a list of vertices and/or points. -.. include:: proposed.rst - :start-after: stable-begin-warning - :end-before: stable-end-warning - -.. figure:: images/boost-inside.jpeg - :target: https://www.boost.org/libs/graph/doc/table_of_contents.html +.. rubric:: Availability - Boost Graph Inside +* Version 4.0.0 -.. rubric:: Availability + * Function promoted to official. * Version 3.4.0 - * New **proposed** function ``pgr_withPointsVia`` (`One Via`_) + * New proposed function. Description ------------------------------------------------------------------------------- @@ -51,11 +51,13 @@ The general algorithm is as follows: * Execute a :doc:`pgr_dijkstraVia`. +|Boost| Boost Graph Inside + Signatures ------------------------------------------------------------------------------- .. index:: - single: withPointsVia - Proposed on v3.4 + single: withPointsVia ; One Via One Via ............................................................................... @@ -203,7 +205,7 @@ See Also * :doc:`withPoints-family` * :doc:`via-category` -* :doc:`sampledata` network. +* :doc:`sampledata` .. rubric:: Indices and tables diff --git a/doc/withPoints/withPoints-family.rst b/doc/withPoints/withPoints-family.rst index 43f72d17bb..83e47ee841 100644 --- a/doc/withPoints/withPoints-family.rst +++ b/doc/withPoints/withPoints-family.rst @@ -7,8 +7,9 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -| +.. index:: withPoints Family +| withPoints - Family of functions =============================================================================== @@ -16,10 +17,10 @@ withPoints - Family of functions When points are also given as input: .. include:: proposed.rst - :start-after: begin-warning + :start-after: warning-begin :end-before: end-warning -.. index proposed from here +.. proposed-start - :doc:`pgr_withPoints` - Route from/to points anywhere on the graph. - :doc:`pgr_withPointsCost` - Costs of the shortest paths. @@ -28,7 +29,7 @@ When points are also given as input: - :doc:`pgr_withPointsDD` - Driving distance. - :doc:`pgr_withPointsVia` - Via routing -.. index proposed to here +.. proposed-end .. toctree:: :hidden: diff --git a/docqueries/breadthFirstSearch/CMakeLists.txt b/docqueries/breadthFirstSearch/CMakeLists.txt deleted file mode 100644 index 02c0b95bf6..0000000000 --- a/docqueries/breadthFirstSearch/CMakeLists.txt +++ /dev/null @@ -1,12 +0,0 @@ -# Do not use extensions -SET(LOCAL_FILES - breadthFirstSearch - binaryBreadthFirstSearch - ) - -foreach (f ${LOCAL_FILES}) - configure_file("${f}.result" "${PGR_DOCUMENTATION_SOURCE_DIR}/${f}.queries") - list(APPEND LOCAL_DOC_FILES "${PGR_DOCUMENTATION_SOURCE_DIR}/${f}.queries") -endforeach() - -set(PROJECT_DOC_FILES ${PROJECT_DOC_FILES} ${LOCAL_DOC_FILES} PARENT_SCOPE) diff --git a/docqueries/breadthFirstSearch/test.conf b/docqueries/breadthFirstSearch/test.conf deleted file mode 100644 index 0e358e5a09..0000000000 --- a/docqueries/breadthFirstSearch/test.conf +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/perl -w - -%main::tests = ( - 'any' => { - 'files' => [qw( - breadthFirstSearch.pg - binaryBreadthFirstSearch.pg - )] - }, - -); - -1; diff --git a/docqueries/contraction/CMakeLists.txt b/docqueries/contraction/CMakeLists.txt index d640c0ea80..aa67dcb4c0 100644 --- a/docqueries/contraction/CMakeLists.txt +++ b/docqueries/contraction/CMakeLists.txt @@ -1,7 +1,8 @@ # Do not use extensions SET(LOCAL_FILES - contraction-family contraction + contractionDeadEnd + contractionLinear ) foreach (f ${LOCAL_FILES}) diff --git a/docqueries/contraction/contraction-family.pg b/docqueries/contraction/contraction-family.pg deleted file mode 100644 index ea9c215de9..0000000000 --- a/docqueries/contraction/contraction-family.pg +++ /dev/null @@ -1,199 +0,0 @@ --- CopyRight(c) pgRouting developers --- Creative Commons Attribution-Share Alike 3.0 License : https://creativecommons.org/licenses/by-sa/3.0/ - -/* -- q00 */ -SELECT id, source, target, cost, reverse_cost -FROM edges ORDER BY id; -/* -- q01 */ -/* -- q1 */ -ALTER TABLE vertices ADD is_contracted BOOLEAN DEFAULT false; -ALTER TABLE vertices ADD contracted_vertices BIGINT[]; -ALTER TABLE edges ADD is_new BOOLEAN DEFAULT false; -ALTER TABLE edges ADD contracted_vertices BIGINT[]; -/* -- q2 */ -SELECT * FROM pgr_contraction( - 'SELECT id, source, target, cost, reverse_cost FROM edges', - array[1, 2], directed => false); -/* -- q3 */ -SELECT * INTO contraction_results -FROM pgr_contraction( - 'SELECT id, source, target, cost, reverse_cost FROM edges', - array[1, 2], directed => false); -/* -- q4 */ -UPDATE vertices -SET is_contracted = true -WHERE id IN (SELECT unnest(contracted_vertices) FROM contraction_results); -/* -- q5 */ -SELECT id, is_contracted -FROM vertices -ORDER BY id; -/* -- q6 */ -UPDATE vertices -SET contracted_vertices = contraction_results.contracted_vertices -FROM contraction_results -WHERE type = 'v' AND vertices.id = contraction_results.id; -/* -- q7 */ -SELECT id, contracted_vertices, is_contracted -FROM vertices -ORDER BY id; -/* -- q8 */ -INSERT INTO edges(source, target, cost, reverse_cost, contracted_vertices, is_new) -SELECT source, target, cost, -1, contracted_vertices, true -FROM contraction_results -WHERE type = 'e'; -/* -- q9 */ -SELECT id, source, target, cost, reverse_cost, contracted_vertices, is_new -FROM edges -ORDER BY id; -/* -- q10 */ -SELECT id -FROM vertices -WHERE is_contracted = false -ORDER BY id; -/* -- q11 */ -WITH -vertices_in_graph AS ( - SELECT id - FROM vertices - WHERE is_contracted = false -) -SELECT id, source, target, cost, reverse_cost, contracted_vertices -FROM edges -WHERE source IN (SELECT * FROM vertices_in_graph) -AND target IN (SELECT * FROM vertices_in_graph) -ORDER BY id; -/* -- case1 */ -CREATE OR REPLACE FUNCTION my_dijkstra( - departure BIGINT, destination BIGINT, - OUT seq INTEGER, OUT path_seq INTEGER, - OUT start_vid BIGINT, OUT end_vid BIGINT, - OUT node BIGINT, OUT edge BIGINT, - OUT cost FLOAT, OUT agg_cost FLOAT) -RETURNS SETOF RECORD AS -$BODY$ -SELECT * FROM pgr_dijkstra( - $$ - WITH - vertices_in_graph AS ( - SELECT id - FROM vertices - WHERE is_contracted = false - ) - SELECT id, source, target, cost, reverse_cost - FROM edges - WHERE source IN (SELECT * FROM vertices_in_graph) - AND target IN (SELECT * FROM vertices_in_graph) - $$, - departure, destination, false); -$BODY$ -LANGUAGE SQL VOLATILE; -/* -- use1 */ -SELECT * FROM my_dijkstra(10, 12); -/* -- use1-1 */ -SELECT * FROM my_dijkstra(15, 12); -/* -- use1-2 */ -SELECT * FROM my_dijkstra(15, 1); -/* -- case2 */ -CREATE OR REPLACE FUNCTION my_dijkstra( - departure BIGINT, destination BIGINT, - OUT seq INTEGER, OUT path_seq INTEGER, - OUT start_vid BIGINT, OUT end_vid BIGINT, - OUT node BIGINT, OUT edge BIGINT, - OUT cost FLOAT, OUT agg_cost FLOAT) -RETURNS SETOF RECORD AS -$BODY$ -SELECT * FROM pgr_dijkstra( - $$ - WITH - edges_to_expand AS ( - SELECT id - FROM edges - WHERE ARRAY[$$ || departure || $$]::BIGINT[] <@ contracted_vertices - OR ARRAY[$$ || destination || $$]::BIGINT[] <@ contracted_vertices - ), - - vertices_in_graph AS ( - SELECT id - FROM vertices - WHERE is_contracted = false - - UNION - - SELECT unnest(contracted_vertices) - FROM edges - WHERE id IN (SELECT id FROM edges_to_expand) - ) - - SELECT id, source, target, cost, reverse_cost - FROM edges - WHERE source IN (SELECT * FROM vertices_in_graph) - AND target IN (SELECT * FROM vertices_in_graph) - $$, - departure, destination, false); -$BODY$ -LANGUAGE SQL VOLATILE; -/* -- use2 */ -SELECT * FROM my_dijkstra(10, 12); -/* -- use2-1 */ -SELECT * FROM my_dijkstra(15, 12); -/* -- use2-2 */ -SELECT * FROM my_dijkstra(15, 1); -/* -- case3 */ -CREATE OR REPLACE FUNCTION my_dijkstra( - departure BIGINT, destination BIGINT, - OUT seq INTEGER, OUT path_seq INTEGER, - OUT start_vid BIGINT, OUT end_vid BIGINT, - OUT node BIGINT, OUT edge BIGINT, - OUT cost FLOAT, OUT agg_cost FLOAT) -RETURNS SETOF RECORD AS -$BODY$ -SELECT * FROM pgr_dijkstra( - $$ - WITH - edges_to_expand AS ( - SELECT id - FROM edges - WHERE ARRAY[$$ || departure || $$]::BIGINT[] <@ contracted_vertices - OR ARRAY[$$ || destination || $$]::BIGINT[] <@ contracted_vertices - ), - - vertices_to_expand AS ( - SELECT id - FROM vertices - WHERE ARRAY[$$ || departure || $$]::BIGINT[] <@ contracted_vertices - OR ARRAY[$$ || destination || $$]::BIGINT[] <@ contracted_vertices - ), - - vertices_in_graph AS ( - SELECT id - FROM vertices - WHERE is_contracted = false - - UNION - - SELECT unnest(contracted_vertices) - FROM edges - WHERE id IN (SELECT id FROM edges_to_expand) - - UNION - - SELECT unnest(contracted_vertices) - FROM vertices - WHERE id IN (SELECT id FROM vertices_to_expand) - ) - - SELECT id, source, target, cost, reverse_cost - FROM edges - WHERE source IN (SELECT * FROM vertices_in_graph) - AND target IN (SELECT * FROM vertices_in_graph) - $$, - departure, destination, false); -$BODY$ -LANGUAGE SQL VOLATILE; -/* -- use3 */ -SELECT * FROM my_dijkstra(10, 12); -/* -- use3-1 */ -SELECT * FROM my_dijkstra(15, 12); -/* -- use3-2 */ -SELECT * FROM my_dijkstra(15, 1); -/* -- end */ diff --git a/docqueries/contraction/contraction-family.result b/docqueries/contraction/contraction-family.result deleted file mode 100644 index c9a3c2ddc9..0000000000 --- a/docqueries/contraction/contraction-family.result +++ /dev/null @@ -1,393 +0,0 @@ -BEGIN; -BEGIN -SET client_min_messages TO NOTICE; -SET -/* -- q00 */ -SELECT id, source, target, cost, reverse_cost -FROM edges ORDER BY id; - id | source | target | cost | reverse_cost -----+--------+--------+------+-------------- - 1 | 5 | 6 | 1 | 1 - 2 | 6 | 10 | -1 | 1 - 3 | 10 | 15 | -1 | 1 - 4 | 6 | 7 | 1 | 1 - 5 | 10 | 11 | 1 | -1 - 6 | 1 | 3 | 1 | 1 - 7 | 3 | 7 | 1 | 1 - 8 | 7 | 11 | 1 | 1 - 9 | 11 | 16 | 1 | 1 - 10 | 7 | 8 | 1 | 1 - 11 | 11 | 12 | 1 | -1 - 12 | 8 | 12 | 1 | -1 - 13 | 12 | 17 | 1 | -1 - 14 | 8 | 9 | 1 | 1 - 15 | 16 | 17 | 1 | 1 - 16 | 15 | 16 | 1 | 1 - 17 | 2 | 4 | 1 | 1 - 18 | 13 | 14 | 1 | 1 -(18 rows) - -/* -- q01 */ -/* -- q1 */ -ALTER TABLE vertices ADD is_contracted BOOLEAN DEFAULT false; -ALTER TABLE -ALTER TABLE vertices ADD contracted_vertices BIGINT[]; -ALTER TABLE -ALTER TABLE edges ADD is_new BOOLEAN DEFAULT false; -ALTER TABLE -ALTER TABLE edges ADD contracted_vertices BIGINT[]; -ALTER TABLE -/* -- q2 */ -SELECT * FROM pgr_contraction( - 'SELECT id, source, target, cost, reverse_cost FROM edges', - array[1, 2], directed => false); - type | id | contracted_vertices | source | target | cost -------+----+---------------------+--------+--------+------ - v | 4 | {2} | -1 | -1 | -1 - v | 7 | {1,3} | -1 | -1 | -1 - v | 14 | {13} | -1 | -1 | -1 - e | -1 | {5,6} | 7 | 10 | 2 - e | -2 | {8,9} | 7 | 12 | 2 - e | -3 | {17} | 12 | 16 | 2 - e | -4 | {15} | 10 | 16 | 2 -(7 rows) - -/* -- q3 */ -SELECT * INTO contraction_results -FROM pgr_contraction( - 'SELECT id, source, target, cost, reverse_cost FROM edges', - array[1, 2], directed => false); -SELECT 7 -/* -- q4 */ -UPDATE vertices -SET is_contracted = true -WHERE id IN (SELECT unnest(contracted_vertices) FROM contraction_results); -UPDATE 10 -/* -- q5 */ -SELECT id, is_contracted -FROM vertices -ORDER BY id; - id | is_contracted -----+--------------- - 1 | t - 2 | t - 3 | t - 4 | f - 5 | t - 6 | t - 7 | f - 8 | t - 9 | t - 10 | f - 11 | f - 12 | f - 13 | t - 14 | f - 15 | t - 16 | f - 17 | t -(17 rows) - -/* -- q6 */ -UPDATE vertices -SET contracted_vertices = contraction_results.contracted_vertices -FROM contraction_results -WHERE type = 'v' AND vertices.id = contraction_results.id; -UPDATE 3 -/* -- q7 */ -SELECT id, contracted_vertices, is_contracted -FROM vertices -ORDER BY id; - id | contracted_vertices | is_contracted -----+---------------------+--------------- - 1 | | t - 2 | | t - 3 | | t - 4 | {2} | f - 5 | | t - 6 | | t - 7 | {1,3} | f - 8 | | t - 9 | | t - 10 | | f - 11 | | f - 12 | | f - 13 | | t - 14 | {13} | f - 15 | | t - 16 | | f - 17 | | t -(17 rows) - -/* -- q8 */ -INSERT INTO edges(source, target, cost, reverse_cost, contracted_vertices, is_new) -SELECT source, target, cost, -1, contracted_vertices, true -FROM contraction_results -WHERE type = 'e'; -INSERT 0 4 -/* -- q9 */ -SELECT id, source, target, cost, reverse_cost, contracted_vertices, is_new -FROM edges -ORDER BY id; - id | source | target | cost | reverse_cost | contracted_vertices | is_new -----+--------+--------+------+--------------+---------------------+-------- - 1 | 5 | 6 | 1 | 1 | | f - 2 | 6 | 10 | -1 | 1 | | f - 3 | 10 | 15 | -1 | 1 | | f - 4 | 6 | 7 | 1 | 1 | | f - 5 | 10 | 11 | 1 | -1 | | f - 6 | 1 | 3 | 1 | 1 | | f - 7 | 3 | 7 | 1 | 1 | | f - 8 | 7 | 11 | 1 | 1 | | f - 9 | 11 | 16 | 1 | 1 | | f - 10 | 7 | 8 | 1 | 1 | | f - 11 | 11 | 12 | 1 | -1 | | f - 12 | 8 | 12 | 1 | -1 | | f - 13 | 12 | 17 | 1 | -1 | | f - 14 | 8 | 9 | 1 | 1 | | f - 15 | 16 | 17 | 1 | 1 | | f - 16 | 15 | 16 | 1 | 1 | | f - 17 | 2 | 4 | 1 | 1 | | f - 18 | 13 | 14 | 1 | 1 | | f - 19 | 7 | 10 | 2 | -1 | {5,6} | t - 20 | 7 | 12 | 2 | -1 | {8,9} | t - 21 | 12 | 16 | 2 | -1 | {17} | t - 22 | 10 | 16 | 2 | -1 | {15} | t -(22 rows) - -/* -- q10 */ -SELECT id -FROM vertices -WHERE is_contracted = false -ORDER BY id; - id ----- - 4 - 7 - 10 - 11 - 12 - 14 - 16 -(7 rows) - -/* -- q11 */ -WITH -vertices_in_graph AS ( - SELECT id - FROM vertices - WHERE is_contracted = false -) -SELECT id, source, target, cost, reverse_cost, contracted_vertices -FROM edges -WHERE source IN (SELECT * FROM vertices_in_graph) -AND target IN (SELECT * FROM vertices_in_graph) -ORDER BY id; - id | source | target | cost | reverse_cost | contracted_vertices -----+--------+--------+------+--------------+--------------------- - 5 | 10 | 11 | 1 | -1 | - 8 | 7 | 11 | 1 | 1 | - 9 | 11 | 16 | 1 | 1 | - 11 | 11 | 12 | 1 | -1 | - 19 | 7 | 10 | 2 | -1 | {5,6} - 20 | 7 | 12 | 2 | -1 | {8,9} - 21 | 12 | 16 | 2 | -1 | {17} - 22 | 10 | 16 | 2 | -1 | {15} -(8 rows) - -/* -- case1 */ -CREATE OR REPLACE FUNCTION my_dijkstra( - departure BIGINT, destination BIGINT, - OUT seq INTEGER, OUT path_seq INTEGER, - OUT start_vid BIGINT, OUT end_vid BIGINT, - OUT node BIGINT, OUT edge BIGINT, - OUT cost FLOAT, OUT agg_cost FLOAT) -RETURNS SETOF RECORD AS -$BODY$ -SELECT * FROM pgr_dijkstra( - $$ - WITH - vertices_in_graph AS ( - SELECT id - FROM vertices - WHERE is_contracted = false - ) - SELECT id, source, target, cost, reverse_cost - FROM edges - WHERE source IN (SELECT * FROM vertices_in_graph) - AND target IN (SELECT * FROM vertices_in_graph) - $$, - departure, destination, false); -$BODY$ -LANGUAGE SQL VOLATILE; -CREATE FUNCTION -/* -- use1 */ -SELECT * FROM my_dijkstra(10, 12); - seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost ------+----------+-----------+---------+------+------+------+---------- - 1 | 1 | 10 | 12 | 10 | 5 | 1 | 0 - 2 | 2 | 10 | 12 | 11 | 11 | 1 | 1 - 3 | 3 | 10 | 12 | 12 | -1 | 0 | 2 -(3 rows) - -/* -- use1-1 */ -SELECT * FROM my_dijkstra(15, 12); - seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost ------+----------+-----------+---------+------+------+------+---------- -(0 rows) - -/* -- use1-2 */ -SELECT * FROM my_dijkstra(15, 1); - seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost ------+----------+-----------+---------+------+------+------+---------- -(0 rows) - -/* -- case2 */ -CREATE OR REPLACE FUNCTION my_dijkstra( - departure BIGINT, destination BIGINT, - OUT seq INTEGER, OUT path_seq INTEGER, - OUT start_vid BIGINT, OUT end_vid BIGINT, - OUT node BIGINT, OUT edge BIGINT, - OUT cost FLOAT, OUT agg_cost FLOAT) -RETURNS SETOF RECORD AS -$BODY$ -SELECT * FROM pgr_dijkstra( - $$ - WITH - edges_to_expand AS ( - SELECT id - FROM edges - WHERE ARRAY[$$ || departure || $$]::BIGINT[] <@ contracted_vertices - OR ARRAY[$$ || destination || $$]::BIGINT[] <@ contracted_vertices - ), - - vertices_in_graph AS ( - SELECT id - FROM vertices - WHERE is_contracted = false - - UNION - - SELECT unnest(contracted_vertices) - FROM edges - WHERE id IN (SELECT id FROM edges_to_expand) - ) - - SELECT id, source, target, cost, reverse_cost - FROM edges - WHERE source IN (SELECT * FROM vertices_in_graph) - AND target IN (SELECT * FROM vertices_in_graph) - $$, - departure, destination, false); -$BODY$ -LANGUAGE SQL VOLATILE; -CREATE FUNCTION -/* -- use2 */ -SELECT * FROM my_dijkstra(10, 12); - seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost ------+----------+-----------+---------+------+------+------+---------- - 1 | 1 | 10 | 12 | 10 | 5 | 1 | 0 - 2 | 2 | 10 | 12 | 11 | 11 | 1 | 1 - 3 | 3 | 10 | 12 | 12 | -1 | 0 | 2 -(3 rows) - -/* -- use2-1 */ -SELECT * FROM my_dijkstra(15, 12); - seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost ------+----------+-----------+---------+------+------+------+---------- - 1 | 1 | 15 | 12 | 15 | 16 | 1 | 0 - 2 | 2 | 15 | 12 | 16 | 21 | 2 | 1 - 3 | 3 | 15 | 12 | 12 | -1 | 0 | 3 -(3 rows) - -/* -- use2-2 */ -SELECT * FROM my_dijkstra(15, 1); - seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost ------+----------+-----------+---------+------+------+------+---------- -(0 rows) - -/* -- case3 */ -CREATE OR REPLACE FUNCTION my_dijkstra( - departure BIGINT, destination BIGINT, - OUT seq INTEGER, OUT path_seq INTEGER, - OUT start_vid BIGINT, OUT end_vid BIGINT, - OUT node BIGINT, OUT edge BIGINT, - OUT cost FLOAT, OUT agg_cost FLOAT) -RETURNS SETOF RECORD AS -$BODY$ -SELECT * FROM pgr_dijkstra( - $$ - WITH - edges_to_expand AS ( - SELECT id - FROM edges - WHERE ARRAY[$$ || departure || $$]::BIGINT[] <@ contracted_vertices - OR ARRAY[$$ || destination || $$]::BIGINT[] <@ contracted_vertices - ), - - vertices_to_expand AS ( - SELECT id - FROM vertices - WHERE ARRAY[$$ || departure || $$]::BIGINT[] <@ contracted_vertices - OR ARRAY[$$ || destination || $$]::BIGINT[] <@ contracted_vertices - ), - - vertices_in_graph AS ( - SELECT id - FROM vertices - WHERE is_contracted = false - - UNION - - SELECT unnest(contracted_vertices) - FROM edges - WHERE id IN (SELECT id FROM edges_to_expand) - - UNION - - SELECT unnest(contracted_vertices) - FROM vertices - WHERE id IN (SELECT id FROM vertices_to_expand) - ) - - SELECT id, source, target, cost, reverse_cost - FROM edges - WHERE source IN (SELECT * FROM vertices_in_graph) - AND target IN (SELECT * FROM vertices_in_graph) - $$, - departure, destination, false); -$BODY$ -LANGUAGE SQL VOLATILE; -CREATE FUNCTION -/* -- use3 */ -SELECT * FROM my_dijkstra(10, 12); - seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost ------+----------+-----------+---------+------+------+------+---------- - 1 | 1 | 10 | 12 | 10 | 5 | 1 | 0 - 2 | 2 | 10 | 12 | 11 | 11 | 1 | 1 - 3 | 3 | 10 | 12 | 12 | -1 | 0 | 2 -(3 rows) - -/* -- use3-1 */ -SELECT * FROM my_dijkstra(15, 12); - seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost ------+----------+-----------+---------+------+------+------+---------- - 1 | 1 | 15 | 12 | 15 | 16 | 1 | 0 - 2 | 2 | 15 | 12 | 16 | 21 | 2 | 1 - 3 | 3 | 15 | 12 | 12 | -1 | 0 | 3 -(3 rows) - -/* -- use3-2 */ -SELECT * FROM my_dijkstra(15, 1); - seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost ------+----------+-----------+---------+------+------+------+---------- - 1 | 1 | 15 | 1 | 15 | 3 | 1 | 0 - 2 | 2 | 15 | 1 | 10 | 19 | 2 | 1 - 3 | 3 | 15 | 1 | 7 | 7 | 1 | 3 - 4 | 4 | 15 | 1 | 3 | 6 | 1 | 4 - 5 | 5 | 15 | 1 | 1 | -1 | 0 | 5 -(5 rows) - -/* -- end */ -ROLLBACK; -ROLLBACK diff --git a/docqueries/contraction/contraction.pg b/docqueries/contraction/contraction.pg index bbda07d9c6..d817d6a166 100644 --- a/docqueries/contraction/contraction.pg +++ b/docqueries/contraction/contraction.pg @@ -2,14 +2,103 @@ -- Creative Commons Attribution-Share Alike 3.0 License : https://creativecommons.org/licenses/by-sa/3.0/ /* -- q1 */ SELECT * FROM pgr_contraction( - 'SELECT id, source, target, cost, reverse_cost FROM edges', - ARRAY[1, 2], directed => false); + 'SELECT id, source, target, cost, reverse_cost FROM edges', false); /* -- q2 */ SELECT type, id, contracted_vertices FROM pgr_contraction( 'SELECT id, source, target, cost, reverse_cost FROM edges', - ARRAY[1]); + methods => ARRAY[1]); /* -- q3 */ SELECT * FROM pgr_contraction( 'SELECT id, source, target, cost, reverse_cost FROM edges', - ARRAY[2]); + methods => ARRAY[2]); /* -- q4 */ + +/* -- cg1 */ +ALTER TABLE vertices + ADD is_contracted BOOLEAN DEFAULT false, + ADD contracted_vertices BIGINT[]; +ALTER TABLE edges + ADD is_new BOOLEAN DEFAULT false, + ADD contracted_vertices BIGINT[]; +/* -- cg2 */ +SELECT * FROM pgr_contraction( + 'SELECT id, source, target, cost, reverse_cost FROM edges', false); +/* -- cg3 */ +SELECT * INTO contraction_results +FROM pgr_contraction( + 'SELECT id, source, target, cost, reverse_cost FROM edges', false); +/* -- cg4 */ +UPDATE vertices +SET is_contracted = true +WHERE id IN (SELECT unnest(contracted_vertices) FROM contraction_results); +/* -- cg5 */ +SELECT id, is_contracted +FROM vertices +ORDER BY id; +/* -- cg6 */ +UPDATE vertices +SET contracted_vertices = contraction_results.contracted_vertices +FROM contraction_results +WHERE type = 'v' AND vertices.id = contraction_results.id; +/* -- cg7 */ +INSERT INTO edges(source, target, cost, reverse_cost, contracted_vertices, is_new) +SELECT source, target, cost, -1, contracted_vertices, true +FROM contraction_results +WHERE type = 'e'; +/* -- cg8 */ +SELECT id FROM vertices WHERE is_contracted = false ORDER BY id; +/* -- cg9 */ +WITH +vertices_in_graph AS (SELECT id FROM vertices WHERE is_contracted = false) +SELECT id, source, target, cost, reverse_cost, contracted_vertices +FROM edges +WHERE + EXISTS (SELECT id FROM vertices AS v WHERE NOT is_contracted AND v.id = edges.source) + AND + EXISTS (SELECT id FROM vertices AS v WHERE NOT is_contracted AND v.id = edges.target) +ORDER BY id; +/* -- cg10 */ +DROP VIEW IF EXISTS contracted_graph; +CREATE VIEW contracted_graph AS +SELECT id,source, target, cost, reverse_cost, contracted_vertices FROM edges +WHERE + EXISTS (SELECT id FROM vertices AS v WHERE NOT is_contracted AND v.id = edges.source) + AND + EXISTS (SELECT id FROM vertices AS v WHERE NOT is_contracted AND v.id = edges.target); +/* -- cg11 */ +CREATE OR REPLACE FUNCTION path_cost(source BIGINT, target BIGINT) +RETURNS SETOF FLOAT AS +$BODY$ + +SELECT agg_cost FROM pgr_dijkstraCost( + /* The inner query */ + 'WITH + cul_de_sac AS ( + SELECT contracted_vertices || id as v + FROM vertices WHERE ' || $1 ||' = ANY(contracted_vertices) + OR ' || $2 ||' = ANY(contracted_vertices)), + linears_to_expand AS ( + SELECT id, contracted_vertices + FROM edges WHERE is_new AND (' || $1 ||' = ANY(contracted_vertices) + OR '|| $2 ||' = ANY(contracted_vertices)) + ), + additional_vertices AS ( + SELECT * FROM cul_de_sac UNION SELECT contracted_vertices FROM linears_to_expand) + SELECT id, source, target, cost, reverse_cost + FROM edges, additional_vertices WHERE source = ANY(v) OR target = ANY(v) + + UNION + + SELECT id, source, target, cost, reverse_cost + FROM contracted_graph LEFT JOIN linears_to_expand c USING (id) WHERE c.id IS NULL', + + source, target, false); + +$BODY$ LANGUAGE SQL; +/* -- cg12 */ +SELECT * FROM path_cost(10, 12); +/* -- cg13 */ +SELECT * FROM path_cost(15, 12); +/* -- cg14 */ +SELECT * FROM path_cost(15, 1); +/* -- cg15 */ diff --git a/docqueries/contraction/contraction.result b/docqueries/contraction/contraction.result index c07e3037ea..e9662cd97b 100644 --- a/docqueries/contraction/contraction.result +++ b/docqueries/contraction/contraction.result @@ -4,8 +4,7 @@ SET client_min_messages TO NOTICE; SET /* -- q1 */ SELECT * FROM pgr_contraction( - 'SELECT id, source, target, cost, reverse_cost FROM edges', - ARRAY[1, 2], directed => false); + 'SELECT id, source, target, cost, reverse_cost FROM edges', false); type | id | contracted_vertices | source | target | cost ------+----+---------------------+--------+--------+------ v | 4 | {2} | -1 | -1 | -1 @@ -20,7 +19,7 @@ SELECT * FROM pgr_contraction( /* -- q2 */ SELECT type, id, contracted_vertices FROM pgr_contraction( 'SELECT id, source, target, cost, reverse_cost FROM edges', - ARRAY[1]); + methods => ARRAY[1]); type | id | contracted_vertices ------+----+--------------------- v | 4 | {2} @@ -33,7 +32,7 @@ SELECT type, id, contracted_vertices FROM pgr_contraction( /* -- q3 */ SELECT * FROM pgr_contraction( 'SELECT id, source, target, cost, reverse_cost FROM edges', - ARRAY[2]); + methods => ARRAY[2]); type | id | contracted_vertices | source | target | cost ------+----+---------------------+--------+--------+------ e | -1 | {3} | 1 | 7 | 2 @@ -41,5 +40,174 @@ SELECT * FROM pgr_contraction( (2 rows) /* -- q4 */ +/* -- cg1 */ +ALTER TABLE vertices + ADD is_contracted BOOLEAN DEFAULT false, + ADD contracted_vertices BIGINT[]; +ALTER TABLE +ALTER TABLE edges + ADD is_new BOOLEAN DEFAULT false, + ADD contracted_vertices BIGINT[]; +ALTER TABLE +/* -- cg2 */ +SELECT * FROM pgr_contraction( + 'SELECT id, source, target, cost, reverse_cost FROM edges', false); + type | id | contracted_vertices | source | target | cost +------+----+---------------------+--------+--------+------ + v | 4 | {2} | -1 | -1 | -1 + v | 7 | {1,3} | -1 | -1 | -1 + v | 14 | {13} | -1 | -1 | -1 + e | -1 | {5,6} | 7 | 10 | 2 + e | -2 | {8,9} | 7 | 12 | 2 + e | -3 | {17} | 12 | 16 | 2 + e | -4 | {15} | 10 | 16 | 2 +(7 rows) + +/* -- cg3 */ +SELECT * INTO contraction_results +FROM pgr_contraction( + 'SELECT id, source, target, cost, reverse_cost FROM edges', false); +SELECT 7 +/* -- cg4 */ +UPDATE vertices +SET is_contracted = true +WHERE id IN (SELECT unnest(contracted_vertices) FROM contraction_results); +UPDATE 10 +/* -- cg5 */ +SELECT id, is_contracted +FROM vertices +ORDER BY id; + id | is_contracted +----+--------------- + 1 | t + 2 | t + 3 | t + 4 | f + 5 | t + 6 | t + 7 | f + 8 | t + 9 | t + 10 | f + 11 | f + 12 | f + 13 | t + 14 | f + 15 | t + 16 | f + 17 | t +(17 rows) + +/* -- cg6 */ +UPDATE vertices +SET contracted_vertices = contraction_results.contracted_vertices +FROM contraction_results +WHERE type = 'v' AND vertices.id = contraction_results.id; +UPDATE 3 +/* -- cg7 */ +INSERT INTO edges(source, target, cost, reverse_cost, contracted_vertices, is_new) +SELECT source, target, cost, -1, contracted_vertices, true +FROM contraction_results +WHERE type = 'e'; +INSERT 0 4 +/* -- cg8 */ +SELECT id FROM vertices WHERE is_contracted = false ORDER BY id; + id +---- + 4 + 7 + 10 + 11 + 12 + 14 + 16 +(7 rows) + +/* -- cg9 */ +WITH +vertices_in_graph AS (SELECT id FROM vertices WHERE is_contracted = false) +SELECT id, source, target, cost, reverse_cost, contracted_vertices +FROM edges +WHERE + EXISTS (SELECT id FROM vertices AS v WHERE NOT is_contracted AND v.id = edges.source) + AND + EXISTS (SELECT id FROM vertices AS v WHERE NOT is_contracted AND v.id = edges.target) +ORDER BY id; + id | source | target | cost | reverse_cost | contracted_vertices +----+--------+--------+------+--------------+--------------------- + 5 | 10 | 11 | 1 | -1 | + 8 | 7 | 11 | 1 | 1 | + 9 | 11 | 16 | 1 | 1 | + 11 | 11 | 12 | 1 | -1 | + 19 | 7 | 10 | 2 | -1 | {5,6} + 20 | 7 | 12 | 2 | -1 | {8,9} + 21 | 12 | 16 | 2 | -1 | {17} + 22 | 10 | 16 | 2 | -1 | {15} +(8 rows) + +/* -- cg10 */ +DROP VIEW IF EXISTS contracted_graph; +NOTICE: view "contracted_graph" does not exist, skipping +DROP VIEW +CREATE VIEW contracted_graph AS +SELECT id,source, target, cost, reverse_cost, contracted_vertices FROM edges +WHERE + EXISTS (SELECT id FROM vertices AS v WHERE NOT is_contracted AND v.id = edges.source) + AND + EXISTS (SELECT id FROM vertices AS v WHERE NOT is_contracted AND v.id = edges.target); +CREATE VIEW +/* -- cg11 */ +CREATE OR REPLACE FUNCTION path_cost(source BIGINT, target BIGINT) +RETURNS SETOF FLOAT AS +$BODY$ + +SELECT agg_cost FROM pgr_dijkstraCost( + /* The inner query */ + 'WITH + cul_de_sac AS ( + SELECT contracted_vertices || id as v + FROM vertices WHERE ' || $1 ||' = ANY(contracted_vertices) + OR ' || $2 ||' = ANY(contracted_vertices)), + linears_to_expand AS ( + SELECT id, contracted_vertices + FROM edges WHERE is_new AND (' || $1 ||' = ANY(contracted_vertices) + OR '|| $2 ||' = ANY(contracted_vertices)) + ), + additional_vertices AS ( + SELECT * FROM cul_de_sac UNION SELECT contracted_vertices FROM linears_to_expand) + SELECT id, source, target, cost, reverse_cost + FROM edges, additional_vertices WHERE source = ANY(v) OR target = ANY(v) + + UNION + + SELECT id, source, target, cost, reverse_cost + FROM contracted_graph LEFT JOIN linears_to_expand c USING (id) WHERE c.id IS NULL', + + source, target, false); + +$BODY$ LANGUAGE SQL; +CREATE FUNCTION +/* -- cg12 */ +SELECT * FROM path_cost(10, 12); + path_cost +----------- + 2 +(1 row) + +/* -- cg13 */ +SELECT * FROM path_cost(15, 12); + path_cost +----------- + 3 +(1 row) + +/* -- cg14 */ +SELECT * FROM path_cost(15, 1); + path_cost +----------- + 5 +(1 row) + +/* -- cg15 */ ROLLBACK; ROLLBACK diff --git a/docqueries/contraction/contractionDeadEnd.pg b/docqueries/contraction/contractionDeadEnd.pg new file mode 100644 index 0000000000..d6c88033ca --- /dev/null +++ b/docqueries/contraction/contractionDeadEnd.pg @@ -0,0 +1,101 @@ +-- CopyRight(c) pgRouting developers +-- Creative Commons Attribution-Share Alike 3.0 License : https://creativecommons.org/licenses/by-sa/3.0/ +/* -- q1 */ +SELECT * FROM pgr_contractionDeadEnd( + 'SELECT id, source, target, cost, reverse_cost FROM edges', + directed => false); +/* -- q2 */ +SELECT * FROM pgr_contractionDeadEnd( +$$SELECT * FROM (VALUES + (1, 1, 2, 1, 1), + (2, 3, 4, 1, -1), + (3, 2, 5, 1, 1), (4, 2, 6, 1, 1), + (5, 3, 5, 1, 1), (5, 3, 6, 1, 1)) + AS edges(id,source,target,cost,reverse_cost)$$, + directed => true); +/* -- q3 */ +SELECT * FROM pgr_contractionDeadEnd( +$$SELECT * FROM (VALUES + (1, 1, 6, 1, 1), + (2, 2, 7, 1, -1), + (3, 2, 8, 1, -1), + (4, 3, 8, 1, -1), + (5, 9, 4, 1, -1), + (6, 10, 4, 1, 1), + (7, 10, 5, 1, 1), + /* Rest of the graph */ + (8, 1, 25, 1, 1), (9, 1, 26, 1, 1), + (10, 2, 25, 1, 1), (11, 2, 26, 1, 1), + (12, 3, 25, 1, 1), (13, 3, 26, 1, 1), + (14, 4, 25, 1, 1), (15, 4, 26, 1, 1), + (16, 5, 25, 1, 1), (17, 5, 26, 1, 1)) AS edges(id,source,target,cost,reverse_cost)$$, + directed => true); +/* -- q4 */ +SELECT * FROM pgr_contractionDeadEnd( +$$SELECT * FROM (VALUES + (1, 1, 2, 1, -1), + (2, 2, 3, 1, -1), + /* Rest of the graph */ + (3, 1, 25, 1, 1), (4, 1, 26, 1, 1), + (5, 25, 25, 1, 1), (6, 25, 26, 1, 1)) AS edges(id,source,target,cost,reverse_cost)$$, + directed => true); +/* -- q5 */ +/* -- cg1 */ +ALTER TABLE vertices ADD is_contracted BOOLEAN DEFAULT false; +ALTER TABLE vertices ADD contracted_vertices BIGINT[]; +/* -- cg2 */ +SELECT * INTO contraction_results +FROM pgr_contractionDeadEnd( + 'SELECT id, source, target, cost, reverse_cost FROM edges', + directed => false); +/* -- cg3 */ +UPDATE vertices +SET is_contracted = true +WHERE id IN (SELECT unnest(contracted_vertices) FROM contraction_results); +/* -- cg4 */ +UPDATE vertices +SET contracted_vertices = contraction_results.contracted_vertices +FROM contraction_results +WHERE type = 'v' AND vertices.id = contraction_results.id; +/* -- cg5 */ +SELECT id, is_contracted +FROM vertices WHERE is_contracted ORDER BY id; +/* -- cg6 */ +DROP VIEW IF EXISTS contracted_graph; +CREATE VIEW contracted_graph AS +WITH +vertices_in_graph AS ( + SELECT id FROM vertices WHERE is_contracted = false +) +SELECT id, source, target, cost, reverse_cost +FROM edges +WHERE source IN (SELECT * FROM vertices_in_graph) +AND target IN (SELECT * FROM vertices_in_graph) +ORDER BY id; +/* -- cg7 */ +SELECT * +FROM pgr_dijkstra('SELECT * FROM contracted_graph', 6, 17); +/* -- cg8 */ +SELECT * FROM pgr_dijkstra( + 'WITH cul_de_sac AS ( + SELECT contracted_vertices || id as v + FROM vertices WHERE 1 = ANY(contracted_vertices)) + SELECT id, source, target, cost, reverse_cost FROM edges, cul_de_sac + WHERE source = ANY(v) AND target = ANY(v) + + UNION + + SELECT id, source, target, cost, reverse_cost FROM contracted_graph', + 1, 17); +/* -- cg9 */ +SELECT * FROM pgr_dijkstra( + 'WITH cul_de_sac AS ( + SELECT contracted_vertices || id as v + FROM vertices WHERE 1 = ANY(contracted_vertices) OR 9 = ANY(contracted_vertices)) + SELECT id, source, target, cost, reverse_cost FROM edges, cul_de_sac WHERE source = ANY(v) AND target = ANY(v) + + UNION + + SELECT id, source, target, cost, reverse_cost FROM contracted_graph', + 1, 9); +/* -- cg10 */ diff --git a/docqueries/contraction/contractionDeadEnd.result b/docqueries/contraction/contractionDeadEnd.result new file mode 100644 index 0000000000..8990c9af38 --- /dev/null +++ b/docqueries/contraction/contractionDeadEnd.result @@ -0,0 +1,179 @@ +BEGIN; +BEGIN +SET client_min_messages TO NOTICE; +SET +/* -- q1 */ +SELECT * FROM pgr_contractionDeadEnd( + 'SELECT id, source, target, cost, reverse_cost FROM edges', + directed => false); + type | id | contracted_vertices | source | target | cost +------+----+---------------------+--------+--------+------ + v | 4 | {2} | -1 | -1 | -1 + v | 6 | {5} | -1 | -1 | -1 + v | 7 | {1,3} | -1 | -1 | -1 + v | 8 | {9} | -1 | -1 | -1 + v | 14 | {13} | -1 | -1 | -1 +(5 rows) + +/* -- q2 */ +SELECT * FROM pgr_contractionDeadEnd( +$$SELECT * FROM (VALUES + (1, 1, 2, 1, 1), + (2, 3, 4, 1, -1), + (3, 2, 5, 1, 1), (4, 2, 6, 1, 1), + (5, 3, 5, 1, 1), (5, 3, 6, 1, 1)) + AS edges(id,source,target,cost,reverse_cost)$$, + directed => true); + type | id | contracted_vertices | source | target | cost +------+----+---------------------+--------+--------+------ + v | 2 | {1} | -1 | -1 | -1 + v | 3 | {4} | -1 | -1 | -1 +(2 rows) + +/* -- q3 */ +SELECT * FROM pgr_contractionDeadEnd( +$$SELECT * FROM (VALUES + (1, 1, 6, 1, 1), + (2, 2, 7, 1, -1), + (3, 2, 8, 1, -1), + (4, 3, 8, 1, -1), + (5, 9, 4, 1, -1), + (6, 10, 4, 1, 1), + (7, 10, 5, 1, 1), + /* Rest of the graph */ + (8, 1, 25, 1, 1), (9, 1, 26, 1, 1), + (10, 2, 25, 1, 1), (11, 2, 26, 1, 1), + (12, 3, 25, 1, 1), (13, 3, 26, 1, 1), + (14, 4, 25, 1, 1), (15, 4, 26, 1, 1), + (16, 5, 25, 1, 1), (17, 5, 26, 1, 1)) AS edges(id,source,target,cost,reverse_cost)$$, + directed => true); + type | id | contracted_vertices | source | target | cost +------+----+---------------------+--------+--------+------ + v | 1 | {6} | -1 | -1 | -1 + v | 2 | {7,8} | -1 | -1 | -1 + v | 3 | {8} | -1 | -1 | -1 + v | 4 | {9} | -1 | -1 | -1 +(4 rows) + +/* -- q4 */ +SELECT * FROM pgr_contractionDeadEnd( +$$SELECT * FROM (VALUES + (1, 1, 2, 1, -1), + (2, 2, 3, 1, -1), + /* Rest of the graph */ + (3, 1, 25, 1, 1), (4, 1, 26, 1, 1), + (5, 25, 25, 1, 1), (6, 25, 26, 1, 1)) AS edges(id,source,target,cost,reverse_cost)$$, + directed => true); + type | id | contracted_vertices | source | target | cost +------+----+---------------------+--------+--------+------ + v | 1 | {2,3} | -1 | -1 | -1 +(1 row) + +/* -- q5 */ +/* -- cg1 */ +ALTER TABLE vertices ADD is_contracted BOOLEAN DEFAULT false; +ALTER TABLE +ALTER TABLE vertices ADD contracted_vertices BIGINT[]; +ALTER TABLE +/* -- cg2 */ +SELECT * INTO contraction_results +FROM pgr_contractionDeadEnd( + 'SELECT id, source, target, cost, reverse_cost FROM edges', + directed => false); +SELECT 5 +/* -- cg3 */ +UPDATE vertices +SET is_contracted = true +WHERE id IN (SELECT unnest(contracted_vertices) FROM contraction_results); +UPDATE 6 +/* -- cg4 */ +UPDATE vertices +SET contracted_vertices = contraction_results.contracted_vertices +FROM contraction_results +WHERE type = 'v' AND vertices.id = contraction_results.id; +UPDATE 5 +/* -- cg5 */ +SELECT id, is_contracted +FROM vertices WHERE is_contracted ORDER BY id; + id | is_contracted +----+--------------- + 1 | t + 2 | t + 3 | t + 5 | t + 9 | t + 13 | t +(6 rows) + +/* -- cg6 */ +DROP VIEW IF EXISTS contracted_graph; +NOTICE: view "contracted_graph" does not exist, skipping +DROP VIEW +CREATE VIEW contracted_graph AS +WITH +vertices_in_graph AS ( + SELECT id FROM vertices WHERE is_contracted = false +) +SELECT id, source, target, cost, reverse_cost +FROM edges +WHERE source IN (SELECT * FROM vertices_in_graph) +AND target IN (SELECT * FROM vertices_in_graph) +ORDER BY id; +CREATE VIEW +/* -- cg7 */ +SELECT * +FROM pgr_dijkstra('SELECT * FROM contracted_graph', 6, 17); + seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost +-----+----------+-----------+---------+------+------+------+---------- + 1 | 1 | 6 | 17 | 6 | 4 | 1 | 0 + 2 | 2 | 6 | 17 | 7 | 8 | 1 | 1 + 3 | 3 | 6 | 17 | 11 | 11 | 1 | 2 + 4 | 4 | 6 | 17 | 12 | 13 | 1 | 3 + 5 | 5 | 6 | 17 | 17 | -1 | 0 | 4 +(5 rows) + +/* -- cg8 */ +SELECT * FROM pgr_dijkstra( + 'WITH cul_de_sac AS ( + SELECT contracted_vertices || id as v + FROM vertices WHERE 1 = ANY(contracted_vertices)) + SELECT id, source, target, cost, reverse_cost FROM edges, cul_de_sac + WHERE source = ANY(v) AND target = ANY(v) + + UNION + + SELECT id, source, target, cost, reverse_cost FROM contracted_graph', + 1, 17); + seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost +-----+----------+-----------+---------+------+------+------+---------- + 1 | 1 | 1 | 17 | 1 | 6 | 1 | 0 + 2 | 2 | 1 | 17 | 3 | 7 | 1 | 1 + 3 | 3 | 1 | 17 | 7 | 8 | 1 | 2 + 4 | 4 | 1 | 17 | 11 | 9 | 1 | 3 + 5 | 5 | 1 | 17 | 16 | 15 | 1 | 4 + 6 | 6 | 1 | 17 | 17 | -1 | 0 | 5 +(6 rows) + +/* -- cg9 */ +SELECT * FROM pgr_dijkstra( + 'WITH cul_de_sac AS ( + SELECT contracted_vertices || id as v + FROM vertices WHERE 1 = ANY(contracted_vertices) OR 9 = ANY(contracted_vertices)) + SELECT id, source, target, cost, reverse_cost FROM edges, cul_de_sac WHERE source = ANY(v) AND target = ANY(v) + + UNION + + SELECT id, source, target, cost, reverse_cost FROM contracted_graph', + 1, 9); + seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost +-----+----------+-----------+---------+------+------+------+---------- + 1 | 1 | 1 | 9 | 1 | 6 | 1 | 0 + 2 | 2 | 1 | 9 | 3 | 7 | 1 | 1 + 3 | 3 | 1 | 9 | 7 | 10 | 1 | 2 + 4 | 4 | 1 | 9 | 8 | 14 | 1 | 3 + 5 | 5 | 1 | 9 | 9 | -1 | 0 | 4 +(5 rows) + +/* -- cg10 */ +ROLLBACK; +ROLLBACK diff --git a/docqueries/contraction/contractionLinear.pg b/docqueries/contraction/contractionLinear.pg new file mode 100644 index 0000000000..dfe9cf6af2 --- /dev/null +++ b/docqueries/contraction/contractionLinear.pg @@ -0,0 +1,90 @@ +-- CopyRight(c) pgRouting developers +-- Creative Commons Attribution-Share Alike 3.0 License : https://creativecommons.org/licenses/by-sa/3.0/ +/* -- q1 */ +SELECT * FROM pgr_contractionLinear( + 'SELECT id, source, target, cost, reverse_cost FROM edges', + directed => false); +/* -- q2 */ +SELECT * FROM pgr_contractionLinear( +$$SELECT * FROM (VALUES + (1, 1, 2, 1, -1), + (2, 2, 3, 3, 4)) + AS edges(id,source,target,cost,reverse_cost)$$, + directed => true); +/* -- q3 */ +SELECT * FROM pgr_contractionLinear( +$$SELECT * FROM (VALUES + (1, 1, 2, 1, -1), + (2, 2, 3, 3, 4)) + AS edges(id,source,target,cost,reverse_cost)$$, + directed => false); +/* -- q4 */ +SELECT * FROM pgr_contractionLinear( +$$SELECT * FROM (VALUES + (1, 1, 2, 1, 2), + (2, 2, 3, 3, 4)) + AS edges(id,source,target,cost,reverse_cost)$$, + directed => true); +/* -- q5 */ +SELECT * FROM pgr_contractionLinear( +$$SELECT * FROM (VALUES + (1, 1, 2, 1, 2), + (2, 2, 3, 3, 4)) + AS edges(id,source,target,cost,reverse_cost)$$, + directed => false); +/* -- q6 */ +SELECT * FROM pgr_contractionLinear( +$$SELECT * FROM (VALUES + (1, 1, 2, 1), + (2, 2, 3, 1), + (2, 3, 4, 1)) + AS edges(id,source,target,cost)$$); +/* -- q7 */ +/* -- cg1 */ +ALTER TABLE vertices ADD is_contracted BOOLEAN DEFAULT false; +ALTER TABLE edges ADD is_new BOOLEAN DEFAULT false; +ALTER TABLE edges ADD contracted_vertices BIGINT[]; +/* -- cg2 */ +SELECT * INTO contraction_results +FROM pgr_contractionLinear( + 'SELECT id, source, target, cost, reverse_cost FROM edges', + directed => false); +/* -- cg3 */ +UPDATE vertices +SET is_contracted = true +WHERE id IN (SELECT unnest(contracted_vertices) FROM contraction_results); +/* -- cg4 */ +SELECT id, is_contracted +FROM vertices WHERE is_contracted ORDER BY id; +/* -- cg5 */ +INSERT INTO edges(source, target, cost, reverse_cost, contracted_vertices, is_new) +SELECT source, target, cost, -1, contracted_vertices, true +FROM contraction_results; +/* -- cg6 */ +CREATE VIEW contracted_graph AS +WITH +vertices_in_graph AS ( + SELECT id FROM vertices WHERE NOT is_contracted +) +SELECT id, source, target, cost, reverse_cost +FROM edges +WHERE source IN (SELECT * FROM vertices_in_graph) +AND target IN (SELECT * FROM vertices_in_graph) +ORDER BY id; +/* -- cg7 */ +SELECT * FROM contracted_graph ORDER by id; +/* -- cg8 */ +SELECT * +FROM pgr_dijkstra('SELECT * FROM contracted_graph', 7, 16); +/* -- cg9 */ +SELECT * FROM pgr_dijkstra( + 'WITH in_line AS (SELECT contracted_vertices FROM edges WHERE 17 = ANY(contracted_vertices)) + SELECT id, source, target, cost, reverse_cost + FROM edges, in_line + WHERE source = ANY(in_line.contracted_vertices) OR target = ANY(in_line.contracted_vertices) + + UNION + + SELECT id, source, target, cost, reverse_cost FROM contracted_graph', + 1, 17); +/* -- cg10 */ diff --git a/docqueries/contraction/contractionLinear.result b/docqueries/contraction/contractionLinear.result new file mode 100644 index 0000000000..5eb5d3e7f0 --- /dev/null +++ b/docqueries/contraction/contractionLinear.result @@ -0,0 +1,175 @@ +BEGIN; +BEGIN +SET client_min_messages TO NOTICE; +SET +/* -- q1 */ +SELECT * FROM pgr_contractionLinear( + 'SELECT id, source, target, cost, reverse_cost FROM edges', + directed => false); + type | id | contracted_vertices | source | target | cost +------+----+---------------------+--------+--------+------ + e | -1 | {3} | 1 | 7 | 2 + e | -2 | {17} | 12 | 16 | 2 + e | -3 | {15} | 10 | 16 | 2 +(3 rows) + +/* -- q2 */ +SELECT * FROM pgr_contractionLinear( +$$SELECT * FROM (VALUES + (1, 1, 2, 1, -1), + (2, 2, 3, 3, 4)) + AS edges(id,source,target,cost,reverse_cost)$$, + directed => true); + type | id | contracted_vertices | source | target | cost +------+----+---------------------+--------+--------+------ +(0 rows) + +/* -- q3 */ +SELECT * FROM pgr_contractionLinear( +$$SELECT * FROM (VALUES + (1, 1, 2, 1, -1), + (2, 2, 3, 3, 4)) + AS edges(id,source,target,cost,reverse_cost)$$, + directed => false); + type | id | contracted_vertices | source | target | cost +------+----+---------------------+--------+--------+------ + e | -1 | {2} | 1 | 3 | 4 +(1 row) + +/* -- q4 */ +SELECT * FROM pgr_contractionLinear( +$$SELECT * FROM (VALUES + (1, 1, 2, 1, 2), + (2, 2, 3, 3, 4)) + AS edges(id,source,target,cost,reverse_cost)$$, + directed => true); + type | id | contracted_vertices | source | target | cost +------+----+---------------------+--------+--------+------ + e | -1 | {2} | 1 | 3 | 4 + e | -2 | {2} | 3 | 1 | 6 +(2 rows) + +/* -- q5 */ +SELECT * FROM pgr_contractionLinear( +$$SELECT * FROM (VALUES + (1, 1, 2, 1, 2), + (2, 2, 3, 3, 4)) + AS edges(id,source,target,cost,reverse_cost)$$, + directed => false); + type | id | contracted_vertices | source | target | cost +------+----+---------------------+--------+--------+------ + e | -1 | {2} | 1 | 3 | 4 +(1 row) + +/* -- q6 */ +SELECT * FROM pgr_contractionLinear( +$$SELECT * FROM (VALUES + (1, 1, 2, 1), + (2, 2, 3, 1), + (2, 3, 4, 1)) + AS edges(id,source,target,cost)$$); + type | id | contracted_vertices | source | target | cost +------+----+---------------------+--------+--------+------ + e | -1 | {2,3} | 1 | 4 | 3 +(1 row) + +/* -- q7 */ +/* -- cg1 */ +ALTER TABLE vertices ADD is_contracted BOOLEAN DEFAULT false; +ALTER TABLE +ALTER TABLE edges ADD is_new BOOLEAN DEFAULT false; +ALTER TABLE +ALTER TABLE edges ADD contracted_vertices BIGINT[]; +ALTER TABLE +/* -- cg2 */ +SELECT * INTO contraction_results +FROM pgr_contractionLinear( + 'SELECT id, source, target, cost, reverse_cost FROM edges', + directed => false); +SELECT 3 +/* -- cg3 */ +UPDATE vertices +SET is_contracted = true +WHERE id IN (SELECT unnest(contracted_vertices) FROM contraction_results); +UPDATE 3 +/* -- cg4 */ +SELECT id, is_contracted +FROM vertices WHERE is_contracted ORDER BY id; + id | is_contracted +----+--------------- + 3 | t + 15 | t + 17 | t +(3 rows) + +/* -- cg5 */ +INSERT INTO edges(source, target, cost, reverse_cost, contracted_vertices, is_new) +SELECT source, target, cost, -1, contracted_vertices, true +FROM contraction_results; +INSERT 0 3 +/* -- cg6 */ +CREATE VIEW contracted_graph AS +WITH +vertices_in_graph AS ( + SELECT id FROM vertices WHERE NOT is_contracted +) +SELECT id, source, target, cost, reverse_cost +FROM edges +WHERE source IN (SELECT * FROM vertices_in_graph) +AND target IN (SELECT * FROM vertices_in_graph) +ORDER BY id; +CREATE VIEW +/* -- cg7 */ +SELECT * FROM contracted_graph ORDER by id; + id | source | target | cost | reverse_cost +----+--------+--------+------+-------------- + 1 | 5 | 6 | 1 | 1 + 2 | 6 | 10 | -1 | 1 + 4 | 6 | 7 | 1 | 1 + 5 | 10 | 11 | 1 | -1 + 8 | 7 | 11 | 1 | 1 + 9 | 11 | 16 | 1 | 1 + 10 | 7 | 8 | 1 | 1 + 11 | 11 | 12 | 1 | -1 + 12 | 8 | 12 | 1 | -1 + 14 | 8 | 9 | 1 | 1 + 17 | 2 | 4 | 1 | 1 + 18 | 13 | 14 | 1 | 1 + 19 | 1 | 7 | 2 | -1 + 20 | 12 | 16 | 2 | -1 + 21 | 10 | 16 | 2 | -1 +(15 rows) + +/* -- cg8 */ +SELECT * +FROM pgr_dijkstra('SELECT * FROM contracted_graph', 7, 16); + seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost +-----+----------+-----------+---------+------+------+------+---------- + 1 | 1 | 7 | 16 | 7 | 8 | 1 | 0 + 2 | 2 | 7 | 16 | 11 | 9 | 1 | 1 + 3 | 3 | 7 | 16 | 16 | -1 | 0 | 2 +(3 rows) + +/* -- cg9 */ +SELECT * FROM pgr_dijkstra( + 'WITH in_line AS (SELECT contracted_vertices FROM edges WHERE 17 = ANY(contracted_vertices)) + SELECT id, source, target, cost, reverse_cost + FROM edges, in_line + WHERE source = ANY(in_line.contracted_vertices) OR target = ANY(in_line.contracted_vertices) + + UNION + + SELECT id, source, target, cost, reverse_cost FROM contracted_graph', + 1, 17); + seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost +-----+----------+-----------+---------+------+------+------+---------- + 1 | 1 | 1 | 17 | 1 | 19 | 2 | 0 + 2 | 2 | 1 | 17 | 7 | 8 | 1 | 2 + 3 | 3 | 1 | 17 | 11 | 9 | 1 | 3 + 4 | 4 | 1 | 17 | 16 | 15 | 1 | 4 + 5 | 5 | 1 | 17 | 17 | -1 | 0 | 5 +(5 rows) + +/* -- cg10 */ +ROLLBACK; +ROLLBACK diff --git a/docqueries/contraction/test.conf b/docqueries/contraction/test.conf index bd08f892df..9467440997 100644 --- a/docqueries/contraction/test.conf +++ b/docqueries/contraction/test.conf @@ -3,8 +3,9 @@ %main::tests = ( 'any' => { 'files' => [qw( - contraction-family.pg contraction.pg + contractionDeadEnd.pg + contractionLinear.pg )] }, diff --git a/docqueries/metrics/CMakeLists.txt b/docqueries/metrics/CMakeLists.txt index 27f1bdae57..010b2229c9 100644 --- a/docqueries/metrics/CMakeLists.txt +++ b/docqueries/metrics/CMakeLists.txt @@ -1,6 +1,7 @@ # Do not use extensions SET(LOCAL_FILES - betweennessCentrality + betweennessCentrality + degree ) foreach (f ${LOCAL_FILES}) diff --git a/docqueries/metrics/degree.pg b/docqueries/metrics/degree.pg new file mode 100644 index 0000000000..1fb89b6e55 --- /dev/null +++ b/docqueries/metrics/degree.pg @@ -0,0 +1,39 @@ +-- CopyRight(c) pgRouting developers +-- Creative Commons Attribution-Share Alike 3.0 License : https://creativecommons.org/licenses/by-sa/3.0/ +/* -- q1 */ +SELECT * FROM pgr_degree($$SELECT id, source, target FROM edges$$) +ORDER BY node; +/* -- q2 */ +SELECT * FROM pgr_degree( + $$SELECT id FROM edges$$, + $$SELECT id, in_edges, out_edges + FROM pgr_extractVertices('SELECT id, geom FROM edges')$$); +/* -- q3 */ +SELECT * from pgr_degree('SELECT 1 as id, 2 as source, 2 as target'); +/* -- q4 */ +SELECT * FROM pgr_degree( + $$SELECT 1 AS id$$, + $$SELECT id, in_edges, out_edges + FROM pgr_extractVertices('SELECT 1 as id, 2 as source, 2 as target')$$); +/* -- q5 */ +SELECT * FROM pgr_degree($$SELECT * FROM edges WHERE id IN (1, 2)$$); +/* -- q6 */ +SELECT * FROM pgr_degree( + $$SELECT * FROM edges WHERE id IN (1, 2)$$, + $$SELECT id, in_edges, out_edges FROM vertices$$); +/* -- q7 */ +DROP TABLE IF EXISTS vertices; +/* -- q8*/ +CREATE TABLE vertices AS +SELECT id, in_edges, out_edges +FROM pgr_extractVertices('SELECT id, geom FROM edges'); +/* -- q9 */ +SELECT * FROM pgr_degree( + $$SELECT id FROM edges$$, + $$SELECT id, in_edges, out_edges FROM vertices$$); +/* -- q10 */ +SELECT * FROM pgr_degree( + $$SELECT id FROM edges WHERE id < 17$$, + $$SELECT id, in_edges, out_edges FROM vertices$$, + dryrun => true); +/* -- q11 */ diff --git a/docqueries/metrics/degree.result b/docqueries/metrics/degree.result new file mode 100644 index 0000000000..d2e101a4f2 --- /dev/null +++ b/docqueries/metrics/degree.result @@ -0,0 +1,166 @@ +BEGIN; +BEGIN +SET client_min_messages TO NOTICE; +SET +/* -- q1 */ +SELECT * FROM pgr_degree($$SELECT id, source, target FROM edges$$) +ORDER BY node; + node | degree +------+-------- + 1 | 1 + 2 | 1 + 3 | 2 + 4 | 1 + 5 | 1 + 6 | 3 + 7 | 4 + 8 | 3 + 9 | 1 + 10 | 3 + 11 | 4 + 12 | 3 + 13 | 1 + 14 | 1 + 15 | 2 + 16 | 3 + 17 | 2 +(17 rows) + +/* -- q2 */ +SELECT * FROM pgr_degree( + $$SELECT id FROM edges$$, + $$SELECT id, in_edges, out_edges + FROM pgr_extractVertices('SELECT id, geom FROM edges')$$); + node | degree +------+-------- + 1 | 1 + 2 | 1 + 3 | 2 + 4 | 1 + 5 | 1 + 6 | 3 + 7 | 4 + 8 | 3 + 9 | 1 + 10 | 3 + 11 | 4 + 12 | 3 + 13 | 1 + 14 | 1 + 15 | 2 + 16 | 3 + 17 | 2 +(17 rows) + +/* -- q3 */ +SELECT * from pgr_degree('SELECT 1 as id, 2 as source, 2 as target'); + node | degree +------+-------- + 2 | 2 +(1 row) + +/* -- q4 */ +SELECT * FROM pgr_degree( + $$SELECT 1 AS id$$, + $$SELECT id, in_edges, out_edges + FROM pgr_extractVertices('SELECT 1 as id, 2 as source, 2 as target')$$); + node | degree +------+-------- + 2 | 2 +(1 row) + +/* -- q5 */ +SELECT * FROM pgr_degree($$SELECT * FROM edges WHERE id IN (1, 2)$$); + node | degree +------+-------- + 10 | 1 + 6 | 2 + 5 | 1 +(3 rows) + +/* -- q6 */ +SELECT * FROM pgr_degree( + $$SELECT * FROM edges WHERE id IN (1, 2)$$, + $$SELECT id, in_edges, out_edges FROM vertices$$); + node | degree +------+-------- + 5 | 1 + 6 | 2 + 10 | 1 +(3 rows) + +/* -- q7 */ +DROP TABLE IF EXISTS vertices; +DROP TABLE +/* -- q8*/ +CREATE TABLE vertices AS +SELECT id, in_edges, out_edges +FROM pgr_extractVertices('SELECT id, geom FROM edges'); +SELECT 17 +/* -- q9 */ +SELECT * FROM pgr_degree( + $$SELECT id FROM edges$$, + $$SELECT id, in_edges, out_edges FROM vertices$$); + node | degree +------+-------- + 1 | 1 + 2 | 1 + 3 | 2 + 4 | 1 + 5 | 1 + 6 | 3 + 7 | 4 + 8 | 3 + 9 | 1 + 10 | 3 + 11 | 4 + 12 | 3 + 13 | 1 + 14 | 1 + 15 | 2 + 16 | 3 + 17 | 2 +(17 rows) + +/* -- q10 */ +SELECT * FROM pgr_degree( + $$SELECT id FROM edges WHERE id < 17$$, + $$SELECT id, in_edges, out_edges FROM vertices$$, + dryrun => true); +NOTICE: + WITH + + -- a sub set of edges of the graph goes here + g_edges AS ( + SELECT id FROM edges WHERE id < 17 + ), + + -- sub set of vertices of the graph goes here + all_vertices AS ( + SELECT id, in_edges, out_edges FROM vertices + ), + + g_vertices AS ( + SELECT id, + unnest( + coalesce(in_edges::BIGINT[], '{}'::BIGINT[]) + || + coalesce(out_edges::BIGINT[], '{}'::BIGINT[])) AS eid + FROM all_vertices + ), + + totals AS ( + SELECT v.id, count(*) + FROM g_vertices v + JOIN g_edges e ON (v.eid = e.id) GROUP BY v.id + ) + + SELECT id::BIGINT, count::BIGINT FROM all_vertices JOIN totals USING (id) + ; + node | degree +------+-------- +(0 rows) + +/* -- q11 */ +ROLLBACK; +ROLLBACK diff --git a/docqueries/metrics/test.conf b/docqueries/metrics/test.conf index 6afe7ec483..252681dc40 100644 --- a/docqueries/metrics/test.conf +++ b/docqueries/metrics/test.conf @@ -4,6 +4,7 @@ 'any' => { 'files' => [qw( betweennessCentrality.pg + degree.pg )] }, diff --git a/docqueries/ordering/CMakeLists.txt b/docqueries/ordering/CMakeLists.txt index c7b6712ab1..9ae17c3d87 100644 --- a/docqueries/ordering/CMakeLists.txt +++ b/docqueries/ordering/CMakeLists.txt @@ -1,6 +1,7 @@ # Do not use extensions SET(LOCAL_FILES cuthillMckeeOrdering + topologicalSort ) foreach (f ${LOCAL_FILES}) @@ -8,4 +9,4 @@ foreach (f ${LOCAL_FILES}) list(APPEND LOCAL_DOC_FILES "${PGR_DOCUMENTATION_SOURCE_DIR}/${f}.queries") endforeach() -set(PROJECT_DOC_FILES ${PROJECT_DOC_FILES} ${LOCAL_DOC_FILES} PARENT_SCOPE) \ No newline at end of file +set(PROJECT_DOC_FILES ${PROJECT_DOC_FILES} ${LOCAL_DOC_FILES} PARENT_SCOPE) diff --git a/docqueries/ordering/test.conf b/docqueries/ordering/test.conf index 257a2beef7..74ee3644ad 100644 --- a/docqueries/ordering/test.conf +++ b/docqueries/ordering/test.conf @@ -4,6 +4,7 @@ 'any' => { 'files' => [qw( cuthillMckeeOrdering.pg + topologicalSort.pg )] }, diff --git a/docqueries/topologicalSort/topologicalSort.pg b/docqueries/ordering/topologicalSort.pg similarity index 100% rename from docqueries/topologicalSort/topologicalSort.pg rename to docqueries/ordering/topologicalSort.pg diff --git a/docqueries/topologicalSort/topologicalSort.result b/docqueries/ordering/topologicalSort.result similarity index 99% rename from docqueries/topologicalSort/topologicalSort.result rename to docqueries/ordering/topologicalSort.result index f055e8336f..ac0fd1cad1 100644 --- a/docqueries/topologicalSort/topologicalSort.result +++ b/docqueries/ordering/topologicalSort.result @@ -62,7 +62,6 @@ SELECT * FROM pgr_topologicalsort( SELECT * FROM pgr_topologicalsort( $$SELECT id, source, target, cost, reverse_cost FROM edges$$); ERROR: Graph is not DAG -HINT: CONTEXT: SQL function "pgr_topologicalsort" statement 1 /* -- q4 */ ROLLBACK; diff --git a/docqueries/pickDeliver/CMakeLists.txt b/docqueries/pickDeliver/CMakeLists.txt index 76b0015761..d9064c641f 100644 --- a/docqueries/pickDeliver/CMakeLists.txt +++ b/docqueries/pickDeliver/CMakeLists.txt @@ -2,6 +2,7 @@ SET(LOCAL_FILES pickDeliverEuclidean pickDeliver + vrpOneDepot lc101 ) diff --git a/docqueries/vrp_basic/oneDepotWrapper.pg b/docqueries/pickDeliver/oneDepotWrapper.pg similarity index 100% rename from docqueries/vrp_basic/oneDepotWrapper.pg rename to docqueries/pickDeliver/oneDepotWrapper.pg diff --git a/docqueries/vrp_basic/oneDepotWrapper.result b/docqueries/pickDeliver/oneDepotWrapper.result similarity index 100% rename from docqueries/vrp_basic/oneDepotWrapper.result rename to docqueries/pickDeliver/oneDepotWrapper.result diff --git a/docqueries/vrp_basic/solomon100-optimal.png b/docqueries/pickDeliver/solomon100-optimal.png similarity index 100% rename from docqueries/vrp_basic/solomon100-optimal.png rename to docqueries/pickDeliver/solomon100-optimal.png diff --git a/docqueries/pickDeliver/test.conf b/docqueries/pickDeliver/test.conf index 7b331a952e..ad136d8fae 100644 --- a/docqueries/pickDeliver/test.conf +++ b/docqueries/pickDeliver/test.conf @@ -2,9 +2,11 @@ %main::tests = ( 'any' => { + 'data' => ['../../tools/testers/solomon_100_rc101.data.sql'], 'files' => [qw( pickDeliver.pg pickDeliverEuclidean.pg + vrpOneDepot.pg lc101.pg )], diff --git a/docqueries/vrp_basic/vrpOneDepot.pg b/docqueries/pickDeliver/vrpOneDepot.pg similarity index 100% rename from docqueries/vrp_basic/vrpOneDepot.pg rename to docqueries/pickDeliver/vrpOneDepot.pg diff --git a/docqueries/vrp_basic/vrpOneDepot.result b/docqueries/pickDeliver/vrpOneDepot.result similarity index 100% rename from docqueries/vrp_basic/vrpOneDepot.result rename to docqueries/pickDeliver/vrpOneDepot.result diff --git a/docqueries/src/concepts.pg b/docqueries/src/concepts.pg index ca96938fdf..3ea5eae507 100644 --- a/docqueries/src/concepts.pg +++ b/docqueries/src/concepts.pg @@ -10,9 +10,6 @@ FROM (VALUES (1, 1, 2, 5, 2), (2, 1, 3, -3, 4), (3, 2, 3, 7, -1)) AS t(id, source, target, cost, reverse_cost); /* -- g3 */ - - - DROP TABLE IF EXISTS wiki; /* -- q1 */ CREATE TABLE wiki ( @@ -183,7 +180,7 @@ SELECT edge_id, fraction, ST_AsText(edge) AS edge, id AS closest_vertex FROM pgr_findCloseEdges( $$SELECT id, geom FROM edges WHERE component = 1$$, (SELECT array_agg(geom) FROM vertices WHERE component = 2), - 2, partial => false) JOIN vertices USING (geom) ORDER BY distance LIMIT 1; + 2) JOIN vertices USING (geom) ORDER BY distance LIMIT 1; /* -- connect7 */ WITH info AS ( @@ -193,7 +190,7 @@ info AS ( FROM pgr_findCloseEdges( $$SELECT id, geom FROM edges WHERE component = 1$$, (SELECT array_agg(geom) FROM vertices WHERE component = 2), - 2, partial => false) AS ce + 2) AS ce JOIN vertices AS v USING (geom) JOIN edges AS e ON (edge_id = e.id) ORDER BY distance LIMIT 1), @@ -245,9 +242,17 @@ WHERE array_length(in_edges || out_edges, 1) = 2; /* -- contract3 */ /* -- performance1 */ -SELECT * FROM pgr_dijkstra($$ - SELECT id, source, target, cost, reverse_cost from edges - WHERE geom && (SELECT st_buffer(geom, 1) AS myarea - FROM edges WHERE id = 2)$$, - 1, 2); +SELECT id, source, target, cost, reverse_cost +FROM edges +WHERE geom && ( + SELECT st_buffer(geom, 1) as myarea + FROM edges where id = 6) ORDER BY id; /* -- performance2 */ +SELECT * FROM pgr_dijkstra($$ + SELECT id, source, target, cost, reverse_cost + FROM edges + WHERE geom && ( + SELECT st_buffer(geom, 1) AS myarea + FROM edges WHERE id = 6)$$, + 7, 8); +/* -- performance3 */ diff --git a/docqueries/src/concepts.result b/docqueries/src/concepts.result index aa3e79b767..39b66bb980 100644 --- a/docqueries/src/concepts.result +++ b/docqueries/src/concepts.result @@ -308,7 +308,7 @@ SELECT edge_id, fraction, ST_AsText(edge) AS edge, id AS closest_vertex FROM pgr_findCloseEdges( $$SELECT id, geom FROM edges WHERE component = 1$$, (SELECT array_agg(geom) FROM vertices WHERE component = 2), - 2, partial => false) JOIN vertices USING (geom) ORDER BY distance LIMIT 1; + 2) JOIN vertices USING (geom) ORDER BY distance LIMIT 1; edge_id | fraction | edge | closest_vertex ---------+----------+--------------------------------------+---------------- 14 | 0.5 | LINESTRING(1.999999999999 3.5,2 3.5) | 4 @@ -323,7 +323,7 @@ info AS ( FROM pgr_findCloseEdges( $$SELECT id, geom FROM edges WHERE component = 1$$, (SELECT array_agg(geom) FROM vertices WHERE component = 2), - 2, partial => false) AS ce + 2) AS ce JOIN vertices AS v USING (geom) JOIN edges AS e ON (edge_id = e.id) ORDER BY distance LIMIT 1), @@ -414,15 +414,39 @@ WHERE array_length(in_edges || out_edges, 1) = 2; /* -- contract3 */ /* -- performance1 */ +SELECT id, source, target, cost, reverse_cost +FROM edges +WHERE geom && ( + SELECT st_buffer(geom, 1) as myarea + FROM edges where id = 6) ORDER BY id; + id | source | target | cost | reverse_cost +----+--------+--------+------+-------------- + 1 | 5 | 6 | 1 | 1 + 2 | 6 | 10 | -1 | 1 + 4 | 6 | 7 | 1 | 1 + 6 | 1 | 3 | 1 | 1 + 7 | 3 | 7 | 1 | 1 + 8 | 7 | 11 | 1 | 1 + 10 | 7 | 8 | 1 | 1 + 12 | 8 | 12 | 1 | -1 + 14 | 8 | 9 | 1 | 1 + 23 | 4 | 8 | 0 | 0 +(10 rows) + +/* -- performance2 */ SELECT * FROM pgr_dijkstra($$ - SELECT id, source, target, cost, reverse_cost from edges - WHERE geom && (SELECT st_buffer(geom, 1) AS myarea - FROM edges WHERE id = 2)$$, - 1, 2); + SELECT id, source, target, cost, reverse_cost + FROM edges + WHERE geom && ( + SELECT st_buffer(geom, 1) AS myarea + FROM edges WHERE id = 6)$$, + 7, 8); seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost -----+----------+-----------+---------+------+------+------+---------- -(0 rows) + 1 | 1 | 7 | 8 | 7 | 10 | 1 | 0 + 2 | 2 | 7 | 8 | 8 | -1 | 0 | 1 +(2 rows) -/* -- performance2 */ +/* -- performance3 */ ROLLBACK; ROLLBACK diff --git a/docqueries/src/migration.pg b/docqueries/src/migration.pg index d332ab6d9c..a124777d8b 100644 --- a/docqueries/src/migration.pg +++ b/docqueries/src/migration.pg @@ -34,11 +34,6 @@ SELECT * FROM new_restrictions; /* --rest5 */ /* --verticesv1 */ -SELECT * FROM pgr_trsp( - $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost - FROM edges WHERE id != 16$$, - 15, 16, - true, true); /* --verticesv2 */ SELECT * FROM pgr_dijkstra( $$SELECT id, source, target, cost, reverse_cost @@ -51,13 +46,6 @@ FROM pgr_dijkstra( FROM edges WHERE id != 16$$, 15, 16); /* --verticesv4 */ -SELECT * FROM pgr_trsp( - $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost - FROM edges WHERE id != 16$$, - 15, 16, - true, true, - $$SELECT to_cost, target_id::INTEGER, via_path - FROM old_restrictions$$); /* --verticesv5 */ SELECT * FROM pgr_trsp( $$SELECT id, source, target, cost, reverse_cost @@ -75,11 +63,6 @@ FROM pgr_trsp( SELECT pid, edge_id, fraction, side FROM pointsOfInterest WHERE pid IN (3, 4); /* --edgesv1 */ -SELECT * FROM pgr_trsp( - $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost - FROM edges$$, - 6, 0.3, 12, 0.6, - true, true); /* --edgesv2 */ SELECT * FROM pgr_withPoints( $$SELECT id, source, target, cost, reverse_cost FROM edges$$, @@ -94,10 +77,6 @@ FROM pgr_withPoints( -1, -2, details => false); /* --edgesv4 */ -SELECT * FROM pgr_trsp( - $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges$$, - 6, 0.3, 12, 0.6, true, true, - $$SELECT to_cost, target_id::INTEGER, via_path FROM old_restrictions$$); /* --edgesv5 */ SELECT * FROM pgr_trsp_withPoints( $$SELECT id, source, target, cost, reverse_cost FROM edges$$, @@ -115,11 +94,6 @@ FROM pgr_trsp_withPoints( details => false) WHERE edge != -1; /* --edgesv7 */ -/* --viav1 */ -SELECT * FROM pgr_trspViaVertices( - $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges$$, - ARRAY[6, 3, 6], - true, true); /* --viav2 */ SELECT * FROM pgr_dijkstraVia( $$SELECT id, source, target, cost, reverse_cost FROM edges$$, @@ -133,11 +107,6 @@ FROM pgr_dijkstraVia( ARRAY[6, 3, 6]) WHERE edge != -1; /* --viav4*/ -SELECT * FROM pgr_trspViaVertices( - $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges$$, - ARRAY[6, 3, 6], - true, true, - $$SELECT to_cost, target_id::INTEGER, via_path FROM old_restrictions$$); /* --viav5 */ SELECT * FROM pgr_trspVia( $$SELECT id, source, target, cost, reverse_cost FROM edges$$, @@ -156,10 +125,7 @@ WHERE edge != -1; SELECT pid, edge_id, fraction, side FROM pointsOfInterest WHERE pid IN (3, 4, 6); /* --edgesvia1 */ -SELECT * FROM pgr_trspViaEdges( - $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges$$, - ARRAY[6, 12, 4], ARRAY[0.3, 0.6, 0.7], - true, true); +SELECT pid, edge_id, fraction FROM pointsOfInterest WHERE pid IN (3, 4, 6); /* --edgesvia2 */ SELECT * FROM pgr_withPointsVia( $$SELECT id, source, target, cost, reverse_cost FROM edges$$, @@ -172,15 +138,10 @@ path_id::INTEGER AS id1, node::INTEGER AS id2, CASE WHEN edge >= 0 THEN edge::INTEGER ELSE -1 END AS id3, cost::FLOAT FROM pgr_withPointsVia( $$SELECT id, source, target, cost, reverse_cost FROM edges$$, - $$SELECT * FROM (VALUES (1, 6, 0.3),(2, 12, 0.6),(3, 4, 0.7)) AS t(pid, edge_id, fraction)$$, - ARRAY[-1, -2, -3], - details=> false); + $$SELECT pid, edge_id, fraction FROM pointsOfInterest WHERE pid IN (3, 4, 6)$$, + ARRAY[-4, -3, -6], + details => false); /* --edgesvia4 */ -SELECT * FROM pgr_trspViaEdges( - $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges$$, - ARRAY[6, 12, 4], ARRAY[0.3, 0.6, 0.7], - true, true, - $$SELECT to_cost, target_id::INTEGER, via_path FROM old_restrictions$$); /* --edgesvia5 */ SELECT * FROM pgr_trspVia_withPoints( $$SELECT id, source, target, cost, reverse_cost FROM edges$$, diff --git a/docqueries/src/migration.result b/docqueries/src/migration.result index 93e5af8927..c6b2a6aaa6 100644 --- a/docqueries/src/migration.result +++ b/docqueries/src/migration.result @@ -65,20 +65,6 @@ SELECT * FROM new_restrictions; /* --rest5 */ /* --verticesv1 */ -SELECT * FROM pgr_trsp( - $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost - FROM edges WHERE id != 16$$, - 15, 16, - true, true); -WARNING: pgr_trsp(text,integer,integer,boolean,boolean) deprecated signature on v3.4.0 - seq | id1 | id2 | cost ------+-----+-----+------ - 0 | 15 | 3 | 1 - 1 | 10 | 5 | 1 - 2 | 11 | 9 | 1 - 3 | 16 | -1 | 0 -(4 rows) - /* --verticesv2 */ SELECT * FROM pgr_dijkstra( $$SELECT id, source, target, cost, reverse_cost @@ -107,24 +93,6 @@ FROM pgr_dijkstra( (4 rows) /* --verticesv4 */ -SELECT * FROM pgr_trsp( - $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost - FROM edges WHERE id != 16$$, - 15, 16, - true, true, - $$SELECT to_cost, target_id::INTEGER, via_path - FROM old_restrictions$$); -WARNING: pgr_trsp(text,integer,integer,boolean,boolean) deprecated signature on v3.4.0 - seq | id1 | id2 | cost ------+-----+-----+------ - 0 | 15 | 3 | 1 - 1 | 10 | 5 | 1 - 2 | 11 | 11 | 1 - 3 | 12 | 13 | 1 - 4 | 17 | 15 | 1 - 5 | 16 | -1 | 0 -(6 rows) - /* --verticesv5 */ SELECT * FROM pgr_trsp( $$SELECT id, source, target, cost, reverse_cost @@ -168,21 +136,6 @@ WHERE pid IN (3, 4); (2 rows) /* --edgesv1 */ -SELECT * FROM pgr_trsp( - $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost - FROM edges$$, - 6, 0.3, 12, 0.6, - true, true); -WARNING: pgr_trsp(text,integer,float,integer,float,boolean,boolean) deprecated signature on v3.4.0 - seq | id1 | id2 | cost ------+-----+-----+------ - 0 | -1 | 6 | 0.7 - 1 | 3 | 7 | 1 - 2 | 7 | 10 | 1 - 3 | 8 | 12 | 0.6 - 4 | -2 | -1 | 0 -(5 rows) - /* --edgesv2 */ SELECT * FROM pgr_withPoints( $$SELECT id, source, target, cost, reverse_cost FROM edges$$, @@ -215,25 +168,6 @@ FROM pgr_withPoints( (5 rows) /* --edgesv4 */ -SELECT * FROM pgr_trsp( - $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges$$, - 6, 0.3, 12, 0.6, true, true, - $$SELECT to_cost, target_id::INTEGER, via_path FROM old_restrictions$$); -WARNING: pgr_trsp(text,integer,float,integer,float,boolean,boolean) deprecated signature on v3.4.0 - seq | id1 | id2 | cost ------+-----+-----+------ - 0 | -1 | 6 | 0.7 - 1 | 3 | 7 | 1 - 2 | 7 | 8 | 1 - 3 | 11 | 9 | 1 - 4 | 16 | 16 | 1 - 5 | 15 | 3 | 1 - 6 | 10 | 2 | 1 - 7 | 6 | 4 | 1 - 8 | 7 | 10 | 1 - 9 | 8 | 12 | 0.6 -(10 rows) - /* --edgesv5 */ SELECT * FROM pgr_trsp_withPoints( $$SELECT id, source, target, cost, reverse_cost FROM edges$$, @@ -280,21 +214,6 @@ WHERE edge != -1; (10 rows) /* --edgesv7 */ -/* --viav1 */ -SELECT * FROM pgr_trspViaVertices( - $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges$$, - ARRAY[6, 3, 6], - true, true); -WARNING: pgr_trspViaVertices(text,anyarray,boolean,boolean,text) deprecated function on v3.4.0 - seq | id1 | id2 | id3 | cost ------+-----+-----+-----+------ - 1 | 1 | 6 | 4 | 1 - 2 | 1 | 7 | 7 | 1 - 3 | 2 | 3 | 7 | 1 - 4 | 2 | 7 | 4 | 1 - 5 | 2 | 6 | -1 | 0 -(5 rows) - /* --viav2 */ SELECT * FROM pgr_dijkstraVia( $$SELECT id, source, target, cost, reverse_cost FROM edges$$, @@ -327,27 +246,6 @@ WHERE edge != -1; (5 rows) /* --viav4*/ -SELECT * FROM pgr_trspViaVertices( - $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges$$, - ARRAY[6, 3, 6], - true, true, - $$SELECT to_cost, target_id::INTEGER, via_path FROM old_restrictions$$); -WARNING: pgr_trspViaVertices(text,anyarray,boolean,boolean,text) deprecated function on v3.4.0 - seq | id1 | id2 | id3 | cost ------+-----+-----+-----+------ - 1 | 1 | 6 | 4 | 1 - 2 | 1 | 7 | 8 | 1 - 3 | 1 | 11 | 9 | 1 - 4 | 1 | 16 | 16 | 1 - 5 | 1 | 15 | 3 | 1 - 6 | 1 | 10 | 5 | 1 - 7 | 1 | 11 | 8 | 1 - 8 | 1 | 7 | 7 | 1 - 9 | 2 | 3 | 7 | 1 - 10 | 2 | 7 | 4 | 1 - 11 | 2 | 6 | -1 | 0 -(11 rows) - /* --viav5 */ SELECT * FROM pgr_trspVia( $$SELECT id, source, target, cost, reverse_cost FROM edges$$, @@ -404,26 +302,13 @@ WHERE pid IN (3, 4, 6); (3 rows) /* --edgesvia1 */ -SELECT * FROM pgr_trspViaEdges( - $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges$$, - ARRAY[6, 12, 4], ARRAY[0.3, 0.6, 0.7], - true, true); -WARNING: pgr_trspViaEdges(text,integer[],float[],boolean,boolean,text) deprecated function on v3.4.0 - seq | id1 | id2 | id3 | cost ------+-----+-----+-----+------ - 1 | 1 | -1 | 6 | 0.7 - 2 | 1 | 3 | 7 | 1 - 3 | 1 | 7 | 10 | 1 - 4 | 1 | 8 | 12 | 0.6 - 5 | 1 | -2 | -1 | 0 - 6 | 2 | -2 | 12 | 0.4 - 7 | 2 | 12 | 13 | 1 - 8 | 2 | 17 | 15 | 1 - 9 | 2 | 16 | 9 | 1 - 10 | 2 | 11 | 8 | 1 - 11 | 2 | 7 | 4 | 0.7 - 12 | 2 | -3 | -2 | 0 -(12 rows) +SELECT pid, edge_id, fraction FROM pointsOfInterest WHERE pid IN (3, 4, 6); + pid | edge_id | fraction +-----+---------+---------- + 3 | 12 | 0.6 + 4 | 6 | 0.3 + 6 | 4 | 0.7 +(3 rows) /* --edgesvia2 */ SELECT * FROM pgr_withPointsVia( @@ -453,53 +338,26 @@ path_id::INTEGER AS id1, node::INTEGER AS id2, CASE WHEN edge >= 0 THEN edge::INTEGER ELSE -1 END AS id3, cost::FLOAT FROM pgr_withPointsVia( $$SELECT id, source, target, cost, reverse_cost FROM edges$$, - $$SELECT * FROM (VALUES (1, 6, 0.3),(2, 12, 0.6),(3, 4, 0.7)) AS t(pid, edge_id, fraction)$$, - ARRAY[-1, -2, -3], - details=> false); + $$SELECT pid, edge_id, fraction FROM pointsOfInterest WHERE pid IN (3, 4, 6)$$, + ARRAY[-4, -3, -6], + details => false); seq | id1 | id2 | id3 | cost -----+-----+-----+-----+------ - 1 | 1 | -1 | 6 | 0.7 + 1 | 1 | -4 | 6 | 0.7 2 | 1 | 3 | 7 | 1 3 | 1 | 7 | 10 | 1 4 | 1 | 8 | 12 | 0.6 - 5 | 1 | -2 | -1 | 0 - 6 | 2 | -2 | 12 | 0.4 + 5 | 1 | -3 | -1 | 0 + 6 | 2 | -3 | 12 | 0.4 7 | 2 | 12 | 13 | 1 8 | 2 | 17 | 15 | 1 9 | 2 | 16 | 9 | 1 10 | 2 | 11 | 8 | 1 11 | 2 | 7 | 4 | 0.3 - 12 | 2 | -3 | -1 | 0 + 12 | 2 | -6 | -1 | 0 (12 rows) /* --edgesvia4 */ -SELECT * FROM pgr_trspViaEdges( - $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges$$, - ARRAY[6, 12, 4], ARRAY[0.3, 0.6, 0.7], - true, true, - $$SELECT to_cost, target_id::INTEGER, via_path FROM old_restrictions$$); -WARNING: pgr_trspViaEdges(text,integer[],float[],boolean,boolean,text) deprecated function on v3.4.0 -WARNING: pgr_trsp(text,integer,float,integer,float,boolean,boolean) deprecated signature on v3.4.0 -WARNING: pgr_trsp(text,integer,float,integer,float,boolean,boolean) deprecated signature on v3.4.0 - seq | id1 | id2 | id3 | cost ------+-----+-----+-----+------ - 1 | 1 | -1 | 6 | 0.7 - 2 | 1 | 3 | 7 | 1 - 3 | 1 | 7 | 8 | 1 - 4 | 1 | 11 | 9 | 1 - 5 | 1 | 16 | 16 | 1 - 6 | 1 | 15 | 3 | 1 - 7 | 1 | 10 | 2 | 1 - 8 | 1 | 6 | 4 | 1 - 9 | 1 | 7 | 10 | 1 - 10 | 1 | 8 | 12 | 1 - 11 | 2 | 12 | 13 | 1 - 12 | 2 | 17 | 15 | 1 - 13 | 2 | 16 | 9 | 1 - 14 | 2 | 11 | 8 | 1 - 15 | 2 | 7 | 4 | 0.3 -(15 rows) - /* --edgesvia5 */ SELECT * FROM pgr_trspVia_withPoints( $$SELECT id, source, target, cost, reverse_cost FROM edges$$, diff --git a/docqueries/src/sampledata.result b/docqueries/src/sampledata.result index e2f362aa79..38b896538f 100644 --- a/docqueries/src/sampledata.result +++ b/docqueries/src/sampledata.result @@ -150,15 +150,46 @@ FROM edges ORDER BY id; /* -- q5 */ /* --POINTS CREATE start */ +DO LANGUAGE plpgsql $BODY$ +DECLARE v FLOAT; +BEGIN +SELECT (parts[1]||'.'||parts[2])::FLOAT FROM STRING_TO_ARRAY(pgr_version(), '.') AS parts INTO v; /* -- p1 */ CREATE TABLE pointsOfInterest( pid BIGSERIAL PRIMARY KEY, edge_id BIGINT, side CHAR, fraction FLOAT, + distance FLOAT, + edge geometry, + newPoint geometry, geom geometry); -CREATE TABLE +IF v > 3.4 THEN /* -- p2 */ +INSERT INTO pointsOfInterest (geom) VALUES +(ST_Point(1.8, 0.4)), +(ST_Point(4.2, 2.4)), +(ST_Point(2.6, 3.2)), +(ST_Point(0.3, 1.8)), +(ST_Point(2.9, 1.8)), +(ST_Point(2.2, 1.7)); +/* -- p3 */ +UPDATE pointsofinterest SET + edge_id = poi.edge_id, + side = poi.side, + fraction = round(poi.fraction::numeric, 2), + distance = round(poi.distance::numeric, 2), + edge = poi.edge, + newPoint = ST_EndPoint(poi.edge) +FROM ( + SELECT * + FROM pgr_findCloseEdges( + $$SELECT id, geom FROM edges$$,(SELECT array_agg(geom) FROM pointsOfInterest), 0.5) ) AS poi +WHERE pointsOfInterest.geom = poi.geom; +/* -- p4 */ +UPDATE pointsOfInterest SET side = 'b' WHERE pid = 6; +/* -- p5 */ +ELSE INSERT INTO pointsOfInterest (edge_id, side, fraction, geom) VALUES (1, 'l' , 0.4, ST_POINT(1.8, 0.4)), (15, 'r' , 0.4, ST_POINT(4.2, 2.4)), @@ -166,8 +197,27 @@ INSERT INTO pointsOfInterest (edge_id, side, fraction, geom) VALUES (6, 'r' , 0.3, ST_POINT(0.3, 1.8)), (5, 'l' , 0.8, ST_POINT(2.9, 1.8)), (4, 'b' , 0.7, ST_POINT(2.2, 1.7)); -INSERT 0 6 -/* -- p3 */ +END IF; +END; +$BODY$; +DO +/* -- p6 */ +SELECT + pid, ST_AsText(geom) geom, + edge_id, fraction AS frac, side, distance AS dist, + ST_AsText(edge) edge, ST_AsText(newPoint) newPoint +FROM pointsOfInterest; + pid | geom | edge_id | frac | side | dist | edge | newpoint +-----+----------------+---------+------+------+------+---------------------------+-------------- + 1 | POINT(1.8 0.4) | 1 | 0.4 | l | 0.2 | LINESTRING(1.8 0.4,2 0.4) | POINT(2 0.4) + 4 | POINT(0.3 1.8) | 6 | 0.3 | r | 0.2 | LINESTRING(0.3 1.8,0.3 2) | POINT(0.3 2) + 3 | POINT(2.6 3.2) | 12 | 0.6 | l | 0.2 | LINESTRING(2.6 3.2,2.6 3) | POINT(2.6 3) + 2 | POINT(4.2 2.4) | 15 | 0.4 | r | 0.2 | LINESTRING(4.2 2.4,4 2.4) | POINT(4 2.4) + 5 | POINT(2.9 1.8) | 5 | 0.8 | l | 0.1 | LINESTRING(2.9 1.8,3 1.8) | POINT(3 1.8) + 6 | POINT(2.2 1.7) | 4 | 0.7 | b | 0.2 | LINESTRING(2.2 1.7,2 1.7) | POINT(2 1.7) +(6 rows) + +/* -- p7 */ /* --POINTS CREATE end */ /* --COMBINATIONS CREATE start */ /* -- c1 */ diff --git a/docqueries/src/test.conf b/docqueries/src/test.conf index 2eb35118be..dc67159148 100644 --- a/docqueries/src/test.conf +++ b/docqueries/src/test.conf @@ -4,9 +4,6 @@ 'any' => { 'files' => [qw( sampledata.pg - withPoints-category.pg - migration.pg - concepts.pg )], }, ); diff --git a/docqueries/src/withPoints-category.result b/docqueries/src/withPoints-category.result index 20deee8b5b..44e1f236cf 100644 --- a/docqueries/src/withPoints-category.result +++ b/docqueries/src/withPoints-category.result @@ -7,9 +7,9 @@ SELECT pid, edge_id, fraction, side FROM pointsOfInterest; pid | edge_id | fraction | side -----+---------+----------+------ 1 | 1 | 0.4 | l - 2 | 15 | 0.4 | r - 3 | 12 | 0.6 | l 4 | 6 | 0.3 | r + 3 | 12 | 0.6 | l + 2 | 15 | 0.4 | r 5 | 5 | 0.8 | l 6 | 4 | 0.7 | b (6 rows) diff --git a/docqueries/topologicalSort/CMakeLists.txt b/docqueries/topologicalSort/CMakeLists.txt deleted file mode 100644 index f2f5aae793..0000000000 --- a/docqueries/topologicalSort/CMakeLists.txt +++ /dev/null @@ -1,11 +0,0 @@ -# Do not use extensions -SET(LOCAL_FILES - topologicalSort - ) - -foreach (f ${LOCAL_FILES}) - configure_file("${f}.result" "${PGR_DOCUMENTATION_SOURCE_DIR}/${f}.queries") - list(APPEND LOCAL_DOC_FILES "${PGR_DOCUMENTATION_SOURCE_DIR}/${f}.queries") -endforeach() - -set(PROJECT_DOC_FILES ${PROJECT_DOC_FILES} ${LOCAL_DOC_FILES} PARENT_SCOPE) diff --git a/docqueries/topologicalSort/test.conf b/docqueries/topologicalSort/test.conf deleted file mode 100644 index 4fb2719adf..0000000000 --- a/docqueries/topologicalSort/test.conf +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/perl -w - -%main::tests = ( - 'any' => { - 'files' => [qw( - topologicalSort.pg - )] - }, - -); - -1; diff --git a/docqueries/topology/CMakeLists.txt b/docqueries/topology/CMakeLists.txt index 0d78f52ed8..abf97a73c9 100644 --- a/docqueries/topology/CMakeLists.txt +++ b/docqueries/topology/CMakeLists.txt @@ -6,7 +6,6 @@ SET(LOCAL_FILES createVerticesTable extractVertices nodeNetwork - degree ) foreach (f ${LOCAL_FILES}) diff --git a/docqueries/topology/degree.pg b/docqueries/topology/degree.pg deleted file mode 100644 index 95b2e3ba05..0000000000 --- a/docqueries/topology/degree.pg +++ /dev/null @@ -1,23 +0,0 @@ --- CopyRight(c) pgRouting developers --- Creative Commons Attribution-Share Alike 3.0 License : https://creativecommons.org/licenses/by-sa/3.0/ -/* -- q1 */ -DROP TABLE IF EXISTS tmp_edges_vertices_pgr; -CREATE TEMP TABLE tmp_edges_vertices_pgr AS -SELECT id, in_edges, out_edges - FROM pgr_extractVertices('SELECT id, geom FROM edges'); -SELECT * FROM pgr_degree( - $$SELECT id FROM edges$$, - $$SELECT id, in_edges, out_edges - FROM tmp_edges_vertices_pgr$$); -/* -- q2 */ -SELECT * FROM pgr_degree( - $$SELECT id FROM edges WHERE id < 17$$, - $$SELECT id, in_edges, out_edges - FROM pgr_extractVertices('SELECT id, geom FROM edges')$$); -/* -- q3 */ -SELECT * FROM pgr_degree( - $$SELECT id FROM edges WHERE id < 17$$, - $$SELECT id, in_edges, out_edges - FROM pgr_extractVertices('SELECT id, geom FROM edges')$$, - dryrun => true); -/* -- q4 */ diff --git a/docqueries/topology/degree.result b/docqueries/topology/degree.result deleted file mode 100644 index 340dbf4464..0000000000 --- a/docqueries/topology/degree.result +++ /dev/null @@ -1,107 +0,0 @@ -BEGIN; -BEGIN -SET client_min_messages TO NOTICE; -SET -/* -- q1 */ -DROP TABLE IF EXISTS tmp_edges_vertices_pgr; -NOTICE: table "tmp_edges_vertices_pgr" does not exist, skipping -DROP TABLE -CREATE TEMP TABLE tmp_edges_vertices_pgr AS -SELECT id, in_edges, out_edges - FROM pgr_extractVertices('SELECT id, geom FROM edges'); -SELECT 17 -SELECT * FROM pgr_degree( - $$SELECT id FROM edges$$, - $$SELECT id, in_edges, out_edges - FROM tmp_edges_vertices_pgr$$); - node | degree -------+-------- - 1 | 1 - 2 | 1 - 3 | 2 - 4 | 1 - 5 | 1 - 6 | 3 - 7 | 4 - 8 | 3 - 9 | 1 - 10 | 3 - 11 | 4 - 12 | 3 - 13 | 1 - 14 | 1 - 15 | 2 - 16 | 3 - 17 | 2 -(17 rows) - -/* -- q2 */ -SELECT * FROM pgr_degree( - $$SELECT id FROM edges WHERE id < 17$$, - $$SELECT id, in_edges, out_edges - FROM pgr_extractVertices('SELECT id, geom FROM edges')$$); - node | degree -------+-------- - 1 | 1 - 2 | 0 - 3 | 2 - 4 | 0 - 5 | 1 - 6 | 3 - 7 | 4 - 8 | 3 - 9 | 1 - 10 | 3 - 11 | 4 - 12 | 3 - 13 | 0 - 14 | 0 - 15 | 2 - 16 | 3 - 17 | 2 -(17 rows) - -/* -- q3 */ -SELECT * FROM pgr_degree( - $$SELECT id FROM edges WHERE id < 17$$, - $$SELECT id, in_edges, out_edges - FROM pgr_extractVertices('SELECT id, geom FROM edges')$$, - dryrun => true); -NOTICE: - WITH - - -- a sub set of edges of the graph goes here - g_edges AS ( - SELECT id FROM edges WHERE id < 17 - ), - - -- sub set of vertices of the graph goes here - all_vertices AS ( - SELECT id, in_edges, out_edges - FROM pgr_extractVertices('SELECT id, geom FROM edges') - ), - - g_vertices AS ( - SELECT id, - unnest( - coalesce(in_edges::BIGINT[], '{}'::BIGINT[]) - || - coalesce(out_edges::BIGINT[], '{}'::BIGINT[])) AS eid - FROM all_vertices - ), - - totals AS ( - SELECT v.id, count(*) - FROM g_vertices AS v - JOIN g_edges AS e ON (e.id = eid) GROUP BY v.id - ) - - SELECT id::BIGINT, coalesce(count, 0)::BIGINT FROM all_vertices LEFT JOIN totals USING (id) - ; - node | degree -------+-------- -(0 rows) - -/* -- q4 */ -ROLLBACK; -ROLLBACK diff --git a/docqueries/topology/test.conf b/docqueries/topology/test.conf index de6a9bfd29..f40233fbec 100644 --- a/docqueries/topology/test.conf +++ b/docqueries/topology/test.conf @@ -11,7 +11,6 @@ analyzeOneWay.pg nodeNetwork.pg extractVertices.pg - degree.pg )], }, ); diff --git a/docqueries/traversal/CMakeLists.txt b/docqueries/traversal/CMakeLists.txt index 6bc7709c8f..ade2fd2968 100644 --- a/docqueries/traversal/CMakeLists.txt +++ b/docqueries/traversal/CMakeLists.txt @@ -1,5 +1,7 @@ # Do not use extensions SET(LOCAL_FILES + binaryBreadthFirstSearch + breadthFirstSearch depthFirstSearch ) diff --git a/docqueries/breadthFirstSearch/binaryBreadthFirstSearch.pg b/docqueries/traversal/binaryBreadthFirstSearch.pg similarity index 100% rename from docqueries/breadthFirstSearch/binaryBreadthFirstSearch.pg rename to docqueries/traversal/binaryBreadthFirstSearch.pg diff --git a/docqueries/breadthFirstSearch/binaryBreadthFirstSearch.result b/docqueries/traversal/binaryBreadthFirstSearch.result similarity index 100% rename from docqueries/breadthFirstSearch/binaryBreadthFirstSearch.result rename to docqueries/traversal/binaryBreadthFirstSearch.result diff --git a/docqueries/breadthFirstSearch/breadthFirstSearch.pg b/docqueries/traversal/breadthFirstSearch.pg similarity index 100% rename from docqueries/breadthFirstSearch/breadthFirstSearch.pg rename to docqueries/traversal/breadthFirstSearch.pg diff --git a/docqueries/breadthFirstSearch/breadthFirstSearch.result b/docqueries/traversal/breadthFirstSearch.result similarity index 100% rename from docqueries/breadthFirstSearch/breadthFirstSearch.result rename to docqueries/traversal/breadthFirstSearch.result diff --git a/docqueries/traversal/test.conf b/docqueries/traversal/test.conf index 816840fe48..2ab2bd25b6 100644 --- a/docqueries/traversal/test.conf +++ b/docqueries/traversal/test.conf @@ -3,6 +3,8 @@ %main::tests = ( 'any' => { 'files' => [qw( + binaryBreadthFirstSearch.pg + breadthFirstSearch.pg depthFirstSearch.pg )] }, diff --git a/docqueries/trsp/four_edges.pg b/docqueries/trsp/four_edges.pg deleted file mode 100644 index 34f647337e..0000000000 --- a/docqueries/trsp/four_edges.pg +++ /dev/null @@ -1,148 +0,0 @@ --- CopyRight(c) pgRouting developers --- Creative Commons Attribution-Share Alike 3.0 License : https://creativecommons.org/licenses/by-sa/3.0/ -SET extra_float_digits=-3; -CREATE TABLE four_edges ( - id BIGINT, - source BIGINT, - target BIGINT, - cost FLOAT, - reverse_cost FLOAT); - -INSERT INTO four_edges (id, source, target, cost, reverse_cost) VALUES -( 719 , 52163 , -56570 , 179.400001 , 179.400001), -( 717 , 52222 , 52163 , 977.000001 , 977.000001), -( 718 , 52220 , 52222 , 961.000001 , 961.000001), -( 716 , -21019 , 52220 , 992.000001 , 992.000001); - -SELECT * FROM pgr_trsp( - $$SELECT - id::int, source::int, target::int, cost::float, reverse_cost::float - FROM - (VALUES - (719, 52163, -56570, 179.400001, 179.400001), - (717, 52222, 52163, 977.000001, 977.000001), - (718, 52220, 52222, 961.000001, 961.000001), - (716, -21019, 52220, 992.000001, 992.000001) - ) AS t (id, source, target, cost, reverse_cost)$$, - 719, 0, - 718, 0, - true, true, NULL); - - -SELECT * FROM pgr_trsp( - $$SELECT - id::int, source::int, target::int, cost::float, reverse_cost::float - FROM - (VALUES - (719, 52163, -56570, 179.40000, 179.40000), - (717, 52222, 52163, 977.00000, 977.00000), - (718, 52220, 52222, 961.00000, 961.00000), - (716, -21019, 52220, 992.00000, 992.00000) - ) AS t (id, source, target, cost, reverse_cost)$$, - (SELECT source::int FROM four_edges WHERE id = 719), - (SELECT source::int FROM four_edges WHERE id = 718), - true, true, NULL); - - -SELECT * FROM pgr_trsp( - $$SELECT - id::int, source::int, target::int, cost::float, reverse_cost::float - FROM four_edges$$, - 719, 0, - 718, 0, - true, true, NULL); - -SELECT * FROM pgr_dijkstra( - $$SELECT - id::int, source::int, target::int, cost::float, reverse_cost::float - FROM four_edges$$, - 52163, - 52220, - false); - -SELECT * FROM pgr_dijkstra( - $$SELECT - id, source, target, cost, reverse_cost - FROM four_edges$$, - (SELECT source FROM four_edges WHERE id = 719), - (SELECT source FROM four_edges WHERE id = 718), - true); - -/* Comparing withPoints and trsp*/ - -SELECT * FROM pgr_trsp( - $$SELECT - id::int, source::int, target::int, cost::float, reverse_cost::float - FROM four_edges$$, - 719, 0.5, - 718, 0, - true, true, NULL); - -SELECT * FROM pgr_withPoints( - $$SELECT - id, source, target, cost, reverse_cost - FROM four_edges$$, - $$SELECT 719 AS edge_id, 0.5::float AS fraction$$, - -1, - /* selecting source because we have 0 */ - (SELECT source FROM four_edges WHERE id = 718), - true); - -/* TODO should give result more or less the same as above*/ -SELECT * FROM pgr_withPoints( - $$SELECT - id, source, target, cost, reverse_cost - FROM four_edges$$, - $$(SELECT 719 AS edge_id, 0.5::float AS fraction) - UNION - (SELECT 718, 0)$$, - -1, -2, - true); - -SELECT * FROM pgr_trsp( - $$SELECT - id::int, source::int, target::int, cost::float, reverse_cost::float - FROM four_edges$$, - 719, 0, - 718, 0.5, - true, true, NULL); - -SELECT * FROM pgr_withPoints( - $$SELECT - id, source, target, cost, reverse_cost - FROM four_edges$$, - $$SELECT 718 AS edge_id, 0.5::float AS fraction$$, - /* selecting source because we have 0 */ - (SELECT source FROM four_edges WHERE id = 719), - -1, - true); - -/* TODO should give result more or less the same as above*/ -SELECT * FROM pgr_withPoints( - $$SELECT - id, source, target, cost, reverse_cost - FROM four_edges$$, - $$(SELECT 719 AS edge_id, 0::float AS fraction) - UNION - (SELECT 718, 0.5)$$, - -1, -2, - true); - -SELECT * FROM pgr_trsp( - $$SELECT - id::int, source::int, target::int, cost::float, reverse_cost::float - FROM four_edges$$, - 719, 0.5, - 718, 0.5, - true, true, NULL); - -SELECT * FROM pgr_withPoints( - $$SELECT - id, source, target, cost, reverse_cost - FROM four_edges$$, - $$(SELECT 719 AS edge_id, 0.5::float AS fraction) - UNION - (SELECT 718, 0.5)$$, - -1, -2, - true); - diff --git a/docqueries/trsp/four_edges.result b/docqueries/trsp/four_edges.result deleted file mode 100644 index c1404ab2db..0000000000 --- a/docqueries/trsp/four_edges.result +++ /dev/null @@ -1,232 +0,0 @@ -BEGIN; -BEGIN -SET client_min_messages TO NOTICE; -SET -SET extra_float_digits=-3; -SET -CREATE TABLE four_edges ( - id BIGINT, - source BIGINT, - target BIGINT, - cost FLOAT, - reverse_cost FLOAT); -CREATE TABLE -INSERT INTO four_edges (id, source, target, cost, reverse_cost) VALUES -( 719 , 52163 , -56570 , 179.400001 , 179.400001), -( 717 , 52222 , 52163 , 977.000001 , 977.000001), -( 718 , 52220 , 52222 , 961.000001 , 961.000001), -( 716 , -21019 , 52220 , 992.000001 , 992.000001); -INSERT 0 4 -SELECT * FROM pgr_trsp( - $$SELECT - id::int, source::int, target::int, cost::float, reverse_cost::float - FROM - (VALUES - (719, 52163, -56570, 179.400001, 179.400001), - (717, 52222, 52163, 977.000001, 977.000001), - (718, 52220, 52222, 961.000001, 961.000001), - (716, -21019, 52220, 992.000001, 992.000001) - ) AS t (id, source, target, cost, reverse_cost)$$, - 719, 0, - 718, 0, - true, true, NULL); -WARNING: pgr_trsp(text,integer,float,integer,float,boolean,boolean) deprecated signature on v3.4.0 - seq | id1 | id2 | cost ------+-------+-----+------------ - 0 | 52163 | 717 | 977.000001 - 1 | 52222 | 718 | 961.000001 - 2 | 52220 | -1 | 0 -(3 rows) - -SELECT * FROM pgr_trsp( - $$SELECT - id::int, source::int, target::int, cost::float, reverse_cost::float - FROM - (VALUES - (719, 52163, -56570, 179.40000, 179.40000), - (717, 52222, 52163, 977.00000, 977.00000), - (718, 52220, 52222, 961.00000, 961.00000), - (716, -21019, 52220, 992.00000, 992.00000) - ) AS t (id, source, target, cost, reverse_cost)$$, - (SELECT source::int FROM four_edges WHERE id = 719), - (SELECT source::int FROM four_edges WHERE id = 718), - true, true, NULL); -WARNING: pgr_trsp(text,integer,integer,boolean,boolean) deprecated signature on v3.4.0 - seq | id1 | id2 | cost ------+-------+-----+------ - 0 | 52163 | 717 | 977 - 1 | 52222 | 718 | 961 - 2 | 52220 | -1 | 0 -(3 rows) - -SELECT * FROM pgr_trsp( - $$SELECT - id::int, source::int, target::int, cost::float, reverse_cost::float - FROM four_edges$$, - 719, 0, - 718, 0, - true, true, NULL); -WARNING: pgr_trsp(text,integer,float,integer,float,boolean,boolean) deprecated signature on v3.4.0 - seq | id1 | id2 | cost ------+-------+-----+------------ - 0 | 52163 | 717 | 977.000001 - 1 | 52222 | 718 | 961.000001 - 2 | 52220 | -1 | 0 -(3 rows) - -SELECT * FROM pgr_dijkstra( - $$SELECT - id::int, source::int, target::int, cost::float, reverse_cost::float - FROM four_edges$$, - 52163, - 52220, - false); - seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost ------+----------+-----------+---------+-------+------+------------+------------- - 1 | 1 | 52163 | 52220 | 52163 | 717 | 977.000001 | 0 - 2 | 2 | 52163 | 52220 | 52222 | 718 | 961.000001 | 977.000001 - 3 | 3 | 52163 | 52220 | 52220 | -1 | 0 | 1938.000002 -(3 rows) - -SELECT * FROM pgr_dijkstra( - $$SELECT - id, source, target, cost, reverse_cost - FROM four_edges$$, - (SELECT source FROM four_edges WHERE id = 719), - (SELECT source FROM four_edges WHERE id = 718), - true); - seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost ------+----------+-----------+---------+-------+------+------------+------------- - 1 | 1 | 52163 | 52220 | 52163 | 717 | 977.000001 | 0 - 2 | 2 | 52163 | 52220 | 52222 | 718 | 961.000001 | 977.000001 - 3 | 3 | 52163 | 52220 | 52220 | -1 | 0 | 1938.000002 -(3 rows) - -/* Comparing withPoints and trsp*/ -SELECT * FROM pgr_trsp( - $$SELECT - id::int, source::int, target::int, cost::float, reverse_cost::float - FROM four_edges$$, - 719, 0.5, - 718, 0, - true, true, NULL); -WARNING: pgr_trsp(text,integer,float,integer,float,boolean,boolean) deprecated signature on v3.4.0 - seq | id1 | id2 | cost ------+-------+-----+------------ - 0 | -1 | 719 | 89.7000005 - 1 | 52163 | 717 | 977.000001 - 2 | 52222 | 718 | 961.000001 - 3 | 52220 | -1 | 0 -(4 rows) - -SELECT * FROM pgr_withPoints( - $$SELECT - id, source, target, cost, reverse_cost - FROM four_edges$$, - $$SELECT 719 AS edge_id, 0.5::float AS fraction$$, - -1, - /* selecting source because we have 0 */ - (SELECT source FROM four_edges WHERE id = 718), - true); - seq | path_seq | node | edge | cost | agg_cost ------+----------+-------+------+------------+-------------- - 1 | 1 | -1 | 719 | 89.7000005 | 0 - 2 | 2 | 52163 | 717 | 977.000001 | 89.7000005 - 3 | 3 | 52222 | 718 | 961.000001 | 1066.7000015 - 4 | 4 | 52220 | -1 | 0 | 2027.7000025 -(4 rows) - -/* TODO should give result more or less the same as above*/ -SELECT * FROM pgr_withPoints( - $$SELECT - id, source, target, cost, reverse_cost - FROM four_edges$$, - $$(SELECT 719 AS edge_id, 0.5::float AS fraction) - UNION - (SELECT 718, 0)$$, - -1, -2, - true); - seq | path_seq | node | edge | cost | agg_cost ------+----------+------+------+------+---------- -(0 rows) - -SELECT * FROM pgr_trsp( - $$SELECT - id::int, source::int, target::int, cost::float, reverse_cost::float - FROM four_edges$$, - 719, 0, - 718, 0.5, - true, true, NULL); -WARNING: pgr_trsp(text,integer,float,integer,float,boolean,boolean) deprecated signature on v3.4.0 - seq | id1 | id2 | cost ------+-------+-----+------------- - 0 | 52163 | 717 | 977.000001 - 1 | 52222 | 718 | 480.5000005 - 2 | -2 | -1 | 0 -(3 rows) - -SELECT * FROM pgr_withPoints( - $$SELECT - id, source, target, cost, reverse_cost - FROM four_edges$$, - $$SELECT 718 AS edge_id, 0.5::float AS fraction$$, - /* selecting source because we have 0 */ - (SELECT source FROM four_edges WHERE id = 719), - -1, - true); - seq | path_seq | node | edge | cost | agg_cost ------+----------+-------+------+-------------+-------------- - 1 | 1 | 52163 | 717 | 977.000001 | 0 - 2 | 2 | 52222 | 718 | 480.5000005 | 977.000001 - 3 | 3 | -1 | -1 | 0 | 1457.5000015 -(3 rows) - -/* TODO should give result more or less the same as above*/ -SELECT * FROM pgr_withPoints( - $$SELECT - id, source, target, cost, reverse_cost - FROM four_edges$$, - $$(SELECT 719 AS edge_id, 0::float AS fraction) - UNION - (SELECT 718, 0.5)$$, - -1, -2, - true); - seq | path_seq | node | edge | cost | agg_cost ------+----------+------+------+------+---------- -(0 rows) - -SELECT * FROM pgr_trsp( - $$SELECT - id::int, source::int, target::int, cost::float, reverse_cost::float - FROM four_edges$$, - 719, 0.5, - 718, 0.5, - true, true, NULL); -WARNING: pgr_trsp(text,integer,float,integer,float,boolean,boolean) deprecated signature on v3.4.0 - seq | id1 | id2 | cost ------+-------+-----+------------- - 0 | -1 | 719 | 89.7000005 - 1 | 52163 | 717 | 977.000001 - 2 | 52222 | 718 | 480.5000005 - 3 | -2 | -1 | 0 -(4 rows) - -SELECT * FROM pgr_withPoints( - $$SELECT - id, source, target, cost, reverse_cost - FROM four_edges$$, - $$(SELECT 719 AS edge_id, 0.5::float AS fraction) - UNION - (SELECT 718, 0.5)$$, - -1, -2, - true); - seq | path_seq | node | edge | cost | agg_cost ------+----------+-------+------+-------------+-------------- - 1 | 1 | -1 | 718 | 480.5000005 | 0 - 2 | 2 | 52222 | 717 | 977.000001 | 480.5000005 - 3 | 3 | 52163 | 719 | 89.7000005 | 1457.5000015 - 4 | 4 | -2 | -1 | 0 | 1547.200002 -(4 rows) - -ROLLBACK; -ROLLBACK diff --git a/docqueries/trsp/issue693.pg b/docqueries/trsp/issue693.pg deleted file mode 100644 index 0a5521a19e..0000000000 --- a/docqueries/trsp/issue693.pg +++ /dev/null @@ -1,16 +0,0 @@ --- CopyRight(c) pgRouting developers --- Creative Commons Attribution-Share Alike 3.0 License : https://creativecommons.org/licenses/by-sa/3.0/ - - - CREATE TABLE routing (gid serial, length integer, source integer, target integer, reverse_cost integer); - INSERT INTO routing (length, source, target, reverse_cost) VALUES - (10000, 1, 2, 10000), - (5, 3, 1, 5), - (10, 4, 3, 10), - (10, 2, 4, 10); - - SELECT pgr_trsp( - 'SELECT gid as id, source::int4, target::int4, length::float8 as cost, length::float8 as reverse_cost FROM routing', - 1, 0.1, 1, 0.9, false, true - ); - diff --git a/docqueries/trsp/issue693.result b/docqueries/trsp/issue693.result deleted file mode 100644 index d572a6620f..0000000000 --- a/docqueries/trsp/issue693.result +++ /dev/null @@ -1,29 +0,0 @@ -BEGIN; -BEGIN -SET client_min_messages TO NOTICE; -SET -CREATE TABLE routing (gid serial, length integer, source integer, target integer, reverse_cost integer); -CREATE TABLE -INSERT INTO routing (length, source, target, reverse_cost) VALUES - (10000, 1, 2, 10000), - (5, 3, 1, 5), - (10, 4, 3, 10), - (10, 2, 4, 10); -INSERT 0 4 -SELECT pgr_trsp( - 'SELECT gid as id, source::int4, target::int4, length::float8 as cost, length::float8 as reverse_cost FROM routing', - 1, 0.1, 1, 0.9, false, true - ); -WARNING: pgr_trsp(text,integer,float,integer,float,boolean,boolean) deprecated signature on v3.4.0 - pgr_trsp ---------------- - (0,-1,1,1000) - (1,1,2,5) - (2,3,3,10) - (3,4,4,10) - (4,2,1,1000) - (5,-2,-1,0) -(6 rows) - -ROLLBACK; -ROLLBACK diff --git a/docqueries/trsp/issue704.pg b/docqueries/trsp/issue704.pg deleted file mode 100644 index 833819fcea..0000000000 --- a/docqueries/trsp/issue704.pg +++ /dev/null @@ -1,69 +0,0 @@ --- CopyRight(c) pgRouting developers --- Creative Commons Attribution-Share Alike 3.0 License : https://creativecommons.org/licenses/by-sa/3.0/ - - -CREATE TABLE maptest as -SELECT 671222::integer as id, 318255::integer as source, 222698::integer as target, 14.02::float8 as cost, 14.02::float8 as reverse_cost UNION ALL -SELECT 671223, 222698, 36655, 197.16, 197.16 UNION ALL -SELECT 582877, 408918, 5556, 458.09, 458.09 UNION ALL -SELECT 582876, 318255, 408918, 3.89, 3.89 UNION ALL -SELECT 585280, 5556, 454424, 54.84, 54.84; -SELECT seq, id1 AS node, id2 AS edge, cost::numeric(11,4) -FROM pgr_trsp( - 'select * from maptest', - 582877, /* edge_id for start */ - 0, /* ini_offset */ - 582877, /* edge_id of route end */ - 0.5, /* end_offset */ - true, /* directed graph? */ - true, /* has_reverse_cost? */ - null /* include the turn restrictions */ -) PG ; - -SELECT seq, id1 AS node, id2 AS edge, cost::numeric(11,4) -FROM pgr_trsp( - 'select * from maptest', - 582877, /* edge_id for start */ - 0.0000000001, /* ini_offset */ - 582877, /* edge_id of route end */ - 0.5, /* end_offset */ - true, /* directed graph? */ - true, /* has_reverse_cost? */ - null /* include the turn restrictions */ -) PG ; - -SELECT seq, id1 AS node, id2 AS edge, cost::numeric(11,4) -FROM pgr_trsp( - 'select * from maptest', - 582877, /* edge_id for start */ - 0, /* ini_offset */ - 582877, /* edge_id of route end */ - 0.5, /* end_offset */ - true, /* directed graph? */ - true, /* has_reverse_cost? */ - $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$ -) PG ; - -SELECT seq, id1 AS node, id2 AS edge, cost::numeric(11,4) -FROM pgr_trsp( - 'select * from maptest', - 582877, /* edge_id for start */ - 0.0000000001, /* ini_offset */ - 582877, /* edge_id of route end */ - 0.5, /* end_offset */ - true, /* directed graph? */ - true, /* has_reverse_cost? */ - $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$ -) PG ; - -SELECT seq, id1 AS node, id2 AS edge, cost::numeric(11,4) -FROM pgr_trsp( - 'select * from maptest', - 582877, /* edge_id for start */ - 0, /* ini_offset */ - 582877, /* edge_id of route end */ - 1, /* end_offset */ - true, /* directed graph? */ - true /* has_reverse_cost? */ -); - diff --git a/docqueries/trsp/issue704.result b/docqueries/trsp/issue704.result deleted file mode 100644 index 09504e35a3..0000000000 --- a/docqueries/trsp/issue704.result +++ /dev/null @@ -1,100 +0,0 @@ -BEGIN; -BEGIN -SET client_min_messages TO NOTICE; -SET -CREATE TABLE maptest as -SELECT 671222::integer as id, 318255::integer as source, 222698::integer as target, 14.02::float8 as cost, 14.02::float8 as reverse_cost UNION ALL -SELECT 671223, 222698, 36655, 197.16, 197.16 UNION ALL -SELECT 582877, 408918, 5556, 458.09, 458.09 UNION ALL -SELECT 582876, 318255, 408918, 3.89, 3.89 UNION ALL -SELECT 585280, 5556, 454424, 54.84, 54.84; -SELECT 5 -SELECT seq, id1 AS node, id2 AS edge, cost::numeric(11,4) -FROM pgr_trsp( - 'select * from maptest', - 582877, /* edge_id for start */ - 0, /* ini_offset */ - 582877, /* edge_id of route end */ - 0.5, /* end_offset */ - true, /* directed graph? */ - true, /* has_reverse_cost? */ - null /* include the turn restrictions */ -) PG ; -WARNING: pgr_trsp(text,integer,float,integer,float,boolean,boolean) deprecated signature on v3.4.0 - seq | node | edge | cost ------+--------+--------+---------- - 0 | 408918 | 582877 | 229.0450 - 1 | -2 | -1 | 0.0000 -(2 rows) - -SELECT seq, id1 AS node, id2 AS edge, cost::numeric(11,4) -FROM pgr_trsp( - 'select * from maptest', - 582877, /* edge_id for start */ - 0.0000000001, /* ini_offset */ - 582877, /* edge_id of route end */ - 0.5, /* end_offset */ - true, /* directed graph? */ - true, /* has_reverse_cost? */ - null /* include the turn restrictions */ -) PG ; -WARNING: pgr_trsp(text,integer,float,integer,float,boolean,boolean) deprecated signature on v3.4.0 - seq | node | edge | cost ------+------+--------+---------- - 0 | -1 | 582877 | 229.0450 - 1 | -2 | -1 | 0.0000 -(2 rows) - -SELECT seq, id1 AS node, id2 AS edge, cost::numeric(11,4) -FROM pgr_trsp( - 'select * from maptest', - 582877, /* edge_id for start */ - 0, /* ini_offset */ - 582877, /* edge_id of route end */ - 0.5, /* end_offset */ - true, /* directed graph? */ - true, /* has_reverse_cost? */ - $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$ -) PG ; -WARNING: pgr_trsp(text,integer,float,integer,float,boolean,boolean) deprecated signature on v3.4.0 - seq | node | edge | cost ------+------+--------+---------- - 0 | -1 | 582877 | 229.0450 -(1 row) - -SELECT seq, id1 AS node, id2 AS edge, cost::numeric(11,4) -FROM pgr_trsp( - 'select * from maptest', - 582877, /* edge_id for start */ - 0.0000000001, /* ini_offset */ - 582877, /* edge_id of route end */ - 0.5, /* end_offset */ - true, /* directed graph? */ - true, /* has_reverse_cost? */ - $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$ -) PG ; -WARNING: pgr_trsp(text,integer,float,integer,float,boolean,boolean) deprecated signature on v3.4.0 - seq | node | edge | cost ------+------+--------+---------- - 0 | -1 | 582877 | 229.0450 -(1 row) - -SELECT seq, id1 AS node, id2 AS edge, cost::numeric(11,4) -FROM pgr_trsp( - 'select * from maptest', - 582877, /* edge_id for start */ - 0, /* ini_offset */ - 582877, /* edge_id of route end */ - 1, /* end_offset */ - true, /* directed graph? */ - true /* has_reverse_cost? */ -); -WARNING: pgr_trsp(text,integer,float,integer,float,boolean,boolean) deprecated signature on v3.4.0 - seq | node | edge | cost ------+--------+--------+---------- - 0 | 408918 | 582877 | 458.0900 - 1 | 5556 | -1 | 0.0000 -(2 rows) - -ROLLBACK; -ROLLBACK diff --git a/docqueries/trsp/issue717.pg b/docqueries/trsp/issue717.pg deleted file mode 100644 index a4a3628292..0000000000 --- a/docqueries/trsp/issue717.pg +++ /dev/null @@ -1,169 +0,0 @@ --- CopyRight(c) pgRouting developers --- Creative Commons Attribution-Share Alike 3.0 License : https://creativecommons.org/licenses/by-sa/3.0/ -/*PGR-GNU***************************************************************** - -Copyright (c) 2015 pgRouting developers -Mail: project@pgrouting.org - ------- - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License AS published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -********************************************************************PGR-GNU*/ - -SELECT * FROM pgr_trspViaVertices( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges', - ARRAY[6, 1, 12]::INTEGER[], /* array of vids */ - true, /* directed graph? */ - true /* has_reverse_cost? */ -); - -SELECT * FROM pgr_trspViaEdges( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges', - ARRAY[4,6,11]::INTEGER[], /* array of eids */ - ARRAY[0.5, 0.5, 0.5]::float8[], /* array of vids */ - true, /* directed graph? */ - true /* has_reverse_cost? */ -); - - -SELECT * FROM pgr_trspViaEdges( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges', - ARRAY[1,11,6]::INTEGER[], /* array of eids */ - ARRAY[0.5, 0.5, 0.5]::float8[], /* array of vids */ - true, /* directed graph? */ - true /* has_reverse_cost? */ -); - - -SELECT * FROM pgr_trspViaEdges( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges', - ARRAY[1,11,6]::INTEGER[], /* array of eids */ - ARRAY[0.5, 0.5, 0.5]::float8[], /* array of vids */ - true, /* directed graph? */ - true /* has_reverse_cost? */ -); - - -------------------------------------- --- directed without reverse_cost -------------------------------------- -SELECT * FROM pgr_trspViaVertices( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges', - ARRAY[6, 1, 12]::INTEGER[], /* array of vids */ - true, /* directed graph? */ - false /* has_reverse_cost? */ -); - -SELECT * FROM pgr_trspViaEdges( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges', - ARRAY[4,6,11]::INTEGER[], /* array of eids */ - ARRAY[0.5, 0.5, 0.5]::float8[], /* array of vids */ - true, /* directed graph? */ - false /* has_reverse_cost? */ -); - - -SELECT * FROM pgr_trspViaEdges( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges', - ARRAY[1,11,6]::INTEGER[], /* array of eids */ - ARRAY[0.5, 0.5, 0.5]::float8[], /* array of vids */ - true, /* directed graph? */ - false /* has_reverse_cost? */ -); - - -SELECT * FROM pgr_trspViaEdges( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges', - ARRAY[1,11,6]::INTEGER[], /* array of eids */ - ARRAY[0.5, 0.5, 0.5]::float8[], /* array of vids */ - true, /* directed graph? */ - false /* has_reverse_cost? */ -); - - - -------------------------------------- --- undirected with reverse_cost -------------------------------------- -SELECT * FROM pgr_trspViaVertices( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges', - ARRAY[6, 1, 12]::INTEGER[], /* array of vids */ - false, /* directed graph? */ - true /* has_reverse_cost? */ -); - -SELECT * FROM pgr_trspViaEdges( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges', - ARRAY[4,6,11]::INTEGER[], /* array of eids */ - ARRAY[0.5, 0.5, 0.5]::float8[], /* array of vids */ - false, /* directed graph? */ - true /* has_reverse_cost? */ -); - - -SELECT * FROM pgr_trspViaEdges( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges', - ARRAY[1,11,6]::INTEGER[], /* array of eids */ - ARRAY[0.5, 0.5, 0.5]::float8[], /* array of vids */ - false, /* directed graph? */ - true /* has_reverse_cost? */ -); - - -SELECT * FROM pgr_trspViaEdges( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges', - ARRAY[1,11,6]::INTEGER[], /* array of eids */ - ARRAY[0.5, 0.5, 0.5]::float8[], /* array of vids */ - false, /* directed graph? */ - true /* has_reverse_cost? */ -); - - -------------------------------------- --- undirected without reverse_cost -------------------------------------- -SELECT * FROM pgr_trspViaVertices( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges', - ARRAY[6, 1, 12]::INTEGER[], /* array of vids */ - false, /* directed graph? */ - false /* has_reverse_cost? */ -); - -SELECT * FROM pgr_trspViaEdges( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges', - ARRAY[4,6,11]::INTEGER[], /* array of eids */ - ARRAY[0.5, 0.5, 0.5]::float8[], /* array of vids */ - false, /* directed graph? */ - false /* has_reverse_cost? */ -); - - -SELECT * FROM pgr_trspViaEdges( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges', - ARRAY[1,11,6]::INTEGER[], /* array of eids */ - ARRAY[0.5, 0.5, 0.5]::float8[], /* array of vids */ - false, /* directed graph? */ - false /* has_reverse_cost? */ -); - - -SELECT * FROM pgr_trspViaEdges( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges', - ARRAY[1,11,6]::INTEGER[], /* array of eids */ - ARRAY[0.5, 0.5, 0.5]::float8[], /* array of vids */ - false, /* directed graph? */ - false /* has_reverse_cost? */ -); diff --git a/docqueries/trsp/issue717.result b/docqueries/trsp/issue717.result deleted file mode 100644 index c915a01ad3..0000000000 --- a/docqueries/trsp/issue717.result +++ /dev/null @@ -1,348 +0,0 @@ -BEGIN; -BEGIN -SET client_min_messages TO NOTICE; -SET -/*PGR-GNU***************************************************************** - -Copyright (c) 2015 pgRouting developers -Mail: project@pgrouting.org - ------- - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License AS published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -********************************************************************PGR-GNU*/ -SELECT * FROM pgr_trspViaVertices( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges', - ARRAY[6, 1, 12]::INTEGER[], /* array of vids */ - true, /* directed graph? */ - true /* has_reverse_cost? */ -); -WARNING: pgr_trspViaVertices(text,anyarray,boolean,boolean,text) deprecated function on v3.4.0 - seq | id1 | id2 | id3 | cost ------+-----+-----+-----+------ - 1 | 1 | 6 | 4 | 1 - 2 | 1 | 7 | 7 | 1 - 3 | 1 | 3 | 6 | 1 - 4 | 2 | 1 | 6 | 1 - 5 | 2 | 3 | 7 | 1 - 6 | 2 | 7 | 10 | 1 - 7 | 2 | 8 | 12 | 1 - 8 | 2 | 12 | -1 | 0 -(8 rows) - -SELECT * FROM pgr_trspViaEdges( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges', - ARRAY[4,6,11]::INTEGER[], /* array of eids */ - ARRAY[0.5, 0.5, 0.5]::float8[], /* array of vids */ - true, /* directed graph? */ - true /* has_reverse_cost? */ -); -WARNING: pgr_trspViaEdges(text,integer[],float[],boolean,boolean,text) deprecated function on v3.4.0 - seq | id1 | id2 | id3 | cost ------+-----+-----+-----+------ - 1 | 1 | -1 | 4 | 0.5 - 2 | 1 | 7 | 7 | 1 - 3 | 1 | 3 | 6 | 0.5 - 4 | 1 | -2 | -1 | 0 - 5 | 2 | -2 | 6 | 0.5 - 6 | 2 | 3 | 7 | 1 - 7 | 2 | 7 | 8 | 1 - 8 | 2 | 11 | 11 | 0.5 - 9 | 2 | -3 | -2 | 0 -(9 rows) - -SELECT * FROM pgr_trspViaEdges( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges', - ARRAY[1,11,6]::INTEGER[], /* array of eids */ - ARRAY[0.5, 0.5, 0.5]::float8[], /* array of vids */ - true, /* directed graph? */ - true /* has_reverse_cost? */ -); -WARNING: pgr_trspViaEdges(text,integer[],float[],boolean,boolean,text) deprecated function on v3.4.0 - seq | id1 | id2 | id3 | cost ------+-----+-----+-----+------ - 1 | 1 | -1 | 1 | 0.5 - 2 | 1 | 6 | 4 | 1 - 3 | 1 | 7 | 8 | 1 - 4 | 1 | 11 | 11 | 0.5 - 5 | 1 | -2 | -1 | 0 - 6 | 2 | -2 | 11 | 0.5 - 7 | 2 | 12 | 13 | 1 - 8 | 2 | 17 | 15 | 1 - 9 | 2 | 16 | 9 | 1 - 10 | 2 | 11 | 8 | 1 - 11 | 2 | 7 | 7 | 1 - 12 | 2 | 3 | 6 | 0.5 - 13 | 2 | -3 | -2 | 0 -(13 rows) - -SELECT * FROM pgr_trspViaEdges( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges', - ARRAY[1,11,6]::INTEGER[], /* array of eids */ - ARRAY[0.5, 0.5, 0.5]::float8[], /* array of vids */ - true, /* directed graph? */ - true /* has_reverse_cost? */ -); -WARNING: pgr_trspViaEdges(text,integer[],float[],boolean,boolean,text) deprecated function on v3.4.0 - seq | id1 | id2 | id3 | cost ------+-----+-----+-----+------ - 1 | 1 | -1 | 1 | 0.5 - 2 | 1 | 6 | 4 | 1 - 3 | 1 | 7 | 8 | 1 - 4 | 1 | 11 | 11 | 0.5 - 5 | 1 | -2 | -1 | 0 - 6 | 2 | -2 | 11 | 0.5 - 7 | 2 | 12 | 13 | 1 - 8 | 2 | 17 | 15 | 1 - 9 | 2 | 16 | 9 | 1 - 10 | 2 | 11 | 8 | 1 - 11 | 2 | 7 | 7 | 1 - 12 | 2 | 3 | 6 | 0.5 - 13 | 2 | -3 | -2 | 0 -(13 rows) - -SELECT * FROM pgr_trspViaVertices( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges', - ARRAY[6, 1, 12]::INTEGER[], /* array of vids */ - true, /* directed graph? */ - false /* has_reverse_cost? */ -); -WARNING: pgr_trspViaVertices(text,anyarray,boolean,boolean,text) deprecated function on v3.4.0 - seq | id1 | id2 | id3 | cost ------+-----+-----+-----+------ -(0 rows) - -SELECT * FROM pgr_trspViaEdges( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges', - ARRAY[4,6,11]::INTEGER[], /* array of eids */ - ARRAY[0.5, 0.5, 0.5]::float8[], /* array of vids */ - true, /* directed graph? */ - false /* has_reverse_cost? */ -); -WARNING: pgr_trspViaEdges(text,integer[],float[],boolean,boolean,text) deprecated function on v3.4.0 - seq | id1 | id2 | id3 | cost ------+-----+-----+-----+------ - 1 | 2 | -2 | 6 | 0.5 - 2 | 2 | 3 | 7 | 1 - 3 | 2 | 7 | 8 | 1 - 4 | 2 | 11 | 11 | 0.5 - 5 | 2 | -3 | -2 | 0 -(5 rows) - -SELECT * FROM pgr_trspViaEdges( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges', - ARRAY[1,11,6]::INTEGER[], /* array of eids */ - ARRAY[0.5, 0.5, 0.5]::float8[], /* array of vids */ - true, /* directed graph? */ - false /* has_reverse_cost? */ -); -WARNING: pgr_trspViaEdges(text,integer[],float[],boolean,boolean,text) deprecated function on v3.4.0 - seq | id1 | id2 | id3 | cost ------+-----+-----+-----+------ - 1 | 1 | -1 | 1 | 0.5 - 2 | 1 | 6 | 4 | 1 - 3 | 1 | 7 | 8 | 1 - 4 | 1 | 11 | 11 | 0.5 - 5 | 1 | -2 | -2 | 0 -(5 rows) - -SELECT * FROM pgr_trspViaEdges( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges', - ARRAY[1,11,6]::INTEGER[], /* array of eids */ - ARRAY[0.5, 0.5, 0.5]::float8[], /* array of vids */ - true, /* directed graph? */ - false /* has_reverse_cost? */ -); -WARNING: pgr_trspViaEdges(text,integer[],float[],boolean,boolean,text) deprecated function on v3.4.0 - seq | id1 | id2 | id3 | cost ------+-----+-----+-----+------ - 1 | 1 | -1 | 1 | 0.5 - 2 | 1 | 6 | 4 | 1 - 3 | 1 | 7 | 8 | 1 - 4 | 1 | 11 | 11 | 0.5 - 5 | 1 | -2 | -2 | 0 -(5 rows) - -SELECT * FROM pgr_trspViaVertices( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges', - ARRAY[6, 1, 12]::INTEGER[], /* array of vids */ - false, /* directed graph? */ - true /* has_reverse_cost? */ -); -WARNING: pgr_trspViaVertices(text,anyarray,boolean,boolean,text) deprecated function on v3.4.0 - seq | id1 | id2 | id3 | cost ------+-----+-----+-----+------ - 1 | 1 | 6 | 4 | 1 - 2 | 1 | 7 | 7 | 1 - 3 | 1 | 3 | 6 | 1 - 4 | 2 | 1 | 6 | 1 - 5 | 2 | 3 | 7 | 1 - 6 | 2 | 7 | 10 | 1 - 7 | 2 | 8 | 12 | 1 - 8 | 2 | 12 | -1 | 0 -(8 rows) - -SELECT * FROM pgr_trspViaEdges( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges', - ARRAY[4,6,11]::INTEGER[], /* array of eids */ - ARRAY[0.5, 0.5, 0.5]::float8[], /* array of vids */ - false, /* directed graph? */ - true /* has_reverse_cost? */ -); -WARNING: pgr_trspViaEdges(text,integer[],float[],boolean,boolean,text) deprecated function on v3.4.0 - seq | id1 | id2 | id3 | cost ------+-----+-----+-----+------ - 1 | 1 | -1 | 4 | 0.5 - 2 | 1 | 7 | 7 | 1 - 3 | 1 | 3 | 6 | 0.5 - 4 | 1 | -2 | -1 | 0 - 5 | 2 | -2 | 6 | 0.5 - 6 | 2 | 3 | 7 | 1 - 7 | 2 | 7 | 8 | 1 - 8 | 2 | 11 | 11 | 0.5 - 9 | 2 | -3 | -2 | 0 -(9 rows) - -SELECT * FROM pgr_trspViaEdges( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges', - ARRAY[1,11,6]::INTEGER[], /* array of eids */ - ARRAY[0.5, 0.5, 0.5]::float8[], /* array of vids */ - false, /* directed graph? */ - true /* has_reverse_cost? */ -); -WARNING: pgr_trspViaEdges(text,integer[],float[],boolean,boolean,text) deprecated function on v3.4.0 - seq | id1 | id2 | id3 | cost ------+-----+-----+-----+------ - 1 | 1 | -1 | 1 | 0.5 - 2 | 1 | 6 | 4 | 1 - 3 | 1 | 7 | 8 | 1 - 4 | 1 | 11 | 11 | 0.5 - 5 | 1 | -2 | -1 | 0 - 6 | 2 | -2 | 11 | 0.5 - 7 | 2 | 11 | 8 | 1 - 8 | 2 | 7 | 7 | 1 - 9 | 2 | 3 | 6 | 0.5 - 10 | 2 | -3 | -2 | 0 -(10 rows) - -SELECT * FROM pgr_trspViaEdges( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges', - ARRAY[1,11,6]::INTEGER[], /* array of eids */ - ARRAY[0.5, 0.5, 0.5]::float8[], /* array of vids */ - false, /* directed graph? */ - true /* has_reverse_cost? */ -); -WARNING: pgr_trspViaEdges(text,integer[],float[],boolean,boolean,text) deprecated function on v3.4.0 - seq | id1 | id2 | id3 | cost ------+-----+-----+-----+------ - 1 | 1 | -1 | 1 | 0.5 - 2 | 1 | 6 | 4 | 1 - 3 | 1 | 7 | 8 | 1 - 4 | 1 | 11 | 11 | 0.5 - 5 | 1 | -2 | -1 | 0 - 6 | 2 | -2 | 11 | 0.5 - 7 | 2 | 11 | 8 | 1 - 8 | 2 | 7 | 7 | 1 - 9 | 2 | 3 | 6 | 0.5 - 10 | 2 | -3 | -2 | 0 -(10 rows) - -SELECT * FROM pgr_trspViaVertices( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges', - ARRAY[6, 1, 12]::INTEGER[], /* array of vids */ - false, /* directed graph? */ - false /* has_reverse_cost? */ -); -WARNING: pgr_trspViaVertices(text,anyarray,boolean,boolean,text) deprecated function on v3.4.0 - seq | id1 | id2 | id3 | cost ------+-----+-----+-----+------ - 1 | 1 | 6 | 4 | 1 - 2 | 1 | 7 | 7 | 1 - 3 | 1 | 3 | 6 | 1 - 4 | 2 | 1 | 6 | 1 - 5 | 2 | 3 | 7 | 1 - 6 | 2 | 7 | 10 | 1 - 7 | 2 | 8 | 12 | 1 - 8 | 2 | 12 | -1 | 0 -(8 rows) - -SELECT * FROM pgr_trspViaEdges( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges', - ARRAY[4,6,11]::INTEGER[], /* array of eids */ - ARRAY[0.5, 0.5, 0.5]::float8[], /* array of vids */ - false, /* directed graph? */ - false /* has_reverse_cost? */ -); -WARNING: pgr_trspViaEdges(text,integer[],float[],boolean,boolean,text) deprecated function on v3.4.0 - seq | id1 | id2 | id3 | cost ------+-----+-----+-----+------ - 1 | 1 | -1 | 4 | 0.5 - 2 | 1 | 7 | 7 | 1 - 3 | 1 | 3 | 6 | 0.5 - 4 | 1 | -2 | -1 | 0 - 5 | 2 | -2 | 6 | 0.5 - 6 | 2 | 3 | 7 | 1 - 7 | 2 | 7 | 8 | 1 - 8 | 2 | 11 | 11 | 0.5 - 9 | 2 | -3 | -2 | 0 -(9 rows) - -SELECT * FROM pgr_trspViaEdges( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges', - ARRAY[1,11,6]::INTEGER[], /* array of eids */ - ARRAY[0.5, 0.5, 0.5]::float8[], /* array of vids */ - false, /* directed graph? */ - false /* has_reverse_cost? */ -); -WARNING: pgr_trspViaEdges(text,integer[],float[],boolean,boolean,text) deprecated function on v3.4.0 - seq | id1 | id2 | id3 | cost ------+-----+-----+-----+------ - 1 | 1 | -1 | 1 | 0.5 - 2 | 1 | 6 | 4 | 1 - 3 | 1 | 7 | 8 | 1 - 4 | 1 | 11 | 11 | 0.5 - 5 | 1 | -2 | -1 | 0 - 6 | 2 | -2 | 11 | 0.5 - 7 | 2 | 11 | 8 | 1 - 8 | 2 | 7 | 7 | 1 - 9 | 2 | 3 | 6 | 0.5 - 10 | 2 | -3 | -2 | 0 -(10 rows) - -SELECT * FROM pgr_trspViaEdges( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edges', - ARRAY[1,11,6]::INTEGER[], /* array of eids */ - ARRAY[0.5, 0.5, 0.5]::float8[], /* array of vids */ - false, /* directed graph? */ - false /* has_reverse_cost? */ -); -WARNING: pgr_trspViaEdges(text,integer[],float[],boolean,boolean,text) deprecated function on v3.4.0 - seq | id1 | id2 | id3 | cost ------+-----+-----+-----+------ - 1 | 1 | -1 | 1 | 0.5 - 2 | 1 | 6 | 4 | 1 - 3 | 1 | 7 | 8 | 1 - 4 | 1 | 11 | 11 | 0.5 - 5 | 1 | -2 | -1 | 0 - 6 | 2 | -2 | 11 | 0.5 - 7 | 2 | 11 | 8 | 1 - 8 | 2 | 7 | 7 | 1 - 9 | 2 | 3 | 6 | 0.5 - 10 | 2 | -3 | -2 | 0 -(10 rows) - -ROLLBACK; -ROLLBACK diff --git a/docqueries/trsp/test.conf b/docqueries/trsp/test.conf index c8a12420d6..d6640dc540 100644 --- a/docqueries/trsp/test.conf +++ b/docqueries/trsp/test.conf @@ -4,17 +4,10 @@ 'any' => { 'data' => ['trsp-issue244.data'], 'files' => [qw( - trsp-renumber.pg trsp.pg trsp_withPoints.pg trspVia.pg trspVia_withPoints.pg - trsp-any-02.pg - trsp_vias-any-04.pg - issue693.pg - issue704.pg - issue717.pg - four_edges.pg )], }, ); diff --git a/docqueries/trsp/trsp-any-02.pg b/docqueries/trsp/trsp-any-02.pg deleted file mode 100644 index 5a41a599a9..0000000000 --- a/docqueries/trsp/trsp-any-02.pg +++ /dev/null @@ -1,29 +0,0 @@ --- CopyRight(c) pgRouting developers --- Creative Commons Attribution-Share Alike 3.0 License : https://creativecommons.org/licenses/by-sa/3.0/ -SET extra_float_digits=-3; - -CREATE TABLE restrictions2 ( - rid integer NOT NULL, - to_cost double precision, - teid integer, - feid integer, - via text -); - -INSERT INTO restrictions2 (rid, to_cost, teid, feid, via) VALUES -(1,100,7,4,NULL), -(2,4,8,3,'5'), -(3,100,9,16,NULL); - -UPDATE edges SET cost = cost + 0.001 * id * id, reverse_cost = reverse_cost + 0.001 * id * id; - -select * from pgr_trsp( - 'select id::integer, source::integer, target::integer,cost, reverse_cost from edges ORDER BY ID', - 1, /* edge_id for start */ - 0.5, /* midpoint of edge */ - 6, /* edge_id of route end */ - 0.5, /* midpoint of edge */ - true, /* directed graph? */ - true, /* has_reverse_cost? */ - /* include the turn restrictions */ - 'select to_cost, teid as target_id, feid||coalesce('',''||via,'''') as via_path from restrictions2'); diff --git a/docqueries/trsp/trsp-any-02.result b/docqueries/trsp/trsp-any-02.result deleted file mode 100644 index 53346e2fde..0000000000 --- a/docqueries/trsp/trsp-any-02.result +++ /dev/null @@ -1,48 +0,0 @@ -BEGIN; -BEGIN -SET client_min_messages TO NOTICE; -SET -SET extra_float_digits=-3; -SET -CREATE TABLE restrictions2 ( - rid integer NOT NULL, - to_cost double precision, - teid integer, - feid integer, - via text -); -CREATE TABLE -INSERT INTO restrictions2 (rid, to_cost, teid, feid, via) VALUES -(1,100,7,4,NULL), -(2,4,8,3,'5'), -(3,100,9,16,NULL); -INSERT 0 3 -UPDATE edges SET cost = cost + 0.001 * id * id, reverse_cost = reverse_cost + 0.001 * id * id; -UPDATE 18 -select * from pgr_trsp( - 'select id::integer, source::integer, target::integer,cost, reverse_cost from edges ORDER BY ID', - 1, /* edge_id for start */ - 0.5, /* midpoint of edge */ - 6, /* edge_id of route end */ - 0.5, /* midpoint of edge */ - true, /* directed graph? */ - true, /* has_reverse_cost? */ - /* include the turn restrictions */ - 'select to_cost, teid as target_id, feid||coalesce('',''||via,'''') as via_path from restrictions2'); -WARNING: pgr_trsp(text,integer,float,integer,float,boolean,boolean) deprecated signature on v3.4.0 - seq | id1 | id2 | cost ------+-----+-----+-------- - 0 | -1 | 1 | 0.5005 - 1 | 6 | 4 | 1.016 - 2 | 7 | 8 | 1.064 - 3 | 11 | 9 | 1.081 - 4 | 16 | 16 | 1.256 - 5 | 15 | 3 | 1.009 - 6 | 10 | 5 | 1.025 - 7 | 11 | 8 | 1.064 - 8 | 7 | 7 | 1.049 - 9 | 3 | 6 | 0.518 -(10 rows) - -ROLLBACK; -ROLLBACK diff --git a/docqueries/trsp/trsp-renumber.pg b/docqueries/trsp/trsp-renumber.pg deleted file mode 100644 index 3002b64ca8..0000000000 --- a/docqueries/trsp/trsp-renumber.pg +++ /dev/null @@ -1,33 +0,0 @@ --- CopyRight(c) pgRouting developers --- Creative Commons Attribution-Share Alike 3.0 License : https://creativecommons.org/licenses/by-sa/3.0/ - - - -SELECT * FROM pgr_trsp( - 'SELECT id::INTEGER, (source+10)::INTEGER AS source, (target+10)::INTEGER AS target, cost::FLOAT FROM edges', - 11, 27, false, false -); - -SELECT * FROM _pgr_trsp( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost FROM edges', - $$ SELECT 1 AS id, ARRAY[4,7] AS path, 100 AS cost $$, - 6, 1, false -); - -SELECT * FROM _pgr_trsp( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost FROM edges', - $$ SELECT * FROM restrictions $$, - 6, 1, false -); - - -SELECT * FROM pgr_trsp( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost FROM edges', - 6, 1, false, false, - 'SELECT to_cost, target_id::int4, via_path - FROM old_restrictions' -); - - - - diff --git a/docqueries/trsp/trsp-renumber.result b/docqueries/trsp/trsp-renumber.result deleted file mode 100644 index 8a9dcf7a11..0000000000 --- a/docqueries/trsp/trsp-renumber.result +++ /dev/null @@ -1,74 +0,0 @@ -BEGIN; -BEGIN -SET client_min_messages TO NOTICE; -SET -SELECT * FROM pgr_trsp( - 'SELECT id::INTEGER, (source+10)::INTEGER AS source, (target+10)::INTEGER AS target, cost::FLOAT FROM edges', - 11, 27, false, false -); -WARNING: pgr_trsp(text,integer,integer,boolean,boolean) deprecated signature on v3.4.0 - seq | id1 | id2 | cost ------+-----+-----+------ - 0 | 11 | 6 | 1 - 1 | 13 | 7 | 1 - 2 | 17 | 8 | 1 - 3 | 21 | 9 | 1 - 4 | 26 | 15 | 1 - 5 | 27 | -1 | 0 -(6 rows) - -SELECT * FROM _pgr_trsp( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost FROM edges', - $$ SELECT 1 AS id, ARRAY[4,7] AS path, 100 AS cost $$, - 6, 1, false -); - seq | path_seq | node | edge | cost | agg_cost ------+----------+------+------+------+---------- - 1 | 1 | 6 | 4 | 1 | 0 - 2 | 2 | 7 | 10 | 1 | 1 - 3 | 3 | 8 | 12 | 1 | 2 - 4 | 4 | 12 | 11 | 1 | 3 - 5 | 5 | 11 | 8 | 1 | 4 - 6 | 6 | 7 | 7 | 1 | 5 - 7 | 7 | 3 | 6 | 1 | 6 - 8 | 8 | 1 | -1 | 0 | 7 -(8 rows) - -SELECT * FROM _pgr_trsp( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost FROM edges', - $$ SELECT * FROM restrictions $$, - 6, 1, false -); - seq | path_seq | node | edge | cost | agg_cost ------+----------+------+------+------+---------- - 1 | 1 | 6 | 4 | 1 | 0 - 2 | 2 | 7 | 10 | 1 | 1 - 3 | 3 | 8 | 12 | 1 | 2 - 4 | 4 | 12 | 11 | 1 | 3 - 5 | 5 | 11 | 8 | 1 | 4 - 6 | 6 | 7 | 7 | 1 | 5 - 7 | 7 | 3 | 6 | 1 | 6 - 8 | 8 | 1 | -1 | 0 | 7 -(8 rows) - -SELECT * FROM pgr_trsp( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost FROM edges', - 6, 1, false, false, - 'SELECT to_cost, target_id::int4, via_path - FROM old_restrictions' -); -WARNING: pgr_trsp(text,integer,integer,boolean,boolean) deprecated signature on v3.4.0 - seq | id1 | id2 | cost ------+-----+-----+------ - 0 | 6 | 4 | 1 - 1 | 7 | 10 | 1 - 2 | 8 | 12 | 1 - 3 | 12 | 11 | 1 - 4 | 11 | 8 | 1 - 5 | 7 | 7 | 1 - 6 | 3 | 6 | 1 - 7 | 1 | -1 | 0 -(8 rows) - -ROLLBACK; -ROLLBACK diff --git a/docqueries/trsp/trsp_vias-any-04.pg b/docqueries/trsp/trsp_vias-any-04.pg deleted file mode 100644 index a25b8b5e6a..0000000000 --- a/docqueries/trsp/trsp_vias-any-04.pg +++ /dev/null @@ -1,59 +0,0 @@ --- CopyRight(c) pgRouting developers --- Creative Commons Attribution-Share Alike 3.0 License : https://creativecommons.org/licenses/by-sa/3.0/ -/*PGR-GNU***************************************************************** - -Copyright (c) 2015 pgRouting developers -Mail: project@pgrouting.org - ------- - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License AS published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -********************************************************************PGR-GNU*/ - - - - SELECT * FROM pgr_trspViaVertices( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER,cost, reverse_cost FROM edges', - ARRAY[6, 1, 12]::INTEGER[], /* array of vids */ - true, /* directed graph? */ - true, /* has_reverse_cost? */ - /* include the turn restrictions */ - 'SELECT to_cost, target_id::INTEGER, via_path FROM old_restrictions'); - - SELECT * FROM pgr_trspViaEdges( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER,cost, reverse_cost FROM edges', - ARRAY[4,6,11]::INTEGER[], /* array of eids */ - ARRAY[0.5, 0.5, 0.5]::float8[], /* array of vids */ - true, /* directed graph? */ - true, /* has_reverse_cost? */ - /* include the turn restrictions */ - 'SELECT to_cost, target_id::INTEGER, via_path FROM old_restrictions'); - SELECT * FROM pgr_trspViaEdges( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER,cost, reverse_cost FROM edges', - ARRAY[1,11,6]::INTEGER[], /* array of eids */ - ARRAY[0.5, 0.5, 0.5]::float8[], /* array of vids */ - true, /* directed graph? */ - true, /* has_reverse_cost? */ - /* include the turn restrictions */ - 'SELECT to_cost, target_id::INTEGER, via_path FROM old_restrictions'); - SELECT * FROM pgr_trspViaEdges( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER,cost, reverse_cost FROM edges', - ARRAY[1,11,6]::INTEGER[], /* array of eids */ - ARRAY[0.5, 0.5, 0.5]::float8[], /* array of vids */ - true, /* directed graph? */ - true, /* has_reverse_cost? */ - /* include the turn restrictions */ - 'SELECT to_cost, target_id::INTEGER, via_path FROM old_restrictions'); diff --git a/docqueries/trsp/trsp_vias-any-04.result b/docqueries/trsp/trsp_vias-any-04.result index 95eaebe8cb..44eb152edf 100644 --- a/docqueries/trsp/trsp_vias-any-04.result +++ b/docqueries/trsp/trsp_vias-any-04.result @@ -54,94 +54,5 @@ WARNING: pgr_trspViaVertices(text,anyarray,boolean,boolean,text) deprecated fun 18 | 2 | 12 | -1 | 0 (18 rows) -SELECT * FROM pgr_trspViaEdges( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER,cost, reverse_cost FROM edges', - ARRAY[4,6,11]::INTEGER[], /* array of eids */ - ARRAY[0.5, 0.5, 0.5]::float8[], /* array of vids */ - true, /* directed graph? */ - true, /* has_reverse_cost? */ - /* include the turn restrictions */ - 'SELECT to_cost, target_id::INTEGER, via_path FROM old_restrictions'); -WARNING: pgr_trspViaEdges(text,integer[],float[],boolean,boolean,text) deprecated function on v3.4.0 -WARNING: pgr_trsp(text,integer,float,integer,float,boolean,boolean) deprecated signature on v3.4.0 -WARNING: pgr_trsp(text,integer,float,integer,float,boolean,boolean) deprecated signature on v3.4.0 - seq | id1 | id2 | id3 | cost ------+-----+-----+-----+------ - 1 | 1 | -1 | 4 | 0.5 - 2 | 1 | 7 | 8 | 1 - 3 | 1 | 11 | 9 | 1 - 4 | 1 | 16 | 16 | 1 - 5 | 1 | 15 | 3 | 1 - 6 | 1 | 10 | 5 | 1 - 7 | 1 | 11 | 8 | 1 - 8 | 1 | 7 | 7 | 1 - 9 | 1 | 3 | 6 | 1 - 10 | 2 | 3 | 7 | 1 - 11 | 2 | 7 | 8 | 1 - 12 | 2 | 11 | 9 | 1 - 13 | 2 | 16 | 16 | 1 - 14 | 2 | 15 | 3 | 1 - 15 | 2 | 10 | 5 | 1 - 16 | 2 | 11 | 11 | 0.5 -(16 rows) - -SELECT * FROM pgr_trspViaEdges( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER,cost, reverse_cost FROM edges', - ARRAY[1,11,6]::INTEGER[], /* array of eids */ - ARRAY[0.5, 0.5, 0.5]::float8[], /* array of vids */ - true, /* directed graph? */ - true, /* has_reverse_cost? */ - /* include the turn restrictions */ - 'SELECT to_cost, target_id::INTEGER, via_path FROM old_restrictions'); -WARNING: pgr_trspViaEdges(text,integer[],float[],boolean,boolean,text) deprecated function on v3.4.0 -WARNING: pgr_trsp(text,integer,float,integer,float,boolean,boolean) deprecated signature on v3.4.0 -WARNING: pgr_trsp(text,integer,float,integer,float,boolean,boolean) deprecated signature on v3.4.0 - seq | id1 | id2 | id3 | cost ------+-----+-----+-----+------ - 1 | 1 | -1 | 1 | 0.5 - 2 | 1 | 6 | 4 | 1 - 3 | 1 | 7 | 8 | 1 - 4 | 1 | 11 | 9 | 1 - 5 | 1 | 16 | 16 | 1 - 6 | 1 | 15 | 3 | 1 - 7 | 1 | 10 | 5 | 1 - 8 | 1 | 11 | 11 | 1 - 9 | 2 | 12 | 13 | 1 - 10 | 2 | 17 | 15 | 1 - 11 | 2 | 16 | 9 | 1 - 12 | 2 | 11 | 8 | 1 - 13 | 2 | 7 | 7 | 1 - 14 | 2 | 3 | 6 | 0.5 -(14 rows) - -SELECT * FROM pgr_trspViaEdges( - 'SELECT id::INTEGER, source::INTEGER, target::INTEGER,cost, reverse_cost FROM edges', - ARRAY[1,11,6]::INTEGER[], /* array of eids */ - ARRAY[0.5, 0.5, 0.5]::float8[], /* array of vids */ - true, /* directed graph? */ - true, /* has_reverse_cost? */ - /* include the turn restrictions */ - 'SELECT to_cost, target_id::INTEGER, via_path FROM old_restrictions'); -WARNING: pgr_trspViaEdges(text,integer[],float[],boolean,boolean,text) deprecated function on v3.4.0 -WARNING: pgr_trsp(text,integer,float,integer,float,boolean,boolean) deprecated signature on v3.4.0 -WARNING: pgr_trsp(text,integer,float,integer,float,boolean,boolean) deprecated signature on v3.4.0 - seq | id1 | id2 | id3 | cost ------+-----+-----+-----+------ - 1 | 1 | -1 | 1 | 0.5 - 2 | 1 | 6 | 4 | 1 - 3 | 1 | 7 | 8 | 1 - 4 | 1 | 11 | 9 | 1 - 5 | 1 | 16 | 16 | 1 - 6 | 1 | 15 | 3 | 1 - 7 | 1 | 10 | 5 | 1 - 8 | 1 | 11 | 11 | 1 - 9 | 2 | 12 | 13 | 1 - 10 | 2 | 17 | 15 | 1 - 11 | 2 | 16 | 9 | 1 - 12 | 2 | 11 | 8 | 1 - 13 | 2 | 7 | 7 | 1 - 14 | 2 | 3 | 6 | 0.5 -(14 rows) - ROLLBACK; ROLLBACK diff --git a/docqueries/utilities/findCloseEdges.pg b/docqueries/utilities/findCloseEdges.pg index c0aaf27194..e46d13e32a 100644 --- a/docqueries/utilities/findCloseEdges.pg +++ b/docqueries/utilities/findCloseEdges.pg @@ -1,45 +1,35 @@ -- CopyRight(c) pgRouting developers -- Creative Commons Attribution-Share Alike 3.0 License : https://creativecommons.org/licenses/by-sa/3.0/ +SET extra_float_digits=-3; /* -- q1 */ -SELECT * +SELECT + edge_id, fraction, side, distance, + distance, ST_AsText(geom) AS point, ST_AsText(edge) As edge FROM pgr_findCloseEdges( $$SELECT id, geom FROM edges$$, (SELECT geom FROM pointsOfInterest WHERE pid = 5), - 0.5); + 0.5, cap => 2); /* -- q2 */ -SELECT edge_id, round(fraction::numeric, 2) AS fraction, side, ST_AsText(geom) AS original_point +SELECT +edge_id, fraction, side, distance, +ST_AsText(geom) AS point, +ST_AsText(edge) AS edge FROM pgr_findCloseEdges( $$SELECT id, geom FROM edges$$, (SELECT array_agg(geom) FROM pointsOfInterest), 0.5); /* -- q3 */ /* One point signature */ -/* -- o1 */ -SELECT * -FROM pgr_findCloseEdges( - $$SELECT id, geom FROM edges$$, - (SELECT geom FROM pointsOfInterest WHERE pid = 5), - 0.5, cap => 2); -/* -- o2 */ -SELECT edge_id, round(fraction::numeric, 2) AS fraction, side, round(distance::numeric, 3) AS distance, - ST_AsText(geom) AS new_point, - ST_AsText(edge) AS original_to_new_point +/* -- o0 */ +SELECT edge_id, fraction, side, distance, ST_AsText(geom) geom, ST_AsText(edge) edge FROM pgr_findCloseEdges( - $$SELECT id, geom FROM edges$$, - (SELECT geom FROM pointsOfInterest WHERE pid = 5), - 0.5, partial => false); -/* -- o3 */ -SELECT edge_id, round(fraction::numeric, 2) AS fraction, side, round(distance::numeric, 3) AS distance, - ST_AsText(geom) AS new_point, - ST_AsText(edge) AS original_to_new_point -FROM pgr_findCloseEdges( - $$SELECT id, geom FROM edges$$, - (SELECT geom FROM pointsOfInterest WHERE pid = 5), - 0.5, cap => 2, partial => false); +$$SELECT 1 AS id, ST_MakeLine(ST_makePoint(2,0), ST_MakePoint(2,3)) AS geom$$, +ST_MakePoint(0,1.5), 5); +/* -- o1 */ /* -- o4 */ SELECT * FROM pgr_withPoints( $e$ SELECT * FROM edges $e$, - $p$ SELECT edge_id, round(fraction::numeric, 2) AS fraction, side + $p$ SELECT edge_id, fraction, side FROM pgr_findCloseEdges( $$SELECT id, geom FROM edges$$, (SELECT geom FROM pointsOfInterest WHERE pid = 5), @@ -47,44 +37,23 @@ SELECT * FROM pgr_withPoints( $p$, 1, ARRAY[-1, -2]); /* -- o5 */ -SELECT * +SELECT edge_id, fraction, side, distance, ST_AsText(geom) geom, ST_AsText(edge) edge FROM pgr_findCloseEdges( - $$SELECT id, geom FROM edges$$, - (SELECT geom FROM pointsOfInterest WHERE pid = 5), - 0.5, - dryrun => true); +$$SELECT 1 AS id, ST_MakeLine(ST_makePoint(2,0), ST_MakePoint(2,3)) AS geom$$, +ST_MakePoint(0,1.5), 5, dryrun => true); /* -- o6 */ /* Many point signature */ -/* -- m1 */ -SELECT edge_id, round(fraction::numeric, 2) AS fraction, side, round(distance::numeric, 3) AS distance, - ST_AsText(geom) AS geom_is_original, edge -FROM pgr_findCloseEdges( - $$SELECT id, geom FROM edges$$, - (SELECT array_agg(geom) FROM pointsOfInterest), - 0.5, cap => 2); -/* -- m2 */ -SELECT edge_id, round(fraction::numeric, 2) AS fraction, side, round(distance::numeric, 3) AS distance, - ST_AsText(geom) AS geom_is_original, - ST_AsText(edge) AS original_to_new_point -FROM pgr_findCloseEdges( - $$SELECT id, geom FROM edges$$, - (SELECT array_agg(geom) FROM pointsOfInterest), - 0.5, partial => false); -/* -- m3 */ -SELECT edge_id, round(fraction::numeric, 2) AS fraction, side, round(distance::numeric, 3) AS distance, - ST_AsText(geom) AS geom_is_original, - ST_AsText(edge) AS original_to_new_point +/* -- m0 */ +SELECT edge_id, fraction, side, distance, ST_AsText(geom) geom, ST_AsText(edge) edge FROM pgr_findCloseEdges( - $$SELECT id, geom FROM edges$$, - (SELECT array_agg(geom) FROM pointsOfInterest), - 0.5, cap => 2, partial => false); +$$SELECT 1 AS id, ST_MakeLine(ST_makePoint(1,0), ST_MakePoint(1,3)) AS geom$$, +ARRAY[ST_MakePoint(0,2), ST_MakePoint(3,1)]::GEOMETRY[], 5); +/* -- m1 */ /* -- m4 */ -SELECT * +SELECT edge_id, fraction, side, distance, ST_AsText(geom) geom, ST_AsText(edge) edge FROM pgr_findCloseEdges( - $$SELECT id, geom FROM edges$$, - (SELECT array_agg(geom) FROM pointsOfInterest), - 0.5, - dryrun => true); +$$SELECT 1 AS id, ST_MakeLine(ST_makePoint(1,0), ST_MakePoint(1,3)) AS geom$$, +ARRAY[ST_MakePoint(0,2), ST_MakePoint(3,1)]::GEOMETRY[], 5, dryrun=>true); /* -- m5 */ diff --git a/docqueries/utilities/findCloseEdges.result b/docqueries/utilities/findCloseEdges.result index 185071edbd..1541de9cd6 100644 --- a/docqueries/utilities/findCloseEdges.result +++ b/docqueries/utilities/findCloseEdges.result @@ -2,78 +2,58 @@ BEGIN; BEGIN SET client_min_messages TO NOTICE; SET +SET extra_float_digits=-3; +SET /* -- q1 */ -SELECT * +SELECT + edge_id, fraction, side, distance, + distance, ST_AsText(geom) AS point, ST_AsText(edge) As edge FROM pgr_findCloseEdges( $$SELECT id, geom FROM edges$$, (SELECT geom FROM pointsOfInterest WHERE pid = 5), - 0.5); - edge_id | fraction | side | distance | geom | edge ----------+----------+------+----------+------+------ - 5 | 0.8 | l | | | -(1 row) + 0.5, cap => 2); + edge_id | fraction | side | distance | distance | point | edge +---------+----------+------+----------+----------+----------------+--------------------------- + 5 | 0.8 | l | 0.1 | 0.1 | POINT(2.9 1.8) | LINESTRING(2.9 1.8,3 1.8) + 8 | 0.9 | r | 0.2 | 0.2 | POINT(2.9 1.8) | LINESTRING(2.9 1.8,2.9 2) +(2 rows) /* -- q2 */ -SELECT edge_id, round(fraction::numeric, 2) AS fraction, side, ST_AsText(geom) AS original_point +SELECT +edge_id, fraction, side, distance, +ST_AsText(geom) AS point, +ST_AsText(edge) AS edge FROM pgr_findCloseEdges( $$SELECT id, geom FROM edges$$, (SELECT array_agg(geom) FROM pointsOfInterest), 0.5); - edge_id | fraction | side | original_point ----------+----------+------+---------------- - 1 | 0.40 | l | POINT(1.8 0.4) - 6 | 0.30 | r | POINT(0.3 1.8) - 12 | 0.60 | l | POINT(2.6 3.2) - 15 | 0.40 | r | POINT(4.2 2.4) - 5 | 0.80 | l | POINT(2.9 1.8) - 4 | 0.70 | r | POINT(2.2 1.7) + edge_id | fraction | side | distance | point | edge +---------+----------+------+----------+----------------+--------------------------- + 1 | 0.4 | l | 0.2 | POINT(1.8 0.4) | LINESTRING(1.8 0.4,2 0.4) + 6 | 0.3 | r | 0.2 | POINT(0.3 1.8) | LINESTRING(0.3 1.8,0.3 2) + 12 | 0.6 | l | 0.2 | POINT(2.6 3.2) | LINESTRING(2.6 3.2,2.6 3) + 15 | 0.4 | r | 0.2 | POINT(4.2 2.4) | LINESTRING(4.2 2.4,4 2.4) + 5 | 0.8 | l | 0.1 | POINT(2.9 1.8) | LINESTRING(2.9 1.8,3 1.8) + 4 | 0.7 | r | 0.2 | POINT(2.2 1.7) | LINESTRING(2.2 1.7,2 1.7) (6 rows) /* -- q3 */ /* One point signature */ -/* -- o1 */ -SELECT * +/* -- o0 */ +SELECT edge_id, fraction, side, distance, ST_AsText(geom) geom, ST_AsText(edge) edge FROM pgr_findCloseEdges( - $$SELECT id, geom FROM edges$$, - (SELECT geom FROM pointsOfInterest WHERE pid = 5), - 0.5, cap => 2); - edge_id | fraction | side | distance | geom | edge ----------+--------------------+------+---------------------+------+------ - 5 | 0.8 | l | 0.10000000000000009 | | - 8 | 0.8999999999999999 | r | 0.19999999999999996 | | -(2 rows) - -/* -- o2 */ -SELECT edge_id, round(fraction::numeric, 2) AS fraction, side, round(distance::numeric, 3) AS distance, - ST_AsText(geom) AS new_point, - ST_AsText(edge) AS original_to_new_point -FROM pgr_findCloseEdges( - $$SELECT id, geom FROM edges$$, - (SELECT geom FROM pointsOfInterest WHERE pid = 5), - 0.5, partial => false); - edge_id | fraction | side | distance | new_point | original_to_new_point ----------+----------+------+----------+--------------+--------------------------- - 5 | 0.80 | l | 0.100 | POINT(3 1.8) | LINESTRING(2.9 1.8,3 1.8) +$$SELECT 1 AS id, ST_MakeLine(ST_makePoint(2,0), ST_MakePoint(2,3)) AS geom$$, +ST_MakePoint(0,1.5), 5); + edge_id | fraction | side | distance | geom | edge +---------+----------+------+----------+--------------+------------------------- + 1 | 0.5 | l | 2 | POINT(0 1.5) | LINESTRING(0 1.5,2 1.5) (1 row) -/* -- o3 */ -SELECT edge_id, round(fraction::numeric, 2) AS fraction, side, round(distance::numeric, 3) AS distance, - ST_AsText(geom) AS new_point, - ST_AsText(edge) AS original_to_new_point -FROM pgr_findCloseEdges( - $$SELECT id, geom FROM edges$$, - (SELECT geom FROM pointsOfInterest WHERE pid = 5), - 0.5, cap => 2, partial => false); - edge_id | fraction | side | distance | new_point | original_to_new_point ----------+----------+------+----------+--------------+--------------------------- - 5 | 0.80 | l | 0.100 | POINT(3 1.8) | LINESTRING(2.9 1.8,3 1.8) - 8 | 0.90 | r | 0.200 | POINT(2.9 2) | LINESTRING(2.9 1.8,2.9 2) -(2 rows) - +/* -- o1 */ /* -- o4 */ SELECT * FROM pgr_withPoints( $e$ SELECT * FROM edges $e$, - $p$ SELECT edge_id, round(fraction::numeric, 2) AS fraction, side + $p$ SELECT edge_id, fraction, side FROM pgr_findCloseEdges( $$SELECT id, geom FROM edges$$, (SELECT geom FROM pointsOfInterest WHERE pid = 5), @@ -97,31 +77,33 @@ SELECT * FROM pgr_withPoints( (12 rows) /* -- o5 */ -SELECT * +SELECT edge_id, fraction, side, distance, ST_AsText(geom) geom, ST_AsText(edge) edge FROM pgr_findCloseEdges( - $$SELECT id, geom FROM edges$$, - (SELECT geom FROM pointsOfInterest WHERE pid = 5), - 0.5, - dryrun => true); +$$SELECT 1 AS id, ST_MakeLine(ST_makePoint(2,0), ST_MakePoint(2,3)) AS geom$$, +ST_MakePoint(0,1.5), 5, dryrun => true); NOTICE: - WITH - edges_sql AS (SELECT id, geom FROM edges), - point_sql AS (SELECT '01010000003333333333330740CDCCCCCCCCCCFC3F'::geometry AS point) - - SELECT - id::BIGINT AS edge_id, - ST_LineLocatePoint(geom, point) AS fraction, - CASE WHEN ST_Intersects(ST_Buffer(geom, 0.5, 'side=right endcap=flat'), point) - THEN 'r' - ELSE 'l' END::CHAR AS side, - - geom <-> point AS distance, - ST_ClosestPoint(geom, point) AS new_point, - ST_MakeLine(point, ST_ClosestPoint(geom, point)) AS new_line - - FROM edges_sql, point_sql - WHERE ST_DWithin(geom, point, 0.5) - ORDER BY geom <-> point LIMIT 1 +WITH +edges_sql AS (SELECT 1 AS id, ST_MakeLine(ST_makePoint(2,0), ST_MakePoint(2,3)) AS geom), +point_sql AS (SELECT unnest('{01010000000000000000000000000000000000F83F}'::geometry[]) AS point), +results AS ( + SELECT + id::BIGINT AS edge_id, + ST_LineLocatePoint(geom, point) AS fraction, + CASE WHEN ST_Intersects(ST_Buffer(geom, 5, 'side=right endcap=flat'), point) + THEN 'r' + ELSE 'l' END::CHAR AS side, + geom <-> point AS distance, + point, + ST_MakeLine(point, ST_ClosestPoint(geom, point)) AS new_line + FROM edges_sql, point_sql + WHERE ST_DWithin(geom, point, 5) + ORDER BY geom <-> point), +prepare_cap AS ( + SELECT row_number() OVER (PARTITION BY point ORDER BY point, distance) AS rn, * + FROM results) +SELECT edge_id, fraction, side, distance, point, new_line +FROM prepare_cap +WHERE rn <= 1 edge_id | fraction | side | distance | geom | edge ---------+----------+------+----------+------+------ @@ -129,90 +111,39 @@ NOTICE: /* -- o6 */ /* Many point signature */ -/* -- m1 */ -SELECT edge_id, round(fraction::numeric, 2) AS fraction, side, round(distance::numeric, 3) AS distance, - ST_AsText(geom) AS geom_is_original, edge +/* -- m0 */ +SELECT edge_id, fraction, side, distance, ST_AsText(geom) geom, ST_AsText(edge) edge FROM pgr_findCloseEdges( - $$SELECT id, geom FROM edges$$, - (SELECT array_agg(geom) FROM pointsOfInterest), - 0.5, cap => 2); - edge_id | fraction | side | distance | geom_is_original | edge ----------+----------+------+----------+------------------+------ - 1 | 0.40 | l | 0.200 | POINT(1.8 0.4) | - 6 | 0.30 | r | 0.200 | POINT(0.3 1.8) | - 12 | 0.60 | l | 0.200 | POINT(2.6 3.2) | - 11 | 1.00 | l | 0.447 | POINT(2.6 3.2) | - 15 | 0.40 | r | 0.200 | POINT(4.2 2.4) | - 9 | 1.00 | l | 0.447 | POINT(4.2 2.4) | - 5 | 0.80 | l | 0.100 | POINT(2.9 1.8) | - 8 | 0.90 | r | 0.200 | POINT(2.9 1.8) | - 4 | 0.70 | r | 0.200 | POINT(2.2 1.7) | - 8 | 0.20 | r | 0.300 | POINT(2.2 1.7) | -(10 rows) - -/* -- m2 */ -SELECT edge_id, round(fraction::numeric, 2) AS fraction, side, round(distance::numeric, 3) AS distance, - ST_AsText(geom) AS geom_is_original, - ST_AsText(edge) AS original_to_new_point -FROM pgr_findCloseEdges( - $$SELECT id, geom FROM edges$$, - (SELECT array_agg(geom) FROM pointsOfInterest), - 0.5, partial => false); - edge_id | fraction | side | distance | geom_is_original | original_to_new_point ----------+----------+------+----------+------------------+--------------------------- - 1 | 0.40 | l | 0.200 | POINT(1.8 0.4) | LINESTRING(1.8 0.4,2 0.4) - 6 | 0.30 | r | 0.200 | POINT(0.3 1.8) | LINESTRING(0.3 1.8,0.3 2) - 12 | 0.60 | l | 0.200 | POINT(2.6 3.2) | LINESTRING(2.6 3.2,2.6 3) - 15 | 0.40 | r | 0.200 | POINT(4.2 2.4) | LINESTRING(4.2 2.4,4 2.4) - 5 | 0.80 | l | 0.100 | POINT(2.9 1.8) | LINESTRING(2.9 1.8,3 1.8) - 4 | 0.70 | r | 0.200 | POINT(2.2 1.7) | LINESTRING(2.2 1.7,2 1.7) -(6 rows) - -/* -- m3 */ -SELECT edge_id, round(fraction::numeric, 2) AS fraction, side, round(distance::numeric, 3) AS distance, - ST_AsText(geom) AS geom_is_original, - ST_AsText(edge) AS original_to_new_point -FROM pgr_findCloseEdges( - $$SELECT id, geom FROM edges$$, - (SELECT array_agg(geom) FROM pointsOfInterest), - 0.5, cap => 2, partial => false); - edge_id | fraction | side | distance | geom_is_original | original_to_new_point ----------+----------+------+----------+------------------+--------------------------- - 1 | 0.40 | l | 0.200 | POINT(1.8 0.4) | LINESTRING(1.8 0.4,2 0.4) - 6 | 0.30 | r | 0.200 | POINT(0.3 1.8) | LINESTRING(0.3 1.8,0.3 2) - 12 | 0.60 | l | 0.200 | POINT(2.6 3.2) | LINESTRING(2.6 3.2,2.6 3) - 11 | 1.00 | l | 0.447 | POINT(2.6 3.2) | LINESTRING(2.6 3.2,3 3) - 15 | 0.40 | r | 0.200 | POINT(4.2 2.4) | LINESTRING(4.2 2.4,4 2.4) - 9 | 1.00 | l | 0.447 | POINT(4.2 2.4) | LINESTRING(4.2 2.4,4 2) - 5 | 0.80 | l | 0.100 | POINT(2.9 1.8) | LINESTRING(2.9 1.8,3 1.8) - 8 | 0.90 | r | 0.200 | POINT(2.9 1.8) | LINESTRING(2.9 1.8,2.9 2) - 4 | 0.70 | r | 0.200 | POINT(2.2 1.7) | LINESTRING(2.2 1.7,2 1.7) - 8 | 0.20 | r | 0.300 | POINT(2.2 1.7) | LINESTRING(2.2 1.7,2.2 2) -(10 rows) +$$SELECT 1 AS id, ST_MakeLine(ST_makePoint(1,0), ST_MakePoint(1,3)) AS geom$$, +ARRAY[ST_MakePoint(0,2), ST_MakePoint(3,1)]::GEOMETRY[], 5); + edge_id | fraction | side | distance | geom | edge +---------+----------------+------+----------+------------+--------------------- + 1 | 0.666666666667 | l | 1 | POINT(0 2) | LINESTRING(0 2,1 2) + 1 | 0.333333333333 | r | 2 | POINT(3 1) | LINESTRING(3 1,1 1) +(2 rows) +/* -- m1 */ /* -- m4 */ -SELECT * +SELECT edge_id, fraction, side, distance, ST_AsText(geom) geom, ST_AsText(edge) edge FROM pgr_findCloseEdges( - $$SELECT id, geom FROM edges$$, - (SELECT array_agg(geom) FROM pointsOfInterest), - 0.5, - dryrun => true); +$$SELECT 1 AS id, ST_MakeLine(ST_makePoint(1,0), ST_MakePoint(1,3)) AS geom$$, +ARRAY[ST_MakePoint(0,2), ST_MakePoint(3,1)]::GEOMETRY[], 5, dryrun=>true); NOTICE: WITH -edges_sql AS (SELECT id, geom FROM edges), -point_sql AS (SELECT unnest('{0101000000CDCCCCCCCCCCFC3F9A9999999999D93F:0101000000CDCCCCCCCCCC10403333333333330340:0101000000CDCCCCCCCCCC04409A99999999990940:0101000000333333333333D33FCDCCCCCCCCCCFC3F:01010000003333333333330740CDCCCCCCCCCCFC3F:01010000009A99999999990140333333333333FB3F}'::geometry[]) AS point), +edges_sql AS (SELECT 1 AS id, ST_MakeLine(ST_makePoint(1,0), ST_MakePoint(1,3)) AS geom), +point_sql AS (SELECT unnest('{010100000000000000000000000000000000000040:01010000000000000000000840000000000000F03F}'::geometry[]) AS point), results AS ( SELECT id::BIGINT AS edge_id, ST_LineLocatePoint(geom, point) AS fraction, - CASE WHEN ST_Intersects(ST_Buffer(geom, 0.5, 'side=right endcap=flat'), point) + CASE WHEN ST_Intersects(ST_Buffer(geom, 5, 'side=right endcap=flat'), point) THEN 'r' ELSE 'l' END::CHAR AS side, geom <-> point AS distance, point, ST_MakeLine(point, ST_ClosestPoint(geom, point)) AS new_line FROM edges_sql, point_sql - WHERE ST_DWithin(geom, point, 0.5) + WHERE ST_DWithin(geom, point, 5) ORDER BY geom <-> point), prepare_cap AS ( SELECT row_number() OVER (PARTITION BY point ORDER BY point, distance) AS rn, * diff --git a/docqueries/version/full_version.result b/docqueries/version/full_version.result index 9b8c27a06b..afc4ecf422 100644 --- a/docqueries/version/full_version.result +++ b/docqueries/version/full_version.result @@ -6,7 +6,7 @@ SET SELECT version, library FROM pgr_full_version(); version | library -----------+----------------- - 3.7.0-dev | pgrouting-3.7.0 + 4.0.0-dev | pgrouting-4.0.0 (1 row) /* -- q2 */ diff --git a/docqueries/version/version.result b/docqueries/version/version.result index 6b23561635..2628452719 100644 --- a/docqueries/version/version.result +++ b/docqueries/version/version.result @@ -6,7 +6,7 @@ SET SELECT pgr_version(); pgr_version ------------- - 3.7.0-dev + 4.0.0-dev (1 row) /* -- q2 */ diff --git a/docqueries/vrp_basic/CMakeLists.txt b/docqueries/vrp_basic/CMakeLists.txt deleted file mode 100644 index b350952e7f..0000000000 --- a/docqueries/vrp_basic/CMakeLists.txt +++ /dev/null @@ -1,11 +0,0 @@ -# Do not use extensions -SET(LOCAL_FILES - vrpOneDepot - ) - -foreach (f ${LOCAL_FILES}) - configure_file("${f}.result" "${PGR_DOCUMENTATION_SOURCE_DIR}/${f}.queries") - list(APPEND LOCAL_DOC_FILES "${PGR_DOCUMENTATION_SOURCE_DIR}/${f}.queries") -endforeach() - -set(PROJECT_DOC_FILES ${PROJECT_DOC_FILES} ${LOCAL_DOC_FILES} PARENT_SCOPE) diff --git a/docqueries/vrp_basic/test.conf b/docqueries/vrp_basic/test.conf deleted file mode 100644 index 63f256698e..0000000000 --- a/docqueries/vrp_basic/test.conf +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/perl -w - -%main::tests = ( - 'any' => { - 'data' => ['../../tools/testers/solomon_100_rc101.data.sql'], - 'files' => [qw( - vrpOneDepot.pg - )] - }, -); - -1; diff --git a/docqueries/withPoints/withPointsCostMatrix.pg b/docqueries/withPoints/withPointsCostMatrix.pg index aa28062d91..0f8af98db9 100644 --- a/docqueries/withPoints/withPointsCostMatrix.pg +++ b/docqueries/withPoints/withPointsCostMatrix.pg @@ -1,6 +1,7 @@ -- CopyRight(c) pgRouting developers -- Creative Commons Attribution-Share Alike 3.0 License : https://creativecommons.org/licenses/by-sa/3.0/ SET extra_float_digits=-3; +SET client_min_messages TO WARNING; /* -- q1 */ SELECT * FROM pgr_withPointsCostMatrix( 'SELECT id, source, target, cost, reverse_cost FROM edges ORDER BY id', diff --git a/docqueries/withPoints/withPointsCostMatrix.result b/docqueries/withPoints/withPointsCostMatrix.result index 8ee9a418c9..e9b4ce2577 100644 --- a/docqueries/withPoints/withPointsCostMatrix.result +++ b/docqueries/withPoints/withPointsCostMatrix.result @@ -4,6 +4,8 @@ SET client_min_messages TO NOTICE; SET SET extra_float_digits=-3; SET +SET client_min_messages TO WARNING; +SET /* -- q1 */ SELECT * FROM pgr_withPointsCostMatrix( 'SELECT id, source, target, cost, reverse_cost FROM edges ORDER BY id', @@ -34,8 +36,6 @@ SELECT * FROM pgr_TSP( array[-1, 10, 11, -6], directed := false); $$ ); -NOTICE: pgr_TSP no longer solving with simulated annaeling -HINT: Ignoring annaeling parameters seq | node | cost | agg_cost -----+------+------+---------- 1 | -6 | 0 | 0 diff --git a/git b/git deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/include/astar/astar.hpp b/include/astar/astar.hpp index 32736025f0..c00ec0c00d 100644 --- a/include/astar/astar.hpp +++ b/include/astar/astar.hpp @@ -35,6 +35,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include #include +#include #include diff --git a/include/bdAstar/bdAstar.hpp b/include/bdAstar/bdAstar.hpp index cbaa86a308..3c0e160aa2 100644 --- a/include/bdAstar/bdAstar.hpp +++ b/include/bdAstar/bdAstar.hpp @@ -34,6 +34,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include #include +#include #include "cpp_common/bidirectional.hpp" #include "cpp_common/basePath_SSEC.hpp" diff --git a/include/bellman_ford/bellman_ford.hpp b/include/bellman_ford/bellman_ford.hpp index 06e704cfcc..3134c5bf9c 100644 --- a/include/bellman_ford/bellman_ford.hpp +++ b/include/bellman_ford/bellman_ford.hpp @@ -38,6 +38,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include #include +#include + #include #include #include diff --git a/include/bellman_ford/edwardMoore.hpp b/include/bellman_ford/edwardMoore.hpp index d85ef2e2d7..d5fe38680e 100644 --- a/include/bellman_ford/edwardMoore.hpp +++ b/include/bellman_ford/edwardMoore.hpp @@ -30,6 +30,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include #include +#include #include "cpp_common/basePath_SSEC.hpp" #include "cpp_common/base_graph.hpp" diff --git a/include/bgraph/graph_to_edges.hpp b/include/bgraph/graph_to_edges.hpp index 05e805e375..945c2b9989 100644 --- a/include/bgraph/graph_to_edges.hpp +++ b/include/bgraph/graph_to_edges.hpp @@ -29,6 +29,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include #include +#include #include #include diff --git a/include/bgraph/line_graph.hpp b/include/bgraph/line_graph.hpp index 4d6435e517..bb9567190f 100644 --- a/include/bgraph/line_graph.hpp +++ b/include/bgraph/line_graph.hpp @@ -27,6 +27,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #define INCLUDE_BGRAPH_LINE_GRAPH_HPP_ #include +#include #include #include diff --git a/include/breadthFirstSearch/binaryBreadthFirstSearch.hpp b/include/breadthFirstSearch/binaryBreadthFirstSearch.hpp index 605733b53b..a3026be2c2 100644 --- a/include/breadthFirstSearch/binaryBreadthFirstSearch.hpp +++ b/include/breadthFirstSearch/binaryBreadthFirstSearch.hpp @@ -32,6 +32,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include #include +#include #include "cpp_common/basePath_SSEC.hpp" #include "cpp_common/base_graph.hpp" diff --git a/include/breadthFirstSearch/breadthFirstSearch.hpp b/include/breadthFirstSearch/breadthFirstSearch.hpp index 83e139ad58..32c43814f3 100644 --- a/include/breadthFirstSearch/breadthFirstSearch.hpp +++ b/include/breadthFirstSearch/breadthFirstSearch.hpp @@ -27,6 +27,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include +#include #include #include diff --git a/include/c_common/e_report.h b/include/c_common/e_report.h index d11ac238ba..957f12db8d 100644 --- a/include/c_common/e_report.h +++ b/include/c_common/e_report.h @@ -41,7 +41,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * ~~~~{.c} * std::ostringstream log; * log << "the message"; - * *log_msg = pgr_msg(log.str().c_str()); + * *log_msg = to_pg_msg(log.str()); * ~~~~ * * diff --git a/include/c_common/trsp_pgget.h b/include/c_common/trsp_pgget.h deleted file mode 100644 index 50a48ca771..0000000000 --- a/include/c_common/trsp_pgget.h +++ /dev/null @@ -1,98 +0,0 @@ -/*PGR-GNU***************************************************************** -File: trsp_pgget.h - -Copyright (c) 2015 pgRouting developers -Mail: project@pgrouting.org - -Copyright (c) 2023 Celia Virginia Vergara Castillo -mail: vicky at erosion.dev -Copyright (c) 2020 Mahmoud SAKR and Esteban ZIMANYI -mail: m_attia_sakrcw at yahoo.com, estebanzimanyicw at gmail.com -Copyright (c) 2016 Rohith Reddy -Copyright (c) 2016 Andrea Nardelli -mail: nrd.nardelli at gmail.com -Copyright (c) 2015 Celia Virginia Vergara Castillo -mail: vicky at erosion.dev - ------- - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - ********************************************************************PGR-GNU*/ -/** @file - -This is a copy of pgdata_getters.h - -The old version of TRSP -- Is the only function that has its own edge reader within its code, - hence the name of the file. -- The old version of TRSP will exist during 3.x series - - -@note -- The only function that remains is `fetch_edge` -- The old version of TRSP will be removed on V4 - - @todo: TODO V4 Delete this file -*/ -#ifndef INCLUDE_C_COMMON_TRSP_PGGET_H_ -#define INCLUDE_C_COMMON_TRSP_PGGET_H_ -#pragma once - -#ifdef __cplusplus -extern "C" { -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#ifdef __cplusplus -} -#endif - -#ifdef __cplusplus -#include -#include -#else -#include -#include -#include -#endif - -#include "cpp_common/undefPostgresDefine.hpp" - -#ifdef __cplusplus -using Edge_t = struct Edge_rt; -#else -typedef struct Edge_rt Edge_t; -#endif - - -#ifdef __cplusplus -extern "C" { -#endif - -/** @brief Read edges called from C file*/ -void pgr_get_edges(char*, Edge_t**, size_t*, bool, bool, char**); - -#ifdef __cplusplus -} -#endif - -#endif // INCLUDE_C_COMMON_TRSP_PGGET_H_ diff --git a/include/c_types/trsp/trsp.h b/include/c_types/trsp/trsp.h deleted file mode 100644 index ea047b3cd8..0000000000 --- a/include/c_types/trsp/trsp.h +++ /dev/null @@ -1,53 +0,0 @@ -/*PGR-GNU***************************************************************** - -FILE: trsp.h - -Copyright (c) 2015 pgRouting developers -Mail: project@pgrouting.org - ------- - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - ********************************************************************PGR-GNU*/ - -#ifndef INCLUDE_C_TYPES_TRSP_TRSP_H_ -#define INCLUDE_C_TYPES_TRSP_TRSP_H_ - -#define MAX_RULE_LENGTH 5 - - -/* for int64_t */ -#ifdef __cplusplus -# include -typedef int64_t int64; -#else -# include -#endif - -struct restrict_t { - int target_id; - double to_cost; - int via[MAX_RULE_LENGTH]; -}; - -struct path_element_tt { - int64_t vertex_id; - int64_t edge_id; - double cost; -}; - - -#endif // INCLUDE_C_TYPES_TRSP_TRSP_H_ diff --git a/include/chinese/chinesePostman.hpp b/include/chinese/chinesePostman.hpp index 501769a111..dc6adba91e 100644 --- a/include/chinese/chinesePostman.hpp +++ b/include/chinese/chinesePostman.hpp @@ -35,6 +35,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include #include +#include #include "max_flow/minCostMaxFlow.hpp" #include "c_types/path_rt.h" diff --git a/include/coloring/bipartite_driver.hpp b/include/coloring/bipartite_driver.hpp index 10589a5523..038690ef8b 100644 --- a/include/coloring/bipartite_driver.hpp +++ b/include/coloring/bipartite_driver.hpp @@ -35,6 +35,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include #include +#include #include #include diff --git a/include/coloring/edgeColoring.hpp b/include/coloring/edgeColoring.hpp index 897b3f4ace..119c77eb0a 100644 --- a/include/coloring/edgeColoring.hpp +++ b/include/coloring/edgeColoring.hpp @@ -30,6 +30,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include #include +#include #include #include diff --git a/include/coloring/sequentialVertexColoring.hpp b/include/coloring/sequentialVertexColoring.hpp index d9d3d117aa..87753aba98 100644 --- a/include/coloring/sequentialVertexColoring.hpp +++ b/include/coloring/sequentialVertexColoring.hpp @@ -28,6 +28,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include #include +#include #include #include diff --git a/include/components/components.hpp b/include/components/components.hpp index 350bcc1738..ff5ebebecf 100644 --- a/include/components/components.hpp +++ b/include/components/components.hpp @@ -33,6 +33,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include #include +#include #include #include diff --git a/include/components/componentsResult.hpp b/include/components/componentsResult.hpp index a91883f0cc..5e13852aaa 100644 --- a/include/components/componentsResult.hpp +++ b/include/components/componentsResult.hpp @@ -30,6 +30,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #pragma once #include +#include #include "c_types/ii_t_rt.h" diff --git a/include/components/makeConnected.hpp b/include/components/makeConnected.hpp index 89dbc3272b..69b4efc69d 100644 --- a/include/components/makeConnected.hpp +++ b/include/components/makeConnected.hpp @@ -28,6 +28,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include #include +#include #include #include diff --git a/include/contraction/contract.hpp b/include/contraction/contract.hpp index 474b6f5fa5..c270e48390 100644 --- a/include/contraction/contract.hpp +++ b/include/contraction/contract.hpp @@ -33,13 +33,15 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include -#include "cpp_common/assert.hpp" +#include #include "contraction/contractionGraph.hpp" #include "contraction/ch_graphs.hpp" #include "contraction/linearContraction.hpp" #include "contraction/deadEndContraction.hpp" +#include "cpp_common/assert.hpp" + namespace pgrouting { namespace contraction { diff --git a/include/contraction/contractionGraph.hpp b/include/contraction/contractionGraph.hpp index 75cd790ec9..7268aaa258 100644 --- a/include/contraction/contractionGraph.hpp +++ b/include/contraction/contractionGraph.hpp @@ -36,6 +36,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include #include +#include #include @@ -58,7 +59,7 @@ class Pgr_contractionGraph : public Pgr_base_graph() + explicit Pgr_contractionGraph() : Pgr_base_graph() { } diff --git a/include/contraction/linearContraction.hpp b/include/contraction/linearContraction.hpp index 704d0f34f6..ff165f3743 100644 --- a/include/contraction/linearContraction.hpp +++ b/include/contraction/linearContraction.hpp @@ -35,6 +35,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include #include +#include #include #include diff --git a/include/cpp_common/Dmatrix.hpp b/include/cpp_common/Dmatrix.hpp index a4db572b27..4b22364094 100644 --- a/include/cpp_common/Dmatrix.hpp +++ b/include/cpp_common/Dmatrix.hpp @@ -1,8 +1,6 @@ /*PGR-GNU***************************************************************** File: Dmatrix.hpp -FILE: Dmatrix.h - Copyright (c) 2015 pgRouting developers Mail: project@pgrouting.org @@ -34,6 +32,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include #include +#include typedef struct IID_t_rt IID_t_rt; diff --git a/include/cpp_common/alloc.hpp b/include/cpp_common/alloc.hpp index e0ed3d400f..664788b3b2 100644 --- a/include/cpp_common/alloc.hpp +++ b/include/cpp_common/alloc.hpp @@ -33,6 +33,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include +#include extern "C" { @@ -86,8 +87,8 @@ pgr_free(T* ptr) { return nullptr; } -char * -pgr_msg(const std::string &msg); +char* to_pg_msg(const std::string&); +char* to_pg_msg(const std::ostringstream&); } // namespace pgrouting diff --git a/include/cpp_common/basePath_SSEC.hpp b/include/cpp_common/basePath_SSEC.hpp index aa7d4017fc..82e1ac293e 100644 --- a/include/cpp_common/basePath_SSEC.hpp +++ b/include/cpp_common/basePath_SSEC.hpp @@ -36,6 +36,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include #include +#include #include "cpp_common/undefPostgresDefine.hpp" diff --git a/include/cpp_common/base_graph.hpp b/include/cpp_common/base_graph.hpp index 72efb41d13..d0115001e7 100644 --- a/include/cpp_common/base_graph.hpp +++ b/include/cpp_common/base_graph.hpp @@ -36,6 +36,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include #include +#include #include #include @@ -265,7 +266,7 @@ class Pgr_base_graph { - inserts the vertices - The vertices must be checked (if necessary) before calling the constructor */ - explicit Pgr_base_graph( + explicit Pgr_base_graph( const std::vector &vertices) : graph(vertices.size()), m_is_directed(t_directed), @@ -295,7 +296,7 @@ class Pgr_base_graph { /** Prepares the _graph_ to be of type gtype with 0 vertices */ - explicit Pgr_base_graph() + explicit Pgr_base_graph() : graph(0), m_is_directed(t_directed), vertIndex(boost::get(boost::vertex_index, graph)), diff --git a/include/cpp_common/basic_edge.hpp b/include/cpp_common/basic_edge.hpp index 5353ebf014..9ba784466d 100644 --- a/include/cpp_common/basic_edge.hpp +++ b/include/cpp_common/basic_edge.hpp @@ -31,7 +31,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #define INCLUDE_CPP_COMMON_BASIC_EDGE_HPP_ #pragma once -#include +#include namespace pgrouting { diff --git a/include/cpp_common/basic_vertex.hpp b/include/cpp_common/basic_vertex.hpp index e4300311e2..e5c4fa99c4 100644 --- a/include/cpp_common/basic_vertex.hpp +++ b/include/cpp_common/basic_vertex.hpp @@ -33,6 +33,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include +#include #include "cpp_common/edge_t.hpp" diff --git a/include/cpp_common/bidirectional.hpp b/include/cpp_common/bidirectional.hpp index ded4d8129b..307a34affa 100644 --- a/include/cpp_common/bidirectional.hpp +++ b/include/cpp_common/bidirectional.hpp @@ -41,6 +41,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include #include +#include #include #include diff --git a/include/cpp_common/ch_edge.hpp b/include/cpp_common/ch_edge.hpp index 879b9dd7a9..2c7466d795 100644 --- a/include/cpp_common/ch_edge.hpp +++ b/include/cpp_common/ch_edge.hpp @@ -33,6 +33,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include +#include + #include "cpp_common/ch_vertex.hpp" namespace pgrouting { diff --git a/include/cpp_common/ch_vertex.hpp b/include/cpp_common/ch_vertex.hpp index 2de3697d5b..ec7053cc77 100644 --- a/include/cpp_common/ch_vertex.hpp +++ b/include/cpp_common/ch_vertex.hpp @@ -28,9 +28,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ********************************************************************PGR-GNU*/ #ifndef INCLUDE_CPP_COMMON_CH_VERTEX_HPP_ #define INCLUDE_CPP_COMMON_CH_VERTEX_HPP_ + #include #include #include +#include #include "cpp_common/edge_t.hpp" #include "cpp_common/identifiers.hpp" diff --git a/include/cpp_common/combinations.hpp b/include/cpp_common/combinations.hpp index a7e3a00165..4c83f07ff7 100644 --- a/include/cpp_common/combinations.hpp +++ b/include/cpp_common/combinations.hpp @@ -49,13 +49,6 @@ class Path; namespace utilities { -#if 1 -std::map> -get_combinations(const II_t_rt *, size_t); - -std::map> -get_combinations(int64_t*, size_t, int64_t*, size_t); -#endif std::map> get_combinations( diff --git a/include/cpp_common/get_data.hpp b/include/cpp_common/get_data.hpp index b9b93393c0..91c6bc4388 100644 --- a/include/cpp_common/get_data.hpp +++ b/include/cpp_common/get_data.hpp @@ -33,6 +33,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include +#include #include "cpp_common/info_t.hpp" #include "cpp_common/get_check_data.hpp" diff --git a/include/cpp_common/identifier.hpp b/include/cpp_common/identifier.hpp index 8606a4d556..073752ba9a 100644 --- a/include/cpp_common/identifier.hpp +++ b/include/cpp_common/identifier.hpp @@ -31,10 +31,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #define INCLUDE_CPP_COMMON_IDENTIFIER_HPP_ #pragma once -#if defined(__MINGW32__) || defined(_MSC_VER) -#include -#endif - +#include #include namespace pgrouting { diff --git a/include/cpp_common/identifiers.hpp b/include/cpp_common/identifiers.hpp index 4cc68806c3..3a6d75dda7 100644 --- a/include/cpp_common/identifiers.hpp +++ b/include/cpp_common/identifiers.hpp @@ -54,15 +54,15 @@ class Identifiers { //! @name constructors //@{ - Identifiers() = default; - Identifiers(const std::set& data) : m_ids(data) { + Identifiers() = default; + explicit Identifiers(const std::set& data) : m_ids(data) { } /* @brief initializes with {1 ~ number} * * @params [in] number */ - explicit Identifiers(const size_t number) { + explicit Identifiers(const size_t number) { size_t i(0); std::generate_n(std::inserter(m_ids, m_ids.begin()), number, diff --git a/include/cpp_common/line_vertex.hpp b/include/cpp_common/line_vertex.hpp index f5f6a3c519..983ab3f0dd 100644 --- a/include/cpp_common/line_vertex.hpp +++ b/include/cpp_common/line_vertex.hpp @@ -35,6 +35,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include +#include #include "cpp_common/edge_t.hpp" diff --git a/include/cpp_common/path_t.hpp b/include/cpp_common/path_t.hpp index 5e862bab73..ff2b8048a3 100644 --- a/include/cpp_common/path_t.hpp +++ b/include/cpp_common/path_t.hpp @@ -31,7 +31,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #define INCLUDE_CPP_COMMON_PATH_T_HPP_ #pragma once -#include +#include struct Path_t { int64_t node; diff --git a/include/cpp_common/pgdata_fetchers.hpp b/include/cpp_common/pgdata_fetchers.hpp index 5a435476b6..46adc6b60b 100644 --- a/include/cpp_common/pgdata_fetchers.hpp +++ b/include/cpp_common/pgdata_fetchers.hpp @@ -45,6 +45,7 @@ extern "C" { } #include +#include #include "cpp_common/undefPostgresDefine.hpp" diff --git a/include/cpp_common/to_postgres.hpp b/include/cpp_common/to_postgres.hpp new file mode 100644 index 0000000000..c671cbdd7a --- /dev/null +++ b/include/cpp_common/to_postgres.hpp @@ -0,0 +1,75 @@ +/*PGR-GNU***************************************************************** +File: to_postgres.hpp + +Copyright (c) 2015 pgRouting developers +Mail: project@pgrouting.org + +------ + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +********************************************************************PGR-GNU*/ + +#ifndef INCLUDE_CPP_COMMON_TO_POSTGRES_HPP_ +#define INCLUDE_CPP_COMMON_TO_POSTGRES_HPP_ +#pragma once + +#include +#include + +#include "c_types/iid_t_rt.h" + +#include "cpp_common/base_graph.hpp" +#include "cpp_common/alloc.hpp" + +namespace pgrouting { +namespace to_postgres { + +/** @brief Stored results on a vector are saved on a C array + * + * @param[in] graph Created graph with the base Graph + * @param[in] results results[i] -> the ith element of the vector contains the results + * @param[out] result_count The size of the vector + * @param[out] result_tuples The C array of + * + * = < i , 0, results[i] > + * + * Currently works for pgr_betweennessCentrality + */ +template +void vector_to_tuple( + const G &graph, + const std::vector results, + size_t &result_count, + IID_t_rt **result_tuples) { + result_count = results.size(); + *result_tuples = pgrouting::pgr_alloc(result_count, (*result_tuples)); + + size_t seq = 0; + for (typename G::V v_i = 0; v_i < graph.num_vertices(); ++v_i) { + (*result_tuples)[seq].from_vid = graph[v_i].id; + /* + * These 2 lines are specifically for pgr_betweennessCentrality + */ + (*result_tuples)[seq].to_vid = 0; + (*result_tuples)[seq].cost = graph.is_directed()? results[v_i] / 2.0 : results[v_i]; + seq++; + } +} + +} // namespace to_postgres +} // namespace pgrouting + +#endif // INCLUDE_CPP_COMMON_TO_POSTGRES_HPP_ diff --git a/include/cpp_common/trsp_pgfetch.hpp b/include/cpp_common/trsp_pgfetch.hpp deleted file mode 100644 index cfecff79e0..0000000000 --- a/include/cpp_common/trsp_pgfetch.hpp +++ /dev/null @@ -1,76 +0,0 @@ -/*PGR-GNU***************************************************************** -File: trsp_pgfetch.hpp - -Copyright (c) 2015 pgRouting developers -Mail: project@pgrouting.org - -Copyright (c) 2023 Celia Virginia Vergara Castillo -mail: vicky at erosion.dev -Copyright (c) 2020 Mahmoud SAKR and Esteban ZIMANYI -mail: m_attia_sakrcw at yahoo.com, estebanzimanyicw at gmail.com -Copyright (c) 2016 Rohith Reddy -Copyright (c) 2016 Andrea Nardelli -mail: nrd.nardelli at gmail.com -Copyright (c) 2015 Celia Virginia Vergara Castillo -mail: vicky at erosion.dev - ------- - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - ********************************************************************PGR-GNU*/ -/** @file -This is a copy of pgdata_fetchers.hpp - -The old version of TRSP -- Is the only function that has its own edge reader within its code, - hence the name of the file. -- The old version of TRSP will exist during 3.x series - - -@note -- The only function that remains is `fetch_edge` -- The old version of TRSP will be removed on V4 - - @todo: V4 TODO Delete this file -*/ - -#ifndef INCLUDE_CPP_COMMON_TRSP_PGFETCH_HPP_ -#define INCLUDE_CPP_COMMON_TRSP_PGFETCH_HPP_ - -/* for HeapTuple, TupleDesc */ -extern "C" { -#include -#include -} - -#include -#include "cpp_common/undefPostgresDefine.hpp" - -using Edge_t = struct Edge_rt; - -namespace pgrouting { -using Column_info_t = struct Column_info_t; - - -void fetch_edge( - const HeapTuple, const TupleDesc &, - const std::vector &, - int64_t*, Edge_t*, size_t*, bool); - - -} // namespace pgrouting - -#endif // INCLUDE_CPP_COMMON_TRSP_PGFETCH_HPP_ diff --git a/include/cpp_common/xy_vertex.hpp b/include/cpp_common/xy_vertex.hpp index 50b475aeac..baff1e4dbf 100644 --- a/include/cpp_common/xy_vertex.hpp +++ b/include/cpp_common/xy_vertex.hpp @@ -33,6 +33,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include +#include #include "cpp_common/bpoint.hpp" #include "cpp_common/edge_xy_t.hpp" diff --git a/include/dagShortestPath/dagShortestPath.hpp b/include/dagShortestPath/dagShortestPath.hpp index 89797f1300..e15eecc66c 100644 --- a/include/dagShortestPath/dagShortestPath.hpp +++ b/include/dagShortestPath/dagShortestPath.hpp @@ -37,6 +37,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include #include +#include #include #include diff --git a/include/dijkstra/dijkstra.hpp b/include/dijkstra/dijkstra.hpp index a51505d7fa..7ba860d9bf 100644 --- a/include/dijkstra/dijkstra.hpp +++ b/include/dijkstra/dijkstra.hpp @@ -44,6 +44,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include #include +#include #include #include diff --git a/include/dijkstra/dijkstraVia.hpp b/include/dijkstra/dijkstraVia.hpp index 0287870f90..10ccc7df08 100644 --- a/include/dijkstra/dijkstraVia.hpp +++ b/include/dijkstra/dijkstraVia.hpp @@ -33,6 +33,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include #include +#include #include "dijkstra/dijkstra.hpp" @@ -43,10 +44,10 @@ namespace pgrouting { template void -pgr_dijkstraVia( +dijkstraVia( G &graph, - const std::vector< int64_t > &via_vertices, - std::deque< Path > &paths, + const std::vector &via_vertices, + std::deque &paths, bool strict, bool U_turn_on_edge, std::ostringstream &log) { diff --git a/include/dijkstra/drivingDist.hpp b/include/dijkstra/drivingDist.hpp index 39858e4bf5..897cd4ef62 100644 --- a/include/dijkstra/drivingDist.hpp +++ b/include/dijkstra/drivingDist.hpp @@ -44,6 +44,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include #include +#include #include diff --git a/include/dominator/lengauerTarjanDominatorTree_driver.hpp b/include/dominator/lengauerTarjanDominatorTree_driver.hpp index 52c1d844a8..9b73984bdf 100644 --- a/include/dominator/lengauerTarjanDominatorTree_driver.hpp +++ b/include/dominator/lengauerTarjanDominatorTree_driver.hpp @@ -34,6 +34,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include +#include #include #include diff --git a/include/lineGraph/lineGraphFull.hpp b/include/lineGraph/lineGraphFull.hpp index a6cf3dff59..b7f5ba5967 100644 --- a/include/lineGraph/lineGraphFull.hpp +++ b/include/lineGraph/lineGraphFull.hpp @@ -36,6 +36,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include #include +#include #include"c_types/line_graph_full_rt.h" #include "cpp_common/base_graph.hpp" @@ -55,12 +56,12 @@ class Pgr_lineGraphFull : public Pgr_base_graph { typedef typename boost::graph_traits < G >::in_edge_iterator EI_i; - explicit Pgr_lineGraphFull< G, T_V, T_E, t_directed>() + explicit Pgr_lineGraphFull() : Pgr_base_graph(), m_num_edges(0) { } - explicit Pgr_lineGraphFull(const pgrouting::DirectedGraph &digraph) + explicit Pgr_lineGraphFull(const pgrouting::DirectedGraph &digraph) : Pgr_base_graph() { apply_transformation(digraph); store_edge_costs(digraph); diff --git a/include/max_flow/flowgraph.hpp b/include/max_flow/flowgraph.hpp index dfd9b2fe36..8510d8f829 100644 --- a/include/max_flow/flowgraph.hpp +++ b/include/max_flow/flowgraph.hpp @@ -29,6 +29,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #define INCLUDE_MAX_FLOW_FLOWGRAPH_HPP_ #pragma once +#include + #include #include diff --git a/include/max_flow/maxflow.hpp b/include/max_flow/maxflow.hpp index ba8d4456e2..ba67cda6fe 100644 --- a/include/max_flow/maxflow.hpp +++ b/include/max_flow/maxflow.hpp @@ -35,6 +35,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include #include +#include #include "max_flow/flowgraph.hpp" #include diff --git a/include/max_flow/maximumcardinalitymatching.hpp b/include/max_flow/maximumcardinalitymatching.hpp index f10b2bd0e7..e081d3e468 100644 --- a/include/max_flow/maximumcardinalitymatching.hpp +++ b/include/max_flow/maximumcardinalitymatching.hpp @@ -39,6 +39,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include #include +#include #include #include diff --git a/include/max_flow/minCostMaxFlow.hpp b/include/max_flow/minCostMaxFlow.hpp index 3d91bb2683..35a4ad0231 100644 --- a/include/max_flow/minCostMaxFlow.hpp +++ b/include/max_flow/minCostMaxFlow.hpp @@ -35,6 +35,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include #include +#include #include #include diff --git a/include/metrics/betweennessCentrality.hpp b/include/metrics/betweennessCentrality.hpp index 8b145c0986..080dc16490 100644 --- a/include/metrics/betweennessCentrality.hpp +++ b/include/metrics/betweennessCentrality.hpp @@ -30,115 +30,53 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #pragma once #include -#include -#include #include #include -#include #include -#include #include "c_types/iid_t_rt.h" -#include "cpp_common/basePath_SSEC.hpp" #include "cpp_common/base_graph.hpp" #include "cpp_common/interruption.hpp" -#include "cpp_common/alloc.hpp" namespace pgrouting { -template class Pgr_metrics; +namespace metrics { template -void -pgr_betweennesscentrality( - G &graph, - size_t &result_tuple_count, - IID_t_rt **postgres_rows) { - Pgr_metrics fn_centrality; - fn_centrality.betweennessCentrality(graph, result_tuple_count, postgres_rows); -} - -template -class Pgr_metrics { - public: - using Graph = typename G::B_G; - using V = typename G::V; - using E = typename G::E; - typedef typename boost::graph_traits::directed_category directed_category; - - void betweennessCentrality( - const G &graph, - size_t &result_tuple_count, - IID_t_rt **postgres_rows) { - // required parameters - std::vector centrality(boost::num_vertices(graph.graph), 0.0); - auto centrality_map = boost::make_iterator_property_map(centrality.begin(), - boost::get(boost::vertex_index, graph.graph)); - std::vector distance(boost::num_vertices(graph.graph), 0.0); - auto distance_map = boost::make_iterator_property_map(distance.begin(), - boost::get(boost::vertex_index, graph.graph)); - // dummy parameters - std::vector edge_centrality(boost::num_edges(graph.graph), 0.0); - auto edge_centrality_map = boost::make_iterator_property_map(edge_centrality.begin(), - boost::get(&pgrouting::Basic_edge::cost, - graph.graph)); - std::vector> incoming(boost::num_vertices(graph.graph)); - auto incoming_map = boost::make_iterator_property_map(incoming.begin(), - boost::get(boost::vertex_index, graph.graph), - std::vector()); - std::vector dependency(boost::num_vertices(graph.graph), 0.0); - auto dependency_map = boost::make_iterator_property_map(dependency.begin(), - boost::get(boost::vertex_index, graph.graph)); - std::vector path_count(boost::num_vertices(graph.graph), 0); - auto path_count_map = boost::make_iterator_property_map(path_count.begin(), - boost::get(boost::vertex_index, graph.graph)); - auto vertex_index = boost::get(boost::vertex_index, graph.graph); - - /* abort in case of an interruption occurs (e.g. the query is being cancelled) */ - CHECK_FOR_INTERRUPTS(); - - boost::brandes_betweenness_centrality( +std::vector betweennessCentrality( + const G &graph + ) { + std::vector centrality(boost::num_vertices(graph.graph), 0.0); + auto centrality_map = boost::make_iterator_property_map(centrality.begin(), + boost::get(boost::vertex_index, graph.graph)); + + CHECK_FOR_INTERRUPTS(); + + try { + boost::brandes_betweenness_centrality( + graph.graph, + centrality_map); + + if (boost::num_vertices(graph.graph) > 2) { + boost::relative_betweenness_centrality( graph.graph, - centrality_map, - edge_centrality_map, - incoming_map, - distance_map, - dependency_map, - path_count_map, - vertex_index, - get(&pgrouting::Basic_edge::cost, graph.graph)); - - if (boost::num_vertices(graph.graph) > 2) { - boost::relative_betweenness_centrality( - graph.graph, - centrality_map); + centrality_map); + } + } catch (boost::exception const& ex) { + (void)ex; + throw; + } catch (std::exception &e) { + (void)e; + throw; + } catch (...) { + throw; } - generate_results(graph, centrality, result_tuple_count, postgres_rows); - } + return centrality; +} - private: - void generate_results( - const G &graph, - const std::vector centrality_results, - size_t &result_tuple_count, - IID_t_rt **postgres_rows) const { - result_tuple_count = centrality_results.size(); - *postgres_rows = pgr_alloc(result_tuple_count, (*postgres_rows)); - - size_t seq = 0; - for (typename G::V v_i = 0; v_i < graph.num_vertices(); ++v_i) { - (*postgres_rows)[seq].from_vid = graph[v_i].id; - (*postgres_rows)[seq].to_vid = 0; - (*postgres_rows)[seq].cost = centrality_results[v_i]; - if (std::is_same::value) { - (*postgres_rows)[seq].cost = centrality_results[v_i]/2.0; - } - seq++; - } - } -}; +} // namespace metrics } // namespace pgrouting #endif // INCLUDE_METRICS_BETWEENNESSCENTRALITY_HPP_ diff --git a/include/ordering/cuthillMckeeOrdering.hpp b/include/ordering/cuthillMckeeOrdering.hpp index 29997bf3fd..121b4b3258 100644 --- a/include/ordering/cuthillMckeeOrdering.hpp +++ b/include/ordering/cuthillMckeeOrdering.hpp @@ -34,6 +34,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include #include +#include #include #include diff --git a/include/planar/boyerMyrvold.hpp b/include/planar/boyerMyrvold.hpp index 2c8258df5b..c57333d8af 100644 --- a/include/planar/boyerMyrvold.hpp +++ b/include/planar/boyerMyrvold.hpp @@ -26,6 +26,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #pragma once #include +#include #include #include diff --git a/include/spanningTree/details.hpp b/include/spanningTree/details.hpp index 8cc64f3697..b67f64b5de 100644 --- a/include/spanningTree/details.hpp +++ b/include/spanningTree/details.hpp @@ -30,6 +30,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #pragma once #include +#include + #include "c_types/mst_rt.h" namespace pgrouting { diff --git a/include/spanningTree/kruskal.hpp b/include/spanningTree/kruskal.hpp index 23d588301a..1f6131709c 100644 --- a/include/spanningTree/kruskal.hpp +++ b/include/spanningTree/kruskal.hpp @@ -30,6 +30,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #pragma once #include +#include + #include #include "spanningTree/mst.hpp" #include "cpp_common/interruption.hpp" diff --git a/include/spanningTree/mst.hpp b/include/spanningTree/mst.hpp index af0e24b426..1dda2c6bf6 100644 --- a/include/spanningTree/mst.hpp +++ b/include/spanningTree/mst.hpp @@ -33,6 +33,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include #include +#include #include #include diff --git a/include/spanningTree/prim.hpp b/include/spanningTree/prim.hpp index 48b21a6452..2c4726a21a 100644 --- a/include/spanningTree/prim.hpp +++ b/include/spanningTree/prim.hpp @@ -31,6 +31,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include +#include #include #include diff --git a/include/traversal/depthFirstSearch.hpp b/include/traversal/depthFirstSearch.hpp index 30c10b708b..76327df136 100644 --- a/include/traversal/depthFirstSearch.hpp +++ b/include/traversal/depthFirstSearch.hpp @@ -27,6 +27,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include +#include #include #include diff --git a/include/trsp/GraphDefinition.hpp b/include/trsp/GraphDefinition.hpp deleted file mode 100644 index ea10b83d67..0000000000 --- a/include/trsp/GraphDefinition.hpp +++ /dev/null @@ -1,162 +0,0 @@ -/*PGR-GNU***************************************************************** -File: GraphDefinition.hpp - -Copyright (c) 2012 pgRouting developers -Mail: project@pgrouting.org - -Copyright 2012 steve ------- - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - ********************************************************************PGR-GNU*/ - -#ifndef INCLUDE_TRSP_GRAPHDEFINITION_HPP_ -#define INCLUDE_TRSP_GRAPHDEFINITION_HPP_ - -#include - -#include -#include -#include -#include -#include -#include -#include - - -#include "c_types/trsp/trsp.h" - -// using namespace std; - -using Edge_t = struct Edge_rt; -typedef std::vector LongVector; -typedef std::vector VectorOfLongVector; -typedef std::pair PIB; -typedef std::pair PDP; -typedef std::pair > PDVI; - -typedef struct { - int64 ed_ind[2]; - int64 v_pos[2]; -} PARENT_PATH; - -typedef struct Rule { - double cost; - std::vector precedencelist; - Rule(double c, std::vector p) : cost(c), precedencelist(p) { } -}Rule; - -typedef struct { - double startCost, endCost; -} CostHolder; - -typedef std::map > RuleTable; - - - -class GraphEdgeInfo { - public: - int64 m_lEdgeID; - int64 m_lEdgeIndex; - int64 m_sDirection; - double m_dCost; - double m_dReverseCost; - LongVector m_vecStartConnectedEdge; - LongVector m_vecEndConnedtedEdge; - bool m_bIsLeadingRestrictedEdge; - VectorOfLongVector m_vecRestrictedEdge; - - int64 m_lStartNode; - int64 m_lEndNode; -}; - - - - -typedef std::vector GraphEdgeVector; -typedef std::map Long2LongVectorMap; -typedef std::map Long2LongMap; - - - - -class GraphDefinition { - public: - GraphDefinition(void); - ~GraphDefinition(void); - - int my_dijkstra3(Edge_t *edges, size_t edge_count, - int64 start_vertex, int64 end_vertex, - bool directed, bool has_reverse_cost, - path_element_tt **path, size_t *path_count, - char **err_msg); - - int my_dijkstra2(Edge_t *edges, size_t edge_count, - int64 start_vertex, int64 end_vertex, - bool directed, bool has_reverse_cost, - path_element_tt **path, size_t *path_count, - char **err_msg, - std::vector &ruleList); - - int my_dijkstra1(Edge_t *edges, size_t edge_count, - int64 start_edge, double start_part, - int64 end_edge, double end_part, - bool directed, bool has_reverse_cost, - path_element_tt **path, size_t *path_count, - char **err_msg, - std::vector &ruleList); - - bool construct_graph(Edge_t *edges, size_t edge_count, - bool has_reverse_cost, bool directed); - - - private: - double construct_path(int64 ed_id, int64 v_pos); - void explore(int64 cur_node, GraphEdgeInfo& cur_edge, bool isStart, - LongVector &vecIndex, std::priority_queue, std::greater > &que); - double getRestrictionCost(int64 cur_node, GraphEdgeInfo& new_edge, - bool isStart); - bool addEdge(Edge_t edgeIn); - bool connectEdge(GraphEdgeInfo& firstEdge, GraphEdgeInfo& secondEdge, - bool bIsStartNodeSame); - bool get_single_cost(double total_cost, path_element_tt **path, - size_t *path_count); - void init(); - void deleteall(); - - private: - GraphEdgeVector m_vecEdgeVector; - Long2LongMap m_mapEdgeId2Index; - Long2LongVectorMap m_mapNodeId2Edge; - int64 max_node_id; - int64 max_edge_id; - int64 m_lStartEdgeId; - int64 m_lEndEdgeId; - double m_dStartpart; - double m_dEndPart; - bool isStartVirtual; - bool isEndVirtual; - - std::vector m_vecPath; - PARENT_PATH *parent; - CostHolder *m_dCost; - RuleTable m_ruleTable; - bool m_bIsturnRestrictOn; - bool m_bIsGraphConstructed; -}; - -#endif // INCLUDE_TRSP_GRAPHDEFINITION_HPP_ diff --git a/include/trsp/edgeInfo.hpp b/include/trsp/edgeInfo.hpp index d015008c9c..d131511b8f 100644 --- a/include/trsp/edgeInfo.hpp +++ b/include/trsp/edgeInfo.hpp @@ -26,6 +26,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #define INCLUDE_TRSP_EDGEINFO_HPP_ #include +#include #include "cpp_common/edge_t.hpp" diff --git a/include/trsp/trspHandler.hpp b/include/trsp/trspHandler.hpp index 772f666697..5305202e04 100644 --- a/include/trsp/trspHandler.hpp +++ b/include/trsp/trspHandler.hpp @@ -37,6 +37,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include #include +#include #include "cpp_common/basePath_SSEC.hpp" @@ -50,7 +51,7 @@ namespace trsp { -class Pgr_trspHandler : public pgrouting::Pgr_messages { +class TrspHandler : public pgrouting::Pgr_messages { /** * Used in the priority queue */ @@ -101,104 +102,54 @@ class Pgr_trspHandler : public pgrouting::Pgr_messages { public: - Pgr_trspHandler( + TrspHandler( std::vector &edges, const std::vector &new_edges, const bool directed, const std::vector &ruleList); - Pgr_trspHandler( + + TrspHandler( std::vector &edges, const bool directed, const std::vector &ruleList); - Pgr_trspHandler( - Edge_t *edges, - const size_t edge_count, - const bool directed, - const std::vector &ruleList); - Pgr_trspHandler( - Edge_t *edges, - const size_t edge_count, - const std::vector &new_edges, - const bool directed, - const std::vector &ruleList); - - Pgr_trspHandler(void) = delete; - ~Pgr_trspHandler(void) = default; - - - Path process( - const int64_t start_vertex, - const int64_t end_vertex); - - std::deque process( - const std::map> &combinations); - - std::deque process( - const std::vector sources, - const std::vector targets); + ~TrspHandler(void) = default; + std::deque process(const std::map>&); void clear(); private: - void construct_graph(const std::vector&, const bool); - void construct_graph( - Edge_t *edges, - const size_t edge_count, - const bool directed); + void construct_graph(const std::vector&, const std::vector&, const bool); - void add_point_edges( - const std::vector &new_edges, - const bool directed); - - int initialize_restrictions( - const std::vector &ruleList); + int initialize_restrictions(const std::vector&); void initialize_que(); - Path process_trsp( - size_t edge_count); + Path process(const int64_t, const int64_t); + + Path process_trsp(size_t edge_count); EdgeInfo dijkstra_exploration(); + void explore(int64_t, const EdgeInfo, bool); - void explore( - int64_t cur_node, - const EdgeInfo cur_edge, - bool isStart); + double getRestrictionCost(int64_t, const EdgeInfo&, bool); - double getRestrictionCost( - int64_t cur_node, - const EdgeInfo &new_edge, - bool isStart); - bool addEdge(Edge_t edgeIn, bool); + bool addEdge(Edge_t, bool); - void connectStartEdge( - size_t firstEdge_idx, - size_t secondEdge_idx); + void connectStartEdge(size_t, size_t); - void connectEndEdge( - size_t firstEdge_idx, - size_t secondEdge_idx); + void connectEndEdge(size_t, size_t); - double construct_path(int64_t ed_id, Position pos); + double construct_path(int64_t, Position); - void renumber_edges(Edge_t*, const size_t); - void renumber_edges(Edge_t*, const size_t, std::vector&); void renumber_edges(std::vector&); void renumber_edges(std::vector&, std::vector&); - void add_to_que( - double cost, - size_t e_idx, - bool isStart); + void add_to_que(double, size_t, bool); - double get_tot_cost( - double cost, - size_t edge_idx, - bool isStart); + double get_tot_cost(double, size_t, bool); private: std::vector m_edges; @@ -226,7 +177,7 @@ class Pgr_trspHandler : public pgrouting::Pgr_messages { /* * Used in dijkstra_exploration */ - int64_t current_node; + int64_t m_current_node; Path m_path; @@ -238,7 +189,7 @@ class Pgr_trspHandler : public pgrouting::Pgr_messages { /* * priority queue */ - std::priority_queue, std::greater > que; + std::priority_queue, std::greater> m_que; }; diff --git a/include/tsp/tsp.hpp b/include/tsp/tsp.hpp index 9f35c6ea22..93786f426c 100644 --- a/include/tsp/tsp.hpp +++ b/include/tsp/tsp.hpp @@ -34,6 +34,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include #include +#include #include #include diff --git a/include/visitors/dfs_visitor.hpp b/include/visitors/dfs_visitor.hpp index 3ddd341b75..0a4fcc1c75 100644 --- a/include/visitors/dfs_visitor.hpp +++ b/include/visitors/dfs_visitor.hpp @@ -33,6 +33,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include #include +#include #include diff --git a/include/vrp/dnode.hpp b/include/vrp/dnode.hpp index 9954b6a857..955a0292e4 100644 --- a/include/vrp/dnode.hpp +++ b/include/vrp/dnode.hpp @@ -30,6 +30,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include +#include + #include "cpp_common/identifier.hpp" #include "cpp_common/messages.hpp" diff --git a/include/vrp/order.hpp b/include/vrp/order.hpp index 3d77aaaeb6..e63b494342 100644 --- a/include/vrp/order.hpp +++ b/include/vrp/order.hpp @@ -30,6 +30,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include +#include + #include "cpp_common/identifier.hpp" #include "cpp_common/identifiers.hpp" #include "vrp/vehicle_node.hpp" diff --git a/include/vrp/tw_node.hpp b/include/vrp/tw_node.hpp index 812edfff8a..484bd77dcc 100644 --- a/include/vrp/tw_node.hpp +++ b/include/vrp/tw_node.hpp @@ -29,6 +29,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #pragma once #include +#include #include "cpp_common/orders_t.hpp" #include "cpp_common/vehicle_t.hpp" diff --git a/include/vrp/vehicle.hpp b/include/vrp/vehicle.hpp index f35c6af705..5c08f0826b 100644 --- a/include/vrp/vehicle.hpp +++ b/include/vrp/vehicle.hpp @@ -35,6 +35,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include #include +#include #include "cpp_common/identifier.hpp" diff --git a/include/vrp/vehicle_pickDeliver.hpp b/include/vrp/vehicle_pickDeliver.hpp index bb6a816e7f..166a8fe795 100644 --- a/include/vrp/vehicle_pickDeliver.hpp +++ b/include/vrp/vehicle_pickDeliver.hpp @@ -29,6 +29,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #pragma once #include +#include + #include "vrp/order.hpp" #include "vrp/pd_orders.hpp" #include "vrp/tw_node.hpp" diff --git a/include/withPoints/withPoints.hpp b/include/withPoints/withPoints.hpp index 6fa13398b2..05b3fc788c 100644 --- a/include/withPoints/withPoints.hpp +++ b/include/withPoints/withPoints.hpp @@ -29,7 +29,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #ifndef INCLUDE_WITHPOINTS_WITHPOINTS_HPP_ #define INCLUDE_WITHPOINTS_WITHPOINTS_HPP_ #pragma once + #include +#include #include "cpp_common/point_on_edge_t.hpp" #include "cpp_common/messages.hpp" diff --git a/include/yen/ksp.hpp b/include/yen/ksp.hpp index 11b10e36d7..ce610d9b22 100644 --- a/include/yen/ksp.hpp +++ b/include/yen/ksp.hpp @@ -41,6 +41,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include #include +#include #include "dijkstra/dijkstra.hpp" #include "cpp_common/assert.hpp" diff --git a/include/yen/turnRestrictedPath.hpp b/include/yen/turnRestrictedPath.hpp index a314b3a462..d6b737b15d 100644 --- a/include/yen/turnRestrictedPath.hpp +++ b/include/yen/turnRestrictedPath.hpp @@ -35,6 +35,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include #include +#include #include "yen/ksp.hpp" #include "cpp_common/assert.hpp" diff --git a/locale/de/LC_MESSAGES/index.po b/locale/de/LC_MESSAGES/index.po index 97ead8a321..b2313a6963 100644 --- a/locale/de/LC_MESSAGES/index.po +++ b/locale/de/LC_MESSAGES/index.po @@ -1,11 +1,11 @@ # SOME DESCRIPTIVE TITLE. -# Copyright (C) pgRouting Contributors - Version v3.7.0 +# Copyright (C) pgRouting Contributors - Version v3.8 # This file is distributed under the same license as the pgRouting package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" -"Project-Id-Version: pgRouting v3.4.0-dev\n" +"Project-Id-Version: pgRouting v3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-06-25 12:55-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" @@ -15,418 +15,3 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" - -#: ../../build/doc/index.rst:12 -msgid "**Supported versions:** `Latest `__ (`3.4 `__) `3.3 `__ `3.2 `__ `3.1 `__ `3.0 `__" -msgstr "" - -#: ../../build/doc/index.rst:19 -msgid "**Unsupported versions:** `2.6 `__ `2.5 `__ `2.4 `__ `2.3 `__ `2.2 `__ `2.1 `__ `2.0 `__" -msgstr "" - -#: ../../build/doc/index.rst:30 -msgid "Table of Contents" -msgstr "" - -#: ../../build/doc/index.rst:32 -msgid "pgRouting extends the `PostGIS `__/`PostgreSQL `__ geospatial database to provide geospatial routing and other network analysis functionality." -msgstr "" - -#: ../../build/doc/index.rst:36 -msgid "This is the manual for pgRouting |release|." -msgstr "" - -#: ../../build/doc/index.rst:None -msgid "Creative Commons Attribution-Share Alike 3.0 License" -msgstr "" - -#: ../../build/doc/index.rst:42 -msgid "The pgRouting Manual is licensed under a `Creative Commons Attribution-Share Alike 3.0 License `_. Feel free to use this material any way you like, but we ask that you attribute credit to the pgRouting Project and wherever possible, a link back to https://pgrouting.org. For other licenses used in pgRouting see the :ref:`license` page." -msgstr "" - -#: ../../build/doc/index.rst:50 -msgid "General" -msgstr "" - -#: ../../build/doc/index.rst:60 -msgid ":doc:`sampledata` that is used in the examples of this manual." -msgstr "" - -#: ../../build/doc/index.rst:68 -msgid "Pgrouting Concepts" -msgstr "" - -#: ../../build/doc/index.rst:77 -msgid ":doc:`routingFunctions`" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:4 -msgid ":doc:`allpairs-family`" -msgstr "" - -#: ../../build/doc/allpairs-family.rst:3 -msgid ":doc:`pgr_floydWarshall` - Floyd-Warshall's algorithm." -msgstr "" - -#: ../../build/doc/allpairs-family.rst:4 -msgid ":doc:`pgr_johnson` - Johnson's algorithm" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:10 -msgid ":doc:`aStar-family`" -msgstr "" - -#: ../../build/doc/aStar-family.rst:3 -msgid ":doc:`pgr_aStar` - A* algorithm for the shortest path." -msgstr "" - -#: ../../build/doc/aStar-family.rst:4 -msgid ":doc:`pgr_aStarCost` - Get the aggregate cost of the shortest paths." -msgstr "" - -#: ../../build/doc/aStar-family.rst:5 -msgid ":doc:`pgr_aStarCostMatrix` - Get the cost matrix of the shortest paths." -msgstr "" - -#: ../../build/doc/routingFunctions.rst:17 -msgid ":doc:`bdAstar-family`" -msgstr "" - -#: ../../build/doc/bdAstar-family.rst:3 -msgid ":doc:`pgr_bdAstar` - Bidirectional A* algorithm for obtaining paths." -msgstr "" - -#: ../../build/doc/bdAstar-family.rst:4 -msgid ":doc:`pgr_bdAstarCost` - Bidirectional A* algorithm to calculate the cost of the paths." -msgstr "" - -#: ../../build/doc/bdAstar-family.rst:6 -msgid ":doc:`pgr_bdAstarCostMatrix` - Bidirectional A* algorithm to calculate a cost matrix of paths." -msgstr "" - -#: ../../build/doc/routingFunctions.rst:23 -msgid ":doc:`bdDijkstra-family`" -msgstr "" - -#: ../../build/doc/bdDijkstra-family.rst:3 -msgid ":doc:`pgr_bdDijkstra` - Bidirectional Dijkstra algorithm for the shortest paths." -msgstr "" - -#: ../../build/doc/bdDijkstra-family.rst:5 -msgid ":doc:`pgr_bdDijkstraCost` - Bidirectional Dijkstra to calculate the cost of the shortest paths" -msgstr "" - -#: ../../build/doc/bdDijkstra-family.rst:7 -msgid ":doc:`pgr_bdDijkstraCostMatrix` - Bidirectional Dijkstra algorithm to create a matrix of costs of the shortest paths." -msgstr "" - -#: ../../build/doc/routingFunctions.rst:29 -msgid ":doc:`components-family`" -msgstr "" - -#: ../../build/doc/components-family.rst:3 -msgid ":doc:`pgr_connectedComponents` - Connected components of an undirected graph." -msgstr "" - -#: ../../build/doc/components-family.rst:4 -msgid ":doc:`pgr_strongComponents` - Strongly connected components of a directed graph." -msgstr "" - -#: ../../build/doc/components-family.rst:6 -msgid ":doc:`pgr_biconnectedComponents` - Biconnected components of an undirected graph." -msgstr "" - -#: ../../build/doc/components-family.rst:8 -msgid ":doc:`pgr_articulationPoints` - Articulation points of an undirected graph." -msgstr "" - -#: ../../build/doc/components-family.rst:9 -msgid ":doc:`pgr_bridges` - Bridges of an undirected graph." -msgstr "" - -#: ../../build/doc/routingFunctions.rst:35 -msgid ":doc:`contraction-family`" -msgstr "" - -#: ../../build/doc/contraction-family.rst:3 -msgid ":doc:`pgr_contraction`" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:41 -msgid ":doc:`dijkstra-family`" -msgstr "" - -#: ../../build/doc/dijkstra-family.rst:3 -msgid ":doc:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths." -msgstr "" - -#: ../../build/doc/dijkstra-family.rst:4 -msgid ":doc:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths." -msgstr "" - -#: ../../build/doc/dijkstra-family.rst:5 -msgid ":doc:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix." -msgstr "" - -#: ../../build/doc/dijkstra-family.rst:6 -msgid ":doc:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament information." -msgstr "" - -#: ../../build/doc/dijkstra-family.rst:8 -msgid ":doc:`pgr_KSP` - Use Yen algorithm with pgr_dijkstra to get the K shortest paths." -msgstr "" - -#: ../../build/doc/routingFunctions.rst:47 -msgid ":doc:`flow-family`" -msgstr "" - -#: ../../build/doc/flow-family.rst:3 -msgid ":doc:`pgr_maxFlow` - Only the Max flow calculation using Push and Relabel algorithm." -msgstr "" - -#: ../../build/doc/flow-family.rst:5 -msgid ":doc:`pgr_boykovKolmogorov` - Boykov and Kolmogorov with details of flow on edges." -msgstr "" - -#: ../../build/doc/flow-family.rst:7 -msgid ":doc:`pgr_edmondsKarp` - Edmonds and Karp algorithm with details of flow on edges." -msgstr "" - -#: ../../build/doc/flow-family.rst:9 -msgid ":doc:`pgr_pushRelabel` - Push and relabel algorithm with details of flow on edges." -msgstr "" - -#: ../../build/doc/flow-family.rst:11 -msgid "Applications" -msgstr "" - -#: ../../build/doc/flow-family.rst:13 -msgid ":doc:`pgr_edgeDisjointPaths` - Calculates edge disjoint paths between two groups of vertices." -msgstr "" - -#: ../../build/doc/flow-family.rst:15 -msgid ":doc:`pgr_maxCardinalityMatch` - Calculates a maximum cardinality matching in a graph." -msgstr "" - -#: ../../build/doc/routingFunctions.rst:53 -#: ../../build/doc/spanningTree-family.rst:3 -msgid ":doc:`kruskal-family`" -msgstr "" - -#: ../../build/doc/kruskal-family.rst:3 -msgid ":doc:`pgr_kruskal`" -msgstr "" - -#: ../../build/doc/kruskal-family.rst:4 -#: ../../build/doc/BFS-category.rst:3 -msgid ":doc:`pgr_kruskalBFS`" -msgstr "" - -#: ../../build/doc/kruskal-family.rst:5 -msgid ":doc:`pgr_kruskalDD`" -msgstr "" - -#: ../../build/doc/kruskal-family.rst:6 -#: ../../build/doc/DFS-category.rst:3 -msgid ":doc:`pgr_kruskalDFS`" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:59 -#: ../../build/doc/spanningTree-family.rst:4 -msgid ":doc:`prim-family`" -msgstr "" - -#: ../../build/doc/prim-family.rst:3 -msgid ":doc:`pgr_prim`" -msgstr "" - -#: ../../build/doc/prim-family.rst:4 -#: ../../build/doc/BFS-category.rst:4 -msgid ":doc:`pgr_primBFS`" -msgstr "" - -#: ../../build/doc/prim-family.rst:5 -msgid ":doc:`pgr_primDD`" -msgstr "" - -#: ../../build/doc/prim-family.rst:6 -#: ../../build/doc/DFS-category.rst:4 -msgid ":doc:`pgr_primDFS`" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:65 -msgid ":doc:`reference`" -msgstr "" - -#: ../../build/doc/reference.rst:3 -msgid ":doc:`pgr_version`" -msgstr "" - -#: ../../build/doc/reference.rst:4 -msgid ":doc:`pgr_full_version`" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:71 -msgid ":doc:`topology-functions`" -msgstr "" - -#: ../../build/doc/topology-functions.rst:3 -msgid "The following functions modify the database directly therefore the user must have special permissions given by the administrators to use them." -msgstr "" - -#: ../../build/doc/topology-functions.rst:6 -msgid ":doc:`pgr_createTopology` - create a topology based on the geometry." -msgstr "" - -#: ../../build/doc/topology-functions.rst:7 -msgid ":doc:`pgr_createVerticesTable` - reconstruct the vertices table based on the source and target information." -msgstr "" - -#: ../../build/doc/topology-functions.rst:9 -msgid ":doc:`pgr_analyzeGraph` - to analyze the edges and vertices of the edge table." -msgstr "" - -#: ../../build/doc/topology-functions.rst:11 -msgid ":doc:`pgr_analyzeOneWay` - to analyze directionality of the edges." -msgstr "" - -#: ../../build/doc/topology-functions.rst:12 -msgid ":doc:`pgr_nodeNetwork` -to create nodes to a not noded edge table." -msgstr "" - -#: ../../build/doc/routingFunctions.rst:77 -msgid ":doc:`TSP-family`" -msgstr "" - -#: ../../build/doc/TSP-family.rst:3 -msgid ":doc:`pgr_TSP` - When input is given as matrix cell information." -msgstr "" - -#: ../../build/doc/TSP-family.rst:4 -msgid ":doc:`pgr_TSPeuclidean` - When input are coordinates." -msgstr "" - -#: ../../build/doc/routingFunctions.rst:83 -msgid ":doc:`pgr_trsp` - Turn Restriction Shortest Path (TRSP)" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:87 -msgid "Functions by categories" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:89 -msgid ":doc:`cost-category`" -msgstr "" - -#: ../../build/doc/cost-category.rst:3 -msgid ":doc:`pgr_aStarCost`" -msgstr "" - -#: ../../build/doc/cost-category.rst:4 -msgid ":doc:`pgr_bdAstarCost`" -msgstr "" - -#: ../../build/doc/cost-category.rst:5 -msgid ":doc:`pgr_dijkstraCost`" -msgstr "" - -#: ../../build/doc/cost-category.rst:6 -msgid ":doc:`pgr_bdDijkstraCost`" -msgstr "" - -#: ../../build/doc/cost-category.rst:7 -msgid ":doc:`pgr_dijkstraNearCost`" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:95 -msgid ":doc:`costMatrix-category`" -msgstr "" - -#: ../../build/doc/costMatrix-category.rst:3 -msgid ":doc:`pgr_aStarCostMatrix`" -msgstr "" - -#: ../../build/doc/costMatrix-category.rst:4 -msgid ":doc:`pgr_bdAstarCostMatrix`" -msgstr "" - -#: ../../build/doc/costMatrix-category.rst:5 -#: ../../build/doc/costMatrix-category.rst:7 -msgid ":doc:`pgr_bdDijkstraCostMatrix`" -msgstr "" - -#: ../../build/doc/costMatrix-category.rst:6 -msgid ":doc:`pgr_dijkstraCostMatrix`" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:102 -msgid ":doc:`drivingDistance-category`" -msgstr "" - -#: ../../build/doc/drivingDistance-category.rst:3 -msgid ":doc:`pgr_drivingDistance` - Driving Distance based on Dijkstra's algorithm" -msgstr "" - -#: ../../build/doc/drivingDistance-category.rst:4 -msgid ":doc:`pgr_primDD` - Driving Distance based on Prim's algorithm" -msgstr "" - -#: ../../build/doc/drivingDistance-category.rst:5 -msgid ":doc:`pgr_kruskalDD` - Driving Distance based on Kruskal's algorithm" -msgstr "" - -#: ../../build/doc/drivingDistance-category.rst:6 -msgid "Post pocessing" -msgstr "" - -#: ../../build/doc/drivingDistance-category.rst:8 -msgid ":doc:`pgr_alphaShape` - Alpha shape computation" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:108 -msgid ":doc:`KSP-category`" -msgstr "" - -#: ../../build/doc/KSP-category.rst:3 -msgid ":doc:`pgr_KSP` - Yen's algorithm based on pgr_dijkstra" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:114 -msgid ":doc:`spanningTree-family`" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:120 -msgid ":doc:`BFS-category`" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:126 -msgid ":doc:`DFS-category`" -msgstr "" - -#: ../../build/doc/index.rst:91 -msgid "Available Functions but not official pgRouting functions" -msgstr "" - -#: ../../build/doc/index.rst:93 -msgid ":doc:`proposed`" -msgstr "" - -#: ../../build/doc/index.rst:94 -msgid ":doc:`experimental`" -msgstr "" - -#: ../../build/doc/index.rst:105 -msgid ":doc:`release_notes`" -msgstr "" - -#: ../../build/doc/index.rst:119 -msgid "Indices and tables" -msgstr "" - -#: ../../build/doc/index.rst:120 -msgid ":ref:`genindex`" -msgstr "" - -#: ../../build/doc/index.rst:121 -msgid ":ref:`search`" -msgstr "" diff --git a/locale/de/LC_MESSAGES/pgrouting_doc_strings.po b/locale/de/LC_MESSAGES/pgrouting_doc_strings.po index 07fc7bba47..2ced87009e 100644 --- a/locale/de/LC_MESSAGES/pgrouting_doc_strings.po +++ b/locale/de/LC_MESSAGES/pgrouting_doc_strings.po @@ -1,12 +1,12 @@ # SOME DESCRIPTIVE TITLE. -# Copyright (C) pgRouting Contributors - Version v3.7.0 +# Copyright (C) pgRouting Contributors - Version v3.8 # This file is distributed under the same license as the pgRouting package. # Regina Obe , 2023. msgid "" msgstr "" -"Project-Id-Version: pgRouting v3.6.0-dev\n" +"Project-Id-Version: pgRouting v3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-17 00:50+0000\n" +"POT-Creation-Date: 2025-03-24 14:17+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -291,9 +291,6 @@ msgstr "" msgid ":doc:`pgr_primDFS`" msgstr "" -msgid "Proposed" -msgstr "" - msgid "Proposed functions for next mayor release." msgstr "" @@ -361,9 +358,6 @@ msgid "" "functionality to the new signatures or replacement functions." msgstr "" -msgid "Experimental" -msgstr "" - msgid "Possible server crash" msgstr "" @@ -406,7 +400,7 @@ msgstr "" msgid "Documentation examples might need to be automatically generated." msgstr "" -msgid "Might need a lot of feedback from the comunity." +msgid "Might need a lot of feedback from the community." msgstr "" msgid "Might depend on a proposed function of pgRouting" @@ -652,8 +646,8 @@ msgid "References" msgstr "" msgid "" -"`Boost's metric appro's metric approximation `__" +"`Boost: metric TSP approx `__" msgstr "" msgid "`University of Waterloo TSP `__" @@ -664,7 +658,7 @@ msgid "" "Traveling_salesman_problem>`__" msgstr "" -msgid "Vehicle Routing Functions - Category (Experimental)" +msgid "Vehicle Routing Functions - Category" msgstr "" msgid "Pickup and delivery problem" @@ -1613,7 +1607,7 @@ msgstr "" msgid "https://en.wikipedia.org/wiki/Vehicle_routing_problem" msgstr "" -msgid "The queries use the :doc:`sampledata` network." +msgid ":doc:`sampledata`" msgstr "" msgid "A* - Family of functions" @@ -1775,7 +1769,8 @@ msgstr "" msgid ":doc:`bdAstar-family`" msgstr "" -msgid "https://www.boost.org/libs/graph/doc/astar_search.html" +msgid "" +"`Boost: A* search `__" msgstr "" msgid "https://en.wikipedia.org/wiki/A*_search_algorithm" @@ -2579,15 +2574,12 @@ msgid "" "ending vertex:" msgstr "" -msgid "It is expected to terminate faster than pgr_astar" +msgid "It is expected to terminate faster than pgr_aStar" msgstr "" msgid ":doc:`aStar-family`" msgstr "" -msgid "Previous versions of this page" -msgstr "" - msgid "Bidirectional Dijkstra - Family of functions" msgstr "" @@ -2729,27 +2721,7 @@ msgid "Identifier of the color of the edge." msgstr "" msgid "" -"`Boost: Sequential Vertex Coloring algorithm documentation `__" -msgstr "" - -msgid "" -"`Wikipedia: Graph coloring `__" -msgstr "" - -msgid "" -"`Boost: is_bipartite `__" -msgstr "" - -msgid "" -"`Wikipedia: bipartite graph `__" -msgstr "" - -msgid "" -"`Boost: Edge Coloring Algorithm documentation `__" +"`Boost: `__" msgstr "" msgid "Components - Family of functions" @@ -2785,6 +2757,9 @@ msgstr "" msgid ":doc:`pgr_contraction`" msgstr "" +msgid ":doc:`pgr_contractionDeadEnd`" +msgstr "" + msgid "" "In large graphs, like the road graphs, or electric networks, graph " "contraction can be used to speed up some graph algorithms. Contraction " @@ -2815,7056 +2790,7038 @@ msgid "" "times they are to be executed." msgstr "" -msgid "Contraction of the leaf nodes of the graph." +msgid "" +"https://www.cs.cmu.edu/afs/cs/academic/class/15210-f12/www/lectures/" +"lecture16.pdf" msgstr "" -msgid "Dead end" +msgid "https://algo2.iti.kit.edu/documents/routeplanning/geisberger_dipl.pdf" msgstr "" -msgid "A node is considered a **dead end** node when" +msgid "Cost - Category" msgstr "" -msgid "On undirected graphs:" +msgid ":doc:`pgr_aStarCost`" msgstr "" -msgid "The number of adjacent vertices is 1." +msgid ":doc:`pgr_bdAstarCost`" msgstr "" -msgid "On directed graphs:" +msgid ":doc:`pgr_dijkstraCost`" msgstr "" -msgid "There are no outgoing edges and has at least one incoming edge." +msgid ":doc:`pgr_bdDijkstraCost`" msgstr "" -msgid "There are no incoming edges and has at least one outgoing edge." +msgid ":doc:`pgr_dijkstraNearCost`" msgstr "" -msgid "" -"When the conditions are true then the `Operation: Dead End Contraction`_ can " -"be done." +msgid ":doc:`pgr_withPointsCost`" msgstr "" -msgid "Dead end vertex on undirected graph" +msgid "Each function works as part of the family it belongs to." msgstr "" -msgid "The green nodes are `dead end`_ nodes" +msgid "" +"Returns the sum of the costs of the shortest path of each pair combination " +"of nodes requested." msgstr "" -msgid "The blue nodes have an unlimited number of edges." +msgid "" +"Let be the case the values returned are stored in a table, so the unique " +"index would be the pair: ``(start_vid, end_vid)``." msgstr "" -msgid "Node" +msgid "" +"Depending on the function and its parameters, the results can be symmetric." msgstr "" -msgid "Adjecent nodes" +msgid "" +"The **aggregate cost** of :math:`(u, v)` is the same as for :math:`(v, u)`." msgstr "" -msgid "Number of adjacent nodes" +msgid "" +"Any duplicated value in the start or end vertex identifiers are ignored." msgstr "" -msgid ":math:`a`" +msgid "The returned values are ordered:" msgstr "" -msgid ":math:`\\{u\\}`" +msgid "``start_vid`` ascending" msgstr "" -msgid ":math:`b`" +msgid "``end_vid`` ascending" msgstr "" -msgid ":math:`\\{v\\}`" +msgid "Cost Matrix - Category" msgstr "" -msgid "Dead end vertex on directed graph" +msgid ":doc:`pgr_aStarCostMatrix`" msgstr "" -msgid "" -"The blue nodes have an unlimited number of incoming and/or outgoing edges." +msgid ":doc:`pgr_dijkstraCostMatrix`" msgstr "" -msgid "Number of incoming edges" +msgid ":doc:`pgr_bdAstarCostMatrix`" msgstr "" -msgid "Number of outgoing edges" +msgid ":doc:`pgr_bdDijkstraCostMatrix`" msgstr "" -msgid ":math:`c`" +msgid ":doc:`pgr_withPointsCostMatrix`" msgstr "" -msgid ":math:`\\{v, w\\}`" +msgid "" +":doc:`TSP-family` needs as input a symmetric cost matrix and no edge `(u, " +"v)` must value :math:`\\infty`." msgstr "" -msgid "2" +msgid "" +"This collection of functions will return a cost matrix in form of a table." msgstr "" -msgid ":math:`d`" +msgid "Can be used as input to :doc:`pgr_TSP`." msgstr "" -msgid ":math:`\\{x\\}`" +msgid "" +"Use directly when the resulting matrix is symmetric and there is no :math:" +"`\\infty` value." msgstr "" -msgid ":math:`e`" +msgid "It will be the users responsibility to make the matrix symmetric." msgstr "" -msgid ":math:`\\{x, y\\}`" +msgid "By using geometric or harmonic average of the non symmetric values." msgstr "" -msgid "" -"From above, nodes :math:`\\{a, b, d\\}` are dead ends because the number of " -"adjacent vertices is 1. No further checks are needed for those nodes." +msgid "By using max or min the non symmetric values." msgstr "" msgid "" -"On the following table, nodes :math:`\\{c, e\\}` because the even that the " -"number of adjacent vertices is not 1 for" -msgstr "" - -msgid "Operation: Dead End Contraction" +"By setting the upper triangle to be the mirror image of the lower triangle." msgstr "" msgid "" -"The dead end contraction will stop until there are no more dead end nodes. " -"For example from the following graph where :math:`w` is the `dead end`_ node:" +"By setting the lower triangle to be the mirror image of the upper triangle." msgstr "" -msgid "" -"After contracting :math:`w`, node :math:`v` is now a `dead end`_ node and is " -"contracted:" +msgid "It is also the users responsibility to fix an :math:`\\infty` value." msgstr "" msgid "" -"After contracting :math:`v`, stop. Node :math:`u` has the information of " -"nodes that were contrcted." +"Returns the sum of the costs of the shortest path for pair combination of " +"nodes in the graph." msgstr "" -msgid "Node :math:`u` has the information of nodes that were contracted." +msgid "" +"When the starting vertex and ending vertex are the same, there is no path." msgstr "" -msgid "In the algorithm, linear contraction is represented by 2." +msgid "The aggregate cost in the non included values `(v, v)` is `0`." msgstr "" -msgid "Linear" +msgid "" +"When the starting vertex and ending vertex are the different and there is no " +"path." msgstr "" msgid "" -"In case of an undirected graph, a node is considered a `linear` node when" +"The aggregate cost in the non included values `(u, v)` is :math:`\\infty`." msgstr "" -msgid "The number of adjacent vertices is 2." +msgid "Let be the case the values returned are stored in a table:" msgstr "" -msgid "In case of a directed graph, a node is considered a `linear` node when" +msgid "The unique index would be the pair: ``(start_vid, end_vid)``." msgstr "" -msgid "Linearity is symmetrical" +msgid "The aggregate cost of `(u, v)` is the same as for `(v, u)`." msgstr "" -msgid "Linear vertex on undirected graph" +msgid "Any duplicated value in the **start vids** are ignored." msgstr "" -msgid "The green nodes are `linear`_ nodes" +msgid "Used in:" msgstr "" -msgid "The blue nodes have an unlimited number of incoming and outgoing edges." +msgid "`Edges SQL`_ as described below" msgstr "" -msgid "Undirected" +msgid "**start vids**" msgstr "" -msgid ":math:`v`" +msgid "``ARRAY[BIGINT]``" msgstr "" -msgid ":math:`\\{u, w\\}`" +msgid "Array of identifiers of starting vertices." msgstr "" -msgid "Linear vertex on directed graph" +msgid "`Points SQL`_" msgstr "" -msgid "The white node is not linear because the linearity is not symetrical." +msgid "`Points SQL`_ as described below" msgstr "" -msgid "It is possible to go :math:`y \\rightarrow c \\rightarrow z`" +msgid "Points SQL" msgstr "" -msgid "It's not possible to go :math:`z \\rightarrow c \\rightarrow y`" +msgid "``pid``" msgstr "" -msgid "Is symmetrical?" +msgid "**value**" msgstr "" -msgid ":math:`\\{u, v\\}`" +msgid "Identifier of the point." msgstr "" -msgid "yes" +msgid "" +"Use with positive value, as internally will be converted to negative value" msgstr "" -msgid ":math:`\\{w, x\\}`" +msgid "If column is present, it can not be NULL." msgstr "" -msgid ":math:`\\{y, z\\}`" +msgid "" +"If column is not present, a sequential negative **value** will be given " +"automatically." msgstr "" -msgid "no" +msgid "Identifier of the \"closest\" edge to the point." msgstr "" -msgid "Operation: Linear Contraction" +msgid "``fraction``" msgstr "" msgid "" -"The linear contraction will stop when there are no more linear nodes. For " -"example from the following graph where :math:`v` and :math:`w` are `linear`_ " -"nodes:" +"Value in <0,1> that indicates the relative postition from the first end " +"point of the edge." msgstr "" -msgid "Contracting :math:`w`," +msgid "``side``" msgstr "" -msgid "The vertex :math:`w` is removed from the graph" +msgid "``CHAR``" msgstr "" -msgid "" -"The edges :math:`v \\rightarrow w` and :math:`w \\rightarrow z` are removed " -"from the graph." +msgid "``b``" msgstr "" -msgid "" -"A new edge :math:`v \\rightarrow z` is inserted represented with red color." +msgid "Value in [``b``, ``r``, ``l``, ``NULL``] indicating if the point is:" msgstr "" -msgid "Contracting :math:`v`:" +msgid "In the right ``r``," msgstr "" -msgid "The vertex :math:`v` is removed from the graph" +msgid "In the left ``l``," msgstr "" -msgid "" -"The edges :math:`u \\rightarrow v` and :math:`v \\rightarrow z` are removed " -"from the graph." +msgid "In both sides ``b``, ``NULL``" msgstr "" -msgid "" -"A new edge :math:`u \\rightarrow z` is inserted represented with red color." +msgid ":doc:`TSP-family`" msgstr "" -msgid "" -"Edge :math:`u \\rightarrow z` has the information of nodes that were " -"contracted." +msgid "Dijkstra - Family of functions" msgstr "" -msgid "The cycle" +msgid ":doc:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths." msgstr "" -msgid "" -"Contracting a graph, can be done with more than one operation. The order of " -"the operations affect the resulting contracted graph, after applying one " -"operation, the set of vertices that can be contracted by another operation " -"changes." +msgid ":doc:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths." msgstr "" msgid "" -"This implementation, cycles ``max_cycles`` times through " -"``operations_order`` ." -msgstr "" - -msgid "Contracting sample data" +":doc:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix." msgstr "" msgid "" -"In this section, building and using a contracted graph will be shown by " -"example." -msgstr "" - -msgid "The :doc:`sampledata` for an undirected graph is used" -msgstr "" - -msgid "a dead end operation first followed by a linear operation." -msgstr "" - -msgid "Construction of the graph in the database" -msgstr "" - -msgid "Original Data" +":doc:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament " +"information." msgstr "" msgid "" -"The following query shows the original data involved in the contraction " -"operation." +":doc:`pgr_KSP` - Use Yen algorithm with pgr_dijkstra to get the K shortest " +"paths." msgstr "" -msgid "The original graph:" +msgid ":doc:`pgr_dijkstraVia` - Get a route of a sequence of vertices." msgstr "" -msgid "Contraction results" +msgid ":doc:`pgr_dijkstraNear` - Get the route to the nearest vertex." msgstr "" -msgid "" -"The results do not represent the contracted graph. They represent the " -"changes done to the graph after applying the contraction algorithm." +msgid ":doc:`pgr_dijkstraNearCost` - Get the cost to the nearest vertex." msgstr "" msgid "" -"Observe that vertices, for example, :math:`6` do not appear in the results " -"because it was not affected by the contraction algorithm." +"Dijkstra's algorithm, conceived by Dutch computer scientist Edsger Dijkstra " +"in 1956. It is a graph search algorithm that solves the shortest path " +"problem for a graph with non-negative edge path costs, producing a shortest " +"path from a starting vertex to an ending vertex. This implementation can be " +"used with a directed graph and an undirected graph." msgstr "" -msgid "After doing the dead end contraction operation:" +msgid "Running time: :math:`O(| start\\ vids | * (V \\log V + E))`" msgstr "" -msgid "After doing the linear contraction operation to the graph above:" +msgid "The Dijkstra family functions are based on the Dijkstra algorithm." msgstr "" -msgid "The process to create the contraction graph on the database:" +msgid "`Combinations SQL`_" msgstr "" -msgid "Add additional columns" +msgid "`Combinations SQL`_ as described below" msgstr "" -msgid "" -"Adding extra columns to the ``edge_table`` and ``edge_table_vertices_pgr`` " -"tables, where:" +msgid "**start vid**" msgstr "" -msgid "``contracted_vertices``" +msgid "Identifier of the starting vertex of the path." msgstr "" -msgid "The vertices set belonging to the vertex/edge" +msgid "**end vid**" msgstr "" -msgid "``is_contracted``" +msgid "Identifier of the ending vertex of the path." msgstr "" -msgid "On the vertex table" +msgid "**end vids**" msgstr "" -msgid "" -"when ``true`` the vertex is contracted, its not part of the contracted graph." +msgid "Array of identifiers of ending vertices." msgstr "" -msgid "" -"when ``false`` the vertex is not contracted, its part of the contracted " -"graph." +msgid "Combinations SQL" msgstr "" -msgid "``is_new``" +msgid "Identifier of the departure vertex." msgstr "" -msgid "On the edge table" +msgid "Identifier of the arrival vertex." msgstr "" -msgid "" -"when ``true`` the edge was generated by the contraction algorithm. its part " -"of the contracted graph." +msgid "The problem definition (Advanced documentation)" msgstr "" -msgid "" -"when ``false`` the edge is an original edge, might be or not part of the " -"contracted graph." +msgid "Given the following query:" msgstr "" -msgid "Store contraction information" +msgid "pgr_dijkstra(:math:`sql, start_{vid}, end_{vid}, directed`)" msgstr "" -msgid "Store the `contraction results`_ in a table" +msgid "" +"where :math:`sql = \\{(id_i, source_i, target_i, cost_i, reverse\\_cost_i)\\}" +"`" msgstr "" -msgid "The vertex table update" +msgid "and" msgstr "" -msgid "" -"Use ``is_contracted`` column to indicate the vertices that are contracted." +msgid ":math:`source = \\bigcup source_i`," msgstr "" -msgid "" -"Fill ``contracted_vertices`` with the information from the results tha " -"belong to the vertices." +msgid ":math:`target = \\bigcup target_i`," msgstr "" -msgid "The modified vertices table:" +msgid "The graphs are defined as follows:" msgstr "" -msgid "The edge table update" +msgid "Directed graph" msgstr "" -msgid "Insert the new edges generated by pgr_contraction." +msgid "The weighted directed graph, :math:`G_d(V,E)`, is defined by:" msgstr "" -msgid "The modified ``edge_table``." +msgid "the set of vertices :math:`V`" msgstr "" -msgid "The contracted graph" +msgid ":math:`V = source \\cup target \\cup {start_{vid}} \\cup {end_{vid}}`" msgstr "" -msgid "Vertices that belong to the contracted graph." +msgid "the set of edges :math:`E`" msgstr "" -msgid "Edges that belong to the contracted graph." +msgid "" +":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) " +"\\text{ when } cost >=0 \\} & \\quad \\text{if } reverse\\_cost = " +"\\varnothing \\\\ \\text{ } \\text{ } & \\quad \\text{ } \\\\ \\text{ } " +"\\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & \\quad " +"\\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) " +"\\text{ when } reverse\\_cost_i>=0 \\} & \\quad \\text{if } reverse\\_cost " +"\\neq \\varnothing \\\\ \\end{cases}`" msgstr "" -msgid "Contracted graph" +msgid "Undirected graph" msgstr "" -msgid "Using the contracted graph" +msgid "The weighted undirected graph, :math:`G_u(V,E)`, is defined by:" msgstr "" -msgid "Using the contracted graph with ``pgr_dijkstra``" +msgid ":math:`V = source \\cup target \\cup {start_v{vid}} \\cup {end_{vid}}`" msgstr "" msgid "" -"There are three cases when calculating the shortest path between a given " -"source and target in a contracted graph:" -msgstr "" - -msgid "Case 1: Both source and target belong to the contracted graph." +":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) " +"\\text{ when } cost >=0 \\} & \\quad \\text{ } \\\\ \\cup \\{(target_i, " +"source_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ if } " +"reverse\\_cost = \\varnothing \\\\ \\text{ } \\text{ } & \\text{ } \\\\ " +"\\text{ } \\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & " +"\\text{ } \\\\ \\cup \\{(target_i, source_i, cost_i) \\text{ when } cost >=0 " +"\\} & \\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) " +"\\text{ when } reverse\\_cost_i >=0)\\} & \\text{ } \\\\ \\cup \\{(source_i, " +"target_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i >=0)\\} & \\quad " +"\\text{ if } reverse\\_cost \\neq \\varnothing \\\\ \\end{cases}`" msgstr "" -msgid "Case 2: Source and/or target belong to an edge subgraph." +msgid "The problem" msgstr "" -msgid "Case 3: Source and/or target belong to a vertex." +msgid "Given:" msgstr "" -msgid "" -"Using the `Edges that belong to the contracted graph.`_ on lines 11 to 20." +msgid ":math:`start_{vid} \\in V` a starting vertex" msgstr "" -msgid "Case 1" +msgid ":math:`end_{vid} \\in V` an ending vertex" msgstr "" msgid "" -"When both source and target belong to the contracted graph, a path is found." +":math:`G(V,E) = \\begin{cases} G_d(V,E) & \\quad \\text{ if6 } directed = " +"true \\\\ G_u(V,E) & \\quad \\text{ if5 } directed = false \\\\ \\end{cases}`" msgstr "" -msgid "Case 2" +msgid "Then:" msgstr "" msgid "" -"When source and/or target belong to an edge subgraph then a path is not " -"found." +":math:`\\boldsymbol{\\pi} = \\{(path\\_seq_i, node_i, edge_i, cost_i, " +"agg\\_cost_i)\\}`" msgstr "" -msgid "" -"In this case, the contracted graph do not have an edge connecting with node :" -"math:`4`." +msgid "where:" msgstr "" -msgid "Case 3" +msgid ":math:`path\\_seq_i = i`" msgstr "" -msgid "When source and/or target belong to a vertex then a path is not found." +msgid ":math:`path\\_seq_{| \\pi |} = | \\pi |`" msgstr "" -msgid "" -"In this case, the contracted graph do not have an edge connecting with node :" -"math:`7` and of node :math:`4` of the second case." +msgid ":math:`node_i \\in V`" msgstr "" -msgid "Refining the above function to include nodes that belong to an edge." +msgid ":math:`node_1 = start_{vid}`" msgstr "" -msgid "The vertices that need to be expanded are calculated on lines 11 to 17." +msgid ":math:`node_{| \\pi |} = end_{vid}`" msgstr "" msgid "" -"Adding to the contracted graph that additional section on lines 26 to 28." +":math:`\\forall i \\neq | \\pi |, \\quad (node_i, node_{i+1}, cost_i) \\in E`" msgstr "" msgid "" -"When source and/or target belong to an edge subgraph, now, a path is found." +":math:`edge_i = \\begin{cases} id_{(node_i, node_{i+1},cost_i)} &\\quad " +"\\text{when } i \\neq | \\pi | \\\\ -1 &\\quad \\text{when } i = | \\pi | \\" +"\\ \\end{cases}`" msgstr "" -msgid "The routing graph now has an edge connecting with node :math:`4`." +msgid ":math:`cost_i = cost_{(node_i, node_{i+1})}`" msgstr "" msgid "" -"In this case, the contracted graph do not have an edge connecting with node :" -"math:`7`." +":math:`agg\\_cost_i = \\begin{cases} 0 &\\quad \\text{when } i = 1 \\" +"\\ \\displaystyle\\sum_{k=1}^{i} cost_{(node_{k-1}, node_k)} &\\quad " +"\\text{when } i \\neq 1 \\\\ \\end{cases}`" msgstr "" -msgid "The vertices that need to be expanded are calculated on lines 19 to 24." +msgid "" +"In other words: The algorithm returns a the shortest path between :math:" +"`start_{vid}` and :math:`end_{vid}`, if it exists, in terms of a sequence of " +"nodes and of edges," msgstr "" msgid "" -"Adding to the contracted graph that additional section on lines 38 to 40." +":math:`path\\_seq` indicates the relative position in the path of the :math:" +"`node` or :math:`edge`." msgstr "" -msgid "" -"The code change do not affect this case so when source and/or target belong " -"to an edge subgraph, a path is still found." +msgid ":math:`cost` is the cost of the edge to be used to go to the next node." msgstr "" -msgid "When source and/or target belong to a vertex, now, a path is found." +msgid "" +":math:`agg\\_cost` is the cost from the :math:`start_{vid}` up to the node." msgstr "" -msgid "Now, the routing graph has an edge connecting with node :math:`7`." +msgid "If there is no path, the resulting set is empty." msgstr "" -msgid ":doc:`sampledata`" +msgid "Driving Distance - Category" msgstr "" msgid "" -"https://www.cs.cmu.edu/afs/cs/academic/class/15210-f12/www/lectures/" -"lecture16.pdf" +":doc:`pgr_drivingDistance` - Driving Distance based on Dijkstra's algorithm" msgstr "" -msgid "https://algo2.iti.kit.edu/documents/routeplanning/geisberger_dipl.pdf" +msgid ":doc:`pgr_primDD` - Driving Distance based on Prim's algorithm" msgstr "" -msgid "Cost - Category" +msgid ":doc:`pgr_kruskalDD` - Driving Distance based on Kruskal's algorithm" msgstr "" -msgid ":doc:`pgr_aStarCost`" +msgid "Post processing" msgstr "" -msgid ":doc:`pgr_bdAstarCost`" +msgid ":doc:`pgr_alphaShape` - Alpha shape computation" msgstr "" -msgid ":doc:`pgr_dijkstraCost`" +msgid ":doc:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints" msgstr "" -msgid ":doc:`pgr_bdDijkstraCost`" +msgid "Calculate nodes that are within a distance." msgstr "" -msgid ":doc:`pgr_dijkstraNearCost`" +msgid "" +"Extracts all the nodes that have costs less than or equal to the value " +"distance." msgstr "" -msgid ":doc:`pgr_withPointsCost`" +msgid "The edges extracted will conform to the corresponding spanning tree." msgstr "" -msgid "Each function works as part of the family it belongs to." +msgid "Edge :math:`(u, v)` will not be included when:" msgstr "" -msgid "" -"Returns the sum of the costs of the shortest path of each pair combination " -"of nodes requested." +msgid "The distance from the **root** to :math:`u` > limit distance." msgstr "" -msgid "" -"Let be the case the values returned are stored in a table, so the unique " -"index would be the pair: ``(start_vid, end_vid)``." +msgid "The distance from the **root** to :math:`v` > limit distance." msgstr "" msgid "" -"Depending on the function and its parameters, the results can be symmetric." +"No new nodes are created on the graph, so when is within the limit and is " +"not within the limit, the edge is not included." msgstr "" -msgid "" -"The **aggregate cost** of :math:`(u, v)` is the same as for :math:`(v, u)`." +msgid "Edges SQL as described below." msgstr "" -msgid "" -"Any duplicated value in the start or end vertex identifiers are ignored." +msgid "**Root vid**" msgstr "" -msgid "The returned values are ordered:" +msgid "**Root vids**" msgstr "" -msgid "``start_vid`` ascending" +msgid "``ARRAY[ANY-INTEGER]``" msgstr "" -msgid "``end_vid`` ascending" +msgid "**distance**" msgstr "" -msgid "Cost Matrix - Category" +msgid "Upper limit for the inclusion of a node in the result." msgstr "" -msgid ":doc:`pgr_aStarCostMatrix`" +msgid "Returns set of |result-spantree|" msgstr "" -msgid ":doc:`pgr_dijkstraCostMatrix`" +msgid ":math:`depth-1` is the depth of ``pred``" msgstr "" -msgid ":doc:`pgr_bdAstarCostMatrix`" +msgid "``pred``" msgstr "" -msgid ":doc:`pgr_bdDijkstraCostMatrix`" +msgid "Predecessor of ``node``." msgstr "" -msgid "proposed" +msgid "When ``node`` = ``start_vid`` then has the value ``node``." msgstr "" -msgid ":doc:`pgr_withPointsCostMatrix`" +msgid "Identifier of the ``edge`` used to arrive from ``pred`` to ``node``." msgstr "" -msgid "" -":doc:`TSP-family` needs as input a symmetric cost matrix and no edge `(u, " -"v)` must value :math:`\\infty`." +msgid "Experimental Functions" msgstr "" -msgid "" -"This collection of functions will return a cost matrix in form of a table." +msgid "Families" msgstr "" -msgid "Can be used as input to :doc:`pgr_TSP`." +msgid ":doc:`flow-family`" msgstr "" -msgid "" -"Use directly when the resulting matrix is symmetric and there is no :math:" -"`\\infty` value." +msgid ":doc:`pgr_maxFlowMinCost` - Details of flow and cost on edges." msgstr "" -msgid "It will be the users responsibility to make the matrix symmetric." +msgid ":doc:`pgr_maxFlowMinCost_Cost` - Only the Min Cost calculation." msgstr "" -msgid "By using geometric or harmonic average of the non symmetric values." +msgid ":doc:`chinesePostmanProblem-family`" msgstr "" -msgid "By using max or min the non symmetric values." +msgid ":doc:`coloring-family`" msgstr "" -msgid "" -"By setting the upper triangle to be the mirror image of the lower triangle." +msgid ":doc:`transformation-family`" msgstr "" msgid "" -"By setting the lower triangle to be the mirror image of the upper triangle." +":doc:`pgr_lineGraphFull` - Transformation algorithm for generating a Line " +"Graph out of each vertex in the input graph." msgstr "" -msgid "It is also the users responsibility to fix an :math:`\\infty` value." +msgid ":doc:`traversal-family`" msgstr "" msgid "" -"Returns the sum of the costs of the shortest path for pair combination of " -"nodes in the graph." +":doc:`pgr_breadthFirstSearch` - Breath first search traversal of the graph." msgstr "" msgid "" -"When the starting vertex and ending vertex are the same, there is no path." +":doc:`pgr_binaryBreadthFirstSearch` - Breath first search traversal of the " +"graph." msgstr "" -msgid "The aggregate cost in the non included values `(v, v)` is `0`." +msgid ":doc:`components-family`" +msgstr "" + +msgid ":doc:`ordering-family`" msgstr "" msgid "" -"When the starting vertex and ending vertex are the different and there is no " -"path." +":doc:`pgr_cuthillMckeeOrdering` - Return reverse Cuthill-McKee ordering of " +"an undirected graph." msgstr "" msgid "" -"The aggregate cost in the non included values `(u, v)` is :math:`\\infty`." +":doc:`pgr_topologicalSort` - Linear ordering of the vertices for directed " +"acyclic graph." msgstr "" -msgid "Let be the case the values returned are stored in a table:" +msgid ":doc:`metrics-family`" msgstr "" -msgid "The unique index would be the pair: ``(start_vid, end_vid)``." +msgid "" +":doc:`pgr_betweennessCentrality` - Calculates relative betweenness " +"centrality using Brandes Algorithm" msgstr "" -msgid "The aggregate cost of `(u, v)` is the same as for `(v, u)`." +msgid ":doc:`TRSP-family`" msgstr "" -msgid "Any duplicated value in the **start vids** are ignored." +msgid "categories" msgstr "" -msgid "Used in:" +msgid ":doc:`VRP-category`" msgstr "" -msgid "`Edges SQL`_ as described below" +msgid "Shortest Path Category" msgstr "" -msgid "**start vids**" +msgid ":doc:`pgr_bellmanFord`" msgstr "" -msgid "``ARRAY[BIGINT]``" +msgid ":doc:`pgr_dagShortestPath`" msgstr "" -msgid "Array of identifiers of starting vertices." +msgid ":doc:`pgr_edwardMoore`" msgstr "" -msgid "`Points SQL`_" +msgid "Planar Family" msgstr "" -msgid "`Points SQL`_ as described below" +msgid ":doc:`pgr_isPlanar`" msgstr "" -msgid "Points SQL" +msgid "Miscellaneous Algorithms" msgstr "" -msgid "``pid``" +msgid ":doc:`pgr_lengauerTarjanDominatorTree`" msgstr "" -msgid "**value**" +msgid ":doc:`pgr_stoerWagner`" msgstr "" -msgid "Identifier of the point." +msgid ":doc:`pgr_transitiveClosure`" msgstr "" -msgid "" -"Use with positive value, as internally will be converted to negative value" +msgid ":doc:`pgr_hawickCircuits`" msgstr "" -msgid "If column is present, it can not be NULL." +msgid "Flow - Family of functions" msgstr "" msgid "" -"If column is not present, a sequential negative **value** will be given " -"automatically." +":doc:`pgr_maxFlow` - Only the Max flow calculation using Push and Relabel " +"algorithm." msgstr "" -msgid "Identifier of the \"closest\" edge to the point." +msgid "" +":doc:`pgr_boykovKolmogorov` - Boykov and Kolmogorov with details of flow on " +"edges." msgstr "" -msgid "``fraction``" +msgid "" +":doc:`pgr_edmondsKarp` - Edmonds and Karp algorithm with details of flow on " +"edges." msgstr "" msgid "" -"Value in <0,1> that indicates the relative postition from the first end " -"point of the edge." +":doc:`pgr_pushRelabel` - Push and relabel algorithm with details of flow on " +"edges." msgstr "" -msgid "``side``" +msgid "Applications" msgstr "" -msgid "``CHAR``" +msgid "" +":doc:`pgr_edgeDisjointPaths` - Calculates edge disjoint paths between two " +"groups of vertices." msgstr "" -msgid "``b``" +msgid "" +":doc:`pgr_maxCardinalityMatch` - Calculates a maximum cardinality matching " +"in a graph." msgstr "" -msgid "Value in [``b``, ``r``, ``l``, ``NULL``] indicating if the point is:" +msgid "Flow Functions General Information" msgstr "" -msgid "In the right ``r``," +msgid "The graph is **directed**." msgstr "" -msgid "In the left ``l``," +msgid "Process is done only on edges with positive capacities." msgstr "" -msgid "In both sides ``b``, ``NULL``" +msgid "" +"When the maximum flow is 0 then there is no flow and **EMPTY SET** is " +"returned." msgstr "" -msgid ":doc:`TSP-family`" +msgid "There is no flow when source has the same value as target." msgstr "" -msgid "Dijkstra - Family of functions" +msgid "Any duplicated values in source or target are ignored." msgstr "" -msgid ":doc:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths." +msgid "Calculates the flow/residual capacity for each edge. In the output" msgstr "" -msgid ":doc:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths." +msgid "Edges with zero flow are omitted." msgstr "" -msgid "" -":doc:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix." +msgid "Creates" msgstr "" -msgid "" -":doc:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament " -"information." +msgid "a **super source** and edges from it to all the sources," msgstr "" -msgid "" -":doc:`pgr_KSP` - Use Yen algorithm with pgr_dijkstra to get the K shortest " -"paths." +msgid "a **super target** and edges from it to all the targetss." msgstr "" -msgid ":doc:`pgr_dijkstraVia` - Get a route of a seuence of vertices." +msgid "" +"The maximum flow through the graph is guaranteed to be the value returned " +"by :doc:`pgr_maxFlow ` when executed with the same parameters " +"and can be calculated:" msgstr "" -msgid ":doc:`pgr_dijkstraNear` - Get the route to the nearest vertex." +msgid "By aggregation of the outgoing flow from the sources" msgstr "" -msgid ":doc:`pgr_dijkstraNearCost` - Get the cost to the nearest vertex." +msgid "By aggregation of the incoming flow to the targets" msgstr "" msgid "" -"Dijkstra's algorithm, conceived by Dutch computer scientist Edsger Dijkstra " -"in 1956. It is a graph search algorithm that solves the shortest path " -"problem for a graph with non-negative edge path costs, producing a shortest " -"path from a starting vertex to an ending vertex. This implementation can be " -"used with a directed graph and an undirected graph." +":doc:`pgr_maxFlow` is the maximum Flow and that maximum is guaranteed to be " +"the same on the functions :doc:`pgr_pushRelabel`, :doc:`pgr_edmondsKarp`, :" +"doc:`pgr_boykovKolmogorov`, but the actual flow through each edge may vary." msgstr "" -msgid "Running time: :math:`O(| start\\ vids | * (V \\log V + E))`" +msgid "Capacity edges" msgstr "" -msgid "The Dijkstra family functions are based on the Dijkstra algorithm." +msgid ":doc:`pgr_pushRelabel`" msgstr "" -msgid "`Combinations SQL`_" +msgid ":doc:`pgr_edmondsKarp`" msgstr "" -msgid "`Combinations SQL`_ as described below" +msgid ":doc:`pgr_boykovKolmogorov`" msgstr "" -msgid "**start vid**" +msgid "``reverse_capacity``" msgstr "" -msgid "Identifier of the starting vertex of the path." +msgid "Capacity-Cost edges" msgstr "" -msgid "**end vid**" +msgid ":doc:`pgr_maxFlowMinCost`" msgstr "" -msgid "Identifier of the ending vertex of the path." +msgid ":doc:`pgr_maxFlowMinCost_Cost`" msgstr "" -msgid "**end vids**" +msgid "Capacity of the edge (``source``, ``target``)" msgstr "" -msgid "Array of identifiers of ending vertices." +msgid "Capacity of the edge (``target``, ``source``)" msgstr "" -msgid "Combinations SQL" +msgid "Weight of the edge (``source``, ``target``) if it exist" msgstr "" -msgid "Identifier of the departure vertex." +msgid "Weight of the edge (``target``, ``source``) if it exist" msgstr "" -msgid "Identifier of the arrival vertex." +msgid "Cost edges" msgstr "" -msgid "The problem definition (Advanced documentation)" +msgid ":doc:`pgr_edgeDisjointPaths`" msgstr "" -msgid "Given the following query:" +msgid "Used in" msgstr "" -msgid "pgr_dijkstra(:math:`sql, start_{vid}, end_{vid}, directed`)" +msgid "**seq**" msgstr "" -msgid "" -"where :math:`sql = \\{(id_i, source_i, target_i, cost_i, reverse\\_cost_i)\\}" -"`" +msgid "``INT``" msgstr "" -msgid "and" +msgid "**edge**" msgstr "" -msgid ":math:`source = \\bigcup source_i`," +msgid "Identifier of the edge in the original query (edges_sql)." msgstr "" -msgid ":math:`target = \\bigcup target_i`," +msgid "**start_vid**" msgstr "" -msgid "The graphs are defined as follows:" +msgid "**end_vid**" msgstr "" -msgid "Directed graph" +msgid "**flow**" msgstr "" -msgid "The weighted directed graph, :math:`G_d(V,E)`, is definied by:" +msgid "Flow through the edge in the direction (``start_vid``, ``end_vid``)." msgstr "" -msgid "the set of vertices :math:`V`" +msgid "**residual_capacity**" msgstr "" -msgid ":math:`V = source \\cup target \\cup {start_{vid}} \\cup {end_{vid}}`" +msgid "" +"Residual capacity of the edge in the direction (``start_vid``, ``end_vid``)." msgstr "" -msgid "the set of edges :math:`E`" +msgid "For :doc:`pgr_maxFlowMinCost`" msgstr "" -msgid "" -":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) " -"\\text{ when } cost >=0 \\} & \\quad \\text{if } reverse\\_cost = " -"\\varnothing \\\\ \\text{ } \\text{ } & \\quad \\text{ } \\\\ \\text{ } " -"\\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & \\quad " -"\\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) " -"\\text{ when } reverse\\_cost_i>=0 \\} & \\quad \\text{if } reverse\\_cost " -"\\neq \\varnothing \\\\ \\end{cases}`" +msgid "**source**" msgstr "" -msgid "Undirected graph" +msgid "**target**" msgstr "" -msgid "The weighted undirected graph, :math:`G_u(V,E)`, is definied by:" +msgid "Flow through the edge in the direction (source, target)." msgstr "" -msgid ":math:`V = source \\cup target \\cup {start_v{vid}} \\cup {end_{vid}}`" +msgid "Residual capacity of the edge in the direction (source, target)." msgstr "" -msgid "" -":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) " -"\\text{ when } cost >=0 \\} & \\quad \\text{ } \\\\ \\cup \\{(target_i, " -"source_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ if } " -"reverse\\_cost = \\varnothing \\\\ \\text{ } \\text{ } & \\text{ } \\\\ " -"\\text{ } \\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & " -"\\text{ } \\\\ \\cup \\{(target_i, source_i, cost_i) \\text{ when } cost >=0 " -"\\} & \\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) " -"\\text{ when } reverse\\_cost_i >=0)\\} & \\text{ } \\\\ \\cup \\{(source_i, " -"target_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i >=0)\\} & \\quad " -"\\text{ if } reverse\\_cost \\neq \\varnothing \\\\ \\end{cases}`" +msgid "**cost**" msgstr "" -msgid "The problem" +msgid "" +"The cost of sending this flow through the edge in the direction (source, " +"target)." msgstr "" -msgid "Given:" +msgid "**agg_cost**" msgstr "" -msgid ":math:`start_{vid} \\in V` a starting vertex" +msgid "The aggregate cost." msgstr "" -msgid ":math:`end_{vid} \\in V` an ending vertex" +msgid "Advanced Documentation" msgstr "" msgid "" -":math:`G(V,E) = \\begin{cases} G_d(V,E) & \\quad \\text{ if6 } directed = " -"true \\\\ G_u(V,E) & \\quad \\text{ if5 } directed = false \\\\ \\end{cases}`" +"A flow network is a directed graph where each edge has a capacity and a " +"flow. The flow through an edge must not exceed the capacity of the edge. " +"Additionally, the incoming and outgoing flow of a node must be equal except " +"for source which only has outgoing flow, and the destination(sink) which " +"only has incoming flow." msgstr "" -msgid "Then:" +msgid "" +"Maximum flow algorithms calculate the maximum flow through the graph and the " +"flow of each edge." msgstr "" msgid "" -":math:`\\boldsymbol{\\pi} = \\{(path\\_seq_i, node_i, edge_i, cost_i, " -"agg\\_cost_i)\\}`" +"The maximum flow through the graph is guaranteed to be the same with all " +"implementations, but the actual flow through each edge may vary." msgstr "" -msgid "where:" +msgid "pgr_maxFlow :math:`(edges\\_sql, source\\_vertex, sink\\_vertex)`" msgstr "" -msgid ":math:`path\\_seq_i = i`" +msgid "" +"where :math:`edges\\_sql = \\{(id_i, source_i, target_i, capacity_i, " +"reverse\\_capacity_i)\\}`" msgstr "" -msgid ":math:`path\\_seq_{| \\pi |} = | \\pi |`" +msgid "Graph definition" msgstr "" -msgid ":math:`node_i \\in V`" +msgid "The weighted directed graph, :math:`G(V,E)`, is defined as:" msgstr "" -msgid ":math:`node_1 = start_{vid}`" +msgid "the set of vertices :math:`V`" msgstr "" -msgid ":math:`node_{| \\pi |} = end_{vid}`" +msgid "" +":math:`source\\_vertex \\cup sink\\_vertex \\bigcup source_i \\bigcup " +"target_i`" msgstr "" msgid "" -":math:`\\forall i \\neq | \\pi |, \\quad (node_i, node_{i+1}, cost_i) \\in E`" +":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, capacity_i) " +"\\text{ when } capacity > 0 \\} & \\quad \\text{ if } reverse\\_capacity = " +"\\varnothing \\\\ \\text{ } & \\quad \\text{ } \\\\ \\{(source_i, target_i, " +"capacity_i) \\text{ when } capacity > 0 \\} & \\text{ } \\\\ \\cup " +"\\{(target_i, source_i, reverse\\_capacity_i) \\text{ when } " +"reverse\\_capacity_i > 0)\\} & \\quad \\text{ if } reverse\\_capacity \\neq " +"\\varnothing \\\\ \\end{cases}`" msgstr "" -msgid "" -":math:`edge_i = \\begin{cases} id_{(node_i, node_{i+1},cost_i)} &\\quad " -"\\text{when } i \\neq | \\pi | \\\\ -1 &\\quad \\text{when } i = | \\pi | \\" -"\\ \\end{cases}`" +msgid "Maximum flow problem" msgstr "" -msgid ":math:`cost_i = cost_{(node_i, node_{i+1})}`" +msgid ":math:`G(V,E)`" msgstr "" -msgid "" -":math:`agg\\_cost_i = \\begin{cases} 0 &\\quad \\text{when } i = 1 \\" -"\\ \\displaystyle\\sum_{k=1}^{i} cost_{(node_{k-1}, node_k)} &\\quad " -"\\text{when } i \\neq 1 \\\\ \\end{cases}`" +msgid ":math:`source\\_vertex \\in V` the source vertex" +msgstr "" + +msgid ":math:`sink\\_vertex \\in V` the sink vertex" +msgstr "" + +msgid ":math:`pgr\\_maxFlow(edges\\_sql, source, sink) = \\boldsymbol{\\Phi}`" msgstr "" msgid "" -"In other words: The algorithm returns a the shortest path between :math:" -"`start_{vid}` and :math:`end_{vid}`, if it exists, in terms of a sequence of " -"nodes and of edges," +":math:`\\boldsymbol{\\Phi} = {(id_i, edge\\_id_i, source_i, target_i, " +"flow_i, residual\\_capacity_i)}`" msgstr "" msgid "" -":math:`path\\_seq` indicates the relative position in the path of the :math:" -"`node` or :math:`edge`." +":math:`\\boldsymbol{\\Phi}` is a subset of the original edges with their " +"residual capacity and flow. The maximum flow through the graph can be " +"obtained by aggregating on the source or sink and summing the flow from/to " +"it. In particular:" msgstr "" -msgid ":math:`cost` is the cost of the edge to be used to go to the next node." +msgid ":math:`id_i = i`" msgstr "" -msgid "" -":math:`agg\\_cost` is the cost from the :math:`start_{vid}` up to the node." +msgid ":math:`edge\\_id = id_i` in edges_sql" msgstr "" -msgid "If there is no path, the resulting set is empty." +msgid ":math:`residual\\_capacity_i = capacity_i - flow_i`" msgstr "" -msgid "Driving Distance - Category" +msgid "https://en.wikipedia.org/wiki/Maximum_flow_problem" msgstr "" msgid "" -":doc:`pgr_drivingDistance` - Driving Distance based on Dijkstra's algorithm" +"pgRouting extends the `PostGIS `__/`PostgreSQL `__ geospatial database to provide geospatial routing and " +"other network analysis functionality." msgstr "" -msgid ":doc:`pgr_primDD` - Driving Distance based on Prim's algorithm" +msgid "This is the manual for pgRouting |release|." msgstr "" -msgid ":doc:`pgr_kruskalDD` - Driving Distance based on Kruskal's algorithm" +msgid "Creative Commons Attribution-Share Alike 3.0 License" msgstr "" -msgid "Post pocessing" +msgid "" +"The pgRouting Manual is licensed under a `Creative Commons Attribution-Share " +"Alike 3.0 License `_. Feel " +"free to use this material any way you like, but we ask that you attribute " +"credit to the pgRouting Project and wherever possible, a link back to " +"https://pgrouting.org. For other licenses used in pgRouting see the :ref:" +"`license` page." msgstr "" -msgid ":doc:`pgr_alphaShape` - Alpha shape computation" +msgid "General" msgstr "" -msgid ":doc:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints" +msgid ":doc:`sampledata` that is used in the examples of this manual." msgstr "" -msgid "Calculate nodes that are within a distance." +msgid "Pgrouting Concepts" msgstr "" -msgid "" -"Extracts all the nodes that have costs less than or equal to the value " -"distance." +msgid ":doc:`routingFunctions`" msgstr "" -msgid "The edges extracted will conform to the corresponding spanning tree." +msgid ":doc:`allpairs-family`" msgstr "" -msgid "Edge :math:`(u, v)` will not be included when:" +msgid ":doc:`bdDijkstra-family`" msgstr "" -msgid "The distance from the **root** to :math:`u` > limit distance." +msgid ":doc:`contraction-family`" msgstr "" -msgid "The distance from the **root** to :math:`v` > limit distance." +msgid ":doc:`dijkstra-family`" msgstr "" -msgid "" -"No new nodes are created on the graph, so when is within the limit and is " -"not within the limit, the edge is not included." +msgid ":doc:`kruskal-family`" msgstr "" -msgid "Edges SQL as described below." +msgid ":doc:`pgr_kruskal`" msgstr "" -msgid "**Root vid**" +msgid ":doc:`pgr_kruskalDD`" msgstr "" -msgid "**Root vids**" +msgid "" +":doc:`pgr_degree` - Returns a set of vertices and corresponding count of " +"incident edges to the vertex." msgstr "" -msgid "``ARRAY[ANY-INTEGER]``" +msgid ":doc:`prim-family`" msgstr "" -msgid "**distance**" +msgid ":doc:`pgr_prim`" msgstr "" -msgid "Upper limit for the inclusion of a node in the result." +msgid ":doc:`pgr_primDD`" msgstr "" -msgid "Returns set of |result-spantree|" +msgid ":doc:`reference`" msgstr "" -msgid ":math:`depth-1` is the depth of ``pred``" +msgid ":doc:`pgr_version`" msgstr "" -msgid "``pred``" +msgid ":doc:`pgr_full_version`" msgstr "" -msgid "Predecessor of ``node``." +msgid ":doc:`topology-functions`" msgstr "" -msgid "When ``node`` = ``start_vid`` then has the value ``node``." +msgid "" +"The following functions modify the database directly therefore the user must " +"have special permissions given by the administrators to use them." msgstr "" -msgid "Identifier of the ``edge`` used to arrive from ``pred`` to ``node``." +msgid ":doc:`pgr_createTopology` - create a topology based on the geometry." msgstr "" -msgid "Experimental Functions" +msgid "" +":doc:`pgr_createVerticesTable` - reconstruct the vertices table based on the " +"source and target information." msgstr "" -msgid "Families" +msgid "" +":doc:`pgr_analyzeGraph` - to analyze the edges and vertices of the edge " +"table." msgstr "" -msgid ":doc:`flow-family`" +msgid ":doc:`pgr_analyzeOneWay` - to analyze directionality of the edges." msgstr "" -msgid ":doc:`pgr_maxFlowMinCost` - Details of flow and cost on edges." +msgid ":doc:`pgr_nodeNetwork` - to create nodes to a not noded edge table." msgstr "" -msgid ":doc:`pgr_maxFlowMinCost_Cost` - Only the Min Cost calculation." +msgid "" +":doc:`pgr_extractVertices` - Extracts vertex information based on the edge " +"table information." msgstr "" -msgid ":doc:`chinesePostmanProblem-family`" +msgid ":doc:`pgr_trsp` - Turn Restriction Shortest Path (TRSP)" msgstr "" -msgid ":doc:`coloring-family`" +msgid "Utilities family" msgstr "" -msgid ":doc:`transformation-family`" +msgid ":doc:`pgr_findCloseEdges`" msgstr "" -msgid "" -":doc:`pgr_lineGraphFull` - Transformation algorithm for generating a Line " -"Graph out of each vertex in the input graph." +msgid "Functions by categories" msgstr "" -msgid ":doc:`traversal-family`" +msgid ":doc:`cost-category`" msgstr "" -msgid "" -":doc:`pgr_breadthFirstSearch` - Breath first search traversal of the graph." +msgid ":doc:`costMatrix-category`" msgstr "" -msgid "" -":doc:`pgr_binaryBreadthFirstSearch` - Breath first search traversal of the " -"graph." +msgid ":doc:`drivingDistance-category`" msgstr "" -msgid ":doc:`components-family`" +msgid ":doc:`KSP-category`" msgstr "" -msgid ":doc:`ordering-family`" +msgid ":doc:`spanningTree-category`" msgstr "" -msgid "" -":doc:`pgr_cuthillMckeeOrdering` - Return reverse Cuthill-McKee ordering of " -"an undirected graph." +msgid ":doc:`BFS-category`" msgstr "" -msgid ":doc:`metrics-family`" +msgid ":doc:`DFS-category`" msgstr "" -msgid "" -":doc:`pgr_betweennessCentrality` - Calculates relative betweenness " -"centrality using Brandes Algorithm" +msgid "Available Functions but not official pgRouting functions" msgstr "" -msgid ":doc:`TRSP-family`" +msgid ":doc:`proposed`" msgstr "" -msgid "categories" +msgid ":doc:`experimental`" msgstr "" -msgid ":doc:`VRP-category`" +msgid ":doc:`release_notes`" msgstr "" -msgid "Unclassified" +msgid "pgRouting 4.0.0 Release Notes" msgstr "" -msgid ":doc:`pgr_bellmanFord`" +msgid "" +"To see all issues & pull requests closed by this release see the `Git closed " +"milestone for 4.0.0 `__" msgstr "" -msgid ":doc:`pgr_dagShortestPath`" +msgid "Functions promoted to official" msgstr "" -msgid ":doc:`pgr_edwardMoore`" +msgid "pgr_trsp" msgstr "" -msgid ":doc:`pgr_isPlanar`" +msgid "pgr_trspVia" msgstr "" -msgid ":doc:`pgr_stoerWagner`" +msgid "pgr_trspVia_withPoints" msgstr "" -msgid ":doc:`pgr_topologicalSort`" +msgid "pgr_trsp_withPoints" msgstr "" -msgid ":doc:`pgr_transitiveClosure`" +msgid "pgr_withPoints" msgstr "" -msgid ":doc:`pgr_lengauerTarjanDominatorTree`" +msgid "pgr_withPointsCost" msgstr "" -msgid ":doc:`pgr_hawickCircuits`" +msgid "pgr_withPointsCostMatrix" msgstr "" -msgid "Flow - Family of functions" +msgid "pgr_withPointsDD" msgstr "" -msgid "" -":doc:`pgr_maxFlow` - Only the Max flow calculation using Push and Relabel " -"algorithm." +msgid "pgr_withPointsKSP" msgstr "" -msgid "" -":doc:`pgr_boykovKolmogorov` - Boykov and Kolmogorov with details of flow on " -"edges." +msgid "pgr_withPointsVia" msgstr "" -msgid "" -":doc:`pgr_edmondsKarp` - Edmonds and Karp algorithm with details of flow on " -"edges." +msgid "Signatures promoted to official" msgstr "" -msgid "" -":doc:`pgr_pushRelabel` - Push and relabel algorithm with details of flow on " -"edges." +msgid "pgr_aStar(Combinations)" msgstr "" -msgid "Applications" +msgid "pgr_aStarCost(Combinations)" msgstr "" -msgid "" -":doc:`pgr_edgeDisjointPaths` - Calculates edge disjoint paths between two " -"groups of vertices." +msgid "pgr_bdAstar(Combinations)" msgstr "" -msgid "" -":doc:`pgr_maxCardinalityMatch` - Calculates a maximum cardinality matching " -"in a graph." +msgid "pgr_bdAstarCost(Combinations)" msgstr "" -msgid "Flow Functions General Information" +msgid "pgr_bdDijkstra(Combinations)" msgstr "" -msgid "The graph is **directed**." +msgid "pgr_bdDijkstraCost(Combinations)" msgstr "" -msgid "Process is done only on edges with positive capacities." +msgid "pgr_dijkstra(Combinations)" msgstr "" -msgid "" -"When the maximum flow is 0 then there is no flow and **EMPTY SET** is " -"returned." +msgid "pgr_dijkstraCost(Combinations)" msgstr "" -msgid "There is no flow when source has the same vaule as target." +msgid "pgr_KSP(All signatures)" msgstr "" -msgid "Any duplicated values in source or target are ignored." +msgid "pgr_boykovKolmogorov(Combinations)" msgstr "" -msgid "Calculates the flow/residual capacity for each edge. In the output" +msgid "pgr_edmondsKarp(Combinations)" msgstr "" -msgid "Edges with zero flow are omitted." +msgid "pgr_maxFlow(Combinations)" msgstr "" -msgid "Creates" +msgid "pgr_pushRelabel(Combinations)" msgstr "" -msgid "a **super source** and edges from it to all the sources," +msgid "code enhancements:" msgstr "" -msgid "a **super target** and edges from it to all the targetss." +msgid "Removal of unused C/C++ code" msgstr "" -msgid "" -"The maximum flow through the graph is guaranteed to be the value returned " -"by :doc:`pgr_maxFlow ` when executed with the same parameters " -"and can be calculated:" +msgid "Removal of SQL deprecated functions" msgstr "" -msgid "By aggregation of the outgoing flow from the sources" +msgid "" +"pgr_trsp(text,integer,double precision,integer,double precision,boolean," +"boolean,text)" msgstr "" -msgid "By aggregation of the incoming flow to the targets" +msgid "pgr_trsp(text,integer,integer,boolean,boolean,text)" msgstr "" msgid "" -":doc:`pgr_maxFlow` is the maximum Flow and that maximum is guaranteed to be " -"the same on the functions :doc:`pgr_pushRelabel`, :doc:`pgr_edmondsKarp`, :" -"doc:`pgr_boykovKolmogorov`, but the actual flow through each edge may vary." +"pgr_trspviaedges(text,integer[],double precision[],boolean,boolean,text)" msgstr "" -msgid "Capacity edges" +msgid "pgr_trspviavertices(text,anyarray,boolean,boolean,text)" msgstr "" -msgid ":doc:`pgr_pushRelabel`" +msgid "Removal of SQL deprecated internal functions" msgstr "" -msgid ":doc:`pgr_edmondsKarp`" +msgid "_pgr_dijkstranear(text,anyarray,anyarray,bigint,boolean)" msgstr "" -msgid ":doc:`pgr_boykovKolmogorov`" +msgid "_pgr_dijkstranear(text,anyarray,bigint,bigint,boolean)" msgstr "" -msgid "``reverse_capacity``" +msgid "_pgr_dijkstranear(text,bigint,anyarray,bigint,boolean)" msgstr "" -msgid "Capacity-Cost edges" +msgid "_pgr_dijkstra(text,anyarray,anyarray,boolean,boolean,boolean,bigint)" msgstr "" -msgid ":doc:`pgr_maxFlowMinCost`" +msgid "_pgr_dijkstra(text,text,boolean,boolean,boolean)" msgstr "" -msgid ":doc:`pgr_maxFlowMinCost_Cost`" +msgid "_pgr_drivingdistance(text,anyarray,double precision,boolean,boolean)" msgstr "" -msgid "Capacity of the edge (``source``, ``target``)" +msgid "_pgr_kruskal(text,anyarray,text,bigint,double precision)" msgstr "" -msgid "Capacity of the edge (``target``, ``source``)" +msgid "_pgr_prim(text,anyarray,text,bigint,double precision)" msgstr "" -msgid "Weight of the edge (``source``, ``target``) if it exist" +msgid "" +"_pgr_trsp(text,integer,double precision,integer,double precision,boolean," +"boolean,text)" msgstr "" -msgid "Weight of the edge (``target``, ``source``) if it exist" +msgid "_pgr_trsp(text,text,anyarray,anyarray,boolean)" msgstr "" -msgid "Cost edges" +msgid "_pgr_trsp(text,text,anyarray,bigint,boolean)" msgstr "" -msgid ":doc:`pgr_edgeDisjointPaths`" +msgid "_pgr_trsp(text,text,bigint,anyarray,boolean)" msgstr "" -msgid "Used in" +msgid "_pgr_trsp(text,text,bigint,bigint,boolean)" msgstr "" -msgid "**seq**" +msgid "_pgr_trspviavertices(text,integer[],boolean,boolean,text)" msgstr "" -msgid "``INT``" +msgid "_pgr_withpointsvia(text,bigint[],double precision[],boolean)" msgstr "" -msgid "**edge**" +msgid "_trsp(text,text,anyarray,anyarray,boolean)" msgstr "" -msgid "Identifier of the edge in the original query (edges_sql)." +msgid "_v4trsp(text,text,anyarray,anyarray,boolean)" msgstr "" -msgid "**start_vid**" +msgid "_v4trsp(text,text,text,boolean)" msgstr "" -msgid "**end_vid**" +msgid "Deprecation of internal C/C++ functions" msgstr "" -msgid "**flow**" +msgid "Internal C/C++ functions in legacy" msgstr "" -msgid "Flow through the edge in the direction (``start_vid``, ``end_vid``)." +msgid "All releases" msgstr "" -msgid "**residual_capacity**" +msgid "Kruskal - Family of functions" msgstr "" msgid "" -"Residual capacity of the edge in the direction (``start_vid``, ``end_vid``)." -msgstr "" - -msgid "For :doc:`pgr_maxFlowMinCost`" +"Kruskal's algorithm is a greedy minimum spanning tree algorithm that in each " +"cycle finds and adds the edge of the least possible weight that connects any " +"two trees in the forest." msgstr "" -msgid "**source**" +msgid "**The main Characteristics are:**" msgstr "" -msgid "**target**" +msgid "The total weight of all the edges in the tree or forest is minimized." msgstr "" -msgid "Flow through the edge in the direction (source, target)." +msgid "Kruskal's running time: :math:`O(E * log E)`" msgstr "" -msgid "Residual capacity of the edge in the direction (source, target)." +msgid "Metrics - Family of functions" msgstr "" -msgid "**cost**" +msgid "Migration guide" msgstr "" msgid "" -"The cost of sending this flow through the edge in the direction (source, " -"target)." +"Several functions are having changes on the signatures, and/or have been " +"replaced by new functions." msgstr "" -msgid "**agg_cost**" +msgid "Results can be different because of the changes." msgstr "" -msgid "The aggregate cost." +msgid "All deprecated functions will be removed on next mayor version 4.0.0" msgstr "" -msgid "Advanced Documentation" +msgid "Migration of ``pgr_aStar``" msgstr "" msgid "" -"A flow network is a directed graph where each edge has a capacity and a " -"flow. The flow through an edge must not exceed the capacity of the edge. " -"Additionally, the incoming and outgoing flow of a node must be equal except " -"for source which only has outgoing flow, and the destination(sink) which " -"only has incoming flow." +"Starting from `v3.6.0 `__" msgstr "" -msgid "" -"Maximum flow algorithms calculate the maximum flow through the graph and the " -"flow of each edge." +msgid "Signatures to be migrated:" msgstr "" -msgid "" -"The maximum flow through the graph is guaranteed to be the same with all " -"implementations, but the actual flow through each edge may vary." +msgid "``pgr_aStar`` (`One to One`)" msgstr "" -msgid "pgr_maxFlow :math:`(edges\\_sql, source\\_vertex, sink\\_vertex)`" +msgid "``pgr_aStar`` (`One to Many`)" msgstr "" -msgid "" -"where :math:`edges\\_sql = \\{(id_i, source_i, target_i, capacity_i, " -"reverse\\_capacity_i)\\}`" +msgid "``pgr_aStar`` (`Many to One`)" msgstr "" -msgid "Graph definition" +msgid "Before Migration" msgstr "" -msgid "The weighted directed graph, :math:`G(V,E)`, is defined as:" +msgid "Output columns were |old-generic-result|" msgstr "" -msgid "the set of vertices :math:`V`" +msgid "" +"Depending on the overload used, the columns ``start_vid`` and ``end_vid`` " +"might be missing:" msgstr "" msgid "" -":math:`source\\_vertex \\cup sink\\_vertex \\bigcup source_i \\bigcup " -"target_i`" +"``pgr_aStar`` (`One to One`) does not have ``start_vid`` and ``end_vid``." msgstr "" -msgid "" -":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, capacity_i) " -"\\text{ when } capacity > 0 \\} & \\quad \\text{ if } reverse\\_capacity = " -"\\varnothing \\\\ \\text{ } & \\quad \\text{ } \\\\ \\{(source_i, target_i, " -"capacity_i) \\text{ when } capacity > 0 \\} & \\text{ } \\\\ \\cup " -"\\{(target_i, source_i, reverse\\_capacity_i) \\text{ when } " -"reverse\\_capacity_i > 0)\\} & \\quad \\text{ if } reverse\\_capacity \\neq " -"\\varnothing \\\\ \\end{cases}`" +msgid "``pgr_aStar`` (`One to Many`) does not have ``start_vid``." msgstr "" -msgid "Maximum flow problem" +msgid "``pgr_aStar`` (`Many to One`) does not have ``end_vid``." msgstr "" -msgid ":math:`G(V,E)`" +msgid "Migration" msgstr "" -msgid ":math:`source\\_vertex \\in V` the source vertex" +msgid "Be aware of the existence of the additional columns." msgstr "" -msgid ":math:`sink\\_vertex \\in V` the sink vertex" +msgid "In ``pgr_aStar`` (`One to One`)" msgstr "" -msgid ":math:`pgr\\_maxFlow(edges\\_sql, source, sink) = \\boldsymbol{\\Phi}`" +msgid "``start_vid`` contains the **start vid** parameter value." msgstr "" -msgid "" -":math:`\\boldsymbol{\\Phi} = {(id_i, edge\\_id_i, source_i, target_i, " -"flow_i, residual\\_capacity_i)}`" +msgid "``end_vid`` contains the **end vid** parameter value." msgstr "" -msgid "" -":math:`\\boldsymbol{\\Phi}` is a subset of the original edges with their " -"residual capacity and flow. The maximum flow through the graph can be " -"obtained by aggregating on the source or sink and summing the flow from/to " -"it. In particular:" +msgid "In ``pgr_aStar`` (`One to Many`)" msgstr "" -msgid ":math:`id_i = i`" +msgid "In ``pgr_aStar`` (`Many to One`)" msgstr "" -msgid ":math:`edge\\_id = id_i` in edges_sql" +msgid "If needed filter out the added columns, for example:" msgstr "" -msgid ":math:`residual\\_capacity_i = capacity_i - flow_i`" +msgid "" +"If needed add the new columns, similar to the following example where " +"``pgr_dijkstra`` is used, and the function had to be modified to be able to " +"return the new columns:" msgstr "" -msgid "https://en.wikipedia.org/wiki/Maximum_flow_problem" +msgid "" +"In `v3.0 `__ the function " +"``my_dijkstra`` uses ``pgr_dijkstra``." msgstr "" msgid "" -"pgRouting extends the `PostGIS `__/`PostgreSQL `__ geospatial database to provide geospatial routing and " -"other network analysis functionality." +"Starting from `v3.5 `__ the " +"function ``my_dijkstra`` returns the new additional columns of " +"``pgr_dijkstra``." msgstr "" -msgid "This is the manual for pgRouting |release|." +msgid "Migration of ``pgr_bdAstar``" msgstr "" -msgid "Creative Commons Attribution-Share Alike 3.0 License" +msgid "``pgr_bdAstar`` (`One to One`)" msgstr "" -msgid "" -"The pgRouting Manual is licensed under a `Creative Commons Attribution-Share " -"Alike 3.0 License `_. Feel " -"free to use this material any way you like, but we ask that you attribute " -"credit to the pgRouting Project and wherever possible, a link back to " -"https://pgrouting.org. For other licenses used in pgRouting see the :ref:" -"`license` page." +msgid "``pgr_bdAstar`` (`One to Many`)" msgstr "" -msgid "General" +msgid "``pgr_bdAstar`` (`Many to One`)" msgstr "" -msgid ":doc:`sampledata` that is used in the examples of this manual." +msgid "" +"``pgr_bdAstar`` (`One to One`) does not have ``start_vid`` and ``end_vid``." msgstr "" -msgid "Pgrouting Concepts" +msgid "``pgr_bdAstar`` (`One to Many`) does not have ``start_vid``." msgstr "" -msgid ":doc:`routingFunctions`" +msgid "``pgr_bdAstar`` (`Many to One`) does not have ``end_vid``." msgstr "" -msgid ":doc:`allpairs-family`" +msgid "In ``pgr_bdAstar`` (`One to One`)" msgstr "" -msgid ":doc:`bdDijkstra-family`" +msgid "In ``pgr_bdAstar`` (`One to Many`)" msgstr "" -msgid ":doc:`contraction-family`" +msgid "In ``pgr_bdAstar`` (`Many to One`)" msgstr "" -msgid ":doc:`dijkstra-family`" +msgid "Migration of ``pgr_dijkstra``" msgstr "" -msgid ":doc:`kruskal-family`" +msgid "" +"Starting from `v3.5.0 `__" msgstr "" -msgid ":doc:`pgr_kruskal`" +msgid "``pgr_dijkstra`` (`One to One`)" msgstr "" -msgid ":doc:`pgr_kruskalDD`" +msgid "``pgr_dijkstra`` (`One to Many`)" msgstr "" -msgid ":doc:`prim-family`" +msgid "``pgr_dijkstra`` (`Many to One`)" msgstr "" -msgid ":doc:`pgr_prim`" +msgid "" +"``pgr_dijkstra`` (`One to One`) does not have ``start_vid`` and ``end_vid``." msgstr "" -msgid ":doc:`pgr_primDD`" +msgid "``pgr_dijkstra`` (`One to Many`) does not have ``start_vid``." msgstr "" -msgid ":doc:`reference`" +msgid "``pgr_dijkstra`` (`Many to One`) does not have ``end_vid``." msgstr "" -msgid ":doc:`pgr_version`" +msgid "In ``pgr_dijkstra`` (`One to One`)" msgstr "" -msgid ":doc:`pgr_full_version`" +msgid "In ``pgr_dijkstra`` (`One to Many`)" msgstr "" -msgid ":doc:`topology-functions`" +msgid "In ``pgr_dijkstra`` (`Many to One`)" msgstr "" -msgid "" -"The following functions modify the database directly therefore the user must " -"have special permissions given by the administrators to use them." +msgid "If needed add the new columns, for example:" msgstr "" -msgid ":doc:`pgr_createTopology` - create a topology based on the geometry." +msgid "Migration of ``pgr_drivingDistance``" msgstr "" msgid "" -":doc:`pgr_createVerticesTable` - reconstruct the vertices table based on the " -"source and target information." +"Starting from `v3.6.0 `__ :" +"doc:`pgr_drivingDistance` result columns are being standardized." msgstr "" -msgid "" -":doc:`pgr_analyzeGraph` - to analyze the edges and vertices of the edge " -"table." +msgid "from" msgstr "" -msgid ":doc:`pgr_analyzeOneWay` - to analyze directionality of the edges." +msgid "|result-dij-dd|" msgstr "" -msgid ":doc:`pgr_nodeNetwork` - to create nodes to a not noded edge table." +msgid "to" msgstr "" -msgid ":doc:`pgr_trsp` - Turn Restriction Shortest Path (TRSP)" +msgid "|result-spantree|" msgstr "" -msgid "Functions by categories" +msgid "pgr_drivingDistance(Single vertex)" msgstr "" -msgid ":doc:`cost-category`" +msgid "pgr_drivingDistance(Multiple vertices)" msgstr "" -msgid ":doc:`costMatrix-category`" +msgid "Output columns were |result-dij-dd|" msgstr "" -msgid ":doc:`drivingDistance-category`" +msgid "Does not have ``start_vid`` and ``depth`` result columns." msgstr "" -msgid ":doc:`KSP-category`" +msgid "Has ``from_v`` instead of ``start_vid`` result column." msgstr "" -msgid ":doc:`spanningTree-family`" +msgid "does not have ``depth`` result column." msgstr "" -msgid ":doc:`BFS-category`" +msgid "Be aware of the existence and name change of the result columns." msgstr "" -msgid ":doc:`DFS-category`" +msgid "" +"Using `this `__ example." msgstr "" -msgid "Available Functions but not official pgRouting functions" +msgid "``depth`` contains the depth of the ``node``." msgstr "" -msgid ":doc:`proposed`" +msgid "``pred`` contains the predecessor of the ``node``." msgstr "" -msgid ":doc:`experimental`" +msgid "" +"If needed filter out the added columns, for example, to return the original " +"columns" msgstr "" -msgid ":doc:`release_notes`" +msgid "" +"Using `this `__ example." msgstr "" -msgid "pgRouting 3.7.0 Release Notes" +msgid "The ``from_v`` result column name changes to ``start_vid``." msgstr "" msgid "" -"To see all issues & pull requests closed by this release see the `Git closed " -"milestone for 3.7.0 `__" +"If needed filter out and rename columns, for example, to return the original " +"columns:" msgstr "" -msgid "Support" +msgid "" +"Migration of ``pgr_kruskalDD`` / ``pgr_kruskalBFS`` / ``pgr_kruskalDFS``" msgstr "" msgid "" -"`#2656 `__ Stop support of " -"PostgreSQL12 on pgrouting v3.7" +"Starting from `v3.7.0 `__ :" +"doc:`pgr_kruskalDD`, :doc:`pgr_kruskalBFS` and :doc:`pgr_kruskalDFS` result " +"columns are being standardized." msgstr "" -msgid "Stopping support of PostgreSQL 12" +msgid "|result-bfs|" msgstr "" -msgid "CI does not test for PostgreSQL 12" +msgid "``pgr_kruskalDD``" msgstr "" -msgid "New experimental functions" +msgid "Single vertex" msgstr "" -msgid "Metrics" +msgid "Multiple vertices" msgstr "" -msgid "pgr_betweennessCentrality" +msgid "``pgr_kruskalDFS``" msgstr "" -msgid "Official functions changes" +msgid "``pgr_kruskalBFS``" msgstr "" -msgid "" -"`#2605 `__ Standarize " -"spanning tree functions output" +msgid "Output columns were |result-bfs|" msgstr "" -msgid "Functions:" +msgid "Single vertex and Multiple vertices" msgstr "" -msgid "``pgr_kruskalDD``" +msgid "Do not have ``pred`` result column." msgstr "" -msgid "``pgr_kruskalDFS``" +msgid "Be aware of the existence of `pred` result columns." msgstr "" -msgid "``pgr_kruskalBFS``" +msgid "If needed filter out the added columns" msgstr "" -msgid "``pgr_primDD``" +msgid "Kruskal single vertex" msgstr "" -msgid "``pgr_primDFS``" +msgid "" +"Using ``pgr_KruskalDD`` as example. Migration is similar to al the affected " +"functions." msgstr "" -msgid "``pgr_primBFS``" +msgid "" +"Comparing with `this `__ example." msgstr "" -msgid "Standarizing output columns to |result-spantree|" +msgid "" +"Now column ``pred`` exists and contains the predecessor of the ``node``." msgstr "" -msgid "Added ``pred`` result columns." +msgid "Kruskal multiple vertices" msgstr "" -msgid "Experimental promoted to proposed." +msgid "" +"Comparing with `this `__ example." msgstr "" -msgid "" -"`#2635 `__ pgr_LineGraph " -"ignores directed flag and use negative values for identifiers." +msgid "Migration of ``pgr_KSP``" msgstr "" -msgid "``pgr_lineGraph``" +msgid "" +"Starting from `v3.6.0 `__ :" +"doc:`pgr_KSP` result columns are being standardized." msgstr "" -msgid "Promoted to **proposed** signature." +msgid "|ksp-result|" msgstr "" -msgid "Works for directed and undirected graphs." +msgid "|nksp-result|" msgstr "" -msgid "Code enhancement" +msgid "``pgr_KSP`` (One to One)" msgstr "" -msgid "" -"`#2599 `__ Driving " -"distance cleanup" +msgid "Output columns were |ksp-result|" msgstr "" -msgid "" -"`#2607 `__ Read postgresql " -"data on C++" +msgid "the columns ``start_vid`` and ``end_vid`` do not exist." msgstr "" -msgid "" -"`#2614 `__ Clang tidy does " -"not work" +msgid "``pgr_KSP`` (One to One) does not have ``start_vid`` and ``end_vid``." msgstr "" -msgid "All releases" +msgid "" +"Using `this `__ " +"example." msgstr "" -msgid "Kruskal - Family of functions" +msgid "" +"If needed filter out the added columns, for example, to return the original " +"columns:" msgstr "" -msgid "Boost Graph Inside" +msgid "Migration of ``pgr_maxCardinalityMatch``" msgstr "" msgid "" -"Kruskal's algorithm is a greedy minimum spanning tree algorithm that in each " -"cycle finds and adds the edge of the least possible weight that connects any " -"two trees in the forest." +":doc:`pgr_maxCardinalityMatch` works only for undirected graphs, therefore " +"the ``directed`` flag has been removed." msgstr "" -msgid "**The main Characteristics are:**" +msgid "" +"Starting from `v3.4.0 `__" msgstr "" -msgid "The total weight of all the edges in the tree or forest is minimized." +msgid "Signature to be migrated:" msgstr "" -msgid "Kruskal's running time: :math:`O(E * log E)`" +msgid "Migration is needed, because:" msgstr "" -msgid "Metrics - Family of functions" +msgid "Use ``cost`` and ``reverse_cost`` on the inner query" msgstr "" -msgid "Migration guide" +msgid "Results are ordered" msgstr "" -msgid "" -"Several functions are having changes on the signatures, and/or have been " -"replaced by new functions." +msgid "Works for undirected graphs." msgstr "" -msgid "Results can be different because of the changes." +msgid "New signature" msgstr "" -msgid "All deprecated functions will be removed on next mayor version 4.0.0" +msgid "``pgr_maxCardinalityMatch(text)`` returns only ``edge`` column." msgstr "" -msgid "Migration of functions" +msgid "The optional flag ``directed`` is removed." msgstr "" -msgid "Migrating functions" +msgid "Before migration" msgstr "" -msgid "Migration of ``pgr_aStar``" +msgid "" +"Columns used are ``going`` and ``coming`` to represent the existence of an " +"edge." msgstr "" msgid "" -"Starting from `v3.6.0 `__" +"Flag ``directed`` was used to indicate if it was for a **directed** or " +"**undirected** graph." msgstr "" -msgid "Signatures to be migrated:" +msgid "The flag ``directed`` is ignored." msgstr "" -msgid "``pgr_aStar`` (`One to One`)" +msgid "" +"Regardless of it's value it gives the result considering the graph as " +"**undirected**." msgstr "" -msgid "``pgr_aStar`` (`One to Many`)" +msgid "" +"Use the columns ``cost`` and ``reverse_cost`` to represent the existence of " +"an edge." msgstr "" -msgid "``pgr_aStar`` (`Many to One`)" +msgid "Do not use the flag ``directed``." msgstr "" -msgid "Before Migration" +msgid "In the query returns only ``edge`` column." msgstr "" -msgid "Output columns were |old-generic-result|" +msgid "Migration of ``pgr_primDD`` / ``pgr_primBFS`` / ``pgr_primDFS``" msgstr "" msgid "" -"Depending on the overload used, the columns ``start_vid`` and ``end_vid`` " -"might be missing:" +"Starting from `v3.7.0 `__ :" +"doc:`pgr_primDD`, :doc:`pgr_primBFS` and :doc:`pgr_primDFS` result columns " +"are being standardized." msgstr "" -msgid "" -"``pgr_aStar`` (`One to One`) does not have ``start_vid`` and ``end_vid``." +msgid "``pgr_primDD``" msgstr "" -msgid "``pgr_aStar`` (`One to Many`) does not have ``start_vid``." +msgid "``pgr_primDFS``" msgstr "" -msgid "``pgr_aStar`` (`Many to One`) does not have ``end_vid``." +msgid "``pgr_primBFS``" msgstr "" -msgid "Migration" +msgid "Prim single vertex" msgstr "" -msgid "Be aware of the existence of the additional columns." +msgid "" +"Using ``pgr_primDD`` as example. Migration is similar to al the affected " +"functions." msgstr "" -msgid "In ``pgr_aStar`` (`One to One`)" +msgid "" +"Comparing with `this `__ example." msgstr "" -msgid "``start_vid`` contains the **start vid** parameter value." +msgid "Prim multiple vertices" msgstr "" -msgid "``end_vid`` contains the **end vid** parameter value." +msgid "" +"Comparing with `this `__ example." msgstr "" -msgid "In ``pgr_aStar`` (`One to Many`)" +msgid "Migration of ``pgr_withPointsDD``" msgstr "" -msgid "In ``pgr_aStar`` (`Many to One`)" +msgid "" +"Starting from `v3.6.0 `__ :" +"doc:`pgr_withPointsDD` result columns are being standardized." msgstr "" -msgid "If needed filter out the added columns, for example:" +msgid "|result-generic-no-seq|" msgstr "" msgid "" -"If needed add the new columns, similar to the following example where " -"``pgr_dijkstra`` is used, and the function had to be modified to be able to " -"return the new columns:" -msgstr "" - -msgid "" -"In `v3.0 `__ the function " -"``my_dijkstra`` uses ``pgr_dijkstra``." -msgstr "" - -msgid "" -"Starting from `v3.5 `__ the " -"function ``my_dijkstra`` returns the new additional columns of " -"``pgr_dijkstra``." +"And ``driving_side`` parameter changed from named optional to unnamed " +"compulsory **driving side** and its validity differ for directed and " +"undirected graphs." msgstr "" -msgid "Migration of ``pgr_bdAstar``" +msgid "``pgr_withPointsDD`` (Single vertex)" msgstr "" -msgid "``pgr_bdAstar`` (`One to One`)" +msgid "``pgr_withPointsDD`` (Multiple vertices)" msgstr "" -msgid "``pgr_bdAstar`` (`One to Many`)" +msgid "Output columns were |result-1-1-no-seq|" msgstr "" -msgid "``pgr_bdAstar`` (`Many to One`)" +msgid "Does not have ``start_vid``, ``pred`` and ``depth`` result columns." msgstr "" msgid "" -"``pgr_bdAstar`` (`One to One`) does not have ``start_vid`` and ``end_vid``." +"``driving_side`` parameter was named optional now it is compulsory unnamed." msgstr "" -msgid "``pgr_bdAstar`` (`One to Many`) does not have ``start_vid``." +msgid "``pgr_withPointsDD`` (`Multiple vertices`)" msgstr "" -msgid "``pgr_bdAstar`` (`Many to One`) does not have ``end_vid``." +msgid "Output columns were |result-m-1-no-seq|" msgstr "" -msgid "In ``pgr_bdAstar`` (`One to One`)" +msgid "Does not have ``depth`` and ``pred`` result columns." msgstr "" -msgid "In ``pgr_bdAstar`` (`One to Many`)" +msgid "Driving side was optional" msgstr "" -msgid "In ``pgr_bdAstar`` (`Many to One`)" +msgid "The default values on this query are:" msgstr "" -msgid "Migration of ``pgr_dijkstra``" +msgid "directed" msgstr "" -msgid "" -"Starting from `v3.5.0 `__" +msgid "true" msgstr "" -msgid "``pgr_dijkstra`` (`One to One`)" +msgid "driving_side" msgstr "" -msgid "``pgr_dijkstra`` (`One to Many`)" +msgid "'b'" msgstr "" -msgid "``pgr_dijkstra`` (`Many to One`)" +msgid "details" msgstr "" -msgid "" -"``pgr_dijkstra`` (`One to One`) does not have ``start_vid`` and ``end_vid``." +msgid "false" msgstr "" -msgid "``pgr_dijkstra`` (`One to Many`) does not have ``start_vid``." +msgid "Driving side was named optional" msgstr "" -msgid "``pgr_dijkstra`` (`Many to One`) does not have ``end_vid``." +msgid "On directed graph ``b`` could be used as **driving side**" msgstr "" -msgid "In ``pgr_dijkstra`` (`One to One`)" +msgid "On undirected graph ``r`` could be used as **driving side**" msgstr "" -msgid "In ``pgr_dijkstra`` (`One to Many`)" +msgid "Also ``l`` could be used as **driving side**" msgstr "" -msgid "In ``pgr_dijkstra`` (`Many to One`)" +msgid "After Migration" msgstr "" -msgid "If needed add the new columns, for example:" +msgid "Be aware of the existence of the additional result Columns." msgstr "" -msgid "Migration of ``pgr_drivingdistance``" +msgid "New output columns are |result-spantree|" msgstr "" msgid "" -"Starting from `v3.6.0 `__ :" -"doc:`pgr_drivingDistance` result columns are being standardized." -msgstr "" - -msgid "from" +"**driving side** parameter is unnamed compulsory, and valid values differ " +"for directed and undirected graphs." msgstr "" -msgid "|result-dij-dd|" +msgid "Does not have a default value." msgstr "" -msgid "to" +msgid "In directed graph: valid values are [``r``, ``R``, ``l``, ``L``]" msgstr "" -msgid "|result-spantree|" +msgid "In undirected graph: valid values are [``b``, ``B``]" msgstr "" -msgid "``pgr_drivingdistance`` (Single vertex)" +msgid "Using an invalid value throws an ``ERROR``." msgstr "" -msgid "``pgr_drivingdistance`` (Multiple vertices)" +msgid "" +"Using `this `__ example." msgstr "" -msgid "Output columns were |result-dij-dd|" +msgid "" +"``depth`` contains the **depth** from the ``start_vid`` vertex to the " +"``node``." msgstr "" -msgid "Does not have ``start_vid`` and ``depth`` result columns." +msgid "" +"To migrate, use an unnamed valid value for **driving side** after the " +"**distance** parameter:" msgstr "" -msgid "Has ``from_v`` instead of ``start_vid`` result column." +msgid "To get results from previous versions:" msgstr "" -msgid "does not have ``depth`` result column." +msgid "filter out the additional columns, for example;" msgstr "" -msgid "Be aware of the existence and name change of the result columns." +msgid "" +"When ``details => false`` to remove the points use ``WHERE node >= 0 OR cost " +"= 0``" msgstr "" msgid "" -"Using `this `__ example." +"Using `this `__ example." msgstr "" -msgid "``depth`` contains the depth of the ``node``." +msgid "Filter out the additional columns" msgstr "" -msgid "``pred`` contains the predecessor of the ``node``." +msgid "Migration of ``pgr_withPointsKSP``" msgstr "" msgid "" -"If needed filter out the added columns, for example, to return the original " -"columns" +"Starting from `v3.6.0 `__ :" +"doc:`pgr_withPointsKSP` result columns are being standardized." msgstr "" msgid "" -"Using `this `__ example." +"And ``driving side`` parameter changed from named optional to unnamed " +"compulsory **driving side** and its validity differ for directed and " +"undirected graphs." msgstr "" -msgid "The ``from_v`` result column name changes to ``start_vid``." +msgid "``pgr_withPointsKSP`` (`One to One`)" msgstr "" -msgid "" -"If needed filter out and rename columns, for example, to return the original " -"columns:" +msgid "Output columns were |old-pid-result|" +msgstr "" + +msgid "New output columns are |nksp-result|" msgstr "" msgid "" -"Migration of ``pgr_kruskalDD`` / ``pgr_kruskalBFS`` / ``pgr_kruskalDFS``" +"Using `this `__ example." msgstr "" msgid "" -"Starting from `v3.7.0 `__ :" -"doc:`pgr_kruskalDD`, :doc:`pgr_kruskalBFS` and :doc:`pgr_kruskalDFS` result " -"columns are being standardized." +"If needed filter out the additional columns, for example, to return the " +"original columns:" msgstr "" -msgid "|result-bfs|" +msgid "Migration of ``pgr_trsp`` (Vertices)" msgstr "" -msgid "Single vertex" +msgid "Signature:" msgstr "" -msgid "Multiple vertices" +msgid "Deprecated" msgstr "" -msgid "Output columns were |result-bfs|" +msgid "`v3.4.0 `__" msgstr "" -msgid "Single vertex and Multiple vertices" +msgid "Removed" msgstr "" -msgid "Do not have ``pred`` result column." +msgid "`v4.0.0 `__" msgstr "" -msgid "Be aware of the existence of `pred` result columns." +msgid ":doc:`pgr_dijkstra`" msgstr "" -msgid "If needed filter out the added columns" +msgid ":doc:`pgr_trsp`" msgstr "" -msgid "Kruskal single vertex" +msgid "`Migration of restrictions`_" msgstr "" -msgid "" -"Using ``pgr_KruskalDD`` as example. Migration is similar to al the affected " -"functions." +msgid "Use ``pgr_dijkstra`` when there are no restrictions." msgstr "" -msgid "" -"Comparing with `this `__ example." +msgid "Use :doc:`pgr_dijkstra` instead." msgstr "" -msgid "" -"Now column ``pred`` exists and contains the predecessor of the ``node``." +msgid "To get the original column names:" msgstr "" -msgid "Kruskal multiple vertices" +msgid "``id1`` is the node" msgstr "" -msgid "" -"Comparing with `this `__ example." +msgid "``id2`` is the edge" msgstr "" -msgid "Migration of ``pgr_KSP``" +msgid "Use ``pgr_trsp`` when there are restrictions." msgstr "" -msgid "" -"Starting from `v3.6.0 `__ :" -"doc:`pgr_KSP` result columns are being standardized." +msgid "Use :doc:`pgr_trsp` (One to One) instead." msgstr "" -msgid "|ksp-result|" +msgid "Migration of ``pgr_trsp`` (Edges)" msgstr "" -msgid "|nksp-result|" +msgid ":doc:`pgr_withPoints`" msgstr "" -msgid "``pgr_KSP`` (One to One)" +msgid ":doc:`pgr_trsp_withPoints`" msgstr "" -msgid "Output columns were |ksp-result|" +msgid "Use ``pgr_withPoints`` when there are no restrictions." msgstr "" -msgid "the columns ``start_vid`` and ``end_vid`` do not exist." +msgid "Use :doc:`pgr_withPoints` (One to One) instead." msgstr "" -msgid "``pgr_KSP`` (One to One) does not have ``start_vid`` and ``end_vid``." +msgid "Use ``pgr_trsp_withPoints`` when there are restrictions." msgstr "" -msgid "" -"Using `this `__ " -"example." +msgid "Use :doc:`pgr_trsp_withPoints` instead." msgstr "" -msgid "" -"If needed filter out the added columns, for example, to return the original " -"columns:" +msgid "Migration of ``pgr_trspViaVertices``" msgstr "" -msgid "Migration of ``pgr_maxCardinalityMatch``" +msgid ":doc:`pgr_dijkstraVia`" msgstr "" -msgid "" -":doc:`pgr_maxCardinalityMatch` works only for undirected graphs, therefore " -"the ``directed`` flag has been removed." +msgid ":doc:`pgr_trspVia`" msgstr "" -msgid "" -"Starting from `v3.4.0 `__" +msgid "Use ``pgr_dijkstraVia`` when there are no restrictions" msgstr "" -msgid "Signature to be migrated:" +msgid "Use :doc:`pgr_dijkstraVia` instead." msgstr "" -msgid "Migration is needed, because:" +msgid "``id1`` is the path identifier" msgstr "" -msgid "Use ``cost`` and ``reverse_cost`` on the inner query" +msgid "``id2`` is the node" msgstr "" -msgid "Results are ordered" +msgid "``id3`` is the edge" msgstr "" -msgid "Works for undirected graphs." +msgid "Use ``pgr_trspVia`` when there are restrictions" msgstr "" -msgid "New signature" +msgid "Use :doc:`pgr_trspVia` instead." msgstr "" -msgid "``pgr_maxCardinalityMatch(text)`` returns only ``edge`` column." +msgid "Migration of ``pgr_trspViaEdges``" msgstr "" -msgid "The optional flag ``directed`` is removed." +msgid ":doc:`pgr_withPointsVia`" msgstr "" -msgid "Before migration" +msgid ":doc:`pgr_trspVia_withPoints`" msgstr "" -msgid "" -"Columns used are ``going`` and ``coming`` to represent the existence of an " -"edge." +msgid "Use ``pgr_withPointsVia`` when there are no restrictions" msgstr "" -msgid "" -"Flag ``directed`` was used to indicate if it was for a **directed** or " -"**undirected** graph." +msgid "Use :doc:`pgr_withPointsVia` instead." msgstr "" -msgid "The flag ``directed`` is ignored." +msgid "Use ``pgr_trspVia_withPoints`` when there are restrictions" msgstr "" -msgid "" -"Regardless of it's value it gives the result considering the graph as " -"**undirected**." +msgid "Use :doc:`pgr_trspVia_withPoints` instead." msgstr "" -msgid "" -"Use the columns ``cost`` and ``reverse_cost`` to represent the existence of " -"an edge." +msgid "Migration of restrictions" msgstr "" -msgid "Do not use the flag ``directed``." +msgid "The structure of the restrictions have changed:" msgstr "" -msgid "In the query returns only ``edge`` column." +msgid "Old restrictions structure" msgstr "" -msgid "Migration of ``pgr_primDD`` / ``pgr_primBFS`` / ``pgr_primDFS``" +msgid "On the deprecated signatures:" msgstr "" -msgid "" -"Starting from `v3.7.0 `__ :" -"doc:`pgr_primDD`, :doc:`pgr_primBFS` and :doc:`pgr_primDFS` result columns " -"are being standardized." +msgid "Column ``rid`` is ignored" msgstr "" -msgid "Prim single vertex" +msgid "``via_path``" msgstr "" -msgid "" -"Using ``pgr_primDD`` as example. Migration is similar to al the affected " -"functions." +msgid "Must be in reverse order." msgstr "" -msgid "" -"Comparing with `this `__ example." +msgid "Is of type ``TEXT``." msgstr "" -msgid "Prim multiple vertices" +msgid "When more than one via edge must be separated with ``,``." msgstr "" -msgid "" -"Comparing with `this `__ example." +msgid "``target_id``" msgstr "" -msgid "Migration of ``pgr_withPointsDD``" +msgid "Is the last edge of the forbidden path." msgstr "" -msgid "" -"Starting from `v3.6.0 `__ :" -"doc:`pgr_withPointsDD` result columns are being standardized." +msgid "Is of type ``INTEGER``." msgstr "" -msgid "|result-generic-no-seq|" +msgid "``to_cost``" msgstr "" -msgid "" -"And ``driving_side`` parameter changed from named optional to unnamed " -"compulsory **driving side** and its validity differ for directed and " -"undirected graphs." +msgid "Is of type ``FLOAT``." msgstr "" -msgid "``pgr_withPointsDD`` (Single vertex)" -msgstr "" - -msgid "``pgr_withPointsDD`` (Multiple vertices)" +msgid "Creation of the old restrictions table" msgstr "" -msgid "Output columns were |result-1-1-no-seq|" +msgid "Old restrictions fill up" msgstr "" -msgid "Does not have ``start_vid``, ``pred`` and ``depth`` result columns." +msgid "Old restrictions contents" msgstr "" msgid "" -"``driving_side`` parameter was named optional now it is compulsory unnamed." -msgstr "" - -msgid "``pgr_withPointsDD`` (`Multiple vertices`)" +"The restriction with ``rid = 2`` is representing :math:`3 \\rightarrow 5 " +"\\rightarrow9`" msgstr "" -msgid "Output columns were |result-m-1-no-seq|" +msgid ":math:`3\\rightarrow5`" msgstr "" -msgid "Does not have ``depth`` and ``pred`` result columns." +msgid "is on column ``via_path`` in reverse order" msgstr "" -msgid "Driving side was optional" +msgid "is of type ``TEXT``" msgstr "" -msgid "The default values on this query are:" +msgid ":math:`9`" msgstr "" -msgid "directed" +msgid "is on column ``target_id``" msgstr "" -msgid "true" +msgid "is of type ``INTEGER``" msgstr "" -msgid "driving_side" +msgid "New restrictions structure" msgstr "" -msgid "'b'" +msgid "Column ``id`` is ignored" msgstr "" -msgid "details" +msgid "Column ``path``" msgstr "" -msgid "false" +msgid "Is of type ``ARRAY[ANY-INTEGER]``." msgstr "" -msgid "Driving side was named optional" +msgid "Contains all the edges involved on the restriction." msgstr "" -msgid "On directed graph ``b`` could be used as **driving side**" +msgid "The array has the ordered edges of the restriction." msgstr "" -msgid "On undirected graph ``r`` could be used as **driving side**" +msgid "Column ``cost``" msgstr "" -msgid "Also ``l`` could be used as **driving side**" +msgid "Is of type ``ANY-NUMERICAL``" msgstr "" -msgid "After Migration" +msgid "The creation of the restrictions table" msgstr "" -msgid "Be aware of the existence of the additional result Columns." +msgid "Adding the restrictions" msgstr "" -msgid "New output columns are |result-spantree|" +msgid "Restrictions data" msgstr "" msgid "" -"**driving side** parameter is unnamed compulsory, and valid values differ " -"for directed and undirected graphs." +"The restriction with ``rid = 2`` represents the path :math:`3 \\rightarrow5 " +"\\rightarrow9`." msgstr "" -msgid "Does not have a default value." +msgid "By inspection the path is clear." msgstr "" -msgid "In directed graph: valid values are [``r``, ``R``, ``l``, ``L``]" +msgid "" +"To transform the old restrictions table to the new restrictions structure," msgstr "" -msgid "In undirected graph: valid values are [``b``, ``B``]" +msgid "Create a new table with the new restrictions structure." msgstr "" -msgid "Using an invalid value throws an ``ERROR``." +msgid "In this migration guide ``new_restrictions`` is been used." msgstr "" msgid "" -"Using `this `__ example." +"For this migration pgRouting supplies an auxiliary function for reversal of " +"an array ``_pgr_array_reverse`` needed for the migration." msgstr "" -msgid "" -"``depth`` contains the **depth** from the ``start_vid`` vertex to the " -"``node``." +msgid "``_pgr_array_reverse``:" msgstr "" -msgid "" -"To migrate, use an unnamed valid value for **driving side** after the " -"**distance** parameter:" +msgid "Was created temporally for this migration" msgstr "" -msgid "To get results from previous versions:" +msgid "Is not documented." msgstr "" -msgid "filter out the additional columns, for example;" +msgid "Will be removed on the next mayor version 4.0.0" msgstr "" -msgid "" -"When ``details => false`` to remove the points use ``WHERE node >= 0 OR cost " -"= 0``" +msgid "The migrated table contents:" msgstr "" -msgid "" -"Using `this `__ example." +msgid ":doc:`withPoints-category`" msgstr "" -msgid "Filter out the additional columns" +msgid "Ordering - Family of functions" msgstr "" -msgid "Migration of ``pgr_withPointsKSP``" +msgid "pgRouting Concepts" msgstr "" msgid "" -"Starting from `v3.6.0 `__ :" -"doc:`pgr_withPointsKSP` result columns are being standardized." +"This is a simple guide that go through some of the steps for getting started " +"with pgRouting. This guide covers:" msgstr "" -msgid "" -"And ``driving side`` parameter changed from named optional to unnamed " -"compulsory **driving side** and its validity differ for directed and " -"undirected graphs." +msgid "Graphs" msgstr "" -msgid "``pgr_withPointsKSP`` (`One to One`)" +msgid "A graph is an ordered pair :math:`G = (V ,E)` where:" msgstr "" -msgid "Output columns were |old-pid-result|" +msgid ":math:`V` is a set of vertices, also called nodes." msgstr "" -msgid "New output columns are |nksp-result|" +msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V \\}`" msgstr "" -msgid "" -"Using `this `__ example." +msgid "There are different kinds of graphs:" msgstr "" -msgid "" -"If needed filter out the additional columns, for example, to return the " -"original columns:" +msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V\\}`" msgstr "" -msgid "Migration of turn restrictions" +msgid "Undirected simple graph" msgstr "" -msgid "Migration of restrictions" +msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V, u \\neq v\\}`" msgstr "" -msgid "The structure of the restrictions have changed:" +msgid ":math:`E \\subseteq \\{( u, v ) \\mid (u , v) \\in (V X V) \\}`" msgstr "" -msgid "Old restrictions structure" +msgid "Directed simple graph" msgstr "" -msgid "On the deprecated signatures:" +msgid "" +":math:`E \\subseteq \\{( u, v ) \\mid (u , v) \\in (V X V), u \\neq v\\}`" msgstr "" -msgid "Column ``rid`` is ignored" +msgid "Graphs:" msgstr "" -msgid "``via_path``" +msgid "Do not have geometries." msgstr "" -msgid "Must be in reverse order." +msgid "" +"Some graph theory problems require graphs to have weights, called **cost** " +"in pgRouting." msgstr "" -msgid "Is of type ``TEXT``." +msgid "" +"In pgRouting there are several ways to represent a graph on the database:" msgstr "" -msgid "When more than one via edge must be separated with ``,``." +msgid "With ``cost``" msgstr "" -msgid "``target_id``" +msgid "(``id``, ``source``, ``target``, ``cost``)" msgstr "" -msgid "Is the last edge of the forbidden path." +msgid "With ``cost`` and ``reverse_cost``" msgstr "" -msgid "Is of type ``INTEGER``." +msgid "(``id``, ``source``, ``target``, ``cost``, ``reverse_cost``)" msgstr "" -msgid "``to_cost``" +msgid "" +"Identifier of the edge. Requirement to use the database in a consistent. " +"manner." msgstr "" -msgid "Is of type ``FLOAT``." +msgid "Identifier of a vertex." msgstr "" -msgid "Creation of the old restrictions table" +msgid "Weight of the edge (``source``, ``target``):" msgstr "" -msgid "Old restrictions fill up" +msgid "" +"When negative the edge (``source``, ``target``) do not exist on the graph." msgstr "" -msgid "Old restrictions contents" +msgid "``cost`` must exist in the query." msgstr "" msgid "" -"The restriction with ``rid = 2`` is representing :math:`3 \\rightarrow 5 " -"\\rightarrow9`" +"When negative the edge (``target``, ``source``) do not exist on the graph." msgstr "" -msgid ":math:`3\\rightarrow5`" +msgid "" +"The decision of the graph to be **directed** or **undirected** is done when " +"executing a pgRouting algorithm." msgstr "" -msgid "is on column ``via_path`` in reverse order" +msgid "Graph with ``cost``" msgstr "" -msgid "is of type ``TEXT``" +msgid "The weighted directed graph, :math:`G_d(V,E)`:" msgstr "" -msgid ":math:`9`" +msgid "Graph data is obtained with a query" msgstr "" -msgid "is on column ``target_id``" +msgid "``SELECT id, source, target, cost FROM edges``" msgstr "" -msgid "is of type ``INTEGER``" +msgid "" +":math:`E = \\{(source_{id}, target_{id}, cost_{id}) \\text{ when } cost_{id} " +"\\ge 0 \\}`" msgstr "" -msgid "New restrictions structure" +msgid "Edges where ``cost`` is non negative are part of the graph." msgstr "" -msgid "Column ``id`` is ignored" +msgid ":math:`V = \\{source_{id} \\cup target_{id}\\}`" msgstr "" -msgid "Column ``path``" +msgid "All vertices in ``source`` and ``target`` are part of the graph." msgstr "" -msgid "Is of type ``ARRAY[ANY-INTEGER]``." +msgid "" +"In a directed graph the edge :math:`(source_{id}, target_{id}, cost_{id})` " +"has directionality: :math:`source_{id} \\rightarrow target_{id}`" msgstr "" -msgid "Contains all the edges involved on the restriction." +msgid "For the following data:" msgstr "" -msgid "The array has the ordered edges of the restriction." +msgid "Edge :math:`2` (:math:`1 \\rightarrow 3`) is not part of the graph." msgstr "" -msgid "Column ``cost``" +msgid "The data is representing the following graph:" msgstr "" -msgid "Is of type ``ANY-NUMERICAL``" +msgid "" +"In an undirected graph the edge :math:`(source_{id}, target_{id}, " +"cost_{id})` does not have directionality: :math:`source_{id} \\frac{\\;\\;\\;" +"\\;\\;}{} target_{id}`" msgstr "" -msgid "The creation of the restrictions table" +msgid "" +"In terms of a directed graph is like having two edges: :math:`source_{id} " +"\\leftrightarrow target_{id}`" msgstr "" -msgid "Adding the restrictions" +msgid "" +"Edge :math:`2` (:math:`1 \\frac{\\;\\;\\;\\;\\;}{} 3`) is not part of the " +"graph." msgstr "" -msgid "Restrictions data" +msgid "Graph with ``cost`` and ``reverse_cost``" +msgstr "" + +msgid "``SELECT id, source, target, cost, reverse_cost FROM edges``" +msgstr "" + +msgid "The set of edges :math:`E`:" msgstr "" msgid "" -"The restriction with ``rid = 2`` represents the path :math:`3 \\rightarrow5 " -"\\rightarrow9`." +":math:`E = \\begin{split} \\begin{align} & {\\{(source_{id}, target_{id}, " +"cost_{id}) \\text{ when } cost_{id} >=0 \\}} \\\\ & \\cup \\\\ & " +"{\\{(target_{id}, source_{id}, reverse\\_cost_{id}) \\text{ when } " +"reverse\\_cost_{id} >=0 \\}} \\end{align} \\end{split}`" msgstr "" -msgid "By inspection the path is clear." +msgid "" +"Edges :math:`(source \\rightarrow target)` where ``cost`` is non negative " +"are part of the graph." msgstr "" msgid "" -"To transform the old restrictions table to the new restrictions structure," +"Edges :math:`(target \\rightarrow source)` where ``reverse_cost`` is non " +"negative are part of the graph." msgstr "" -msgid "Create a new table with the new restrictions structure." +msgid "The set of vertices :math:`V`:" msgstr "" -msgid "In this migration guide ``new_restrictions`` is been used." +msgid "In a directed graph both edges have directionality" msgstr "" msgid "" -"For this migration pgRouting supplies an auxiliary function for reversal of " -"an array ``_pgr_array_reverse`` needed for the migration." +"edge :math:`(source_{id}, target_{id}, cost_{id})` has directionality: :math:" +"`source_{id} \\rightarrow target_{id}`" msgstr "" -msgid "``_pgr_array_reverse``:" +msgid "" +"edge :math:`(target_{id}, source_{id}, reverse\\_cost_{id})` has " +"directionality: :math:`target_{id} \\rightarrow source_{id}`" msgstr "" -msgid "Was created temporally for this migration" +msgid "Edges not part of the graph:" msgstr "" -msgid "Is not documented." +msgid ":math:`2` (:math:`1 \\rightarrow 3`)" msgstr "" -msgid "Will be removed on the next mayor version 4.0.0" +msgid ":math:`3` (:math:`3 \\rightarrow 2`)" msgstr "" -msgid "The migrated table contents:" +msgid "In a directed graph both edges do not have directionality" msgstr "" -msgid "Migration of ``pgr_trsp`` (Vertices)" +msgid "" +"Edge :math:`(source_{id}, target_{id}, cost_{id})` is :math:`source_{id} " +"\\frac{\\;\\;\\;\\;\\;}{} target_{id}`" msgstr "" msgid "" -":doc:`pgr_trsp` signatures have changed and many issues have been fixed in " -"the new signatures. This section will show how to migrate from the old " -"signatures to the new replacement functions. This also affects the " -"restrictions." +"Edge :math:`(target_{id}, source_{id}, reverse\\_cost_{id})` is :math:" +"`target_{id} \\frac{\\;\\;\\;\\;\\;}{} source_{id}`" msgstr "" -msgid "The integral type of the ``Edges SQL`` can only be ``INTEGER``." +msgid "In terms of a directed graph is like having four edges:" msgstr "" -msgid "The floating point type of the ``Edges SQL`` can only be ``FLOAT``." +msgid ":math:`source_i \\leftrightarrow target_i`" msgstr "" -msgid "``directed`` flag is compulsory." +msgid ":math:`target_i \\leftrightarrow source_i`" msgstr "" -msgid "Does not autodetect if ``reverse_cost`` column exist." +msgid ":math:`2` (:math:`1 \\frac{\\;\\;\\;\\;\\;}{} 3`)" msgstr "" -msgid "" -"User must be careful to match the existence of the column with the value of " -"``has_rcost`` parameter." +msgid ":math:`3` (:math:`3 \\frac{\\;\\;\\;\\;\\;}{} 2`)" msgstr "" -msgid "The restrictions inner query is optional." +msgid "Graphs without geometries" msgstr "" -msgid "The output column names are meaningless" +msgid "" +"Personal relationships, genealogy, file dependency problems can be solved " +"using pgRouting. Those problems, normally, do not come with geometries " +"associated with the graph." msgstr "" -msgid "Migrate by using:" +msgid "Wiki example" msgstr "" -msgid ":doc:`pgr_dijkstra` when there are no restrictions," +msgid "" +"Solve the example problem taken from `wikipedia `__):" msgstr "" -msgid ":doc:`pgr_trsp` (One to One) when there are restrictions." +msgid "Problem is to find the shortest path from :math:`1` to :math:`5`." msgstr "" -msgid "Migrating ``pgr_trsp`` (Vertices) using ``pgr_dijkstra``" +msgid "Is an undirected graph." msgstr "" -msgid "The following query does not have restrictions." +msgid "" +"Although visually looks like to have geometries, the drawing is not to scale." msgstr "" -msgid "A message about deprecation is shown" +msgid "No geometries associated to the vertices or edges" msgstr "" -msgid "Deprecated functions will be removed on the next mayor version 4.0.0" +msgid "Has 6 vertices :math:`\\{1,2,3,4,5,6\\}`" msgstr "" -msgid "Use :doc:`pgr_dijkstra` instead." +msgid "Has 9 edges:" +msgstr "" + +msgid "" +":math:`\\begin{split} \\begin{align} E = & \\{(1,2,7), (1,3,9), (1,6,14), \\" +"\\ & (2,3,10), (2,4,13), \\\\ & (3,4,11), (3,6,2), \\\\ & (4,5,6), \\\\ & " +"(5,6,9) \\} \\end{align} \\end{split}`" msgstr "" -msgid "The types casting has been removed." +msgid "The graph can be represented in many ways for example:" msgstr "" -msgid ":doc:`pgr_dijkstra`:" +msgid "Prepare the database" msgstr "" -msgid "Autodetects if ``reverse_cost`` column is in the edges SQL." +msgid "" +"Create a database for the example, access the database and install " +"pgRouting: ::" msgstr "" -msgid "Accepts ``ANY-INTEGER`` on integral types" +msgid "Create a table" msgstr "" -msgid "Accepts ``ANY-NUMERICAL`` on floating point types" +msgid "" +"The basic elements needed to perform basic routing on an undirected graph " +"are:" msgstr "" -msgid "``directed`` flag has a default value of ``true``." +msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT" msgstr "" -msgid "Use the same value that on the original query." +msgid "Using this table design for this example:" msgstr "" -msgid "In this example it is ``true`` which is the default value." +msgid "Insert the data" msgstr "" -msgid "The flag has been omitted and the default is been used." +msgid "Find the shortest path" msgstr "" -msgid "" -"When the need of using strictly the same (meaningless) names and types of " -"the function been migrated then:" +msgid "To solve this example :doc:`pgr_dijkstra` is used:" msgstr "" -msgid "``id1`` is the node" +msgid "" +"To go from :math:`1` to :math:`5` the path goes thru the following " +"vertices: :math:`1 \\rightarrow 3 \\rightarrow 6 \\rightarrow 5`" msgstr "" -msgid "``id2`` is the edge" +msgid "Vertex information" msgstr "" -msgid "Migrating ``pgr_trsp`` (Vertices) using ``pgr_trsp``" +msgid "To obtain the vertices information, use :doc:`pgr_extractVertices`" msgstr "" -msgid "The following query has restrictions." +msgid "Graphs with geometries" msgstr "" -msgid "The restrictions are the last parameter of the function" +msgid "Create a routing Database" msgstr "" -msgid "Using the old structure of restrictions" +msgid "" +"The first step is to create a database and load pgRouting in the database." msgstr "" -msgid "Use :doc:`pgr_trsp` (One to One) instead." +msgid "Typically create a database for each project." msgstr "" -msgid "The new structure of restrictions is been used." +msgid "" +"Once having the database to work in, load your data and build the routing " +"application in that database." msgstr "" -msgid "It is the second parameter." +msgid "Load Data" msgstr "" -msgid ":doc:`pgr_trsp`:" +msgid "There are several ways to load your data into pgRouting." msgstr "" -msgid "Migration of ``pgr_trsp`` (Edges)" +msgid "Manually creating a database." msgstr "" -msgid "The integral types of the ``sql`` can only be ``INTEGER``." +msgid "`Graphs without geometries`_" msgstr "" -msgid "The floating point type of the ``sql`` can only be ``FLOAT``." +msgid ":doc:`sampledata`: a small graph used in the documentation examples" msgstr "" -msgid "For these migration guide the following points will be used:" +msgid "" +"Using `osm2pgrouting `__" msgstr "" -msgid ":doc:`pgr_withPoints` when there are no restrictions," +msgid "There are various open source tools that can help, like:" msgstr "" -msgid ":doc:`pgr_trsp_withPoints` (One to One) when there are restrictions." +msgid "shp2pgsql" msgstr "" -msgid "Migrating ``pgr_trsp`` (Edges) using ``pgr_withPoints``" +msgid "postgresql shapefile loader" msgstr "" -msgid "Use :doc:`pgr_withPoints` instead." +msgid "ogr2ogr" msgstr "" -msgid "Do not show details, as the deprecated function does not show details." +msgid "vector data conversion utility" msgstr "" -msgid ":doc:`pgr_withPoints`:" +msgid "osm2pgsql" msgstr "" -msgid "On the points query do not include the ``side`` column." +msgid "load OSM data into postgresql" msgstr "" msgid "" -"When the need of using strictly the same (meaningless) names and types, and " -"node values of the function been migrated then:" +"Please note that these tools will **not** import the data in a structure " +"compatible with pgRouting and when this happens the topology needs to be " +"adjusted." msgstr "" -msgid "Migrating ``pgr_trsp`` (Edges) using ``pgr_trsp_withPoints``" +msgid "Breakup a segments on each segment-segment intersection" msgstr "" -msgid "Use :doc:`pgr_trsp_withPoints` instead." +msgid "" +"When missing, add columns and assign values to ``source``, ``target``, " +"``cost``, ``reverse_cost``." msgstr "" -msgid ":doc:`pgr_trsp_withPoints`:" +msgid "Connect a disconnected graph." msgstr "" -msgid "Migration of ``pgr_trspViaVertices``" +msgid "Create the complete graph topology" msgstr "" -msgid "The integral types of the ``Edges SQL`` can only be ``INTEGER``." +msgid "Create one or more graphs based on the application to be developed." msgstr "" -msgid ":doc:`pgr_dijkstraVia` when there are no restrictions," +msgid "Create a contracted graph for the high speed roads" msgstr "" -msgid ":doc:`pgr_trspVia` when there are restrictions." +msgid "Create graphs per state/country" msgstr "" -msgid "Migrating ``pgr_trspViaVertices`` using ``pgr_dijkstraVia``" +msgid "In few words:" msgstr "" -msgid "Use :doc:`pgr_dijkstraVia` instead." +msgid "Prepare the graph" msgstr "" -msgid ":doc:`pgr_dijkstraVia`:" +msgid "" +"What and how to prepare the graph, will depend on the application and/or on " +"the quality of the data and/or on how close the information is to have a " +"topology usable by pgRouting and/or some other factors not mentioned." msgstr "" -msgid "``id1`` is the path identifier" +msgid "" +"The steps to prepare the graph involve geometry operations using `PostGIS " +"`__ and some others involve graph operations like :doc:" +"`pgr_contraction` to contract a graph." msgstr "" -msgid "``id2`` is the node" +msgid "" +"The `workshop `__ has a step by step " +"on how to prepare a graph using Open Street Map data, for a small " +"application." msgstr "" -msgid "``id3`` is the edge" +msgid "The use of indexes on the database design in general:" msgstr "" -msgid "Migrating ``pgr_trspViaVertices`` using ``pgr_trspVia``" +msgid "Have the geometries indexed." msgstr "" -msgid "Use :doc:`pgr_trspVia` instead." +msgid "Have the identifiers columns indexed." msgstr "" -msgid ":doc:`pgr_trspVia`:" +msgid "" +"Please consult the `PostgreSQL `__ " +"documentation and the `PostGIS `__ documentation." msgstr "" -msgid "Migration of ``pgr_trspViaEdges``" +msgid "Build a routing topology" msgstr "" msgid "" -"And will travel thru the following Via points :math:" -"`4\\rightarrow3\\rightarrow6`" +"The basic information to use the majority of the pgRouting functions ``id, " +"source, target, cost, [reverse_cost]`` is what in pgRouting is called the " +"routing topology." msgstr "" -msgid ":doc:`pgr_withPointsVia` when there are no restrictions," +msgid "" +"``reverse_cost`` is optional but strongly recommended to have in order to " +"reduce the size of the database due to the size of the geometry columns. " +"Having said that, in this documentation ``reverse_cost`` is used in this " +"documentation." msgstr "" -msgid ":doc:`pgr_trspVia_withPoints` when there are restrictions." +msgid "" +"When the data comes with geometries and there is no routing topology, then " +"this step is needed." msgstr "" -msgid "Migrating ``pgr_trspViaEdges`` using ``pgr_withPointsVia``" +msgid "" +"All the start and end vertices of the geometries need an identifier that is " +"to be stored in a ``source`` and ``target`` columns of the table of the " +"data. Likewise, ``cost`` and ``reverse_cost`` need to have the value of " +"traversing the edge in both directions." msgstr "" -msgid "Use :doc:`pgr_withPointsVia` instead." +msgid "" +"If the columns do not exist they need to be added to the table in question. " +"(see `ALTER TABLE `__)" msgstr "" -msgid ":doc:`pgr_withPointsVia`:" +msgid "" +"The function :doc:`pgr_extractVertices` is used to create a vertices table " +"based on the edge identifier and the geometry of the edge of the graph." msgstr "" -msgid "Migrating ``pgr_trspViaEdges`` using ``pgr_trspVia_withPoints``" +msgid "" +"Finally using the data stored on the vertices tables the ``source`` and " +"``target`` are filled up." msgstr "" -msgid "Use :doc:`pgr_trspVia_withPoints` instead." +msgid "See :doc:`sampledata` for an example for building a topology." msgstr "" -msgid ":doc:`pgr_trspVia_withPoints`:" +msgid "" +"Data coming from OSM and using `osm2pgrouting `__ as an import tool, comes with the routing topology. See an " +"example of using ``osm2pgrouting`` on the `workshop `__." msgstr "" -msgid ":doc:`withPoints-category`" +msgid "Adjust costs" msgstr "" -msgid "Ordering - Family of functions" +msgid "" +"For this example the ``cost`` and ``reverse_cost`` values are going to be " +"the double of the length of the geometry." msgstr "" -msgid "pgRouting Concepts" +msgid "Update costs to length of geometry" msgstr "" msgid "" -"This is a simple guide that go through some of the steps for getting started " -"with pgRouting. This guide covers:" +"Suppose that ``cost`` and ``reverse_cost`` columns in the sample data " +"represent:" msgstr "" -msgid "Graphs" +msgid ":math:`1` when the edge exists in the graph" msgstr "" -msgid "A graph is an ordered pair :math:`G = (V ,E)` where:" +msgid ":math:`-1` when the edge does not exist in the graph" msgstr "" -msgid ":math:`V` is a set of vertices, also called nodes." +msgid "Using that information updating to the length of the geometries:" msgstr "" -msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V \\}`" +msgid "Which gives the following results:" msgstr "" -msgid "There are different kinds of graphs:" +msgid "" +"Note that to be able to follow the documentation examples, everything is " +"based on the original graph." msgstr "" -msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V\\}`" +msgid "Returning to the original data:" msgstr "" -msgid "Undirected simple graph" +msgid "Update costs based on codes" msgstr "" -msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V, u \\neq v\\}`" +msgid "Other datasets, can have a column with values like" msgstr "" -msgid ":math:`E \\subseteq \\{( u, v ) \\mid (u , v) \\in (V X V) \\}`" +msgid "``FT`` vehicle flow on the direction of the geometry" msgstr "" -msgid "Directed simple graph" +msgid "``TF`` vehicle flow opposite of the direction of the geometry" msgstr "" -msgid "" -":math:`E \\subseteq \\{( u, v ) \\mid (u , v) \\in (V X V), u \\neq v\\}`" +msgid "``B`` vehicle flow on both directions" msgstr "" -msgid "Graphs:" +msgid "Preparing a code column for the example:" msgstr "" -msgid "Do not have geometries." +msgid "Adjusting the costs based on the codes:" msgstr "" -msgid "" -"Some graph theory problems require graphs to have weights, called **cost** " -"in pgRouting." +msgid "Check the Routing Topology" msgstr "" -msgid "" -"In pgRouting there are several ways to represent a graph on the database:" +msgid "There are lots of possible problems in a graph." msgstr "" -msgid "With ``cost``" +msgid "The data used may not have been designed with routing in mind." msgstr "" -msgid "(``id``, ``source``, ``target``, ``cost``)" +msgid "A graph has some very specific requirements." msgstr "" -msgid "With ``cost`` and ``reverse_cost``" +msgid "The graph is disconnected." msgstr "" -msgid "(``id``, ``source``, ``target``, ``cost``, ``reverse_cost``)" +msgid "There are unwanted intersections." msgstr "" -msgid "" -"Identifier of the edge. Requirement to use the database in a consistent. " -"manner." +msgid "The graph is too large and needs to be contracted." msgstr "" -msgid "Identifier of a vertex." +msgid "A sub graph is needed for the application." msgstr "" -msgid "Weight of the edge (``source``, ``target``):" +msgid "" +"and many other problems that the pgRouting user, that is the application " +"developer might encounter." msgstr "" -msgid "" -"When negative the edge (``source``, ``target``) do not exist on the graph." +msgid "Crossing edges" msgstr "" -msgid "``cost`` must exist in the query." +msgid "To get the crossing edges:" msgstr "" msgid "" -"When negative the edge (``target``, ``source``) do not exist on the graph." +"That information is correct, for example, when in terms of vehicles, is it a " +"tunnel or bridge crossing over another road." +msgstr "" + +msgid "It might be incorrect, for example:" msgstr "" msgid "" -"The decision of the graph to be **directed** or **undirected** is done when " -"executing a pgRouting algorithm." +"When it is actually an intersection of roads, where vehicles can make turns." msgstr "" -msgid "Graph with ``cost``" +msgid "" +"When in terms of electrical lines, the electrical line is able to switch " +"roads even on a tunnel or bridge." msgstr "" -msgid "The weighted directed graph, :math:`G_d(V,E)`:" +msgid "When it is incorrect, it needs fixing:" msgstr "" -msgid "Graph data is obtained with a query" +msgid "For vehicles and pedestrians" msgstr "" -msgid "``SELECT id, source, target, cost FROM edges``" +msgid "" +"If the data comes from OSM and was imported to the database using " +"``osm2pgrouting``, the fix needs to be done in the `OSM portal `__ and the data imported again." msgstr "" msgid "" -":math:`E = \\{(source_{id}, target_{id}, cost_{id}) \\text{ when } cost_{id} " -"\\ge 0 \\}`" +"In general when the data comes from a supplier that has the data prepared " +"for routing vehicles, and there is a problem, the data is to be fixed from " +"the supplier" msgstr "" -msgid "Edges where ``cost`` is non negative are part of the graph." +msgid "For very specific applications" msgstr "" -msgid ":math:`V = \\{source_{id} \\cup target_{id}\\}`" +msgid "" +"The data is correct when from the point of view of routing vehicles or " +"pedestrians." msgstr "" -msgid "All vertices in ``source`` and ``target`` are part of the graph." +msgid "The data needs a local fix for the specific application." msgstr "" msgid "" -"In a directed graph the edge :math:`(source_{id}, target_{id}, cost_{id})` " -"has directionality: :math:`source_{id} \\rightarrow target_{id}`" +"Once analyzed one by one the crossings, for the ones that need a local fix, " +"the edges need to be `split `__." msgstr "" -msgid "For the following data:" +msgid "" +"The new edges need to be added to the edges table, the rest of the " +"attributes need to be updated in the new edges, the old edges need to be " +"removed and the routing topology needs to be updated." msgstr "" -msgid "Edge :math:`2` (:math:`1 \\rightarrow 3`) is not part of the graph." +msgid "Adding split edges" msgstr "" -msgid "The data is representing the following graph:" +msgid "" +"For each pair of crossing edges a process similar to this one must be " +"performed." msgstr "" msgid "" -"In an undirected graph the edge :math:`(source_{id}, target_{id}, " -"cost_{id})` does not have directionality: :math:`source_{id} \\frac{\\;\\;\\;" -"\\;\\;}{} target_{id}`" +"The columns inserted and the way are calculated are based on the " +"application. For example, if the edges have a trait **name**, then that " +"column is to be copied." msgstr "" -msgid "" -"In terms of a directed graph is like having two edges: :math:`source_{id} " -"\\leftrightarrow target_{id}`" +msgid "For pgRouting calculations" msgstr "" msgid "" -"Edge :math:`2` (:math:`1 \\frac{\\;\\;\\;\\;\\;}{} 3`) is not part of the " -"graph." +"**factor** based on the position of the intersection of the edges can be " +"used to adjust the ``cost`` and ``reverse_cost`` columns." msgstr "" -msgid "Graph with ``cost`` and ``reverse_cost``" +msgid "" +"Capacity information, used in the :doc:`flow-family` functions does not need " +"to change when splitting edges." msgstr "" -msgid "The weighted directed graph, :math:`G_d(V,E)`, is defined by:" +msgid "Adding new vertices" msgstr "" -msgid "``SELECT id, source, target, cost, reverse_cost FROM edges``" +msgid "" +"After adding all the split edges required by the application, the newly " +"created vertices need to be added to the vertices table." msgstr "" -msgid "The set of edges :math:`E`:" +msgid "Updating edges topology" msgstr "" -msgid "" -":math:`E = \\begin{split} \\begin{align} & {\\{(source_{id}, target_{id}, " -"cost_{id}) \\text{ when } cost_{id} >=0 \\}} \\\\ & \\cup \\\\ & " -"{\\{(target_{id}, source_{id}, reverse\\_cost_{id}) \\text{ when } " -"reverse\\_cost_{id} >=0 \\}} \\end{align} \\end{split}`" +msgid "Removing the surplus edges" msgstr "" msgid "" -"Edges :math:`(source \\rightarrow target)` where ``cost`` is non negative " -"are part of the graph." +"Once all significant information needed by the application has been " +"transported to the new edges, then the crossing edges can be deleted." msgstr "" msgid "" -"Edges :math:`(target \\rightarrow source)` where ``reverse_cost`` is non " -"negative are part of the graph." -msgstr "" - -msgid "The set of vertices :math:`V`:" -msgstr "" - -msgid "In a directed graph both edges have directionality" +"There are other options to do this task, like creating a view, or a " +"materialized view." msgstr "" -msgid "" -"edge :math:`(source_{id}, target_{id}, cost_{id})` has directionality: :math:" -"`source_{id} \\rightarrow target_{id}`" +msgid "Updating vertices topology" msgstr "" -msgid "" -"edge :math:`(target_{id}, source_{id}, reverse\\_cost_{id})` has " -"directionality: :math:`target_{id} \\rightarrow source_{id}`" +msgid "To keep the graph consistent, the vertices topology needs to be updated" msgstr "" -msgid "Edges not part of the graph:" +msgid "Checking for crossing edges" msgstr "" -msgid ":math:`2` (:math:`1 \\rightarrow 3`)" +msgid "There are no crossing edges on the graph." msgstr "" -msgid ":math:`3` (:math:`3 \\rightarrow 2`)" +msgid "Disconnected graphs" msgstr "" -msgid "In a directed graph both edges do not have directionality" +msgid "To get the graph connectivity:" msgstr "" msgid "" -"Edge :math:`(source_{id}, target_{id}, cost_{id})` is :math:`source_{id} " -"\\frac{\\;\\;\\;\\;\\;}{} target_{id}`" +"In this example, the component :math:`2` consists of vertices :math:`\\{2, " +"4\\}` and both vertices are also part of the dead end result set." msgstr "" -msgid "" -"Edge :math:`(target_{id}, source_{id}, reverse\\_cost_{id})` is :math:" -"`target_{id} \\frac{\\;\\;\\;\\;\\;}{} source_{id}`" +msgid "This graph needs to be connected." msgstr "" -msgid "In terms of a directed graph is like having four edges:" +msgid "" +"With the original graph of this documentation, there would be 3 components " +"as the crossing edge in this graph is a different component." msgstr "" -msgid ":math:`source_i \\leftrightarrow target_i`" +msgid "Prepare storage for connection information" msgstr "" -msgid ":math:`target_i \\leftrightarrow source_i`" +msgid "Save the vertices connection information" msgstr "" -msgid ":math:`2` (:math:`1 \\frac{\\;\\;\\;\\;\\;}{} 3`)" +msgid "Save the edges connection information" msgstr "" -msgid ":math:`3` (:math:`3 \\frac{\\;\\;\\;\\;\\;}{} 2`)" +msgid "Get the closest vertex" msgstr "" -msgid "Graphs without geometries" +msgid "" +"Using :doc:`pgr_findCloseEdges` the closest vertex to component :math:`1` is " +"vertex :math:`4`. And the closest edge to vertex :math:`4` is edge :math:" +"`14`." msgstr "" msgid "" -"Personal relationships, genealogy, file dependency problems can be solved " -"using pgRouting. Those problems, normally, do not come with geometries " -"associated with the graph." +"The ``edge`` can be used to connect the components, using the ``fraction`` " +"information about the edge :math:`14` to split the connecting edge." msgstr "" -msgid "Wiki example" +msgid "Connecting components" msgstr "" -msgid "" -"Solve the example problem taken from `wikipedia `__):" +msgid "There are three basic ways to connect the components" msgstr "" -msgid "Problem is to find the shortest path from :math:`1` to :math:`5`." +msgid "From the vertex to the starting point of the edge" msgstr "" -msgid "Is an undirected graph." +msgid "From the vertex to the ending point of the edge" msgstr "" -msgid "" -"Although visually looks like to have geometries, the drawing is not to scale." +msgid "From the vertex to the closest vertex on the edge" msgstr "" -msgid "No geometries associated to the vertices or edges" +msgid "This solution requires the edge to be split." msgstr "" -msgid "Has 6 vertices :math:`\\{1,2,3,4,5,6\\}`" +msgid "The following query shows the three ways to connect the components:" msgstr "" -msgid "Has 9 edges:" +msgid "Checking components" msgstr "" msgid "" -":math:`\\begin{split} \\begin{align} E = & \\{(1,2,7), (1,3,9), (1,6,14), \\" -"\\ & (2,3,10), (2,4,13), \\\\ & (3,4,11), (3,6,2), \\\\ & (4,5,6), \\\\ & " -"(5,6,9) \\} \\end{align} \\end{split}`" +"Ignoring the edge that requires further work. The graph is now fully " +"connected as there is only one component." msgstr "" -msgid "The graph can be represented in many ways for example:" +msgid "Contraction of a graph" msgstr "" -msgid "Prepare the database" +msgid "The graph can be reduced in size using :doc:`contraction-family`" msgstr "" msgid "" -"Create a database for the example, access the database and install " -"pgRouting: ::" +"When to contract will depend on the size of the graph, processing times, " +"correctness of the data, on the final application, or any other factor not " +"mentioned." msgstr "" -msgid "Create a table" +msgid "" +"A fairly good method of finding out if contraction can be useful is because " +"of the number of dead ends and/or the number of linear edges." msgstr "" msgid "" -"The basic elements needed to perform basic routing on an undirected graph " -"are:" +"A complete method on how to contract and how to use the contracted graph is " +"described on :doc:`contraction-family`" msgstr "" -msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT" +msgid "Dead ends" msgstr "" -msgid "Using this table design for this example:" +msgid "To get the dead ends:" msgstr "" -msgid "Insert the data" +msgid "A dead end happens when" msgstr "" -msgid "Find the shortest path" +msgid "" +"The vertex is the limit of a cul-de-sac, a no-through road or a no-exit road." msgstr "" -msgid "To solve this example :doc:`pgr_dijkstra` is used:" +msgid "The vertex is on the limit of the imported graph." +msgstr "" + +msgid "If a larger graph is imported then the vertex might not be a dead end" msgstr "" msgid "" -"To go from :math:`1` to :math:`5` the path goes thru the following " -"vertices: :math:`1 \\rightarrow 3 \\rightarrow 6 \\rightarrow 5`" +"Node :math:`4`, is a dead end on the query, even that it visually looks like " +"an end point of 3 edges." msgstr "" -msgid "Vertex information" +msgid "Is node :math:`4` a dead end or not?" msgstr "" -msgid "To obtain the vertices information, use :doc:`pgr_extractVertices`" +msgid "The answer to that question will depend on the application." msgstr "" -msgid "Graphs with geometries" +msgid "Is there such a small curb:" msgstr "" -msgid "Create a routing Database" +msgid "That does not allow a vehicle to use that visual intersection?" msgstr "" msgid "" -"The first step is to create a database and load pgRouting in the database." +"Is the application for pedestrians and therefore the pedestrian can easily " +"walk on the small curb?" msgstr "" -msgid "Typically create a database for each project." +msgid "" +"Is the application for the electricity and the electrical lines than can " +"easily be extended on top of the small curb?" msgstr "" msgid "" -"Once having the database to work in, load your data and build the routing " -"application in that database." +"Is there a big cliff and from eagles view look like the dead end is close to " +"the segment?" msgstr "" -msgid "Load Data" +msgid "Depending on the answer, modification of the data might be needed." msgstr "" -msgid "There are several ways to load your data into pgRouting." +msgid "" +"When there are many dead ends, to speed up processing, the :doc:`contraction-" +"family` functions can be used to contract the graph." msgstr "" -msgid "Manually creating a database." +msgid "Linear edges" msgstr "" -msgid "`Graphs without geometries`_" +msgid "To get the linear edges:" msgstr "" -msgid ":doc:`sampledata`: a small graph used in the documentation examples" +msgid "" +"These linear vertices are correct, for example, when those the vertices are " +"speed bumps, stop signals and the application is taking them into account." msgstr "" msgid "" -"Using `osm2pgrouting `__" +"When there are many linear vertices, that need not to be taken into account, " +"to speed up the processing, the :doc:`contraction-family` functions can be " +"used to contract the problem." msgstr "" -msgid "There are various open source tools that can help, like:" +msgid "Function's structure" msgstr "" -msgid "shp2pgsql" +msgid "" +"Once the graph preparation work has been done above, it is time to use a" msgstr "" -msgid "postgresql shapefile loader" +msgid "The general form of a pgRouting function call is:" msgstr "" -msgid "ogr2ogr" +msgid "\\ \\" msgstr "" -msgid "vector data conversion utility" +msgid "pgr_(`Inner queries`_, **parameters**, [ ``Optional parameters``)" msgstr "" -msgid "osm2pgsql" +msgid "" +"`Inner queries`_: Are compulsory parameters that are ``TEXT`` strings " +"containing SQL queries." msgstr "" -msgid "load OSM data into postgresql" +msgid "" +"**parameters**: Additional compulsory parameters needed by the function." msgstr "" msgid "" -"Please note that these tools will **not** import the data in a structure " -"compatible with pgRouting and when this happens the topology needs to be " -"adjusted." +"``Optional parameters``: Are non compulsory **named** parameters that have a " +"default value when omitted." msgstr "" -msgid "Breakup a segments on each segment-segment intersection" +msgid "" +"The compulsory parameters are positional parameters, the optional parameters " +"are named parameters." +msgstr "" + +msgid "For example, for this :doc:`pgr_dijkstra` signature:" msgstr "" msgid "" -"When missing, add columns and assign values to ``source``, ``target``, " -"``cost``, ``reverse_cost``." +"pgr_dijkstra(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" msgstr "" -msgid "Connect a disconnected graph." +msgid "`Edges SQL`_:" msgstr "" -msgid "Create the complete graph topology" +msgid "Is the first parameter." msgstr "" -msgid "Create one or more graphs based on the application to be developed." +msgid "It is compulsory." msgstr "" -msgid "Create a contracted graph for the high speed roads" +msgid "It is an inner query." msgstr "" -msgid "Create graphs per state/country" +msgid "" +"It has no name, so **Edges SQL** gives an idea of what kind of inner query " +"needs to be used" msgstr "" -msgid "In few words:" +msgid "**start vid**:" msgstr "" -msgid "Prepare the graph" +msgid "Is the second parameter." msgstr "" msgid "" -"What and how to prepare the graph, will depend on the application and/or on " -"the quality of the data and/or on how close the information is to have a " -"topology usable by pgRouting and/or some other factors not mentioned." +"It has no name, so **start vid** gives an idea of what the second " +"parameter's value should contain." msgstr "" -msgid "" -"The steps to prepare the graph involve geometry operations using `PostGIS " -"`__ and some others involve graph operations like :doc:" -"`pgr_contraction` to contract a graph." +msgid "Is the third parameter." msgstr "" msgid "" -"The `workshop `__ has a step by step " -"on how to prepare a graph using Open Street Map data, for a small " -"application." +"It has no name, so **end vid** gives an idea of what the third parameter's " +"value should contain" msgstr "" -msgid "The use of indexes on the database design in general:" +msgid "Is the fourth parameter." msgstr "" -msgid "Have the geometries indexed." +msgid "It is optional." msgstr "" -msgid "Have the identifiers columns indexed." +msgid "It has a name." msgstr "" msgid "" -"Please consult the `PostgreSQL `__ " -"documentation and the `PostGIS `__ documentation." -msgstr "" - -msgid "Build a routing topology" +"The full description of the parameters are found on the `Parameters`_ " +"section of each function." msgstr "" -msgid "" -"The basic information to use the majority of the pgRouting functions ``id, " -"source, target, cost, [reverse_cost]`` is what in pgRouting is called the " -"routing topology." +msgid "Function's overloads" msgstr "" -msgid "" -"``reverse_cost`` is optional but strongly recommended to have in order to " -"reduce the size of the database due to the size of the geometry columns. " -"Having said that, in this documentation ``reverse_cost`` is used in this " -"documentation." +msgid "A function might have different overloads. The most common are called:" msgstr "" -msgid "" -"When the data comes with geometries and there is no routing topology, then " -"this step is needed." +msgid "`One to One`_" msgstr "" -msgid "" -"All the start and end vertices of the geometries need an identifier that is " -"to be stored in a ``source`` and ``target`` columns of the table of the " -"data. Likewise, ``cost`` and ``reverse_cost`` need to have the value of " -"traversing the edge in both directions." +msgid "`One to Many`_" msgstr "" -msgid "" -"If the columns do not exist they need to be added to the table in question. " -"(see `ALTER TABLE `__)" +msgid "`Many to One`_" msgstr "" -msgid "" -"The function :doc:`pgr_extractVertices` is used to create a vertices table " -"based on the edge identifier and the geometry of the edge of the graph." +msgid "`Many to Many`_" msgstr "" -msgid "" -"Finally using the data stored on the vertices tables the ``source`` and " -"``target`` are filled up." +msgid "`Combinations`_" msgstr "" -msgid "See :doc:`sampledata` for an example for building a topology." +msgid "Depending on the overload the parameters types change." msgstr "" -msgid "" -"Data coming from OSM and using `osm2pgrouting `__ as an import tool, comes with the routing topology. See an " -"example of using ``osm2pgrouting`` on the `workshop `__." +msgid "**One**: **ANY-INTEGER**" msgstr "" -msgid "Adjust costs" +msgid "**Many**: ``ARRAY`` [**ANY-INTEGER**]" msgstr "" msgid "" -"For this example the ``cost`` and ``reverse_cost`` values are going to be " -"the double of the length of the geometry." +"Depending of the function the overloads may vary. But the concept of " +"parameter type change remains the same." msgstr "" -msgid "Update costs to length of geometry" +msgid "One to One" msgstr "" -msgid "" -"Suppose that ``cost`` and ``reverse_cost`` columns in the sample data " -"represent:" +msgid "When routing from:" msgstr "" -msgid ":math:`1` when the edge exists in the graph" +msgid "From **one** starting vertex" msgstr "" -msgid ":math:`-1` when the edge does not exist in the graph" +msgid "to **one** ending vertex" msgstr "" -msgid "Using that information updating to the length of the geometries:" +msgid "One to Many" msgstr "" -msgid "Which gives the following results:" +msgid "to **many** ending vertices" msgstr "" -msgid "" -"Note that to be able to follow the documentation examples, everything is " -"based on the original graph." +msgid "Many to One" msgstr "" -msgid "Returning to the original data:" +msgid "From **many** starting vertices" msgstr "" -msgid "Update costs based on codes" +msgid "Many to Many" msgstr "" -msgid "Other datasets, can have a column with values like" +msgid "Combinations" msgstr "" -msgid "``FT`` vehicle flow on the direction of the geometry" +msgid "From **many** different starting vertices" msgstr "" -msgid "``TF`` vehicle flow opposite of the direction of the geometry" +msgid "to **many** different ending vertices" msgstr "" -msgid "``B`` vehicle flow on both directions" +msgid "Every tuple specifies a pair of a start vertex and an end vertex" msgstr "" -msgid "Preparing a code column for the example:" +msgid "Users can define the combinations as desired." msgstr "" -msgid "Adjusting the costs based on the codes:" +msgid "Needs a `Combinations SQL`_" msgstr "" -msgid "Check the Routing Topology" +msgid "" +"There are several kinds of valid inner queries and also the columns returned " +"are depending of the function. Which kind of inner query will depend on the " +"function's requirements. To simplify the variety of types, **ANY-INTEGER** " +"and **ANY-NUMERICAL** is used." msgstr "" -msgid "There are lots of possible problems in a graph." +msgid "Edges SQL for" msgstr "" -msgid "The data used may not have been designed with routing in mind." +msgid ":doc:`withPoints-family`" msgstr "" -msgid "A graph has some very specific requirements." +msgid "Some uncategorised functions" msgstr "" -msgid "The graph is disconnected." +msgid "General without ``id``" msgstr "" -msgid "There are unwanted intersections." +msgid "General with (X,Y)" msgstr "" -msgid "The graph is too large and needs to be contracted." +msgid "" +"When negative: edge (``source``, ``target``) does not exist, therefore it's " +"not part of the graph." msgstr "" -msgid "A sub graph is needed for the application." +msgid "Weight of the edge (``target``, ``source``)," msgstr "" -msgid "" -"and many other problems that the pgRouting user, that is the application " -"developer might encounter." +msgid "``x1``" msgstr "" -msgid "Crossing edges" +msgid "X coordinate of ``source`` vertex." msgstr "" -msgid "To get the crossing edges:" +msgid "``y1``" msgstr "" -msgid "" -"That information is correct, for example, when in terms of vehicles, is it a " -"tunnel or bridge crossing over another road." +msgid "Y coordinate of ``source`` vertex." msgstr "" -msgid "It might be incorrect, for example:" +msgid "``x2``" msgstr "" -msgid "" -"When it is actually an intersection of roads, where vehicles can make turns." +msgid "X coordinate of ``target`` vertex." msgstr "" -msgid "" -"When in terms of electrical lines, the electrical line is able to switch " -"roads even on a tunnel or bridge." +msgid "``y2``" msgstr "" -msgid "When it is incorrect, it needs fixing:" +msgid "Y coordinate of ``target`` vertex." msgstr "" -msgid "For vehicles and pedestrians" +msgid "Flow" msgstr "" -msgid "" -"If the data comes from OSM and was imported to the database using " -"``osm2pgrouting``, the fix needs to be done in the `OSM portal `__ and the data imported again." +msgid "Edges SQL for :doc:`flow-family`" msgstr "" -msgid "" -"In general when the data comes from a supplier that has the data prepared " -"for routing vehicles, and there is a problem, the data is to be fixed from " -"the supplier" +msgid "Edges SQL for the following functions of :doc:`flow-family`" msgstr "" -msgid "For very specific applications" +msgid "Used in combination signatures" msgstr "" -msgid "" -"The data is correct when from the point of view of routing vehicles or " -"pedestrians." +msgid "Points SQL for" msgstr "" -msgid "The data needs a local fix for the specific application." +msgid "" +"The main parameter of the majority of the pgRouting functions is a query " +"that selects the edges of the graph." msgstr "" msgid "" -"Once analyzed one by one the crossings, for the ones that need a local fix, " -"the edges need to be `split `__." +"Depending on the family or category of a function it will have additional " +"parameters, some of them are compulsory and some are optional." msgstr "" msgid "" -"The new edges need to be added to the edges table, the rest of the " -"attributes need to be updated in the new edges, the old edges need to be " -"removed and the routing topology needs to be updated." +"The compulsory parameters are nameless and must be given in the required " +"order. The optional parameters are named parameters and will have a default " +"value." msgstr "" -msgid "Adding split edges" +msgid "Parameters for the Via functions" msgstr "" -msgid "" -"For each pair of crossing edges a process similar to this one must be " -"performed." +msgid "SQL query as described." msgstr "" -msgid "" -"The columns inserted and the way are calculated are based on the " -"application. For example, if the edges have a trait **name**, then that " -"column is to be copied." +msgid "When ``true`` Graph is considered `Directed`" msgstr "" -msgid "For pgRouting calculations" +msgid "When ``false`` the graph is considered as Undirected." msgstr "" -msgid "" -"**factor** based on the position of the intersection of the edges can be " -"used to adjust the ``cost`` and ``reverse_cost`` columns." +msgid "``strict``" msgstr "" -msgid "" -"Capacity information, used in the :doc:`flow-family` functions does not need " -"to change when splitting edges." +msgid "``false``" msgstr "" -msgid "Adding new vertices" +msgid "When ``true`` if a path is missing stops and returns **EMPTY SET**" msgstr "" -msgid "" -"After adding all the split edges required by the application, the newly " -"created vertices need to be added to the vertices table." +msgid "When ``false`` ignores missing paths returning all paths found" msgstr "" -msgid "Updating edges topology" +msgid "``U_turn_on_edge``" msgstr "" -msgid "Removing the surplus edges" +msgid "" +"When ``true`` departing from a visited vertex will not try to avoid using " +"the edge used to reach it. In other words, U turn using the edge with same " +"identifier is allowed." msgstr "" msgid "" -"Once all significant information needed by the application has been " -"transported to the new edges, then the crossing edges can be deleted." +"When ``false`` when a departing from a visited vertex tries to avoid using " +"the edge used to reach it. In other words, U turn using the edge with same " +"identifier is used when no other path is found." msgstr "" -msgid "" -"There are other options to do this task, like creating a view, or a " -"materialized view." +msgid "For the TRSP functions" msgstr "" -msgid "Updating vertices topology" +msgid "Array of identifiers of destination vertices." msgstr "" -msgid "To keep the graph consistent, the vertices topology needs to be updated" +msgid "" +"There are several kinds of columns returned are depending of the function." msgstr "" -msgid "Checking for crossing edges" +msgid "Result columns for a path" msgstr "" -msgid "There are no crossing edges on the graph." +msgid "Used in functions that return one path solution" msgstr "" -msgid "Disconnected graphs" +msgid "" +"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost, " +"agg_cost)``" msgstr "" -msgid "To get the graph connectivity:" +msgid "``path_seq``" msgstr "" msgid "" -"In this example, the component :math:`2` consists of vertices :math:`\\{2, " -"4\\}` and both vertices are also part of the dead end result set." +"Relative position in the path. Has value **1** for the beginning of a path." msgstr "" -msgid "This graph needs to be connected." +msgid "" +"Identifier of the starting vertex. Returned when multiple starting vetrices " +"are in the query." msgstr "" msgid "" -"With the original graph of this documentation, there would be 3 components " -"as the crossing edge in this graph is a different component." +"Identifier of the ending vertex. Returned when multiple ending vertices are " +"in the query." msgstr "" -msgid "Prepare storage for connection information" +msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``." msgstr "" -msgid "Save the vertices connection information" +msgid "" +"Identifier of the edge used to go from ``node`` to the next node in the path " +"sequence. **-1** for the last node of the path." msgstr "" -msgid "Save the edges connection information" +msgid "" +"Cost to traverse from ``node`` using ``edge`` to the next node in the path " +"sequence." msgstr "" -msgid "Get the closest vertex" +msgid "Used in functions the following:" msgstr "" msgid "" -"Using :doc:`pgr_findCloseEdges` the closest vertex to component :math:`1` is " -"vertex :math:`4`. And the closest edge to vertex :math:`4` is edge :math:" -"`14`." +"Returns set of ``(seq, path_seq [, start_pid] [, end_pid], node, edge, cost, " +"agg_cost)``" msgstr "" -msgid "" -"The ``edge`` can be used to connect the components, using the ``fraction`` " -"information about the edge :math:`14` to split the connecting edge." +msgid "Relative position in the path." msgstr "" -msgid "Connecting components" +msgid "**1** For the first row of the path." msgstr "" -msgid "There are three basic ways to connect the components" +msgid "``start_pid``" msgstr "" -msgid "From the vertex to the starting point of the edge" +msgid "Identifier of a starting vertex/point of the path." msgstr "" -msgid "From the vertex to the ending point of the edge" +msgid "When positive is the identifier of the starting vertex." msgstr "" -msgid "From the vertex to the closest vertex on the edge" +msgid "When negative is the identifier of the starting point." msgstr "" -msgid "This solution requires the edge to be split." +msgid "Returned on `Many to One`_ and `Many to Many`_" msgstr "" -msgid "The following query shows the three ways to connect the components:" +msgid "``end_pid``" msgstr "" -msgid "Checking components" +msgid "Identifier of an ending vertex/point of the path." msgstr "" -msgid "" -"Ignoring the edge that requires further work. The graph is now fully " -"connected as there is only one component." +msgid "When positive is the identifier of the ending vertex." msgstr "" -msgid "Contraction of a graph" +msgid "When negative is the identifier of the ending point." msgstr "" -msgid "The graph can be reduced in size using :doc:`contraction-family`" +msgid "Returned on `One to Many`_ and `Many to Many`_" msgstr "" -msgid "" -"When to contract will depend on the size of the graph, processing times, " -"correctness of the data, on the final application, or any other factor not " -"mentioned." +msgid "Identifier of the node in the path from ``start_pid`` to ``end_pid``." msgstr "" -msgid "" -"A fairly good method of finding out if contraction can be useful is because " -"of the number of dead ends and/or the number of linear edges." +msgid "When positive is the identifier of the a vertex." msgstr "" -msgid "" -"A complete method on how to contract and how to use the contracted graph is " -"described on :doc:`contraction-family`" +msgid "When negative is the identifier of the a point." msgstr "" -msgid "Dead ends" +msgid "" +"Identifier of the edge used to go from ``node`` to the next node in the path " +"sequence." msgstr "" -msgid "To get the dead ends:" +msgid "**-1** for the last row of the path." msgstr "" -msgid "" -"That information is correct, for example, when the dead end is on the limit " -"of the imported graph." +msgid "**0** For the first row of the path." msgstr "" -msgid "" -"Visually node :math:`4` looks to be as start/ending of 3 edges, but it is " -"not." +msgid ":doc:`pgr_dijkstraNear`" msgstr "" -msgid "Is that correct?" +msgid "" +"Returns ``(seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)``" msgstr "" -msgid "Is there such a small curb:" +msgid "Identifier of the starting vertex of the current path." msgstr "" -msgid "That does not allow a vehicle to use that visual intersection?" +msgid "Identifier of the ending vertex of the current path." msgstr "" -msgid "" -"Is the application for pedestrians and therefore the pedestrian can easily " -"walk on the small curb?" +msgid "Multiple paths" msgstr "" -msgid "" -"Is the application for the electricity and the electrical lines than can " -"easily be extended on top of the small curb?" +msgid "Selective for multiple paths." msgstr "" -msgid "" -"Is there a big cliff and from eagles view look like the dead end is close to " -"the segment?" +msgid "The columns depend on the function call." msgstr "" msgid "" -"When there are many dead ends, to speed up, the :doc:`contraction-family` " -"functions can be used to divide the problem." +"Set of ``(seq, path_id, path_seq [, start_vid] [, end_vid], node, edge, " +"cost, agg_cost)``" msgstr "" -msgid "Linear edges" +msgid "``path_id``" msgstr "" -msgid "To get the linear edges:" +msgid "Path identifier." msgstr "" msgid "" -"This information is correct, for example, when the application is taking " -"into account speed bumps, stop signals." +"Has value **1** for the first of a path from ``start_vid`` to ``end_vid``." msgstr "" -msgid "" -"When there are many linear edges, to speed up, the :doc:`contraction-family` " -"functions can be used to divide the problem." +msgid "Non selective for multiple paths" msgstr "" -msgid "Function's structure" +msgid "Regardless of the call, al the columns are returned." msgstr "" msgid "" -"Once the graph preparation work has been done above, it is time to use a" -msgstr "" - -msgid "The general form of a pgRouting function call is:" -msgstr "" - -msgid "\\ \\" +"Returns set of ``(seq, path_id, path_seq, start_vid, end_vid, node, edge, " +"cost, agg_cost)``" msgstr "" -msgid "pgr_(`Inner queries`_, **parameters**, [ ``Optional parameters``)" +msgid "Result columns for cost functions" msgstr "" -msgid "" -"`Inner queries`_: Are compulsory parameters that are ``TEXT`` strings " -"containing SQL queries." +msgid "Used in the following" msgstr "" msgid "" -"**parameters**: Additional compulsory parameters needed by the function." +"When start_vid or end_vid columns have negative values, the identifier is " +"for a Point." msgstr "" -msgid "" -"``Optional parameters``: Are non compulsory **named** parameters that have a " -"default value when omitted." +msgid "Result columns for flow functions" msgstr "" -msgid "" -"The compulsory parameters are positional parameters, the optional parameters " -"are named parameters." +msgid "Edges SQL for the following" msgstr "" -msgid "For example, for this :doc:`pgr_dijkstra` signature:" +msgid "Result columns for spanning tree functions" msgstr "" -msgid "" -"pgr_dijkstra(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" +msgid "Returns set of ``(edge, cost)``" msgstr "" -msgid "`Edges SQL`_:" +msgid "Cost to traverse the edge." msgstr "" -msgid "Is the first parameter." +msgid "Performance Tips" msgstr "" -msgid "It is compulsory." +msgid "For the Routing functions" msgstr "" -msgid "It is an inner query." +msgid "" +"To get faster results bound the queries to an area of interest of routing." msgstr "" msgid "" -"It has no name, so **Edges SQL** gives an idea of what kind of inner query " -"needs to be used" +"In this example Use an inner query SQL that does not include some edges in " +"the routing function and is within the area of the results." msgstr "" -msgid "**start vid**:" +msgid "Given this area:" msgstr "" -msgid "Is the second parameter." +msgid "Calculate a route:" msgstr "" -msgid "" -"It has no name, so **start vid** gives an idea of what the second " -"parameter's value should contain." +msgid "How to contribute" msgstr "" -msgid "Is the third parameter." +msgid "Wiki" msgstr "" msgid "" -"It has no name, so **end vid** gives an idea of what the third parameter's " -"value should contain" +"Edit an existing `pgRouting Wiki `__ page." msgstr "" -msgid "Is the fourth parameter." +msgid "Or create a new Wiki page" msgstr "" -msgid "It is optional." +msgid "" +"Create a page on the `pgRouting Wiki `__" msgstr "" -msgid "It has a name." +msgid "Give the title an appropriate name" msgstr "" msgid "" -"The full description of the parameters are found on the `Parameters`_ " -"section of each function." +"`Example `__" msgstr "" -msgid "Function's overloads" +msgid "Adding Functionality to pgRouting" msgstr "" -msgid "A function might have different overloads. The most common are called:" +msgid "" +"Consult the `developer's documentation `__" msgstr "" -msgid "`One to One`_" +msgid "Installation" msgstr "" -msgid "`One to Many`_" +msgid ":ref:`install-short`" msgstr "" -msgid "`Many to One`_" +msgid ":ref:`install_get_sources`" msgstr "" -msgid "`Many to Many`_" +msgid ":ref:`install_enable_db`" msgstr "" -msgid "`Combinations`_" +msgid ":ref:`install_dependencies`" msgstr "" -msgid "Depending on the overload the parameters types change." +msgid ":ref:`install_configuring`" msgstr "" -msgid "**One**: **ANY-INTEGER**" +msgid ":ref:`install_build`" msgstr "" -msgid "**Many**: ``ARRAY`` [**ANY-INTEGER**]" +msgid ":ref:`install_testing`" msgstr "" msgid "" -"Depending of the function the overloads may vary. But the concept of " -"parameter type change remains the same." +"Instructions for downloading and installing binaries for different operating " +"systems, additional notes and corrections not included in this documentation " +"can be found in `Installation wiki `__" msgstr "" -msgid "One to One" +msgid "" +"To use pgRouting PostGIS needs to be installed, please read the information " +"about installation in this `Install Guide `__" msgstr "" -msgid "When routing from:" +msgid "Short Version" msgstr "" -msgid "From **one** starting vertex" +msgid "Extracting the tar ball" msgstr "" -msgid "to **one** ending vertex" +msgid "To compile assuming you have all the dependencies in your search path:" msgstr "" -msgid "One to Many" +msgid "" +"Once pgRouting is installed, it needs to be enabled in each individual " +"database you want to use it in." msgstr "" -msgid "to **many** ending vertices" +msgid "Get the sources" msgstr "" -msgid "Many to One" +msgid "" +"The pgRouting latest release can be found in https://github.com/pgRouting/" +"pgrouting/releases/latest" msgstr "" -msgid "From **many** starting vertices" +msgid "To download this release:" msgstr "" -msgid "Many to Many" +msgid "" +"Go to :ref:`install-short` for more instructions on extracting tar ball and " +"compiling pgRouting." msgstr "" -msgid "Combinations" +msgid "git" msgstr "" -msgid "From **many** different starting vertices" +msgid "To download the repository" msgstr "" -msgid "to **many** different ending vertices" +msgid "" +"Go to :ref:`install-short` for more instructions on compiling pgRouting " +"(there is no tar ball involved while downloading pgRouting repository from " +"GitHub)." msgstr "" -msgid "Every tuple specifies a pair of a start vertex and an end vertex" +msgid "Enabling and upgrading in the database" msgstr "" -msgid "Users can define the combinations as desired." +msgid "Enabling the database" msgstr "" -msgid "Needs a `Combinations SQL`_" +msgid "" +"pgRouting is a PostgreSQL extension and depends on PostGIS to provide " +"functionalities to end user. Below given code demonstrates enabling PostGIS " +"and pgRouting in the database." msgstr "" msgid "" -"There are several kinds of valid inner queries and also the columns returned " -"are depending of the function. Which kind of inner query will depend on the " -"function's requirements. To simplify the variety of types, **ANY-INTEGER** " -"and **ANY-NUMERICAL** is used." +"Checking PostGIS and pgRouting version after enabling them in the database." msgstr "" -msgid "Edges SQL for" +msgid "Upgrading the database" msgstr "" -msgid ":doc:`withPoints-family`" +msgid "" +"To upgrade pgRouting in the database to version 4.0.0 use the following " +"command:" msgstr "" -msgid "Some uncategorised functions" +msgid "" +"More information can be found in https://www.postgresql.org/docs/current/sql-" +"createextension.html" msgstr "" -msgid "General without ``id``" +msgid "Dependencies" msgstr "" -msgid "General with (X,Y)" +msgid "Compilation Dependencies" msgstr "" msgid "" -"When negative: edge (``source``, ``target``) does not exist, therefore it's " -"not part of the graph." +"To be able to compile pgRouting, make sure that the following dependencies " +"are met:" msgstr "" -msgid "Weight of the edge (``target``, ``source``)," +msgid "C and C++0x compilers" msgstr "" -msgid "``x1``" +msgid "" +"Compiling with Boost 1.56 up to Boost 1.74 requires C++ Compiler with C++03 " +"or C++11 standard support" msgstr "" -msgid "X coordinate of ``source`` vertex." +msgid "" +"Compiling with Boost 1.75 requires C++ Compiler with C++14 standard support" msgstr "" -msgid "``y1``" +msgid "Postgresql version = Supported versions by PostgreSQL" msgstr "" -msgid "Y coordinate of ``source`` vertex." +msgid "The Boost Graph Library (BGL). Version >= 1.56" msgstr "" -msgid "``x2``" +msgid "CMake >= 3.2" msgstr "" -msgid "X coordinate of ``target`` vertex." +msgid "optional dependencies" msgstr "" -msgid "``y2``" +msgid "For user's documentation" msgstr "" -msgid "Y coordinate of ``target`` vertex." +msgid "Sphinx >= 1.1" msgstr "" -msgid "Flow" +msgid "Latex" msgstr "" -msgid "Edges SQL for :doc:`flow-family`" +msgid "For developer's documentation" msgstr "" -msgid "Edges SQL for the following functions of :doc:`flow-family`" +msgid "Doxygen >= 1.7" msgstr "" -msgid "Used in combination signatures" +msgid "For testing" msgstr "" -msgid "Points SQL for" +msgid "pgtap" msgstr "" -msgid "" -"The main parameter of the majority of the pgRouting functions is a query " -"that selects the edges of the graph." +msgid "pg_prove" msgstr "" -msgid "" -"Depending on the family or category of a function it will have additional " -"parameters, some of them are compulsory and some are optional." +msgid "For using:" msgstr "" -msgid "" -"The compulsory parameters are nameless and must be given in the required " -"order. The optional parameters are named parameters and will have a default " -"value." +msgid "PostGIS version >= 2.2" msgstr "" -msgid "Parameters for the Via functions" +msgid "Example: Installing dependencies on linux" msgstr "" -msgid ":doc:`pgr_dijkstraVia`" +msgid "Installing the compilation dependencies" msgstr "" -msgid "SQL query as described." +msgid "Database dependencies" msgstr "" -msgid "When ``true`` Graph is considered `Directed`" +msgid "Configuring PostgreSQL" msgstr "" -msgid "When ``false`` the graph is considered as Undirected." +msgid "Entering psql console" msgstr "" -msgid "``strict``" +msgid "To exit psql console" msgstr "" -msgid "``false``" +msgid "" +"Entering psql console directly without switching roles can be done by the " +"following commands" msgstr "" -msgid "When ``true`` if a path is missing stops and returns **EMPTY SET**" +msgid "Then use the above given method to exit out of the psql console" msgstr "" -msgid "When ``false`` ignores missing paths returning all paths found" +msgid "Checking PostgreSQL version" msgstr "" -msgid "``U_turn_on_edge``" +msgid "or" msgstr "" -msgid "" -"When ``true`` departing from a visited vertex will not try to avoid using " -"the edge used to reach it. In other words, U turn using the edge with same " -"identifier is allowed." +msgid "Enter the psql console using above given method and then enter" msgstr "" -msgid "" -"When ``false`` when a departing from a visited vertex tries to avoid using " -"the edge used to reach it. In other words, U turn using the edge with same " -"identifier is used when no other path is found." +msgid "Creating PostgreSQL role" msgstr "" -msgid "For the TRSP functions" +msgid "" +"Default role provided by PostgreSQL is postgres. To create new roles you can " +"use the above provided commands. The prompt will ask the user to type name " +"of the role and then provide affirmation. Proceed with the steps and you " +"will succeed in creating PostgreSQL role successfully." msgstr "" -msgid ":doc:`pgr_trsp`" +msgid "" +"To add password to the role or change previously created password of the " +"role use the following commands" msgstr "" -msgid "Array of identifiers of destination vertices." +msgid "" +"To get additional details on the flags associated with ``createuser`` below " +"given command can be used" msgstr "" -msgid "" -"There are several kinds of columns returned are depending of the function." +msgid "Creating Database in PostgreSQL" msgstr "" -msgid "Result columns for a path" +msgid "Connecting to a PostgreSQL Database" msgstr "" -msgid "Used in functions that return one path solution" +msgid "Enter the psql console and type the following commands" msgstr "" -msgid "" -"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost, " -"agg_cost)``" +msgid "Build dependencies" msgstr "" -msgid "``path_seq``" +msgid "Optional dependencies" msgstr "" -msgid "" -"Relative position in the path. Has value **1** for the beginning of a path." +msgid "For documentation and testing" msgstr "" -msgid "" -"Identifier of the starting vertex. Returned when multiple starting vetrices " -"are in the query." +msgid "Configuring" msgstr "" -msgid "" -"Identifier of the ending vertex. Returned when multiple ending vertices are " -"in the query." +msgid "pgRouting uses the `cmake` system to do the configuration." msgstr "" -msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``." +msgid "The build directory is different from the source directory" msgstr "" -msgid "" -"Identifier of the edge used to go from ``node`` to the next node in the path " -"sequence. **-1** for the last node of the path." +msgid "Create the build directory" msgstr "" -msgid "" -"Cost to traverse from ``node`` using ``edge`` to the next node in the path " -"sequence." +msgid "Configurable variables" msgstr "" -msgid "Used in functions the following:" +msgid "To see the variables that can be configured" msgstr "" -msgid ":doc:`pgr_withPoints`" +msgid "Configuring The Documentation" msgstr "" msgid "" -"Returns set of ``(seq, path_seq [, start_pid] [, end_pid], node, edge, cost, " -"agg_cost)``" +"Most of the effort of the documentation has been on the HTML files. Some " +"variables for building documentation:" msgstr "" -msgid "Relative position in the path." +msgid "Variable" msgstr "" -msgid "**1** For the first row of the path." +msgid "Comment" msgstr "" -msgid "``start_pid``" +msgid "WITH_DOC" msgstr "" -msgid "Identifier of a starting vertex/point of the path." +msgid "BOOL=OFF" msgstr "" -msgid "When positive is the identifier of the starting vertex." +msgid "Turn on/off building the documentation" msgstr "" -msgid "When negative is the identifier of the starting point." +msgid "BUILD_HTML" msgstr "" -msgid "Returned on `Many to One`_ and `Many to Many`_" +msgid "BOOL=ON" msgstr "" -msgid "``end_pid``" +msgid "If ON, turn on/off building HTML for user's documentation" msgstr "" -msgid "Identifier of an ending vertex/point of the path." +msgid "BUILD_DOXY" msgstr "" -msgid "When positive is the identifier of the ending vertex." +msgid "If ON, turn on/off building HTML for developer's documentation" msgstr "" -msgid "When negative is the identifier of the ending point." +msgid "BUILD_LATEX" msgstr "" -msgid "Returned on `One to Many`_ and `Many to Many`_" +msgid "If ON, turn on/off building PDF" msgstr "" -msgid "Identifier of the node in the path from ``start_pid`` to ``end_pid``." +msgid "BUILD_MAN" msgstr "" -msgid "When positive is the identifier of the a vertex." +msgid "If ON, turn on/off building MAN pages" msgstr "" -msgid "When negative is the identifier of the a point." +msgid "DOC_USE_BOOTSTRAP" msgstr "" -msgid "" -"Identifier of the edge used to go from ``node`` to the next node in the path " -"sequence." +msgid "If ON, use sphinx-bootstrap for HTML pages of the users documentation" msgstr "" -msgid "**-1** for the last row of the path." +msgid "Configuring cmake to create documentation before building pgRouting" msgstr "" -msgid "**0** For the first row of the path." +msgid "Most of the effort of the documentation has been on the html files." msgstr "" -msgid ":doc:`pgr_dijkstraNear`" +msgid "Building" msgstr "" -msgid "" -"Returns ``(seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)``" +msgid "Using ``make`` to build the code and the documentation" msgstr "" -msgid "Identifier of the starting vertex of the current path." +msgid "The following instructions start from *path/to/pgrouting/build*" msgstr "" -msgid "Identifier of the ending vertex of the current path." +msgid "" +"We have tested on several platforms, For installing or reinstalling all the " +"steps are needed." msgstr "" -msgid "Multiple paths" +msgid "The sql signatures are configured and build in the ``cmake`` command." msgstr "" -msgid "Selective for multiple paths." +msgid "MinGW on Windows" msgstr "" -msgid "The columns depend on the function call." +msgid "Linux" msgstr "" -msgid "" -"Set of ``(seq, path_id, path_seq [, start_vid] [, end_vid], node, edge, " -"cost, agg_cost)``" +msgid "The following instructions start from *path/to/pgrouting*" msgstr "" -msgid "``path_id``" +msgid "" +"To remove the build when the configuration changes, use the following code:" msgstr "" -msgid "Path identifier." +msgid "and start the build process as mentioned previously." msgstr "" -msgid "" -"Has value **1** for the first of a path from ``start_vid`` to ``end_vid``." +msgid "Testing" msgstr "" -msgid "Non selective for multiple paths" +msgid "Currently there is no :code:`make test` and testing is done as follows" msgstr "" -msgid "Regardless of the call, al the columns are returned." +msgid "The following instructions start from *path/to/pgrouting/*" msgstr "" msgid "" -"Returns set of ``(seq, path_id, path_seq, start_vid, end_vid, node, edge, " -"cost, agg_cost)``" -msgstr "" - -msgid "Result columns for cost functions" +"pgRouting is an extension of `PostGIS `__ and " +"`PostgreSQL `__ geospatial database and adds " +"routing and other network analysis functionality. A predecessor of pgRouting " +"– pgDijkstra, written by Sylvain Pasche from `Camptocamp `__, was later extended by Orkney and renamed to pgRouting. The project " +"is now supported and maintained by `Georepublic `__, `Paragon Corporation `__ and " +"a broad user community." msgstr "" -msgid "Used in the following" +msgid "" +"pgRouting is part of `OSGeo Community Projects `__ from the `OSGeo Foundation `__ and included on `OSGeoLive `__." msgstr "" -msgid "" -"When start_vid or end_vid columns have negative values, the identifier is " -"for a Point." +msgid "Licensing" msgstr "" -msgid "Result columns for flow functions" +msgid "The following licenses can be found in pgRouting:" msgstr "" -msgid "Edges SQL for the following" +msgid "**License**" msgstr "" -msgid "Result columns for spanning tree functions" +msgid "GNU General Public License v2.0 or later" msgstr "" -msgid "Returns set of ``(edge, cost)``" +msgid "" +"Most features of pgRouting are available under `GNU General Public License " +"v2.0 or later `_." msgstr "" -msgid "Cost to traverse the edge." +msgid "Boost Software License - Version 1.0" msgstr "" -msgid "Performance Tips" +msgid "" +"Some Boost extensions are available under `Boost Software License - Version " +"1.0 `_." msgstr "" -msgid "For the Routing functions" +msgid "MIT-X License" msgstr "" msgid "" -"To get faster results bound the queries to an area of interest of routing." +"Some code contributed by iMaptools.com is available under MIT-X license." msgstr "" msgid "" -"In this example Use an inner query SQL that does not include some edges in " -"the routing function and is within the area of the results." +"The pgRouting Manual is licensed under a `Creative Commons Attribution-Share " +"Alike 3.0 License `_." msgstr "" -msgid "How to contribute" +msgid "" +"In general license information should be included in the header of each " +"source file." msgstr "" -msgid "Wiki" +msgid "Contributors" msgstr "" -msgid "" -"Edit an existing `pgRouting Wiki `__ page." +msgid "This Release Contributors" msgstr "" -msgid "Or create a new Wiki page" +msgid "Individuals in this release v3.7.x (in alphabetical order)" msgstr "" -msgid "" -"Create a page on the `pgRouting Wiki `__" +msgid "(Alphabetical order)" msgstr "" -msgid "Give the title an appropriate name" +msgid "Regina Obe, Vicky Vergara" msgstr "" msgid "" -"`Example `__" +"And all the people that give us a little of their time making comments, " +"finding issues, making pull requests etc. in any of our products: " +"osm2pgrouting, pgRouting, pgRoutingLayer, workshop." msgstr "" -msgid "Adding Functionaity to pgRouting" +msgid "Corporate Sponsors in this release (in alphabetical order)" msgstr "" msgid "" -"Consult the `developer's documentation `__" +"These are corporate entities that have contributed developer time, hosting, " +"or direct monetary funding to the pgRouting project:" msgstr "" -msgid "Installation" -msgstr "" - -msgid ":ref:`install-short`" -msgstr "" - -msgid ":ref:`install_get_sources`" -msgstr "" - -msgid ":ref:`install_enable_db`" +msgid "`OSGeo `__" msgstr "" -msgid ":ref:`install_dependencies`" +msgid "`OSGeo UK `__" msgstr "" -msgid ":ref:`install_configuring`" +msgid "`Google Summer of Code `__" msgstr "" -msgid ":ref:`install_build`" +msgid "`Paragon Corporation `__" msgstr "" -msgid ":ref:`install_testing`" +msgid "Contributors Past & Present:" msgstr "" -msgid "" -"Instructions for downloading and installing binaries for different operating " -"systems, additional notes and corrections not included in this documentation " -"can be found in `Installation wiki `__" +msgid "Individuals (in alphabetical order)" msgstr "" msgid "" -"To use pgRouting PostGIS needs to be installed, please read the information " -"about installation in this `Install Guide `__" +"Aasheesh Tiwari, Abhinav Jain, Aditya Pratap Singh, Adrien Berchet, Akio " +"Takubo, Andrea Nardelli, Anthony Tasca, Anton Patrushev, Aryan Gupta, Ashraf " +"Hossain, Ashish Kumar, Cayetano Benavent, Christian Gonzalez, Daniel Kastl, " +"Dave Potts, David Techer, Denis Rykov, Ema Miyawaki, Esteban Zimanyi, " +"Florian Thurkow, Frederic Junod, Gerald Fenoy, Gudesa Venkata Sai Akhil, " +"Hang Wu, Himanshu Raj, Imre Samu, Jay Mahadeokar, Jinfu Leng, Kai Behncke, " +"Kishore Kumar, Ko Nagase, Mahmoud Sakr, Manikata Kondeti, Mario Basa, Martin " +"Wiesenhaan, Maxim Dubinin, Maoguang Wang, Mohamed Bakli, Mohamed Zia, Mukul " +"Priya, Nitish Chauhan, Rajat Shinde, Razequl Islam, Regina Obe, Rohith " +"Reddy, Sarthak Agarwal, Shobhit Chaurasia, Sourabh Garg, Stephen Woodbridge, " +"Swapnil Joshi, Sylvain Housseman, Sylvain Pasche, Veenit Kumar, Vidhan Jain, " +"Virginia Vergara, Yige Huang" msgstr "" -msgid "Short Version" +msgid "Corporate Sponsors (in alphabetical order)" msgstr "" -msgid "Extracting the tar ball" +msgid "Camptocamp" msgstr "" -msgid "To compile assuming you have all the dependencies in your search path:" +msgid "CSIS (University of Tokyo)" msgstr "" -msgid "" -"Once pgRouting is installed, it needs to be enabled in each individual " -"database you want to use it in." +msgid "Georepublic" msgstr "" -msgid "Get the sources" +msgid "Google Summer of Code" msgstr "" -msgid "" -"The pgRouting latest release can be found in https://github.com/pgRouting/" -"pgrouting/releases/latest" +msgid "iMaptools" msgstr "" -msgid "To download this release:" +msgid "Leopark" msgstr "" -msgid "" -"Go to :ref:`install-short` for more instructions on extracting tar ball and " -"compiling pgRouting." +msgid "Orkney" msgstr "" -msgid "git" +msgid "OSGeo" msgstr "" -msgid "To download the repository" +msgid "OSGeo UK" msgstr "" -msgid "" -"Go to :ref:`install-short` for more instructions on compiling pgRouting " -"(there is no tar ball involved while downloading pgRouting repository from " -"GitHub)." +msgid "Paragon Corporation" msgstr "" -msgid "Enabling and upgrading in the database" +msgid "Versaterm Inc." msgstr "" -msgid "Enabling the database" +msgid "More Information" msgstr "" msgid "" -"pgRouting is a PostgreSQL extension and depends on PostGIS to provide " -"functionalities to end user. Below given code demonstrates enabling PostGIS " -"and pgRouting in the database." +"The latest software, documentation and news items are available at the " +"pgRouting web site https://pgrouting.org." msgstr "" msgid "" -"Checking PostGIS and pgRouting version after enabling them in the database." +"PostgreSQL database server at the PostgreSQL main site https://www." +"postgresql.org." msgstr "" -msgid "Upgrading the database" +msgid "PostGIS extension at the PostGIS project web site https://postgis.net." msgstr "" -msgid "" -"To upgrade pgRouting in the database to version 3.7.0 use the following " -"command:" +msgid "Boost C++ source libraries at https://www.boost.org." msgstr "" -msgid "" -"More information can be found in https://www.postgresql.org/docs/current/sql-" -"createextension.html" +msgid ":doc:`migration`" msgstr "" -msgid "Dependencies" +msgid "``pgr_KSP``" msgstr "" -msgid "Compilation Dependencies" +msgid "``pgr_KSP`` — Yen's algorithm for K shortest paths using Dijkstra." msgstr "" -msgid "" -"To be able to compile pgRouting, make sure that the following dependencies " -"are met:" +msgid "Availability" msgstr "" -msgid "C and C++0x compilers" +msgid "Version 4.0.0" msgstr "" -msgid "" -"Compiling with Boost 1.56 up to Boost 1.74 requires C++ Compiler with C++03 " -"or C++11 standard support" +msgid "All signatures promoted to official." msgstr "" -msgid "" -"Compiling with Boost 1.75 requires C++ Compiler with C++14 standard support" +msgid "Version 3.6.0" msgstr "" -msgid "Postgresql version = Supported versions by PostgreSQL" +msgid "Result columns standarized to: |nksp-result|" msgstr "" -msgid "The Boost Graph Library (BGL). Version >= 1.56" +msgid "pgr_ksp(One to One)" msgstr "" -msgid "CMake >= 3.2" +msgid "Added ``start_vid`` and ``end_vid`` result columns." msgstr "" -msgid "optional dependencies" +msgid "New proposed signatures:" msgstr "" -msgid "For user's documentation" +msgid "pgr_ksp(One to Many)" msgstr "" -msgid "Sphinx >= 1.1" +msgid "pgr_ksp(Many to One)" msgstr "" -msgid "Latex" +msgid "pgr_ksp(Many to Many)" msgstr "" -msgid "For developer's documentation" +msgid "pgr_ksp(Combinations)" msgstr "" -msgid "Doxygen >= 1.7" +msgid "Version 2.1.0" msgstr "" -msgid "For testing" +msgid "Signature change" msgstr "" -msgid "pgtap" +msgid "Old signature no longer supported" msgstr "" -msgid "pg_prove" +msgid "Version 2.0.0" msgstr "" -msgid "For using:" +msgid "Official function." msgstr "" -msgid "PostGIS version >= 2.2" +msgid "" +"The K shortest path routing algorithm based on Yen's algorithm. \"K\" is the " +"number of shortest paths desired." msgstr "" -msgid "Example: Installing dependencies on linux" +msgid "|Boost| Boost Graph Inside" msgstr "" -msgid "Installing the compilation dependencies" +msgid "Boost Graph Inside" msgstr "" -msgid "Database dependencies" +msgid "Signatures" msgstr "" -msgid "Configuring PostgreSQL" +msgid "Summary" msgstr "" -msgid "Entering psql console" +msgid "pgr_KSP(`Edges SQL`_, **start vid**, **end vid**, **K**, [**options**])" msgstr "" -msgid "To exit psql console" +msgid "" +"pgr_KSP(`Edges SQL`_, **start vid**, **end vids**, **K**, [**options**])" msgstr "" msgid "" -"Entering psql console directly without switching roles can be done by the " -"following commands" +"pgr_KSP(`Edges SQL`_, **start vids**, **end vid**, **K**, [**options**])" msgstr "" -msgid "Then use the above given method to exit out of the psql console" +msgid "" +"pgr_KSP(`Edges SQL`_, **start vids**, **end vids**, **K**, [**options**])" msgstr "" -msgid "Checking PostgreSQL version" +msgid "pgr_KSP(`Edges SQL`_, `Combinations SQL`_, **K**, [**options**])" msgstr "" -msgid "or" +msgid "**options:** ``[directed, heap_paths]``" msgstr "" -msgid "Enter the psql console using above given method and then enter" +msgid "Returns set of |nksp-result|" msgstr "" -msgid "Creating PostgreSQL role" +msgid "OR EMPTY SET" msgstr "" -msgid "" -"Default role provided by PostgreSQL is postgres. To create new roles you can " -"use the above provided commands. The prompt will ask the user to type name " -"of the role and then provide affirmation. Proceed with the steps and you " -"will succeed in creating PostgreSQL role successfully." +msgid "Example" msgstr "" -msgid "" -"To add password to the role or change previously created password of the " -"role use the following commands" +msgid "Get 2 paths from :math:`6` to :math:`17` on a directed graph." msgstr "" msgid "" -"To get additional details on the flags associated with ``createuser`` below " -"given command can be used" +"Get 2 paths from vertex :math:`6` to vertices :math:`\\{10, 17\\}` on a " +"directed graph." msgstr "" -msgid "Creating Database in PostgreSQL" +msgid "" +"Get 2 paths from vertices :math:`\\{6, 1\\}` to vertex :math:`17` on a " +"directed graph." msgstr "" -msgid "Connecting to a PostgreSQL Database" +msgid "" +"Get 2 paths vertices :math:`\\{6, 1\\}` to vertices :math:`\\{10, 17\\}` on " +"a directed graph." msgstr "" -msgid "Enter the psql console and type the following commands" +msgid "Using a combinations table on an directed graph" msgstr "" -msgid "Build dependencies" +msgid "The combinations table:" msgstr "" -msgid "Optional dependencies" +msgid "The query:" msgstr "" -msgid "For documentation and testing" +msgid "Identifier of the destination vertex." msgstr "" -msgid "Configuring" +msgid "**K**" msgstr "" -msgid "pgRouting uses the `cmake` system to do the configuration." +msgid "Number of required paths." msgstr "" -msgid "The build directory is different from the source directory" +msgid "KSP Optional parameters" msgstr "" -msgid "Create the build directory" +msgid "``heap_paths``" msgstr "" -msgid "Configurable variables" +msgid "When ``false`` Returns at most K paths." msgstr "" -msgid "To see the variables that can be configured" +msgid "When ``true`` all the calculated paths while processing are returned." msgstr "" -msgid "Configuring The Documentation" +msgid "" +"Roughly, when the shortest path has ``N`` edges, the heap will contain about " +"than ``N * K`` paths for small value of ``K`` and ``K > 5``." msgstr "" msgid "" -"Most of the effort of the documentation has been on the HTML files. Some " -"variables for building documentation:" +"Has value **1** for the first of a path from ``start_vid`` to ``end_vid``" msgstr "" -msgid "Variable" +msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``" msgstr "" -msgid "Comment" +msgid ":math:`0` for the last ``node`` of the path." msgstr "" -msgid "WITH_DOC" +msgid "Aggregate cost from **start vid** to ``node``." msgstr "" -msgid "BOOL=OFF" +msgid "Additional Examples" msgstr "" -msgid "Turn on/off building the documentation" +msgid "Get 2 paths from :math:`6` to :math:`17` on an undirected graph" msgstr "" -msgid "BUILD_HTML" +msgid "Also get the paths in the heap." msgstr "" -msgid "BOOL=ON" +msgid "Get 2 paths using combinations table on an undirected graph" msgstr "" -msgid "If ON, turn on/off building HTML for user's documentation" +msgid "" +"Get 2 paths from vertices :math:`\\{6, 1\\}` to vertex :math:`17` on a " +"undirected graph." msgstr "" -msgid "BUILD_DOXY" +msgid "https://en.wikipedia.org/wiki/K_shortest_path_routing" msgstr "" -msgid "If ON, turn on/off building HTML for developer's documentation" +msgid "``pgr_TSP``" msgstr "" -msgid "BUILD_LATEX" +msgid "``pgr_TSP`` - Approximation using *metric* algorithm." msgstr "" -msgid "If ON, turn on/off building PDF" +msgid "Availability:" msgstr "" -msgid "BUILD_MAN" +msgid "Version 3.2.1" msgstr "" -msgid "If ON, turn on/off building MAN pages" +msgid "" +"Metric Algorithm from `Boost library `__" msgstr "" -msgid "DOC_USE_BOOTSTRAP" +msgid "Simulated Annealing Algorithm no longer supported" msgstr "" -msgid "If ON, use sphinx-bootstrap for HTML pages of the users documentation" +msgid "" +"The Simulated Annealing Algorithm related parameters are ignored: " +"max_processing_time, tries_per_temperature, max_changes_per_temperature, " +"max_consecutive_non_changes, initial_temperature, final_temperature, " +"cooling_factor, randomize" msgstr "" -msgid "Configuring cmake to create documentation before building pgRouting" +msgid "Version 2.3.0" msgstr "" -msgid "Most of the effort of the documentation has been on the html files." +msgid "" +"Can be Used with :doc:`costMatrix-category` functions preferably with " +"`directed => false`." msgstr "" -msgid "Building" +msgid "With ``directed => false``" msgstr "" -msgid "Using ``make`` to build the code and the documentation" +msgid "Will generate a graph that:" msgstr "" -msgid "The following instructions start from *path/to/pgrouting/build*" +msgid "is undirected" msgstr "" -msgid "" -"We have tested on several platforms, For installing or reinstalling all the " -"steps are needed." +msgid "is fully connected (As long as the graph has one component)" msgstr "" -msgid "The sql signatures are configured and build in the ``cmake`` command." +msgid "all traveling costs on edges obey the triangle inequality." msgstr "" -msgid "MinGW on Windows" +msgid "When ``start_vid = 0 OR end_vid = 0``" msgstr "" -msgid "Linux" +msgid "" +"The solutions generated is garanteed to be *twice as long as the optimal " +"tour in the worst case*" msgstr "" -msgid "The following instructions start from *path/to/pgrouting*" +msgid "When ``start_vid != 0 AND end_vid != 0 AND start_vid != end_vid``" msgstr "" msgid "" -"To remove the build when the configuration changes, use the following code:" +"It is **not garanteed** that the solution will be, in the worse case, twice " +"as long as the optimal tour, due to the fact that `end_vid` is forced to be " +"in a fixed position." msgstr "" -msgid "and start the build process as mentioned previously." +msgid "With ``directed => true``" msgstr "" -msgid "Testing" +msgid "" +"It is **not garanteed** that the solution will be, in the worse case, twice " +"as long as the optimal tour" msgstr "" -msgid "Currently there is no :code:`make test` and testing is done as follows" +msgid "is directed" msgstr "" -msgid "The following instructions start from *path/to/pgrouting/*" +msgid "" +"some (or all) traveling costs on edges might not obey the triangle " +"inequality." msgstr "" msgid "" -"pgRouting is an extension of `PostGIS `__ and " -"`PostgreSQL `__ geospatial database and adds " -"routing and other network analysis functionality. A predecessor of pgRouting " -"– pgDijkstra, written by Sylvain Pasche from `Camptocamp `__, was later extended by Orkney and renamed to pgRouting. The project " -"is now supported and maintained by `Georepublic `__, `Paragon Corporation `__ and " -"a broad user community." +"As an undirected graph is required, the directed graph is transformed as " +"follows:" msgstr "" msgid "" -"pgRouting is part of `OSGeo Community Projects `__ from the `OSGeo Foundation `__ and included on `OSGeoLive `__." +"edges `(u, v)` and `(v, u)` is considered to be the same edge (denoted `(u, " +"v)`" msgstr "" -msgid "Licensing" +msgid "if ``agg_cost`` differs between one or more instances of edge `(u, v)`" msgstr "" -msgid "The following licenses can be found in pgRouting:" +msgid "" +"The minimum value of the ``agg_cost`` all instances of edge `(u, v)` is " +"going to be considered as the ``agg_cost`` of edge `(u, v)`" msgstr "" -msgid "**License**" +msgid "" +"Some (or all) traveling costs on edges will still might not obey the " +"triangle inequality." msgstr "" -msgid "GNU General Public License v2.0 or later" +msgid "When the data is incomplete, but it is a connected graph:" msgstr "" -msgid "" -"Most features of pgRouting are available under `GNU General Public License " -"v2.0 or later `_." +msgid "the missing values will be calculated with dijkstra algorithm." msgstr "" -msgid "Boost Software License - Version 1.0" +msgid "pgr_TSP(`Matrix SQL`_, ``[start_id, end_id]``)" msgstr "" -msgid "" -"Some Boost extensions are available under `Boost Software License - Version " -"1.0 `_." +msgid "Returns set of |tsp-result|" msgstr "" -msgid "MIT-X License" +msgid "OR EMTPY SET" msgstr "" -msgid "" -"Some code contributed by iMaptools.com is available under MIT-X license." +msgid "Using :doc:`pgr_dijkstraCostMatrix` to generate the matrix information" msgstr "" msgid "" -"The pgRouting Manual is licensed under a `Creative Commons Attribution-Share " -"Alike 3.0 License `_." +"**Line 4** Vertices :math:`\\{2, 4, 13, 14\\}` are not included because they " +"are not connected." msgstr "" -msgid "" -"In general license information should be included in the header of each " -"source file." +msgid "`Matrix SQL`_ as described below" msgstr "" -msgid "Contributors" +msgid "``ANY-INTEGER``" msgstr "" -msgid "This Release Contributors" +msgid "``ANY-NUMERICAL``" msgstr "" -msgid "Individuals in this release v3.7.x (in alphabetical order)" +msgid "Cost for going from start_vid to end_vid" msgstr "" -msgid "(Alphabetical order)" +msgid "Returns SET OF ``(seq, node, cost, agg_cost)``" msgstr "" -msgid "Regina Obe, Vicky Vergara" +msgid "Row sequence." msgstr "" -msgid "" -"And all the people that give us a little of their time making comments, " -"finding issues, making pull requests etc. in any of our products: " -"osm2pgrouting, pgRouting, pgRoutingLayer, workshop." +msgid "**node**" msgstr "" -msgid "Corporate Sponsors in this release (in alphabetical order)" +msgid "Identifier of the node/coordinate/point." msgstr "" msgid "" -"These are corporate entities that have contributed developer time, hosting, " -"or direct monetary funding to the pgRouting project:" -msgstr "" - -msgid "`OSGeo `__" -msgstr "" - -msgid "`OSGeo UK `__" +"Cost to traverse from the current ``node`` to the next ``node`` in the path " +"sequence." msgstr "" -msgid "`Google Summer of Code `__" +msgid "``0`` for the last row in the tour sequence." msgstr "" -msgid "`Paragon Corporation `__" +msgid "Aggregate cost from the ``node`` at ``seq = 1`` to the current node." msgstr "" -msgid "Contributors Past & Present:" +msgid "``0`` for the first row in the tour sequence." msgstr "" -msgid "Individuals (in alphabetical order)" +msgid "Start from vertex :math:`1`" msgstr "" -msgid "" -"Aasheesh Tiwari, Abhinav Jain, Aditya Pratap Singh, Adrien Berchet, Akio " -"Takubo, Andrea Nardelli, Anthony Tasca, Anton Patrushev, Aryan Gupta, Ashraf " -"Hossain, Ashish Kumar, Cayetano Benavent, Christian Gonzalez, Daniel Kastl, " -"Dave Potts, David Techer, Denis Rykov, Ema Miyawaki, Esteban Zimanyi, " -"Florian Thurkow, Frederic Junod, Gerald Fenoy, Gudesa Venkata Sai Akhil, " -"Hang Wu, Himanshu Raj, Imre Samu, Jay Mahadeokar, Jinfu Leng, Kai Behncke, " -"Kishore Kumar, Ko Nagase, Mahmoud Sakr, Manikata Kondeti, Mario Basa, Martin " -"Wiesenhaan, Maxim Dubinin, Maoguang Wang, Mohamed Bakli, Mohamed Zia, Mukul " -"Priya, Nitish Chauhan, Rajat Shinde, Razequl Islam, Regina Obe, Rohith " -"Reddy, Sarthak Agarwal, Shobhit Chaurasia, Sourabh Garg, Stephen Woodbridge, " -"Swapnil Joshi, Sylvain Housseman, Sylvain Pasche, Veenit Kumar, Vidhan Jain, " -"Virginia Vergara, Yige Huang" +msgid "**Line 6** ``start_vid => 1``" msgstr "" -msgid "Corporate Sponsors (in alphabetical order)" +msgid "Using points of interest to generate an asymetric matrix." msgstr "" -msgid "Camptocamp" +msgid "To generate an asymmetric matrix:" msgstr "" -msgid "CSIS (University of Tokyo)" +msgid "" +"**Line 4** The ``side`` information of ``pointsOfInterset`` is ignored by " +"not including it in the query" msgstr "" -msgid "Georepublic" +msgid "**Line 6** Generating an asymetric matrix with ``directed => true``" msgstr "" -msgid "Google Summer of Code" +msgid "" +":math:`min(agg\\_cost(u, v), agg\\_cost(v, u))` is going to be considered as " +"the ``agg_cost``" msgstr "" -msgid "iMaptools" +msgid "" +"The solution that can be larger than *twice as long as the optimal tour* " +"because:" msgstr "" -msgid "Leopark" +msgid "Triangle inequality might not be satisfied." msgstr "" -msgid "Orkney" +msgid "``start_id != 0 AND end_id != 0``" msgstr "" -msgid "OSGeo" +msgid "Connected incomplete data" msgstr "" -msgid "OSGeo UK" +msgid "" +"Using selected edges :math:`\\{2, 4, 5, 8, 9, 15\\}` the matrix is not " +"complete." msgstr "" -msgid "Paragon Corporation" +msgid "" +"Cost value for :math:`17 \\rightarrow 10` do not exist on the matrix, but " +"the value used is taken from :math:`10 \\rightarrow 17`." msgstr "" -msgid "Versaterm Inc." +msgid "``pgr_TSPeuclidean``" msgstr "" -msgid "More Information" +msgid "``pgr_TSPeuclidean`` - Approximation using *metric* algorithm." msgstr "" msgid "" -"The latest software, documentation and news items are available at the " -"pgRouting web site https://pgrouting.org." +"Using `Boost: metric TSP approx `__" msgstr "" msgid "" -"PostgreSQL database server at the PostgreSQL main site https://www." -"postgresql.org." +"The Simulated Annealing Algorithm related parameters are ignored: " +"`max_processing_time`, `tries_per_temperature`, " +"`max_changes_per_temperature`, `max_consecutive_non_changes`, " +"`initial_temperature`, `final_temperature`, `cooling_factor`, `randomize`" msgstr "" -msgid "PostGIS extension at the PostGIS project web site https://postgis.net." +msgid "Version 3.0.0" msgstr "" -msgid "Boost C++ source libraries at https://www.boost.org." +msgid "Name change from pgr_eucledianTSP" msgstr "" -msgid ":doc:`migration`" +msgid "New official function." msgstr "" -msgid "pgr_KSP" +msgid "" +"Any duplicated identifier will be ignored. The coordinates that will be kept" msgstr "" -msgid "``pgr_KSP`` — Yen's algorithm for K shortest paths using Dijkstra." +msgid "is arbitrarly." msgstr "" -msgid "Availability" +msgid "" +"The coordinates are quite similar for the same identifier, for example ::" msgstr "" -msgid "Version 3.6.0" +msgid "" +"The coordinates are quite different for the same identifier, for example ::" msgstr "" -msgid "Result columns standarized to: |nksp-result|" +msgid "pgr_TSPeuclidean(`Coordinates SQL`_, ``[start_id, end_id]``)" msgstr "" -msgid "``pgr_ksp`` (One to One)" +msgid "With default values" msgstr "" -msgid "Added ``start_vid`` and ``end_vid`` result columns." +msgid "`Coordinates SQL`_" msgstr "" -msgid "New overload functions:" +msgid "`Coordinates SQL`_ as described below" msgstr "" -msgid "``pgr_ksp`` (One to Many)" +msgid "Coordinates SQL" msgstr "" -msgid "``pgr_ksp`` (Many to One)" +msgid "``x``" msgstr "" -msgid "``pgr_ksp`` (Many to Many)" +msgid "X value of the coordinate." msgstr "" -msgid "``pgr_ksp`` (Combinations)" +msgid "``y``" msgstr "" -msgid "Version 2.1.0" +msgid "Y value of the coordinate." msgstr "" -msgid "Signature change" +msgid "Test 29 cities of Western Sahara" msgstr "" -msgid "Old signature no longer supported" +msgid "" +"This example shows how to make performance tests using University of " +"Waterloo's `example data `__ using the 29 cities of `Western Sahara dataset `__" msgstr "" -msgid "Version 2.0.0" +msgid "Creating a table for the data and storing the data" msgstr "" -msgid "**Official** function" +msgid "Adding a geometry (for visual purposes)" msgstr "" -msgid "" -"The K shortest path routing algorithm based on Yen's algorithm. \"K\" is the " -"number of shortest paths desired." +msgid "Total tour cost" msgstr "" -msgid "Signatures" +msgid "" +"Getting a total cost of the tour, compare the value with the length of an " +"optimal tour is 27603, given on the dataset" msgstr "" -msgid "Summary" +msgid "Getting a geometry of the tour" msgstr "" -msgid "pgr_KSP(`Edges SQL`_, **start vid**, **end vid**, **K**, [**options**])" +msgid "Visual results" msgstr "" msgid "" -"pgr_KSP(`Edges SQL`_, **start vid**, **end vids**, **K**, [**options**])" +"Visualy, The first image is the `optimal solution `__ and the second image is the solution " +"obtained with ``pgr_TSPeuclidean``." msgstr "" -msgid "" -"pgr_KSP(`Edges SQL`_, **start vids**, **end vid**, **K**, [**options**])" +msgid "``pgr_aStar``" msgstr "" -msgid "" -"pgr_KSP(`Edges SQL`_, **start vids**, **end vids**, **K**, [**options**])" +msgid "``pgr_aStar`` — Shortest path using the A* algorithm." msgstr "" -msgid "pgr_KSP(`Edges SQL`_, `Combinations SQL`_, **K**, [**options**])" +msgid "Combinations signature promoted to official." msgstr "" -msgid "**options:** ``[directed, heap_paths]``" +msgid "Standarizing output columns to |short-generic-result|" msgstr "" -msgid "Returns set of |nksp-result|" +msgid "pgr_aStar(One to One) added ``start_vid`` and ``end_vid`` columns." msgstr "" -msgid "OR EMPTY SET" +msgid "pgr_aStar(One to Many) added ``end_vid`` column." msgstr "" -msgid "Example" +msgid "pgr_aStar(Many to One) added ``start_vid`` column." msgstr "" -msgid "Get 2 paths from :math:`6` to :math:`17` on a directed graph." +msgid "Version 3.2.0" msgstr "" -msgid "" -"Get 2 paths from vertex :math:`6` to vertices :math:`\\{10, 17\\}` on a " -"directed graph." +msgid "New proposed signature:" msgstr "" -msgid "" -"Get 2 paths from vertices :math:`\\{6, 1\\}` to vertex :math:`17` on a " -"directed graph." +msgid "Function promoted to official." msgstr "" -msgid "" -"Get 2 paths vertices :math:`\\{6, 1\\}` to vertices :math:`\\{10, 17\\}` on " -"a directed graph." +msgid "Version 2.4.0" msgstr "" -msgid "Using a combinations table on an directed graph" +msgid "pgr_aStar(One to Many)" msgstr "" -msgid "The combinations table:" +msgid "pgr_aStar(Many to One)" msgstr "" -msgid "The query:" +msgid "pgr_aStar(Many to Many)" msgstr "" -msgid "Identifier of the destination vertex." +msgid "Signature change on pgr_aStar(One to One)" msgstr "" -msgid "**K**" -msgstr "" - -msgid "Number of required paths." -msgstr "" - -msgid "KSP Optional parameters" +msgid "" +"The results are equivalent to the union of the results of the `pgr_aStar(` " +"`One to One`_ `)` on the:" msgstr "" -msgid "``heap_paths``" +msgid "pgr_aStar(`Edges SQL`_, **start vid**, **end vid**, [**options**])" msgstr "" -msgid "When ``false`` Returns at most K paths." +msgid "pgr_aStar(`Edges SQL`_, **start vid**, **end vids**, [**options**])" msgstr "" -msgid "When ``true`` all the calculated paths while processing are returned." +msgid "pgr_aStar(`Edges SQL`_, **start vids**, **end vid**, [**options**])" msgstr "" -msgid "" -"Roughly, when the shortest path has ``N`` edges, the heap will contain about " -"than ``N * K`` paths for small value of ``K`` and ``K > 5``." +msgid "pgr_aStar(`Edges SQL`_, **start vids**, **end vids**, [**options**])" msgstr "" -msgid "" -"Has value **1** for the first of a path from ``start_vid`` to ``end_vid``" +msgid "pgr_aStar(`Edges SQL`_, `Combinations SQL`_, [**options**])" msgstr "" -msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``" +msgid "**options:** ``[directed, heuristic, factor, epsilon]``" msgstr "" -msgid ":math:`0` for the last ``node`` of the path." +msgid "Returns set of |short-generic-result|" msgstr "" -msgid "Aggregate cost from **start vid** to ``node``." +msgid "Optional parameters are `named parameters` and have a default value." msgstr "" -msgid "Additional Examples" +msgid "" +"From vertex :math:`6` to vertex :math:`12` on a **directed** graph with " +"heuristic :math:`2`" msgstr "" -msgid "Get 2 paths from :math:`6` to :math:`17` on an undirected graph" +msgid "" +"From vertex :math:`6` to vertices :math:`\\{10, 12\\}` on a **directed** " +"graph with heuristic :math:`3` and factor :math:`3.5`" msgstr "" -msgid "Also get the paths in the heap." +msgid "" +"From vertices :math:`\\{6, 8\\}` to vertex :math:`10` on an **undirected** " +"graph with heuristic :math:`4`" msgstr "" -msgid "Get 2 paths using combinations table on an undirected graph" +msgid "" +"From vertices :math:`\\{6, 8\\}` to vertices :math:`\\{10, 12\\}` on a " +"**directed** graph with factor :math:`0.5`" msgstr "" msgid "" -"Get 2 paths from vertices :math:`\\{6, 1\\}` to vertex :math:`17` on a " -"undirected graph." +"Using a combinations table on a **directed** graph with factor :math:`0.5`." msgstr "" -msgid "https://en.wikipedia.org/wiki/K_shortest_path_routing" +msgid "Example 1" msgstr "" -msgid "``pgr_TSP``" +msgid "Demonstration of repeated values are ignored, and result is sorted." msgstr "" -msgid "``pgr_TSP`` - Aproximation using *metric* algorithm." +msgid "Example 2" msgstr "" -msgid "Availability:" +msgid "Making **start vids** the same as **end vids**." msgstr "" -msgid "Version 3.2.1" +msgid "Example 3" msgstr "" -msgid "" -"Metric Algorithm from `Boost library `__" +msgid "Manually assigned vertex combinations." msgstr "" -msgid "Simulated Annealing Algorithm no longer supported" +msgid "``pgr_aStarCost``" msgstr "" msgid "" -"The Simulated Annealing Algorithm related parameters are ignored: " -"max_processing_time, tries_per_temperature, max_changes_per_temperature, " -"max_consecutive_non_changes, initial_temperature, final_temperature, " -"cooling_factor, randomize" +"``pgr_aStarCost`` - Total cost of the shortest path using the A* algorithm." msgstr "" -msgid "Version 2.3.0" +msgid "New proposed function." msgstr "" msgid "" -"Can be Used with :doc:`costMatrix-category` functions preferably with " -"`directed => false`." +"The ``pgr_aStarCost`` function sumarizes of the cost of the shortest path " +"using the A* algorithm." msgstr "" -msgid "With ``directed => false``" +msgid "" +"Let be the case the values returned are stored in a table, so the unique " +"index would be the pair: `(start_vid, end_vid)`" msgstr "" -msgid "Will generate a graph that:" +msgid "For undirected graphs, the results are symmetric." msgstr "" -msgid "is undirected" +msgid "The returned values are ordered in ascending order:" msgstr "" -msgid "is fully connected (As long as the graph has one component)" +msgid "`start_vid` ascending" msgstr "" -msgid "all traveling costs on edges obey the triangle inequality." +msgid "`end_vid` ascending" msgstr "" -msgid "When ``start_vid = 0 OR end_vid = 0``" +msgid "pgr_aStarCost(`Edges SQL`_, **start vid**, **end vid**, [**options**])" msgstr "" -msgid "" -"The solutions generated is garanteed to be *twice as long as the optimal " -"tour in the worst case*" +msgid "pgr_aStarCost(`Edges SQL`_, **start vid**, **end vids**, [**options**])" msgstr "" -msgid "When ``start_vid != 0 AND end_vid != 0 AND start_vid != end_vid``" +msgid "pgr_aStarCost(`Edges SQL`_, **start vids**, **end vid**, [**options**])" msgstr "" msgid "" -"It is **not garanteed** that the solution will be, in the worse case, twice " -"as long as the optimal tour, due to the fact that `end_vid` is forced to be " -"in a fixed position." +"pgr_aStarCost(`Edges SQL`_, **start vids**, **end vids**, [**options**])" msgstr "" -msgid "With ``directed => true``" +msgid "pgr_aStarCost(`Edges SQL`_, `Combinations SQL`_, [**options**])" msgstr "" -msgid "" -"It is **not garanteed** that the solution will be, in the worse case, twice " -"as long as the optimal tour" +msgid "Returns set of |matrix-result|" msgstr "" -msgid "is directed" +msgid "pgr_aStarCost(`Edges SQL`_, **start vids**, **end vids**, [options])" msgstr "" -msgid "" -"some (or all) traveling costs on edges might not obey the triangle " -"inequality." +msgid "``pgr_aStarCostMatrix``" msgstr "" msgid "" -"As an undirected graph is required, the directed graph is transformed as " -"follows:" +"``pgr_aStarCostMatrix`` - Calculates the a cost matrix using :doc:" +"`pgr_aStar`." msgstr "" -msgid "" -"edges `(u, v)` and `(v, u)` is considered to be the same edge (denoted `(u, " -"v)`" +msgid "Using internaly the :doc:`pgr_aStar` algorithm" msgstr "" -msgid "if ``agg_cost`` differs between one or more instances of edge `(u, v)`" +msgid "Returns a cost matrix." msgstr "" -msgid "" -"The minimum value of the ``agg_cost`` all instances of edge `(u, v)` is " -"going to be considered as the ``agg_cost`` of edge `(u, v)`" +msgid "No ordering is performed" msgstr "" -msgid "" -"Some (or all) traveling costs on edges will still might not obey the " -"triangle inequality." +msgid "let `v` and `u` are nodes on the graph:" msgstr "" -msgid "When the data is incomplete, but it is a connected graph:" +msgid "when there is no path from `v` to `u`:" msgstr "" -msgid "the missing values will be calculated with dijkstra algorithm." +msgid "cost from `v` to `u` is :math:`\\inf`" msgstr "" -msgid "pgr_TSP(`Matrix SQL`_, ``[start_id, end_id]``)" +msgid "when :math:`v = u` then" msgstr "" -msgid "Returns set of |tsp-result|" +msgid "cost from `v` to `u` is :math:`0`" msgstr "" -msgid "OR EMTPY SET" +msgid "When the graph is **undirected** the cost matrix is symmetric" msgstr "" -msgid "Using :doc:`pgr_dijkstraCostMatrix` to generate the matrix information" +msgid "pgr_aStarCostMatrix(`Edges SQL`_, **start vids**, [**options**])" msgstr "" msgid "" -"**Line 4** Vertices :math:`\\{2, 4, 13, 14\\}` are not included because they " -"are not connected." +"Symmetric cost matrix for vertices :math:`\\{5, 6, 10, 15\\}` on an " +"**undirected** graph using heuristic :math:`2`" msgstr "" -msgid "`Matrix SQL`_ as described below" +msgid "Use with :doc:`pgr_TSP`" msgstr "" -msgid "``ANY-INTEGER``" +msgid "``pgr_alphaShape``" msgstr "" -msgid "``ANY-NUMERICAL``" +msgid "``pgr_alphaShape`` — Polygon part of an alpha shape." msgstr "" -msgid "Cost for going from start_vid to end_vid" +msgid "Breaking change on signature" msgstr "" -msgid "Returns SET OF ``(seq, node, cost, agg_cost)``" +msgid "**Boost 1.54** & **Boost 1.55** are supported" msgstr "" -msgid "Row sequence." +msgid "**Boost 1.56+** is preferable" msgstr "" -msgid "**node**" +msgid "Boost Geometry is stable on Boost 1.56" msgstr "" -msgid "Identifier of the node/coordinate/point." +msgid "Added alpha argument with default 0 (use optimal value)" msgstr "" -msgid "" -"Cost to traverse from the current ``node`` to the next ``node`` in the path " -"sequence." +msgid "Support to return multiple outer/inner ring" msgstr "" -msgid "``0`` for the last row in the tour sequence." +msgid "Renamed from version 1.x" msgstr "" -msgid "Aggregate cost from the ``node`` at ``seq = 1`` to the current node." +msgid "Support" msgstr "" -msgid "``0`` for the first row in the tour sequence." +msgid "Returns the polygon part of an alpha shape." msgstr "" -msgid "Start from vertex :math:`1`" +msgid "Input is a *geometry* and returns a *geometry*" msgstr "" -msgid "**Line 6** ``start_vid => 1``" +msgid "Uses PostGis ST_DelaunyTriangles" msgstr "" -msgid "Using points of interest to generate an asymetric matrix." +msgid "" +"Instead of using CGAL's definition of `alpha` it use the ``spoon_radius``" msgstr "" -msgid "To generate an asymmetric matrix:" +msgid ":math:`spoon\\_radius = \\sqrt alpha`" msgstr "" msgid "" -"**Line 4** The ``side`` information of ``pointsOfInterset`` is ignored by " -"not including it in the query" +"A Triangle area is considered part of the alpha shape when :math:" +"`circumcenter\\ radius < spoon\\_radius`" msgstr "" -msgid "**Line 6** Generating an asymetric matrix with ``directed => true``" +msgid "The ``alpha`` parameter is the **spoon radius**" msgstr "" msgid "" -":math:`min(agg\\_cost(u, v), agg\\_cost(v, u))` is going to be considered as " -"the ``agg_cost``" +"When the total number of points is less than 3, returns an EMPTY geometry" msgstr "" -msgid "" -"The solution that can be larger than *twice as long as the optimal tour* " -"because:" +msgid "pgr_alphaShape(**geometry**, [alpha])" msgstr "" -msgid "Triangle inequality might not be satisfied." +msgid "RETURNS ``geometry``" msgstr "" -msgid "``start_id != 0 AND end_id != 0``" +msgid "" +"passing a geometry collection with spoon radius :math:`1.5` using the return " +"variable ``geom``" msgstr "" -msgid "Connected incomplete data" +msgid "**geometry**" msgstr "" -msgid "" -"Using selected edges :math:`\\{2, 4, 5, 8, 9, 15\\}` the matrix is not " -"complete." +msgid "``geometry``" msgstr "" -msgid "" -"Cost value for :math:`17 \\rightarrow 10` do not exist on the matrix, but " -"the value used is taken from :math:`10 \\rightarrow 17`." +msgid "Geometry with at least :math:`3` points" msgstr "" -msgid "``pgr_TSPeuclidean``" +msgid "``alpha``" msgstr "" -msgid "``pgr_TSPeuclidean`` - Aproximation using *metric* algorithm." +msgid "The radius of the spoon." msgstr "" -msgid "" -"The Simulated Annealing Algorithm related parameters are ignored: " -"`max_processing_time`, `tries_per_temperature`, " -"`max_changes_per_temperature`, `max_consecutive_non_changes`, " -"`initial_temperature`, `final_temperature`, `cooling_factor`, `randomize`" +msgid "Return Value" msgstr "" -msgid "Version 3.0.0" +msgid "Kind of geometry" msgstr "" -msgid "Name change from pgr_eucledianTSP" +msgid "GEOMETRY COLLECTION" msgstr "" -msgid "New **Official** function" +msgid "A Geometry collection of Polygons" msgstr "" -msgid "" -"Any duplicated identifier will be ignored. The coordinates that will be kept" +msgid ":doc:`pgr_drivingDistance`" msgstr "" -msgid "is arbitrarly." +msgid "`ST_ConcaveHull `__" msgstr "" -msgid "" -"The coordinates are quite similar for the same identifier, for example ::" +msgid "``pgr_analyzeGraph``" msgstr "" -msgid "" -"The coordinates are quite different for the same identifier, for example ::" +msgid "``pgr_analyzeGraph`` — Analyzes the network topology." msgstr "" -msgid "pgr_TSPeuclidean(`Coordinates SQL`_, ``[start_id, end_id]``)" +msgid "The function returns:" msgstr "" -msgid "With default values" +msgid "``OK`` after the analysis has finished." msgstr "" -msgid "`Coordinates SQL`_" +msgid "``FAIL`` when the analysis was not completed due to an error." msgstr "" -msgid "`Coordinates SQL`_ as described below" +msgid "pgr_analyzeGraph(**edge_table**, **tolerance**, [**options**])" msgstr "" -msgid "Coordinates SQL" +msgid "**options:** ``[the_geom, id, source, target, rows_where]``" msgstr "" -msgid "``x``" +msgid "RETURNS ``VARCHAR``" msgstr "" -msgid "X value of the coordinate." +msgid "Prerequisites" msgstr "" -msgid "``y``" +msgid "" +"The edge table to be analyzed must contain a source column and a target " +"column filled with id's of the vertices of the segments and the " +"corresponding vertices table _vertices_pgr that stores the " +"vertices information." msgstr "" -msgid "Y value of the coordinate." +msgid "Use :doc:`pgr_createVerticesTable` to create the vertices table." msgstr "" -msgid "Test 29 cities of Western Sahara" +msgid "" +"Use :doc:`pgr_createTopology` to create the topology and the vertices table." msgstr "" -msgid "" -"This example shows how to make performance tests using University of " -"Waterloo's `example data `__ using the 29 cities of `Western Sahara dataset `__" +msgid "The analyze graph function accepts the following parameters:" msgstr "" -msgid "Creating a table for the data and storing the data" +msgid "edge_table" msgstr "" -msgid "Adding a geometry (for visual purposes)" +msgid "``text`` Network table name. (may contain the schema name as well)" msgstr "" -msgid "Total tour cost" +msgid "tolerance" msgstr "" msgid "" -"Getting a total cost of the tour, compare the value with the length of an " -"optimal tour is 27603, given on the dataset" -msgstr "" - -msgid "Getting a geometry of the tour" +"``float8`` Snapping tolerance of disconnected edges. (in projection unit)" msgstr "" -msgid "Visual results" +msgid "the_geom" msgstr "" msgid "" -"Visualy, The first image is the `optimal solution `__ and the second image is the solution " -"obtained with ``pgr_TSPeuclidean``." +"``text`` Geometry column name of the network table. Default value is " +"``the_geom``." msgstr "" -msgid ":doc:`sampledata` network." +msgid "id" msgstr "" -msgid "``pgr_aStar``" +msgid "" +"``text`` Primary key column name of the network table. Default value is " +"``id``." msgstr "" -msgid "``pgr_aStar`` — Shortest path using the A* algorithm." +msgid "source" msgstr "" -msgid "Standarizing output columns to |short-generic-result|" +msgid "" +"``text`` Source column name of the network table. Default value is " +"``source``." msgstr "" -msgid "" -"``pgr_aStar`` (`One to One`_) added ``start_vid`` and ``end_vid`` columns." +msgid "target" msgstr "" -msgid "``pgr_aStar`` (`One to Many`_) added ``end_vid`` column." +msgid "" +"``text`` Target column name of the network table. Default value is " +"``target``." msgstr "" -msgid "``pgr_aStar`` (`Many to One`_) added ``start_vid`` column." +msgid "rows_where" msgstr "" -msgid "Version 3.2.0" +msgid "" +"``text`` Condition to select a subset or rows. Default value is ``true`` to " +"indicate all rows." msgstr "" -msgid "New **proposed** signature:" +msgid "Uses the vertices table: _vertices_pgr." msgstr "" -msgid "``pgr_aStar`` (`Combinations`_)" +msgid "Fills completely the ``cnt`` and ``chk`` columns of the vertices table." msgstr "" -msgid "Version 2.4.0" +msgid "" +"Returns the analysis of the section of the network defined by ``rows_where``" msgstr "" -msgid "New **Proposed** signatures:" +msgid "The vertices table is not found." msgstr "" -msgid "``pgr_aStar`` (`One to Many`_)" +msgid "" +"A required column of the Network table is not found or is not of the " +"appropriate type." msgstr "" -msgid "``pgr_aStar`` (`Many to One`_)" +msgid "The condition is not well formed." msgstr "" -msgid "``pgr_aStar`` (`Many to Many`_)" +msgid "The names of source , target or id are the same." msgstr "" -msgid "Signature change on ``pgr_astar`` (`One to One`_)" +msgid "The SRID of the geometry could not be determined." msgstr "" -msgid "**Official** ``pgr_aStar`` (`One to One`_)" +msgid "The Vertices Table" msgstr "" msgid "" -"The results are equivalent to the union of the results of the `pgr_aStar(` " -"`One to One`_ `)` on the:" +"The vertices table can be created with :doc:`pgr_createVerticesTable " +"` or :doc:`pgr_createTopology `" msgstr "" -msgid "pgr_aStar(`Edges SQL`_, **start vid**, **end vid**, [**options**])" +msgid "The structure of the vertices table is:" msgstr "" -msgid "pgr_aStar(`Edges SQL`_, **start vid**, **end vids**, [**options**])" +msgid "``bigint`` Identifier of the vertex." msgstr "" -msgid "pgr_aStar(`Edges SQL`_, **start vids**, **end vid**, [**options**])" +msgid "cnt" msgstr "" -msgid "pgr_aStar(`Edges SQL`_, **start vids**, **end vids**, [**options**])" +msgid "" +"``integer`` Number of vertices in the edge_table that reference this vertex." msgstr "" -msgid "pgr_aStar(`Edges SQL`_, `Combinations SQL`_, [**options**])" +msgid "chk" msgstr "" -msgid "**options:** ``[directed, heuristic, factor, epsilon]``" +msgid "``integer`` Indicator that the vertex might have a problem." msgstr "" -msgid "Returns set of |short-generic-result|" +msgid "ein" msgstr "" -msgid "Optional parameters are `named parameters` and have a default value." +msgid "" +"``integer`` Number of vertices in the edge_table that reference this vertex " +"as incoming. See :doc:`pgr_analyzeOneWay `." msgstr "" -msgid "" -"From vertex :math:`6` to vertex :math:`12` on a **directed** graph with " -"heuristic :math:`2`" +msgid "eout" msgstr "" msgid "" -"From vertex :math:`6` to vertices :math:`\\{10, 12\\}` on a **directed** " -"graph with heuristic :math:`3` and factor :math:`3.5`" +"``integer`` Number of vertices in the edge_table that reference this vertex " +"as outgoing. See :doc:`pgr_analyzeOneWay `." msgstr "" -msgid "" -"From vertices :math:`\\{6, 8\\}` to vertex :math:`10` on an **undirected** " -"graph with heuristic :math:`4`" +msgid "``geometry`` Point geometry of the vertex." msgstr "" -msgid "" -"From vertices :math:`\\{6, 8\\}` to vertices :math:`\\{10, 12\\}` on a " -"**directed** graph with factor :math:`0.5`" +msgid "Usage when the edge table's columns MATCH the default values:" msgstr "" -msgid "" -"Using a combinations table on a **directed** graph with factor :math:`0.5`." +msgid "The simplest way to use pgr_analyzeGraph is:" msgstr "" -msgid "Example 1" +msgid "Arguments are given in the order described in the parameters:" msgstr "" -msgid "Demonstration of repeated values are ignored, and result is sorted." +msgid "We get the same result as the simplest way to use the function." msgstr "" -msgid "Example 2" +msgid "An error would occur when" msgstr "" -msgid "Making **start vids** the same as **end vids**." +msgid "the arguments are not given in the appropriate order:" msgstr "" -msgid "Example 3" +msgid "" +"In this example, the column ``id`` of the table ``mytable`` is passed to the " +"function as the geometry column, and the geometry column ``the_geom`` is " +"passed to the function as the id column." msgstr "" -msgid "Manually assigned vertex combinations." +msgid "When using the named notation" msgstr "" -msgid "pgr_aStarCost" +msgid "The order of the parameters do not matter:" msgstr "" msgid "" -"``pgr_aStarCost`` - Total cost of the shortest path using the A* algorithm." +"Parameters defined with a default value can be omitted, as long as the value " +"matches the default:" msgstr "" -msgid "``pgr_aStarCost`` (`Combinations`_)" +msgid "Selecting rows using rows_where parameter" msgstr "" -msgid "New **proposed** function" +msgid "" +"Selecting rows based on the id. Displays the analysis a the section of the " +"network." msgstr "" msgid "" -"The ``pgr_aStarCost`` function sumarizes of the cost of the shortest path " -"using the A* algorithm." +"Selecting the rows where the geometry is near the geometry of row with " +"``id`` = 5" msgstr "" msgid "" -"Let be the case the values returned are stored in a table, so the unique " -"index would be the pair: `(start_vid, end_vid)`" +"Selecting the rows where the geometry is near the geometry of the row with " +"``gid`` =100 of the table ``othertable``." msgstr "" -msgid "For undirected graphs, the results are symmetric." +msgid "Usage when the edge table's columns DO NOT MATCH the default values:" msgstr "" -msgid "The returned values are ordered in ascending order:" +msgid "For the following table" msgstr "" -msgid "`start_vid` ascending" +msgid "Using positional notation:" msgstr "" -msgid "`end_vid` ascending" +msgid "" +"The arguments need to be given in the order described in the parameters:" msgstr "" -msgid "pgr_aStarCost(`Edges SQL`_, **start vid**, **end vid**, [**options**])" +msgid "" +"An error would occur when the arguments are not given in the appropriate " +"order: In this example, the column ``gid`` of the table ``mytable`` is " +"passed to the function as the geometry column, and the geometry column " +"``mygeom`` is passed to the function as the id column." msgstr "" -msgid "pgr_aStarCost(`Edges SQL`_, **start vid**, **end vids**, [**options**])" +msgid "" +"In this scenario omitting a parameter would create an error because the " +"default values for the column names do not match the column names of the " +"table." msgstr "" -msgid "pgr_aStarCost(`Edges SQL`_, **start vids**, **end vid**, [**options**])" +msgid "Selecting rows based on the id." msgstr "" msgid "" -"pgr_aStarCost(`Edges SQL`_, **start vids**, **end vids**, [**options**])" -msgstr "" - -msgid "pgr_aStarCost(`Edges SQL`_, `Combinations SQL`_, [**options**])" +"Selecting the rows WHERE the geometry is near the geometry of row with " +"``id`` =5 ." msgstr "" -msgid "Returns set of |matrix-result|" +msgid "" +"Selecting the rows WHERE the geometry is near the place='myhouse' of the " +"table ``othertable``. (note the use of quote_literal)" msgstr "" -msgid "pgr_aStarCost(`Edges SQL`_, **start vids**, **end vids**, [options])" +msgid ":doc:`pgr_analyzeOneWay`" msgstr "" -msgid "``pgr_aStarCostMatrix``" +msgid ":doc:`pgr_createVerticesTable`" msgstr "" -msgid "" -"``pgr_aStarCostMatrix`` - Calculates the a cost matrix using :doc:" -"`pgr_aStar`." +msgid ":doc:`pgr_nodeNetwork` to create nodes to a not noded edge table." msgstr "" -msgid "Using internaly the :doc:`pgr_aStar` algorithm" +msgid "``pgr_analyzeOneWay``" msgstr "" -msgid "Returns a cost matrix." +msgid "" +"``pgr_analyzeOneWay`` — Analyzes oneway Sstreets and identifies flipped " +"segments." msgstr "" -msgid "No ordering is performed" +msgid "" +"This function analyzes oneway streets in a graph and identifies any flipped " +"segments." msgstr "" -msgid "let `v` and `u` are nodes on the graph:" +msgid "" +"The analyses of one way segments is pretty simple but can be a powerful " +"tools to identifying some the potential problems created by setting the " +"direction of a segment the wrong way. A node is a `source` if it has edges " +"the exit from that node and no edges enter that node. Conversely, a node is " +"a `sink` if all edges enter the node but none exit that node. For a `source` " +"type node it is logically impossible to exist because no vehicle can exit " +"the node if no vehicle and enter the node. Likewise, if you had a `sink` " +"node you would have an infinite number of vehicle piling up on this node " +"because you can enter it but not leave it." msgstr "" -msgid "when there is no path from `v` to `u`:" +msgid "" +"So why do we care if the are not feasible? Well if the direction of an edge " +"was reversed by mistake we could generate exactly these conditions. Think " +"about a divided highway and on the north bound lane one segment got entered " +"wrong or maybe a sequence of multiple segments got entered wrong or maybe " +"this happened on a round-about. The result would be potentially a `source` " +"and/or a `sink` node." msgstr "" -msgid "cost from `v` to `u` is :math:`\\inf`" +msgid "" +"So by counting the number of edges entering and exiting each node we can " +"identify both `source` and `sink` nodes so that you can look at those areas " +"of your network to make repairs and/or report the problem back to your data " +"vendor." msgstr "" -msgid "when :math:`v = u` then" +msgid "" +"pgr_analyzeOneWay(**geom_table**, **s_in_rules**, **s_out_rules**, " +"**t_in_rules**, **t_out_rules**, [**options**])" msgstr "" -msgid "cost from `v` to `u` is :math:`0`" +msgid "**options:** ``[oneway, source, target, two_way_if_null]``" msgstr "" -msgid "When the graph is **undirected** the cost matrix is symmetric" +msgid "RETURNS ``TEXT``" msgstr "" -msgid "pgr_aStarCostMatrix(`Edges SQL`_, **start vids**, [**options**])" +msgid "s_in_rules" msgstr "" -msgid "" -"Symmetric cost matrix for vertices :math:`\\{5, 6, 10, 15\\}` on an " -"**undirected** graph using heuristic :math:`2`" +msgid "``text[]`` source node **in** rules" msgstr "" -msgid "Use with :doc:`pgr_TSP`" +msgid "s_out_rules" msgstr "" -msgid "``pgr_alphaShape``" +msgid "``text[]`` source node **out** rules" msgstr "" -msgid "``pgr_alphaShape`` — Polygon part of an alpha shape." +msgid "t_in_rules" msgstr "" -msgid "Breaking change on signature" +msgid "``text[]`` target node **in** rules" msgstr "" -msgid "**Boost 1.54** & **Boost 1.55** are supported" +msgid "t_out_rules" msgstr "" -msgid "**Boost 1.56+** is preferable" +msgid "``text[]`` target node **out** rules" msgstr "" -msgid "Boost Geometry is stable on Boost 1.56" +msgid "oneway" msgstr "" -msgid "Added alpha argument with default 0 (use optimal value)" +msgid "" +"``text`` oneway column name name of the network table. Default value is " +"``oneway``." msgstr "" -msgid "Support to return multiple outer/inner ring" +msgid "two_way_if_null" msgstr "" -msgid "Renamed from version 1.x" +msgid "" +"``boolean`` flag to treat oneway NULL values as bi-directional. Default " +"value is ``true``." msgstr "" -msgid "Returns the polygon part of an alpha shape." +msgid "" +"It is strongly recommended to use the named notation. See :doc:" +"`pgr_createVerticesTable` or :doc:`pgr_createTopology` for examples." msgstr "" -msgid "Input is a *geometry* and returns a *geometry*" +msgid "" +"Fills completely the ``ein`` and ``eout`` columns of the vertices table." msgstr "" -msgid "Uses PostGis ST_DelaunyTriangles" +msgid "The names of source , target or oneway are the same." msgstr "" msgid "" -"Instead of using CGAL's definition of `alpha` it use the ``spoon_radius``" +"The rules are defined as an array of text strings that if match the " +"``oneway`` value would be counted as ``true`` for the source or target " +"**in** or **out** condition." msgstr "" -msgid ":math:`spoon\\_radius = \\sqrt alpha`" +msgid "" +"The vertices table can be created with :doc:`pgr_createVerticesTable` or :" +"doc:`pgr_createTopology`" msgstr "" msgid "" -"A Triangle area is considered part of the alpha shape when :math:" -"`circumcenter\\ radius < spoon\\_radius`" +"``integer`` Number of vertices in the edge_table that reference this vertex. " +"See :doc:`pgr_analyzeGgraph `." msgstr "" -msgid "The ``alpha`` parameter is the **spoon radius**" +msgid "" +"``integer`` Indicator that the vertex might have a problem. See :doc:" +"`pgr_analyzeGraph `." msgstr "" msgid "" -"When the total number of points is less than 3, returns an EMPTY geometry" +"``integer`` Number of vertices in the edge_table that reference this vertex " +"as incoming." msgstr "" -msgid "pgr_alphaShape(**geometry**, [alpha])" +msgid "" +"``integer`` Number of vertices in the edge_table that reference this vertex " +"as outgoing." msgstr "" -msgid "RETURNS ``geometry``" +msgid ":doc:`pgr_analyzeGraph`" +msgstr "" + +msgid "``pgr_articulationPoints``" msgstr "" msgid "" -"passing a geometry collection with spoon radius :math:`1.5` using the return " -"variable ``geom``" +"``pgr_articulationPoints`` - Return the articulation points of an undirected " +"graph." msgstr "" -msgid "**geometry**" +msgid "Result columns change: ``seq`` is removed" msgstr "" -msgid "``geometry``" +msgid "Version 2.5.0" msgstr "" -msgid "Geometry with at least :math:`3` points" +msgid "New experimental function." msgstr "" -msgid "``alpha``" +msgid "" +"Those vertices that belong to more than one biconnected component are called " +"articulation points or, equivalently, cut vertices. Articulation points are " +"vertices whose removal would increase the number of connected components in " +"the graph. This implementation can only be used with an undirected graph." msgstr "" -msgid "The radius of the spoon." +msgid "Works for **undirected** graphs." msgstr "" -msgid "Return Value" +msgid "``node`` ascending" msgstr "" -msgid "Kind of geometry" +msgid "Running time: :math:`O(V + E)`" msgstr "" -msgid "GEOMETRY COLLECTION" +msgid "pgr_articulationPoints(`Edges SQL`_)" msgstr "" -msgid "A Geometry collection of Polygons" +msgid "Returns set of |result-node|" msgstr "" -msgid ":doc:`pgr_drivingDistance`" +msgid "The articulation points of the graph" msgstr "" -msgid "`ST_ConcaveHull `__" +msgid "Nodes in red are the articulation points." msgstr "" -msgid "pgr_analyzeGraph" +msgid "" +"`Boost: Biconnected components & articulation points `__" msgstr "" -msgid "``pgr_analyzeGraph`` — Analyzes the network topology." +msgid "" +"wikipedia: `Biconnected component `__" msgstr "" -msgid "The function returns:" +msgid "``pgr_bdAstar``" msgstr "" -msgid "``OK`` after the analysis has finished." +msgid "``pgr_bdAstar`` — Shortest path using the bidirectional A* algorithm." msgstr "" -msgid "``FAIL`` when the analysis was not completed due to an error." +msgid "pgr_bdAstar(One to One) added ``start_vid`` and ``end_vid`` columns." msgstr "" -msgid "pgr_analyzeGraph(**edge_table**, **tolerance**, [**options**])" +msgid "pgr_bdAstar(One to Many) added ``end_vid`` column." msgstr "" -msgid "**options:** ``[the_geom, id, source, target, rows_where]``" +msgid "pgr_bdAstar(Many to One) added ``start_vid`` column." msgstr "" -msgid "RETURNS ``VARCHAR``" +msgid "pgr_bdAstar(One to Many)" msgstr "" -msgid "Prerequisites" +msgid "pgr_bdAstar(Many to One)" msgstr "" -msgid "" -"The edge table to be analyzed must contain a source column and a target " -"column filled with id's of the vertices of the segments and the " -"corresponding vertices table _vertices_pgr that stores the " -"vertices information." +msgid "pgr_bdAstar(Many to Many)" msgstr "" -msgid "Use :doc:`pgr_createVerticesTable` to create the vertices table." +msgid "Signature change on pgr_bdAstar(One to One)" msgstr "" msgid "" -"Use :doc:`pgr_createTopology` to create the topology and the vertices table." +"The results are equivalent to the union of the results of the " +"pgr_bdAStar(One to One) on the:" msgstr "" -msgid "The analyze graph function accepts the following parameters:" +msgid "pgr_bdAstar(`Edges SQL`_, **start vid**, **end vid**, [**options**])" msgstr "" -msgid "edge_table" +msgid "pgr_bdAstar(`Edges SQL`_, **start vid**, **end vids**, [**options**])" msgstr "" -msgid "``text`` Network table name. (may contain the schema name as well)" +msgid "pgr_bdAstar(`Edges SQL`_, **start vids**, **end vid**, [**options**])" msgstr "" -msgid "tolerance" +msgid "pgr_bdAstar(`Edges SQL`_, **start vids**, **end vids**, [**options**])" msgstr "" -msgid "" -"``float8`` Snapping tolerance of disconnected edges. (in projection unit)" +msgid "pgr_bdAstar(`Edges SQL`_, `Combinations SQL`_, [**options**])" msgstr "" -msgid "the_geom" +msgid "``pgr_bdAstarCost``" msgstr "" msgid "" -"``text`` Geometry column name of the network table. Default value is " -"``the_geom``." +"``pgr_bdAstarCost`` - Total cost of the shortest path using the " +"bidirectional A* algorithm." msgstr "" -msgid "id" +msgid "" +"The ``pgr_bdAstarCost`` function sumarizes of the cost of the shortest path " +"using the bidirectional A* algorithm." msgstr "" msgid "" -"``text`` Primary key column name of the network table. Default value is " -"``id``." +"pgr_bdAstarCost(`Edges SQL`_, **start vid**, **end vid**, [**options**])" msgstr "" -msgid "source" +msgid "" +"pgr_bdAstarCost(`Edges SQL`_, **start vid**, **end vids**, [**options**])" msgstr "" msgid "" -"``text`` Source column name of the network table. Default value is " -"``source``." +"pgr_bdAstarCost(`Edges SQL`_, **start vids**, **end vid**, [**options**])" msgstr "" -msgid "target" +msgid "" +"pgr_bdAstarCost(`Edges SQL`_, **start vids**, **end vids**, [**options**])" msgstr "" -msgid "" -"``text`` Target column name of the network table. Default value is " -"``target``." +msgid "pgr_bdAstarCost(`Edges SQL`_, `Combinations SQL`_, [**options**])" msgstr "" -msgid "rows_where" +msgid "``pgr_bdAstarCostMatrix``" msgstr "" msgid "" -"``text`` Condition to select a subset or rows. Default value is ``true`` to " -"indicate all rows." +"``pgr_bdAstarCostMatrix`` - Calculates the a cost matrix using :doc:" +"`pgr_aStar`." msgstr "" -msgid "Uses the vertices table: _vertices_pgr." +msgid "Using internaly the :doc:`pgr_bdAstar` algorithm" msgstr "" -msgid "Fills completely the ``cnt`` and ``chk`` columns of the vertices table." +msgid "pgr_bdAstarCostMatrix(`Edges SQL`_, **start vids**, [**options**])" msgstr "" -msgid "" -"Returns the analysis of the section of the network defined by ``rows_where``" +msgid "``pgr_bdDijkstra``" msgstr "" -msgid "The vertices table is not found." +msgid "" +"``pgr_bdDijkstra`` — Returns the shortest path using Bidirectional Dijkstra " +"algorithm." msgstr "" -msgid "" -"A required column of the Network table is not found or is not of the " -"appropriate type." +msgid "pgr_bdDijkstra(One to Many)" msgstr "" -msgid "The condition is not well formed." +msgid "pgr_bdDijkstra(Many to One)" msgstr "" -msgid "The names of source , target or id are the same." +msgid "pgr_bdDijkstra(Many to Many)" msgstr "" -msgid "The SRID of the geometry could not be determined." +msgid "Signature change on pgr_bdDijsktra(One to One)" msgstr "" -msgid "The Vertices Table" +msgid "" +"pgr_bdDijkstra(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" msgstr "" msgid "" -"The vertices table can be created with :doc:`pgr_createVerticesTable " -"` or :doc:`pgr_createTopology `" +"pgr_bdDijkstra(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" msgstr "" -msgid "The structure of the vertices table is:" +msgid "" +"pgr_bdDijkstra(`Edges SQL`_, **start vids**, **end vid**, [``directed``])" msgstr "" -msgid "``bigint`` Identifier of the vertex." +msgid "" +"pgr_bdDijkstra(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" msgstr "" -msgid "cnt" +msgid "pgr_bdDijkstra(`Edges SQL`_, `Combinations SQL`_, [``directed``])" msgstr "" -msgid "" -"``integer`` Number of vertices in the edge_table that reference this vertex." +msgid "Returns set of |old-generic-result|" msgstr "" -msgid "chk" +msgid "Returns set of |result-1-1|" msgstr "" -msgid "``integer`` Indicator that the vertex might have a problem." +msgid "From vertex :math:`6` to vertex :math:`10` on a **directed** graph" msgstr "" -msgid "ein" +msgid "Returns set of |result-1-m|" msgstr "" msgid "" -"``integer`` Number of vertices in the edge_table that reference this vertex " -"as incoming. See :doc:`pgr_analyzeOneWay `." +"From vertex :math:`6` to vertices :math:`\\{10, 17\\}` on a **directed** " +"graph" msgstr "" -msgid "eout" +msgid "Returns set of |result-m-1|" msgstr "" msgid "" -"``integer`` Number of vertices in the edge_table that reference this vertex " -"as outgoing. See :doc:`pgr_analyzeOneWay `." +"From vertices :math:`\\{6, 1\\}` to vertex :math:`17` on a **directed** graph" msgstr "" -msgid "``geometry`` Point geometry of the vertex." +msgid "" +"From vertices :math:`\\{6, 1\\}` to vertices :math:`\\{10, 17\\}` on an " +"**undirected** graph" msgstr "" -msgid "Usage when the edge table's columns MATCH the default values:" +msgid "Using a combinations table on an **undirected** graph" msgstr "" -msgid "The simplest way to use pgr_analyzeGraph is:" +msgid "https://en.wikipedia.org/wiki/Bidirectional_search" msgstr "" -msgid "Arguments are given in the order described in the parameters:" +msgid "``pgr_bdDijkstraCost``" msgstr "" -msgid "We get the same result as the simplest way to use the function." +msgid "" +"``pgr_bdDijkstraCost`` — Returns the shortest path's cost using " +"Bidirectional Dijkstra algorithm." msgstr "" -msgid "An error would occur when" +msgid "" +"The ``pgr_bdDijkstraCost`` function sumarizes of the cost of the shortest " +"path using the bidirectional Dijkstra Algorithm." msgstr "" -msgid "the arguments are not given in the appropriate order:" +msgid "" +"pgr_bdDijkstraCost(`Edges SQL`_, **start vid**, **end vid** , [``directed``])" msgstr "" msgid "" -"In this example, the column ``id`` of the table ``mytable`` is passed to the " -"function as the geometry column, and the geometry column ``the_geom`` is " -"passed to the function as the id column." +"pgr_bdDijkstraCost(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" msgstr "" -msgid "When using the named notation" +msgid "" +"pgr_bdDijkstraCost(`Edges SQL`_, **start vids**, **end vid** , " +"[``directed``])" msgstr "" -msgid "The order of the parameters do not matter:" +msgid "" +"pgr_bdDijkstraCost(`Edges SQL`_, **start vids**, **end vids**, " +"[``directed``])" msgstr "" -msgid "" -"Parameters defined with a default value can be omitted, as long as the value " -"matches the default:" +msgid "pgr_bdDijkstraCost(`Edges SQL`_, `Combinations SQL`_, [ ``directed``])" msgstr "" -msgid "Selecting rows using rows_where parameter" +msgid "pgr_bdDijkstraCost(`Edges SQL`_, `Combinations SQL`_, [``directed``])" +msgstr "" + +msgid "``pgr_bdDijkstraCostMatrix``" msgstr "" msgid "" -"Selecting rows based on the id. Displays the analysis a the section of the " -"network." +"``pgr_bdDijkstraCostMatrix`` - Calculates a cost matrix using :doc:" +"`pgr_bdDijkstra`." msgstr "" msgid "" -"Selecting the rows where the geometry is near the geometry of row with " -"``id`` = 5" +"Using bidirectional Dijkstra algorithm, calculate and return a cost matrix." +msgstr "" + +msgid "pgr_bdDijkstraCostMatrix(`Edges SQL`_, **start vids**, [``directed``])" msgstr "" msgid "" -"Selecting the rows where the geometry is near the geometry of the row with " -"``gid`` =100 of the table ``othertable``." +"Symmetric cost matrix for vertices :math:`\\{5, 6, 10, 15\\}` on an " +"**undirected** graph" msgstr "" -msgid "Usage when the edge table's columns DO NOT MATCH the default values:" +msgid "Use with :doc:`pgr_TSP`." msgstr "" -msgid "For the following table" +msgid "``pgr_bellmanFord - Experimental``" msgstr "" -msgid "Using positional notation:" +msgid "``pgr_bellmanFord`` — Shortest path using Bellman-Ford algorithm." +msgstr "" + +msgid "New experimental signature:" +msgstr "" + +msgid "pgr_bellmanFord(Combinations)" msgstr "" msgid "" -"The arguments need to be given in the order described in the parameters:" +"Bellman-Ford's algorithm, is named after Richard Bellman and Lester Ford, " +"who first published it in 1958 and 1956, respectively.It is a graph search " +"algorithm that computes shortest paths from a starting vertex " +"(``start_vid``) to an ending vertex (``end_vid``) in a graph where some of " +"the edge weights may be negative. Though it is more versatile, it is slower " +"than Dijkstra's algorithm.This implementation can be used with a directed " +"graph and an undirected graph." msgstr "" msgid "" -"An error would occur when the arguments are not given in the appropriate " -"order: In this example, the column ``gid`` of the table ``mytable`` is " -"passed to the function as the geometry column, and the geometry column " -"``mygeom`` is passed to the function as the id column." +"Process is valid for edges with both positive and negative edge weights." msgstr "" msgid "" -"In this scenario omitting a parameter would create an error because the " -"default values for the column names do not match the column names of the " -"table." +"When the start vertex and the end vertex are the same, there is no path. The " +"agg_cost would be :math:`0`." msgstr "" -msgid "Selecting rows based on the id." +msgid "" +"When the start vertex and the end vertex are different, and there exists a " +"path between them without having a *negative cycle*. The agg_cost would be " +"some finite value denoting the shortest distance between them." msgstr "" msgid "" -"Selecting the rows WHERE the geometry is near the geometry of row with " -"``id`` =5 ." +"When the start vertex and the end vertex are different, and there exists a " +"path between them, but it contains a *negative cycle*. In such case, " +"agg_cost for those vertices keep on decreasing furthermore, Hence agg_cost " +"can’t be defined for them." msgstr "" msgid "" -"Selecting the rows WHERE the geometry is near the place='myhouse' of the " -"table ``othertable``. (note the use of quote_literal)" +"When the start vertex and the end vertex are different, and there is no " +"path. The agg_cost is :math:`\\infty`." msgstr "" -msgid "The examples use the :doc:`sampledata` network." +msgid "" +"For optimization purposes, any duplicated value in the `start_vids` or " +"`end_vids` are ignored." msgstr "" -msgid ":doc:`pgr_analyzeOneWay`" +msgid "Running time: :math:`O(| start\\_vids | * ( V * E))`" msgstr "" -msgid ":doc:`pgr_createVerticesTable`" +msgid "" +"pgr_bellmanFord(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" msgstr "" -msgid ":doc:`pgr_nodeNetwork` to create nodes to a not noded edge table." +msgid "" +"pgr_bellmanFord(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" msgstr "" -msgid "pgr_analyzeOneWay" +msgid "" +"pgr_bellmanFord(`Edges SQL`_, **start vids**, **end vid**, [``directed``])" msgstr "" msgid "" -"``pgr_analyzeOneWay`` — Analyzes oneway Sstreets and identifies flipped " -"segments." +"pgr_bellmanFord(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" +msgstr "" + +msgid "pgr_bellmanFord(`Edges SQL`_, `Combinations SQL`_, [``directed``])" msgstr "" msgid "" -"This function analyzes oneway streets in a graph and identifies any flipped " -"segments." +"From vertex :math:`6` to vertices :math:`\\{ 10, 17\\}` on a **directed** " +"graph" +msgstr "" + +msgid "Using a combinations table on an **undirected** graph." msgstr "" msgid "" -"The analyses of one way segments is pretty simple but can be a powerful " -"tools to identifying some the potential problems created by setting the " -"direction of a segment the wrong way. A node is a `source` if it has edges " -"the exit from that node and no edges enter that node. Conversely, a node is " -"a `sink` if all edges enter the node but none exit that node. For a `source` " -"type node it is logically impossible to exist because no vehicle can exit " -"the node if no vehicle and enter the node. Likewise, if you had a `sink` " -"node you would have an infinite number of vehicle piling up on this node " -"because you can enter it but not leave it." +"`Boost: Bellman Ford `__" +msgstr "" + +msgid "https://en.wikipedia.org/wiki/Bellman%E2%80%93Ford_algorithm" +msgstr "" + +msgid "``pgr_betweennessCentrality`` - Experimental" msgstr "" msgid "" -"So why do we care if the are not feasible? Well if the direction of an edge " -"was reversed by mistake we could generate exactly these conditions. Think " -"about a divided highway and on the north bound lane one segment got entered " -"wrong or maybe a sequence of multiple segments got entered wrong or maybe " -"this happened on a round-about. The result would be potentially a `source` " -"and/or a `sink` node." +"``pgr_betweennessCentrality`` - Calculates the relative betweenness " +"centrality using Brandes Algorithm" +msgstr "" + +msgid "Version 3.7.0" msgstr "" msgid "" -"So by counting the number of edges entering and exiting each node we can " -"identify both `source` and `sink` nodes so that you can look at those areas " -"of your network to make repairs and/or report the problem back to your data " -"vendor." +"The Brandes Algorithm takes advantage of the sparse graphs for evaluating " +"the betweenness centrality score of all vertices." msgstr "" msgid "" -"pgr_analyzeOneWay(**geom_table**, **s_in_rules**, **s_out_rules**, " -"**t_in_rules**, **t_out_rules**, [**options**])" +"Betweenness centrality measures the extent to which a vertex lies on the " +"shortest paths between all other pairs of vertices. Vertices with a high " +"betweenness centrality score may have considerable influence in a network by " +"the virtue of their control over the shortest paths passing between them." msgstr "" -msgid "**options:** ``[oneway, source, target, two_way_if_null]``" +msgid "" +"The removal of these vertices will affect the network by disrupting the it, " +"as most of the shortest paths between vertices pass through them." msgstr "" -msgid "RETURNS ``TEXT``" +msgid "This implementation work for both directed and undirected graphs." msgstr "" -msgid "s_in_rules" +msgid "Running time: :math:`\\Theta(VE)`" msgstr "" -msgid "``text[]`` source node **in** rules" +msgid "Running space: :math:`\\Theta(VE)`" msgstr "" -msgid "s_out_rules" +msgid "Throws when there are no edges in the graph" msgstr "" -msgid "``text[]`` source node **out** rules" +msgid "pgr_betweennessCentrality(`Edges SQL`_, [``directed``])" msgstr "" -msgid "t_in_rules" +msgid "Returns set of ``(vid, centrality)``" msgstr "" -msgid "``text[]`` target node **in** rules" +msgid "For a directed graph with edges :math:`\\{1, 2, 3, 4\\}`." msgstr "" -msgid "t_out_rules" +msgid "Explanation" msgstr "" -msgid "``text[]`` target node **out** rules" +msgid "The betweenness centrality are between parenthesis." msgstr "" -msgid "oneway" +msgid "The leaf vertices have betweenness centrality :math:`0`." msgstr "" msgid "" -"``text`` oneway column name name of the network table. Default value is " -"``oneway``." +"Betweenness centrality of vertex :math:`6` is higher than of vertex :math:" +"`10`." msgstr "" -msgid "two_way_if_null" +msgid "Removing vertex :math:`6` will create three graph components." msgstr "" -msgid "" -"``boolean`` flag to treat oneway NULL values as bi-directional. Default " -"value is ``true``." +msgid "Removing vertex :math:`10` will create two graph components." +msgstr "" + +msgid "``vid``" +msgstr "" + +msgid "``centrality``" msgstr "" msgid "" -"It is strongly recommended to use the named notation. See :doc:" -"`pgr_createVerticesTable` or :doc:`pgr_createTopology` for examples." +"Relative betweenness centrality score of the vertex (will be in range [0,1])" msgstr "" msgid "" -"Fills completely the ``ein`` and ``eout`` columns of the vertices table." +"`Boost: betweenness centrality `_" msgstr "" -msgid "The names of source , target or oneway are the same." +msgid "``pgr_biconnectedComponents``" msgstr "" msgid "" -"The rules are defined as an array of text strings that if match the " -"``oneway`` value would be counted as ``true`` for the source or target " -"**in** or **out** condition." +"``pgr_biconnectedComponents`` — Biconnected components of an undirected " +"graph." msgstr "" -msgid "" -"The vertices table can be created with :doc:`pgr_createVerticesTable` or :" -"doc:`pgr_createTopology`" +msgid "Result columns change:" msgstr "" -msgid "" -"``integer`` Number of vertices in the edge_table that reference this vertex. " -"See :doc:`pgr_analyzeGgraph `." +msgid "``n_seq`` is removed" msgstr "" -msgid "" -"``integer`` Indicator that the vertex might have a problem. See :doc:" -"`pgr_analyzeGraph `." +msgid "``seq`` changed type to ``BIGINT``" msgstr "" msgid "" -"``integer`` Number of vertices in the edge_table that reference this vertex " -"as incoming." +"The biconnected components of an undirected graph are the maximal subsets of " +"vertices such that the removal of a vertex from particular component will " +"not disconnect the component. Unlike connected components, vertices may " +"belong to multiple biconnected components. Vertices can be present in " +"multiple biconnected components, but each edge can only be contained in a " +"single biconnected component." msgstr "" -msgid "" -"``integer`` Number of vertices in the edge_table that reference this vertex " -"as outgoing." +msgid "Components are described by edges." msgstr "" -msgid ":doc:`pgr_analyzeGraph`" +msgid "``component`` ascending." msgstr "" -msgid "``pgr_articulationPoints``" +msgid "``edge`` ascending." msgstr "" -msgid "" -"``pgr_articulationPoints`` - Return the articulation points of an undirected " -"graph." +msgid "pgr_biconnectedComponents(`Edges SQL`_)" msgstr "" -msgid "Result columns change: ``seq`` is removed" +msgid "Returns set of |result-component-E|" +msgstr "" + +msgid "The biconnected components of the graph" +msgstr "" + +msgid "``component``" +msgstr "" + +msgid "Component identifier." +msgstr "" + +msgid "Has the value of the minimum edge identifier in the component." msgstr "" -msgid "Version 2.5.0" +msgid "Identifier of the edge that belongs to the ``component``." msgstr "" -msgid "New **experimental** function" +msgid "``pgr_binaryBreadthFirstSearch`` - Experimental" msgstr "" msgid "" -"Those vertices that belong to more than one biconnected component are called " -"articulation points or, equivalently, cut vertices. Articulation points are " -"vertices whose removal would increase the number of connected components in " -"the graph. This implementation can only be used with an undirected graph." +"``pgr_binaryBreadthFirstSearch`` — Returns the shortest path in a binary " +"graph." msgstr "" -msgid "Works for **undirected** graphs." +msgid "" +"Any graph whose edge-weights belongs to the set {0,X}, where 'X' is any non-" +"negative integer, is termed as a 'binary graph'." msgstr "" -msgid "``node`` ascending" +msgid "pgr_binaryBreadthFirstSearch(Combinations)" msgstr "" -msgid "Running time: :math:`O(V + E)`" +msgid "" +"It is well-known that the shortest paths between a single source and all " +"other vertices can be found using Breadth First Search in :math:`O(|E|)` in " +"an unweighted graph, i.e. the distance is the minimal number of edges that " +"you need to traverse from the source to another vertex. We can interpret " +"such a graph also as a weighted graph, where every edge has the weight :math:" +"`1`. If not alledges in graph have the same weight, that we need a more " +"general algorithm, like Dijkstra's Algorithm which runs in :math:`O(|E|log|" +"V|)` time." msgstr "" -msgid "pgr_articulationPoints(`Edges SQL`_)" +msgid "" +"However if the weights are more constrained, we can use a faster algorithm. " +"This algorithm, termed as 'Binary Breadth First Search' as well as '0-1 " +"BFS', is a variation of the standard Breadth First Search problem to solve " +"the SSSP (single-source shortest path) problem in :math:`O(|E|)`, if the " +"weights of each edge belongs to the set {0,X}, where 'X' is any non-negative " +"real integer." msgstr "" -msgid "Returns set of |result-node|" +msgid "" +"Process is done only on 'binary graphs'. ('Binary Graph': Any graph whose " +"edge-weights belongs to the set {0,X}, where 'X' is any non-negative real " +"integer.)" msgstr "" -msgid "The articulation points of the graph" +msgid "Running time: :math:`O(| start\\_vids | * |E|)`" msgstr "" -msgid "Nodes in red are the articulation points." +msgid "" +"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vid**, **end vid**, " +"[``directed``])" msgstr "" msgid "" -"Boost: `Biconnected components & articulation points `__" +"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vid**, **end vids**, " +"[``directed``])" msgstr "" msgid "" -"wikipedia: `Biconnected component `__" +"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vids**, **end vid**, " +"[``directed``])" msgstr "" -msgid "``pgr_bdAstar``" +msgid "" +"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vids**, **end vids**, " +"[``directed``])" msgstr "" -msgid "``pgr_bdAstar`` — Shortest path using the bidirectional A* algorithm." +msgid "" +"pgr_binaryBreadthFirstSearch(`Edges SQL`_, `Combinations SQL`_, " +"[``directed``])" msgstr "" msgid "" -"``pgr_bdAstar`` (`One to One`_) added ``start_vid`` and ``end_vid`` columns." +"**Note:** Using the :doc:`sampledata` Network as all weights are same (i.e :" +"math:`1``)" msgstr "" -msgid "``pgr_bdAstar`` (`One to Many`_) added ``end_vid`` column." +msgid "" +"`Boost: Breadth First Search `__" msgstr "" -msgid "``pgr_bdAstar`` (`Many to One`_) added ``start_vid`` column." +msgid "https://cp-algorithms.com/graph/01_bfs.html" msgstr "" -msgid "``pgr_bdAstar`` (`Combinations`_)" +msgid "" +"https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm#Specialized_variants" msgstr "" -msgid "``pgr_bdAstar`` (`One to Many`_)" +msgid "``pgr_bipartite`` - Experimental" msgstr "" -msgid "``pgr_bdAstar`` (`Many to One`_)" +msgid "" +"``pgr_bipartite`` — Disjoint sets of vertices such that no two vertices " +"within the same set are adjacent." msgstr "" -msgid "``pgr_bdAstar`` (`Many to Many`_)" +msgid "" +"A bipartite graph is a graph with two sets of vertices which are connected " +"to each other, but not within themselves. A bipartite graph is possible if " +"the graph coloring is possible using two colors such that vertices in a set " +"are colored with the same color." msgstr "" -msgid "Signature change on ``pgr_bdAstar`` (`One to One`_)" +msgid "The algorithm works in undirected graph only." msgstr "" -msgid "**Official** ``pgr_bdAstar`` (`One to One`_)" +msgid "The returned values are not ordered." msgstr "" msgid "" -"The results are equivalent to the union of the results of the `pgr_bdAStar(` " -"`One to One`_ `)` on the:" +"The algorithm checks graph is bipartite or not. If it is bipartite then it " +"returns the node along with two colors `0` and `1` which represents two " +"different sets." msgstr "" -msgid "pgr_bdAstar(`Edges SQL`_, **start vid**, **end vid**, [**options**])" +msgid "If graph is not bipartite then algorithm returns empty set." msgstr "" -msgid "pgr_bdAstar(`Edges SQL`_, **start vid**, **end vids**, [**options**])" +msgid "pgr_bipartite(`Edges SQL`_)" msgstr "" -msgid "pgr_bdAstar(`Edges SQL`_, **start vids**, **end vid**, [**options**])" +msgid "Returns set of |result-node-color|" msgstr "" -msgid "pgr_bdAstar(`Edges SQL`_, **start vids**, **end vids**, [**options**])" +msgid "When the graph is bipartite" msgstr "" -msgid "pgr_bdAstar(`Edges SQL`_, `Combinations SQL`_, [**options**])" +msgid "Additional Example" msgstr "" -msgid "pgr_bdAstarCost" +msgid "The odd length cyclic graph can not be bipartite." msgstr "" msgid "" -"``pgr_bdAstarCost`` - Total cost of the shortest path using the " -"bidirectional A* algorithm." -msgstr "" - -msgid "``pgr_bdAstarCost`` (`Combinations`_)" +"The edge :math:`5 \\rightarrow 1` will make subgraph with vertices :math:" +"`\\{1, 3, 7, 6, 5\\}` an odd length cyclic graph, as the cycle has 5 " +"vertices." msgstr "" -msgid "" -"The ``pgr_bdAstarCost`` function sumarizes of the cost of the shortest path " -"using the bidirectional A* algorithm." +msgid "Edges in blue represent odd length cycle subgraph." msgstr "" msgid "" -"pgr_bdAstarCost(`Edges SQL`_, **start vid**, **end vid**, [**options**])" +"`Boost: is_bipartite `__" msgstr "" msgid "" -"pgr_bdAstarCost(`Edges SQL`_, **start vid**, **end vids**, [**options**])" +"`Wikipedia: bipartite graph `__" msgstr "" -msgid "" -"pgr_bdAstarCost(`Edges SQL`_, **start vids**, **end vid**, [**options**])" +msgid "``pgr_boykovKolmogorov``" msgstr "" msgid "" -"pgr_bdAstarCost(`Edges SQL`_, **start vids**, **end vids**, [**options**])" -msgstr "" - -msgid "pgr_bdAstarCost(`Edges SQL`_, `Combinations SQL`_, [**options**])" +"``pgr_boykovKolmogorov`` — Calculates the flow on the graph edges that " +"maximizes the flow from the sources to the targets using Boykov Kolmogorov " +"algorithm." msgstr "" -msgid "``pgr_bdAstarCostMatrix``" +msgid "Renamed from ``pgr_maxFlowBoykovKolmogorov``" msgstr "" -msgid "" -"``pgr_bdAstarCostMatrix`` - Calculates the a cost matrix using :doc:" -"`pgr_aStar`." +msgid "Function promoted to proposed." msgstr "" -msgid "Using internaly the :doc:`pgr_bdAstar` algorithm" +msgid "Running time: Polynomial" msgstr "" -msgid "pgr_bdAstarCostMatrix(`Edges SQL`_, **start vids**, [**options**])" +msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vid**, **end vid**)" msgstr "" -msgid "``pgr_bdDijkstra``" +msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vid**, **end vids**)" msgstr "" -msgid "" -"``pgr_bdDijkstra`` — Returns the shortest path using Bidirectional Dijkstra " -"algorithm." +msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vids**, **end vid**)" msgstr "" -msgid "pgr_bdDijkstra(`Combinations`_)" +msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vids**, **end vids**)" msgstr "" -msgid "New **Proposed** functions:" +msgid "pgr_boykovKolmogorov(`Edges SQL`_, `Combinations SQL`_)" msgstr "" -msgid "``pgr_bdDijkstra`` (`One to Many`_)" +msgid "Returns set of |result-flow|" msgstr "" -msgid "``pgr_bdDijkstra`` (`Many to One`_)" +msgid "From vertex :math:`11` to vertex :math:`12`" msgstr "" -msgid "``pgr_bdDijkstra`` (`Many to Many`_)" +msgid "From vertex :math:`11` to vertices :math:`\\{5, 10, 12\\}`" msgstr "" -msgid "Signature change on ``pgr_bdDijsktra`` (`One to One`_)" +msgid "From vertices :math:`\\{11, 3, 17\\}` to vertex :math:`12`" msgstr "" -msgid "**Official** ``pgr_bdDijkstra`` (`One to One`_)" +msgid "" +"From vertices :math:`\\{11, 3, 17\\}` to vertices :math:`\\{5, 10, 12\\}`" msgstr "" msgid "" -"pgr_bdDijkstra(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" +"Using a combinations table, equivalent to calculating result from vertices :" +"math:`\\{5, 6\\}` to vertices :math:`\\{10, 15, 14\\}`." msgstr "" msgid "" -"pgr_bdDijkstra(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" +"`Boost: Boykov Kolmogorov max flow `__" msgstr "" -msgid "" -"pgr_bdDijkstra(`Edges SQL`_, **start vids**, **end vid**, [``directed``])" +msgid "``pgr_breadthFirstSearch`` - Experimental" msgstr "" msgid "" -"pgr_bdDijkstra(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" +"``pgr_breadthFirstSearch`` — Returns the traversal order(s) using Breadth " +"First Search algorithm." msgstr "" -msgid "pgr_bdDijkstra(`Edges SQL`_, `Combinations SQL`_, [``directed``])" +msgid "" +"Provides the Breadth First Search traversal order from a root vertex to a " +"particular depth." msgstr "" -msgid "Returns set of |old-generic-result|" +msgid "The implementation will work on any type of graph." msgstr "" -msgid "Returns set of |result-1-1|" +msgid "" +"Provides the Breadth First Search traversal order from a source node to a " +"target depth level." msgstr "" -msgid "From vertex :math:`6` to vertex :math:`10` on a **directed** graph" +msgid "Running time: :math:`O(E + V)`" msgstr "" -msgid "Returns set of |result-1-m|" +msgid "pgr_breadthFirstSearch(`Edges SQL`_, **root vid**, [**options**])" msgstr "" -msgid "" -"From vertex :math:`6` to vertices :math:`\\{10, 17\\}` on a **directed** " -"graph" +msgid "pgr_breadthFirstSearch(`Edges SQL`_, **root vids**, [**options**])" msgstr "" -msgid "Returns set of |result-m-1|" +msgid "**options:** ``[max_depth, directed]``" msgstr "" -msgid "" -"From vertices :math:`\\{6, 1\\}` to vertex :math:`17` on a **directed** graph" +msgid "Returns set of |result-bfs|" msgstr "" msgid "" -"From vertices :math:`\\{6, 1\\}` to vertices :math:`\\{10, 17\\}` on an " -"**undirected** graph" -msgstr "" - -msgid "Using a combinations table on an **undirected** graph" +"From root vertex :math:`6` on a **directed** graph with edges in ascending " +"order of ``id``" msgstr "" msgid "" -"https://www.cs.princeton.edu/courses/archive/spr06/cos423/Handouts/" -"EPP%20shortest%20path%20algorithms.pdf" +"From root vertices :math:`\\{12, 6\\}` on an **undirected** graph with " +"**depth** :math:`<= 2` and edges in ascending order of ``id``" msgstr "" -msgid "https://en.wikipedia.org/wiki/Bidirectional_search" +msgid "DFS optional parameters" msgstr "" -msgid "``pgr_bdDijkstraCost``" +msgid "Same as `Single vertex`_ with edges in ascending order of ``id``." msgstr "" -msgid "" -"``pgr_bdDijkstraCost`` — Returns the shortest path's cost using " -"Bidirectional Dijkstra algorithm." +msgid "Same as `Single vertex`_ with edges in descending order of ``id``." msgstr "" -msgid "``pgr_bdDijkstraCost`` (`Combinations`_)" +msgid "The resulting traversal is different." msgstr "" msgid "" -"The ``pgr_bdDijkstraCost`` function sumarizes of the cost of the shortest " -"path using the bidirectional Dijkstra Algorithm." +"The left image shows the result with ascending order of ids and the right " +"image shows with descending order of the edge identifiers." msgstr "" -msgid "" -"pgr_bdDijkstraCost(`Edges SQL`_, **start vid**, **end vid** , [``directed``])" +msgid "|ascending| |descending|" msgstr "" -msgid "" -"pgr_bdDijkstraCost(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" +msgid "ascending" msgstr "" -msgid "" -"pgr_bdDijkstraCost(`Edges SQL`_, **start vids**, **end vid** , " -"[``directed``])" +msgid "descending" msgstr "" msgid "" -"pgr_bdDijkstraCost(`Edges SQL`_, **start vids**, **end vids**, " -"[``directed``])" -msgstr "" - -msgid "pgr_bdDijkstraCost(`Edges SQL`_, `Combinations SQL`_, [ ``directed``])" +"`Wikipedia: Breadth First Search algorithm `__" msgstr "" -msgid "pgr_bdDijkstraCost(`Edges SQL`_, `Combinations SQL`_, [``directed``])" +msgid "``pgr_bridges``" msgstr "" -msgid "``pgr_bdDijkstraCostMatrix``" +msgid "``pgr_bridges`` - Return the bridges of an undirected graph." msgstr "" msgid "" -"``pgr_bdDijkstraCostMatrix`` - Calculates a cost matrix using :doc:" -"`pgr_bdDijkstra`." +"A bridge is an edge of an undirected graph whose deletion increases its " +"number of connected components. This implementation can only be used with an " +"undirected graph." msgstr "" -msgid "" -"Using bidirectional Dijkstra algorithm, calculate and return a cost matrix." +msgid "``edge`` ascending" msgstr "" -msgid "pgr_bdDijkstraCostMatrix(`Edges SQL`_, **start vids**, [``directed``])" +msgid "Running time: :math:`O(E * (V + E))`" msgstr "" -msgid "" -"Symmetric cost matrix for vertices :math:`\\{5, 6, 10, 15\\}` on an " -"**undirected** graph" +msgid "pgr_bridges(`Edges SQL`_)" msgstr "" -msgid "Use with :doc:`pgr_TSP`." +msgid "Returns set of |result-edge|" msgstr "" -msgid "``pgr_bellmanFord - Experimental``" +msgid "The bridges of the graph" msgstr "" -msgid "``pgr_bellmanFord`` — Shortest path using Bellman-Ford algorithm." +msgid "Identifier of the edge that is a bridge." msgstr "" -msgid "New **experimental** signature:" +msgid "https://en.wikipedia.org/wiki/Bridge_%28graph_theory%29" msgstr "" -msgid "``pgr_bellmanFord`` (`Combinations`_)" +msgid "" +"`Boost: Connected components `__" msgstr "" -msgid "New **experimental** signatures:" +msgid "``pgr_chinesePostman`` - Experimental" msgstr "" -msgid "``pgr_bellmanFord`` (`One to One`_)" +msgid "" +"``pgr_chinesePostman`` — Calculates the shortest circuit path which contains " +"every edge in a directed graph and starts and ends on the same vertex." msgstr "" -msgid "``pgr_bellmanFord`` (`One to Many`_)" +msgid "Returns ``EMPTY SET`` on a disconnected graph" msgstr "" -msgid "``pgr_bellmanFord`` (`Many to One`_)" +msgid "pgr_chinesePostman(`Edges SQL`_)" msgstr "" -msgid "``pgr_bellmanFord`` (`Many to Many`_)" +msgid "Returns set of |result-1-1-no-seq|" msgstr "" -msgid "" -"Bellman-Ford's algorithm, is named after Richard Bellman and Lester Ford, " -"who first published it in 1958 and 1956, respectively.It is a graph search " -"algorithm that computes shortest paths from a starting vertex " -"(``start_vid``) to an ending vertex (``end_vid``) in a graph where some of " -"the edge weights may be negative. Though it is more versatile, it is slower " -"than Dijkstra's algorithm.This implementation can be used with a directed " -"graph and an undirected graph." +msgid "Returns set of ``(seq, node, edge, cost, agg_cost)``" +msgstr "" + +msgid "Sequential value starting from ``1``" msgstr "" msgid "" -"Process is valid for edges with both positive and negative edge weights." +"Identifier of the edge used to go from ``node`` to the next node in the path " +"sequence. ``-1`` for the last node of the path." msgstr "" -msgid "" -"When the start vertex and the end vertex are the same, there is no path. The " -"agg_cost would be :math:`0`." +msgid "Aggregate cost from ``start_v`` to ``node``." msgstr "" -msgid "" -"When the start vertex and the end vertex are different, and there exists a " -"path between them without having a *negative cycle*. The agg_cost would be " -"some finite value denoting the shortest distance between them." +msgid "``pgr_chinesePostmanCost`` - Experimental" msgstr "" msgid "" -"When the start vertex and the end vertex are different, and there exists a " -"path between them, but it contains a *negative cycle*. In such case, " -"agg_cost for those vertices keep on decreasing furthermore, Hence agg_cost " -"can’t be defined for them." +"``pgr_chinesePostmanCost`` — Calculates the minimum costs of a circuit path " +"which contains every edge in a directed graph and starts and ends on the " +"same vertex." msgstr "" -msgid "" -"When the start vertex and the end vertex are different, and there is no " -"path. The agg_cost is :math:`\\infty`." +msgid "Return value when the graph if disconnected" msgstr "" -msgid "" -"For optimization purposes, any duplicated value in the `start_vids` or " -"`end_vids` are ignored." +msgid "pgr_chinesePostmanCost(`Edges SQL`_)" msgstr "" -msgid "Running time: :math:`O(| start\\_vids | * ( V * E))`" +msgid "RETURNS ``FLOAT``" msgstr "" -msgid "" -"pgr_bellmanFord(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" +msgid "``pgr_chinesepostmancost``" msgstr "" -msgid "" -"pgr_bellmanFord(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" +msgid "Minimum costs of a circuit path." +msgstr "" + +msgid "``pgr_connectedComponents``" msgstr "" msgid "" -"pgr_bellmanFord(`Edges SQL`_, **start vids**, **end vid**, [``directed``])" +"``pgr_connectedComponents`` — Connected components of an undirected graph " +"using a DFS-based approach." msgstr "" msgid "" -"pgr_bellmanFord(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" +"A connected component of an undirected graph is a set of vertices that are " +"all reachable from each other." msgstr "" -msgid "pgr_bellmanFord(`Edges SQL`_, `Combinations SQL`_, [``directed``])" +msgid "Components are described by vertices" msgstr "" -msgid "" -"From vertex :math:`6` to vertices :math:`\\{ 10, 17\\}` on a **directed** " -"graph" +msgid "``component`` ascending" msgstr "" -msgid "Using a combinations table on an **undirected** graph." +msgid "pgr_connectedComponents(`Edges SQL`_)" msgstr "" -msgid "https://en.wikipedia.org/wiki/Bellman%E2%80%93Ford_algorithm" +msgid "Returns set of |result-component-V|" msgstr "" -msgid "``pgr_betweennessCentrality``" +msgid "The connected components of the graph" msgstr "" -msgid "" -"``pgr_betweennessCentrality`` - Calculates the relative betweeness " -"centrality using Brandes Algorithm" +msgid "Has the value of the minimum node identifier in the component." msgstr "" -msgid "Version 3.7.0" +msgid "Identifier of the vertex that belongs to the ``component``." msgstr "" -msgid "New **experimental** function:" +msgid "Connecting disconnected components" msgstr "" msgid "" -"The Brandes Algorithm takes advantage of the sparse graphs for evaluating " -"the betweenness centrality score of all vertices." +"wikipedia: `Connected component `__" msgstr "" -msgid "" -"Betweenness centrality measures the extent to which a vertex lies on the " -"shortest paths between all other pairs of vertices. Vertices with a high " -"betweenness centrality score may have considerable influence in a network by " -"the virtue of their control over the shortest paths passing between them." +msgid "``pgr_contraction``" msgstr "" msgid "" -"The removal of these vertices will affect the network by disrupting the it, " -"as most of the shortest paths between vertices pass through them." +"``pgr_contraction`` — Performs graph contraction and returns the contracted " +"vertices and edges." msgstr "" -msgid "This implementation work for both directed and undirected graphs." +msgid "Version 3.8.0" msgstr "" -msgid "Running time: :math:`\\Theta(VE)`" +msgid "New signature:" msgstr "" -msgid "Running space: :math:`\\Theta(VE)`" +msgid "" +"Previously compulsory parameter **Contraction order** is now optional with " +"name ``methods``." msgstr "" -msgid "Throws when there are no edges in the graph" +msgid "New name and order of optional parameters." msgstr "" -msgid "pgr_betweennessCentrality(`Edges SQL`_, [``directed``])" +msgid "" +"Deprecated signature pgr_contraction(text,bigint[],integer,bigint[],boolean)" msgstr "" -msgid "Returns set of ``(vid, centrality)``" +msgid "Name change from ``pgr_contractGraph``" msgstr "" -msgid "For a directed graph with edges :math:`\\{1, 2, 3, 4\\}`." +msgid "Bug fixes" msgstr "" -msgid "Explanation" +msgid "" +"Contraction reduces the size of the graph by removing some of the vertices " +"and edges and, for example, might add edges that represent a sequence of " +"original edges decreasing the total time and space used in graph algorithms." msgstr "" -msgid "The betweenness centrality are between parenthesis." +msgid "Does not return the full contracted graph." msgstr "" -msgid "The leaf vertices have betweenness centrality :math:`0`." +msgid "Only changes on the graph are returned." msgstr "" -msgid "" -"Betweenness centrality of vertex :math:`6` is higher than of vertex :math:" -"`10`." +msgid "The returned values include:" msgstr "" -msgid "Removing vertex :math:`6` will create three graph components." +msgid "The new edges generated by linear contraction." msgstr "" -msgid "Removing vertex :math:`10` will create two graph components." +msgid "The modified vertices generated by dead end contraction." msgstr "" -msgid "``vid``" +msgid "The returned values are ordered as follows:" msgstr "" -msgid "``centrality``" +msgid "column ``id`` ascending when its a modified vertex." msgstr "" -msgid "" -"Relative betweenness centrality score of the vertex (will be in range [0,1])" +msgid "column ``id`` with negative numbers descending when its a new edge." msgstr "" msgid "" -"Boost's `betweenness_centrality `_" +"Currently there are two types of contraction methods included in this " +"function:" msgstr "" -msgid "Queries use the :doc:`sampledata` network." +msgid "Dead End Contraction. See :doc:`pgr_contractionDeadEnd`." msgstr "" -msgid "``pgr_biconnectedComponents``" +msgid "Linear Contraction. See :doc:`pgr_contractionLinear`." msgstr "" -msgid "" -"``pgr_biconnectedComponents`` — Biconnected components of an undirected " -"graph." +msgid "pgr_contraction(`Edges SQL`_, [**options**])" msgstr "" -msgid "Result columns change:" +msgid "**options:** ``[directed, methods, cycles, forbidden]``" msgstr "" -msgid "``n_seq`` is removed" +msgid "Returns set of |result-contract|" msgstr "" -msgid "``seq`` changed type to ``BIGINT``" +msgid "Dead end and linear contraction in that order on an undirected graph." msgstr "" -msgid "" -"The biconnected components of an undirected graph are the maximal subsets of " -"vertices such that the removal of a vertex from particular component will " -"not disconnect the component. Unlike connected components, vertices may " -"belong to multiple biconnected components. Vertices can be present in " -"multiple biconnected components, but each edge can only be contained in a " -"single biconnected component." +msgid "Contraction optional parameters" msgstr "" -msgid "Components are described by edges." +msgid "``methods``" msgstr "" -msgid "``component`` ascending." +msgid "``INTEGER[]``" msgstr "" -msgid "``edge`` ascending." +msgid "``ARRAY[1,2]``" msgstr "" -msgid "pgr_biconnectedComponents(`Edges SQL`_)" +msgid "Ordered contraction operations." msgstr "" -msgid "Returns set of |result-component-E|" +msgid "1 = Dead end contraction" msgstr "" -msgid "The biconnected components of the graph" +msgid "2 = Linear contraction" msgstr "" -msgid "``component``" +msgid "``cycles``" msgstr "" -msgid "Component identifier." +msgid ":math:`1`" msgstr "" -msgid "Has the value of the minimum edge identifier in the component." +msgid "Number of times the contraction methods will be performed." msgstr "" -msgid "Identifier of the edge that belongs to the ``component``." +msgid "``forbidden``" msgstr "" -msgid "" -"Boost: `Biconnected components `__" +msgid "``BIGINT[]``" msgstr "" -msgid "``pgr_binaryBreadthFirstSearch`` - Experimental" +msgid "``ARRAY[]::BIGINT[]``" msgstr "" -msgid "" -"``pgr_binaryBreadthFirstSearch`` — Returns the shortest path in a binary " -"graph." +msgid "Identifiers of vertices forbidden for contraction." msgstr "" -msgid "" -"Any graph whose edge-weights belongs to the set {0,X}, where 'X' is any non-" -"negative integer, is termed as a 'binary graph'." +msgid "The function returns a single row. The columns of the row are:" msgstr "" -msgid "pgr_binaryBreadthFirstSearch(`Combinations`_)" +msgid "``type``" msgstr "" -msgid "pgr_binaryBreadthFirstSearch(`One to One`_)" +msgid "Type of the row." msgstr "" -msgid "pgr_binaryBreadthFirstSearch(`One to Many`_)" +msgid "``v`` when the row is a vertex." msgstr "" -msgid "pgr_binaryBreadthFirstSearch(`Many to One`_)" +msgid "Column ``id`` has a positive value." msgstr "" -msgid "pgr_binaryBreadthFirstSearch(`Many to Many`_)" +msgid "``e`` when the row is an edge." msgstr "" -msgid "" -"It is well-known that the shortest paths between a single source and all " -"other vertices can be found using Breadth First Search in :math:`O(|E|)` in " -"an unweighted graph, i.e. the distance is the minimal number of edges that " -"you need to traverse from the source to another vertex. We can interpret " -"such a graph also as a weighted graph, where every edge has the weight :math:" -"`1`. If not alledges in graph have the same weight, that we need a more " -"general algorithm, like Dijkstra's Algorithm which runs in :math:`O(|E|log|" -"V|)` time." +msgid "Column ``id`` has a negative value." msgstr "" -msgid "" -"However if the weights are more constrained, we can use a faster algorithm. " -"This algorithm, termed as 'Binary Breadth First Search' as well as '0-1 " -"BFS', is a variation of the standard Breadth First Search problem to solve " -"the SSSP (single-source shortest path) problem in :math:`O(|E|)`, if the " -"weights of each edge belongs to the set {0,X}, where 'X' is any non-negative " -"real integer." +msgid "All numbers on this column are ``DISTINCT``" msgstr "" -msgid "" -"Process is done only on 'binary graphs'. ('Binary Graph': Any graph whose " -"edge-weights belongs to the set {0,X}, where 'X' is any non-negative real " -"integer.)" +msgid "When ``type`` = **'v'**." msgstr "" -msgid "Running time: :math:`O(| start\\_vids | * |E|)`" +msgid "Identifier of the modified vertex." msgstr "" -msgid "" -"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vid**, **end vid**, " -"[``directed``])" +msgid "When ``type`` = **'e'**." msgstr "" -msgid "" -"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vid**, **end vids**, " -"[``directed``])" +msgid "Decreasing sequence starting from **-1**." msgstr "" msgid "" -"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vids**, **end vid**, " -"[``directed``])" +"Representing a pseudo `id` as is not incorporated in the set of original " +"edges." msgstr "" -msgid "" -"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vids**, **end vids**, " -"[``directed``])" +msgid "``contracted_vertices``" msgstr "" -msgid "" -"pgr_binaryBreadthFirstSearch(`Edges SQL`_, `Combinations SQL`_, " -"[``directed``])" +msgid "Array of contracted vertex identifiers." +msgstr "" + +msgid "When ``type`` = **'v'**: :math:`-1`" msgstr "" msgid "" -"**Note:** Using the :doc:`sampledata` Network as all weights are same (i.e :" -"math:`1``)" +"When ``type`` = **'e'**: Identifier of the source vertex of the current edge " +"(``source``, ``target``)." msgstr "" -msgid "https://cp-algorithms.com/graph/01_bfs.html" +msgid "" +"When ``type`` = **'e'**: Identifier of the target vertex of the current edge " +"(``source``, ``target``)." msgstr "" msgid "" -"https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm#Specialized_variants" +"When ``type`` = **'e'**: Weight of the current edge (``source``, ``target``)." msgstr "" -msgid "pgr_bipartite -Experimental" +msgid "Only dead end contraction" msgstr "" -msgid "" -"``pgr_bipartite`` — Disjoint sets of vertices such that no two vertices " -"within the same set are adjacent." +msgid "Only linear contraction" msgstr "" -msgid "New **experimental** signature" +msgid "The cycle" msgstr "" msgid "" -"A bipartite graph is a graph with two sets of vertices which are connected " -"to each other, but not within themselves. A bipartite graph is possible if " -"the graph coloring is possible using two colors such that vertices in a set " -"are colored with the same color." +"Contracting a graph can be done with more than one operation. The order of " +"the operations affect the resulting contracted graph, after applying one " +"operation, the set of vertices that can be contracted by another operation " +"changes." msgstr "" -msgid "The algorithm works in undirected graph only." +msgid "This implementation cycles ``cycles`` times through the ``methods`` ." msgstr "" -msgid "The returned values are not ordered." +msgid "Contracting sample data" msgstr "" msgid "" -"The algorithm checks graph is bipartite or not. If it is bipartite then it " -"returns the node along with two colors `0` and `1` which represents two " -"different sets." -msgstr "" - -msgid "If graph is not bipartite then algorithm returns empty set." +"In this section, building and using a contracted graph will be shown by " +"example." msgstr "" -msgid "pgr_bipartite(`Edges SQL`_)" +msgid "The :doc:`sampledata` for an undirected graph is used" msgstr "" -msgid "Returns set of |result-node-color|" +msgid "a dead end operation first followed by a linear operation." msgstr "" -msgid "When the graph is bipartite" +msgid "Construction of the graph in the database" msgstr "" -msgid "Additional Example" +msgid "The original graph:" msgstr "" -msgid "The odd length cyclic graph can not be bipartite." +msgid "" +"The results do not represent the contracted graph. They represent the " +"changes that need to be done to the graph after applying the contraction " +"methods." msgstr "" msgid "" -"The edge :math:`5 \\rightarrow 1` will make subgraph with vertices :math:" -"`\\{1, 3, 7, 6, 5\\}` an odd length cyclic graph, as the cycle has 5 " -"vertices." +"Observe that vertices, for example, :math:`6` do not appear in the results " +"because it was not affected by the contraction algorithm." msgstr "" -msgid "Edges in blue represent odd length cycle subgraph." +msgid "After doing the dead end contraction operation:" msgstr "" -msgid "``pgr_boykovKolmogorov``" +msgid "After doing the linear contraction operation to the graph above:" msgstr "" -msgid "" -"``pgr_boykovKolmogorov`` — Calculates the flow on the graph edges that " -"maximizes the flow from the sources to the targets using Boykov Kolmogorov " -"algorithm." +msgid "The process to create the contraction graph on the database:" msgstr "" -msgid "New **proposed** signature" +msgid "Add additional columns" msgstr "" -msgid "``pgr_boykovKolmogorov`` (`Combinations`_)" +msgid "" +"Adding extra columns to the edges and vertices tables. In this documentation " +"the following will be used:" msgstr "" -msgid "Renamed from ``pgr_maxFlowBoykovKolmogorov``" +msgid "Column." msgstr "" -msgid "**Proposed** function" +msgid "The vertices set belonging to the vertex/edge" msgstr "" -msgid "New **Experimental** function" +msgid "``is_contracted``" msgstr "" -msgid "Running time: Polynomial" +msgid "On the vertex table" msgstr "" -msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vid**, **end vid**)" +msgid "" +"when ``true`` the vertex is contracted, its not part of the contracted graph." msgstr "" -msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vid**, **end vids**)" +msgid "" +"when ``false`` the vertex is not contracted, its part of the contracted " +"graph." msgstr "" -msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vids**, **end vid**)" +msgid "``is_new``" msgstr "" -msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vids**, **end vids**)" +msgid "On the edge table" msgstr "" -msgid "pgr_boykovKolmogorov(`Edges SQL`_, `Combinations SQL`_)" +msgid "" +"when ``true`` the edge was generated by the contraction algorithm. its part " +"of the contracted graph." msgstr "" -msgid "Returns set of |result-flow|" +msgid "" +"when ``false`` the edge is an original edge, might be or not part of the " +"contracted graph." msgstr "" -msgid "From vertex :math:`11` to vertex :math:`12`" +msgid "Store contraction information" msgstr "" -msgid "From vertex :math:`11` to vertices :math:`\\{5, 10, 12\\}`" +msgid "Store the contraction results in a table." msgstr "" -msgid "From vertices :math:`\\{11, 3, 17\\}` to vertex :math:`12`" +msgid "Update the edges and vertices tables" msgstr "" msgid "" -"From vertices :math:`\\{11, 3, 17\\}` to vertices :math:`\\{5, 10, 12\\}`" +"Use ``is_contracted`` column to indicate the vertices that are contracted." msgstr "" msgid "" -"Using a combinations table, equivalent to calculating result from vertices :" -"math:`\\{5, 6\\}` to vertices :math:`\\{10, 15, 14\\}`." +"Fill ``contracted_vertices`` with the information from the results that " +"belong to the vertices." msgstr "" -msgid "https://www.boost.org/libs/graph/doc/boykov_kolmogorov_max_flow.html" +msgid "Insert the new edges generated by pgr_contraction." msgstr "" -msgid "``pgr_breadthFirstSearch`` - Experimental" +msgid "The contracted graph" msgstr "" -msgid "" -"``pgr_breadthFirstSearch`` — Returns the traversal order(s) using Breadth " -"First Search algorithm." +msgid "Vertices that belong to the contracted graph." msgstr "" -msgid "``pgr_breadthFirstSearch`` (`Single Vertex`_)" +msgid "Edges that belong to the contracted graph." msgstr "" -msgid "``pgr_breadthFirstSearch`` (`Multiple Vertices`_)" +msgid "Visually:" msgstr "" -msgid "" -"Provides the Breadth First Search traversal order from a root vertex to a " -"particular depth." +msgid "Using the contracted graph" msgstr "" -msgid "The implementation will work on any type of graph." +msgid "" +"Depending on the final application the graph is to be prepared. In this " +"example the final application will be to calculate the cost from two " +"vertices in the original graph by using the contracted graph with " +"``pgr_dijkstraCost``" msgstr "" msgid "" -"Provides the Breadth First Search traversal order from a source node to a " -"target depth level." +"There are three cases when calculating the shortest path between a given " +"source and target in a contracted graph:" msgstr "" -msgid "Running time: :math:`O(E + V)`" +msgid "Case 1: Both source and target belong to the contracted graph." msgstr "" -msgid "pgr_breadthFirstSearch(`Edges SQL`_, **root vid**, [**options**])" +msgid "Case 2: Source and/or target belong to an edge subgraph." msgstr "" -msgid "pgr_breadthFirstSearch(`Edges SQL`_, **root vids**, [**options**])" +msgid "Case 3: Source and/or target belong to a vertex." msgstr "" -msgid "**options:** ``[max_depth, directed]``" +msgid "The final application should consider all of those cases." msgstr "" -msgid "Returns set of |result-bfs|" +msgid "Create a view (or table) of the contracted graph:" msgstr "" -msgid "" -"From root vertex :math:`6` on a **directed** graph with edges in ascending " -"order of ``id``" +msgid "Create the function that will use the contracted graph." msgstr "" msgid "" -"From root vertices :math:`\\{12, 6\\}` on an **undirected** graph with " -"**depth** :math:`<= 2` and edges in ascending order of ``id``" +"Case 2: Source and/or target belong to an edge that has contracted vertices." msgstr "" -msgid "DFS optional parameters" +msgid "" +"Case 3: Source and/or target belong to a vertex that has been contracted." msgstr "" -msgid "Same as `Single vertex`_ with edges in ascending order of ``id``." +msgid "``pgr_contractionDeadEnd`` - Proposed" msgstr "" -msgid "Same as `Single vertex`_ with edges in descending order of ``id``." +msgid "" +"``pgr_contractionDeadEnd`` — Performs graph contraction and returns the " +"contracted vertices and edges." msgstr "" -msgid "The resulting traversal is different." +msgid "A node is considered a dead end node when:" msgstr "" -msgid "" -"The left image shows the result with ascending order of ids and the right " -"image shows with descending order of the edge identifiers." +msgid "On undirected graphs:" msgstr "" -msgid "|ascending| |descending|" +msgid "The number of adjacent vertices is 1." msgstr "" -msgid "ascending" +msgid "On directed graphs:" msgstr "" -msgid "descending" +msgid "When there is only one adjacent vertex or" msgstr "" msgid "" -"`Boost: Breadth First Search algorithm documentation `__" +"When all edges are incoming regardless of the number of adjacent vertices." msgstr "" -msgid "" -"`Wikipedia: Breadth First Search algorithm `__" +msgid "pgr_contractionDeadEnd(`Edges SQL`_, [**options**])" msgstr "" -msgid "``pgr_bridges``" +msgid "**options:** ``[directed, forbidden_vertices]``" msgstr "" -msgid "``pgr_bridges`` - Return the bridges of an undirected graph." +msgid "Dead end contraction on an undirected graph." msgstr "" -msgid "" -"A bridge is an edge of an undirected graph whose deletion increases its " -"number of connected components. This implementation can only be used with an " -"undirected graph." +msgid "The green nodes are dead end nodes." msgstr "" -msgid "``edge`` ascending" +msgid "Node :math:`3` is a dead end node after node :math:`1` is contracted." msgstr "" -msgid "Running time: :math:`O(E * (V + E))`" +msgid "``forbidden_vertices``" msgstr "" -msgid "pgr_bridges(`Edges SQL`_)" +msgid "``ARRAY[`` |ANY-INTEGER| ``]``" msgstr "" -msgid "Returns set of |result-edge|" +msgid "**Empty**" msgstr "" -msgid "The bridges of the graph" +msgid "Value = ``e`` indicating the row is an edge." msgstr "" -msgid "Identifier of the edge that is a bridge." +msgid "A pseudo `id` of the edge." msgstr "" -msgid "https://en.wikipedia.org/wiki/Bridge_%28graph_theory%29" +msgid "Identifier of the source vertex of the current edge." msgstr "" -msgid "**Supported versions**" +msgid "Identifier of the target vertex of the current edge." msgstr "" -msgid "``pgr_chinesePostman`` - Experimental" +msgid "Weight of the current edge." msgstr "" -msgid "" -"``pgr_chinesePostman`` — Calculates the shortest circuit path which contains " -"every edge in a directed graph and starts and ends on the same vertex." +msgid "Dead end vertex on undirected graph" msgstr "" -msgid "Returns ``EMPTY SET`` on a disconnected graph" +msgid "They have only one adjacent node." msgstr "" -msgid "pgr_chinesePostman(`Edges SQL`_)" +msgid "Dead end vertex on directed graph" msgstr "" -msgid "Returns set of |result-1-1-no-seq|" +msgid "The green nodes are dead end nodes" msgstr "" -msgid "Returns set of ``(seq, node, edge, cost, agg_cost)``" +msgid "" +"The blue nodes have an unlimited number of incoming and/or outgoing edges." msgstr "" -msgid "Sequential value starting from ``1``" +msgid "Node" msgstr "" -msgid "" -"Identifier of the edge used to go from ``node`` to the next node in the path " -"sequence. ``-1`` for the last node of the path." +msgid "Adjacent nodes" msgstr "" -msgid "Aggregate cost from ``start_v`` to ``node``." +msgid "Dead end" msgstr "" -msgid "``pgr_chinesePostmanCost`` - Experimental" +msgid "Reason" msgstr "" -msgid "" -"``pgr_chinesePostmanCost`` — Calculates the minimum costs of a circuit path " -"which contains every edge in a directed graph and starts and ends on the " -"same vertex." +msgid ":math:`6`" msgstr "" -msgid "Return value when the graph if disconnected" +msgid ":math:`\\{1\\}`" msgstr "" -msgid "pgr_chinesePostmanCost(`Edges SQL`_)" +msgid "Yes" msgstr "" -msgid "RETURNS ``FLOAT``" +msgid "Has only one adjacent node." msgstr "" -msgid "``pgr_chinesepostmancost``" +msgid ":math:`7`" msgstr "" -msgid "Minimum costs of a circuit path." +msgid ":math:`\\{2\\}`" msgstr "" -msgid "pgr_connectedComponents" +msgid ":math:`8`" msgstr "" -msgid "" -"``pgr_connectedComponents`` — Connected components of an undirected graph " -"using a DFS-based approach." +msgid ":math:`\\{2, 3\\}`" msgstr "" -msgid "" -"A connected component of an undirected graph is a set of vertices that are " -"all reachable from each other." +msgid "Has more than one adjacent node and all edges are incoming." msgstr "" -msgid "Components are described by vertices" +msgid ":math:`\\{4\\}`" msgstr "" -msgid "``component`` ascending" +msgid ":math:`10`" msgstr "" -msgid "pgr_connectedComponents(`Edges SQL`_)" +msgid ":math:`\\{4, 5\\}`" msgstr "" -msgid "Returns set of |result-component-V|" +msgid "No" msgstr "" -msgid "The connected components of the graph" +msgid "Has more than one adjacent node and all edges are outgoing." msgstr "" -msgid "Has the value of the minimum node identifier in the component." +msgid ":math:`1,2,3,4,5`" msgstr "" -msgid "Identifier of the vertex that belongs to the ``component``." +msgid "Many adjacent nodes." msgstr "" -msgid "Connecting disconnected components" +msgid "" +"Has more than one adjacent node and some edges are incoming and some are " +"outgoing." msgstr "" msgid "" -"Boost: `Connected components `__" +"From above, nodes :math:`\\{6, 7, 9\\}` are dead ends because the total " +"number of adjacent vertices is one." msgstr "" msgid "" -"wikipedia: `Connected component `__" +"When there are more than one adjacent vertex, all edges need to be all " +"incoming edges otherwise it is not a dead end." msgstr "" -msgid "``pgr_contraction``" +msgid "Step by step dead end contraction" msgstr "" msgid "" -"``pgr_contraction`` — Performs graph contraction and returns the contracted " -"vertices and edges." -msgstr "" - -msgid "Name change from ``pgr_contractGraph``" +"The dead end contraction will stop until there are no more dead end nodes. " +"For example, from the following graph where :math:`3` is the dead end node:" msgstr "" -msgid "Bug fixes" +msgid "" +"After contracting :math:`3`, node :math:`2` is now a dead end node and is " +"contracted:" msgstr "" msgid "" -"Contraction reduces the size of the graph by removing some of the vertices " -"and edges and, for example, might add edges that represent a sequence of " -"original edges decreasing the total time and space used in graph algorithms." +"After contracting :math:`2`, stop. Node :math:`1` has the information of " +"nodes that were contracted." msgstr "" -msgid "Does not return the full contracted graph" +msgid "Creating the contracted graph" msgstr "" -msgid "Only changes on the graph are returned" +msgid "Steps for the creation of the contracted graph" msgstr "" -msgid "Currnetly there are two types of contraction methods" +msgid "Add additional columns." msgstr "" -msgid "Dead End Contraction" +msgid "Save results into a table." msgstr "" -msgid "Linear Contraction" +msgid "The contracted vertices are not part of the contracted graph." msgstr "" -msgid "The returned values include" +msgid "Using when departure and destination are in the contracted graph" msgstr "" -msgid "the added edges by linear contraction." +msgid "Using when departure/destination is not in the contracted graph" msgstr "" -msgid "the modified vertices by dead end contraction." +msgid "Using when departure and destination are not in the contracted graph" msgstr "" -msgid "The returned values are ordered as follows:" +msgid "``pgr_contractionLinear`` - Proposed" msgstr "" -msgid "column ``id`` ascending when type is ``v``" +msgid "" +"``pgr_contractionLinear`` — Performs graph contraction and returns the " +"contracted vertices and edges." msgstr "" -msgid "column ``id`` descending when type is ``e``" +msgid "pgr_contractionLinear(`Edges SQL`_, [**options**])" msgstr "" -msgid "The pgr_contraction function has the following signature:" +msgid "**options:** ``[directed, max_cycles, forbidden_vertices]``" msgstr "" -msgid "pgr_contraction(`Edges SQL`_, **contraction order**, [**options**])" +msgid "Linear contraction on an undirected graph." msgstr "" -msgid "**options:** ``[ max_cycles, forbidden_vertices, directed]``" +msgid "" +"The green nodes are linear nodes and will not be part of the contracted " +"graph." msgstr "" -msgid "Returns set of |result-contract|" +msgid "All edges adjacent will not be part of the contracted graph." msgstr "" -msgid "" -"Making a dead end and linear contraction in that order on an undirected " -"graph." +msgid "The red lines will be new edges of the contracted graph." msgstr "" msgid "**contraction Order**" msgstr "" -msgid "Ordered contraction operations." +msgid "" +"Number of times the contraction operations on ``contraction_order`` will be " +"performed." msgstr "" -msgid "1 = Dead end contraction" +msgid "A node connects two (or more) `linear` edges when" msgstr "" -msgid "2 = Linear contraction" +msgid "The number of adjacent vertices is 2." msgstr "" -msgid "Contraction optional parameters" +msgid "In case of a directed graph, a node is considered a `linear` node when" msgstr "" -msgid "``forbidden_vertices``" +msgid "Linearity is symmetrical." msgstr "" -msgid "**Empty**" +msgid "Linearity is not symmetrical" msgstr "" -msgid "Identifiers of vertices forbidden for contraction." +msgid "Graph where linearity is not symmetrical." msgstr "" -msgid ":math:`1`" +msgid "" +"When the graph is processed as a directed graph, linearity is not " +"symmetrical, therefore the graph can not be contracted." msgstr "" msgid "" -"Number of times the contraction operations on ``contraction_order`` will be " -"performed." +"When the same graph is processed as an undirected graph, linearity is " +"symmetrical, therefore the graph can be contracted." msgstr "" -msgid "The function returns a single row. The columns of the row are:" +msgid "The three edges can be replaced by one undirected edge" msgstr "" -msgid "``type``" +msgid "Edge :math:`1 - 3`." msgstr "" -msgid "Type of the ``id``." +msgid "With cost: :math:`4`." msgstr "" -msgid "``v`` when the row is a vertex." +msgid "Contracted vertices in the edge: :math:`\\{2\\}`." msgstr "" -msgid "Column ``id`` has a positive value" +msgid "Linearity is symmetrical" msgstr "" -msgid "``e`` when the row is an edge." +msgid "Graph where linearity is symmetrical." msgstr "" -msgid "Column ``id`` has a negative value" +msgid "The four edges can be replaced by two directed edges." msgstr "" -msgid "All numbers on this column are ``DISTINCT``" +msgid "Edge :math:`3 - 1`." msgstr "" -msgid "When ``type`` = **'v'**." +msgid "With cost: :math:`6`." msgstr "" -msgid "Identifier of the modified vertex." +msgid "The four edges can be replaced by one undirected edge." msgstr "" -msgid "When ``type`` = **'e'**." +msgid "Step by step linear contraction" msgstr "" -msgid "Decreasing sequence starting from **-1**." +msgid "" +"The linear contraction will stop when there are no more linear edges. For " +"example from the following graph there are linear edges" msgstr "" -msgid "" -"Representing a pseudo `id` as is not incorporated in the set of original " -"edges." +msgid "Contracting vertex :math:`3`," msgstr "" -msgid "Array of contracted vertex identifiers." +msgid "The vertex :math:`3` is removed from the graph" msgstr "" -msgid "When ``type`` = **'v'**: :math:`-1`" +msgid "" +"The edges :math:`2 \\rightarrow 3` and :math:`w \\rightarrow z` are removed " +"from the graph." msgstr "" msgid "" -"When ``type`` = **'e'**: Identifier of the source vertex of the current edge " -"(``source``, ``target``)." +"A new edge :math:`2 \\rightarrow 4` is inserted represented with red color." +msgstr "" + +msgid "Contracting vertex :math:`2`:" +msgstr "" + +msgid "The vertex :math:`2` is removed from the graph" msgstr "" msgid "" -"When ``type`` = **'e'**: Identifier of the target vertex of the current edge " -"(``source``, ``target``)." +"The edges :math:`1 \\rightarrow 2` and :math:`2 \\rightarrow 3` are removed " +"from the graph." msgstr "" msgid "" -"When ``type`` = **'e'**: Weight of the current edge (``source``, ``target``)." +"A new edge :math:`1 \\rightarrow 3` is inserted represented with red color." msgstr "" -msgid "Only dead end contraction" +msgid "" +"Edge :math:`1 \\rightarrow 3` has the information of cost and the nodes that " +"were contracted." msgstr "" -msgid "Only linear contraction" +msgid "Create the contracted graph." msgstr "" -msgid "pgr_createTopology" +msgid "``pgr_createTopology``" msgstr "" msgid "" @@ -10067,10 +10024,7 @@ msgid "" "to the rest of the edges." msgstr "" -msgid "The example uses the :doc:`sampledata` network." -msgstr "" - -msgid "pgr_createVerticesTable" +msgid "``pgr_createVerticesTable``" msgstr "" msgid "" @@ -10286,7 +10240,7 @@ msgid "" "Cuthill%E2%80%93McKee_algorithm>`__" msgstr "" -msgid "pgr_dagShortestPath - Experimental" +msgid "``pgr_dagShortestPath`` - Experimental" msgstr "" msgid "" @@ -10365,10 +10319,15 @@ msgstr "" msgid "Making **start_vids** the same as **end_vids**" msgstr "" +msgid "" +"`Boost: DAG shortest paths `__" +msgstr "" + msgid "https://en.wikipedia.org/wiki/Topological_sorting" msgstr "" -msgid "``pgr_degree`` -- Proposed" +msgid "``pgr_degree``" msgstr "" msgid "" @@ -10376,23 +10335,79 @@ msgid "" "edges incident to the vertex." msgstr "" -msgid "Calculates the degree of the vertices of an **undirected** graph" +msgid "Error messages adjustment." +msgstr "" + +msgid "New signature with only Edges SQL." +msgstr "" + +msgid "Calculates the degree of the vertices of an undirected graph" +msgstr "" + +msgid "" +"The degree (or valency) of a vertex of a graph is the number of edges that " +"are incident to the vertex." +msgstr "" + +msgid "A loop contributes 2 to a vertex's degree." +msgstr "" + +msgid "A vertex with degree 0 is called an isolated vertex." +msgstr "" + +msgid "Isolated vertex is not part of the result" +msgstr "" + +msgid "" +"Vertex not participating on the subgraph is considered and isolated vertex." +msgstr "" + +msgid "" +"There can be a ``dryrun`` execution and the code used to get the answer will " +"be shown in a PostgreSQL ``NOTICE``." +msgstr "" + +msgid "" +"The code can be used as base code for the particular application " +"requirements." +msgstr "" + +msgid "No ordering is performed." +msgstr "" + +msgid "pgr_degree(`Edges SQL`_ , [``dryrun``])" msgstr "" msgid "pgr_degree(`Edges SQL`_ , `Vertex SQL`_, [``dryrun``])" msgstr "" -msgid "RETURNS SETOF |result-degree|" +msgid "RETURNS SETOF |result-degree|" +msgstr "" + +msgid "Edges" +msgstr "" + +msgid "example" +msgstr "" + +msgid "Get the degree of the vertices defined on the edges table" +msgstr "" + +msgid "Edges and Vertices" msgstr "" msgid "Extracting the vertex information" msgstr "" +msgid "``pgr_degree`` can use :doc:`pgr_extractVertices` embedded in the call." +msgstr "" + msgid "" -"pgr_degree can utilize output from `pgr_extractVertices` or can have " -"`pgr_extractVertices` embedded in the call. For decent size networks, it is " -"best to prep your vertices table before hand and use that vertices table for " -"pgr_degree calls." +"For decent size networks, it is best to prepare your vertices table before " +"hand and use it on ``pgr_degree`` calls. (See `Using a vertex table`_)" +msgstr "" + +msgid "Calculate the degree of the nodes:" msgstr "" msgid "`Vertex SQL`_" @@ -10407,13 +10422,16 @@ msgstr "" msgid "When true do not process and get in a NOTICE the resulting query." msgstr "" -msgid "Vertex SQL" +msgid "For the `Edges and Vertices`_ signature:" msgstr "" -msgid "``in_edges``" +msgid "For the `Edges`_ signature:" msgstr "" -msgid "``BIGINT[]``" +msgid "Vertex SQL" +msgstr "" + +msgid "``in_edges``" msgstr "" msgid "" @@ -10444,9 +10462,47 @@ msgstr "" msgid "Number of edges that are incident to the vertex ``id``" msgstr "" +msgid "Degree of a loop" +msgstr "" + +msgid "Using the `Edges`_ signature." +msgstr "" + +msgid "Using the `Edges and Vertices`_ signature." +msgstr "" + msgid "Degree of a sub graph" msgstr "" +msgid "For the following is a subgraph of the :doc:`sampledata`:" +msgstr "" + +msgid ":math:`E = \\{(1, 5 \\leftrightarrow 6), (1, 6 \\leftrightarrow 10)\\}`" +msgstr "" + +msgid ":math:`V = \\{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17\\}`" +msgstr "" + +msgid "The vertices not participating on the edge are considered isolated" +msgstr "" + +msgid "their degree is 0 in the subgraph and" +msgstr "" + +msgid "their degree is not shown in the output." +msgstr "" + +msgid "Using a vertex table" +msgstr "" + +msgid "" +"For decent size networks, it is best to prepare your vertices table before " +"hand and use it on ``pgr_degree`` calls." +msgstr "" + +msgid "Extract the vertex information and save into a table:" +msgstr "" + msgid "Dry run execution" msgstr "" @@ -10460,36 +10516,41 @@ msgid "" "backend development needs." msgstr "" -msgid "Degree from an existing table" +msgid "Finding dead ends" msgstr "" msgid "" -"If you have a vertices table already built using ``pgr_extractVertices`` and " -"want the degree of the whole graph rather than a subset, you can forgo using " -"pgr_degree and work with the ``in_edges`` and ``out_edges`` columns directly." +"If there is a vertices table already built using ``pgr_extractVertices`` and " +"want the degree of the whole graph rather than a subset, it can be forgo " +"using ``pgr_degree`` and work with the ``in_edges`` and ``out_edges`` " +"columns directly." msgstr "" -msgid ":doc:`pgr_extractVertices`" +msgid "The degree of a dead end is 1." msgstr "" -msgid "``pgr_depthFirstSearch`` - Proposed" +msgid "Finding linear vertices" +msgstr "" + +msgid "The degree of a linear vertex is 2." msgstr "" msgid "" -"``pgr_depthFirstSearch`` — Returns a depth first search traversal of the " -"graph. The graph can be directed or undirected." +"If there is a vertices table already built using the ``pgr_extractVertices``" msgstr "" -msgid "Version 3.3.0" +msgid ":doc:`pgr_extractVertices`" msgstr "" -msgid "Promoted to **proposed** function" +msgid "``pgr_depthFirstSearch`` - Proposed" msgstr "" -msgid "``pgr_depthFirstSearch`` (`Single Vertex`_)" +msgid "" +"``pgr_depthFirstSearch`` — Returns a depth first search traversal of the " +"graph. The graph can be directed or undirected." msgstr "" -msgid "``pgr_depthFirstSearch`` (`Multiple Vertices`_)" +msgid "Version 3.3.0" msgstr "" msgid "" @@ -10545,13 +10606,13 @@ msgid "Same as `Single vertex`_ but with edges in descending order of ``id``." msgstr "" msgid "" -"`Boost: Depth First Search algorithm documentation `__" +"`Boost: Depth First Search `__" msgstr "" msgid "" -"`Boost: Undirected DFS algorithm documentation `__" +"`Boost: Undirected DFS `__" msgstr "" msgid "" @@ -10568,44 +10629,31 @@ msgstr "" msgid "Version 3.5.0" msgstr "" -msgid "" -"``pgr_dijkstra`` (`One to One`_) added ``start_vid`` and ``end_vid`` columns." +msgid "pgr_dijkstra(One to One) added ``start_vid`` and ``end_vid`` columns." msgstr "" -msgid "``pgr_dijkstra`` (`One to Many`_) added ``end_vid`` column." +msgid "pgr_dijkstra(One to Many) added ``end_vid`` column." msgstr "" -msgid "``pgr_dijkstra`` (`Many to One`_) added ``start_vid`` column." +msgid "pgr_dijkstra(Many to One) added ``start_vid`` column." msgstr "" msgid "Version 3.1.0" msgstr "" -msgid "``pgr_dijkstra`` (`Combinations`_)" -msgstr "" - -msgid "**Official** functions" -msgstr "" - msgid "Version 2.2.0" msgstr "" -msgid "New **proposed** functions:" +msgid "pgr_dijkstra(One to Many)" msgstr "" -msgid "``pgr_dijkstra`` (`One to Many`_)" +msgid "pgr_dijkstra(Many to One)" msgstr "" -msgid "``pgr_dijkstra`` (`Many to One`_)" +msgid "pgr_dijkstra(Many to Many)" msgstr "" -msgid "``pgr_dijkstra`` (`Many to Many`_)" -msgstr "" - -msgid "Signature change on ``pgr_dijkstra`` (`One to One`_)" -msgstr "" - -msgid "**Official** ``pgr_dijkstra`` (`One to One`_)" +msgid "Signature change on pgr_dijkstra(One to One)" msgstr "" msgid "pgr_dijkstra(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" @@ -10791,6 +10839,11 @@ msgstr "" msgid "37) Using `Combinations`_" msgstr "" +msgid "" +"`Boost: Dijkstra shortest paths `__" +msgstr "" + msgid "https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm" msgstr "" @@ -10802,9 +10855,6 @@ msgid "" "algorithm." msgstr "" -msgid "``pgr_dijkstraCost`` (`Combinations`_)" -msgstr "" - msgid "" "The ``pgr_dijkstraCost`` function sumarizes of the cost of the shortest path " "using Dijkstra Algorithm." @@ -11090,9 +11140,6 @@ msgstr "" msgid "When ``false``: ``cap`` limit per ``Start vid`` will be returned" msgstr "" -msgid "boost: https://www.boost.org/libs/graph/doc/table_of_contents.html" -msgstr "" - msgid "Wikipedia: https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm" msgstr "" @@ -11259,6 +11306,9 @@ msgid "" "``pgr_drivingDistance`` - Returns the driving distance from a start node." msgstr "" +msgid "Standarizing output columns to |result-spantree|" +msgstr "" + msgid "Added ``depth`` and ``start_vid`` result columns." msgstr "" @@ -11268,13 +11318,16 @@ msgstr "" msgid "Added ``depth`` and ``pred`` result columns." msgstr "" -msgid "Signature change pgr_drivingDistance(single vertex)" +msgid "Signature change:" +msgstr "" + +msgid "pgr_drivingDistance(single vertex)" msgstr "" -msgid "New **Official** pgr_drivingDistance(multiple vertices)" +msgid "New official signature:" msgstr "" -msgid "Official:: pgr_drivingDistance(single vertex)" +msgid "pgr_drivingDistance(multiple vertices)" msgstr "" msgid "" @@ -11329,7 +11382,7 @@ msgid "" "undirected graph" msgstr "" -msgid "pgr_edgeColoring - Experimental" +msgid "``pgr_edgeColoring`` - Experimental" msgstr "" msgid "" @@ -11403,6 +11456,15 @@ msgstr "" msgid "Graph coloring of pgRouting :doc:`sampledata`" msgstr "" +msgid "" +"`Boost: Edge Coloring `__" +msgstr "" + +msgid "" +"`Wikipedia: Graph coloring `__" +msgstr "" + msgid "``pgr_edgeDisjointPaths``" msgstr "" @@ -11411,9 +11473,6 @@ msgid "" "groups of vertices." msgstr "" -msgid "New **proposed** function:" -msgstr "" - msgid "pgr_edgeDisjointPaths(Combinations)" msgstr "" @@ -11495,9 +11554,6 @@ msgid "" "the flow from the sources to the targets using Edmonds Karp Algorithm." msgstr "" -msgid "``pgr_edmondsKarp`` (`Combinations`_)" -msgstr "" - msgid "Renamed from ``pgr_maxFlowEdmondsKarp``" msgstr "" @@ -11519,32 +11575,22 @@ msgstr "" msgid "pgr_edmondsKarp(`Edges SQL`_, `Combinations SQL`_)" msgstr "" -msgid "https://www.boost.org/libs/graph/doc/edmonds_karp_max_flow.html" +msgid "" +"`Boost: Edmonds Karp max flow `__" msgstr "" msgid "https://en.wikipedia.org/wiki/Edmonds%E2%80%93Karp_algorithm" msgstr "" -msgid "``pgr_edwardMoore - Experimental``" +msgid "``pgr_edwardMoore`` - Experimental" msgstr "" msgid "" "``pgr_edwardMoore`` — Returns the shortest path using Edward-Moore algorithm." msgstr "" -msgid "``pgr_edwardMoore`` (`Combinations`_)" -msgstr "" - -msgid "``pgr_edwardMoore`` (`One to One`_)" -msgstr "" - -msgid "``pgr_edwardMoore`` (`One to Many`_)" -msgstr "" - -msgid "``pgr_edwardMoore`` (`Many to One`_)" -msgstr "" - -msgid "``pgr_edwardMoore`` (`Many to Many`_)" +msgid "pgr_edwardMoore(Combinations)" msgstr "" msgid "" @@ -11606,15 +11652,12 @@ msgstr "" msgid "https://en.wikipedia.org/wiki/Shortest_Path_Faster_Algorithm" msgstr "" -msgid "pgr_extractVertices -- Proposed" +msgid "``pgr_extractVertices``" msgstr "" msgid "``pgr_extractVertices`` — Extracts the vertices information" msgstr "" -msgid "Classified as **proposed** function" -msgstr "" - msgid "" "This is an auxiliary function for extracting the vertex information of the " "set of edges of a graph." @@ -11713,13 +11756,7 @@ msgstr "" msgid "``pgr_findCloseEdges`` - Finds the close edges to a point geometry." msgstr "" -msgid "New **proposed** signatures:" -msgstr "" - -msgid "``pgr_findCloseEdges`` (`One point`_)" -msgstr "" - -msgid "``pgr_findCloseEdges`` (`Many points`_)" +msgid "``partial`` option is removed." msgstr "" msgid "" @@ -11736,7 +11773,7 @@ msgid "" "adjustments needed by the application." msgstr "" -msgid "``EMTPY SET`` is returned on dryrun executions" +msgid "``EMPTY SET`` is returned on dryrun executions" msgstr "" msgid "" @@ -11747,7 +11784,7 @@ msgid "" "pgr_findCloseEdges(`Edges SQL`_, **points**, **tolerance**, [**options**])" msgstr "" -msgid "**options:** ``[cap, partial, dryrun]``" +msgid "**options:** ``[cap, dryrun]``" msgstr "" msgid "Returns set of |result-find|" @@ -11756,52 +11793,16 @@ msgstr "" msgid "One point" msgstr "" -msgid "Default: ``cap => 1``" -msgstr "" - -msgid "Maximum one row answer." -msgstr "" - -msgid "Default: ``partial => true``" -msgstr "" - -msgid "With less calculations as possible." -msgstr "" - -msgid "Default: ``dryrun => false``" -msgstr "" - -msgid "Process query" +msgid "Get two close edges to points of interest with :math:`pid = 5`" msgstr "" -msgid "Returns" -msgstr "" - -msgid "values on ``edge_id``, ``fraction``, ``side`` columns." -msgstr "" - -msgid "``NULL`` on ``distance``, ``geom``, ``edge`` columns." +msgid "``cap => 2``" msgstr "" msgid "Many points" msgstr "" -msgid "" -"Find at most :math:`2` edges close to all vertices on the points of interest " -"table." -msgstr "" - -msgid "One answer per point, as small as possible." -msgstr "" - -msgid "" -"Columns ``edge_id``, ``fraction``, ``side`` and ``geom`` are returned with " -"values." -msgstr "" - -msgid "" -"``geom`` contains the original point geometry to assist on deterpartialing " -"to which point geometry the row belongs to." +msgid "For each points of interests, find the closest edge." msgstr "" msgid "**point**" @@ -11828,17 +11829,6 @@ msgstr "" msgid "Limit output rows" msgstr "" -msgid "``partial``" -msgstr "" - -msgid "" -"When ``true`` only columns needed for :doc:`withPoints-category` are " -"calculated." -msgstr "" - -msgid "When ``false`` all columns are calculated" -msgstr "" - msgid "When ``false`` calculations are performed." msgstr "" @@ -11854,268 +11844,100 @@ msgid "When :math:`cap = 1`, it is the closest edge." msgstr "" msgid "" -"Value in <0,1> that indicates the relative postition from the first end-" -"point of the edge." -msgstr "" - -msgid "Value in ``[r, l]`` indicating if the point is:" -msgstr "" - -msgid "In the right ``r``." -msgstr "" - -msgid "In the left ``l``." -msgstr "" - -msgid "When the point is on the line it is considered to be on the right." -msgstr "" - -msgid "``distance``" -msgstr "" - -msgid "Distance from point to edge." -msgstr "" - -msgid "``NULL`` when ``cap = 1`` on the `One point`_ signature" -msgstr "" - -msgid "``POINT`` geometry" -msgstr "" - -msgid "" -"`One Point`_: Contains the point on the edge that is ``fraction`` away from " -"the starting point of the edge." -msgstr "" - -msgid "`Many Points`_: Contains the corresponding **original point**" -msgstr "" - -msgid "" -"``LINESTRING`` geometry from the **original point** to the closest point of " -"the edge with identifier ``edge_id``" -msgstr "" - -msgid "One point results" -msgstr "" - -msgid "The green nodes is the **original point**" -msgstr "" - -msgid "" -"The geometry ``geom`` is a point on the :math:`sp \\rightarrow ep` edge." -msgstr "" - -msgid "" -"The geometry ``edge`` is a line that connects the **original point** with " -"``geom``" -msgstr "" - -msgid "Many point results" -msgstr "" - -msgid "The green nodes are the **original points**" -msgstr "" - -msgid "" -"The geometry ``geom``, marked as **g1** and **g2** are the **original " -"points**" -msgstr "" - -msgid "" -"The geometry ``edge``, marked as **edge1** and **edge2** is a line that " -"connects the **original point** with the closest point on the :math:`sp " -"\\rightarrow ep` edge." -msgstr "" - -msgid "One point examples" -msgstr "" - -msgid "At most two answers" -msgstr "" - -msgid "``cap => 2``" -msgstr "" - -msgid "Maximum two row answer." -msgstr "" - -msgid "Understanding the result" -msgstr "" - -msgid "``NULL`` on ``geom``, ``edge``" -msgstr "" - -msgid "``edge_id`` identifier of the edge close to the **original point**" -msgstr "" - -msgid "" -"Two edges are withing :math:`0.5` distance units from the **original " -"point**: :math:`{5, 8}`" -msgstr "" - -msgid "For edge :math:`5`:" -msgstr "" - -msgid "" -"``fraction``: The closest point from the **original point** is at the :math:" -"`0.8` fraction of the edge :math:`5`." -msgstr "" - -msgid "" -"``side``: The **original point** is located to the left side of edge :math:" -"`5`." -msgstr "" - -msgid "" -"``distance``: The **original point** is located :math:`0.1` length units " -"from edge :math:`5`." -msgstr "" - -msgid "For edge :math:`8`:" -msgstr "" - -msgid "" -"``fraction``: The closest point from the **original point** is at the :math:" -"`0.89..` fraction of the edge :math:`8`." -msgstr "" - -msgid "" -"``side``: The **original point** is located to the right side of edge :math:" -"`8`." -msgstr "" - -msgid "" -"``distance``: The **original point** is located :math:`0.19..` length units " -"from edge :math:`8`." -msgstr "" - -msgid "One answer, all columns" -msgstr "" - -msgid "``partial => false``" -msgstr "" - -msgid "Calculate all columns" -msgstr "" - -msgid "" -"``edge_id`` identifier of the edge **closest** to the **original point**" -msgstr "" - -msgid "" -"From all edges within :math:`0.5` distance units from the **original " -"point**: :math:`{5}` is the closest one." -msgstr "" - -msgid "" -"``geom``: Contains the geometry of the closest point on edge :math:`5` from " -"the **original point**." -msgstr "" - -msgid "" -"``edge``: Contains the ``LINESTRING`` geometry of the **original point** to " -"the closest point on on edge :math:`5` ``geom``" -msgstr "" - -msgid "At most two answers with all columns" -msgstr "" - -msgid "Understanding the result:" -msgstr "" - -msgid "" -"``geom``: Contains the geometry of the closest point on edge :math:`8` from " -"the **original point**." -msgstr "" - -msgid "" -"``edge``: Contains the ``LINESTRING`` geometry of the **original point** to " -"the closest point on on edge :math:`8` ``geom``" +"Value in <0,1> that indicates the relative position from the first end-point " +"of the edge." msgstr "" -msgid "One point dry run execution" +msgid "Value in ``[r, l]`` indicating if the point is:" msgstr "" -msgid "Returns ``EMPTY SET``." +msgid "At the right ``r`` of the segment." msgstr "" -msgid "``partial => true``" +msgid "When the point is on the line it is considered to be on the right." msgstr "" -msgid "Is ignored" +msgid "At the left ``l`` of the segment." msgstr "" -msgid "" -"Because it is a **dry run** excecution, the code for all calculations are " -"shown on the PostgreSQL ``NOTICE``." +msgid "``distance``" msgstr "" -msgid "``dryrun => true``" +msgid "Distance from the point to the edge." msgstr "" -msgid "Do not process query" +msgid "Original ``POINT`` geometry." msgstr "" msgid "" -"Generate a PostgreSQL ``NOTICE`` with the code used to calculate all columns" +"``LINESTRING`` geometry that connects the original **point** to the closest " +"point of the edge with identifier ``edge_id``" msgstr "" -msgid "``cap`` and **original point** are used in the code" +msgid "One point in an edge" msgstr "" -msgid "Many points examples" +msgid "The green node is the original point." msgstr "" -msgid "At most two answers per point" +msgid "``geom`` has the value of the original point." msgstr "" -msgid "``NULL`` on ``edge``" +msgid "" +"The geometry ``edge`` is a line that connects the original point with the " +"edge :math:`sp \\rightarrow ep` edge." msgstr "" -msgid "" -"``edge_id`` identifier of the edge close to a **original point** (``geom``)" +msgid "The point is located at the left of the edge." msgstr "" -msgid "" -"Two edges at most withing :math:`0.5` distance units from each of the " -"**original points**:" +msgid "One point dry run execution" msgstr "" -msgid "For ``POINT(1.8 0.4)`` and ``POINT(0.3 1.8)`` only one edge was found." +msgid "Using the query from the previous example:" msgstr "" -msgid "For the rest of the points two edges were found." +msgid "Returns ``EMPTY SET``." msgstr "" -msgid "For point ``POINT(2.9 1.8)``" +msgid "``dryrun => true``" msgstr "" -msgid "" -"Edge :math:`5` is before :math:`8` therefore edge :math:`5` has the shortest " -"distance to ``POINT(2.9 1.8)``." +msgid "Generates a PostgreSQL ``NOTICE`` with the code used." msgstr "" -msgid "One answer per point, all columns" +msgid "" +"The generated code can be used as a starting base code for additional " +"requirements, like taking into consideration the SRID." msgstr "" -msgid "For the **original point** ``POINT(2.9 1.8)``" +msgid "Many points in an edge" msgstr "" -msgid "Edge :math:`5` is the closest edge to the **original point**" +msgid "The green nodes are the **original points**" msgstr "" msgid "" -"``geom``: Contains the geometry of the **original point** ``POINT(2.9 1.8)``" +"The geometry ``geom``, marked as **g1** and **g2** are the **original " +"points**" msgstr "" msgid "" -"``edge``: Contains the ``LINESTRING`` geometry of the **original point** " -"(``geom``) to the closest point on on edge." +"The geometry ``edge``, marked as **edge1** and **edge2** is a line that " +"connects the **original point** with the closest point on the :math:`sp " +"\\rightarrow ep` edge." msgstr "" msgid "Many points dry run execution" msgstr "" +msgid "Do not process query" +msgstr "" + +msgid "" +"Generate a PostgreSQL ``NOTICE`` with the code used to calculate all columns" +msgstr "" + msgid "Find at most two routes to a given point" msgstr "" @@ -12150,11 +11972,10 @@ msgstr "" msgid "A unique identifier." msgstr "" -msgid "" -"Identifier of the edge nearest edge that allows an arrival to the point." +msgid "Identifier of the nearest segment." msgstr "" -msgid "Is it on the left, right or both sides of the segment ``edge_id``" +msgid "Is it on the left, right or both sides of the segment ``edge_id``." msgstr "" msgid "Where in the segment is the point located." @@ -12163,13 +11984,35 @@ msgstr "" msgid "The geometry of the points." msgstr "" +msgid "The distance between ``geom`` and the segment ``edge_id``." +msgstr "" + +msgid "" +"A segment that connects the ``geom`` of the point to the closest point on " +"the segment ``edge_id``." +msgstr "" + msgid "``newPoint``" msgstr "" -msgid "The geometry of the points moved on top of the segment." +msgid "A point on segment ``edge_id`` that is the closest to ``geom``." +msgstr "" + +msgid "Points of interest fill up" +msgstr "" + +msgid "Inserting the points of interest." +msgstr "" + +msgid "Filling the rest of the table." +msgstr "" + +msgid "" +"Any other additional modification: In this manual, point :math:`6` can be " +"reached from both sides." msgstr "" -msgid "Points of interest fillup" +msgid "The points of interest:" msgstr "" msgid "``pgr_floydWarshall``" @@ -12198,9 +12041,6 @@ msgid "" "floyd_warshall_shortest.html>`_" msgstr "" -msgid "Queries uses the :doc:`sampledata` network." -msgstr "" - msgid "``pgr_full_version``" msgstr "" @@ -12208,9 +12048,6 @@ msgid "" "``pgr_full_version`` — Get the details of pgRouting version information." msgstr "" -msgid "New **official** function" -msgstr "" - msgid "Get complete details of pgRouting version information" msgstr "" @@ -12277,17 +12114,14 @@ msgstr "" msgid "Git hash of pgRouting build" msgstr "" -msgid "``pgr_hawickCircuits - Experimental``" +msgid "``pgr_hawickCircuits`` - Experimental" msgstr "" msgid "" -"``pgr_hawickCircuits`` — Returns the list of cirucits using hawick circuits " +"``pgr_hawickCircuits`` — Returns the list of ciruits using hawick circuits " "algorithm." msgstr "" -msgid "``pgr_hawickCircuits``" -msgstr "" - msgid "" "Hawick Circuit algorithm, is published in 2008 by Ken Hawick and Health A. " "James. This algorithm solves the problem of detecting and enumerating " @@ -12410,7 +12244,9 @@ msgid "" "blue represent :math:`K_5` subgraph." msgstr "" -msgid "https://www.boost.org/libs/graph/doc/boyer_myrvold.html" +msgid "" +"`Boost: Boyer Myrvold `__" msgstr "" msgid "``pgr_johnson``" @@ -12465,6 +12301,9 @@ msgid "" "breadth First Search ordering." msgstr "" +msgid "Added ``pred`` result columns." +msgstr "" + msgid "" "Visits and extracts the nodes information in Breath First Search ordering of " "the Minimum Spanning Tree created using Kruskal's algorithm." @@ -12540,7 +12379,7 @@ msgstr "" msgid "pgr_kruskalDFS(`Edges SQL`_, **root vids**, [``max_depth``])" msgstr "" -msgid "pgr_lengauerTarjanDominatorTree -Experimental" +msgid "``pgr_lengauerTarjanDominatorTree`` - Experimental" msgstr "" msgid "" @@ -12598,8 +12437,8 @@ msgid "Dominator tree of another component." msgstr "" msgid "" -"`Boost: Lengauer-Tarjan dominator tree algorithm `__" +"`Boost: Lengauer-Tarjan dominator `__" msgstr "" msgid "" @@ -12607,7 +12446,7 @@ msgid "" "Dominator_(graph_theory)>`__" msgstr "" -msgid "pgr_lineGraph - Proposed" +msgid "``pgr_lineGraph`` - Proposed" msgstr "" msgid "" @@ -12615,6 +12454,9 @@ msgid "" "based graph." msgstr "" +msgid "Works for directed and undirected graphs." +msgstr "" + msgid "" "Given a graph :math:`G`, its line graph :math:`L(G)` is a graph such that:" msgstr "" @@ -12658,15 +12500,9 @@ msgstr "" msgid "Gives a local identifier for the edge" msgstr "" -msgid "Identifier of the source vertex of the current edge." -msgstr "" - msgid "When `negative`: the source is the reverse edge in the original graph." msgstr "" -msgid "Identifier of the target vertex of the current edge." -msgstr "" - msgid "When `negative`: the target is the reverse edge in the original graph." msgstr "" @@ -12875,8 +12711,7 @@ msgid "Full line graph of subgraph of edges :math:`\\{4, 7, 8, 10\\}`" msgstr "" msgid "" -"The examples of this section are based on the :doc:`sampledata` network. The " -"examples include the subgraph including edges 4, 7, 8, and 10 with " +"The examples include the subgraph including edges 4, 7, 8, and 10 with " "``reverse_cost``." msgstr "" @@ -13095,15 +12930,15 @@ msgstr "" msgid "Returns set of |result-component-make|" msgstr "" -msgid "" -"Query done on :doc:`sampledata` network gives the list of edges that are " -"needed to connect the graph." +msgid "List of edges that are needed to connect the graph." msgstr "" -msgid "https://www.boost.org/libs/graph/doc/make_connected.html" +msgid "" +"`Boost: make connected `__" msgstr "" -msgid "pgr_maxCardinalityMatch" +msgid "``pgr_maxCardinalityMatch``" msgstr "" msgid "" @@ -13111,13 +12946,16 @@ msgid "" "graph." msgstr "" +msgid "pgr_maxCardinalityMatch(text) returns only ``edge`` column." +msgstr "" + msgid "Deprecated signature" msgstr "" -msgid "``pgr_maxCardinalityMatch(text,boolean)``" +msgid "pgr_maxCardinalityMatch(text,boolean)" msgstr "" -msgid "``directed => false`` when used." +msgid "directed => ``false`` when used." msgstr "" msgid "Renamed from ``pgr_maximumCardinalityMatching``" @@ -13168,7 +13006,9 @@ msgstr "" msgid "Identifier of the edge in the original query." msgstr "" -msgid "https://www.boost.org/libs/graph/doc/maximum_matching.html" +msgid "" +"`Boost: maximum_matching `__" msgstr "" msgid "https://en.wikipedia.org/wiki/Matching_%28graph_theory%29" @@ -13185,12 +13025,6 @@ msgid "" "source(s) to the targets(s) using the Push Relabel algorithm." msgstr "" -msgid "``pgr_maxFlow`` (`Combinations`_)" -msgstr "" - -msgid "New **Proposed** function" -msgstr "" - msgid "Calculates the maximum flow from the sources to the targets." msgstr "" @@ -13198,6 +13032,9 @@ msgid "" "When the maximum flow is **0** then there is no flow and **0** is returned." msgstr "" +msgid "There is no flow when source has the same vaule as target." +msgstr "" + msgid "Uses the :doc:`pgr_pushRelabel ` algorithm." msgstr "" @@ -13225,7 +13062,9 @@ msgstr "" msgid "Maximum flow possible from the source(s) to the target(s)" msgstr "" -msgid "https://www.boost.org/libs/graph/doc/push_relabel_max_flow.html" +msgid "" +"`Boost: push relabel max flow `__" msgstr "" msgid "" @@ -13240,7 +13079,10 @@ msgid "" "of the maximum flow on a graph" msgstr "" -msgid "``pgr_maxFlowMinCost`` (`Combinations`_)" +msgid "pgr_maxFlowMinCost(Combinations)" +msgstr "" + +msgid "|boost| graph inside." msgstr "" msgid "**TODO** check which statement is true:" @@ -13284,11 +13126,6 @@ msgstr "" msgid "Returns set of |result-flow-mincost|" msgstr "" -msgid "" -"https://www.boost.org/libs/graph/doc/" -"successive_shortest_path_nonnegative_weights.html" -msgstr "" - msgid "``pgr_maxFlowMinCost_Cost`` - Experimental" msgstr "" @@ -13297,7 +13134,7 @@ msgid "" "maximum flow on a graph" msgstr "" -msgid "``pgr_maxFlowMinCost_Cost`` (`Combinations`_)" +msgid "pgr_maxFlowMinCost_Cost(Combinations)" msgstr "" msgid "**The cost value of all input edges must be nonnegative.**" @@ -13330,7 +13167,7 @@ msgstr "" msgid "Minimum Cost Maximum Flow possible from the source(s) to the target(s)" msgstr "" -msgid "pgr_nodeNetwork" +msgid "``pgr_nodeNetwork``" msgstr "" msgid "``pgr_nodeNetwork`` - Nodes an network edge table." @@ -13758,7 +13595,7 @@ msgid "" "projectweb/top/pdptw/li-lim-benchmark/" msgstr "" -msgid "There are 25 vehciles in the problem all with the same characteristics." +msgid "There are 25 vehicles in the problem all with the same characteristics." msgstr "" msgid "The original orders" @@ -13769,7 +13606,7 @@ msgid "" "order." msgstr "" -msgid "The original data needs to be converted to an appropiate table:" +msgid "The original data needs to be converted to an appropriate table:" msgstr "" msgid "The query" @@ -13868,9 +13705,6 @@ msgid "" "the flow from the sources to the targets using Push Relabel Algorithm." msgstr "" -msgid "``pgr_pushRelabel`` (`Combinations`_)" -msgstr "" - msgid "Renamed from ``pgr_maxFlowPushRelabel``" msgstr "" @@ -13889,7 +13723,7 @@ msgstr "" msgid "pgr_pushRelabel(`Edges SQL`_, `Combinations SQL`_)" msgstr "" -msgid "pgr_sequentialVertexColoring - Proposed" +msgid "``pgr_sequentialVertexColoring`` - Proposed" msgstr "" msgid "" @@ -13897,9 +13731,6 @@ msgid "" "undirected graph, using greedy approach." msgstr "" -msgid "Promoted to **proposed** signature" -msgstr "" - msgid "" "Sequential vertex coloring algorithm is a graph coloring algorithm in which " "color identifiers are assigned to the vertices of a graph in a sequential " @@ -13942,7 +13773,12 @@ msgstr "" msgid "pgr_sequentialVertexColoring(`Edges SQL`_)" msgstr "" -msgid "pgr_stoerWagner - Experimental" +msgid "" +"`Boost: Sequential Vertex Coloring `__" +msgstr "" + +msgid "``pgr_stoerWagner`` - Experimental" msgstr "" msgid "``pgr_stoerWagner`` — The min-cut of graph using stoerWagner algorithm." @@ -14026,6 +13862,11 @@ msgstr "" msgid "Using :doc:`pgr_connectedComponents`" msgstr "" +msgid "" +"`Boost: Stoer Wagner min cut `__" +msgstr "" + msgid "https://en.wikipedia.org/wiki/Stoer%E2%80%93Wagner_algorithm" msgstr "" @@ -14055,7 +13896,7 @@ msgid "The strong components of the graph" msgstr "" msgid "" -"Boost: `Strong components `__" msgstr "" @@ -14120,6 +13961,11 @@ msgstr "" msgid "Graph is not a DAG" msgstr "" +msgid "" +"`Boost: topological sort `__" +msgstr "" + msgid "``pgr_transitiveClosure`` - Experimental" msgstr "" @@ -14175,56 +14021,51 @@ msgstr "" msgid "Identifiers of the vertices that are reachable from vertex v." msgstr "" -msgid "https://en.wikipedia.org/wiki/Transitive_closure" +msgid "" +"`Boost: transitive closure `__" msgstr "" -msgid "pgr_trsp - Proposed" +msgid "https://en.wikipedia.org/wiki/Transitive_closure" msgstr "" -msgid "``pgr_trsp`` - routing vertices with restrictions." +msgid "``pgr_trsp``" msgstr "" -msgid "New proposed signatures" +msgid "``pgr_trsp`` - routing vertices with restrictions." msgstr "" -msgid "``pgr_trsp`` (`One to One`_)" +msgid "pgr_trsp(One to One)" msgstr "" -msgid "``pgr_trsp`` (`One to Many`_)" +msgid "pgr_trsp(One to Many)" msgstr "" -msgid "``pgr_trsp`` (`Many to One`_)" +msgid "pgr_trsp(Many to One)" msgstr "" -msgid "``pgr_trsp`` (`Many to Many`_)" +msgid "pgr_trsp(Many to Many)" msgstr "" -msgid "``pgr_trsp`` (`Combinations`_)" +msgid "pgr_trsp(Combinations)" msgstr "" msgid "Deprecated signatures" msgstr "" -msgid "``pgr_trsp(text,integer,integer,boolean,boolean,text)``" -msgstr "" - -msgid "``pgr_trsp(text,integer,float,integer,float,boolean,boolean,text)``" -msgstr "" - -msgid "``pgr_trspViaVertices(text,anyarray,boolean,boolean,text)``" +msgid "pgr_trsp(text,integer,float,integer,float,boolean,boolean,text)" msgstr "" -msgid "" -"``pgr_trspviaedges(text,integer[],double precision[],boolean,boolean,text)``" +msgid "pgr_trspViaVertices(text,anyarray,boolean,boolean,text)" msgstr "" msgid "New prototypes" msgstr "" -msgid "``pgr_trspViaVertices``" +msgid "pgr_trspViaVertices" msgstr "" -msgid "``pgr_trspViaEdges``" +msgid "pgr_trspViaEdges" msgstr "" msgid "" @@ -14297,19 +14138,13 @@ msgid "" "`Deprecated documentation `_" msgstr "" -msgid "``pgr_trspVia`` - Proposed" +msgid "``pgr_trspVia``" msgstr "" msgid "" "``pgr_trspVia`` Route that goes through a list of vertices with restrictions." msgstr "" -msgid "New proposed function:" -msgstr "" - -msgid "``pgr_trspVia`` (`One Via`_)" -msgstr "" - msgid "" "Given a list of vertices and a graph, this function is equivalent to finding " "the shortest path between :math:`vertex_i` and :math:`vertex_{i+1}` for all :" @@ -14387,7 +14222,7 @@ msgstr "" msgid ":doc:`via-category`" msgstr "" -msgid "``pgr_trspVia_withPoints`` - Proposed" +msgid "``pgr_trspVia_withPoints``" msgstr "" msgid "" @@ -14395,9 +14230,6 @@ msgid "" "or points with restrictions." msgstr "" -msgid "``pgr_trspVia_withPoints`` (`One Via`_)" -msgstr "" - msgid "" "Given a graph, a set of restriction on the graph edges, a set of points on " "the graphs edges and a list of vertices, this function is equivalent to " @@ -14557,30 +14389,12 @@ msgid "" "`pgr_trsp` algorithm. In this case a U turn is been done using the same edge." msgstr "" -msgid "pgr_trsp_withPoints - Proposed" +msgid "``pgr_trsp_withPoints``" msgstr "" msgid "``pgr_trsp_withPoints`` Routing Vertex/Point with restrictions." msgstr "" -msgid "New proposed signatures:" -msgstr "" - -msgid "``pgr_trsp_withPoints`` (`One to One`_)" -msgstr "" - -msgid "``pgr_trsp_withPoints`` (`One to Many`_)" -msgstr "" - -msgid "``pgr_trsp_withPoints`` (`Many to One`_)" -msgstr "" - -msgid "``pgr_trsp_withPoints`` (`Many to Many`_)" -msgstr "" - -msgid "``pgr_trsp_withPoints`` (`Combinations`_)" -msgstr "" - msgid "" "Modify the graph to include points defined by points_sql. Using Dijkstra " "algorithm, find the shortest path" @@ -14689,15 +14503,12 @@ msgid "" "`1` on an undirected graph, with details." msgstr "" -msgid "pgr_turnRestrictedPath - Experimental" +msgid "``pgr_turnRestrictedPath`` - Experimental" msgstr "" msgid "" -"``pgr_turnRestrictedPath`` Using Yen's algorithm Vertex -Vertex routing with " -"restrictions" -msgstr "" - -msgid "New experimental function" +"``pgr_turnRestrictedPath`` Using Yen's algorithm Vertex - Vertex routing " +"with restrictions" msgstr "" msgid "" @@ -14771,7 +14582,7 @@ msgstr "" msgid "pgRouting Version for this documentation" msgstr "" -msgid "pgr_vrpOneDepot - Experimental" +msgid "``pgr_vrpOneDepot`` - Experimental" msgstr "" msgid "**No documentation available**" @@ -14780,7 +14591,7 @@ msgstr "" msgid "**TBD**" msgstr "" -msgid "``pgr_withPoints`` - Proposed" +msgid "``pgr_withPoints``" msgstr "" msgid "" @@ -14923,7 +14734,7 @@ msgstr "" msgid "Passes in front or visits with left side driving." msgstr "" -msgid "``pgr_withPointsCost`` - Proposed" +msgid "``pgr_withPointsCost``" msgstr "" msgid "" @@ -15067,7 +14878,7 @@ msgstr "" msgid "Does not matter driving side driving topology" msgstr "" -msgid "``pgr_withPointsCostMatrix`` - proposed" +msgid "``pgr_withPointsCostMatrix``" msgstr "" msgid "" @@ -15099,7 +14910,7 @@ msgid "" "locations on the graph of point `(2.9, 1.8)`." msgstr "" -msgid "``pgr_withPointsDD`` - Proposed" +msgid "``pgr_withPointsDD``" msgstr "" msgid "" @@ -15112,7 +14923,10 @@ msgid "" "unnamed compulsory **driving side**." msgstr "" -msgid "``pgr_withPointsDD`` (`Single vertex`)" +msgid "pgr_withPointsDD(Single vertex)" +msgstr "" + +msgid "pgr_withPointsDD(Multiple vertices)" msgstr "" msgid "Added ``depth``, ``pred`` and ``start_vid`` column." @@ -15130,13 +14944,12 @@ msgid "" msgstr "" msgid "" -"``pgr_withpointsdd(text,text,bigint,double precision,boolean,character," -"boolean)``" +"pgr_withpointsdd(text,text,bigint,double precision,boolean,character,boolean)" msgstr "" msgid "" -"``pgr_withpointsdd(text,text,anyarray,double precision,boolean,character," -"boolean,boolean)``" +"pgr_withpointsdd(text,text,anyarray,double precision,boolean,character," +"boolean,boolean)" msgstr "" msgid "" @@ -15243,7 +15056,7 @@ msgstr "" msgid ":doc:`pgr_alphaShape`" msgstr "" -msgid "pgr_withPointsKSP - Proposed" +msgid "``pgr_withPointsKSP``" msgstr "" msgid "" @@ -15253,26 +15066,23 @@ msgstr "" msgid "Standarizing output columns to |nksp-result|" msgstr "" -msgid "``pgr_withPointsKSP`` (One to One)" -msgstr "" - -msgid "New overload functions" +msgid "pgr_withPointsKSP(One to One)" msgstr "" -msgid "``pgr_withPointsKSP`` (One to Many)" +msgid "pgr_withPointsKSP(One to Many)" msgstr "" -msgid "``pgr_withPointsKSP`` (Many to One)" +msgid "pgr_withPointsKSP(Many to One)" msgstr "" -msgid "``pgr_withPointsKSP`` (Many to Many)" +msgid "pgr_withPointsKSP(Many to Many)" msgstr "" -msgid "``pgr_withPointsKSP`` (Combinations)" +msgid "pgr_withPointsKSP(Combinations)" msgstr "" msgid "" -"``pgr_withpointsksp(text,text,bigint,bigint,integer,boolean,boolean,char," +"pgr_withpointsksp(text,text,bigint,bigint,integer,boolean,boolean,char," "boolean)``" msgstr "" @@ -15388,7 +15198,7 @@ msgid "" "to point :math:`2` with heap paths and details." msgstr "" -msgid "``pgr_withPointsVia`` - Proposed" +msgid "``pgr_withPointsVia``" msgstr "" msgid "" @@ -15396,9 +15206,6 @@ msgid "" "points." msgstr "" -msgid "New **proposed** function ``pgr_withPointsVia`` (`One Via`_)" -msgstr "" - msgid "" "Given a graph, a set of points on the graphs edges and a list of vertices, " "this function is equivalent to finding the shortest path between :math:" @@ -15463,83 +15270,244 @@ msgstr "" msgid "Proposed Functions" msgstr "" -msgid ":doc:`pgr_withPoints` - Route from/to points anywhere on the graph." +msgid ":doc:`pgr_withPoints` - Route from/to points anywhere on the graph." +msgstr "" + +msgid ":doc:`pgr_withPointsCost` - Costs of the shortest paths." +msgstr "" + +msgid ":doc:`pgr_withPointsCostMatrix` - Costs of the shortest paths." +msgstr "" + +msgid ":doc:`pgr_withPointsKSP` - K shortest paths." +msgstr "" + +msgid ":doc:`pgr_withPointsDD` - Driving distance." +msgstr "" + +msgid ":doc:`pgr_withPointsVia` - Via routing" +msgstr "" + +msgid "" +":doc:`pgr_lineGraph` - Transformation algorithm for generating a Line Graph." +msgstr "" + +msgid ":doc:`withPoints-family` - Functions based on Dijkstra algorithm." +msgstr "" + +msgid "From the :doc:`TRSP-family`:" +msgstr "" + +msgid "Reference" +msgstr "" + +msgid "Release Notes" +msgstr "" + +msgid "" +"To see the full list of changes check the list of `Git commits `_ on Github." +msgstr "" + +msgid "Mayors" +msgstr "" + +msgid "pgRouting 4" +msgstr "" + +msgid "Minors 4.x" +msgstr "" + +msgid "pgRouting 4.0" +msgstr "" + +msgid "pgRouting 3" +msgstr "" + +msgid "Minors 3.x" +msgstr "" + +msgid "pgRouting 3.8" +msgstr "" + +msgid "pgRouting 3.8.0 Release Notes" +msgstr "" + +msgid "Promotion to official function of pgRouting." +msgstr "" + +msgid "pgr_extractVertices" +msgstr "" + +msgid "pgr_degree" +msgstr "" + +msgid "pgr_findCloseEdges" +msgstr "" + +msgid "Official functions changes" +msgstr "" + +msgid "" +"`#2786 `__: " +"pgr_contraction" +msgstr "" + +msgid "New proposed functions" +msgstr "" + +msgid "Contraction" +msgstr "" + +msgid "" +"`#2790 `__: " +"pgr_contractionDeadEnd" +msgstr "" + +msgid "" +"`#2791 `__: " +"pgr_contractionLinear" +msgstr "" + +msgid "pgRouting 3.7" +msgstr "" + +msgid "pgRouting 3.7.3 Release Notes" +msgstr "" + +msgid "" +"To see all issues & pull requests closed by this release see the `Git closed " +"milestone for 3.7.3 `__" +msgstr "" + +msgid "" +"`#2731 `__ Build Failure " +"on Ubuntu 22" +msgstr "" + +msgid "pgRouting 3.7.2 Release Notes" +msgstr "" + +msgid "" +"To see all issues & pull requests closed by this release see the `Git closed " +"milestone for 3.7.2 `__" +msgstr "" + +msgid "Build" +msgstr "" + +msgid "" +"`#2713 `__ cmake missing " +"some policies and min version" +msgstr "" + +msgid "Using OLD policies: CMP0148, CMP0144, CMP0167" +msgstr "" + +msgid "Minimum cmake version 3.12" +msgstr "" + +msgid "" +"`#2707 `__ Build failure " +"in pgRouting 3.7.1 on Alpine" +msgstr "" + +msgid "" +"`#2706 `__ winnie crashing " +"on pgr_betweennessCentrality" msgstr "" -msgid ":doc:`pgr_withPointsCost` - Costs of the shortest paths." +msgid "pgRouting 3.7.1 Release Notes" msgstr "" -msgid ":doc:`pgr_withPointsCostMatrix` - Costs of the shortest paths." +msgid "" +"To see all issues & pull requests closed by this release see the `Git closed " +"milestone for 3.7.1 `__" msgstr "" -msgid ":doc:`pgr_withPointsKSP` - K shortest paths." +msgid "" +"`#2680 `__ fails to " +"compile under mingw64 gcc 13.2" msgstr "" -msgid ":doc:`pgr_withPointsDD` - Driving distance." +msgid "" +"`#2689 `__ When point is a " +"vertex, the withPoints family do not return results." msgstr "" -msgid ":doc:`pgr_withPointsVia` - Via routing" +msgid "C/C++ code enhancemet" msgstr "" -msgid "These proposed functions do not modify the database." +msgid "TRSP family" msgstr "" -msgid "" -":doc:`pgr_degree` - Returns a set of vertices and corresponding count of " -"incidet edges to the vertex." +msgid "pgRouting 3.7.0 Release Notes" msgstr "" msgid "" -":doc:`pgr_extractVertices` - Extracts vertex information based on the edge " -"table information." +"To see all issues & pull requests closed by this release see the `Git closed " +"milestone for 3.7.0 `__" msgstr "" msgid "" -":doc:`pgr_lineGraph` - Transformation algorithm for generating a Line Graph." +"`#2656 `__ Stop support of " +"PostgreSQL12 on pgrouting v3.7" msgstr "" -msgid ":doc:`pgr_withPointsVia`" +msgid "Stopping support of PostgreSQL 12" msgstr "" -msgid ":doc:`pgr_trspVia`" +msgid "CI does not test for PostgreSQL 12" msgstr "" -msgid ":doc:`pgr_trspVia_withPoints`" +msgid "New experimental functions" msgstr "" -msgid ":doc:`withPoints-family` - Functions based on Dijkstra algorithm." +msgid "Metrics" msgstr "" -msgid "From the :doc:`TRSP-family`:" +msgid "pgr_betweennessCentrality" msgstr "" -msgid "Utilities" +msgid "" +"`#2605 `__ Standardize " +"spanning tree functions output" msgstr "" -msgid ":doc:`pgr_findCloseEdges`" +msgid "Functions:" msgstr "" -msgid "Reference" +msgid "Experimental promoted to proposed." msgstr "" -msgid "Release Notes" +msgid "" +"`#2635 `__ pgr_LineGraph " +"ignores directed flag and use negative values for identifiers." msgstr "" -msgid "" -"To see the full list of changes check the list of `Git commits `_ on Github." +msgid "``pgr_lineGraph``" msgstr "" -msgid "Mayors" +msgid "Code enhancement" msgstr "" -msgid "pgRouting 3" +msgid "" +"`#2599 `__ Driving " +"distance cleanup" msgstr "" -msgid "Minors 3.x" +msgid "" +"`#2607 `__ Read postgresql " +"data on C++" msgstr "" -msgid "pgRouting 3.7" +msgid "" +"`#2614 `__ Clang tidy does " +"not work" msgstr "" msgid "pgRouting 3.6" @@ -15554,9 +15522,6 @@ msgid "" "utf8=%E2%9C%93&q=milestone%3A%22Release%203.6.3%22>`__" msgstr "" -msgid "Build" -msgstr "" - msgid "Explicit minimum requirements:" msgstr "" @@ -15658,55 +15623,38 @@ msgid "" msgstr "" msgid "" -"`#2516 `__ Standarize " +"`#2516 `__ Standardize " "output pgr_aStar" msgstr "" -msgid "" -"``pgr_aStar`` (`One to One`) added ``start_vid`` and ``end_vid`` columns." -msgstr "" - -msgid "``pgr_aStar`` (`One to Many`) added ``end_vid`` column." -msgstr "" - -msgid "``pgr_aStar`` (`Many to One`) added ``start_vid`` column." +msgid "Standardize output columns to |short-generic-result|" msgstr "" msgid "" -"`#2523 `__ Standarize " +"`#2523 `__ Standardize " "output pgr_bdAstar" msgstr "" msgid "" -"``pgr_bdAstar`` (`One to One`) added ``start_vid`` and ``end_vid`` columns." -msgstr "" - -msgid "``pgr_bdAstar`` (`One to Many`) added ``end_vid`` column." -msgstr "" - -msgid "``pgr_bdAstar`` (`Many to One`) added ``start_vid`` column." -msgstr "" - -msgid "" -"`#2547 `__ Standarize " +"`#2547 `__ Standardize " "output and modifying signature pgr_KSP" msgstr "" msgid "" -"`#2548 `__ Standarize " -"output pgr_drivingdistance" +"`#2548 `__ Standardize " +"output pgr_drivingDistance" msgstr "" msgid "Proposed functions changes" msgstr "" msgid "" -"`#2544 `__ Standarize " +"`#2544 `__ Standardize " "output and modifying signature pgr_withPointsDD" msgstr "" msgid "" -"`#2546 `__ Standarize " +"`#2546 `__ Standardize " "output and modifying signature pgr_withPointsKSP" msgstr "" @@ -15750,11 +15698,11 @@ msgid "" "history links." msgstr "" -msgid "..rubric:: SQL standarization" +msgid "..rubric:: Standardize SQL" msgstr "" msgid "" -"`#2555 `__ standarize " +"`#2555 `__ Standardize " "deprecated messages" msgstr "" @@ -15780,9 +15728,6 @@ msgstr "" msgid "Changes on the documentation to the following:" msgstr "" -msgid "pgr_degree" -msgstr "" - msgid "pgr_dijkstra" msgstr "" @@ -15800,7 +15745,7 @@ msgstr "" msgid "" "`#2565 `__ " -"pgr_pgr_lengauerTarjanDominatorTree triggers an assertion" +"pgr_lengauerTarjanDominatorTree triggers an assertion" msgstr "" msgid "SQL enhancements" @@ -15840,16 +15785,6 @@ msgstr "" msgid "Dijkstra" msgstr "" -msgid "" -"``pgr_dijkstra`` (`One to One`) added ``start_vid`` and ``end_vid`` columns." -msgstr "" - -msgid "``pgr_dijkstra`` (`One to Many`) added ``end_vid`` column." -msgstr "" - -msgid "``pgr_dijkstra`` (`Many to One`) added ``start_vid`` column." -msgstr "" - msgid "pgRouting 3.4" msgstr "" @@ -15906,13 +15841,13 @@ msgid "" "doesn't give all correct shortest path" msgstr "" -msgid "New proposed functions" +msgid "New proposed functions." msgstr "" msgid "With points" msgstr "" -msgid "``pgr_withPointsVia`` (One Via)" +msgid "pgr_withPointsVia(One Via)" msgstr "" msgid "Turn Restrictions" @@ -15921,82 +15856,67 @@ msgstr "" msgid "Via with turn restrictions" msgstr "" -msgid "``pgr_trspVia`` (One Via)" -msgstr "" - -msgid "``pgr_trspVia_withPoints`` (One Via)" -msgstr "" - -msgid "``pgr_trsp``" -msgstr "" - -msgid "``pgr_trsp`` (One to One)" -msgstr "" - -msgid "``pgr_trsp`` (One to Many)" -msgstr "" - -msgid "``pgr_trsp`` (Many to One)" +msgid "pgr_trspVia(One Via)" msgstr "" -msgid "``pgr_trsp`` (Many to Many)" +msgid "pgr_trspVia_withPoints(One Via)" msgstr "" -msgid "``pgr_trsp`` (Combinations)" +msgid "pgr_trsp_withPoints(One to One)" msgstr "" -msgid "``pgr_trsp_withPoints``" +msgid "pgr_trsp_withPoints(One to Many)" msgstr "" -msgid "``pgr_trsp_withPoints`` (One to One)" +msgid "pgr_trsp_withPoints(Many to One)" msgstr "" -msgid "``pgr_trsp_withPoints`` (One to Many)" +msgid "pgr_trsp_withPoints(Many to Many)" msgstr "" -msgid "``pgr_trsp_withPoints`` (Many to One)" +msgid "pgr_trsp_withPoints(Combinations)" msgstr "" -msgid "``pgr_trsp_withPoints`` (Many to Many)" +msgid "Topology" msgstr "" -msgid "``pgr_trsp_withPoints`` (Combinations)" +msgid "Utilities" msgstr "" -msgid "Topology" +msgid "pgr_findCloseEdges(One point)" msgstr "" -msgid "``pgr_degree``" +msgid "pgr_findCloseEdges(Many points)" msgstr "" -msgid "``pgr_findCloseEdges`` (One point)" +msgid "Ordering" msgstr "" -msgid "``pgr_findCloseEdges`` (Many points)" +msgid "pgr_cuthillMckeeOrdering" msgstr "" -msgid "Ordering" +msgid "Unclassified" msgstr "" -msgid "``pgr_cuthillMckeeOrdering``" +msgid "pgr_hawickCircuits" msgstr "" msgid "Flow functions" msgstr "" -msgid "``pgr_maxCardinalityMatch(text)``" +msgid "pgr_maxCardinalityMatch(text)" msgstr "" -msgid "Deprecating ``pgr_maxCardinalityMatch(text,boolean)``" +msgid "Deprecating: pgr_maxCardinalityMatch(text,boolean)" msgstr "" msgid "Deprecated Functions" msgstr "" -msgid "``pgr_trsp(text,integer,float8,integer,float8,boolean,boolean,text)``" +msgid "pgr_trsp(text,integer,float8,integer,float8,boolean,boolean,text)" msgstr "" -msgid "``pgr_trspViaEdges(text,integer[],float[],boolean,boolean,text)``" +msgid "pgr_trspViaEdges(text,integer[],float[],boolean,boolean,text)" msgstr "" msgid "pgRouting 3.3" @@ -16182,9 +16102,6 @@ msgstr "" msgid "pgr_sequentialVertexColoring" msgstr "" -msgid "pgr_extractVertices" -msgstr "" - msgid "Traversal" msgstr "" @@ -16258,12 +16175,6 @@ msgstr "" msgid "Removing support for Boost v1.53, v1.54 & v1.55" msgstr "" -msgid "pgr_bellmanFord(Combinations)" -msgstr "" - -msgid "pgr_binaryBreadthFirstSearch(Combinations)" -msgstr "" - msgid "pgr_bipartite" msgstr "" @@ -16273,9 +16184,6 @@ msgstr "" msgid "Dijkstra Near" msgstr "" -msgid "pgr_edwardMoore(Combinations)" -msgstr "" - msgid "pgr_isPlanar" msgstr "" @@ -16285,51 +16193,15 @@ msgstr "" msgid "pgr_makeConnected" msgstr "" -msgid "pgr_maxFlowMinCost(Combinations)" -msgstr "" - -msgid "pgr_maxFlowMinCost_Cost(Combinations)" -msgstr "" - msgid "Astar" msgstr "" -msgid "pgr_aStar(Combinations)" -msgstr "" - -msgid "pgr_aStarCost(Combinations)" -msgstr "" - msgid "Bidirectional Astar" msgstr "" -msgid "pgr_bdAstar(Combinations)" -msgstr "" - -msgid "pgr_bdAstarCost(Combinations)" -msgstr "" - msgid "Bidirectional Dijkstra" msgstr "" -msgid "pgr_bdDijkstra(Combinations)" -msgstr "" - -msgid "pgr_bdDijkstraCost(Combinations)" -msgstr "" - -msgid "pgr_boykovKolmogorov(Combinations)" -msgstr "" - -msgid "pgr_edmondsKarp(Combinations)" -msgstr "" - -msgid "pgr_maxFlow(Combinations)" -msgstr "" - -msgid "pgr_pushRelabel(Combinations)" -msgstr "" - msgid "pgRouting 3.1" msgstr "" @@ -16564,7 +16436,7 @@ msgid "" "information" msgstr "" -msgid "New functions" +msgid "New Functions" msgstr "" msgid "Kruskal family" @@ -16603,148 +16475,94 @@ msgstr "" msgid "aStar Family" msgstr "" -msgid "pgr_aStar(one to many)" -msgstr "" - -msgid "pgr_aStar(many to one)" -msgstr "" - -msgid "pgr_aStar(many to many)" +msgid "pgr_aStarCost(One to One)" msgstr "" -msgid "pgr_aStarCost(one to one)" +msgid "pgr_aStarCost(One to Many)" msgstr "" -msgid "pgr_aStarCost(one to many)" +msgid "pgr_aStarCost(Many to One)" msgstr "" -msgid "pgr_aStarCost(many to one)" +msgid "pgr_aStarCost(Many to Many)" msgstr "" -msgid "pgr_aStarCost(many to many)" -msgstr "" - -msgid "pgr_aStarCostMatrix(one to one)" -msgstr "" - -msgid "pgr_aStarCostMatrix(one to many)" -msgstr "" - -msgid "pgr_aStarCostMatrix(many to one)" -msgstr "" - -msgid "pgr_aStarCostMatrix(many to many)" +msgid "pgr_aStarCostMatrix" msgstr "" msgid "bdAstar Family" msgstr "" -msgid "pgr_bdAstar(one to many)" -msgstr "" - -msgid "pgr_bdAstar(many to one)" -msgstr "" - -msgid "pgr_bdAstar(many to many)" -msgstr "" - -msgid "pgr_bdAstarCost(one to one)" -msgstr "" - -msgid "pgr_bdAstarCost(one to many)" +msgid "pgr_bdAstarCost(One to One)" msgstr "" -msgid "pgr_bdAstarCost(many to one)" +msgid "pgr_bdAstarCost(One to Many)" msgstr "" -msgid "pgr_bdAstarCost(many to many)" +msgid "pgr_bdAstarCost(Many to One)" msgstr "" -msgid "pgr_bdAstarCostMatrix(one to one)" +msgid "pgr_bdAstarCost(Many to Many)" msgstr "" -msgid "pgr_bdAstarCostMatrix(one to many)" -msgstr "" - -msgid "pgr_bdAstarCostMatrix(many to one)" -msgstr "" - -msgid "pgr_bdAstarCostMatrix(many to many)" +msgid "pgr_bdAstarCostMatrix" msgstr "" msgid "bdDijkstra Family" msgstr "" -msgid "pgr_bdDijkstra(one to many)" -msgstr "" - -msgid "pgr_bdDijkstra(many to one)" -msgstr "" - -msgid "pgr_bdDijkstra(many to many)" -msgstr "" - -msgid "pgr_bdDijkstraCost(one to one)" -msgstr "" - -msgid "pgr_bdDijkstraCost(one to many)" -msgstr "" - -msgid "pgr_bdDijkstraCost(many to one)" -msgstr "" - -msgid "pgr_bdDijkstraCost(many to many)" +msgid "pgr_bdDijkstraCost(One to One)" msgstr "" -msgid "pgr_bdDijkstraCostMatrix(one to one)" +msgid "pgr_bdDijkstraCost(One to Many)" msgstr "" -msgid "pgr_bdDijkstraCostMatrix(one to many)" +msgid "pgr_bdDijkstraCost(Many to One)" msgstr "" -msgid "pgr_bdDijkstraCostMatrix(many to one)" +msgid "pgr_bdDijkstraCost(Many to Many)" msgstr "" -msgid "pgr_bdDijkstraCostMatrix(many to many)" +msgid "pgr_bdDijkstraCostMatrix" msgstr "" msgid "Flow Family" msgstr "" -msgid "pgr_pushRelabel(one to one)" +msgid "pgr_pushRelabel(One to One)" msgstr "" -msgid "pgr_pushRelabel(one to many)" +msgid "pgr_pushRelabel(One to Many)" msgstr "" -msgid "pgr_pushRelabel(many to one)" +msgid "pgr_pushRelabel(Many to One)" msgstr "" -msgid "pgr_pushRelabel(many to many)" +msgid "pgr_pushRelabel(Many to Many)" msgstr "" -msgid "pgr_edmondsKarp(one to one)" +msgid "pgr_edmondsKarp(One to One)" msgstr "" -msgid "pgr_edmondsKarp(one to many)" +msgid "pgr_edmondsKarp(One to Many)" msgstr "" -msgid "pgr_edmondsKarp(many to one)" +msgid "pgr_edmondsKarp(Many to One)" msgstr "" -msgid "pgr_edmondsKarp(many to many)" +msgid "pgr_edmondsKarp(Many to Many)" msgstr "" -msgid "pgr_boykovKolmogorov (one to one)" +msgid "pgr_boykovKolmogorov (One to One)" msgstr "" -msgid "pgr_boykovKolmogorov (one to many)" +msgid "pgr_boykovKolmogorov (One to Many)" msgstr "" -msgid "pgr_boykovKolmogorov (many to one)" +msgid "pgr_boykovKolmogorov (Many to One)" msgstr "" -msgid "pgr_boykovKolmogorov (many to many)" +msgid "pgr_boykovKolmogorov (Many to Many)" msgstr "" msgid "pgr_maxCardinalityMatching" @@ -16753,21 +16571,24 @@ msgstr "" msgid "pgr_maxFlow" msgstr "" -msgid "pgr_edgeDisjointPaths(one to one)" +msgid "pgr_edgeDisjointPaths(One to One)" msgstr "" -msgid "pgr_edgeDisjointPaths(one to many)" +msgid "pgr_edgeDisjointPaths(One to Many)" msgstr "" -msgid "pgr_edgeDisjointPaths(many to one)" +msgid "pgr_edgeDisjointPaths(Many to One)" msgstr "" -msgid "pgr_edgeDisjointPaths(many to many)" +msgid "pgr_edgeDisjointPaths(Many to Many)" msgstr "" msgid "Components family" msgstr "" +msgid "pgr_connectedComponents" +msgstr "" + msgid "pgr_strongComponents" msgstr "" @@ -16954,7 +16775,7 @@ msgstr "" msgid "pgr_johnson" msgstr "" -msgid "pgr_astar" +msgid "pgr_aStar" msgstr "" msgid "pgr_bdAstar" @@ -16975,6 +16796,9 @@ msgstr "" msgid "pgr_drivingDistance" msgstr "" +msgid "pgr_KSP" +msgstr "" + msgid "pgr_dijkstraVia (proposed)" msgstr "" @@ -17173,22 +16997,13 @@ msgstr "" msgid "Parameter names changed" msgstr "" -msgid "The many version results are the union of the one to one version" +msgid "The many version results are the union of the One to One version" msgstr "" msgid "New Signatures" msgstr "" -msgid "pgr_bdAstar(one to one)" -msgstr "" - -msgid "New Proposed functions" -msgstr "" - -msgid "pgr_bdAstarCostMatrix" -msgstr "" - -msgid "pgr_bdDijkstraCostMatrix" +msgid "pgr_bdAstar(One to One)" msgstr "" msgid "pgr_lineGraph" @@ -17270,31 +17085,7 @@ msgstr "" msgid "pgr_bdDijkstra" msgstr "" -msgid "New Proposed Signatures" -msgstr "" - -msgid "pgr_astar(one to many)" -msgstr "" - -msgid "pgr_astar(many to one)" -msgstr "" - -msgid "pgr_astar(many to many)" -msgstr "" - -msgid "pgr_astarCost(one to one)" -msgstr "" - -msgid "pgr_astarCost(one to many)" -msgstr "" - -msgid "pgr_astarCost(many to one)" -msgstr "" - -msgid "pgr_astarCost(many to many)" -msgstr "" - -msgid "pgr_astarCostMatrix" +msgid "Deprecated signatures." msgstr "" msgid "pgr_bddijkstra - use pgr_bdDijkstra instead" @@ -17366,52 +17157,43 @@ msgstr "" msgid "pgr_TSP" msgstr "" -msgid "pgr_aStar" -msgstr "" - -msgid "New Functions" -msgstr "" - msgid "pgr_eucledianTSP" msgstr "" -msgid "pgr_withPointsCostMatrix" -msgstr "" - -msgid "pgr_maxFlowPushRelabel(one to one)" +msgid "pgr_maxFlowPushRelabel(One to One)" msgstr "" -msgid "pgr_maxFlowPushRelabel(one to many)" +msgid "pgr_maxFlowPushRelabel(One to Many)" msgstr "" -msgid "pgr_maxFlowPushRelabel(many to one)" +msgid "pgr_maxFlowPushRelabel(Many to One)" msgstr "" -msgid "pgr_maxFlowPushRelabel(many to many)" +msgid "pgr_maxFlowPushRelabel(Many to Many)" msgstr "" -msgid "pgr_maxFlowEdmondsKarp(one to one)" +msgid "pgr_maxFlowEdmondsKarp(One to One)" msgstr "" -msgid "pgr_maxFlowEdmondsKarp(one to many)" +msgid "pgr_maxFlowEdmondsKarp(One to Many)" msgstr "" -msgid "pgr_maxFlowEdmondsKarp(many to one)" +msgid "pgr_maxFlowEdmondsKarp(Many to One)" msgstr "" -msgid "pgr_maxFlowEdmondsKarp(many to many)" +msgid "pgr_maxFlowEdmondsKarp(Many to Many)" msgstr "" -msgid "pgr_maxFlowBoykovKolmogorov (one to one)" +msgid "pgr_maxFlowBoykovKolmogorov (One to One)" msgstr "" -msgid "pgr_maxFlowBoykovKolmogorov (one to many)" +msgid "pgr_maxFlowBoykovKolmogorov (One to Many)" msgstr "" -msgid "pgr_maxFlowBoykovKolmogorov (many to one)" +msgid "pgr_maxFlowBoykovKolmogorov (Many to One)" msgstr "" -msgid "pgr_maxFlowBoykovKolmogorov (many to many)" +msgid "pgr_maxFlowBoykovKolmogorov (Many to Many)" msgstr "" msgid "pgr_maximumCardinalityMatching" @@ -17423,7 +17205,7 @@ msgstr "" msgid "pgr_tsp - use pgr_TSP or pgr_eucledianTSP instead" msgstr "" -msgid "pgr_astar - use pgr_aStar instead" +msgid "pgr_aStar - use pgr_aStar instead" msgstr "" msgid "pgr_flip_edges" @@ -17510,6 +17292,9 @@ msgstr "" msgid "Improvements" msgstr "" +msgid "pgr_nodeNetwork" +msgstr "" + msgid "Adding a row_where and outall optional parameters" msgstr "" @@ -17522,43 +17307,43 @@ msgstr "" msgid "pgr_Johnson" msgstr "" -msgid "pgr_dijkstraCost(one to one)" +msgid "pgr_dijkstraCost(One to One)" msgstr "" -msgid "pgr_dijkstraCost(one to many)" +msgid "pgr_dijkstraCost(One to Many)" msgstr "" -msgid "pgr_dijkstraCost(many to one)" +msgid "pgr_dijkstraCost(Many to One)" msgstr "" -msgid "pgr_dijkstraCost(many to many)" +msgid "pgr_dijkstraCost(Many to Many)" msgstr "" msgid "Proposed Functionality" msgstr "" -msgid "pgr_withPoints(one to one)" +msgid "pgr_withPoints(One to One)" msgstr "" -msgid "pgr_withPoints(one to many)" +msgid "pgr_withPoints(One to Many)" msgstr "" -msgid "pgr_withPoints(many to one)" +msgid "pgr_withPoints(Many to One)" msgstr "" -msgid "pgr_withPoints(many to many)" +msgid "pgr_withPoints(Many to Many)" msgstr "" -msgid "pgr_withPointsCost(one to one)" +msgid "pgr_withPointsCost(One to One)" msgstr "" -msgid "pgr_withPointsCost(one to many)" +msgid "pgr_withPointsCost(One to Many)" msgstr "" -msgid "pgr_withPointsCost(many to one)" +msgid "pgr_withPointsCost(Many to One)" msgstr "" -msgid "pgr_withPointsCost(many to many)" +msgid "pgr_withPointsCost(Many to Many)" msgstr "" msgid "pgr_withPointsDD(single vertex)" @@ -17567,9 +17352,6 @@ msgstr "" msgid "pgr_withPointsDD(multiple vertices)" msgstr "" -msgid "pgr_withPointsKSP" -msgstr "" - msgid "pgr_dijkstraVia" msgstr "" @@ -17603,25 +17385,10 @@ msgid "" "q=is%3Aissue+milestone%3A%22Release+2.1.0%22+is%3Aclosed>`_ on Github." msgstr "" -msgid "pgr_dijkstra(one to many)" -msgstr "" - -msgid "pgr_dijkstra(many to one)" -msgstr "" - -msgid "pgr_dijkstra(many to many)" -msgstr "" - -msgid "pgr_drivingDistance(multiple vertices)" -msgstr "" - msgid "Refactored" msgstr "" -msgid "pgr_dijkstra(one to one)" -msgstr "" - -msgid "pgr_drivingDistance(single vertex)" +msgid "pgr_dijkstra(One to One)" msgstr "" msgid "" @@ -17960,8 +17727,8 @@ msgstr "" msgid "" "The documentation provides very simple example queries based on a small " -"sample network that resembles a city. To be able to execute the mayority of " -"the examples queries, follow the instructions bellow." +"sample network that resembles a city. To be able to execute the majority of " +"the examples queries, follow the instructions below." msgstr "" msgid "Main graph" @@ -17975,7 +17742,8 @@ msgstr "" msgid "" "Information known at this point is the geometry of the edges, cost values, " -"cpacity values, category values and some locations that are not in the graph." +"capacity values, category values and some locations that are not in the " +"graph." msgstr "" msgid "" @@ -17983,14 +17751,11 @@ msgid "" "that everything else is calculated." msgstr "" -msgid "Edges" -msgstr "" - msgid "" "The database design for the documentation of pgRouting, keeps in the same " "row 2 segments, one in the direction of the geometry and the second in the " -"oposite direction. Therfore some information has the ``reverse_`` prefix " -"which corresponds to the segment on the oposite direction of the geometry." +"opposite direction. Therefore some information has the ``reverse_`` prefix " +"which corresponds to the segment on the opposite direction of the geometry." msgstr "" msgid "Identifier of the starting vertex of the geometry ``geom``." @@ -18021,7 +17786,7 @@ msgid ":math:`x` coordinate of the starting vertex of the geometry." msgstr "" msgid "" -"For convinience it is saved on the table but can be calculated as " +"For convenience it is saved on the table but can be calculated as " "``ST_X(ST_StartPoint(geom))``." msgstr "" @@ -18029,7 +17794,7 @@ msgid ":math:`y` coordinate of the ending vertex of the geometry." msgstr "" msgid "" -"For convinience it is saved on the table but can be calculated as " +"For convenience it is saved on the table but can be calculated as " "``ST_Y(ST_EndPoint(geom))``." msgstr "" @@ -18040,8 +17805,8 @@ msgid "Starting on PostgreSQL 12::" msgstr "" msgid "" -"Optionally indexes on different columns can be created. The recomendation is " -"to have" +"Optionally indexes on different columns can be created. The recommendation " +"is to have" msgstr "" msgid "``id`` indexed." @@ -18052,7 +17817,7 @@ msgid "" msgstr "" msgid "" -"``geom`` indexed to speed up gemetry processes that might be needed in the " +"``geom`` indexed to speed up geometry processes that might be needed in the " "front end." msgstr "" @@ -18121,7 +17886,7 @@ msgid "" msgstr "" msgid "" -"For convinence of this documentations, some combinations will be stored on a " +"For convenience of this documentation, some combinations will be stored on a " "table:" msgstr "" @@ -18331,8 +18096,8 @@ msgid "" msgstr "" msgid "" -"pgRouting suplies some functions to create a routing topology and to analyze " -"the topology." +"pgRouting supplies some functions to create a routing topology and to " +"analyze the topology." msgstr "" msgid "Additional functions to create a graph:" @@ -18352,7 +18117,7 @@ msgstr "" msgid "Traversal - Family of functions" msgstr "" -msgid "Aditionaly there are 2 categories under this family" +msgid "Additionally there are 2 categories under this family" msgstr "" msgid "Via - Category" @@ -18367,7 +18132,7 @@ msgid "" msgstr "" msgid "" -"In other words, find a continuos route that visits all the vertices in the " +"In other words, find a continuous route that visits all the vertices in the " "order given." msgstr "" diff --git a/locale/en/LC_MESSAGES/index.po b/locale/en/LC_MESSAGES/index.po index e7cda20a63..e22cba7dc7 100644 --- a/locale/en/LC_MESSAGES/index.po +++ b/locale/en/LC_MESSAGES/index.po @@ -1,12 +1,12 @@ # SOME DESCRIPTIVE TITLE. -# Copyright (C) pgRouting Contributors - Version v3.7.0 +# Copyright (C) pgRouting Contributors - Version v3.8 # This file is distributed under the same license as the pgRouting package. # FIRST AUTHOR , 2022. # #, fuzzy msgid "" msgstr "" -"Project-Id-Version: pgRouting v3.4.0-dev\n" +"Project-Id-Version: pgRouting v3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-06-25 12:55-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" @@ -16,480 +16,3 @@ msgstr "" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.9.1\n" - -#: ../../build/doc/index.rst:12 -msgid "" -"**Supported versions:** `Latest " -"`__ (`3.4 " -"`__) `3.3 " -"`__ `3.2 " -"`__ `3.1 " -"`__ `3.0 " -"`__" -msgstr "" - -#: ../../build/doc/index.rst:19 -msgid "" -"**Unsupported versions:** `2.6 " -"`__ `2.5 " -"`__ `2.4 " -"`__ `2.3 " -"`__ `2.2 " -"`__ `2.1 " -"`__ `2.0 " -"`__" -msgstr "" - -#: ../../build/doc/index.rst:30 -msgid "Table of Contents" -msgstr "" - -#: ../../build/doc/index.rst:32 -msgid "" -"pgRouting extends the `PostGIS `__/`PostgreSQL " -"`__ geospatial database to provide geospatial" -" routing and other network analysis functionality." -msgstr "" - -#: ../../build/doc/index.rst:36 -msgid "This is the manual for pgRouting |release|." -msgstr "" - -msgid "Creative Commons Attribution-Share Alike 3.0 License" -msgstr "" - -#: ../../build/doc/index.rst:42 -msgid "" -"The pgRouting Manual is licensed under a `Creative Commons Attribution-" -"Share Alike 3.0 License `_. Feel free to use this material any way you like, but we ask " -"that you attribute credit to the pgRouting Project and wherever possible," -" a link back to https://pgrouting.org. For other licenses used in " -"pgRouting see the :ref:`license` page." -msgstr "" - -#: ../../build/doc/index.rst:50 -msgid "General" -msgstr "" - -#: ../../build/doc/index.rst:60 -msgid ":doc:`sampledata` that is used in the examples of this manual." -msgstr "" - -#: ../../build/doc/index.rst:68 -msgid "Pgrouting Concepts" -msgstr "" - -#: ../../build/doc/index.rst:77 -msgid ":doc:`routingFunctions`" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:4 -msgid ":doc:`allpairs-family`" -msgstr "" - -#: ../../build/doc/allpairs-family.rst:3 -msgid ":doc:`pgr_floydWarshall` - Floyd-Warshall's algorithm." -msgstr "" - -#: ../../build/doc/allpairs-family.rst:4 -msgid ":doc:`pgr_johnson` - Johnson's algorithm" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:10 -msgid ":doc:`aStar-family`" -msgstr "" - -#: ../../build/doc/aStar-family.rst:3 -msgid ":doc:`pgr_aStar` - A* algorithm for the shortest path." -msgstr "" - -#: ../../build/doc/aStar-family.rst:4 -msgid ":doc:`pgr_aStarCost` - Get the aggregate cost of the shortest paths." -msgstr "" - -#: ../../build/doc/aStar-family.rst:5 -msgid ":doc:`pgr_aStarCostMatrix` - Get the cost matrix of the shortest paths." -msgstr "" - -#: ../../build/doc/routingFunctions.rst:17 -msgid ":doc:`bdAstar-family`" -msgstr "" - -#: ../../build/doc/bdAstar-family.rst:3 -msgid ":doc:`pgr_bdAstar` - Bidirectional A* algorithm for obtaining paths." -msgstr "" - -#: ../../build/doc/bdAstar-family.rst:4 -msgid "" -":doc:`pgr_bdAstarCost` - Bidirectional A* algorithm to calculate the cost" -" of the paths." -msgstr "" - -#: ../../build/doc/bdAstar-family.rst:6 -msgid "" -":doc:`pgr_bdAstarCostMatrix` - Bidirectional A* algorithm to calculate a " -"cost matrix of paths." -msgstr "" - -#: ../../build/doc/routingFunctions.rst:23 -msgid ":doc:`bdDijkstra-family`" -msgstr "" - -#: ../../build/doc/bdDijkstra-family.rst:3 -msgid "" -":doc:`pgr_bdDijkstra` - Bidirectional Dijkstra algorithm for the shortest" -" paths." -msgstr "" - -#: ../../build/doc/bdDijkstra-family.rst:5 -msgid "" -":doc:`pgr_bdDijkstraCost` - Bidirectional Dijkstra to calculate the cost " -"of the shortest paths" -msgstr "" - -#: ../../build/doc/bdDijkstra-family.rst:7 -msgid "" -":doc:`pgr_bdDijkstraCostMatrix` - Bidirectional Dijkstra algorithm to " -"create a matrix of costs of the shortest paths." -msgstr "" - -#: ../../build/doc/routingFunctions.rst:29 -msgid ":doc:`components-family`" -msgstr "" - -#: ../../build/doc/components-family.rst:3 -msgid "" -":doc:`pgr_connectedComponents` - Connected components of an undirected " -"graph." -msgstr "" - -#: ../../build/doc/components-family.rst:4 -msgid "" -":doc:`pgr_strongComponents` - Strongly connected components of a directed" -" graph." -msgstr "" - -#: ../../build/doc/components-family.rst:6 -msgid "" -":doc:`pgr_biconnectedComponents` - Biconnected components of an " -"undirected graph." -msgstr "" - -#: ../../build/doc/components-family.rst:8 -msgid "" -":doc:`pgr_articulationPoints` - Articulation points of an undirected " -"graph." -msgstr "" - -#: ../../build/doc/components-family.rst:9 -msgid ":doc:`pgr_bridges` - Bridges of an undirected graph." -msgstr "" - -#: ../../build/doc/routingFunctions.rst:35 -msgid ":doc:`contraction-family`" -msgstr "" - -#: ../../build/doc/contraction-family.rst:3 -msgid ":doc:`pgr_contraction`" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:41 -msgid ":doc:`dijkstra-family`" -msgstr "" - -#: ../../build/doc/dijkstra-family.rst:3 -msgid ":doc:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths." -msgstr "" - -#: ../../build/doc/dijkstra-family.rst:4 -msgid ":doc:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths." -msgstr "" - -#: ../../build/doc/dijkstra-family.rst:5 -msgid ":doc:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix." -msgstr "" - -#: ../../build/doc/dijkstra-family.rst:6 -msgid "" -":doc:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament " -"information." -msgstr "" - -#: ../../build/doc/dijkstra-family.rst:8 -msgid "" -":doc:`pgr_KSP` - Use Yen algorithm with pgr_dijkstra to get the K " -"shortest paths." -msgstr "" - -#: ../../build/doc/routingFunctions.rst:47 -msgid ":doc:`flow-family`" -msgstr "" - -#: ../../build/doc/flow-family.rst:3 -msgid "" -":doc:`pgr_maxFlow` - Only the Max flow calculation using Push and Relabel" -" algorithm." -msgstr "" - -#: ../../build/doc/flow-family.rst:5 -msgid "" -":doc:`pgr_boykovKolmogorov` - Boykov and Kolmogorov with details of flow " -"on edges." -msgstr "" - -#: ../../build/doc/flow-family.rst:7 -msgid "" -":doc:`pgr_edmondsKarp` - Edmonds and Karp algorithm with details of flow " -"on edges." -msgstr "" - -#: ../../build/doc/flow-family.rst:9 -msgid "" -":doc:`pgr_pushRelabel` - Push and relabel algorithm with details of flow " -"on edges." -msgstr "" - -#: ../../build/doc/flow-family.rst:11 -msgid "Applications" -msgstr "" - -#: ../../build/doc/flow-family.rst:13 -msgid "" -":doc:`pgr_edgeDisjointPaths` - Calculates edge disjoint paths between two" -" groups of vertices." -msgstr "" - -#: ../../build/doc/flow-family.rst:15 -msgid "" -":doc:`pgr_maxCardinalityMatch` - Calculates a maximum cardinality " -"matching in a graph." -msgstr "" - -#: ../../build/doc/routingFunctions.rst:53 -#: ../../build/doc/spanningTree-family.rst:3 -msgid ":doc:`kruskal-family`" -msgstr "" - -#: ../../build/doc/kruskal-family.rst:3 -msgid ":doc:`pgr_kruskal`" -msgstr "" - -#: ../../build/doc/BFS-category.rst:3 ../../build/doc/kruskal-family.rst:4 -msgid ":doc:`pgr_kruskalBFS`" -msgstr "" - -#: ../../build/doc/kruskal-family.rst:5 -msgid ":doc:`pgr_kruskalDD`" -msgstr "" - -#: ../../build/doc/DFS-category.rst:3 ../../build/doc/kruskal-family.rst:6 -msgid ":doc:`pgr_kruskalDFS`" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:59 -#: ../../build/doc/spanningTree-family.rst:4 -msgid ":doc:`prim-family`" -msgstr "" - -#: ../../build/doc/prim-family.rst:3 -msgid ":doc:`pgr_prim`" -msgstr "" - -#: ../../build/doc/BFS-category.rst:4 ../../build/doc/prim-family.rst:4 -msgid ":doc:`pgr_primBFS`" -msgstr "" - -#: ../../build/doc/prim-family.rst:5 -msgid ":doc:`pgr_primDD`" -msgstr "" - -#: ../../build/doc/DFS-category.rst:4 ../../build/doc/prim-family.rst:6 -msgid ":doc:`pgr_primDFS`" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:65 -msgid ":doc:`reference`" -msgstr "" - -#: ../../build/doc/reference.rst:3 -msgid ":doc:`pgr_version`" -msgstr "" - -#: ../../build/doc/reference.rst:4 -msgid ":doc:`pgr_full_version`" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:71 -msgid ":doc:`topology-functions`" -msgstr "" - -#: ../../build/doc/topology-functions.rst:3 -msgid "" -"The following functions modify the database directly therefore the user " -"must have special permissions given by the administrators to use them." -msgstr "" - -#: ../../build/doc/topology-functions.rst:6 -msgid ":doc:`pgr_createTopology` - create a topology based on the geometry." -msgstr "" - -#: ../../build/doc/topology-functions.rst:7 -msgid "" -":doc:`pgr_createVerticesTable` - reconstruct the vertices table based on " -"the source and target information." -msgstr "" - -#: ../../build/doc/topology-functions.rst:9 -msgid "" -":doc:`pgr_analyzeGraph` - to analyze the edges and vertices of the edge " -"table." -msgstr "" - -#: ../../build/doc/topology-functions.rst:11 -msgid ":doc:`pgr_analyzeOneWay` - to analyze directionality of the edges." -msgstr "" - -#: ../../build/doc/topology-functions.rst:12 -msgid ":doc:`pgr_nodeNetwork` -to create nodes to a not noded edge table." -msgstr "" - -#: ../../build/doc/routingFunctions.rst:77 -msgid ":doc:`TSP-family`" -msgstr "" - -#: ../../build/doc/TSP-family.rst:3 -msgid ":doc:`pgr_TSP` - When input is given as matrix cell information." -msgstr "" - -#: ../../build/doc/TSP-family.rst:4 -msgid ":doc:`pgr_TSPeuclidean` - When input are coordinates." -msgstr "" - -#: ../../build/doc/routingFunctions.rst:83 -msgid ":doc:`pgr_trsp` - Turn Restriction Shortest Path (TRSP)" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:87 -msgid "Functions by categories" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:89 -msgid ":doc:`cost-category`" -msgstr "" - -#: ../../build/doc/cost-category.rst:3 -msgid ":doc:`pgr_aStarCost`" -msgstr "" - -#: ../../build/doc/cost-category.rst:4 -msgid ":doc:`pgr_bdAstarCost`" -msgstr "" - -#: ../../build/doc/cost-category.rst:5 -msgid ":doc:`pgr_dijkstraCost`" -msgstr "" - -#: ../../build/doc/cost-category.rst:6 -msgid ":doc:`pgr_bdDijkstraCost`" -msgstr "" - -#: ../../build/doc/cost-category.rst:7 -msgid ":doc:`pgr_dijkstraNearCost`" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:95 -msgid ":doc:`costMatrix-category`" -msgstr "" - -#: ../../build/doc/costMatrix-category.rst:3 -msgid ":doc:`pgr_aStarCostMatrix`" -msgstr "" - -#: ../../build/doc/costMatrix-category.rst:4 -msgid ":doc:`pgr_bdAstarCostMatrix`" -msgstr "" - -#: ../../build/doc/costMatrix-category.rst:5 -#: ../../build/doc/costMatrix-category.rst:7 -msgid ":doc:`pgr_bdDijkstraCostMatrix`" -msgstr "" - -#: ../../build/doc/costMatrix-category.rst:6 -msgid ":doc:`pgr_dijkstraCostMatrix`" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:102 -msgid ":doc:`drivingDistance-category`" -msgstr "" - -#: ../../build/doc/drivingDistance-category.rst:3 -msgid "" -":doc:`pgr_drivingDistance` - Driving Distance based on Dijkstra's " -"algorithm" -msgstr "" - -#: ../../build/doc/drivingDistance-category.rst:4 -msgid ":doc:`pgr_primDD` - Driving Distance based on Prim's algorithm" -msgstr "" - -#: ../../build/doc/drivingDistance-category.rst:5 -msgid ":doc:`pgr_kruskalDD` - Driving Distance based on Kruskal's algorithm" -msgstr "" - -#: ../../build/doc/drivingDistance-category.rst:6 -msgid "Post pocessing" -msgstr "" - -#: ../../build/doc/drivingDistance-category.rst:8 -msgid ":doc:`pgr_alphaShape` - Alpha shape computation" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:108 -msgid ":doc:`KSP-category`" -msgstr "" - -#: ../../build/doc/KSP-category.rst:3 -msgid ":doc:`pgr_KSP` - Yen's algorithm based on pgr_dijkstra" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:114 -msgid ":doc:`spanningTree-family`" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:120 -msgid ":doc:`BFS-category`" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:126 -msgid ":doc:`DFS-category`" -msgstr "" - -#: ../../build/doc/index.rst:91 -msgid "Available Functions but not official pgRouting functions" -msgstr "" - -#: ../../build/doc/index.rst:93 -msgid ":doc:`proposed`" -msgstr "" - -#: ../../build/doc/index.rst:94 -msgid ":doc:`experimental`" -msgstr "" - -#: ../../build/doc/index.rst:105 -msgid ":doc:`release_notes`" -msgstr "" - -#: ../../build/doc/index.rst:119 -msgid "Indices and tables" -msgstr "" - -#: ../../build/doc/index.rst:120 -msgid ":ref:`genindex`" -msgstr "" - -#: ../../build/doc/index.rst:121 -msgid ":ref:`search`" -msgstr "" - diff --git a/locale/en/LC_MESSAGES/pgrouting_doc_strings.po b/locale/en/LC_MESSAGES/pgrouting_doc_strings.po index b1d5880009..c78ccfcf03 100644 --- a/locale/en/LC_MESSAGES/pgrouting_doc_strings.po +++ b/locale/en/LC_MESSAGES/pgrouting_doc_strings.po @@ -1,21 +1,21 @@ # SOME DESCRIPTIVE TITLE. -# Copyright (C) pgRouting Contributors - Version v3.7.0 +# Copyright (C) pgRouting Contributors - Version v3.8 # This file is distributed under the same license as the pgRouting package. # FIRST AUTHOR , 2022. # #, fuzzy msgid "" msgstr "" -"Project-Id-Version: pgRouting v3.6.0-dev\n" +"Project-Id-Version: pgRouting v3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-17 00:50+0000\n" +"POT-Creation-Date: 2025-04-04 16:45+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.16.0\n" +"Generated-By: Babel 2.17.0\n" msgid "BFS - Category" msgstr "" @@ -294,9 +294,6 @@ msgstr "" msgid ":doc:`pgr_primDFS`" msgstr "" -msgid "Proposed" -msgstr "" - msgid "Proposed functions for next mayor release." msgstr "" @@ -364,9 +361,6 @@ msgid "" "functionality to the new signatures or replacement functions." msgstr "" -msgid "Experimental" -msgstr "" - msgid "Possible server crash" msgstr "" @@ -409,7 +403,7 @@ msgstr "" msgid "Documentation examples might need to be automatically generated." msgstr "" -msgid "Might need a lot of feedback from the comunity." +msgid "Might need a lot of feedback from the community." msgstr "" msgid "Might depend on a proposed function of pgRouting" @@ -655,7 +649,7 @@ msgid "References" msgstr "" msgid "" -"`Boost's metric appro's metric approximation " +"`Boost: metric TSP approx " "`__" msgstr "" @@ -667,7 +661,7 @@ msgid "" "`__" msgstr "" -msgid "Vehicle Routing Functions - Category (Experimental)" +msgid "Vehicle Routing Functions - Category" msgstr "" msgid "Pickup and delivery problem" @@ -1119,6 +1113,7 @@ msgstr "" msgid "``vehicle_seq``" msgstr "" +#, python-brace-format msgid "" "Sequential value starting from **1** for current vehicles. The " ":math:`n_{th}` vehicle in the solution." @@ -1148,6 +1143,7 @@ msgstr "" msgid "INTEGER" msgstr "" +#, python-brace-format msgid "" "Sequential value starting from **1** for the stops made by the current " "vehicle. The :math:`m_{th}` stop of the current vehicle." @@ -1576,6 +1572,7 @@ msgstr "" msgid ":math:`10 m/s`" msgstr "" +#, python-brace-format msgid ":math:`\\frac{1}{10m/s}`" msgstr "" @@ -1588,6 +1585,7 @@ msgstr "" msgid ":math:`600 m/min`" msgstr "" +#, python-brace-format msgid ":math:`\\frac{1}{600m/min}`" msgstr "" @@ -1603,6 +1601,7 @@ msgstr "" msgid ":math:`36 km/hr`" msgstr "" +#, python-brace-format msgid ":math:`\\frac{1}{36 km/hr}`" msgstr "" @@ -1615,7 +1614,7 @@ msgstr "" msgid "https://en.wikipedia.org/wiki/Vehicle_routing_problem" msgstr "" -msgid "The queries use the :doc:`sampledata` network." +msgid ":doc:`sampledata`" msgstr "" msgid "A* - Family of functions" @@ -1777,7 +1776,9 @@ msgstr "" msgid ":doc:`bdAstar-family`" msgstr "" -msgid "https://www.boost.org/libs/graph/doc/astar_search.html" +msgid "" +"`Boost: A* search " +"`__" msgstr "" msgid "https://en.wikipedia.org/wiki/A*_search_algorithm" @@ -1914,6 +1915,7 @@ msgstr "" msgid "DENSITY" msgstr "" +#, python-brace-format msgid "is the density of the data :math:`\\dfrac{E}{V \\times (V-1)}`." msgstr "" @@ -2581,15 +2583,12 @@ msgid "" "ending vertex:" msgstr "" -msgid "It is expected to terminate faster than pgr_astar" +msgid "It is expected to terminate faster than pgr_aStar" msgstr "" msgid ":doc:`aStar-family`" msgstr "" -msgid "Previous versions of this page" -msgstr "" - msgid "Bidirectional Dijkstra - Family of functions" msgstr "" @@ -2732,29 +2731,7 @@ msgstr "" msgid "Identifier of the color of the edge." msgstr "" -msgid "" -"`Boost: Sequential Vertex Coloring algorithm documentation " -"`__" -msgstr "" - -msgid "" -"`Wikipedia: Graph coloring " -"`__" -msgstr "" - -msgid "" -"`Boost: is_bipartite " -"`__" -msgstr "" - -msgid "" -"`Wikipedia: bipartite graph " -"`__" -msgstr "" - -msgid "" -"`Boost: Edge Coloring Algorithm documentation " -"`__" +msgid "`Boost: `__" msgstr "" msgid "Components - Family of functions" @@ -2792,6 +2769,9 @@ msgstr "" msgid ":doc:`pgr_contraction`" msgstr "" +msgid ":doc:`pgr_contractionDeadEnd`" +msgstr "" + msgid "" "In large graphs, like the road graphs, or electric networks, graph " "contraction can be used to speed up some graph algorithms. Contraction " @@ -2822,1615 +2802,1579 @@ msgid "" " of times they are to be executed." msgstr "" -msgid "Contraction of the leaf nodes of the graph." +msgid "https://www.cs.cmu.edu/afs/cs/academic/class/15210-f12/www/lectures/lecture16.pdf" msgstr "" -msgid "Dead end" +msgid "https://algo2.iti.kit.edu/documents/routeplanning/geisberger_dipl.pdf" msgstr "" -msgid "A node is considered a **dead end** node when" +msgid "Cost - Category" msgstr "" -msgid "On undirected graphs:" +msgid ":doc:`pgr_aStarCost`" msgstr "" -msgid "The number of adjacent vertices is 1." +msgid ":doc:`pgr_bdAstarCost`" msgstr "" -msgid "On directed graphs:" +msgid ":doc:`pgr_dijkstraCost`" msgstr "" -msgid "There are no outgoing edges and has at least one incoming edge." +msgid ":doc:`pgr_bdDijkstraCost`" msgstr "" -msgid "There are no incoming edges and has at least one outgoing edge." +msgid ":doc:`pgr_dijkstraNearCost`" msgstr "" -msgid "" -"When the conditions are true then the `Operation: Dead End Contraction`_ " -"can be done." +msgid ":doc:`pgr_withPointsCost`" msgstr "" -msgid "Dead end vertex on undirected graph" +msgid "Each function works as part of the family it belongs to." msgstr "" -msgid "The green nodes are `dead end`_ nodes" +msgid "" +"Returns the sum of the costs of the shortest path of each pair " +"combination of nodes requested." msgstr "" -msgid "The blue nodes have an unlimited number of edges." +msgid "" +"Let be the case the values returned are stored in a table, so the unique " +"index would be the pair: ``(start_vid, end_vid)``." msgstr "" -msgid "Node" +msgid "" +"Depending on the function and its parameters, the results can be " +"symmetric." msgstr "" -msgid "Adjecent nodes" +msgid "" +"The **aggregate cost** of :math:`(u, v)` is the same as for :math:`(v, " +"u)`." msgstr "" -msgid "Number of adjacent nodes" +msgid "Any duplicated value in the start or end vertex identifiers are ignored." msgstr "" -msgid ":math:`a`" +msgid "The returned values are ordered:" msgstr "" -msgid ":math:`\\{u\\}`" +msgid "``start_vid`` ascending" msgstr "" -msgid ":math:`b`" +msgid "``end_vid`` ascending" msgstr "" -msgid ":math:`\\{v\\}`" +msgid "Cost Matrix - Category" msgstr "" -msgid "Dead end vertex on directed graph" +msgid ":doc:`pgr_aStarCostMatrix`" msgstr "" -msgid "The blue nodes have an unlimited number of incoming and/or outgoing edges." +msgid ":doc:`pgr_dijkstraCostMatrix`" msgstr "" -msgid "Number of incoming edges" +msgid ":doc:`pgr_bdAstarCostMatrix`" msgstr "" -msgid "Number of outgoing edges" +msgid ":doc:`pgr_bdDijkstraCostMatrix`" msgstr "" -msgid ":math:`c`" +msgid ":doc:`pgr_withPointsCostMatrix`" msgstr "" -msgid ":math:`\\{v, w\\}`" +msgid "" +":doc:`TSP-family` needs as input a symmetric cost matrix and no edge `(u," +" v)` must value :math:`\\infty`." msgstr "" -msgid "2" +msgid "This collection of functions will return a cost matrix in form of a table." msgstr "" -msgid ":math:`d`" +msgid "Can be used as input to :doc:`pgr_TSP`." msgstr "" -msgid ":math:`\\{x\\}`" +msgid "" +"Use directly when the resulting matrix is symmetric and there is no " +":math:`\\infty` value." msgstr "" -msgid ":math:`e`" +msgid "It will be the users responsibility to make the matrix symmetric." msgstr "" -msgid ":math:`\\{x, y\\}`" +msgid "By using geometric or harmonic average of the non symmetric values." msgstr "" -msgid "" -"From above, nodes :math:`\\{a, b, d\\}` are dead ends because the number " -"of adjacent vertices is 1. No further checks are needed for those nodes." +msgid "By using max or min the non symmetric values." msgstr "" msgid "" -"On the following table, nodes :math:`\\{c, e\\}` because the even that " -"the number of adjacent vertices is not 1 for" -msgstr "" - -msgid "Operation: Dead End Contraction" +"By setting the upper triangle to be the mirror image of the lower " +"triangle." msgstr "" msgid "" -"The dead end contraction will stop until there are no more dead end " -"nodes. For example from the following graph where :math:`w` is the `dead " -"end`_ node:" +"By setting the lower triangle to be the mirror image of the upper " +"triangle." msgstr "" -msgid "" -"After contracting :math:`w`, node :math:`v` is now a `dead end`_ node and" -" is contracted:" +msgid "It is also the users responsibility to fix an :math:`\\infty` value." msgstr "" msgid "" -"After contracting :math:`v`, stop. Node :math:`u` has the information of " -"nodes that were contrcted." +"Returns the sum of the costs of the shortest path for pair combination of" +" nodes in the graph." msgstr "" -msgid "Node :math:`u` has the information of nodes that were contracted." +msgid "When the starting vertex and ending vertex are the same, there is no path." msgstr "" -msgid "In the algorithm, linear contraction is represented by 2." +msgid "The aggregate cost in the non included values `(v, v)` is `0`." msgstr "" -msgid "Linear" +msgid "" +"When the starting vertex and ending vertex are the different and there is" +" no path." msgstr "" -msgid "In case of an undirected graph, a node is considered a `linear` node when" +msgid "The aggregate cost in the non included values `(u, v)` is :math:`\\infty`." msgstr "" -msgid "The number of adjacent vertices is 2." +msgid "Let be the case the values returned are stored in a table:" msgstr "" -msgid "In case of a directed graph, a node is considered a `linear` node when" +msgid "The unique index would be the pair: ``(start_vid, end_vid)``." msgstr "" -msgid "Linearity is symmetrical" +msgid "The aggregate cost of `(u, v)` is the same as for `(v, u)`." msgstr "" -msgid "Linear vertex on undirected graph" +msgid "Any duplicated value in the **start vids** are ignored." msgstr "" -msgid "The green nodes are `linear`_ nodes" +msgid "Used in:" msgstr "" -msgid "The blue nodes have an unlimited number of incoming and outgoing edges." +msgid "`Edges SQL`_ as described below" msgstr "" -msgid "Undirected" +msgid "**start vids**" msgstr "" -msgid ":math:`v`" +msgid "``ARRAY[BIGINT]``" msgstr "" -msgid ":math:`\\{u, w\\}`" +msgid "Array of identifiers of starting vertices." msgstr "" -msgid "Linear vertex on directed graph" +msgid "`Points SQL`_" msgstr "" -msgid "The white node is not linear because the linearity is not symetrical." +msgid "`Points SQL`_ as described below" msgstr "" -msgid "It is possible to go :math:`y \\rightarrow c \\rightarrow z`" +msgid "Points SQL" msgstr "" -msgid "It's not possible to go :math:`z \\rightarrow c \\rightarrow y`" +msgid "``pid``" msgstr "" -msgid "Is symmetrical?" +msgid "**value**" msgstr "" -msgid ":math:`\\{u, v\\}`" +msgid "Identifier of the point." msgstr "" -msgid "yes" +msgid "Use with positive value, as internally will be converted to negative value" msgstr "" -msgid ":math:`\\{w, x\\}`" +msgid "If column is present, it can not be NULL." msgstr "" -msgid ":math:`\\{y, z\\}`" +msgid "" +"If column is not present, a sequential negative **value** will be given " +"automatically." msgstr "" -msgid "no" +msgid "Identifier of the \"closest\" edge to the point." msgstr "" -msgid "Operation: Linear Contraction" +msgid "``fraction``" msgstr "" msgid "" -"The linear contraction will stop when there are no more linear nodes. For" -" example from the following graph where :math:`v` and :math:`w` are " -"`linear`_ nodes:" -msgstr "" - -msgid "Contracting :math:`w`," +"Value in <0,1> that indicates the relative postition from the first end " +"point of the edge." msgstr "" -msgid "The vertex :math:`w` is removed from the graph" +msgid "``side``" msgstr "" -msgid "" -"The edges :math:`v \\rightarrow w` and :math:`w \\rightarrow z` are " -"removed from the graph." +msgid "``CHAR``" msgstr "" -msgid "" -"A new edge :math:`v \\rightarrow z` is inserted represented with red " -"color." +msgid "``b``" msgstr "" -msgid "Contracting :math:`v`:" +msgid "Value in [``b``, ``r``, ``l``, ``NULL``] indicating if the point is:" msgstr "" -msgid "The vertex :math:`v` is removed from the graph" +msgid "In the right ``r``," msgstr "" -msgid "" -"The edges :math:`u \\rightarrow v` and :math:`v \\rightarrow z` are " -"removed from the graph." +msgid "In the left ``l``," msgstr "" -msgid "" -"A new edge :math:`u \\rightarrow z` is inserted represented with red " -"color." +msgid "In both sides ``b``, ``NULL``" msgstr "" -msgid "" -"Edge :math:`u \\rightarrow z` has the information of nodes that were " -"contracted." +msgid ":doc:`TSP-family`" msgstr "" -msgid "The cycle" +msgid "Dijkstra - Family of functions" msgstr "" -msgid "" -"Contracting a graph, can be done with more than one operation. The order " -"of the operations affect the resulting contracted graph, after applying " -"one operation, the set of vertices that can be contracted by another " -"operation changes." +msgid ":doc:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths." msgstr "" -msgid "" -"This implementation, cycles ``max_cycles`` times through " -"``operations_order`` ." +msgid ":doc:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths." msgstr "" -msgid "Contracting sample data" +msgid ":doc:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix." msgstr "" msgid "" -"In this section, building and using a contracted graph will be shown by " -"example." +":doc:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament " +"information." msgstr "" -msgid "The :doc:`sampledata` for an undirected graph is used" +msgid "" +":doc:`pgr_KSP` - Use Yen algorithm with pgr_dijkstra to get the K " +"shortest paths." msgstr "" -msgid "a dead end operation first followed by a linear operation." +msgid ":doc:`pgr_dijkstraVia` - Get a route of a sequence of vertices." msgstr "" -msgid "Construction of the graph in the database" +msgid ":doc:`pgr_dijkstraNear` - Get the route to the nearest vertex." msgstr "" -msgid "Original Data" +msgid ":doc:`pgr_dijkstraNearCost` - Get the cost to the nearest vertex." msgstr "" msgid "" -"The following query shows the original data involved in the contraction " -"operation." -msgstr "" - -msgid "The original graph:" -msgstr "" - -msgid "Contraction results" +"Dijkstra's algorithm, conceived by Dutch computer scientist Edsger " +"Dijkstra in 1956. It is a graph search algorithm that solves the shortest" +" path problem for a graph with non-negative edge path costs, producing a " +"shortest path from a starting vertex to an ending vertex. This " +"implementation can be used with a directed graph and an undirected graph." msgstr "" -msgid "" -"The results do not represent the contracted graph. They represent the " -"changes done to the graph after applying the contraction algorithm." +msgid "Running time: :math:`O(| start\\ vids | * (V \\log V + E))`" msgstr "" -msgid "" -"Observe that vertices, for example, :math:`6` do not appear in the " -"results because it was not affected by the contraction algorithm." +msgid "The Dijkstra family functions are based on the Dijkstra algorithm." msgstr "" -msgid "After doing the dead end contraction operation:" +msgid "`Combinations SQL`_" msgstr "" -msgid "After doing the linear contraction operation to the graph above:" +msgid "`Combinations SQL`_ as described below" msgstr "" -msgid "The process to create the contraction graph on the database:" +msgid "**start vid**" msgstr "" -msgid "Add additional columns" +msgid "Identifier of the starting vertex of the path." msgstr "" -msgid "" -"Adding extra columns to the ``edge_table`` and " -"``edge_table_vertices_pgr`` tables, where:" +msgid "**end vid**" msgstr "" -msgid "``contracted_vertices``" +msgid "Identifier of the ending vertex of the path." msgstr "" -msgid "The vertices set belonging to the vertex/edge" +msgid "**end vids**" msgstr "" -msgid "``is_contracted``" +msgid "Array of identifiers of ending vertices." msgstr "" -msgid "On the vertex table" +msgid "Combinations SQL" msgstr "" -msgid "" -"when ``true`` the vertex is contracted, its not part of the contracted " -"graph." +msgid "Identifier of the departure vertex." msgstr "" -msgid "" -"when ``false`` the vertex is not contracted, its part of the contracted " -"graph." +msgid "Identifier of the arrival vertex." msgstr "" -msgid "``is_new``" +msgid "The problem definition (Advanced documentation)" msgstr "" -msgid "On the edge table" +msgid "Given the following query:" msgstr "" -msgid "" -"when ``true`` the edge was generated by the contraction algorithm. its " -"part of the contracted graph." +#, python-brace-format +msgid "pgr_dijkstra(:math:`sql, start_{vid}, end_{vid}, directed`)" msgstr "" +#, python-brace-format msgid "" -"when ``false`` the edge is an original edge, might be or not part of the " -"contracted graph." -msgstr "" - -msgid "Store contraction information" +"where :math:`sql = \\{(id_i, source_i, target_i, cost_i, " +"reverse\\_cost_i)\\}`" msgstr "" -msgid "Store the `contraction results`_ in a table" +msgid "and" msgstr "" -msgid "The vertex table update" +msgid ":math:`source = \\bigcup source_i`," msgstr "" -msgid "Use ``is_contracted`` column to indicate the vertices that are contracted." +msgid ":math:`target = \\bigcup target_i`," msgstr "" -msgid "" -"Fill ``contracted_vertices`` with the information from the results tha " -"belong to the vertices." +msgid "The graphs are defined as follows:" msgstr "" -msgid "The modified vertices table:" +msgid "Directed graph" msgstr "" -msgid "The edge table update" +msgid "The weighted directed graph, :math:`G_d(V,E)`, is defined by:" msgstr "" -msgid "Insert the new edges generated by pgr_contraction." +msgid "the set of vertices :math:`V`" msgstr "" -msgid "The modified ``edge_table``." +msgid ":math:`V = source \\cup target \\cup {start_{vid}} \\cup {end_{vid}}`" msgstr "" -msgid "The contracted graph" +msgid "the set of edges :math:`E`" msgstr "" -msgid "Vertices that belong to the contracted graph." +msgid "" +":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) " +"\\text{ when } cost >=0 \\} & \\quad \\text{if } reverse\\_cost = " +"\\varnothing \\\\ \\text{ } \\text{ } & \\quad \\text{ } \\\\ \\text{ } " +"\\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & \\quad " +"\\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) \\text{ " +"when } reverse\\_cost_i>=0 \\} & \\quad \\text{if } reverse\\_cost \\neq " +"\\varnothing \\\\ \\end{cases}`" msgstr "" -msgid "Edges that belong to the contracted graph." +msgid "Undirected graph" msgstr "" -msgid "Contracted graph" +msgid "The weighted undirected graph, :math:`G_u(V,E)`, is defined by:" msgstr "" -msgid "Using the contracted graph" -msgstr "" - -msgid "Using the contracted graph with ``pgr_dijkstra``" +msgid ":math:`V = source \\cup target \\cup {start_v{vid}} \\cup {end_{vid}}`" msgstr "" msgid "" -"There are three cases when calculating the shortest path between a given " -"source and target in a contracted graph:" -msgstr "" - -msgid "Case 1: Both source and target belong to the contracted graph." +":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) " +"\\text{ when } cost >=0 \\} & \\quad \\text{ } \\\\ \\cup \\{(target_i, " +"source_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ if } " +"reverse\\_cost = \\varnothing \\\\ \\text{ } \\text{ } & \\text{ } \\\\ " +"\\text{ } \\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & " +"\\text{ } \\\\ \\cup \\{(target_i, source_i, cost_i) \\text{ when } cost " +">=0 \\} & \\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) " +"\\text{ when } reverse\\_cost_i >=0)\\} & \\text{ } \\\\ \\cup " +"\\{(source_i, target_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i" +" >=0)\\} & \\quad \\text{ if } reverse\\_cost \\neq \\varnothing \\\\ " +"\\end{cases}`" msgstr "" -msgid "Case 2: Source and/or target belong to an edge subgraph." +msgid "The problem" msgstr "" -msgid "Case 3: Source and/or target belong to a vertex." +msgid "Given:" msgstr "" -msgid "Using the `Edges that belong to the contracted graph.`_ on lines 11 to 20." +#, python-brace-format +msgid ":math:`start_{vid} \\in V` a starting vertex" msgstr "" -msgid "Case 1" +#, python-brace-format +msgid ":math:`end_{vid} \\in V` an ending vertex" msgstr "" +#, python-brace-format msgid "" -"When both source and target belong to the contracted graph, a path is " -"found." +":math:`G(V,E) = \\begin{cases} G_d(V,E) & \\quad \\text{ if6 } directed =" +" true \\\\ G_u(V,E) & \\quad \\text{ if5 } directed = false \\\\ " +"\\end{cases}`" msgstr "" -msgid "Case 2" +msgid "Then:" msgstr "" +#, python-brace-format msgid "" -"When source and/or target belong to an edge subgraph then a path is not " -"found." +":math:`\\boldsymbol{\\pi} = \\{(path\\_seq_i, node_i, edge_i, cost_i, " +"agg\\_cost_i)\\}`" msgstr "" -msgid "" -"In this case, the contracted graph do not have an edge connecting with " -"node :math:`4`." +msgid "where:" msgstr "" -msgid "Case 3" +msgid ":math:`path\\_seq_i = i`" msgstr "" -msgid "When source and/or target belong to a vertex then a path is not found." +#, python-brace-format +msgid ":math:`path\\_seq_{| \\pi |} = | \\pi |`" msgstr "" -msgid "" -"In this case, the contracted graph do not have an edge connecting with " -"node :math:`7` and of node :math:`4` of the second case." +msgid ":math:`node_i \\in V`" msgstr "" -msgid "Refining the above function to include nodes that belong to an edge." +#, python-brace-format +msgid ":math:`node_1 = start_{vid}`" msgstr "" -msgid "The vertices that need to be expanded are calculated on lines 11 to 17." +#, python-brace-format +msgid ":math:`node_{| \\pi |} = end_{vid}`" msgstr "" -msgid "Adding to the contracted graph that additional section on lines 26 to 28." +#, python-brace-format +msgid "" +":math:`\\forall i \\neq | \\pi |, \\quad (node_i, node_{i+1}, cost_i) " +"\\in E`" msgstr "" msgid "" -"When source and/or target belong to an edge subgraph, now, a path is " -"found." +":math:`edge_i = \\begin{cases} id_{(node_i, node_{i+1},cost_i)} " +"&\\quad \\text{when } i \\neq | \\pi | \\\\ -1 &\\quad \\text{when } i " +"= | \\pi | \\\\ \\end{cases}`" +msgstr "" + +msgid ":math:`cost_i = cost_{(node_i, node_{i+1})}`" msgstr "" -msgid "The routing graph now has an edge connecting with node :math:`4`." +msgid "" +":math:`agg\\_cost_i = \\begin{cases} 0 &\\quad \\text{when } i = 1 " +"\\\\ \\displaystyle\\sum_{k=1}^{i} cost_{(node_{k-1}, node_k)} &\\quad" +" \\text{when } i \\neq 1 \\\\ \\end{cases}`" msgstr "" +#, python-brace-format msgid "" -"In this case, the contracted graph do not have an edge connecting with " -"node :math:`7`." +"In other words: The algorithm returns a the shortest path between " +":math:`start_{vid}` and :math:`end_{vid}`, if it exists, in terms of a " +"sequence of nodes and of edges," msgstr "" -msgid "The vertices that need to be expanded are calculated on lines 19 to 24." +msgid "" +":math:`path\\_seq` indicates the relative position in the path of the " +":math:`node` or :math:`edge`." msgstr "" -msgid "Adding to the contracted graph that additional section on lines 38 to 40." +msgid ":math:`cost` is the cost of the edge to be used to go to the next node." msgstr "" +#, python-brace-format msgid "" -"The code change do not affect this case so when source and/or target " -"belong to an edge subgraph, a path is still found." +":math:`agg\\_cost` is the cost from the :math:`start_{vid}` up to the " +"node." msgstr "" -msgid "When source and/or target belong to a vertex, now, a path is found." +msgid "If there is no path, the resulting set is empty." msgstr "" -msgid "Now, the routing graph has an edge connecting with node :math:`7`." +msgid "Driving Distance - Category" msgstr "" -msgid ":doc:`sampledata`" +msgid "" +":doc:`pgr_drivingDistance` - Driving Distance based on Dijkstra's " +"algorithm" msgstr "" -msgid "https://www.cs.cmu.edu/afs/cs/academic/class/15210-f12/www/lectures/lecture16.pdf" +msgid ":doc:`pgr_primDD` - Driving Distance based on Prim's algorithm" msgstr "" -msgid "https://algo2.iti.kit.edu/documents/routeplanning/geisberger_dipl.pdf" +msgid ":doc:`pgr_kruskalDD` - Driving Distance based on Kruskal's algorithm" msgstr "" -msgid "Cost - Category" +msgid "Post processing" msgstr "" -msgid ":doc:`pgr_aStarCost`" +msgid ":doc:`pgr_alphaShape` - Alpha shape computation" msgstr "" -msgid ":doc:`pgr_bdAstarCost`" +msgid ":doc:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints" msgstr "" -msgid ":doc:`pgr_dijkstraCost`" +msgid "Calculate nodes that are within a distance." msgstr "" -msgid ":doc:`pgr_bdDijkstraCost`" +msgid "" +"Extracts all the nodes that have costs less than or equal to the value " +"distance." msgstr "" -msgid ":doc:`pgr_dijkstraNearCost`" +msgid "The edges extracted will conform to the corresponding spanning tree." msgstr "" -msgid ":doc:`pgr_withPointsCost`" +msgid "Edge :math:`(u, v)` will not be included when:" msgstr "" -msgid "Each function works as part of the family it belongs to." +msgid "The distance from the **root** to :math:`u` > limit distance." msgstr "" -msgid "" -"Returns the sum of the costs of the shortest path of each pair " -"combination of nodes requested." +msgid "The distance from the **root** to :math:`v` > limit distance." msgstr "" msgid "" -"Let be the case the values returned are stored in a table, so the unique " -"index would be the pair: ``(start_vid, end_vid)``." +"No new nodes are created on the graph, so when is within the limit and is" +" not within the limit, the edge is not included." msgstr "" -msgid "" -"Depending on the function and its parameters, the results can be " -"symmetric." +msgid "Edges SQL as described below." msgstr "" -msgid "" -"The **aggregate cost** of :math:`(u, v)` is the same as for :math:`(v, " -"u)`." +msgid "**Root vid**" msgstr "" -msgid "Any duplicated value in the start or end vertex identifiers are ignored." +msgid "**Root vids**" msgstr "" -msgid "The returned values are ordered:" +msgid "``ARRAY[ANY-INTEGER]``" msgstr "" -msgid "``start_vid`` ascending" +msgid "**distance**" msgstr "" -msgid "``end_vid`` ascending" +msgid "Upper limit for the inclusion of a node in the result." msgstr "" -msgid "Cost Matrix - Category" +msgid "Returns set of |result-spantree|" msgstr "" -msgid ":doc:`pgr_aStarCostMatrix`" +msgid ":math:`depth-1` is the depth of ``pred``" msgstr "" -msgid ":doc:`pgr_dijkstraCostMatrix`" +msgid "``pred``" msgstr "" -msgid ":doc:`pgr_bdAstarCostMatrix`" +msgid "Predecessor of ``node``." msgstr "" -msgid ":doc:`pgr_bdDijkstraCostMatrix`" +msgid "When ``node`` = ``start_vid`` then has the value ``node``." msgstr "" -msgid "proposed" +msgid "Identifier of the ``edge`` used to arrive from ``pred`` to ``node``." msgstr "" -msgid ":doc:`pgr_withPointsCostMatrix`" +msgid "Experimental Functions" msgstr "" -msgid "" -":doc:`TSP-family` needs as input a symmetric cost matrix and no edge `(u," -" v)` must value :math:`\\infty`." +msgid "Families" msgstr "" -msgid "This collection of functions will return a cost matrix in form of a table." +msgid ":doc:`flow-family`" msgstr "" -msgid "Can be used as input to :doc:`pgr_TSP`." +msgid ":doc:`pgr_maxFlowMinCost` - Details of flow and cost on edges." msgstr "" -msgid "" -"Use directly when the resulting matrix is symmetric and there is no " -":math:`\\infty` value." +msgid ":doc:`pgr_maxFlowMinCost_Cost` - Only the Min Cost calculation." msgstr "" -msgid "It will be the users responsibility to make the matrix symmetric." +msgid ":doc:`chinesePostmanProblem-family`" msgstr "" -msgid "By using geometric or harmonic average of the non symmetric values." +msgid ":doc:`coloring-family`" msgstr "" -msgid "By using max or min the non symmetric values." +msgid ":doc:`transformation-family`" msgstr "" msgid "" -"By setting the upper triangle to be the mirror image of the lower " -"triangle." +":doc:`pgr_lineGraphFull` - Transformation algorithm for generating a Line" +" Graph out of each vertex in the input graph." msgstr "" -msgid "" -"By setting the lower triangle to be the mirror image of the upper " -"triangle." +msgid ":doc:`traversal-family`" msgstr "" -msgid "It is also the users responsibility to fix an :math:`\\infty` value." +msgid "" +":doc:`pgr_breadthFirstSearch` - Breath first search traversal of the " +"graph." msgstr "" msgid "" -"Returns the sum of the costs of the shortest path for pair combination of" -" nodes in the graph." +":doc:`pgr_binaryBreadthFirstSearch` - Breath first search traversal of " +"the graph." msgstr "" -msgid "When the starting vertex and ending vertex are the same, there is no path." +msgid ":doc:`components-family`" msgstr "" -msgid "The aggregate cost in the non included values `(v, v)` is `0`." +msgid ":doc:`ordering-family`" msgstr "" msgid "" -"When the starting vertex and ending vertex are the different and there is" -" no path." +":doc:`pgr_cuthillMckeeOrdering` - Return reverse Cuthill-McKee ordering " +"of an undirected graph." msgstr "" -msgid "The aggregate cost in the non included values `(u, v)` is :math:`\\infty`." +msgid "" +":doc:`pgr_topologicalSort` - Linear ordering of the vertices for directed" +" acyclic graph." msgstr "" -msgid "Let be the case the values returned are stored in a table:" +msgid ":doc:`metrics-family`" msgstr "" -msgid "The unique index would be the pair: ``(start_vid, end_vid)``." +msgid "" +":doc:`pgr_betweennessCentrality` - Calculates relative betweenness " +"centrality using Brandes Algorithm" msgstr "" -msgid "The aggregate cost of `(u, v)` is the same as for `(v, u)`." +msgid ":doc:`TRSP-family`" msgstr "" -msgid "Any duplicated value in the **start vids** are ignored." +msgid "categories" msgstr "" -msgid "Used in:" +msgid ":doc:`VRP-category`" msgstr "" -msgid "`Edges SQL`_ as described below" +msgid "Shortest Path Category" msgstr "" -msgid "**start vids**" +msgid ":doc:`pgr_bellmanFord`" msgstr "" -msgid "``ARRAY[BIGINT]``" +msgid ":doc:`pgr_dagShortestPath`" msgstr "" -msgid "Array of identifiers of starting vertices." +msgid ":doc:`pgr_edwardMoore`" msgstr "" -msgid "`Points SQL`_" +msgid "Planar Family" msgstr "" -msgid "`Points SQL`_ as described below" +msgid ":doc:`pgr_isPlanar`" msgstr "" -msgid "Points SQL" +msgid "Miscellaneous Algorithms" msgstr "" -msgid "``pid``" +msgid ":doc:`pgr_lengauerTarjanDominatorTree`" msgstr "" -msgid "**value**" +msgid ":doc:`pgr_stoerWagner`" msgstr "" -msgid "Identifier of the point." +msgid ":doc:`pgr_transitiveClosure`" msgstr "" -msgid "Use with positive value, as internally will be converted to negative value" +msgid ":doc:`pgr_hawickCircuits`" msgstr "" -msgid "If column is present, it can not be NULL." +msgid "Flow - Family of functions" msgstr "" msgid "" -"If column is not present, a sequential negative **value** will be given " -"automatically." -msgstr "" - -msgid "Identifier of the \"closest\" edge to the point." +":doc:`pgr_maxFlow` - Only the Max flow calculation using Push and Relabel" +" algorithm." msgstr "" -msgid "``fraction``" +msgid "" +":doc:`pgr_boykovKolmogorov` - Boykov and Kolmogorov with details of flow " +"on edges." msgstr "" msgid "" -"Value in <0,1> that indicates the relative postition from the first end " -"point of the edge." +":doc:`pgr_edmondsKarp` - Edmonds and Karp algorithm with details of flow " +"on edges." msgstr "" -msgid "``side``" +msgid "" +":doc:`pgr_pushRelabel` - Push and relabel algorithm with details of flow " +"on edges." msgstr "" -msgid "``CHAR``" +msgid "Applications" msgstr "" -msgid "``b``" +msgid "" +":doc:`pgr_edgeDisjointPaths` - Calculates edge disjoint paths between two" +" groups of vertices." msgstr "" -msgid "Value in [``b``, ``r``, ``l``, ``NULL``] indicating if the point is:" +msgid "" +":doc:`pgr_maxCardinalityMatch` - Calculates a maximum cardinality " +"matching in a graph." msgstr "" -msgid "In the right ``r``," +msgid "Flow Functions General Information" msgstr "" -msgid "In the left ``l``," +msgid "The graph is **directed**." msgstr "" -msgid "In both sides ``b``, ``NULL``" +msgid "Process is done only on edges with positive capacities." msgstr "" -msgid ":doc:`TSP-family`" +msgid "" +"When the maximum flow is 0 then there is no flow and **EMPTY SET** is " +"returned." msgstr "" -msgid "Dijkstra - Family of functions" +msgid "There is no flow when source has the same value as target." msgstr "" -msgid ":doc:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths." +msgid "Any duplicated values in source or target are ignored." msgstr "" -msgid ":doc:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths." +msgid "Calculates the flow/residual capacity for each edge. In the output" msgstr "" -msgid ":doc:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix." +msgid "Edges with zero flow are omitted." msgstr "" -msgid "" -":doc:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament " -"information." +msgid "Creates" msgstr "" -msgid "" -":doc:`pgr_KSP` - Use Yen algorithm with pgr_dijkstra to get the K " -"shortest paths." +msgid "a **super source** and edges from it to all the sources," msgstr "" -msgid ":doc:`pgr_dijkstraVia` - Get a route of a seuence of vertices." +msgid "a **super target** and edges from it to all the targetss." msgstr "" -msgid ":doc:`pgr_dijkstraNear` - Get the route to the nearest vertex." +msgid "" +"The maximum flow through the graph is guaranteed to be the value returned" +" by :doc:`pgr_maxFlow ` when executed with the same " +"parameters and can be calculated:" msgstr "" -msgid ":doc:`pgr_dijkstraNearCost` - Get the cost to the nearest vertex." +msgid "By aggregation of the outgoing flow from the sources" msgstr "" -msgid "" -"Dijkstra's algorithm, conceived by Dutch computer scientist Edsger " -"Dijkstra in 1956. It is a graph search algorithm that solves the shortest" -" path problem for a graph with non-negative edge path costs, producing a " -"shortest path from a starting vertex to an ending vertex. This " -"implementation can be used with a directed graph and an undirected graph." +msgid "By aggregation of the incoming flow to the targets" msgstr "" -msgid "Running time: :math:`O(| start\\ vids | * (V \\log V + E))`" +msgid "" +":doc:`pgr_maxFlow` is the maximum Flow and that maximum is guaranteed to " +"be the same on the functions :doc:`pgr_pushRelabel`, " +":doc:`pgr_edmondsKarp`, :doc:`pgr_boykovKolmogorov`, but the actual flow " +"through each edge may vary." msgstr "" -msgid "The Dijkstra family functions are based on the Dijkstra algorithm." +msgid "Capacity edges" msgstr "" -msgid "`Combinations SQL`_" +msgid ":doc:`pgr_pushRelabel`" msgstr "" -msgid "`Combinations SQL`_ as described below" +msgid ":doc:`pgr_edmondsKarp`" msgstr "" -msgid "**start vid**" +msgid ":doc:`pgr_boykovKolmogorov`" msgstr "" -msgid "Identifier of the starting vertex of the path." +msgid "``reverse_capacity``" msgstr "" -msgid "**end vid**" +msgid "Capacity-Cost edges" msgstr "" -msgid "Identifier of the ending vertex of the path." +msgid ":doc:`pgr_maxFlowMinCost`" msgstr "" -msgid "**end vids**" +msgid ":doc:`pgr_maxFlowMinCost_Cost`" msgstr "" -msgid "Array of identifiers of ending vertices." +msgid "Capacity of the edge (``source``, ``target``)" msgstr "" -msgid "Combinations SQL" +msgid "Capacity of the edge (``target``, ``source``)" msgstr "" -msgid "Identifier of the departure vertex." +msgid "Weight of the edge (``source``, ``target``) if it exist" msgstr "" -msgid "Identifier of the arrival vertex." +msgid "Weight of the edge (``target``, ``source``) if it exist" msgstr "" -msgid "The problem definition (Advanced documentation)" +msgid "Cost edges" msgstr "" -msgid "Given the following query:" +msgid ":doc:`pgr_edgeDisjointPaths`" msgstr "" -msgid "pgr_dijkstra(:math:`sql, start_{vid}, end_{vid}, directed`)" +msgid "Used in" msgstr "" -msgid "" -"where :math:`sql = \\{(id_i, source_i, target_i, cost_i, " -"reverse\\_cost_i)\\}`" +msgid "**seq**" msgstr "" -msgid "and" +msgid "``INT``" msgstr "" -msgid ":math:`source = \\bigcup source_i`," +msgid "**edge**" msgstr "" -msgid ":math:`target = \\bigcup target_i`," +msgid "Identifier of the edge in the original query (edges_sql)." msgstr "" -msgid "The graphs are defined as follows:" +msgid "**start_vid**" msgstr "" -msgid "Directed graph" +msgid "**end_vid**" msgstr "" -msgid "The weighted directed graph, :math:`G_d(V,E)`, is definied by:" +msgid "**flow**" msgstr "" -msgid "the set of vertices :math:`V`" +msgid "Flow through the edge in the direction (``start_vid``, ``end_vid``)." msgstr "" -msgid ":math:`V = source \\cup target \\cup {start_{vid}} \\cup {end_{vid}}`" +msgid "**residual_capacity**" msgstr "" -msgid "the set of edges :math:`E`" +msgid "" +"Residual capacity of the edge in the direction (``start_vid``, " +"``end_vid``)." msgstr "" -msgid "" -":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) " -"\\text{ when } cost >=0 \\} & \\quad \\text{if } reverse\\_cost = " -"\\varnothing \\\\ \\text{ } \\text{ } & \\quad \\text{ } \\\\ \\text{ } " -"\\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & \\quad " -"\\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) \\text{ " -"when } reverse\\_cost_i>=0 \\} & \\quad \\text{if } reverse\\_cost \\neq " -"\\varnothing \\\\ \\end{cases}`" +msgid "For :doc:`pgr_maxFlowMinCost`" msgstr "" -msgid "Undirected graph" +msgid "**source**" msgstr "" -msgid "The weighted undirected graph, :math:`G_u(V,E)`, is definied by:" +msgid "**target**" msgstr "" -msgid ":math:`V = source \\cup target \\cup {start_v{vid}} \\cup {end_{vid}}`" +msgid "Flow through the edge in the direction (source, target)." msgstr "" -msgid "" -":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) " -"\\text{ when } cost >=0 \\} & \\quad \\text{ } \\\\ \\cup \\{(target_i, " -"source_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ if } " -"reverse\\_cost = \\varnothing \\\\ \\text{ } \\text{ } & \\text{ } \\\\ " -"\\text{ } \\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & " -"\\text{ } \\\\ \\cup \\{(target_i, source_i, cost_i) \\text{ when } cost " -">=0 \\} & \\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) " -"\\text{ when } reverse\\_cost_i >=0)\\} & \\text{ } \\\\ \\cup " -"\\{(source_i, target_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i" -" >=0)\\} & \\quad \\text{ if } reverse\\_cost \\neq \\varnothing \\\\ " -"\\end{cases}`" +msgid "Residual capacity of the edge in the direction (source, target)." msgstr "" -msgid "The problem" +msgid "**cost**" msgstr "" -msgid "Given:" +msgid "" +"The cost of sending this flow through the edge in the direction (source, " +"target)." msgstr "" -msgid ":math:`start_{vid} \\in V` a starting vertex" +msgid "**agg_cost**" msgstr "" -msgid ":math:`end_{vid} \\in V` an ending vertex" +msgid "The aggregate cost." msgstr "" -msgid "" -":math:`G(V,E) = \\begin{cases} G_d(V,E) & \\quad \\text{ if6 } directed =" -" true \\\\ G_u(V,E) & \\quad \\text{ if5 } directed = false \\\\ " -"\\end{cases}`" +msgid "Advanced Documentation" msgstr "" -msgid "Then:" +msgid "" +"A flow network is a directed graph where each edge has a capacity and a " +"flow. The flow through an edge must not exceed the capacity of the edge. " +"Additionally, the incoming and outgoing flow of a node must be equal " +"except for source which only has outgoing flow, and the destination(sink)" +" which only has incoming flow." msgstr "" msgid "" -":math:`\\boldsymbol{\\pi} = \\{(path\\_seq_i, node_i, edge_i, cost_i, " -"agg\\_cost_i)\\}`" +"Maximum flow algorithms calculate the maximum flow through the graph and " +"the flow of each edge." msgstr "" -msgid "where:" +msgid "" +"The maximum flow through the graph is guaranteed to be the same with all " +"implementations, but the actual flow through each edge may vary." msgstr "" -msgid ":math:`path\\_seq_i = i`" +msgid "pgr_maxFlow :math:`(edges\\_sql, source\\_vertex, sink\\_vertex)`" msgstr "" -msgid ":math:`path\\_seq_{| \\pi |} = | \\pi |`" +#, python-brace-format +msgid "" +"where :math:`edges\\_sql = \\{(id_i, source_i, target_i, capacity_i, " +"reverse\\_capacity_i)\\}`" msgstr "" -msgid ":math:`node_i \\in V`" +msgid "Graph definition" msgstr "" -msgid ":math:`node_1 = start_{vid}`" +msgid "The weighted directed graph, :math:`G(V,E)`, is defined as:" msgstr "" -msgid ":math:`node_{| \\pi |} = end_{vid}`" +msgid "the set of vertices :math:`V`" msgstr "" msgid "" -":math:`\\forall i \\neq | \\pi |, \\quad (node_i, node_{i+1}, cost_i) " -"\\in E`" +":math:`source\\_vertex \\cup sink\\_vertex \\bigcup source_i " +"\\bigcup target_i`" msgstr "" msgid "" -":math:`edge_i = \\begin{cases} id_{(node_i, node_{i+1},cost_i)} " -"&\\quad \\text{when } i \\neq | \\pi | \\\\ -1 &\\quad \\text{when } i " -"= | \\pi | \\\\ \\end{cases}`" +":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, capacity_i) " +"\\text{ when } capacity > 0 \\} & \\quad \\text{ if } reverse\\_capacity" +" = \\varnothing \\\\ \\text{ } & \\quad \\text{ } \\\\ \\{(source_i, " +"target_i, capacity_i) \\text{ when } capacity > 0 \\} & \\text{ } \\\\ " +"\\cup \\{(target_i, source_i, reverse\\_capacity_i) \\text{ when } " +"reverse\\_capacity_i > 0)\\} & \\quad \\text{ if } reverse\\_capacity " +"\\neq \\varnothing \\\\ \\end{cases}`" msgstr "" -msgid ":math:`cost_i = cost_{(node_i, node_{i+1})}`" +msgid "Maximum flow problem" msgstr "" -msgid "" -":math:`agg\\_cost_i = \\begin{cases} 0 &\\quad \\text{when } i = 1 " -"\\\\ \\displaystyle\\sum_{k=1}^{i} cost_{(node_{k-1}, node_k)} &\\quad" -" \\text{when } i \\neq 1 \\\\ \\end{cases}`" +msgid ":math:`G(V,E)`" msgstr "" -msgid "" -"In other words: The algorithm returns a the shortest path between " -":math:`start_{vid}` and :math:`end_{vid}`, if it exists, in terms of a " -"sequence of nodes and of edges," +msgid ":math:`source\\_vertex \\in V` the source vertex" msgstr "" -msgid "" -":math:`path\\_seq` indicates the relative position in the path of the " -":math:`node` or :math:`edge`." +msgid ":math:`sink\\_vertex \\in V` the sink vertex" msgstr "" -msgid ":math:`cost` is the cost of the edge to be used to go to the next node." +#, python-brace-format +msgid ":math:`pgr\\_maxFlow(edges\\_sql, source, sink) = \\boldsymbol{\\Phi}`" msgstr "" +#, python-brace-format msgid "" -":math:`agg\\_cost` is the cost from the :math:`start_{vid}` up to the " -"node." +":math:`\\boldsymbol{\\Phi} = {(id_i, edge\\_id_i, source_i, target_i, " +"flow_i, residual\\_capacity_i)}`" msgstr "" -msgid "If there is no path, the resulting set is empty." +#, python-brace-format +msgid "" +":math:`\\boldsymbol{\\Phi}` is a subset of the original edges with their " +"residual capacity and flow. The maximum flow through the graph can be " +"obtained by aggregating on the source or sink and summing the flow " +"from/to it. In particular:" msgstr "" -msgid "Driving Distance - Category" +msgid ":math:`id_i = i`" msgstr "" -msgid "" -":doc:`pgr_drivingDistance` - Driving Distance based on Dijkstra's " -"algorithm" +msgid ":math:`edge\\_id = id_i` in edges_sql" msgstr "" -msgid ":doc:`pgr_primDD` - Driving Distance based on Prim's algorithm" +msgid ":math:`residual\\_capacity_i = capacity_i - flow_i`" msgstr "" -msgid ":doc:`pgr_kruskalDD` - Driving Distance based on Kruskal's algorithm" +msgid "https://en.wikipedia.org/wiki/Maximum_flow_problem" msgstr "" -msgid "Post pocessing" +msgid "" +"pgRouting extends the `PostGIS `__/`PostgreSQL " +"`__ geospatial database to provide geospatial" +" routing and other network analysis functionality." msgstr "" -msgid ":doc:`pgr_alphaShape` - Alpha shape computation" +msgid "This is the manual for pgRouting |release|." msgstr "" -msgid ":doc:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints" +msgid "Creative Commons Attribution-Share Alike 3.0 License" msgstr "" -msgid "Calculate nodes that are within a distance." +msgid "" +"The pgRouting Manual is licensed under a `Creative Commons Attribution-" +"Share Alike 3.0 License `_. Feel free to use this material any way you like, but we ask " +"that you attribute credit to the pgRouting Project and wherever possible," +" a link back to https://pgrouting.org. For other licenses used in " +"pgRouting see the :ref:`license` page." msgstr "" -msgid "" -"Extracts all the nodes that have costs less than or equal to the value " -"distance." +msgid "General" msgstr "" -msgid "The edges extracted will conform to the corresponding spanning tree." +msgid ":doc:`sampledata` that is used in the examples of this manual." msgstr "" -msgid "Edge :math:`(u, v)` will not be included when:" +msgid "Pgrouting Concepts" msgstr "" -msgid "The distance from the **root** to :math:`u` > limit distance." +msgid ":doc:`routingFunctions`" msgstr "" -msgid "The distance from the **root** to :math:`v` > limit distance." +msgid ":doc:`allpairs-family`" msgstr "" -msgid "" -"No new nodes are created on the graph, so when is within the limit and is" -" not within the limit, the edge is not included." +msgid ":doc:`bdDijkstra-family`" msgstr "" -msgid "Edges SQL as described below." +msgid ":doc:`contraction-family`" msgstr "" -msgid "**Root vid**" +msgid ":doc:`dijkstra-family`" msgstr "" -msgid "**Root vids**" +msgid ":doc:`kruskal-family`" msgstr "" -msgid "``ARRAY[ANY-INTEGER]``" +msgid ":doc:`pgr_kruskal`" msgstr "" -msgid "**distance**" +msgid ":doc:`pgr_kruskalDD`" msgstr "" -msgid "Upper limit for the inclusion of a node in the result." +msgid "" +":doc:`pgr_degree` - Returns a set of vertices and corresponding count of " +"incident edges to the vertex." msgstr "" -msgid "Returns set of |result-spantree|" +msgid ":doc:`prim-family`" msgstr "" -msgid ":math:`depth-1` is the depth of ``pred``" +msgid ":doc:`pgr_prim`" msgstr "" -msgid "``pred``" +msgid ":doc:`pgr_primDD`" msgstr "" -msgid "Predecessor of ``node``." +msgid ":doc:`reference`" msgstr "" -msgid "When ``node`` = ``start_vid`` then has the value ``node``." +msgid ":doc:`pgr_version`" msgstr "" -msgid "Identifier of the ``edge`` used to arrive from ``pred`` to ``node``." +msgid ":doc:`pgr_full_version`" msgstr "" -msgid "Experimental Functions" +msgid ":doc:`topology-functions`" msgstr "" -msgid "Families" +msgid "" +"The following functions modify the database directly therefore the user " +"must have special permissions given by the administrators to use them." msgstr "" -msgid ":doc:`flow-family`" +msgid ":doc:`pgr_createTopology` - create a topology based on the geometry." msgstr "" -msgid ":doc:`pgr_maxFlowMinCost` - Details of flow and cost on edges." +msgid "" +":doc:`pgr_createVerticesTable` - reconstruct the vertices table based on " +"the source and target information." msgstr "" -msgid ":doc:`pgr_maxFlowMinCost_Cost` - Only the Min Cost calculation." +msgid "" +":doc:`pgr_analyzeGraph` - to analyze the edges and vertices of the edge " +"table." msgstr "" -msgid ":doc:`chinesePostmanProblem-family`" +msgid ":doc:`pgr_analyzeOneWay` - to analyze directionality of the edges." msgstr "" -msgid ":doc:`coloring-family`" +msgid ":doc:`pgr_nodeNetwork` - to create nodes to a not noded edge table." msgstr "" -msgid ":doc:`transformation-family`" +msgid "" +":doc:`pgr_extractVertices` - Extracts vertex information based on the " +"edge table information." msgstr "" -msgid "" -":doc:`pgr_lineGraphFull` - Transformation algorithm for generating a Line" -" Graph out of each vertex in the input graph." +msgid ":doc:`pgr_trsp` - Turn Restriction Shortest Path (TRSP)" msgstr "" -msgid ":doc:`traversal-family`" +msgid "Utilities family" msgstr "" -msgid "" -":doc:`pgr_breadthFirstSearch` - Breath first search traversal of the " -"graph." +msgid ":doc:`pgr_findCloseEdges`" msgstr "" -msgid "" -":doc:`pgr_binaryBreadthFirstSearch` - Breath first search traversal of " -"the graph." +msgid "Functions by categories" msgstr "" -msgid ":doc:`components-family`" +msgid ":doc:`cost-category`" msgstr "" -msgid ":doc:`ordering-family`" +msgid ":doc:`costMatrix-category`" msgstr "" -msgid "" -":doc:`pgr_cuthillMckeeOrdering` - Return reverse Cuthill-McKee ordering " -"of an undirected graph." +msgid ":doc:`drivingDistance-category`" msgstr "" -msgid ":doc:`metrics-family`" +msgid ":doc:`KSP-category`" msgstr "" -msgid "" -":doc:`pgr_betweennessCentrality` - Calculates relative betweenness " -"centrality using Brandes Algorithm" +msgid ":doc:`spanningTree-category`" msgstr "" -msgid ":doc:`TRSP-family`" +msgid ":doc:`BFS-category`" msgstr "" -msgid "categories" +msgid ":doc:`DFS-category`" msgstr "" -msgid ":doc:`VRP-category`" +msgid "Available Functions but not official pgRouting functions" msgstr "" -msgid "Unclassified" +msgid ":doc:`proposed`" msgstr "" -msgid ":doc:`pgr_bellmanFord`" +msgid ":doc:`experimental`" msgstr "" -msgid ":doc:`pgr_dagShortestPath`" +msgid ":doc:`release_notes`" msgstr "" -msgid ":doc:`pgr_edwardMoore`" +msgid "pgRouting 4.0.0 Release Notes" msgstr "" -msgid ":doc:`pgr_isPlanar`" +#, python-format +msgid "" +"To see all issues & pull requests closed by this release see the `Git " +"closed milestone for 4.0.0 " +"`__" msgstr "" -msgid ":doc:`pgr_stoerWagner`" +msgid "Functions promoted to official" msgstr "" -msgid ":doc:`pgr_topologicalSort`" +msgid "pgr_trsp" msgstr "" -msgid ":doc:`pgr_transitiveClosure`" +msgid "pgr_trspVia" msgstr "" -msgid ":doc:`pgr_lengauerTarjanDominatorTree`" +msgid "pgr_trspVia_withPoints" msgstr "" -msgid ":doc:`pgr_hawickCircuits`" +msgid "pgr_trsp_withPoints" msgstr "" -msgid "Flow - Family of functions" +msgid "pgr_withPoints" msgstr "" -msgid "" -":doc:`pgr_maxFlow` - Only the Max flow calculation using Push and Relabel" -" algorithm." +msgid "pgr_withPointsCost" msgstr "" -msgid "" -":doc:`pgr_boykovKolmogorov` - Boykov and Kolmogorov with details of flow " -"on edges." +msgid "pgr_withPointsCostMatrix" msgstr "" -msgid "" -":doc:`pgr_edmondsKarp` - Edmonds and Karp algorithm with details of flow " -"on edges." +msgid "pgr_withPointsDD" msgstr "" -msgid "" -":doc:`pgr_pushRelabel` - Push and relabel algorithm with details of flow " -"on edges." +msgid "pgr_withPointsKSP" msgstr "" -msgid "Applications" +msgid "pgr_withPointsVia" msgstr "" -msgid "" -":doc:`pgr_edgeDisjointPaths` - Calculates edge disjoint paths between two" -" groups of vertices." +msgid "Signatures promoted to official" msgstr "" -msgid "" -":doc:`pgr_maxCardinalityMatch` - Calculates a maximum cardinality " -"matching in a graph." +msgid "pgr_aStar(Combinations)" msgstr "" -msgid "Flow Functions General Information" +msgid "pgr_aStarCost(Combinations)" msgstr "" -msgid "The graph is **directed**." +msgid "pgr_bdAstar(Combinations)" msgstr "" -msgid "Process is done only on edges with positive capacities." +msgid "pgr_bdAstarCost(Combinations)" msgstr "" -msgid "" -"When the maximum flow is 0 then there is no flow and **EMPTY SET** is " -"returned." +msgid "pgr_bdDijkstra(Combinations)" msgstr "" -msgid "There is no flow when source has the same vaule as target." +msgid "pgr_bdDijkstraCost(Combinations)" msgstr "" -msgid "Any duplicated values in source or target are ignored." +msgid "pgr_dijkstra(Combinations)" msgstr "" -msgid "Calculates the flow/residual capacity for each edge. In the output" +msgid "pgr_dijkstraCost(Combinations)" msgstr "" -msgid "Edges with zero flow are omitted." +msgid "pgr_KSP(All signatures)" msgstr "" -msgid "Creates" +msgid "pgr_boykovKolmogorov(Combinations)" msgstr "" -msgid "a **super source** and edges from it to all the sources," +msgid "pgr_edmondsKarp(Combinations)" msgstr "" -msgid "a **super target** and edges from it to all the targetss." +msgid "pgr_maxFlow(Combinations)" msgstr "" -msgid "" -"The maximum flow through the graph is guaranteed to be the value returned" -" by :doc:`pgr_maxFlow ` when executed with the same " -"parameters and can be calculated:" +msgid "pgr_pushRelabel(Combinations)" msgstr "" -msgid "By aggregation of the outgoing flow from the sources" +msgid "code enhancements:" msgstr "" -msgid "By aggregation of the incoming flow to the targets" +msgid "Removal of unused C/C++ code" msgstr "" -msgid "" -":doc:`pgr_maxFlow` is the maximum Flow and that maximum is guaranteed to " -"be the same on the functions :doc:`pgr_pushRelabel`, " -":doc:`pgr_edmondsKarp`, :doc:`pgr_boykovKolmogorov`, but the actual flow " -"through each edge may vary." +msgid "Removal of SQL deprecated functions" msgstr "" -msgid "Capacity edges" +msgid "" +"pgr_trsp(text,integer,double precision,integer,double " +"precision,boolean,boolean,text)" msgstr "" -msgid ":doc:`pgr_pushRelabel`" +msgid "pgr_trsp(text,integer,integer,boolean,boolean,text)" msgstr "" -msgid ":doc:`pgr_edmondsKarp`" +msgid "pgr_trspviaedges(text,integer[],double precision[],boolean,boolean,text)" msgstr "" -msgid ":doc:`pgr_boykovKolmogorov`" +msgid "pgr_trspviavertices(text,anyarray,boolean,boolean,text)" msgstr "" -msgid "``reverse_capacity``" +msgid "Removal of SQL deprecated internal functions" msgstr "" -msgid "Capacity-Cost edges" +msgid "_pgr_dijkstranear(text,anyarray,anyarray,bigint,boolean)" msgstr "" -msgid ":doc:`pgr_maxFlowMinCost`" +msgid "_pgr_dijkstranear(text,anyarray,bigint,bigint,boolean)" msgstr "" -msgid ":doc:`pgr_maxFlowMinCost_Cost`" +msgid "_pgr_dijkstranear(text,bigint,anyarray,bigint,boolean)" msgstr "" -msgid "Capacity of the edge (``source``, ``target``)" +msgid "_pgr_dijkstra(text,anyarray,anyarray,boolean,boolean,boolean,bigint)" msgstr "" -msgid "Capacity of the edge (``target``, ``source``)" +msgid "_pgr_dijkstra(text,text,boolean,boolean,boolean)" msgstr "" -msgid "Weight of the edge (``source``, ``target``) if it exist" +msgid "_pgr_drivingdistance(text,anyarray,double precision,boolean,boolean)" msgstr "" -msgid "Weight of the edge (``target``, ``source``) if it exist" +msgid "_pgr_kruskal(text,anyarray,text,bigint,double precision)" msgstr "" -msgid "Cost edges" +msgid "_pgr_prim(text,anyarray,text,bigint,double precision)" msgstr "" -msgid ":doc:`pgr_edgeDisjointPaths`" +msgid "" +"_pgr_trsp(text,integer,double precision,integer,double " +"precision,boolean,boolean,text)" msgstr "" -msgid "Used in" +msgid "_pgr_trsp(text,text,anyarray,anyarray,boolean)" msgstr "" -msgid "**seq**" +msgid "_pgr_trsp(text,text,anyarray,bigint,boolean)" msgstr "" -msgid "``INT``" +msgid "_pgr_trsp(text,text,bigint,anyarray,boolean)" msgstr "" -msgid "**edge**" +msgid "_pgr_trsp(text,text,bigint,bigint,boolean)" msgstr "" -msgid "Identifier of the edge in the original query (edges_sql)." +msgid "_pgr_trspviavertices(text,integer[],boolean,boolean,text)" msgstr "" -msgid "**start_vid**" +msgid "_pgr_withpointsvia(text,bigint[],double precision[],boolean)" msgstr "" -msgid "**end_vid**" +msgid "_trsp(text,text,anyarray,anyarray,boolean)" msgstr "" -msgid "**flow**" +msgid "_v4trsp(text,text,anyarray,anyarray,boolean)" msgstr "" -msgid "Flow through the edge in the direction (``start_vid``, ``end_vid``)." +msgid "_v4trsp(text,text,text,boolean)" msgstr "" -msgid "**residual_capacity**" +msgid "Deprecation of internal C/C++ functions" msgstr "" -msgid "" -"Residual capacity of the edge in the direction (``start_vid``, " -"``end_vid``)." +msgid "Internal C/C++ functions in legacy" msgstr "" -msgid "For :doc:`pgr_maxFlowMinCost`" +msgid "All releases" msgstr "" -msgid "**source**" +msgid "Kruskal - Family of functions" msgstr "" -msgid "**target**" +msgid "" +"Kruskal's algorithm is a greedy minimum spanning tree algorithm that in " +"each cycle finds and adds the edge of the least possible weight that " +"connects any two trees in the forest." msgstr "" -msgid "Flow through the edge in the direction (source, target)." +msgid "**The main Characteristics are:**" msgstr "" -msgid "Residual capacity of the edge in the direction (source, target)." +msgid "The total weight of all the edges in the tree or forest is minimized." msgstr "" -msgid "**cost**" +msgid "Kruskal's running time: :math:`O(E * log E)`" msgstr "" -msgid "" -"The cost of sending this flow through the edge in the direction (source, " -"target)." +msgid "Metrics - Family of functions" msgstr "" -msgid "**agg_cost**" +msgid "Migration guide" msgstr "" -msgid "The aggregate cost." +msgid "" +"Several functions are having changes on the signatures, and/or have been " +"replaced by new functions." msgstr "" -msgid "Advanced Documentation" +msgid "Results can be different because of the changes." msgstr "" -msgid "" -"A flow network is a directed graph where each edge has a capacity and a " -"flow. The flow through an edge must not exceed the capacity of the edge. " -"Additionally, the incoming and outgoing flow of a node must be equal " -"except for source which only has outgoing flow, and the destination(sink)" -" which only has incoming flow." +msgid "All deprecated functions will be removed on next mayor version 4.0.0" msgstr "" -msgid "" -"Maximum flow algorithms calculate the maximum flow through the graph and " -"the flow of each edge." +msgid "Migration of ``pgr_aStar``" msgstr "" msgid "" -"The maximum flow through the graph is guaranteed to be the same with all " -"implementations, but the actual flow through each edge may vary." +"Starting from `v3.6.0 " +"`__" msgstr "" -msgid "pgr_maxFlow :math:`(edges\\_sql, source\\_vertex, sink\\_vertex)`" +msgid "Signatures to be migrated:" msgstr "" -msgid "" -"where :math:`edges\\_sql = \\{(id_i, source_i, target_i, capacity_i, " -"reverse\\_capacity_i)\\}`" +msgid "``pgr_aStar`` (`One to One`)" msgstr "" -msgid "Graph definition" +msgid "``pgr_aStar`` (`One to Many`)" msgstr "" -msgid "The weighted directed graph, :math:`G(V,E)`, is defined as:" +msgid "``pgr_aStar`` (`Many to One`)" msgstr "" -msgid "the set of vertices :math:`V`" +msgid "Before Migration" msgstr "" -msgid "" -":math:`source\\_vertex \\cup sink\\_vertex \\bigcup source_i " -"\\bigcup target_i`" +msgid "Output columns were |old-generic-result|" msgstr "" msgid "" -":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, capacity_i) " -"\\text{ when } capacity > 0 \\} & \\quad \\text{ if } reverse\\_capacity" -" = \\varnothing \\\\ \\text{ } & \\quad \\text{ } \\\\ \\{(source_i, " -"target_i, capacity_i) \\text{ when } capacity > 0 \\} & \\text{ } \\\\ " -"\\cup \\{(target_i, source_i, reverse\\_capacity_i) \\text{ when } " -"reverse\\_capacity_i > 0)\\} & \\quad \\text{ if } reverse\\_capacity " -"\\neq \\varnothing \\\\ \\end{cases}`" +"Depending on the overload used, the columns ``start_vid`` and ``end_vid``" +" might be missing:" msgstr "" -msgid "Maximum flow problem" +msgid "``pgr_aStar`` (`One to One`) does not have ``start_vid`` and ``end_vid``." msgstr "" -msgid ":math:`G(V,E)`" +msgid "``pgr_aStar`` (`One to Many`) does not have ``start_vid``." msgstr "" -msgid ":math:`source\\_vertex \\in V` the source vertex" +msgid "``pgr_aStar`` (`Many to One`) does not have ``end_vid``." msgstr "" -msgid ":math:`sink\\_vertex \\in V` the sink vertex" +msgid "Migration" msgstr "" -msgid ":math:`pgr\\_maxFlow(edges\\_sql, source, sink) = \\boldsymbol{\\Phi}`" +msgid "Be aware of the existence of the additional columns." msgstr "" -msgid "" -":math:`\\boldsymbol{\\Phi} = {(id_i, edge\\_id_i, source_i, target_i, " -"flow_i, residual\\_capacity_i)}`" +msgid "In ``pgr_aStar`` (`One to One`)" msgstr "" -msgid "" -":math:`\\boldsymbol{\\Phi}` is a subset of the original edges with their " -"residual capacity and flow. The maximum flow through the graph can be " -"obtained by aggregating on the source or sink and summing the flow " -"from/to it. In particular:" +msgid "``start_vid`` contains the **start vid** parameter value." msgstr "" -msgid ":math:`id_i = i`" +msgid "``end_vid`` contains the **end vid** parameter value." msgstr "" -msgid ":math:`edge\\_id = id_i` in edges_sql" +msgid "In ``pgr_aStar`` (`One to Many`)" msgstr "" -msgid ":math:`residual\\_capacity_i = capacity_i - flow_i`" +msgid "In ``pgr_aStar`` (`Many to One`)" msgstr "" -msgid "https://en.wikipedia.org/wiki/Maximum_flow_problem" +msgid "If needed filter out the added columns, for example:" msgstr "" msgid "" -"pgRouting extends the `PostGIS `__/`PostgreSQL " -"`__ geospatial database to provide geospatial" -" routing and other network analysis functionality." +"If needed add the new columns, similar to the following example where " +"``pgr_dijkstra`` is used, and the function had to be modified to be able " +"to return the new columns:" msgstr "" -msgid "This is the manual for pgRouting |release|." -msgstr "" - -msgid "Creative Commons Attribution-Share Alike 3.0 License" +msgid "" +"In `v3.0 `__ the function ``my_dijkstra`` uses ``pgr_dijkstra``." msgstr "" msgid "" -"The pgRouting Manual is licensed under a `Creative Commons Attribution-" -"Share Alike 3.0 License `_. Feel free to use this material any way you like, but we ask " -"that you attribute credit to the pgRouting Project and wherever possible," -" a link back to https://pgrouting.org. For other licenses used in " -"pgRouting see the :ref:`license` page." +"Starting from `v3.5 `__ the function ``my_dijkstra`` returns the new additional columns" +" of ``pgr_dijkstra``." msgstr "" -msgid "General" +msgid "Migration of ``pgr_bdAstar``" msgstr "" -msgid ":doc:`sampledata` that is used in the examples of this manual." +msgid "``pgr_bdAstar`` (`One to One`)" msgstr "" -msgid "Pgrouting Concepts" +msgid "``pgr_bdAstar`` (`One to Many`)" msgstr "" -msgid ":doc:`routingFunctions`" +msgid "``pgr_bdAstar`` (`Many to One`)" msgstr "" -msgid ":doc:`allpairs-family`" +msgid "" +"``pgr_bdAstar`` (`One to One`) does not have ``start_vid`` and " +"``end_vid``." msgstr "" -msgid ":doc:`bdDijkstra-family`" +msgid "``pgr_bdAstar`` (`One to Many`) does not have ``start_vid``." msgstr "" -msgid ":doc:`contraction-family`" +msgid "``pgr_bdAstar`` (`Many to One`) does not have ``end_vid``." msgstr "" -msgid ":doc:`dijkstra-family`" +msgid "In ``pgr_bdAstar`` (`One to One`)" msgstr "" -msgid ":doc:`kruskal-family`" +msgid "In ``pgr_bdAstar`` (`One to Many`)" msgstr "" -msgid ":doc:`pgr_kruskal`" +msgid "In ``pgr_bdAstar`` (`Many to One`)" msgstr "" -msgid ":doc:`pgr_kruskalDD`" +msgid "Migration of ``pgr_dijkstra``" msgstr "" -msgid ":doc:`prim-family`" +msgid "" +"Starting from `v3.5.0 " +"`__" msgstr "" -msgid ":doc:`pgr_prim`" +msgid "``pgr_dijkstra`` (`One to One`)" msgstr "" -msgid ":doc:`pgr_primDD`" +msgid "``pgr_dijkstra`` (`One to Many`)" msgstr "" -msgid ":doc:`reference`" +msgid "``pgr_dijkstra`` (`Many to One`)" msgstr "" -msgid ":doc:`pgr_version`" +msgid "" +"``pgr_dijkstra`` (`One to One`) does not have ``start_vid`` and " +"``end_vid``." msgstr "" -msgid ":doc:`pgr_full_version`" +msgid "``pgr_dijkstra`` (`One to Many`) does not have ``start_vid``." msgstr "" -msgid ":doc:`topology-functions`" +msgid "``pgr_dijkstra`` (`Many to One`) does not have ``end_vid``." msgstr "" -msgid "" -"The following functions modify the database directly therefore the user " -"must have special permissions given by the administrators to use them." +msgid "In ``pgr_dijkstra`` (`One to One`)" msgstr "" -msgid ":doc:`pgr_createTopology` - create a topology based on the geometry." +msgid "In ``pgr_dijkstra`` (`One to Many`)" msgstr "" -msgid "" -":doc:`pgr_createVerticesTable` - reconstruct the vertices table based on " -"the source and target information." +msgid "In ``pgr_dijkstra`` (`Many to One`)" msgstr "" -msgid "" -":doc:`pgr_analyzeGraph` - to analyze the edges and vertices of the edge " -"table." +msgid "If needed add the new columns, for example:" msgstr "" -msgid ":doc:`pgr_analyzeOneWay` - to analyze directionality of the edges." +msgid "Migration of ``pgr_drivingDistance``" msgstr "" -msgid ":doc:`pgr_nodeNetwork` - to create nodes to a not noded edge table." +msgid "" +"Starting from `v3.6.0 " +"`__ " +":doc:`pgr_drivingDistance` result columns are being standardized." msgstr "" -msgid ":doc:`pgr_trsp` - Turn Restriction Shortest Path (TRSP)" +msgid "from" msgstr "" -msgid "Functions by categories" +msgid "|result-dij-dd|" msgstr "" -msgid ":doc:`cost-category`" +msgid "to" msgstr "" -msgid ":doc:`costMatrix-category`" +msgid "|result-spantree|" msgstr "" -msgid ":doc:`drivingDistance-category`" +msgid "pgr_drivingDistance(Single vertex)" msgstr "" -msgid ":doc:`KSP-category`" +msgid "pgr_drivingDistance(Multiple vertices)" msgstr "" -msgid ":doc:`spanningTree-family`" +msgid "Output columns were |result-dij-dd|" msgstr "" -msgid ":doc:`BFS-category`" +msgid "Does not have ``start_vid`` and ``depth`` result columns." msgstr "" -msgid ":doc:`DFS-category`" +msgid "Has ``from_v`` instead of ``start_vid`` result column." msgstr "" -msgid "Available Functions but not official pgRouting functions" +msgid "does not have ``depth`` result column." msgstr "" -msgid ":doc:`proposed`" +msgid "Be aware of the existence and name change of the result columns." msgstr "" -msgid ":doc:`experimental`" +msgid "" +"Using `this `__ example." msgstr "" -msgid ":doc:`release_notes`" +msgid "``depth`` contains the depth of the ``node``." msgstr "" -msgid "pgRouting 3.7.0 Release Notes" +msgid "``pred`` contains the predecessor of the ``node``." msgstr "" -#, python-format msgid "" -"To see all issues & pull requests closed by this release see the `Git " -"closed milestone for 3.7.0 " -"`__" -msgstr "" - -msgid "Support" +"If needed filter out the added columns, for example, to return the " +"original columns" msgstr "" msgid "" -"`#2656 `__ Stop support" -" of PostgreSQL12 on pgrouting v3.7" -msgstr "" - -msgid "Stopping support of PostgreSQL 12" +"Using `this `__ example." msgstr "" -msgid "CI does not test for PostgreSQL 12" +msgid "The ``from_v`` result column name changes to ``start_vid``." msgstr "" -msgid "New experimental functions" +msgid "" +"If needed filter out and rename columns, for example, to return the " +"original columns:" msgstr "" -msgid "Metrics" +msgid "Migration of ``pgr_kruskalDD`` / ``pgr_kruskalBFS`` / ``pgr_kruskalDFS``" msgstr "" -msgid "pgr_betweennessCentrality" +msgid "" +"Starting from `v3.7.0 " +"`__ " +":doc:`pgr_kruskalDD`, :doc:`pgr_kruskalBFS` and :doc:`pgr_kruskalDFS` " +"result columns are being standardized." msgstr "" -msgid "Official functions changes" +msgid "|result-bfs|" msgstr "" -msgid "" -"`#2605 `__ Standarize " -"spanning tree functions output" +msgid "``pgr_kruskalDD``" msgstr "" -msgid "Functions:" +msgid "Single vertex" msgstr "" -msgid "``pgr_kruskalDD``" +msgid "Multiple vertices" msgstr "" msgid "``pgr_kruskalDFS``" @@ -4439,703 +4383,486 @@ msgstr "" msgid "``pgr_kruskalBFS``" msgstr "" -msgid "``pgr_primDD``" +msgid "Output columns were |result-bfs|" msgstr "" -msgid "``pgr_primDFS``" +msgid "Single vertex and Multiple vertices" msgstr "" -msgid "``pgr_primBFS``" +msgid "Do not have ``pred`` result column." msgstr "" -msgid "Standarizing output columns to |result-spantree|" +msgid "Be aware of the existence of `pred` result columns." msgstr "" -msgid "Added ``pred`` result columns." +msgid "If needed filter out the added columns" msgstr "" -msgid "Experimental promoted to proposed." +msgid "Kruskal single vertex" msgstr "" msgid "" -"`#2635 `__ " -"pgr_LineGraph ignores directed flag and use negative values for " -"identifiers." +"Using ``pgr_KruskalDD`` as example. Migration is similar to al the " +"affected functions." msgstr "" -msgid "``pgr_lineGraph``" +msgid "" +"Comparing with `this " +"`__ " +"example." msgstr "" -msgid "Promoted to **proposed** signature." +msgid "Now column ``pred`` exists and contains the predecessor of the ``node``." msgstr "" -msgid "Works for directed and undirected graphs." +msgid "Kruskal multiple vertices" msgstr "" -msgid "Code enhancement" +msgid "" +"Comparing with `this " +"`__" +" example." msgstr "" -msgid "" -"`#2599 `__ Driving " -"distance cleanup" +msgid "Migration of ``pgr_KSP``" msgstr "" msgid "" -"`#2607 `__ Read " -"postgresql data on C++" +"Starting from `v3.6.0 " +"`__ :doc:`pgr_KSP` " +"result columns are being standardized." msgstr "" -msgid "" -"`#2614 `__ Clang tidy " -"does not work" +msgid "|ksp-result|" msgstr "" -msgid "All releases" +msgid "|nksp-result|" msgstr "" -msgid "Kruskal - Family of functions" +msgid "``pgr_KSP`` (One to One)" msgstr "" -msgid "Boost Graph Inside" +msgid "Output columns were |ksp-result|" msgstr "" -msgid "" -"Kruskal's algorithm is a greedy minimum spanning tree algorithm that in " -"each cycle finds and adds the edge of the least possible weight that " -"connects any two trees in the forest." +msgid "the columns ``start_vid`` and ``end_vid`` do not exist." msgstr "" -msgid "**The main Characteristics are:**" +msgid "``pgr_KSP`` (One to One) does not have ``start_vid`` and ``end_vid``." msgstr "" -msgid "The total weight of all the edges in the tree or forest is minimized." +msgid "" +"Using `this " +"`__ example." msgstr "" -msgid "Kruskal's running time: :math:`O(E * log E)`" +msgid "" +"If needed filter out the added columns, for example, to return the " +"original columns:" msgstr "" -msgid "Metrics - Family of functions" +msgid "Migration of ``pgr_maxCardinalityMatch``" msgstr "" -msgid "Migration guide" +msgid "" +":doc:`pgr_maxCardinalityMatch` works only for undirected graphs, " +"therefore the ``directed`` flag has been removed." msgstr "" msgid "" -"Several functions are having changes on the signatures, and/or have been " -"replaced by new functions." +"Starting from `v3.4.0 " +"`__" msgstr "" -msgid "Results can be different because of the changes." +msgid "Signature to be migrated:" msgstr "" -msgid "All deprecated functions will be removed on next mayor version 4.0.0" +msgid "Migration is needed, because:" msgstr "" -msgid "Migration of functions" +msgid "Use ``cost`` and ``reverse_cost`` on the inner query" msgstr "" -msgid "Migrating functions" +msgid "Results are ordered" msgstr "" -msgid "Migration of ``pgr_aStar``" +msgid "Works for undirected graphs." msgstr "" -msgid "" -"Starting from `v3.6.0 " -"`__" +msgid "New signature" msgstr "" -msgid "Signatures to be migrated:" +msgid "``pgr_maxCardinalityMatch(text)`` returns only ``edge`` column." msgstr "" -msgid "``pgr_aStar`` (`One to One`)" +msgid "The optional flag ``directed`` is removed." msgstr "" -msgid "``pgr_aStar`` (`One to Many`)" +msgid "Before migration" msgstr "" -msgid "``pgr_aStar`` (`Many to One`)" +msgid "" +"Columns used are ``going`` and ``coming`` to represent the existence of " +"an edge." msgstr "" -msgid "Before Migration" +msgid "" +"Flag ``directed`` was used to indicate if it was for a **directed** or " +"**undirected** graph." msgstr "" -msgid "Output columns were |old-generic-result|" +msgid "The flag ``directed`` is ignored." msgstr "" msgid "" -"Depending on the overload used, the columns ``start_vid`` and ``end_vid``" -" might be missing:" +"Regardless of it's value it gives the result considering the graph as " +"**undirected**." msgstr "" -msgid "``pgr_aStar`` (`One to One`) does not have ``start_vid`` and ``end_vid``." +msgid "" +"Use the columns ``cost`` and ``reverse_cost`` to represent the existence " +"of an edge." msgstr "" -msgid "``pgr_aStar`` (`One to Many`) does not have ``start_vid``." +msgid "Do not use the flag ``directed``." msgstr "" -msgid "``pgr_aStar`` (`Many to One`) does not have ``end_vid``." +msgid "In the query returns only ``edge`` column." msgstr "" -msgid "Migration" +msgid "Migration of ``pgr_primDD`` / ``pgr_primBFS`` / ``pgr_primDFS``" msgstr "" -msgid "Be aware of the existence of the additional columns." +msgid "" +"Starting from `v3.7.0 " +"`__ :doc:`pgr_primDD`, " +":doc:`pgr_primBFS` and :doc:`pgr_primDFS` result columns are being " +"standardized." msgstr "" -msgid "In ``pgr_aStar`` (`One to One`)" +msgid "``pgr_primDD``" msgstr "" -msgid "``start_vid`` contains the **start vid** parameter value." +msgid "``pgr_primDFS``" msgstr "" -msgid "``end_vid`` contains the **end vid** parameter value." +msgid "``pgr_primBFS``" msgstr "" -msgid "In ``pgr_aStar`` (`One to Many`)" +msgid "Prim single vertex" msgstr "" -msgid "In ``pgr_aStar`` (`Many to One`)" +msgid "" +"Using ``pgr_primDD`` as example. Migration is similar to al the affected " +"functions." msgstr "" -msgid "If needed filter out the added columns, for example:" +msgid "" +"Comparing with `this `__ example." +msgstr "" + +msgid "Prim multiple vertices" msgstr "" msgid "" -"If needed add the new columns, similar to the following example where " -"``pgr_dijkstra`` is used, and the function had to be modified to be able " -"to return the new columns:" +"Comparing with `this `__ example." +msgstr "" + +msgid "Migration of ``pgr_withPointsDD``" msgstr "" msgid "" -"In `v3.0 `__ the function ``my_dijkstra`` uses ``pgr_dijkstra``." +"Starting from `v3.6.0 " +"`__ " +":doc:`pgr_withPointsDD` result columns are being standardized." +msgstr "" + +msgid "|result-generic-no-seq|" msgstr "" msgid "" -"Starting from `v3.5 `__ the function ``my_dijkstra`` returns the new additional columns" -" of ``pgr_dijkstra``." +"And ``driving_side`` parameter changed from named optional to unnamed " +"compulsory **driving side** and its validity differ for directed and " +"undirected graphs." msgstr "" -msgid "Migration of ``pgr_bdAstar``" +msgid "``pgr_withPointsDD`` (Single vertex)" msgstr "" -msgid "``pgr_bdAstar`` (`One to One`)" +msgid "``pgr_withPointsDD`` (Multiple vertices)" msgstr "" -msgid "``pgr_bdAstar`` (`One to Many`)" +msgid "Output columns were |result-1-1-no-seq|" msgstr "" -msgid "``pgr_bdAstar`` (`Many to One`)" +msgid "Does not have ``start_vid``, ``pred`` and ``depth`` result columns." msgstr "" msgid "" -"``pgr_bdAstar`` (`One to One`) does not have ``start_vid`` and " -"``end_vid``." +"``driving_side`` parameter was named optional now it is compulsory " +"unnamed." msgstr "" -msgid "``pgr_bdAstar`` (`One to Many`) does not have ``start_vid``." +msgid "``pgr_withPointsDD`` (`Multiple vertices`)" msgstr "" -msgid "``pgr_bdAstar`` (`Many to One`) does not have ``end_vid``." +msgid "Output columns were |result-m-1-no-seq|" msgstr "" -msgid "In ``pgr_bdAstar`` (`One to One`)" +msgid "Does not have ``depth`` and ``pred`` result columns." msgstr "" -msgid "In ``pgr_bdAstar`` (`One to Many`)" +msgid "Driving side was optional" msgstr "" -msgid "In ``pgr_bdAstar`` (`Many to One`)" +msgid "The default values on this query are:" msgstr "" -msgid "Migration of ``pgr_dijkstra``" +msgid "directed" msgstr "" -msgid "" -"Starting from `v3.5.0 " -"`__" +msgid "true" msgstr "" -msgid "``pgr_dijkstra`` (`One to One`)" +msgid "driving_side" msgstr "" -msgid "``pgr_dijkstra`` (`One to Many`)" +msgid "'b'" msgstr "" -msgid "``pgr_dijkstra`` (`Many to One`)" +msgid "details" msgstr "" -msgid "" -"``pgr_dijkstra`` (`One to One`) does not have ``start_vid`` and " -"``end_vid``." +msgid "false" msgstr "" -msgid "``pgr_dijkstra`` (`One to Many`) does not have ``start_vid``." +msgid "Driving side was named optional" msgstr "" -msgid "``pgr_dijkstra`` (`Many to One`) does not have ``end_vid``." +msgid "On directed graph ``b`` could be used as **driving side**" msgstr "" -msgid "In ``pgr_dijkstra`` (`One to One`)" +msgid "On undirected graph ``r`` could be used as **driving side**" msgstr "" -msgid "In ``pgr_dijkstra`` (`One to Many`)" +msgid "Also ``l`` could be used as **driving side**" msgstr "" -msgid "In ``pgr_dijkstra`` (`Many to One`)" +msgid "After Migration" msgstr "" -msgid "If needed add the new columns, for example:" +msgid "Be aware of the existence of the additional result Columns." msgstr "" -msgid "Migration of ``pgr_drivingdistance``" +msgid "New output columns are |result-spantree|" msgstr "" msgid "" -"Starting from `v3.6.0 " -"`__ " -":doc:`pgr_drivingDistance` result columns are being standardized." -msgstr "" - -msgid "from" +"**driving side** parameter is unnamed compulsory, and valid values differ" +" for directed and undirected graphs." msgstr "" -msgid "|result-dij-dd|" +msgid "Does not have a default value." msgstr "" -msgid "to" +msgid "In directed graph: valid values are [``r``, ``R``, ``l``, ``L``]" msgstr "" -msgid "|result-spantree|" +msgid "In undirected graph: valid values are [``b``, ``B``]" msgstr "" -msgid "``pgr_drivingdistance`` (Single vertex)" +msgid "Using an invalid value throws an ``ERROR``." msgstr "" -msgid "``pgr_drivingdistance`` (Multiple vertices)" +msgid "" +"Using `this `__ example." msgstr "" -msgid "Output columns were |result-dij-dd|" +msgid "" +"``depth`` contains the **depth** from the ``start_vid`` vertex to the " +"``node``." msgstr "" -msgid "Does not have ``start_vid`` and ``depth`` result columns." +msgid "" +"To migrate, use an unnamed valid value for **driving side** after the " +"**distance** parameter:" msgstr "" -msgid "Has ``from_v`` instead of ``start_vid`` result column." +msgid "To get results from previous versions:" msgstr "" -msgid "does not have ``depth`` result column." +msgid "filter out the additional columns, for example;" msgstr "" -msgid "Be aware of the existence and name change of the result columns." +msgid "" +"When ``details => false`` to remove the points use ``WHERE node >= 0 OR " +"cost = 0``" msgstr "" msgid "" -"Using `this `__ example." +"Using `this `__ example." msgstr "" -msgid "``depth`` contains the depth of the ``node``." +msgid "Filter out the additional columns" msgstr "" -msgid "``pred`` contains the predecessor of the ``node``." +msgid "Migration of ``pgr_withPointsKSP``" msgstr "" msgid "" -"If needed filter out the added columns, for example, to return the " -"original columns" +"Starting from `v3.6.0 " +"`__ " +":doc:`pgr_withPointsKSP` result columns are being standardized." msgstr "" msgid "" -"Using `this `__ example." +"And ``driving side`` parameter changed from named optional to unnamed " +"compulsory **driving side** and its validity differ for directed and " +"undirected graphs." msgstr "" -msgid "The ``from_v`` result column name changes to ``start_vid``." +msgid "``pgr_withPointsKSP`` (`One to One`)" msgstr "" -msgid "" -"If needed filter out and rename columns, for example, to return the " -"original columns:" +msgid "Output columns were |old-pid-result|" msgstr "" -msgid "Migration of ``pgr_kruskalDD`` / ``pgr_kruskalBFS`` / ``pgr_kruskalDFS``" +msgid "New output columns are |nksp-result|" msgstr "" msgid "" -"Starting from `v3.7.0 " -"`__ " -":doc:`pgr_kruskalDD`, :doc:`pgr_kruskalBFS` and :doc:`pgr_kruskalDFS` " -"result columns are being standardized." +"Using `this " +"`__ " +"example." msgstr "" -msgid "|result-bfs|" +msgid "" +"If needed filter out the additional columns, for example, to return the " +"original columns:" msgstr "" -msgid "Single vertex" +msgid "Migration of ``pgr_trsp`` (Vertices)" msgstr "" -msgid "Multiple vertices" +msgid "Signature:" msgstr "" -msgid "Output columns were |result-bfs|" +msgid "Deprecated" msgstr "" -msgid "Single vertex and Multiple vertices" +msgid "`v3.4.0 `__" msgstr "" -msgid "Do not have ``pred`` result column." +msgid "Removed" msgstr "" -msgid "Be aware of the existence of `pred` result columns." +msgid "`v4.0.0 `__" msgstr "" -msgid "If needed filter out the added columns" +msgid ":doc:`pgr_dijkstra`" msgstr "" -msgid "Kruskal single vertex" +msgid ":doc:`pgr_trsp`" msgstr "" -msgid "" -"Using ``pgr_KruskalDD`` as example. Migration is similar to al the " -"affected functions." +msgid "`Migration of restrictions`_" msgstr "" -msgid "" -"Comparing with `this " -"`__ " -"example." +msgid "Use ``pgr_dijkstra`` when there are no restrictions." msgstr "" -msgid "Now column ``pred`` exists and contains the predecessor of the ``node``." +msgid "Use :doc:`pgr_dijkstra` instead." msgstr "" -msgid "Kruskal multiple vertices" +msgid "To get the original column names:" msgstr "" -msgid "" -"Comparing with `this " -"`__" -" example." +msgid "``id1`` is the node" msgstr "" -msgid "Migration of ``pgr_KSP``" +msgid "``id2`` is the edge" msgstr "" -msgid "" -"Starting from `v3.6.0 " -"`__ :doc:`pgr_KSP` " -"result columns are being standardized." +msgid "Use ``pgr_trsp`` when there are restrictions." msgstr "" -msgid "|ksp-result|" +msgid "Use :doc:`pgr_trsp` (One to One) instead." msgstr "" -msgid "|nksp-result|" +msgid "Migration of ``pgr_trsp`` (Edges)" msgstr "" -msgid "``pgr_KSP`` (One to One)" +msgid ":doc:`pgr_withPoints`" msgstr "" -msgid "Output columns were |ksp-result|" +msgid ":doc:`pgr_trsp_withPoints`" msgstr "" -msgid "the columns ``start_vid`` and ``end_vid`` do not exist." +msgid "Use ``pgr_withPoints`` when there are no restrictions." msgstr "" -msgid "``pgr_KSP`` (One to One) does not have ``start_vid`` and ``end_vid``." +msgid "Use :doc:`pgr_withPoints` (One to One) instead." msgstr "" -msgid "" -"Using `this " -"`__ example." +msgid "Use ``pgr_trsp_withPoints`` when there are restrictions." msgstr "" -msgid "" -"If needed filter out the added columns, for example, to return the " -"original columns:" +msgid "Use :doc:`pgr_trsp_withPoints` instead." msgstr "" -msgid "Migration of ``pgr_maxCardinalityMatch``" +msgid "Migration of ``pgr_trspViaVertices``" msgstr "" -msgid "" -":doc:`pgr_maxCardinalityMatch` works only for undirected graphs, " -"therefore the ``directed`` flag has been removed." +msgid ":doc:`pgr_dijkstraVia`" msgstr "" -msgid "" -"Starting from `v3.4.0 " -"`__" +msgid ":doc:`pgr_trspVia`" msgstr "" -msgid "Signature to be migrated:" +msgid "Use ``pgr_dijkstraVia`` when there are no restrictions" msgstr "" -msgid "Migration is needed, because:" +msgid "Use :doc:`pgr_dijkstraVia` instead." msgstr "" -msgid "Use ``cost`` and ``reverse_cost`` on the inner query" +msgid "``id1`` is the path identifier" msgstr "" -msgid "Results are ordered" +msgid "``id2`` is the node" msgstr "" -msgid "Works for undirected graphs." +msgid "``id3`` is the edge" msgstr "" -msgid "New signature" +msgid "Use ``pgr_trspVia`` when there are restrictions" msgstr "" -msgid "``pgr_maxCardinalityMatch(text)`` returns only ``edge`` column." +msgid "Use :doc:`pgr_trspVia` instead." msgstr "" -msgid "The optional flag ``directed`` is removed." +msgid "Migration of ``pgr_trspViaEdges``" msgstr "" -msgid "Before migration" +msgid ":doc:`pgr_withPointsVia`" msgstr "" -msgid "" -"Columns used are ``going`` and ``coming`` to represent the existence of " -"an edge." +msgid ":doc:`pgr_trspVia_withPoints`" msgstr "" -msgid "" -"Flag ``directed`` was used to indicate if it was for a **directed** or " -"**undirected** graph." +msgid "Use ``pgr_withPointsVia`` when there are no restrictions" msgstr "" -msgid "The flag ``directed`` is ignored." +msgid "Use :doc:`pgr_withPointsVia` instead." msgstr "" -msgid "" -"Regardless of it's value it gives the result considering the graph as " -"**undirected**." -msgstr "" - -msgid "" -"Use the columns ``cost`` and ``reverse_cost`` to represent the existence " -"of an edge." -msgstr "" - -msgid "Do not use the flag ``directed``." -msgstr "" - -msgid "In the query returns only ``edge`` column." -msgstr "" - -msgid "Migration of ``pgr_primDD`` / ``pgr_primBFS`` / ``pgr_primDFS``" -msgstr "" - -msgid "" -"Starting from `v3.7.0 " -"`__ :doc:`pgr_primDD`, " -":doc:`pgr_primBFS` and :doc:`pgr_primDFS` result columns are being " -"standardized." -msgstr "" - -msgid "Prim single vertex" -msgstr "" - -msgid "" -"Using ``pgr_primDD`` as example. Migration is similar to al the affected " -"functions." -msgstr "" - -msgid "" -"Comparing with `this `__ example." -msgstr "" - -msgid "Prim multiple vertices" -msgstr "" - -msgid "" -"Comparing with `this `__ example." -msgstr "" - -msgid "Migration of ``pgr_withPointsDD``" -msgstr "" - -msgid "" -"Starting from `v3.6.0 " -"`__ " -":doc:`pgr_withPointsDD` result columns are being standardized." -msgstr "" - -msgid "|result-generic-no-seq|" -msgstr "" - -msgid "" -"And ``driving_side`` parameter changed from named optional to unnamed " -"compulsory **driving side** and its validity differ for directed and " -"undirected graphs." -msgstr "" - -msgid "``pgr_withPointsDD`` (Single vertex)" -msgstr "" - -msgid "``pgr_withPointsDD`` (Multiple vertices)" -msgstr "" - -msgid "Output columns were |result-1-1-no-seq|" -msgstr "" - -msgid "Does not have ``start_vid``, ``pred`` and ``depth`` result columns." -msgstr "" - -msgid "" -"``driving_side`` parameter was named optional now it is compulsory " -"unnamed." -msgstr "" - -msgid "``pgr_withPointsDD`` (`Multiple vertices`)" -msgstr "" - -msgid "Output columns were |result-m-1-no-seq|" -msgstr "" - -msgid "Does not have ``depth`` and ``pred`` result columns." -msgstr "" - -msgid "Driving side was optional" -msgstr "" - -msgid "The default values on this query are:" -msgstr "" - -msgid "directed" -msgstr "" - -msgid "true" -msgstr "" - -msgid "driving_side" -msgstr "" - -msgid "'b'" -msgstr "" - -msgid "details" -msgstr "" - -msgid "false" -msgstr "" - -msgid "Driving side was named optional" -msgstr "" - -msgid "On directed graph ``b`` could be used as **driving side**" -msgstr "" - -msgid "On undirected graph ``r`` could be used as **driving side**" -msgstr "" - -msgid "Also ``l`` could be used as **driving side**" -msgstr "" - -msgid "After Migration" -msgstr "" - -msgid "Be aware of the existence of the additional result Columns." -msgstr "" - -msgid "New output columns are |result-spantree|" -msgstr "" - -msgid "" -"**driving side** parameter is unnamed compulsory, and valid values differ" -" for directed and undirected graphs." -msgstr "" - -msgid "Does not have a default value." -msgstr "" - -msgid "In directed graph: valid values are [``r``, ``R``, ``l``, ``L``]" -msgstr "" - -msgid "In undirected graph: valid values are [``b``, ``B``]" -msgstr "" - -msgid "Using an invalid value throws an ``ERROR``." -msgstr "" - -msgid "" -"Using `this `__ example." -msgstr "" - -msgid "" -"``depth`` contains the **depth** from the ``start_vid`` vertex to the " -"``node``." -msgstr "" - -msgid "" -"To migrate, use an unnamed valid value for **driving side** after the " -"**distance** parameter:" -msgstr "" - -msgid "To get results from previous versions:" -msgstr "" - -msgid "filter out the additional columns, for example;" -msgstr "" - -msgid "" -"When ``details => false`` to remove the points use ``WHERE node >= 0 OR " -"cost = 0``" -msgstr "" - -msgid "" -"Using `this `__ example." -msgstr "" - -msgid "Filter out the additional columns" -msgstr "" - -msgid "Migration of ``pgr_withPointsKSP``" -msgstr "" - -msgid "" -"Starting from `v3.6.0 " -"`__ " -":doc:`pgr_withPointsKSP` result columns are being standardized." +msgid "Use ``pgr_trspVia_withPoints`` when there are restrictions" msgstr "" -msgid "" -"And ``driving side`` parameter changed from named optional to unnamed " -"compulsory **driving side** and its validity differ for directed and " -"undirected graphs." -msgstr "" - -msgid "``pgr_withPointsKSP`` (`One to One`)" -msgstr "" - -msgid "Output columns were |old-pid-result|" -msgstr "" - -msgid "New output columns are |nksp-result|" -msgstr "" - -msgid "" -"Using `this " -"`__ " -"example." -msgstr "" - -msgid "" -"If needed filter out the additional columns, for example, to return the " -"original columns:" -msgstr "" - -msgid "Migration of turn restrictions" +msgid "Use :doc:`pgr_trspVia_withPoints` instead." msgstr "" msgid "Migration of restrictions" @@ -5282,325 +5009,93 @@ msgstr "" msgid "The migrated table contents:" msgstr "" -msgid "Migration of ``pgr_trsp`` (Vertices)" +msgid ":doc:`withPoints-category`" msgstr "" -msgid "" -":doc:`pgr_trsp` signatures have changed and many issues have been fixed " -"in the new signatures. This section will show how to migrate from the old" -" signatures to the new replacement functions. This also affects the " -"restrictions." +msgid "Ordering - Family of functions" msgstr "" -msgid "The integral type of the ``Edges SQL`` can only be ``INTEGER``." +msgid "pgRouting Concepts" msgstr "" -msgid "The floating point type of the ``Edges SQL`` can only be ``FLOAT``." +msgid "" +"This is a simple guide that go through some of the steps for getting " +"started with pgRouting. This guide covers:" msgstr "" -msgid "``directed`` flag is compulsory." +msgid "Graphs" msgstr "" -msgid "Does not autodetect if ``reverse_cost`` column exist." +msgid "A graph is an ordered pair :math:`G = (V ,E)` where:" msgstr "" -msgid "" -"User must be careful to match the existence of the column with the value " -"of ``has_rcost`` parameter." +msgid ":math:`V` is a set of vertices, also called nodes." msgstr "" -msgid "The restrictions inner query is optional." +#, python-brace-format +msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V \\}`" msgstr "" -msgid "The output column names are meaningless" +msgid "There are different kinds of graphs:" msgstr "" -msgid "Migrate by using:" +#, python-brace-format +msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V\\}`" msgstr "" -msgid ":doc:`pgr_dijkstra` when there are no restrictions," +msgid "Undirected simple graph" msgstr "" -msgid ":doc:`pgr_trsp` (One to One) when there are restrictions." +#, python-brace-format +msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V, u \\neq v\\}`" msgstr "" -msgid "Migrating ``pgr_trsp`` (Vertices) using ``pgr_dijkstra``" +#, python-brace-format +msgid ":math:`E \\subseteq \\{( u, v ) \\mid (u , v) \\in (V X V) \\}`" msgstr "" -msgid "The following query does not have restrictions." +msgid "Directed simple graph" msgstr "" -msgid "A message about deprecation is shown" +#, python-brace-format +msgid ":math:`E \\subseteq \\{( u, v ) \\mid (u , v) \\in (V X V), u \\neq v\\}`" msgstr "" -msgid "Deprecated functions will be removed on the next mayor version 4.0.0" +msgid "Graphs:" msgstr "" -msgid "Use :doc:`pgr_dijkstra` instead." +msgid "Do not have geometries." msgstr "" -msgid "The types casting has been removed." +msgid "" +"Some graph theory problems require graphs to have weights, called " +"**cost** in pgRouting." msgstr "" -msgid ":doc:`pgr_dijkstra`:" +msgid "In pgRouting there are several ways to represent a graph on the database:" msgstr "" -msgid "Autodetects if ``reverse_cost`` column is in the edges SQL." +msgid "With ``cost``" msgstr "" -msgid "Accepts ``ANY-INTEGER`` on integral types" +msgid "(``id``, ``source``, ``target``, ``cost``)" msgstr "" -msgid "Accepts ``ANY-NUMERICAL`` on floating point types" +msgid "With ``cost`` and ``reverse_cost``" msgstr "" -msgid "``directed`` flag has a default value of ``true``." +msgid "(``id``, ``source``, ``target``, ``cost``, ``reverse_cost``)" msgstr "" -msgid "Use the same value that on the original query." +msgid "" +"Identifier of the edge. Requirement to use the database in a consistent. " +"manner." msgstr "" -msgid "In this example it is ``true`` which is the default value." +msgid "Identifier of a vertex." msgstr "" -msgid "The flag has been omitted and the default is been used." -msgstr "" - -msgid "" -"When the need of using strictly the same (meaningless) names and types of" -" the function been migrated then:" -msgstr "" - -msgid "``id1`` is the node" -msgstr "" - -msgid "``id2`` is the edge" -msgstr "" - -msgid "Migrating ``pgr_trsp`` (Vertices) using ``pgr_trsp``" -msgstr "" - -msgid "The following query has restrictions." -msgstr "" - -msgid "The restrictions are the last parameter of the function" -msgstr "" - -msgid "Using the old structure of restrictions" -msgstr "" - -msgid "Use :doc:`pgr_trsp` (One to One) instead." -msgstr "" - -msgid "The new structure of restrictions is been used." -msgstr "" - -msgid "It is the second parameter." -msgstr "" - -msgid ":doc:`pgr_trsp`:" -msgstr "" - -msgid "Migration of ``pgr_trsp`` (Edges)" -msgstr "" - -msgid "The integral types of the ``sql`` can only be ``INTEGER``." -msgstr "" - -msgid "The floating point type of the ``sql`` can only be ``FLOAT``." -msgstr "" - -msgid "For these migration guide the following points will be used:" -msgstr "" - -msgid ":doc:`pgr_withPoints` when there are no restrictions," -msgstr "" - -msgid ":doc:`pgr_trsp_withPoints` (One to One) when there are restrictions." -msgstr "" - -msgid "Migrating ``pgr_trsp`` (Edges) using ``pgr_withPoints``" -msgstr "" - -msgid "Use :doc:`pgr_withPoints` instead." -msgstr "" - -msgid "Do not show details, as the deprecated function does not show details." -msgstr "" - -msgid ":doc:`pgr_withPoints`:" -msgstr "" - -msgid "On the points query do not include the ``side`` column." -msgstr "" - -msgid "" -"When the need of using strictly the same (meaningless) names and types, " -"and node values of the function been migrated then:" -msgstr "" - -msgid "Migrating ``pgr_trsp`` (Edges) using ``pgr_trsp_withPoints``" -msgstr "" - -msgid "Use :doc:`pgr_trsp_withPoints` instead." -msgstr "" - -msgid ":doc:`pgr_trsp_withPoints`:" -msgstr "" - -msgid "Migration of ``pgr_trspViaVertices``" -msgstr "" - -msgid "The integral types of the ``Edges SQL`` can only be ``INTEGER``." -msgstr "" - -msgid ":doc:`pgr_dijkstraVia` when there are no restrictions," -msgstr "" - -msgid ":doc:`pgr_trspVia` when there are restrictions." -msgstr "" - -msgid "Migrating ``pgr_trspViaVertices`` using ``pgr_dijkstraVia``" -msgstr "" - -msgid "Use :doc:`pgr_dijkstraVia` instead." -msgstr "" - -msgid ":doc:`pgr_dijkstraVia`:" -msgstr "" - -msgid "``id1`` is the path identifier" -msgstr "" - -msgid "``id2`` is the node" -msgstr "" - -msgid "``id3`` is the edge" -msgstr "" - -msgid "Migrating ``pgr_trspViaVertices`` using ``pgr_trspVia``" -msgstr "" - -msgid "Use :doc:`pgr_trspVia` instead." -msgstr "" - -msgid ":doc:`pgr_trspVia`:" -msgstr "" - -msgid "Migration of ``pgr_trspViaEdges``" -msgstr "" - -msgid "" -"And will travel thru the following Via points " -":math:`4\\rightarrow3\\rightarrow6`" -msgstr "" - -msgid ":doc:`pgr_withPointsVia` when there are no restrictions," -msgstr "" - -msgid ":doc:`pgr_trspVia_withPoints` when there are restrictions." -msgstr "" - -msgid "Migrating ``pgr_trspViaEdges`` using ``pgr_withPointsVia``" -msgstr "" - -msgid "Use :doc:`pgr_withPointsVia` instead." -msgstr "" - -msgid ":doc:`pgr_withPointsVia`:" -msgstr "" - -msgid "Migrating ``pgr_trspViaEdges`` using ``pgr_trspVia_withPoints``" -msgstr "" - -msgid "Use :doc:`pgr_trspVia_withPoints` instead." -msgstr "" - -msgid ":doc:`pgr_trspVia_withPoints`:" -msgstr "" - -msgid ":doc:`withPoints-category`" -msgstr "" - -msgid "Ordering - Family of functions" -msgstr "" - -msgid "pgRouting Concepts" -msgstr "" - -msgid "" -"This is a simple guide that go through some of the steps for getting " -"started with pgRouting. This guide covers:" -msgstr "" - -msgid "Graphs" -msgstr "" - -msgid "A graph is an ordered pair :math:`G = (V ,E)` where:" -msgstr "" - -msgid ":math:`V` is a set of vertices, also called nodes." -msgstr "" - -msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V \\}`" -msgstr "" - -msgid "There are different kinds of graphs:" -msgstr "" - -msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V\\}`" -msgstr "" - -msgid "Undirected simple graph" -msgstr "" - -msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V, u \\neq v\\}`" -msgstr "" - -msgid ":math:`E \\subseteq \\{( u, v ) \\mid (u , v) \\in (V X V) \\}`" -msgstr "" - -msgid "Directed simple graph" -msgstr "" - -msgid ":math:`E \\subseteq \\{( u, v ) \\mid (u , v) \\in (V X V), u \\neq v\\}`" -msgstr "" - -msgid "Graphs:" -msgstr "" - -msgid "Do not have geometries." -msgstr "" - -msgid "" -"Some graph theory problems require graphs to have weights, called " -"**cost** in pgRouting." -msgstr "" - -msgid "In pgRouting there are several ways to represent a graph on the database:" -msgstr "" - -msgid "With ``cost``" -msgstr "" - -msgid "(``id``, ``source``, ``target``, ``cost``)" -msgstr "" - -msgid "With ``cost`` and ``reverse_cost``" -msgstr "" - -msgid "(``id``, ``source``, ``target``, ``cost``, ``reverse_cost``)" -msgstr "" - -msgid "" -"Identifier of the edge. Requirement to use the database in a consistent. " -"manner." -msgstr "" - -msgid "Identifier of a vertex." -msgstr "" - -msgid "Weight of the edge (``source``, ``target``):" +msgid "Weight of the edge (``source``, ``target``):" msgstr "" msgid "When negative the edge (``source``, ``target``) do not exist on the graph." @@ -5643,6 +5138,7 @@ msgstr "" msgid "All vertices in ``source`` and ``target`` are part of the graph." msgstr "" +#, python-brace-format msgid "" "In a directed graph the edge :math:`(source_{id}, target_{id}, " "cost_{id})` has directionality: :math:`source_{id} \\rightarrow " @@ -5658,17 +5154,20 @@ msgstr "" msgid "The data is representing the following graph:" msgstr "" +#, python-brace-format msgid "" "In an undirected graph the edge :math:`(source_{id}, target_{id}, " "cost_{id})` does not have directionality: :math:`source_{id} " "\\frac{\\;\\;\\;\\;\\;}{} target_{id}`" msgstr "" +#, python-brace-format msgid "" "In terms of a directed graph is like having two edges: :math:`source_{id}" " \\leftrightarrow target_{id}`" msgstr "" +#, python-brace-format msgid "" "Edge :math:`2` (:math:`1 \\frac{\\;\\;\\;\\;\\;}{} 3`) is not part of the" " graph." @@ -5677,9 +5176,6 @@ msgstr "" msgid "Graph with ``cost`` and ``reverse_cost``" msgstr "" -msgid "The weighted directed graph, :math:`G_d(V,E)`, is defined by:" -msgstr "" - msgid "``SELECT id, source, target, cost, reverse_cost FROM edges``" msgstr "" @@ -5709,11 +5205,13 @@ msgstr "" msgid "In a directed graph both edges have directionality" msgstr "" +#, python-brace-format msgid "" "edge :math:`(source_{id}, target_{id}, cost_{id})` has directionality: " ":math:`source_{id} \\rightarrow target_{id}`" msgstr "" +#, python-brace-format msgid "" "edge :math:`(target_{id}, source_{id}, reverse\\_cost_{id})` has " "directionality: :math:`target_{id} \\rightarrow source_{id}`" @@ -5731,11 +5229,13 @@ msgstr "" msgid "In a directed graph both edges do not have directionality" msgstr "" +#, python-brace-format msgid "" "Edge :math:`(source_{id}, target_{id}, cost_{id})` is :math:`source_{id} " "\\frac{\\;\\;\\;\\;\\;}{} target_{id}`" msgstr "" +#, python-brace-format msgid "" "Edge :math:`(target_{id}, source_{id}, reverse\\_cost_{id})` is " ":math:`target_{id} \\frac{\\;\\;\\;\\;\\;}{} source_{id}`" @@ -5750,9 +5250,11 @@ msgstr "" msgid ":math:`target_i \\leftrightarrow source_i`" msgstr "" +#, python-brace-format msgid ":math:`2` (:math:`1 \\frac{\\;\\;\\;\\;\\;}{} 3`)" msgstr "" +#, python-brace-format msgid ":math:`3` (:math:`3 \\frac{\\;\\;\\;\\;\\;}{} 2`)" msgstr "" @@ -5788,12 +5290,14 @@ msgstr "" msgid "No geometries associated to the vertices or edges" msgstr "" +#, python-brace-format msgid "Has 6 vertices :math:`\\{1,2,3,4,5,6\\}`" msgstr "" msgid "Has 9 edges:" msgstr "" +#, python-brace-format msgid "" ":math:`\\begin{split} \\begin{align} E = & \\{(1,2,7), (1,3,9), (1,6,14)," " \\\\ & (2,3,10), (2,4,13), \\\\ & (3,4,11), (3,6,2), \\\\ & (4,5,6), " @@ -6246,6 +5750,7 @@ msgstr "" msgid "To get the graph connectivity:" msgstr "" +#, python-brace-format msgid "" "In this example, the component :math:`2` consists of vertices " ":math:`\\{2, 4\\}` and both vertices are also part of the dead end result" @@ -6341,17 +5846,29 @@ msgstr "" msgid "To get the dead ends:" msgstr "" +msgid "A dead end happens when" +msgstr "" + msgid "" -"That information is correct, for example, when the dead end is on the " -"limit of the imported graph." +"The vertex is the limit of a cul-de-sac, a no-through road or a no-exit " +"road." +msgstr "" + +msgid "The vertex is on the limit of the imported graph." +msgstr "" + +msgid "If a larger graph is imported then the vertex might not be a dead end" msgstr "" msgid "" -"Visually node :math:`4` looks to be as start/ending of 3 edges, but it is" -" not." +"Node :math:`4`, is a dead end on the query, even that it visually looks " +"like an end point of 3 edges." msgstr "" -msgid "Is that correct?" +msgid "Is node :math:`4` a dead end or not?" +msgstr "" + +msgid "The answer to that question will depend on the application." msgstr "" msgid "Is there such a small curb:" @@ -6375,9 +5892,12 @@ msgid "" " to the segment?" msgstr "" +msgid "Depending on the answer, modification of the data might be needed." +msgstr "" + msgid "" -"When there are many dead ends, to speed up, the :doc:`contraction-family`" -" functions can be used to divide the problem." +"When there are many dead ends, to speed up processing, the :doc" +":`contraction-family` functions can be used to contract the graph." msgstr "" msgid "Linear edges" @@ -6387,13 +5907,15 @@ msgid "To get the linear edges:" msgstr "" msgid "" -"This information is correct, for example, when the application is taking " -"into account speed bumps, stop signals." +"These linear vertices are correct, for example, when those the vertices " +"are speed bumps, stop signals and the application is taking them into " +"account." msgstr "" msgid "" -"When there are many linear edges, to speed up, the :doc:`contraction-" -"family` functions can be used to divide the problem." +"When there are many linear vertices, that need not to be taken into " +"account, to speed up the processing, the :doc:`contraction-family` " +"functions can be used to contract the problem." msgstr "" msgid "Function's structure" @@ -6653,9 +6175,6 @@ msgstr "" msgid "Parameters for the Via functions" msgstr "" -msgid ":doc:`pgr_dijkstraVia`" -msgstr "" - msgid "SQL query as described." msgstr "" @@ -6695,9 +6214,6 @@ msgstr "" msgid "For the TRSP functions" msgstr "" -msgid ":doc:`pgr_trsp`" -msgstr "" - msgid "Array of identifiers of destination vertices." msgstr "" @@ -6749,9 +6265,6 @@ msgstr "" msgid "Used in functions the following:" msgstr "" -msgid ":doc:`pgr_withPoints`" -msgstr "" - msgid "" "Returns set of ``(seq, path_seq [, start_pid] [, end_pid], node, edge, " "cost, agg_cost)``" @@ -6901,6 +6414,12 @@ msgid "" "in the routing function and is within the area of the results." msgstr "" +msgid "Given this area:" +msgstr "" + +msgid "Calculate a route:" +msgstr "" + msgid "How to contribute" msgstr "" @@ -6928,7 +6447,7 @@ msgid "" "parallel-edges-(KSP)>`__" msgstr "" -msgid "Adding Functionaity to pgRouting" +msgid "Adding Functionality to pgRouting" msgstr "" msgid "" @@ -7037,7 +6556,7 @@ msgid "Upgrading the database" msgstr "" msgid "" -"To upgrade pgRouting in the database to version 3.7.0 use the following " +"To upgrade pgRouting in the database to version 4.0.0 use the following " "command:" msgstr "" @@ -7418,18 +6937,18 @@ msgstr "" msgid "" "Aasheesh Tiwari, Abhinav Jain, Aditya Pratap Singh, Adrien Berchet, Akio " -"Takubo, Andrea Nardelli, Anthony Tasca, Anton Patrushev, Aryan Gupta, " -"Ashraf Hossain, Ashish Kumar, Cayetano Benavent, Christian Gonzalez, " -"Daniel Kastl, Dave Potts, David Techer, Denis Rykov, Ema Miyawaki, " -"Esteban Zimanyi, Florian Thurkow, Frederic Junod, Gerald Fenoy, Gudesa " -"Venkata Sai Akhil, Hang Wu, Himanshu Raj, Imre Samu, Jay Mahadeokar, " -"Jinfu Leng, Kai Behncke, Kishore Kumar, Ko Nagase, Mahmoud Sakr, Manikata" -" Kondeti, Mario Basa, Martin Wiesenhaan, Maxim Dubinin, Maoguang Wang, " -"Mohamed Bakli, Mohamed Zia, Mukul Priya, Nitish Chauhan, Rajat Shinde, " -"Razequl Islam, Regina Obe, Rohith Reddy, Sarthak Agarwal, Shobhit " -"Chaurasia, Sourabh Garg, Stephen Woodbridge, Swapnil Joshi, Sylvain " -"Housseman, Sylvain Pasche, Veenit Kumar, Vidhan Jain, Virginia Vergara, " -"Yige Huang" +"Takubo, Alay Sharma, Andrea Nardelli, Anthony Tasca, Anton Patrushev, " +"Aryan Gupta, Ashraf Hossain, Ashish Kumar, Cayetano Benavent, Christian " +"Gonzalez, Daniel Kastl, Dave Potts, David Techer, Denis Rykov, Ema " +"Miyawaki, Esteban Zimanyi, Florian Thurkow, Frederic Junod, Gerald Fenoy," +" Gudesa Venkata Sai Akhil, Hang Wu, Himanshu Raj, Imre Samu, Jay " +"Mahadeokar, Jinfu Leng, Kai Behncke, Kishore Kumar, Ko Nagase, Mahmoud " +"Sakr, Manikata Kondeti, Mario Basa, Martin Wiesenhaan, Maxim Dubinin, " +"Maoguang Wang, Mohamed Bakli, Mohamed Zia, Mukul Priya, Nitish Chauhan, " +"Rajat Shinde, Razequl Islam, Regina Obe, Rohith Reddy, Sarthak Agarwal, " +"Shobhit Chaurasia, Sourabh Garg, Stephen Woodbridge, Swapnil Joshi, " +"Sylvain Housseman, Sylvain Pasche, Veenit Kumar, Vidhan Jain, Virginia " +"Vergara, Yige Huang" msgstr "" msgid "Corporate Sponsors (in alphabetical order)" @@ -7490,7 +7009,7 @@ msgstr "" msgid ":doc:`migration`" msgstr "" -msgid "pgr_KSP" +msgid "``pgr_KSP``" msgstr "" msgid "``pgr_KSP`` — Yen's algorithm for K shortest paths using Dijkstra." @@ -7499,31 +7018,37 @@ msgstr "" msgid "Availability" msgstr "" +msgid "Version 4.0.0" +msgstr "" + +msgid "All signatures promoted to official." +msgstr "" + msgid "Version 3.6.0" msgstr "" msgid "Result columns standarized to: |nksp-result|" msgstr "" -msgid "``pgr_ksp`` (One to One)" +msgid "pgr_ksp(One to One)" msgstr "" msgid "Added ``start_vid`` and ``end_vid`` result columns." msgstr "" -msgid "New overload functions:" +msgid "New proposed signatures:" msgstr "" -msgid "``pgr_ksp`` (One to Many)" +msgid "pgr_ksp(One to Many)" msgstr "" -msgid "``pgr_ksp`` (Many to One)" +msgid "pgr_ksp(Many to One)" msgstr "" -msgid "``pgr_ksp`` (Many to Many)" +msgid "pgr_ksp(Many to Many)" msgstr "" -msgid "``pgr_ksp`` (Combinations)" +msgid "pgr_ksp(Combinations)" msgstr "" msgid "Version 2.1.0" @@ -7538,7 +7063,7 @@ msgstr "" msgid "Version 2.0.0" msgstr "" -msgid "**Official** function" +msgid "Official function." msgstr "" msgid "" @@ -7546,6 +7071,12 @@ msgid "" "the number of shortest paths desired." msgstr "" +msgid "|Boost| Boost Graph Inside" +msgstr "" + +msgid "Boost Graph Inside" +msgstr "" + msgid "Signatures" msgstr "" @@ -7582,16 +7113,19 @@ msgstr "" msgid "Get 2 paths from :math:`6` to :math:`17` on a directed graph." msgstr "" +#, python-brace-format msgid "" "Get 2 paths from vertex :math:`6` to vertices :math:`\\{10, 17\\}` on a " "directed graph." msgstr "" +#, python-brace-format msgid "" "Get 2 paths from vertices :math:`\\{6, 1\\}` to vertex :math:`17` on a " "directed graph." msgstr "" +#, python-brace-format msgid "" "Get 2 paths vertices :math:`\\{6, 1\\}` to vertices :math:`\\{10, 17\\}` " "on a directed graph." @@ -7656,6 +7190,7 @@ msgstr "" msgid "Get 2 paths using combinations table on an undirected graph" msgstr "" +#, python-brace-format msgid "" "Get 2 paths from vertices :math:`\\{6, 1\\}` to vertex :math:`17` on a " "undirected graph." @@ -7667,7 +7202,7 @@ msgstr "" msgid "``pgr_TSP``" msgstr "" -msgid "``pgr_TSP`` - Aproximation using *metric* algorithm." +msgid "``pgr_TSP`` - Approximation using *metric* algorithm." msgstr "" msgid "Availability:" @@ -7788,6 +7323,7 @@ msgstr "" msgid "Using :doc:`pgr_dijkstraCostMatrix` to generate the matrix information" msgstr "" +#, python-brace-format msgid "" "**Line 4** Vertices :math:`\\{2, 4, 13, 14\\}` are not included because " "they are not connected." @@ -7870,6 +7406,7 @@ msgstr "" msgid "Connected incomplete data" msgstr "" +#, python-brace-format msgid "" "Using selected edges :math:`\\{2, 4, 5, 8, 9, 15\\}` the matrix is not " "complete." @@ -7883,7 +7420,12 @@ msgstr "" msgid "``pgr_TSPeuclidean``" msgstr "" -msgid "``pgr_TSPeuclidean`` - Aproximation using *metric* algorithm." +msgid "``pgr_TSPeuclidean`` - Approximation using *metric* algorithm." +msgstr "" + +msgid "" +"Using `Boost: metric TSP approx " +"`__" msgstr "" msgid "" @@ -7899,7 +7441,7 @@ msgstr "" msgid "Name change from pgr_eucledianTSP" msgstr "" -msgid "New **Official** function" +msgid "New official function." msgstr "" msgid "" @@ -7982,55 +7524,49 @@ msgid "" "image is the solution obtained with ``pgr_TSPeuclidean``." msgstr "" -msgid ":doc:`sampledata` network." -msgstr "" - msgid "``pgr_aStar``" msgstr "" msgid "``pgr_aStar`` — Shortest path using the A* algorithm." msgstr "" +msgid "Combinations signature promoted to official." +msgstr "" + msgid "Standarizing output columns to |short-generic-result|" msgstr "" -msgid "``pgr_aStar`` (`One to One`_) added ``start_vid`` and ``end_vid`` columns." +msgid "pgr_aStar(One to One) added ``start_vid`` and ``end_vid`` columns." msgstr "" -msgid "``pgr_aStar`` (`One to Many`_) added ``end_vid`` column." +msgid "pgr_aStar(One to Many) added ``end_vid`` column." msgstr "" -msgid "``pgr_aStar`` (`Many to One`_) added ``start_vid`` column." +msgid "pgr_aStar(Many to One) added ``start_vid`` column." msgstr "" msgid "Version 3.2.0" msgstr "" -msgid "New **proposed** signature:" +msgid "New proposed signature:" msgstr "" -msgid "``pgr_aStar`` (`Combinations`_)" +msgid "Function promoted to official." msgstr "" msgid "Version 2.4.0" msgstr "" -msgid "New **Proposed** signatures:" -msgstr "" - -msgid "``pgr_aStar`` (`One to Many`_)" -msgstr "" - -msgid "``pgr_aStar`` (`Many to One`_)" +msgid "pgr_aStar(One to Many)" msgstr "" -msgid "``pgr_aStar`` (`Many to Many`_)" +msgid "pgr_aStar(Many to One)" msgstr "" -msgid "Signature change on ``pgr_astar`` (`One to One`_)" +msgid "pgr_aStar(Many to Many)" msgstr "" -msgid "**Official** ``pgr_aStar`` (`One to One`_)" +msgid "Signature change on pgr_aStar(One to One)" msgstr "" msgid "" @@ -8067,16 +7603,19 @@ msgid "" "heuristic :math:`2`" msgstr "" +#, python-brace-format msgid "" "From vertex :math:`6` to vertices :math:`\\{10, 12\\}` on a **directed** " "graph with heuristic :math:`3` and factor :math:`3.5`" msgstr "" +#, python-brace-format msgid "" "From vertices :math:`\\{6, 8\\}` to vertex :math:`10` on an " "**undirected** graph with heuristic :math:`4`" msgstr "" +#, python-brace-format msgid "" "From vertices :math:`\\{6, 8\\}` to vertices :math:`\\{10, 12\\}` on a " "**directed** graph with factor :math:`0.5`" @@ -8105,7 +7644,7 @@ msgstr "" msgid "Manually assigned vertex combinations." msgstr "" -msgid "pgr_aStarCost" +msgid "``pgr_aStarCost``" msgstr "" msgid "" @@ -8113,10 +7652,7 @@ msgid "" "algorithm." msgstr "" -msgid "``pgr_aStarCost`` (`Combinations`_)" -msgstr "" - -msgid "New **proposed** function" +msgid "New proposed function." msgstr "" msgid "" @@ -8200,6 +7736,7 @@ msgstr "" msgid "pgr_aStarCostMatrix(`Edges SQL`_, **start vids**, [**options**])" msgstr "" +#, python-brace-format msgid "" "Symmetric cost matrix for vertices :math:`\\{5, 6, 10, 15\\}` on an " "**undirected** graph using heuristic :math:`2`" @@ -8235,6 +7772,9 @@ msgstr "" msgid "Renamed from version 1.x" msgstr "" +msgid "Support" +msgstr "" + msgid "Returns the polygon part of an alpha shape." msgstr "" @@ -8305,7 +7845,7 @@ msgstr "" msgid "`ST_ConcaveHull `__" msgstr "" -msgid "pgr_analyzeGraph" +msgid "``pgr_analyzeGraph``" msgstr "" msgid "``pgr_analyzeGraph`` — Analyzes the network topology." @@ -8569,9 +8109,6 @@ msgid "" "table ``othertable``. (note the use of quote_literal)" msgstr "" -msgid "The examples use the :doc:`sampledata` network." -msgstr "" - msgid ":doc:`pgr_analyzeOneWay`" msgstr "" @@ -8581,7 +8118,7 @@ msgstr "" msgid ":doc:`pgr_nodeNetwork` to create nodes to a not noded edge table." msgstr "" -msgid "pgr_analyzeOneWay" +msgid "``pgr_analyzeOneWay``" msgstr "" msgid "" @@ -8732,7 +8269,7 @@ msgstr "" msgid "Version 2.5.0" msgstr "" -msgid "New **experimental** function" +msgid "New experimental function." msgstr "" msgid "" @@ -8755,1144 +8292,1638 @@ msgstr "" msgid "pgr_articulationPoints(`Edges SQL`_)" msgstr "" -msgid "Returns set of |result-node|" +msgid "Returns set of |result-node|" +msgstr "" + +msgid "The articulation points of the graph" +msgstr "" + +msgid "Nodes in red are the articulation points." +msgstr "" + +msgid "" +"`Boost: Biconnected components & articulation points " +"`__" +msgstr "" + +msgid "" +"wikipedia: `Biconnected component " +"`__" +msgstr "" + +msgid "``pgr_bdAstar``" +msgstr "" + +msgid "``pgr_bdAstar`` — Shortest path using the bidirectional A* algorithm." +msgstr "" + +msgid "pgr_bdAstar(One to One) added ``start_vid`` and ``end_vid`` columns." +msgstr "" + +msgid "pgr_bdAstar(One to Many) added ``end_vid`` column." +msgstr "" + +msgid "pgr_bdAstar(Many to One) added ``start_vid`` column." +msgstr "" + +msgid "pgr_bdAstar(One to Many)" +msgstr "" + +msgid "pgr_bdAstar(Many to One)" +msgstr "" + +msgid "pgr_bdAstar(Many to Many)" +msgstr "" + +msgid "Signature change on pgr_bdAstar(One to One)" +msgstr "" + +msgid "" +"The results are equivalent to the union of the results of the " +"pgr_bdAStar(One to One) on the:" +msgstr "" + +msgid "pgr_bdAstar(`Edges SQL`_, **start vid**, **end vid**, [**options**])" +msgstr "" + +msgid "pgr_bdAstar(`Edges SQL`_, **start vid**, **end vids**, [**options**])" +msgstr "" + +msgid "pgr_bdAstar(`Edges SQL`_, **start vids**, **end vid**, [**options**])" +msgstr "" + +msgid "pgr_bdAstar(`Edges SQL`_, **start vids**, **end vids**, [**options**])" +msgstr "" + +msgid "pgr_bdAstar(`Edges SQL`_, `Combinations SQL`_, [**options**])" +msgstr "" + +msgid "``pgr_bdAstarCost``" +msgstr "" + +msgid "" +"``pgr_bdAstarCost`` - Total cost of the shortest path using the " +"bidirectional A* algorithm." +msgstr "" + +msgid "" +"The ``pgr_bdAstarCost`` function sumarizes of the cost of the shortest " +"path using the bidirectional A* algorithm." +msgstr "" + +msgid "pgr_bdAstarCost(`Edges SQL`_, **start vid**, **end vid**, [**options**])" +msgstr "" + +msgid "pgr_bdAstarCost(`Edges SQL`_, **start vid**, **end vids**, [**options**])" +msgstr "" + +msgid "pgr_bdAstarCost(`Edges SQL`_, **start vids**, **end vid**, [**options**])" +msgstr "" + +msgid "pgr_bdAstarCost(`Edges SQL`_, **start vids**, **end vids**, [**options**])" +msgstr "" + +msgid "pgr_bdAstarCost(`Edges SQL`_, `Combinations SQL`_, [**options**])" +msgstr "" + +msgid "``pgr_bdAstarCostMatrix``" +msgstr "" + +msgid "" +"``pgr_bdAstarCostMatrix`` - Calculates the a cost matrix using " +":doc:`pgr_aStar`." +msgstr "" + +msgid "Using internaly the :doc:`pgr_bdAstar` algorithm" +msgstr "" + +msgid "pgr_bdAstarCostMatrix(`Edges SQL`_, **start vids**, [**options**])" +msgstr "" + +msgid "``pgr_bdDijkstra``" +msgstr "" + +msgid "" +"``pgr_bdDijkstra`` — Returns the shortest path using Bidirectional " +"Dijkstra algorithm." +msgstr "" + +msgid "pgr_bdDijkstra(One to Many)" +msgstr "" + +msgid "pgr_bdDijkstra(Many to One)" +msgstr "" + +msgid "pgr_bdDijkstra(Many to Many)" +msgstr "" + +msgid "Signature change on pgr_bdDijsktra(One to One)" +msgstr "" + +msgid "pgr_bdDijkstra(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" +msgstr "" + +msgid "pgr_bdDijkstra(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" +msgstr "" + +msgid "pgr_bdDijkstra(`Edges SQL`_, **start vids**, **end vid**, [``directed``])" +msgstr "" + +msgid "pgr_bdDijkstra(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" +msgstr "" + +msgid "pgr_bdDijkstra(`Edges SQL`_, `Combinations SQL`_, [``directed``])" +msgstr "" + +msgid "Returns set of |old-generic-result|" +msgstr "" + +msgid "Returns set of |result-1-1|" +msgstr "" + +msgid "From vertex :math:`6` to vertex :math:`10` on a **directed** graph" +msgstr "" + +msgid "Returns set of |result-1-m|" +msgstr "" + +#, python-brace-format +msgid "" +"From vertex :math:`6` to vertices :math:`\\{10, 17\\}` on a **directed** " +"graph" +msgstr "" + +msgid "Returns set of |result-m-1|" +msgstr "" + +#, python-brace-format +msgid "" +"From vertices :math:`\\{6, 1\\}` to vertex :math:`17` on a **directed** " +"graph" +msgstr "" + +#, python-brace-format +msgid "" +"From vertices :math:`\\{6, 1\\}` to vertices :math:`\\{10, 17\\}` on an " +"**undirected** graph" +msgstr "" + +msgid "Using a combinations table on an **undirected** graph" +msgstr "" + +msgid "https://en.wikipedia.org/wiki/Bidirectional_search" +msgstr "" + +msgid "``pgr_bdDijkstraCost``" +msgstr "" + +msgid "" +"``pgr_bdDijkstraCost`` — Returns the shortest path's cost using " +"Bidirectional Dijkstra algorithm." +msgstr "" + +msgid "" +"The ``pgr_bdDijkstraCost`` function sumarizes of the cost of the shortest" +" path using the bidirectional Dijkstra Algorithm." +msgstr "" + +msgid "" +"pgr_bdDijkstraCost(`Edges SQL`_, **start vid**, **end vid** , " +"[``directed``])" +msgstr "" + +msgid "" +"pgr_bdDijkstraCost(`Edges SQL`_, **start vid**, **end vids**, " +"[``directed``])" +msgstr "" + +msgid "" +"pgr_bdDijkstraCost(`Edges SQL`_, **start vids**, **end vid** , " +"[``directed``])" +msgstr "" + +msgid "" +"pgr_bdDijkstraCost(`Edges SQL`_, **start vids**, **end vids**, " +"[``directed``])" +msgstr "" + +msgid "pgr_bdDijkstraCost(`Edges SQL`_, `Combinations SQL`_, [ ``directed``])" +msgstr "" + +msgid "pgr_bdDijkstraCost(`Edges SQL`_, `Combinations SQL`_, [``directed``])" +msgstr "" + +msgid "``pgr_bdDijkstraCostMatrix``" +msgstr "" + +msgid "" +"``pgr_bdDijkstraCostMatrix`` - Calculates a cost matrix using " +":doc:`pgr_bdDijkstra`." +msgstr "" + +msgid "" +"Using bidirectional Dijkstra algorithm, calculate and return a cost " +"matrix." +msgstr "" + +msgid "pgr_bdDijkstraCostMatrix(`Edges SQL`_, **start vids**, [``directed``])" +msgstr "" + +#, python-brace-format +msgid "" +"Symmetric cost matrix for vertices :math:`\\{5, 6, 10, 15\\}` on an " +"**undirected** graph" +msgstr "" + +msgid "Use with :doc:`pgr_TSP`." +msgstr "" + +msgid "``pgr_bellmanFord - Experimental``" +msgstr "" + +msgid "``pgr_bellmanFord`` — Shortest path using Bellman-Ford algorithm." +msgstr "" + +msgid "New experimental signature:" +msgstr "" + +msgid "pgr_bellmanFord(Combinations)" +msgstr "" + +msgid "" +"Bellman-Ford's algorithm, is named after Richard Bellman and Lester Ford," +" who first published it in 1958 and 1956, respectively.It is a graph " +"search algorithm that computes shortest paths from a starting vertex " +"(``start_vid``) to an ending vertex (``end_vid``) in a graph where some " +"of the edge weights may be negative. Though it is more versatile, it is " +"slower than Dijkstra's algorithm.This implementation can be used with a " +"directed graph and an undirected graph." +msgstr "" + +msgid "Process is valid for edges with both positive and negative edge weights." +msgstr "" + +msgid "" +"When the start vertex and the end vertex are the same, there is no path. " +"The agg_cost would be :math:`0`." +msgstr "" + +msgid "" +"When the start vertex and the end vertex are different, and there exists " +"a path between them without having a *negative cycle*. The agg_cost would" +" be some finite value denoting the shortest distance between them." +msgstr "" + +msgid "" +"When the start vertex and the end vertex are different, and there exists " +"a path between them, but it contains a *negative cycle*. In such case, " +"agg_cost for those vertices keep on decreasing furthermore, Hence " +"agg_cost can’t be defined for them." +msgstr "" + +msgid "" +"When the start vertex and the end vertex are different, and there is no " +"path. The agg_cost is :math:`\\infty`." +msgstr "" + +msgid "" +"For optimization purposes, any duplicated value in the `start_vids` or " +"`end_vids` are ignored." +msgstr "" + +msgid "Running time: :math:`O(| start\\_vids | * ( V * E))`" +msgstr "" + +msgid "pgr_bellmanFord(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" +msgstr "" + +msgid "pgr_bellmanFord(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" +msgstr "" + +msgid "pgr_bellmanFord(`Edges SQL`_, **start vids**, **end vid**, [``directed``])" +msgstr "" + +msgid "" +"pgr_bellmanFord(`Edges SQL`_, **start vids**, **end vids**, " +"[``directed``])" +msgstr "" + +msgid "pgr_bellmanFord(`Edges SQL`_, `Combinations SQL`_, [``directed``])" +msgstr "" + +#, python-brace-format +msgid "" +"From vertex :math:`6` to vertices :math:`\\{ 10, 17\\}` on a **directed**" +" graph" +msgstr "" + +msgid "Using a combinations table on an **undirected** graph." +msgstr "" + +msgid "" +"`Boost: Bellman Ford " +"`__" +msgstr "" + +#, python-format +msgid "https://en.wikipedia.org/wiki/Bellman%E2%80%93Ford_algorithm" +msgstr "" + +msgid "``pgr_betweennessCentrality`` - Experimental" +msgstr "" + +msgid "" +"``pgr_betweennessCentrality`` - Calculates the relative betweenness " +"centrality using Brandes Algorithm" +msgstr "" + +msgid "Version 3.7.0" +msgstr "" + +msgid "" +"The Brandes Algorithm takes advantage of the sparse graphs for evaluating" +" the betweenness centrality score of all vertices." +msgstr "" + +msgid "" +"Betweenness centrality measures the extent to which a vertex lies on the " +"shortest paths between all other pairs of vertices. Vertices with a high " +"betweenness centrality score may have considerable influence in a network" +" by the virtue of their control over the shortest paths passing between " +"them." +msgstr "" + +msgid "" +"The removal of these vertices will affect the network by disrupting the " +"it, as most of the shortest paths between vertices pass through them." +msgstr "" + +msgid "This implementation work for both directed and undirected graphs." +msgstr "" + +msgid "Running time: :math:`\\Theta(VE)`" +msgstr "" + +msgid "Running space: :math:`\\Theta(VE)`" +msgstr "" + +msgid "Throws when there are no edges in the graph" +msgstr "" + +msgid "pgr_betweennessCentrality(`Edges SQL`_, [``directed``])" +msgstr "" + +msgid "Returns set of ``(vid, centrality)``" +msgstr "" + +#, python-brace-format +msgid "For a directed graph with edges :math:`\\{1, 2, 3, 4\\}`." +msgstr "" + +msgid "Explanation" +msgstr "" + +msgid "The betweenness centrality are between parenthesis." +msgstr "" + +msgid "The leaf vertices have betweenness centrality :math:`0`." +msgstr "" + +msgid "" +"Betweenness centrality of vertex :math:`6` is higher than of vertex " +":math:`10`." +msgstr "" + +msgid "Removing vertex :math:`6` will create three graph components." +msgstr "" + +msgid "Removing vertex :math:`10` will create two graph components." +msgstr "" + +msgid "``vid``" +msgstr "" + +msgid "``centrality``" +msgstr "" + +msgid "" +"Relative betweenness centrality score of the vertex (will be in range " +"[0,1])" +msgstr "" + +msgid "" +"`Boost: betweenness centrality " +"`_" +msgstr "" + +msgid "``pgr_biconnectedComponents``" +msgstr "" + +msgid "" +"``pgr_biconnectedComponents`` — Biconnected components of an undirected " +"graph." +msgstr "" + +msgid "Result columns change:" +msgstr "" + +msgid "``n_seq`` is removed" +msgstr "" + +msgid "``seq`` changed type to ``BIGINT``" +msgstr "" + +msgid "" +"The biconnected components of an undirected graph are the maximal subsets" +" of vertices such that the removal of a vertex from particular component " +"will not disconnect the component. Unlike connected components, vertices " +"may belong to multiple biconnected components. Vertices can be present in" +" multiple biconnected components, but each edge can only be contained in " +"a single biconnected component." +msgstr "" + +msgid "Components are described by edges." +msgstr "" + +msgid "``component`` ascending." +msgstr "" + +msgid "``edge`` ascending." +msgstr "" + +msgid "pgr_biconnectedComponents(`Edges SQL`_)" +msgstr "" + +msgid "Returns set of |result-component-E|" +msgstr "" + +msgid "The biconnected components of the graph" +msgstr "" + +msgid "``component``" +msgstr "" + +msgid "Component identifier." +msgstr "" + +msgid "Has the value of the minimum edge identifier in the component." +msgstr "" + +msgid "Identifier of the edge that belongs to the ``component``." +msgstr "" + +msgid "``pgr_binaryBreadthFirstSearch`` - Experimental" +msgstr "" + +msgid "" +"``pgr_binaryBreadthFirstSearch`` — Returns the shortest path in a binary " +"graph." +msgstr "" + +#, python-brace-format +msgid "" +"Any graph whose edge-weights belongs to the set {0,X}, where 'X' is any " +"non-negative integer, is termed as a 'binary graph'." +msgstr "" + +msgid "pgr_binaryBreadthFirstSearch(Combinations)" +msgstr "" + +msgid "" +"It is well-known that the shortest paths between a single source and all " +"other vertices can be found using Breadth First Search in :math:`O(|E|)` " +"in an unweighted graph, i.e. the distance is the minimal number of edges " +"that you need to traverse from the source to another vertex. We can " +"interpret such a graph also as a weighted graph, where every edge has the" +" weight :math:`1`. If not alledges in graph have the same weight, that we" +" need a more general algorithm, like Dijkstra's Algorithm which runs in " +":math:`O(|E|log|V|)` time." +msgstr "" + +#, python-brace-format +msgid "" +"However if the weights are more constrained, we can use a faster " +"algorithm. This algorithm, termed as 'Binary Breadth First Search' as " +"well as '0-1 BFS', is a variation of the standard Breadth First Search " +"problem to solve the SSSP (single-source shortest path) problem in " +":math:`O(|E|)`, if the weights of each edge belongs to the set {0,X}, " +"where 'X' is any non-negative real integer." +msgstr "" + +#, python-brace-format +msgid "" +"Process is done only on 'binary graphs'. ('Binary Graph': Any graph whose" +" edge-weights belongs to the set {0,X}, where 'X' is any non-negative " +"real integer.)" msgstr "" -msgid "The articulation points of the graph" +msgid "Running time: :math:`O(| start\\_vids | * |E|)`" msgstr "" -msgid "Nodes in red are the articulation points." +msgid "" +"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vid**, **end vid**, " +"[``directed``])" msgstr "" msgid "" -"Boost: `Biconnected components & articulation points " -"`__" +"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vid**, **end vids**, " +"[``directed``])" msgstr "" msgid "" -"wikipedia: `Biconnected component " -"`__" +"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vids**, **end vid**, " +"[``directed``])" msgstr "" -msgid "``pgr_bdAstar``" +msgid "" +"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vids**, **end vids**, " +"[``directed``])" msgstr "" -msgid "``pgr_bdAstar`` — Shortest path using the bidirectional A* algorithm." +msgid "" +"pgr_binaryBreadthFirstSearch(`Edges SQL`_, `Combinations SQL`_, " +"[``directed``])" msgstr "" msgid "" -"``pgr_bdAstar`` (`One to One`_) added ``start_vid`` and ``end_vid`` " -"columns." +"**Note:** Using the :doc:`sampledata` Network as all weights are same " +"(i.e :math:`1``)" msgstr "" -msgid "``pgr_bdAstar`` (`One to Many`_) added ``end_vid`` column." +msgid "" +"`Boost: Breadth First Search " +"`__" msgstr "" -msgid "``pgr_bdAstar`` (`Many to One`_) added ``start_vid`` column." +msgid "https://cp-algorithms.com/graph/01_bfs.html" msgstr "" -msgid "``pgr_bdAstar`` (`Combinations`_)" +#, python-format +msgid "https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm#Specialized_variants" msgstr "" -msgid "``pgr_bdAstar`` (`One to Many`_)" +msgid "``pgr_bipartite`` - Experimental" msgstr "" -msgid "``pgr_bdAstar`` (`Many to One`_)" +msgid "" +"``pgr_bipartite`` — Disjoint sets of vertices such that no two vertices " +"within the same set are adjacent." msgstr "" -msgid "``pgr_bdAstar`` (`Many to Many`_)" +msgid "" +"A bipartite graph is a graph with two sets of vertices which are " +"connected to each other, but not within themselves. A bipartite graph is " +"possible if the graph coloring is possible using two colors such that " +"vertices in a set are colored with the same color." msgstr "" -msgid "Signature change on ``pgr_bdAstar`` (`One to One`_)" +msgid "The algorithm works in undirected graph only." msgstr "" -msgid "**Official** ``pgr_bdAstar`` (`One to One`_)" +msgid "The returned values are not ordered." msgstr "" msgid "" -"The results are equivalent to the union of the results of the " -"`pgr_bdAStar(` `One to One`_ `)` on the:" +"The algorithm checks graph is bipartite or not. If it is bipartite then " +"it returns the node along with two colors `0` and `1` which represents " +"two different sets." msgstr "" -msgid "pgr_bdAstar(`Edges SQL`_, **start vid**, **end vid**, [**options**])" +msgid "If graph is not bipartite then algorithm returns empty set." msgstr "" -msgid "pgr_bdAstar(`Edges SQL`_, **start vid**, **end vids**, [**options**])" +msgid "pgr_bipartite(`Edges SQL`_)" msgstr "" -msgid "pgr_bdAstar(`Edges SQL`_, **start vids**, **end vid**, [**options**])" +msgid "Returns set of |result-node-color|" msgstr "" -msgid "pgr_bdAstar(`Edges SQL`_, **start vids**, **end vids**, [**options**])" +msgid "When the graph is bipartite" msgstr "" -msgid "pgr_bdAstar(`Edges SQL`_, `Combinations SQL`_, [**options**])" +msgid "Additional Example" msgstr "" -msgid "pgr_bdAstarCost" +msgid "The odd length cyclic graph can not be bipartite." msgstr "" +#, python-brace-format msgid "" -"``pgr_bdAstarCost`` - Total cost of the shortest path using the " -"bidirectional A* algorithm." +"The edge :math:`5 \\rightarrow 1` will make subgraph with vertices " +":math:`\\{1, 3, 7, 6, 5\\}` an odd length cyclic graph, as the cycle has " +"5 vertices." msgstr "" -msgid "``pgr_bdAstarCost`` (`Combinations`_)" +msgid "Edges in blue represent odd length cycle subgraph." msgstr "" msgid "" -"The ``pgr_bdAstarCost`` function sumarizes of the cost of the shortest " -"path using the bidirectional A* algorithm." -msgstr "" - -msgid "pgr_bdAstarCost(`Edges SQL`_, **start vid**, **end vid**, [**options**])" +"`Boost: is_bipartite " +"`__" msgstr "" -msgid "pgr_bdAstarCost(`Edges SQL`_, **start vid**, **end vids**, [**options**])" +msgid "" +"`Wikipedia: bipartite graph " +"`__" msgstr "" -msgid "pgr_bdAstarCost(`Edges SQL`_, **start vids**, **end vid**, [**options**])" +msgid "``pgr_boykovKolmogorov``" msgstr "" -msgid "pgr_bdAstarCost(`Edges SQL`_, **start vids**, **end vids**, [**options**])" +msgid "" +"``pgr_boykovKolmogorov`` — Calculates the flow on the graph edges that " +"maximizes the flow from the sources to the targets using Boykov " +"Kolmogorov algorithm." msgstr "" -msgid "pgr_bdAstarCost(`Edges SQL`_, `Combinations SQL`_, [**options**])" +msgid "Renamed from ``pgr_maxFlowBoykovKolmogorov``" msgstr "" -msgid "``pgr_bdAstarCostMatrix``" +msgid "Function promoted to proposed." msgstr "" -msgid "" -"``pgr_bdAstarCostMatrix`` - Calculates the a cost matrix using " -":doc:`pgr_aStar`." +msgid "Running time: Polynomial" msgstr "" -msgid "Using internaly the :doc:`pgr_bdAstar` algorithm" +msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vid**, **end vid**)" msgstr "" -msgid "pgr_bdAstarCostMatrix(`Edges SQL`_, **start vids**, [**options**])" +msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vid**, **end vids**)" msgstr "" -msgid "``pgr_bdDijkstra``" +msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vids**, **end vid**)" msgstr "" -msgid "" -"``pgr_bdDijkstra`` — Returns the shortest path using Bidirectional " -"Dijkstra algorithm." +msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vids**, **end vids**)" msgstr "" -msgid "pgr_bdDijkstra(`Combinations`_)" +msgid "pgr_boykovKolmogorov(`Edges SQL`_, `Combinations SQL`_)" msgstr "" -msgid "New **Proposed** functions:" +msgid "Returns set of |result-flow|" msgstr "" -msgid "``pgr_bdDijkstra`` (`One to Many`_)" +msgid "From vertex :math:`11` to vertex :math:`12`" msgstr "" -msgid "``pgr_bdDijkstra`` (`Many to One`_)" +#, python-brace-format +msgid "From vertex :math:`11` to vertices :math:`\\{5, 10, 12\\}`" msgstr "" -msgid "``pgr_bdDijkstra`` (`Many to Many`_)" +#, python-brace-format +msgid "From vertices :math:`\\{11, 3, 17\\}` to vertex :math:`12`" msgstr "" -msgid "Signature change on ``pgr_bdDijsktra`` (`One to One`_)" +#, python-brace-format +msgid "From vertices :math:`\\{11, 3, 17\\}` to vertices :math:`\\{5, 10, 12\\}`" msgstr "" -msgid "**Official** ``pgr_bdDijkstra`` (`One to One`_)" +#, python-brace-format +msgid "" +"Using a combinations table, equivalent to calculating result from " +"vertices :math:`\\{5, 6\\}` to vertices :math:`\\{10, 15, 14\\}`." msgstr "" -msgid "pgr_bdDijkstra(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" +msgid "" +"`Boost: Boykov Kolmogorov max flow " +"`__" msgstr "" -msgid "pgr_bdDijkstra(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" +msgid "``pgr_breadthFirstSearch`` - Experimental" msgstr "" -msgid "pgr_bdDijkstra(`Edges SQL`_, **start vids**, **end vid**, [``directed``])" +msgid "" +"``pgr_breadthFirstSearch`` — Returns the traversal order(s) using Breadth" +" First Search algorithm." msgstr "" -msgid "pgr_bdDijkstra(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" +msgid "" +"Provides the Breadth First Search traversal order from a root vertex to a" +" particular depth." msgstr "" -msgid "pgr_bdDijkstra(`Edges SQL`_, `Combinations SQL`_, [``directed``])" +msgid "The implementation will work on any type of graph." msgstr "" -msgid "Returns set of |old-generic-result|" +msgid "" +"Provides the Breadth First Search traversal order from a source node to a" +" target depth level." msgstr "" -msgid "Returns set of |result-1-1|" +msgid "Running time: :math:`O(E + V)`" msgstr "" -msgid "From vertex :math:`6` to vertex :math:`10` on a **directed** graph" +msgid "pgr_breadthFirstSearch(`Edges SQL`_, **root vid**, [**options**])" msgstr "" -msgid "Returns set of |result-1-m|" +msgid "pgr_breadthFirstSearch(`Edges SQL`_, **root vids**, [**options**])" msgstr "" -msgid "" -"From vertex :math:`6` to vertices :math:`\\{10, 17\\}` on a **directed** " -"graph" +msgid "**options:** ``[max_depth, directed]``" msgstr "" -msgid "Returns set of |result-m-1|" +msgid "Returns set of |result-bfs|" msgstr "" msgid "" -"From vertices :math:`\\{6, 1\\}` to vertex :math:`17` on a **directed** " -"graph" +"From root vertex :math:`6` on a **directed** graph with edges in " +"ascending order of ``id``" msgstr "" +#, python-brace-format msgid "" -"From vertices :math:`\\{6, 1\\}` to vertices :math:`\\{10, 17\\}` on an " -"**undirected** graph" +"From root vertices :math:`\\{12, 6\\}` on an **undirected** graph with " +"**depth** :math:`<= 2` and edges in ascending order of ``id``" msgstr "" -msgid "Using a combinations table on an **undirected** graph" +msgid "DFS optional parameters" msgstr "" -#, python-format -msgid "https://www.cs.princeton.edu/courses/archive/spr06/cos423/Handouts/EPP%20shortest%20path%20algorithms.pdf" +msgid "Same as `Single vertex`_ with edges in ascending order of ``id``." msgstr "" -msgid "https://en.wikipedia.org/wiki/Bidirectional_search" +msgid "Same as `Single vertex`_ with edges in descending order of ``id``." msgstr "" -msgid "``pgr_bdDijkstraCost``" +msgid "The resulting traversal is different." msgstr "" msgid "" -"``pgr_bdDijkstraCost`` — Returns the shortest path's cost using " -"Bidirectional Dijkstra algorithm." -msgstr "" - -msgid "``pgr_bdDijkstraCost`` (`Combinations`_)" +"The left image shows the result with ascending order of ids and the right" +" image shows with descending order of the edge identifiers." msgstr "" -msgid "" -"The ``pgr_bdDijkstraCost`` function sumarizes of the cost of the shortest" -" path using the bidirectional Dijkstra Algorithm." +msgid "|ascending| |descending|" msgstr "" -msgid "" -"pgr_bdDijkstraCost(`Edges SQL`_, **start vid**, **end vid** , " -"[``directed``])" +msgid "ascending" msgstr "" -msgid "" -"pgr_bdDijkstraCost(`Edges SQL`_, **start vid**, **end vids**, " -"[``directed``])" +msgid "descending" msgstr "" msgid "" -"pgr_bdDijkstraCost(`Edges SQL`_, **start vids**, **end vid** , " -"[``directed``])" +"`Wikipedia: Breadth First Search algorithm `__" msgstr "" -msgid "" -"pgr_bdDijkstraCost(`Edges SQL`_, **start vids**, **end vids**, " -"[``directed``])" +msgid "``pgr_bridges``" msgstr "" -msgid "pgr_bdDijkstraCost(`Edges SQL`_, `Combinations SQL`_, [ ``directed``])" +msgid "``pgr_bridges`` - Return the bridges of an undirected graph." msgstr "" -msgid "pgr_bdDijkstraCost(`Edges SQL`_, `Combinations SQL`_, [``directed``])" +msgid "" +"A bridge is an edge of an undirected graph whose deletion increases its " +"number of connected components. This implementation can only be used with" +" an undirected graph." msgstr "" -msgid "``pgr_bdDijkstraCostMatrix``" +msgid "``edge`` ascending" msgstr "" -msgid "" -"``pgr_bdDijkstraCostMatrix`` - Calculates a cost matrix using " -":doc:`pgr_bdDijkstra`." +msgid "Running time: :math:`O(E * (V + E))`" msgstr "" -msgid "" -"Using bidirectional Dijkstra algorithm, calculate and return a cost " -"matrix." +msgid "pgr_bridges(`Edges SQL`_)" msgstr "" -msgid "pgr_bdDijkstraCostMatrix(`Edges SQL`_, **start vids**, [``directed``])" +msgid "Returns set of |result-edge|" msgstr "" -msgid "" -"Symmetric cost matrix for vertices :math:`\\{5, 6, 10, 15\\}` on an " -"**undirected** graph" +msgid "The bridges of the graph" msgstr "" -msgid "Use with :doc:`pgr_TSP`." +msgid "Identifier of the edge that is a bridge." msgstr "" -msgid "``pgr_bellmanFord - Experimental``" +#, python-format +msgid "https://en.wikipedia.org/wiki/Bridge_%28graph_theory%29" msgstr "" -msgid "``pgr_bellmanFord`` — Shortest path using Bellman-Ford algorithm." +msgid "" +"`Boost: Connected components " +"`__" msgstr "" -msgid "New **experimental** signature:" +msgid "``pgr_chinesePostman`` - Experimental" msgstr "" -msgid "``pgr_bellmanFord`` (`Combinations`_)" +msgid "" +"``pgr_chinesePostman`` — Calculates the shortest circuit path which " +"contains every edge in a directed graph and starts and ends on the same " +"vertex." msgstr "" -msgid "New **experimental** signatures:" +msgid "Returns ``EMPTY SET`` on a disconnected graph" msgstr "" -msgid "``pgr_bellmanFord`` (`One to One`_)" +msgid "pgr_chinesePostman(`Edges SQL`_)" msgstr "" -msgid "``pgr_bellmanFord`` (`One to Many`_)" +msgid "Returns set of |result-1-1-no-seq|" msgstr "" -msgid "``pgr_bellmanFord`` (`Many to One`_)" +msgid "Returns set of ``(seq, node, edge, cost, agg_cost)``" msgstr "" -msgid "``pgr_bellmanFord`` (`Many to Many`_)" +msgid "Sequential value starting from ``1``" msgstr "" msgid "" -"Bellman-Ford's algorithm, is named after Richard Bellman and Lester Ford," -" who first published it in 1958 and 1956, respectively.It is a graph " -"search algorithm that computes shortest paths from a starting vertex " -"(``start_vid``) to an ending vertex (``end_vid``) in a graph where some " -"of the edge weights may be negative. Though it is more versatile, it is " -"slower than Dijkstra's algorithm.This implementation can be used with a " -"directed graph and an undirected graph." +"Identifier of the edge used to go from ``node`` to the next node in the " +"path sequence. ``-1`` for the last node of the path." msgstr "" -msgid "Process is valid for edges with both positive and negative edge weights." +msgid "Aggregate cost from ``start_v`` to ``node``." msgstr "" -msgid "" -"When the start vertex and the end vertex are the same, there is no path. " -"The agg_cost would be :math:`0`." +msgid "``pgr_chinesePostmanCost`` - Experimental" msgstr "" msgid "" -"When the start vertex and the end vertex are different, and there exists " -"a path between them without having a *negative cycle*. The agg_cost would" -" be some finite value denoting the shortest distance between them." +"``pgr_chinesePostmanCost`` — Calculates the minimum costs of a circuit " +"path which contains every edge in a directed graph and starts and ends on" +" the same vertex." msgstr "" -msgid "" -"When the start vertex and the end vertex are different, and there exists " -"a path between them, but it contains a *negative cycle*. In such case, " -"agg_cost for those vertices keep on decreasing furthermore, Hence " -"agg_cost can’t be defined for them." +msgid "Return value when the graph if disconnected" msgstr "" - -msgid "" -"When the start vertex and the end vertex are different, and there is no " -"path. The agg_cost is :math:`\\infty`." + +msgid "pgr_chinesePostmanCost(`Edges SQL`_)" msgstr "" -msgid "" -"For optimization purposes, any duplicated value in the `start_vids` or " -"`end_vids` are ignored." +msgid "RETURNS ``FLOAT``" msgstr "" -msgid "Running time: :math:`O(| start\\_vids | * ( V * E))`" +msgid "``pgr_chinesepostmancost``" msgstr "" -msgid "pgr_bellmanFord(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" +msgid "Minimum costs of a circuit path." msgstr "" -msgid "pgr_bellmanFord(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" +msgid "``pgr_connectedComponents``" msgstr "" -msgid "pgr_bellmanFord(`Edges SQL`_, **start vids**, **end vid**, [``directed``])" +msgid "" +"``pgr_connectedComponents`` — Connected components of an undirected graph" +" using a DFS-based approach." msgstr "" msgid "" -"pgr_bellmanFord(`Edges SQL`_, **start vids**, **end vids**, " -"[``directed``])" +"A connected component of an undirected graph is a set of vertices that " +"are all reachable from each other." msgstr "" -msgid "pgr_bellmanFord(`Edges SQL`_, `Combinations SQL`_, [``directed``])" +msgid "Components are described by vertices" msgstr "" -msgid "" -"From vertex :math:`6` to vertices :math:`\\{ 10, 17\\}` on a **directed**" -" graph" +msgid "``component`` ascending" msgstr "" -msgid "Using a combinations table on an **undirected** graph." +msgid "pgr_connectedComponents(`Edges SQL`_)" msgstr "" -#, python-format -msgid "https://en.wikipedia.org/wiki/Bellman%E2%80%93Ford_algorithm" +msgid "Returns set of |result-component-V|" msgstr "" -msgid "``pgr_betweennessCentrality``" +msgid "The connected components of the graph" msgstr "" -msgid "" -"``pgr_betweennessCentrality`` - Calculates the relative betweeness " -"centrality using Brandes Algorithm" +msgid "Has the value of the minimum node identifier in the component." msgstr "" -msgid "Version 3.7.0" +msgid "Identifier of the vertex that belongs to the ``component``." msgstr "" -msgid "New **experimental** function:" +msgid "Connecting disconnected components" msgstr "" msgid "" -"The Brandes Algorithm takes advantage of the sparse graphs for evaluating" -" the betweenness centrality score of all vertices." +"wikipedia: `Connected component " +"`__" msgstr "" -msgid "" -"Betweenness centrality measures the extent to which a vertex lies on the " -"shortest paths between all other pairs of vertices. Vertices with a high " -"betweenness centrality score may have considerable influence in a network" -" by the virtue of their control over the shortest paths passing between " -"them." +msgid "``pgr_contraction``" msgstr "" msgid "" -"The removal of these vertices will affect the network by disrupting the " -"it, as most of the shortest paths between vertices pass through them." +"``pgr_contraction`` — Performs graph contraction and returns the " +"contracted vertices and edges." msgstr "" -msgid "This implementation work for both directed and undirected graphs." +msgid "Version 3.8.0" msgstr "" -msgid "Running time: :math:`\\Theta(VE)`" +msgid "New signature:" msgstr "" -msgid "Running space: :math:`\\Theta(VE)`" +msgid "" +"Previously compulsory parameter **Contraction order** is now optional " +"with name ``methods``." msgstr "" -msgid "Throws when there are no edges in the graph" +msgid "New name and order of optional parameters." msgstr "" -msgid "pgr_betweennessCentrality(`Edges SQL`_, [``directed``])" +msgid "" +"Deprecated signature " +"pgr_contraction(text,bigint[],integer,bigint[],boolean)" msgstr "" -msgid "Returns set of ``(vid, centrality)``" +msgid "Name change from ``pgr_contractGraph``" msgstr "" -msgid "For a directed graph with edges :math:`\\{1, 2, 3, 4\\}`." +msgid "Bug fixes" msgstr "" -msgid "Explanation" +msgid "" +"Contraction reduces the size of the graph by removing some of the " +"vertices and edges and, for example, might add edges that represent a " +"sequence of original edges decreasing the total time and space used in " +"graph algorithms." msgstr "" -msgid "The betweenness centrality are between parenthesis." +msgid "Does not return the full contracted graph." msgstr "" -msgid "The leaf vertices have betweenness centrality :math:`0`." +msgid "Only changes on the graph are returned." msgstr "" -msgid "" -"Betweenness centrality of vertex :math:`6` is higher than of vertex " -":math:`10`." +msgid "The returned values include:" msgstr "" -msgid "Removing vertex :math:`6` will create three graph components." +msgid "The new edges generated by linear contraction." msgstr "" -msgid "Removing vertex :math:`10` will create two graph components." +msgid "The modified vertices generated by dead end contraction." msgstr "" -msgid "``vid``" +msgid "The returned values are ordered as follows:" msgstr "" -msgid "``centrality``" +msgid "column ``id`` ascending when its a modified vertex." msgstr "" -msgid "" -"Relative betweenness centrality score of the vertex (will be in range " -"[0,1])" +msgid "column ``id`` with negative numbers descending when its a new edge." msgstr "" msgid "" -"Boost's `betweenness_centrality " -"`_" +"Currently there are two types of contraction methods included in this " +"function:" msgstr "" -msgid "Queries use the :doc:`sampledata` network." +msgid "Dead End Contraction. See :doc:`pgr_contractionDeadEnd`." msgstr "" -msgid "``pgr_biconnectedComponents``" +msgid "Linear Contraction. See :doc:`pgr_contractionLinear`." msgstr "" -msgid "" -"``pgr_biconnectedComponents`` — Biconnected components of an undirected " -"graph." +msgid "pgr_contraction(`Edges SQL`_, [**options**])" msgstr "" -msgid "Result columns change:" +msgid "**options:** ``[directed, methods, cycles, forbidden]``" msgstr "" -msgid "``n_seq`` is removed" +msgid "Returns set of |result-contract|" msgstr "" -msgid "``seq`` changed type to ``BIGINT``" +msgid "Dead end and linear contraction in that order on an undirected graph." msgstr "" -msgid "" -"The biconnected components of an undirected graph are the maximal subsets" -" of vertices such that the removal of a vertex from particular component " -"will not disconnect the component. Unlike connected components, vertices " -"may belong to multiple biconnected components. Vertices can be present in" -" multiple biconnected components, but each edge can only be contained in " -"a single biconnected component." +msgid "Contraction optional parameters" msgstr "" -msgid "Components are described by edges." +msgid "``methods``" msgstr "" -msgid "``component`` ascending." +msgid "``INTEGER[]``" msgstr "" -msgid "``edge`` ascending." +msgid "``ARRAY[1,2]``" msgstr "" -msgid "pgr_biconnectedComponents(`Edges SQL`_)" +msgid "Ordered contraction operations." msgstr "" -msgid "Returns set of |result-component-E|" +msgid "1 = Dead end contraction" msgstr "" -msgid "The biconnected components of the graph" +msgid "2 = Linear contraction" msgstr "" -msgid "``component``" +msgid "``cycles``" msgstr "" -msgid "Component identifier." +msgid ":math:`1`" msgstr "" -msgid "Has the value of the minimum edge identifier in the component." +msgid "Number of times the contraction methods will be performed." msgstr "" -msgid "Identifier of the edge that belongs to the ``component``." +msgid "``forbidden``" msgstr "" -msgid "" -"Boost: `Biconnected components " -"`__" +msgid "``BIGINT[]``" msgstr "" -msgid "``pgr_binaryBreadthFirstSearch`` - Experimental" +msgid "``ARRAY[]::BIGINT[]``" msgstr "" -msgid "" -"``pgr_binaryBreadthFirstSearch`` — Returns the shortest path in a binary " -"graph." +msgid "Identifiers of vertices forbidden for contraction." msgstr "" -msgid "" -"Any graph whose edge-weights belongs to the set {0,X}, where 'X' is any " -"non-negative integer, is termed as a 'binary graph'." +msgid "The function returns a single row. The columns of the row are:" msgstr "" -msgid "pgr_binaryBreadthFirstSearch(`Combinations`_)" +msgid "``type``" msgstr "" -msgid "pgr_binaryBreadthFirstSearch(`One to One`_)" +msgid "Type of the row." msgstr "" -msgid "pgr_binaryBreadthFirstSearch(`One to Many`_)" +msgid "``v`` when the row is a vertex." msgstr "" -msgid "pgr_binaryBreadthFirstSearch(`Many to One`_)" +msgid "Column ``id`` has a positive value." msgstr "" -msgid "pgr_binaryBreadthFirstSearch(`Many to Many`_)" +msgid "``e`` when the row is an edge." msgstr "" -msgid "" -"It is well-known that the shortest paths between a single source and all " -"other vertices can be found using Breadth First Search in :math:`O(|E|)` " -"in an unweighted graph, i.e. the distance is the minimal number of edges " -"that you need to traverse from the source to another vertex. We can " -"interpret such a graph also as a weighted graph, where every edge has the" -" weight :math:`1`. If not alledges in graph have the same weight, that we" -" need a more general algorithm, like Dijkstra's Algorithm which runs in " -":math:`O(|E|log|V|)` time." +msgid "Column ``id`` has a negative value." msgstr "" -msgid "" -"However if the weights are more constrained, we can use a faster " -"algorithm. This algorithm, termed as 'Binary Breadth First Search' as " -"well as '0-1 BFS', is a variation of the standard Breadth First Search " -"problem to solve the SSSP (single-source shortest path) problem in " -":math:`O(|E|)`, if the weights of each edge belongs to the set {0,X}, " -"where 'X' is any non-negative real integer." +msgid "All numbers on this column are ``DISTINCT``" msgstr "" -msgid "" -"Process is done only on 'binary graphs'. ('Binary Graph': Any graph whose" -" edge-weights belongs to the set {0,X}, where 'X' is any non-negative " -"real integer.)" +msgid "When ``type`` = **'v'**." msgstr "" -msgid "Running time: :math:`O(| start\\_vids | * |E|)`" +msgid "Identifier of the modified vertex." msgstr "" -msgid "" -"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vid**, **end vid**, " -"[``directed``])" +msgid "When ``type`` = **'e'**." msgstr "" -msgid "" -"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vid**, **end vids**, " -"[``directed``])" +msgid "Decreasing sequence starting from **-1**." msgstr "" msgid "" -"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vids**, **end vid**, " -"[``directed``])" +"Representing a pseudo `id` as is not incorporated in the set of original " +"edges." msgstr "" -msgid "" -"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vids**, **end vids**, " -"[``directed``])" +msgid "``contracted_vertices``" msgstr "" -msgid "" -"pgr_binaryBreadthFirstSearch(`Edges SQL`_, `Combinations SQL`_, " -"[``directed``])" +msgid "Array of contracted vertex identifiers." +msgstr "" + +msgid "When ``type`` = **'v'**: :math:`-1`" msgstr "" msgid "" -"**Note:** Using the :doc:`sampledata` Network as all weights are same " -"(i.e :math:`1``)" +"When ``type`` = **'e'**: Identifier of the source vertex of the current " +"edge (``source``, ``target``)." msgstr "" -msgid "https://cp-algorithms.com/graph/01_bfs.html" +msgid "" +"When ``type`` = **'e'**: Identifier of the target vertex of the current " +"edge (``source``, ``target``)." msgstr "" -#, python-format -msgid "https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm#Specialized_variants" +msgid "" +"When ``type`` = **'e'**: Weight of the current edge (``source``, " +"``target``)." msgstr "" -msgid "pgr_bipartite -Experimental" +msgid "Only dead end contraction" msgstr "" -msgid "" -"``pgr_bipartite`` — Disjoint sets of vertices such that no two vertices " -"within the same set are adjacent." +msgid "Only linear contraction" msgstr "" -msgid "New **experimental** signature" +msgid "The cycle" msgstr "" msgid "" -"A bipartite graph is a graph with two sets of vertices which are " -"connected to each other, but not within themselves. A bipartite graph is " -"possible if the graph coloring is possible using two colors such that " -"vertices in a set are colored with the same color." +"Contracting a graph can be done with more than one operation. The order " +"of the operations affect the resulting contracted graph, after applying " +"one operation, the set of vertices that can be contracted by another " +"operation changes." msgstr "" -msgid "The algorithm works in undirected graph only." +msgid "This implementation cycles ``cycles`` times through the ``methods`` ." msgstr "" -msgid "The returned values are not ordered." +msgid "Contracting sample data" msgstr "" msgid "" -"The algorithm checks graph is bipartite or not. If it is bipartite then " -"it returns the node along with two colors `0` and `1` which represents " -"two different sets." -msgstr "" - -msgid "If graph is not bipartite then algorithm returns empty set." +"In this section, building and using a contracted graph will be shown by " +"example." msgstr "" -msgid "pgr_bipartite(`Edges SQL`_)" +msgid "The :doc:`sampledata` for an undirected graph is used" msgstr "" -msgid "Returns set of |result-node-color|" +msgid "a dead end operation first followed by a linear operation." msgstr "" -msgid "When the graph is bipartite" +msgid "Construction of the graph in the database" msgstr "" -msgid "Additional Example" +msgid "The original graph:" msgstr "" -msgid "The odd length cyclic graph can not be bipartite." +msgid "" +"The results do not represent the contracted graph. They represent the " +"changes that need to be done to the graph after applying the contraction " +"methods." msgstr "" msgid "" -"The edge :math:`5 \\rightarrow 1` will make subgraph with vertices " -":math:`\\{1, 3, 7, 6, 5\\}` an odd length cyclic graph, as the cycle has " -"5 vertices." +"Observe that vertices, for example, :math:`6` do not appear in the " +"results because it was not affected by the contraction algorithm." msgstr "" -msgid "Edges in blue represent odd length cycle subgraph." +msgid "After doing the dead end contraction operation:" msgstr "" -msgid "``pgr_boykovKolmogorov``" +msgid "After doing the linear contraction operation to the graph above:" msgstr "" -msgid "" -"``pgr_boykovKolmogorov`` — Calculates the flow on the graph edges that " -"maximizes the flow from the sources to the targets using Boykov " -"Kolmogorov algorithm." +msgid "The process to create the contraction graph on the database:" msgstr "" -msgid "New **proposed** signature" +msgid "Add additional columns" msgstr "" -msgid "``pgr_boykovKolmogorov`` (`Combinations`_)" +msgid "" +"Adding extra columns to the edges and vertices tables. In this " +"documentation the following will be used:" msgstr "" -msgid "Renamed from ``pgr_maxFlowBoykovKolmogorov``" +msgid "Column." msgstr "" -msgid "**Proposed** function" +msgid "The vertices set belonging to the vertex/edge" msgstr "" -msgid "New **Experimental** function" +msgid "``is_contracted``" msgstr "" -msgid "Running time: Polynomial" +msgid "On the vertex table" msgstr "" -msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vid**, **end vid**)" +msgid "" +"when ``true`` the vertex is contracted, its not part of the contracted " +"graph." msgstr "" -msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vid**, **end vids**)" +msgid "" +"when ``false`` the vertex is not contracted, its part of the contracted " +"graph." msgstr "" -msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vids**, **end vid**)" +msgid "``is_new``" msgstr "" -msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vids**, **end vids**)" +msgid "On the edge table" msgstr "" -msgid "pgr_boykovKolmogorov(`Edges SQL`_, `Combinations SQL`_)" +msgid "" +"when ``true`` the edge was generated by the contraction algorithm. its " +"part of the contracted graph." msgstr "" -msgid "Returns set of |result-flow|" +msgid "" +"when ``false`` the edge is an original edge, might be or not part of the " +"contracted graph." msgstr "" -msgid "From vertex :math:`11` to vertex :math:`12`" +msgid "Store contraction information" msgstr "" -msgid "From vertex :math:`11` to vertices :math:`\\{5, 10, 12\\}`" +msgid "Store the contraction results in a table." msgstr "" -msgid "From vertices :math:`\\{11, 3, 17\\}` to vertex :math:`12`" +msgid "Update the edges and vertices tables" msgstr "" -msgid "From vertices :math:`\\{11, 3, 17\\}` to vertices :math:`\\{5, 10, 12\\}`" +msgid "Use ``is_contracted`` column to indicate the vertices that are contracted." msgstr "" msgid "" -"Using a combinations table, equivalent to calculating result from " -"vertices :math:`\\{5, 6\\}` to vertices :math:`\\{10, 15, 14\\}`." +"Fill ``contracted_vertices`` with the information from the results that " +"belong to the vertices." msgstr "" -msgid "https://www.boost.org/libs/graph/doc/boykov_kolmogorov_max_flow.html" +msgid "Insert the new edges generated by pgr_contraction." msgstr "" -msgid "``pgr_breadthFirstSearch`` - Experimental" +msgid "The contracted graph" msgstr "" -msgid "" -"``pgr_breadthFirstSearch`` — Returns the traversal order(s) using Breadth" -" First Search algorithm." +msgid "Vertices that belong to the contracted graph." msgstr "" -msgid "``pgr_breadthFirstSearch`` (`Single Vertex`_)" +msgid "Edges that belong to the contracted graph." msgstr "" -msgid "``pgr_breadthFirstSearch`` (`Multiple Vertices`_)" +msgid "Visually:" msgstr "" -msgid "" -"Provides the Breadth First Search traversal order from a root vertex to a" -" particular depth." +msgid "Using the contracted graph" msgstr "" -msgid "The implementation will work on any type of graph." +msgid "" +"Depending on the final application the graph is to be prepared. In this " +"example the final application will be to calculate the cost from two " +"vertices in the original graph by using the contracted graph with " +"``pgr_dijkstraCost``" msgstr "" msgid "" -"Provides the Breadth First Search traversal order from a source node to a" -" target depth level." +"There are three cases when calculating the shortest path between a given " +"source and target in a contracted graph:" msgstr "" -msgid "Running time: :math:`O(E + V)`" +msgid "Case 1: Both source and target belong to the contracted graph." msgstr "" -msgid "pgr_breadthFirstSearch(`Edges SQL`_, **root vid**, [**options**])" +msgid "Case 2: Source and/or target belong to an edge subgraph." msgstr "" -msgid "pgr_breadthFirstSearch(`Edges SQL`_, **root vids**, [**options**])" +msgid "Case 3: Source and/or target belong to a vertex." msgstr "" -msgid "**options:** ``[max_depth, directed]``" +msgid "The final application should consider all of those cases." msgstr "" -msgid "Returns set of |result-bfs|" +msgid "Create a view (or table) of the contracted graph:" msgstr "" -msgid "" -"From root vertex :math:`6` on a **directed** graph with edges in " -"ascending order of ``id``" +msgid "Create the function that will use the contracted graph." msgstr "" msgid "" -"From root vertices :math:`\\{12, 6\\}` on an **undirected** graph with " -"**depth** :math:`<= 2` and edges in ascending order of ``id``" +"Case 2: Source and/or target belong to an edge that has contracted " +"vertices." msgstr "" -msgid "DFS optional parameters" +msgid "Case 3: Source and/or target belong to a vertex that has been contracted." msgstr "" -msgid "Same as `Single vertex`_ with edges in ascending order of ``id``." +msgid "``pgr_contractionDeadEnd`` - Proposed" msgstr "" -msgid "Same as `Single vertex`_ with edges in descending order of ``id``." +msgid "" +"``pgr_contractionDeadEnd`` — Performs graph contraction and returns the " +"contracted vertices and edges." msgstr "" -msgid "The resulting traversal is different." +msgid "A node is considered a dead end node when:" msgstr "" -msgid "" -"The left image shows the result with ascending order of ids and the right" -" image shows with descending order of the edge identifiers." +msgid "On undirected graphs:" msgstr "" -msgid "|ascending| |descending|" +msgid "The number of adjacent vertices is 1." msgstr "" -msgid "ascending" +msgid "On directed graphs:" msgstr "" -msgid "descending" +msgid "When there is only one adjacent vertex or" msgstr "" -msgid "" -"`Boost: Breadth First Search algorithm documentation " -"`__" +msgid "When all edges are incoming regardless of the number of adjacent vertices." msgstr "" -msgid "" -"`Wikipedia: Breadth First Search algorithm `__" +msgid "pgr_contractionDeadEnd(`Edges SQL`_, [**options**])" msgstr "" -msgid "``pgr_bridges``" +msgid "**options:** ``[directed, forbidden_vertices]``" msgstr "" -msgid "``pgr_bridges`` - Return the bridges of an undirected graph." +msgid "Dead end contraction on an undirected graph." msgstr "" -msgid "" -"A bridge is an edge of an undirected graph whose deletion increases its " -"number of connected components. This implementation can only be used with" -" an undirected graph." +msgid "The green nodes are dead end nodes." msgstr "" -msgid "``edge`` ascending" +msgid "Node :math:`3` is a dead end node after node :math:`1` is contracted." msgstr "" -msgid "Running time: :math:`O(E * (V + E))`" +msgid "``forbidden_vertices``" msgstr "" -msgid "pgr_bridges(`Edges SQL`_)" +msgid "``ARRAY[`` |ANY-INTEGER| ``]``" msgstr "" -msgid "Returns set of |result-edge|" +msgid "**Empty**" msgstr "" -msgid "The bridges of the graph" +msgid "Value = ``e`` indicating the row is an edge." msgstr "" -msgid "Identifier of the edge that is a bridge." +msgid "A pseudo `id` of the edge." msgstr "" -#, python-format -msgid "https://en.wikipedia.org/wiki/Bridge_%28graph_theory%29" +msgid "Identifier of the source vertex of the current edge." msgstr "" -msgid "**Supported versions**" +msgid "Identifier of the target vertex of the current edge." msgstr "" -msgid "``pgr_chinesePostman`` - Experimental" +msgid "Weight of the current edge." msgstr "" -msgid "" -"``pgr_chinesePostman`` — Calculates the shortest circuit path which " -"contains every edge in a directed graph and starts and ends on the same " -"vertex." +msgid "Dead end vertex on undirected graph" msgstr "" -msgid "Returns ``EMPTY SET`` on a disconnected graph" +msgid "They have only one adjacent node." msgstr "" -msgid "pgr_chinesePostman(`Edges SQL`_)" +msgid "Dead end vertex on directed graph" msgstr "" -msgid "Returns set of |result-1-1-no-seq|" +msgid "The green nodes are dead end nodes" msgstr "" -msgid "Returns set of ``(seq, node, edge, cost, agg_cost)``" +msgid "The blue nodes have an unlimited number of incoming and/or outgoing edges." msgstr "" -msgid "Sequential value starting from ``1``" +msgid "Node" msgstr "" -msgid "" -"Identifier of the edge used to go from ``node`` to the next node in the " -"path sequence. ``-1`` for the last node of the path." +msgid "Adjacent nodes" msgstr "" -msgid "Aggregate cost from ``start_v`` to ``node``." +msgid "Dead end" msgstr "" -msgid "``pgr_chinesePostmanCost`` - Experimental" +msgid "Reason" msgstr "" -msgid "" -"``pgr_chinesePostmanCost`` — Calculates the minimum costs of a circuit " -"path which contains every edge in a directed graph and starts and ends on" -" the same vertex." +msgid ":math:`6`" msgstr "" -msgid "Return value when the graph if disconnected" +#, python-brace-format +msgid ":math:`\\{1\\}`" msgstr "" -msgid "pgr_chinesePostmanCost(`Edges SQL`_)" +msgid "Yes" msgstr "" -msgid "RETURNS ``FLOAT``" +msgid "Has only one adjacent node." msgstr "" -msgid "``pgr_chinesepostmancost``" +msgid ":math:`7`" msgstr "" -msgid "Minimum costs of a circuit path." +#, python-brace-format +msgid ":math:`\\{2\\}`" msgstr "" -msgid "pgr_connectedComponents" +msgid ":math:`8`" msgstr "" -msgid "" -"``pgr_connectedComponents`` — Connected components of an undirected graph" -" using a DFS-based approach." +#, python-brace-format +msgid ":math:`\\{2, 3\\}`" msgstr "" -msgid "" -"A connected component of an undirected graph is a set of vertices that " -"are all reachable from each other." +msgid "Has more than one adjacent node and all edges are incoming." msgstr "" -msgid "Components are described by vertices" +#, python-brace-format +msgid ":math:`\\{4\\}`" msgstr "" -msgid "``component`` ascending" +msgid ":math:`10`" msgstr "" -msgid "pgr_connectedComponents(`Edges SQL`_)" +#, python-brace-format +msgid ":math:`\\{4, 5\\}`" msgstr "" -msgid "Returns set of |result-component-V|" +msgid "No" msgstr "" -msgid "The connected components of the graph" +msgid "Has more than one adjacent node and all edges are outgoing." msgstr "" -msgid "Has the value of the minimum node identifier in the component." +msgid ":math:`1,2,3,4,5`" msgstr "" -msgid "Identifier of the vertex that belongs to the ``component``." +msgid "Many adjacent nodes." msgstr "" -msgid "Connecting disconnected components" +msgid "" +"Has more than one adjacent node and some edges are incoming and some are " +"outgoing." msgstr "" +#, python-brace-format msgid "" -"Boost: `Connected components " -"`__" +"From above, nodes :math:`\\{6, 7, 9\\}` are dead ends because the total " +"number of adjacent vertices is one." msgstr "" msgid "" -"wikipedia: `Connected component " -"`__" +"When there are more than one adjacent vertex, all edges need to be all " +"incoming edges otherwise it is not a dead end." msgstr "" -msgid "``pgr_contraction``" +msgid "Step by step dead end contraction" msgstr "" msgid "" -"``pgr_contraction`` — Performs graph contraction and returns the " -"contracted vertices and edges." -msgstr "" - -msgid "Name change from ``pgr_contractGraph``" +"The dead end contraction will stop until there are no more dead end " +"nodes. For example, from the following graph where :math:`3` is the dead " +"end node:" msgstr "" -msgid "Bug fixes" +msgid "" +"After contracting :math:`3`, node :math:`2` is now a dead end node and is" +" contracted:" msgstr "" msgid "" -"Contraction reduces the size of the graph by removing some of the " -"vertices and edges and, for example, might add edges that represent a " -"sequence of original edges decreasing the total time and space used in " -"graph algorithms." +"After contracting :math:`2`, stop. Node :math:`1` has the information of " +"nodes that were contracted." msgstr "" -msgid "Does not return the full contracted graph" +msgid "Creating the contracted graph" msgstr "" -msgid "Only changes on the graph are returned" +msgid "Steps for the creation of the contracted graph" msgstr "" -msgid "Currnetly there are two types of contraction methods" +msgid "Add additional columns." msgstr "" -msgid "Dead End Contraction" +msgid "Save results into a table." msgstr "" -msgid "Linear Contraction" +msgid "The contracted vertices are not part of the contracted graph." msgstr "" -msgid "The returned values include" +msgid "Using when departure and destination are in the contracted graph" msgstr "" -msgid "the added edges by linear contraction." +msgid "Using when departure/destination is not in the contracted graph" msgstr "" -msgid "the modified vertices by dead end contraction." +msgid "Using when departure and destination are not in the contracted graph" msgstr "" -msgid "The returned values are ordered as follows:" +msgid "``pgr_contractionLinear`` - Proposed" msgstr "" -msgid "column ``id`` ascending when type is ``v``" +msgid "" +"``pgr_contractionLinear`` — Performs graph contraction and returns the " +"contracted vertices and edges." msgstr "" -msgid "column ``id`` descending when type is ``e``" +msgid "pgr_contractionLinear(`Edges SQL`_, [**options**])" msgstr "" -msgid "The pgr_contraction function has the following signature:" +msgid "**options:** ``[directed, max_cycles, forbidden_vertices]``" msgstr "" -msgid "pgr_contraction(`Edges SQL`_, **contraction order**, [**options**])" +msgid "Linear contraction on an undirected graph." msgstr "" -msgid "**options:** ``[ max_cycles, forbidden_vertices, directed]``" +msgid "" +"The green nodes are linear nodes and will not be part of the contracted " +"graph." msgstr "" -msgid "Returns set of |result-contract|" +msgid "All edges adjacent will not be part of the contracted graph." msgstr "" -msgid "" -"Making a dead end and linear contraction in that order on an undirected " -"graph." +msgid "The red lines will be new edges of the contracted graph." msgstr "" msgid "**contraction Order**" msgstr "" -msgid "Ordered contraction operations." +msgid "" +"Number of times the contraction operations on ``contraction_order`` will " +"be performed." msgstr "" -msgid "1 = Dead end contraction" +msgid "A node connects two (or more) `linear` edges when" msgstr "" -msgid "2 = Linear contraction" +msgid "The number of adjacent vertices is 2." msgstr "" -msgid "Contraction optional parameters" +msgid "In case of a directed graph, a node is considered a `linear` node when" msgstr "" -msgid "``forbidden_vertices``" +msgid "Linearity is symmetrical." msgstr "" -msgid "**Empty**" +msgid "Linearity is not symmetrical" msgstr "" -msgid "Identifiers of vertices forbidden for contraction." +msgid "Graph where linearity is not symmetrical." msgstr "" -msgid ":math:`1`" +msgid "" +"When the graph is processed as a directed graph, linearity is not " +"symmetrical, therefore the graph can not be contracted." msgstr "" msgid "" -"Number of times the contraction operations on ``contraction_order`` will " -"be performed." +"When the same graph is processed as an undirected graph, linearity is " +"symmetrical, therefore the graph can be contracted." msgstr "" -msgid "The function returns a single row. The columns of the row are:" +msgid "The three edges can be replaced by one undirected edge" msgstr "" -msgid "``type``" +msgid "Edge :math:`1 - 3`." msgstr "" -msgid "Type of the ``id``." +msgid "With cost: :math:`4`." msgstr "" -msgid "``v`` when the row is a vertex." +#, python-brace-format +msgid "Contracted vertices in the edge: :math:`\\{2\\}`." msgstr "" -msgid "Column ``id`` has a positive value" +msgid "Linearity is symmetrical" msgstr "" -msgid "``e`` when the row is an edge." +msgid "Graph where linearity is symmetrical." msgstr "" -msgid "Column ``id`` has a negative value" +msgid "The four edges can be replaced by two directed edges." msgstr "" -msgid "All numbers on this column are ``DISTINCT``" +msgid "Edge :math:`3 - 1`." msgstr "" -msgid "When ``type`` = **'v'**." +msgid "With cost: :math:`6`." msgstr "" -msgid "Identifier of the modified vertex." +msgid "The four edges can be replaced by one undirected edge." msgstr "" -msgid "When ``type`` = **'e'**." +msgid "Step by step linear contraction" msgstr "" -msgid "Decreasing sequence starting from **-1**." +msgid "" +"The linear contraction will stop when there are no more linear edges. For" +" example from the following graph there are linear edges" msgstr "" -msgid "" -"Representing a pseudo `id` as is not incorporated in the set of original " -"edges." +msgid "Contracting vertex :math:`3`," msgstr "" -msgid "Array of contracted vertex identifiers." +msgid "The vertex :math:`3` is removed from the graph" msgstr "" -msgid "When ``type`` = **'v'**: :math:`-1`" +msgid "" +"The edges :math:`2 \\rightarrow 3` and :math:`w \\rightarrow z` are " +"removed from the graph." msgstr "" msgid "" -"When ``type`` = **'e'**: Identifier of the source vertex of the current " -"edge (``source``, ``target``)." +"A new edge :math:`2 \\rightarrow 4` is inserted represented with red " +"color." +msgstr "" + +msgid "Contracting vertex :math:`2`:" +msgstr "" + +msgid "The vertex :math:`2` is removed from the graph" msgstr "" msgid "" -"When ``type`` = **'e'**: Identifier of the target vertex of the current " -"edge (``source``, ``target``)." +"The edges :math:`1 \\rightarrow 2` and :math:`2 \\rightarrow 3` are " +"removed from the graph." msgstr "" msgid "" -"When ``type`` = **'e'**: Weight of the current edge (``source``, " -"``target``)." +"A new edge :math:`1 \\rightarrow 3` is inserted represented with red " +"color." msgstr "" -msgid "Only dead end contraction" +msgid "" +"Edge :math:`1 \\rightarrow 3` has the information of cost and the nodes " +"that were contracted." msgstr "" -msgid "Only linear contraction" +msgid "Create the contracted graph." msgstr "" -msgid "pgr_createTopology" +msgid "``pgr_createTopology``" msgstr "" msgid "" @@ -10096,10 +10127,7 @@ msgid "" "incremented to the rest of the edges." msgstr "" -msgid "The example uses the :doc:`sampledata` network." -msgstr "" - -msgid "pgr_createVerticesTable" +msgid "``pgr_createVerticesTable``" msgstr "" msgid "" @@ -10317,7 +10345,7 @@ msgid "" "`__" msgstr "" -msgid "pgr_dagShortestPath - Experimental" +msgid "``pgr_dagShortestPath`` - Experimental" msgstr "" msgid "" @@ -10379,12 +10407,15 @@ msgstr "" msgid "From vertex :math:`5` to vertex :math:`11` on a **directed** graph" msgstr "" +#, python-brace-format msgid "From vertex :math:`5` to vertices :math:`\\{7, 11\\}`" msgstr "" +#, python-brace-format msgid "From vertices :math:`\\{5, 10\\}` to vertex :math:`11`" msgstr "" +#, python-brace-format msgid "" "From vertices :math:`\\{5, 15\\}` to vertices :math:`\\{11, 17\\}` on an " "**undirected** graph" @@ -10396,34 +10427,97 @@ msgstr "" msgid "Making **start_vids** the same as **end_vids**" msgstr "" +msgid "" +"`Boost: DAG shortest paths " +"`__" +msgstr "" + msgid "https://en.wikipedia.org/wiki/Topological_sorting" msgstr "" -msgid "``pgr_degree`` -- Proposed" +msgid "``pgr_degree``" +msgstr "" + +msgid "" +"``pgr_degree`` — For each vertex in an undirected graph, return the count" +" of edges incident to the vertex." +msgstr "" + +msgid "Error messages adjustment." +msgstr "" + +msgid "New signature with only Edges SQL." +msgstr "" + +msgid "Calculates the degree of the vertices of an undirected graph" +msgstr "" + +msgid "" +"The degree (or valency) of a vertex of a graph is the number of edges " +"that are incident to the vertex." +msgstr "" + +msgid "A loop contributes 2 to a vertex's degree." +msgstr "" + +msgid "A vertex with degree 0 is called an isolated vertex." +msgstr "" + +msgid "Isolated vertex is not part of the result" +msgstr "" + +msgid "" +"Vertex not participating on the subgraph is considered and isolated " +"vertex." +msgstr "" + +msgid "" +"There can be a ``dryrun`` execution and the code used to get the answer " +"will be shown in a PostgreSQL ``NOTICE``." +msgstr "" + +msgid "" +"The code can be used as base code for the particular application " +"requirements." +msgstr "" + +msgid "No ordering is performed." +msgstr "" + +msgid "pgr_degree(`Edges SQL`_ , [``dryrun``])" +msgstr "" + +msgid "pgr_degree(`Edges SQL`_ , `Vertex SQL`_, [``dryrun``])" +msgstr "" + +msgid "RETURNS SETOF |result-degree|" +msgstr "" + +msgid "Edges" +msgstr "" + +msgid "example" msgstr "" -msgid "" -"``pgr_degree`` — For each vertex in an undirected graph, return the count" -" of edges incident to the vertex." +msgid "Get the degree of the vertices defined on the edges table" msgstr "" -msgid "Calculates the degree of the vertices of an **undirected** graph" +msgid "Edges and Vertices" msgstr "" -msgid "pgr_degree(`Edges SQL`_ , `Vertex SQL`_, [``dryrun``])" +msgid "Extracting the vertex information" msgstr "" -msgid "RETURNS SETOF |result-degree|" +msgid "``pgr_degree`` can use :doc:`pgr_extractVertices` embedded in the call." msgstr "" -msgid "Extracting the vertex information" +msgid "" +"For decent size networks, it is best to prepare your vertices table " +"before hand and use it on ``pgr_degree`` calls. (See `Using a vertex " +"table`_)" msgstr "" -msgid "" -"pgr_degree can utilize output from `pgr_extractVertices` or can have " -"`pgr_extractVertices` embedded in the call. For decent size networks, it " -"is best to prep your vertices table before hand and use that vertices " -"table for pgr_degree calls." +msgid "Calculate the degree of the nodes:" msgstr "" msgid "`Vertex SQL`_" @@ -10438,13 +10532,16 @@ msgstr "" msgid "When true do not process and get in a NOTICE the resulting query." msgstr "" -msgid "Vertex SQL" +msgid "For the `Edges and Vertices`_ signature:" msgstr "" -msgid "``in_edges``" +msgid "For the `Edges`_ signature:" msgstr "" -msgid "``BIGINT[]``" +msgid "Vertex SQL" +msgstr "" + +msgid "``in_edges``" msgstr "" msgid "" @@ -10475,9 +10572,49 @@ msgstr "" msgid "Number of edges that are incident to the vertex ``id``" msgstr "" +msgid "Degree of a loop" +msgstr "" + +msgid "Using the `Edges`_ signature." +msgstr "" + +msgid "Using the `Edges and Vertices`_ signature." +msgstr "" + msgid "Degree of a sub graph" msgstr "" +msgid "For the following is a subgraph of the :doc:`sampledata`:" +msgstr "" + +#, python-brace-format +msgid ":math:`E = \\{(1, 5 \\leftrightarrow 6), (1, 6 \\leftrightarrow 10)\\}`" +msgstr "" + +#, python-brace-format +msgid ":math:`V = \\{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17\\}`" +msgstr "" + +msgid "The vertices not participating on the edge are considered isolated" +msgstr "" + +msgid "their degree is 0 in the subgraph and" +msgstr "" + +msgid "their degree is not shown in the output." +msgstr "" + +msgid "Using a vertex table" +msgstr "" + +msgid "" +"For decent size networks, it is best to prepare your vertices table " +"before hand and use it on ``pgr_degree`` calls." +msgstr "" + +msgid "Extract the vertex information and save into a table:" +msgstr "" + msgid "Dry run execution" msgstr "" @@ -10491,37 +10628,42 @@ msgid "" "backend development needs." msgstr "" -msgid "Degree from an existing table" +msgid "Finding dead ends" msgstr "" msgid "" -"If you have a vertices table already built using ``pgr_extractVertices`` " -"and want the degree of the whole graph rather than a subset, you can " -"forgo using pgr_degree and work with the ``in_edges`` and ``out_edges`` " -"columns directly." +"If there is a vertices table already built using ``pgr_extractVertices`` " +"and want the degree of the whole graph rather than a subset, it can be " +"forgo using ``pgr_degree`` and work with the ``in_edges`` and " +"``out_edges`` columns directly." msgstr "" -msgid ":doc:`pgr_extractVertices`" +msgid "The degree of a dead end is 1." msgstr "" -msgid "``pgr_depthFirstSearch`` - Proposed" +msgid "Finding linear vertices" +msgstr "" + +msgid "The degree of a linear vertex is 2." msgstr "" msgid "" -"``pgr_depthFirstSearch`` — Returns a depth first search traversal of the " -"graph. The graph can be directed or undirected." +"If there is a vertices table already built using the " +"``pgr_extractVertices``" msgstr "" -msgid "Version 3.3.0" +msgid ":doc:`pgr_extractVertices`" msgstr "" -msgid "Promoted to **proposed** function" +msgid "``pgr_depthFirstSearch`` - Proposed" msgstr "" -msgid "``pgr_depthFirstSearch`` (`Single Vertex`_)" +msgid "" +"``pgr_depthFirstSearch`` — Returns a depth first search traversal of the " +"graph. The graph can be directed or undirected." msgstr "" -msgid "``pgr_depthFirstSearch`` (`Multiple Vertices`_)" +msgid "Version 3.3.0" msgstr "" msgid "" @@ -10577,12 +10719,12 @@ msgid "Same as `Single vertex`_ but with edges in descending order of ``id``." msgstr "" msgid "" -"`Boost: Depth First Search algorithm documentation " +"`Boost: Depth First Search " "`__" msgstr "" msgid "" -"`Boost: Undirected DFS algorithm documentation " +"`Boost: Undirected DFS " "`__" msgstr "" @@ -10600,45 +10742,31 @@ msgstr "" msgid "Version 3.5.0" msgstr "" -msgid "" -"``pgr_dijkstra`` (`One to One`_) added ``start_vid`` and ``end_vid`` " -"columns." +msgid "pgr_dijkstra(One to One) added ``start_vid`` and ``end_vid`` columns." msgstr "" -msgid "``pgr_dijkstra`` (`One to Many`_) added ``end_vid`` column." +msgid "pgr_dijkstra(One to Many) added ``end_vid`` column." msgstr "" -msgid "``pgr_dijkstra`` (`Many to One`_) added ``start_vid`` column." +msgid "pgr_dijkstra(Many to One) added ``start_vid`` column." msgstr "" msgid "Version 3.1.0" msgstr "" -msgid "``pgr_dijkstra`` (`Combinations`_)" -msgstr "" - -msgid "**Official** functions" -msgstr "" - msgid "Version 2.2.0" msgstr "" -msgid "New **proposed** functions:" -msgstr "" - -msgid "``pgr_dijkstra`` (`One to Many`_)" -msgstr "" - -msgid "``pgr_dijkstra`` (`Many to One`_)" +msgid "pgr_dijkstra(One to Many)" msgstr "" -msgid "``pgr_dijkstra`` (`Many to Many`_)" +msgid "pgr_dijkstra(Many to One)" msgstr "" -msgid "Signature change on ``pgr_dijkstra`` (`One to One`_)" +msgid "pgr_dijkstra(Many to Many)" msgstr "" -msgid "**Official** ``pgr_dijkstra`` (`One to One`_)" +msgid "Signature change on pgr_dijkstra(One to One)" msgstr "" msgid "pgr_dijkstra(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" @@ -10661,6 +10789,7 @@ msgid "" "columns to the new result columns." msgstr "" +#, python-brace-format msgid "From vertex :math:`6` to vertices :math:`\\{10, 17\\}` on a **directed**" msgstr "" @@ -10688,24 +10817,28 @@ msgstr "" msgid "5) Using `One to Many`_ to get the solution of examples 1 and 2" msgstr "" +#, python-brace-format msgid "Paths :math:`\\{6\\}\\rightarrow\\{10, 7\\}`" msgstr "" msgid "6) Using `Many to One`_ to get the solution of examples 2 and 4" msgstr "" +#, python-brace-format msgid "Paths :math:`\\{6, 12\\}\\rightarrow\\{7\\}`" msgstr "" msgid "7) Using `Many to Many`_ to get the solution of examples 1 to 4" msgstr "" +#, python-brace-format msgid "Paths :math:`\\{6, 12\\}\\rightarrow\\{10, 7\\}`" msgstr "" msgid "8) Using `Combinations`_ to get the solution of examples 1 to 3" msgstr "" +#, python-brace-format msgid "" "Paths :math:`\\{6\\}\\rightarrow\\{10, " "7\\}\\cup\\{12\\}\\rightarrow\\{10\\}`" @@ -10804,6 +10937,7 @@ msgstr "" msgid "Equvalences between signatures" msgstr "" +#, python-brace-format msgid "" "The following examples find the path for " ":math:`\\{6\\}\\rightarrow\\{10\\}`" @@ -10824,6 +10958,11 @@ msgstr "" msgid "37) Using `Combinations`_" msgstr "" +msgid "" +"`Boost: Dijkstra shortest paths " +"`__" +msgstr "" + #, python-format msgid "https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm" msgstr "" @@ -10836,9 +10975,6 @@ msgid "" "algorithm." msgstr "" -msgid "``pgr_dijkstraCost`` (`Combinations`_)" -msgstr "" - msgid "" "The ``pgr_dijkstraCost`` function sumarizes of the cost of the shortest " "path using Dijkstra Algorithm." @@ -10974,6 +11110,7 @@ msgstr "" msgid "Using a **directed** graph for car routing." msgstr "" +#, python-brace-format msgid "The subway stations are on the following vertices :math:`\\{1, 10, 11\\}`" msgstr "" @@ -11022,9 +11159,11 @@ msgstr "" msgid "Unsing an **undirected** graph for pedestrian routing" msgstr "" +#, python-brace-format msgid "The first subway line stations are at :math:`\\{15, 16\\}`" msgstr "" +#, python-brace-format msgid "The second subway line stations stops are at :math:`\\{1, 10, 11\\}`" msgstr "" @@ -11051,9 +11190,11 @@ msgstr "" msgid "Find the best car connection between all the stations of two subway lines" msgstr "" +#, python-brace-format msgid "The first subway line stations stops are at :math:`\\{1, 10, 11\\}`" msgstr "" +#, python-brace-format msgid "The second subway line stations are at :math:`\\{15, 16\\}`" msgstr "" @@ -11076,11 +11217,13 @@ msgstr "" msgid "From the results:" msgstr "" +#, python-brace-format msgid "" "making a connection from the first subway line :math:`\\{1, 10, 11\\}` to" " the second :math:`\\{15, 16\\}`:" msgstr "" +#, python-brace-format msgid "" "The best connections from all the stations from the first line are: " ":math:`{(1 \\rightarrow 16) (10 \\rightarrow 16) (11 \\rightarrow 16)}`" @@ -11091,11 +11234,13 @@ msgid "" "(lines: `11` and `12`)" msgstr "" +#, python-brace-format msgid "" "making a connection from the second subway line :math:`\\{15, 16\\}` to " "the first :math:`\\{1, 10, 11\\}`:" msgstr "" +#, python-brace-format msgid "" "The best connections from all the stations from the second line are: " ":math:`{(15 \\rightarrow 10) (16 \\rightarrow 11)}`" @@ -11127,9 +11272,6 @@ msgstr "" msgid "When ``false``: ``cap`` limit per ``Start vid`` will be returned" msgstr "" -msgid "boost: https://www.boost.org/libs/graph/doc/table_of_contents.html" -msgstr "" - #, python-format msgid "Wikipedia: https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm" msgstr "" @@ -11202,6 +11344,7 @@ msgstr "" msgid "``pgr_dijkstraVia`` — Route that goes through a list of vertices." msgstr "" +#, python-brace-format msgid "" "Given a list of vertices and a graph, this function is equivalent to " "finding the shortest path between :math:`vertex_i` and " @@ -11232,6 +11375,7 @@ msgstr "" msgid "Returns set of |via-result|" msgstr "" +#, python-brace-format msgid "" "Find the route that visits the vertices :math:`\\{5, 1, 8\\}` in that " "order on an directed graph." @@ -11260,6 +11404,7 @@ msgid "" "current ``seq``." msgstr "" +#, python-brace-format msgid "" "All this examples are about the route that visits the vertices " ":math:`\\{5, 7, 1, 8, 15\\}` in that order on a **directed** graph." @@ -11295,6 +11440,9 @@ msgstr "" msgid "``pgr_drivingDistance`` - Returns the driving distance from a start node." msgstr "" +msgid "Standarizing output columns to |result-spantree|" +msgstr "" + msgid "Added ``depth`` and ``start_vid`` result columns." msgstr "" @@ -11304,13 +11452,16 @@ msgstr "" msgid "Added ``depth`` and ``pred`` result columns." msgstr "" -msgid "Signature change pgr_drivingDistance(single vertex)" +msgid "Signature change:" +msgstr "" + +msgid "pgr_drivingDistance(single vertex)" msgstr "" -msgid "New **Official** pgr_drivingDistance(multiple vertices)" +msgid "New official signature:" msgstr "" -msgid "Official:: pgr_drivingDistance(single vertex)" +msgid "pgr_drivingDistance(multiple vertices)" msgstr "" msgid "" @@ -11341,6 +11492,7 @@ msgstr "" msgid "Multiple Vertices" msgstr "" +#, python-brace-format msgid "" "From vertices :math:`\\{11, 16\\}` for a distance of :math:`3.0` with " "equi-cost on a directed graph" @@ -11362,12 +11514,13 @@ msgid "" "signature." msgstr "" +#, python-brace-format msgid "" "From vertices :math:`\\{11, 16\\}` for a distance of :math:`3.0` on an " "undirected graph" msgstr "" -msgid "pgr_edgeColoring - Experimental" +msgid "``pgr_edgeColoring`` - Experimental" msgstr "" msgid "" @@ -11439,6 +11592,16 @@ msgstr "" msgid "Graph coloring of pgRouting :doc:`sampledata`" msgstr "" +msgid "" +"`Boost: Edge Coloring " +"`__" +msgstr "" + +msgid "" +"`Wikipedia: Graph coloring " +"`__" +msgstr "" + msgid "``pgr_edgeDisjointPaths``" msgstr "" @@ -11447,9 +11610,6 @@ msgid "" "groups of vertices." msgstr "" -msgid "New **proposed** function:" -msgstr "" - msgid "pgr_edgeDisjointPaths(Combinations)" msgstr "" @@ -11513,6 +11673,7 @@ msgstr "" msgid "Returns set of |result-disjoint-m-m|" msgstr "" +#, python-brace-format msgid "" "Using a combinations table, equivalent to calculating result from " "vertices :math:`\\{5, 6\\}` to vertices :math:`\\{10, 15, 14\\}` on an " @@ -11531,9 +11692,6 @@ msgid "" "Algorithm." msgstr "" -msgid "``pgr_edmondsKarp`` (`Combinations`_)" -msgstr "" - msgid "Renamed from ``pgr_maxFlowEdmondsKarp``" msgstr "" @@ -11555,14 +11713,16 @@ msgstr "" msgid "pgr_edmondsKarp(`Edges SQL`_, `Combinations SQL`_)" msgstr "" -msgid "https://www.boost.org/libs/graph/doc/edmonds_karp_max_flow.html" +msgid "" +"`Boost: Edmonds Karp max flow " +"`__" msgstr "" #, python-format msgid "https://en.wikipedia.org/wiki/Edmonds%E2%80%93Karp_algorithm" msgstr "" -msgid "``pgr_edwardMoore - Experimental``" +msgid "``pgr_edwardMoore`` - Experimental" msgstr "" msgid "" @@ -11570,19 +11730,7 @@ msgid "" "algorithm." msgstr "" -msgid "``pgr_edwardMoore`` (`Combinations`_)" -msgstr "" - -msgid "``pgr_edwardMoore`` (`One to One`_)" -msgstr "" - -msgid "``pgr_edwardMoore`` (`One to Many`_)" -msgstr "" - -msgid "``pgr_edwardMoore`` (`Many to One`_)" -msgstr "" - -msgid "``pgr_edwardMoore`` (`Many to Many`_)" +msgid "pgr_edwardMoore(Combinations)" msgstr "" msgid "" @@ -11643,15 +11791,12 @@ msgstr "" msgid "https://en.wikipedia.org/wiki/Shortest_Path_Faster_Algorithm" msgstr "" -msgid "pgr_extractVertices -- Proposed" +msgid "``pgr_extractVertices``" msgstr "" msgid "``pgr_extractVertices`` — Extracts the vertices information" msgstr "" -msgid "Classified as **proposed** function" -msgstr "" - msgid "" "This is an auxiliary function for extracting the vertex information of " "the set of edges of a graph." @@ -11751,13 +11896,7 @@ msgstr "" msgid "``pgr_findCloseEdges`` - Finds the close edges to a point geometry." msgstr "" -msgid "New **proposed** signatures:" -msgstr "" - -msgid "``pgr_findCloseEdges`` (`One point`_)" -msgstr "" - -msgid "``pgr_findCloseEdges`` (`Many points`_)" +msgid "``partial`` option is removed." msgstr "" msgid "" @@ -11773,7 +11912,7 @@ msgid "" "adjustments needed by the application." msgstr "" -msgid "``EMTPY SET`` is returned on dryrun executions" +msgid "``EMPTY SET`` is returned on dryrun executions" msgstr "" msgid "pgr_findCloseEdges(`Edges SQL`_, **point**, **tolerance**, [**options**])" @@ -11782,7 +11921,7 @@ msgstr "" msgid "pgr_findCloseEdges(`Edges SQL`_, **points**, **tolerance**, [**options**])" msgstr "" -msgid "**options:** ``[cap, partial, dryrun]``" +msgid "**options:** ``[cap, dryrun]``" msgstr "" msgid "Returns set of |result-find|" @@ -11791,52 +11930,16 @@ msgstr "" msgid "One point" msgstr "" -msgid "Default: ``cap => 1``" -msgstr "" - -msgid "Maximum one row answer." -msgstr "" - -msgid "Default: ``partial => true``" -msgstr "" - -msgid "With less calculations as possible." +msgid "Get two close edges to points of interest with :math:`pid = 5`" msgstr "" -msgid "Default: ``dryrun => false``" -msgstr "" - -msgid "Process query" -msgstr "" - -msgid "Returns" -msgstr "" - -msgid "values on ``edge_id``, ``fraction``, ``side`` columns." -msgstr "" - -msgid "``NULL`` on ``distance``, ``geom``, ``edge`` columns." +msgid "``cap => 2``" msgstr "" msgid "Many points" msgstr "" -msgid "" -"Find at most :math:`2` edges close to all vertices on the points of " -"interest table." -msgstr "" - -msgid "One answer per point, as small as possible." -msgstr "" - -msgid "" -"Columns ``edge_id``, ``fraction``, ``side`` and ``geom`` are returned " -"with values." -msgstr "" - -msgid "" -"``geom`` contains the original point geometry to assist on " -"deterpartialing to which point geometry the row belongs to." +msgid "For each points of interests, find the closest edge." msgstr "" msgid "**point**" @@ -11863,17 +11966,6 @@ msgstr "" msgid "Limit output rows" msgstr "" -msgid "``partial``" -msgstr "" - -msgid "" -"When ``true`` only columns needed for :doc:`withPoints-category` are " -"calculated." -msgstr "" - -msgid "When ``false`` all columns are calculated" -msgstr "" - msgid "When ``false`` calculations are performed." msgstr "" @@ -11889,269 +11981,101 @@ msgid "When :math:`cap = 1`, it is the closest edge." msgstr "" msgid "" -"Value in <0,1> that indicates the relative postition from the first end-" +"Value in <0,1> that indicates the relative position from the first end-" "point of the edge." msgstr "" -msgid "Value in ``[r, l]`` indicating if the point is:" -msgstr "" - -msgid "In the right ``r``." -msgstr "" - -msgid "In the left ``l``." -msgstr "" - -msgid "When the point is on the line it is considered to be on the right." -msgstr "" - -msgid "``distance``" -msgstr "" - -msgid "Distance from point to edge." -msgstr "" - -msgid "``NULL`` when ``cap = 1`` on the `One point`_ signature" -msgstr "" - -msgid "``POINT`` geometry" -msgstr "" - -msgid "" -"`One Point`_: Contains the point on the edge that is ``fraction`` away " -"from the starting point of the edge." -msgstr "" - -msgid "`Many Points`_: Contains the corresponding **original point**" -msgstr "" - -msgid "" -"``LINESTRING`` geometry from the **original point** to the closest point " -"of the edge with identifier ``edge_id``" -msgstr "" - -msgid "One point results" -msgstr "" - -msgid "The green nodes is the **original point**" -msgstr "" - -msgid "The geometry ``geom`` is a point on the :math:`sp \\rightarrow ep` edge." -msgstr "" - -msgid "" -"The geometry ``edge`` is a line that connects the **original point** with" -" ``geom``" -msgstr "" - -msgid "Many point results" -msgstr "" - -msgid "The green nodes are the **original points**" -msgstr "" - -msgid "" -"The geometry ``geom``, marked as **g1** and **g2** are the **original " -"points**" -msgstr "" - -msgid "" -"The geometry ``edge``, marked as **edge1** and **edge2** is a line that " -"connects the **original point** with the closest point on the :math:`sp " -"\\rightarrow ep` edge." -msgstr "" - -msgid "One point examples" -msgstr "" - -msgid "At most two answers" -msgstr "" - -msgid "``cap => 2``" -msgstr "" - -msgid "Maximum two row answer." -msgstr "" - -msgid "Understanding the result" -msgstr "" - -msgid "``NULL`` on ``geom``, ``edge``" -msgstr "" - -msgid "``edge_id`` identifier of the edge close to the **original point**" -msgstr "" - -msgid "" -"Two edges are withing :math:`0.5` distance units from the **original " -"point**: :math:`{5, 8}`" -msgstr "" - -msgid "For edge :math:`5`:" -msgstr "" - -msgid "" -"``fraction``: The closest point from the **original point** is at the " -":math:`0.8` fraction of the edge :math:`5`." -msgstr "" - -msgid "" -"``side``: The **original point** is located to the left side of edge " -":math:`5`." -msgstr "" - -msgid "" -"``distance``: The **original point** is located :math:`0.1` length units " -"from edge :math:`5`." -msgstr "" - -msgid "For edge :math:`8`:" -msgstr "" - -msgid "" -"``fraction``: The closest point from the **original point** is at the " -":math:`0.89..` fraction of the edge :math:`8`." -msgstr "" - -msgid "" -"``side``: The **original point** is located to the right side of edge " -":math:`8`." -msgstr "" - -msgid "" -"``distance``: The **original point** is located :math:`0.19..` length " -"units from edge :math:`8`." -msgstr "" - -msgid "One answer, all columns" -msgstr "" - -msgid "``partial => false``" -msgstr "" - -msgid "Calculate all columns" -msgstr "" - -msgid "``edge_id`` identifier of the edge **closest** to the **original point**" -msgstr "" - -msgid "" -"From all edges within :math:`0.5` distance units from the **original " -"point**: :math:`{5}` is the closest one." -msgstr "" - -msgid "" -"``geom``: Contains the geometry of the closest point on edge :math:`5` " -"from the **original point**." -msgstr "" - -msgid "" -"``edge``: Contains the ``LINESTRING`` geometry of the **original point** " -"to the closest point on on edge :math:`5` ``geom``" -msgstr "" - -msgid "At most two answers with all columns" -msgstr "" - -msgid "Understanding the result:" -msgstr "" - -msgid "" -"``geom``: Contains the geometry of the closest point on edge :math:`8` " -"from the **original point**." -msgstr "" - -msgid "" -"``edge``: Contains the ``LINESTRING`` geometry of the **original point** " -"to the closest point on on edge :math:`8` ``geom``" -msgstr "" - -msgid "One point dry run execution" +msgid "Value in ``[r, l]`` indicating if the point is:" msgstr "" -msgid "Returns ``EMPTY SET``." +msgid "At the right ``r`` of the segment." msgstr "" -msgid "``partial => true``" +msgid "When the point is on the line it is considered to be on the right." msgstr "" -msgid "Is ignored" +msgid "At the left ``l`` of the segment." msgstr "" -msgid "" -"Because it is a **dry run** excecution, the code for all calculations are" -" shown on the PostgreSQL ``NOTICE``." +msgid "``distance``" msgstr "" -msgid "``dryrun => true``" +msgid "Distance from the point to the edge." msgstr "" -msgid "Do not process query" +msgid "Original ``POINT`` geometry." msgstr "" msgid "" -"Generate a PostgreSQL ``NOTICE`` with the code used to calculate all " -"columns" +"``LINESTRING`` geometry that connects the original **point** to the " +"closest point of the edge with identifier ``edge_id``" msgstr "" -msgid "``cap`` and **original point** are used in the code" +msgid "One point in an edge" msgstr "" -msgid "Many points examples" +msgid "The green node is the original point." msgstr "" -msgid "At most two answers per point" +msgid "``geom`` has the value of the original point." msgstr "" -msgid "``NULL`` on ``edge``" +msgid "" +"The geometry ``edge`` is a line that connects the original point with the" +" edge :math:`sp \\rightarrow ep` edge." msgstr "" -msgid "" -"``edge_id`` identifier of the edge close to a **original point** " -"(``geom``)" +msgid "The point is located at the left of the edge." msgstr "" -msgid "" -"Two edges at most withing :math:`0.5` distance units from each of the " -"**original points**:" +msgid "One point dry run execution" msgstr "" -msgid "For ``POINT(1.8 0.4)`` and ``POINT(0.3 1.8)`` only one edge was found." +msgid "Using the query from the previous example:" msgstr "" -msgid "For the rest of the points two edges were found." +msgid "Returns ``EMPTY SET``." msgstr "" -msgid "For point ``POINT(2.9 1.8)``" +msgid "``dryrun => true``" msgstr "" -msgid "" -"Edge :math:`5` is before :math:`8` therefore edge :math:`5` has the " -"shortest distance to ``POINT(2.9 1.8)``." +msgid "Generates a PostgreSQL ``NOTICE`` with the code used." msgstr "" -msgid "One answer per point, all columns" +msgid "" +"The generated code can be used as a starting base code for additional " +"requirements, like taking into consideration the SRID." msgstr "" -msgid "For the **original point** ``POINT(2.9 1.8)``" +msgid "Many points in an edge" msgstr "" -msgid "Edge :math:`5` is the closest edge to the **original point**" +msgid "The green nodes are the **original points**" msgstr "" msgid "" -"``geom``: Contains the geometry of the **original point** ``POINT(2.9 " -"1.8)``" +"The geometry ``geom``, marked as **g1** and **g2** are the **original " +"points**" msgstr "" msgid "" -"``edge``: Contains the ``LINESTRING`` geometry of the **original point** " -"(``geom``) to the closest point on on edge." +"The geometry ``edge``, marked as **edge1** and **edge2** is a line that " +"connects the **original point** with the closest point on the :math:`sp " +"\\rightarrow ep` edge." msgstr "" msgid "Many points dry run execution" msgstr "" +msgid "Do not process query" +msgstr "" + +msgid "" +"Generate a PostgreSQL ``NOTICE`` with the code used to calculate all " +"columns" +msgstr "" + msgid "Find at most two routes to a given point" msgstr "" @@ -12186,10 +12110,10 @@ msgstr "" msgid "A unique identifier." msgstr "" -msgid "Identifier of the edge nearest edge that allows an arrival to the point." +msgid "Identifier of the nearest segment." msgstr "" -msgid "Is it on the left, right or both sides of the segment ``edge_id``" +msgid "Is it on the left, right or both sides of the segment ``edge_id``." msgstr "" msgid "Where in the segment is the point located." @@ -12198,13 +12122,35 @@ msgstr "" msgid "The geometry of the points." msgstr "" +msgid "The distance between ``geom`` and the segment ``edge_id``." +msgstr "" + +msgid "" +"A segment that connects the ``geom`` of the point to the closest point on" +" the segment ``edge_id``." +msgstr "" + msgid "``newPoint``" msgstr "" -msgid "The geometry of the points moved on top of the segment." +msgid "A point on segment ``edge_id`` that is the closest to ``geom``." +msgstr "" + +msgid "Points of interest fill up" +msgstr "" + +msgid "Inserting the points of interest." +msgstr "" + +msgid "Filling the rest of the table." +msgstr "" + +msgid "" +"Any other additional modification: In this manual, point :math:`6` can be" +" reached from both sides." msgstr "" -msgid "Points of interest fillup" +msgid "The points of interest:" msgstr "" msgid "``pgr_floydWarshall``" @@ -12225,6 +12171,7 @@ msgstr "" msgid "pgr_floydWarshall(`Edges SQL`_, [``directed``])" msgstr "" +#, python-brace-format msgid "For a directed subgraph with edges :math:`\\{1, 2, 3, 4\\}`." msgstr "" @@ -12233,18 +12180,12 @@ msgid "" "`_" msgstr "" -msgid "Queries uses the :doc:`sampledata` network." -msgstr "" - msgid "``pgr_full_version``" msgstr "" msgid "``pgr_full_version`` — Get the details of pgRouting version information." msgstr "" -msgid "New **official** function" -msgstr "" - msgid "Get complete details of pgRouting version information" msgstr "" @@ -12311,17 +12252,14 @@ msgstr "" msgid "Git hash of pgRouting build" msgstr "" -msgid "``pgr_hawickCircuits - Experimental``" +msgid "``pgr_hawickCircuits`` - Experimental" msgstr "" msgid "" -"``pgr_hawickCircuits`` — Returns the list of cirucits using hawick " +"``pgr_hawickCircuits`` — Returns the list of ciruits using hawick " "circuits algorithm." msgstr "" -msgid "``pgr_hawickCircuits``" -msgstr "" - msgid "" "Hawick Circuit algorithm, is published in 2008 by Ken Hawick and Health " "A. James. This algorithm solves the problem of detecting and enumerating " @@ -12392,6 +12330,7 @@ msgid "" "graph." msgstr "" +#, python-brace-format msgid "" "A graph is planar if it can be drawn in two-dimensional space with no two" " of its edges crossing. Such a drawing of a planar graph is called a " @@ -12434,6 +12373,7 @@ msgstr "" msgid "`false` when the graph is not planar." msgstr "" +#, python-brace-format msgid "" "The following edges will make the subgraph with vertices {10, 15, 11, 16," " 13} a :math:`K_1` graph." @@ -12444,7 +12384,9 @@ msgid "" "in blue represent :math:`K_5` subgraph." msgstr "" -msgid "https://www.boost.org/libs/graph/doc/boyer_myrvold.html" +msgid "" +"`Boost: Boyer Myrvold " +"`__" msgstr "" msgid "``pgr_johnson``" @@ -12500,6 +12442,9 @@ msgid "" "breadth First Search ordering." msgstr "" +msgid "Added ``pred`` result columns." +msgstr "" + msgid "" "Visits and extracts the nodes information in Breath First Search ordering" " of the Minimum Spanning Tree created using Kruskal's algorithm." @@ -12520,6 +12465,7 @@ msgstr "" msgid "The Minimum Spanning Tree having as root vertex :math:`6`" msgstr "" +#, python-brace-format msgid "" "The Minimum Spanning Tree starting on vertices :math:`\\{9, 6\\}` with " ":math:`depth \\leq 3`" @@ -12551,6 +12497,7 @@ msgid "" ":math:`distance \\leq 3.5`" msgstr "" +#, python-brace-format msgid "" "The Minimum Spanning Tree starting on vertices :math:`\\{9, 6\\}` with " ":math:`distance \\leq 3.5`" @@ -12575,7 +12522,7 @@ msgstr "" msgid "pgr_kruskalDFS(`Edges SQL`_, **root vids**, [``max_depth``])" msgstr "" -msgid "pgr_lengauerTarjanDominatorTree -Experimental" +msgid "``pgr_lengauerTarjanDominatorTree`` - Experimental" msgstr "" msgid "" @@ -12632,7 +12579,7 @@ msgid "Dominator tree of another component." msgstr "" msgid "" -"`Boost: Lengauer-Tarjan dominator tree algorithm " +"`Boost: Lengauer-Tarjan dominator " "`__" msgstr "" @@ -12641,7 +12588,7 @@ msgid "" "`__" msgstr "" -msgid "pgr_lineGraph - Proposed" +msgid "``pgr_lineGraph`` - Proposed" msgstr "" msgid "" @@ -12649,6 +12596,9 @@ msgid "" "edge-based graph." msgstr "" +msgid "Works for directed and undirected graphs." +msgstr "" + msgid "Given a graph :math:`G`, its line graph :math:`L(G)` is a graph such that:" msgstr "" @@ -12685,21 +12635,16 @@ msgstr "" msgid "Returns set of |result-lineg|" msgstr "" +#, python-brace-format msgid "For an undirected graph with edges :math:'{2,4,5,8}'" msgstr "" msgid "Gives a local identifier for the edge" msgstr "" -msgid "Identifier of the source vertex of the current edge." -msgstr "" - msgid "When `negative`: the source is the reverse edge in the original graph." msgstr "" -msgid "Identifier of the target vertex of the current edge." -msgstr "" - msgid "When `negative`: the target is the reverse edge in the original graph." msgstr "" @@ -12722,6 +12667,7 @@ msgstr "" msgid "Given the following directed graph" msgstr "" +#, python-brace-format msgid "" ":math:`G(V,E) = G(\\{1,2,3,4\\},\\{ 1 \\rightarrow 2, 1 \\rightarrow 4, 2" " \\rightarrow 3, 3 \\rightarrow 1, 3 \\rightarrow 2, 3 \\rightarrow 4, 4 " @@ -12768,11 +12714,13 @@ msgid "" "column is used." msgstr "" +#, python-brace-format msgid "" "Edges :math:`{2 \\rightarrow 3, 3 \\rightarrow 2}` are represented with " "one edge row with :math:`id=203`." msgstr "" +#, python-brace-format msgid "" "Edges :math:`{3 \\rightarrow 4, 4 \\rightarrow 3}` are represented with " "one edge row with :math:`id=304`." @@ -12820,11 +12768,13 @@ msgid "" "column is not used." msgstr "" +#, python-brace-format msgid "" "Edges :math:`{2 \\rightarrow 3, 3 \\rightarrow 2}` are represented with " "two edges :math:`id=203` and :math:`id=302` respectively." msgstr "" +#, python-brace-format msgid "" "Edges :math:`{3 \\rightarrow 4, 4 \\rightarrow 3}` are represented with " "two edges :math:`id=304` and :math:`id=403` respectively." @@ -12908,11 +12858,11 @@ msgstr "" msgid "Returns set of |result-linegf|" msgstr "" +#, python-brace-format msgid "Full line graph of subgraph of edges :math:`\\{4, 7, 8, 10\\}`" msgstr "" msgid "" -"The examples of this section are based on the :doc:`sampledata` network. " "The examples include the subgraph including edges 4, 7, 8, and 10 with " "``reverse_cost``." msgstr "" @@ -13131,15 +13081,15 @@ msgstr "" msgid "Returns set of |result-component-make|" msgstr "" -msgid "" -"Query done on :doc:`sampledata` network gives the list of edges that are " -"needed to connect the graph." +msgid "List of edges that are needed to connect the graph." msgstr "" -msgid "https://www.boost.org/libs/graph/doc/make_connected.html" +msgid "" +"`Boost: make connected " +"`__" msgstr "" -msgid "pgr_maxCardinalityMatch" +msgid "``pgr_maxCardinalityMatch``" msgstr "" msgid "" @@ -13147,13 +13097,16 @@ msgid "" "in a graph." msgstr "" +msgid "pgr_maxCardinalityMatch(text) returns only ``edge`` column." +msgstr "" + msgid "Deprecated signature" msgstr "" -msgid "``pgr_maxCardinalityMatch(text,boolean)``" +msgid "pgr_maxCardinalityMatch(text,boolean)" msgstr "" -msgid "``directed => false`` when used." +msgid "directed => ``false`` when used." msgstr "" msgid "Renamed from ``pgr_maximumCardinalityMatching``" @@ -13203,7 +13156,9 @@ msgstr "" msgid "Identifier of the edge in the original query." msgstr "" -msgid "https://www.boost.org/libs/graph/doc/maximum_matching.html" +msgid "" +"`Boost: maximum_matching " +"`__" msgstr "" #, python-format @@ -13221,12 +13176,6 @@ msgid "" "the source(s) to the targets(s) using the Push Relabel algorithm." msgstr "" -msgid "``pgr_maxFlow`` (`Combinations`_)" -msgstr "" - -msgid "New **Proposed** function" -msgstr "" - msgid "Calculates the maximum flow from the sources to the targets." msgstr "" @@ -13235,6 +13184,9 @@ msgid "" "returned." msgstr "" +msgid "There is no flow when source has the same vaule as target." +msgstr "" + msgid "Uses the :doc:`pgr_pushRelabel ` algorithm." msgstr "" @@ -13262,7 +13214,9 @@ msgstr "" msgid "Maximum flow possible from the source(s) to the target(s)" msgstr "" -msgid "https://www.boost.org/libs/graph/doc/push_relabel_max_flow.html" +msgid "" +"`Boost: push relabel max flow " +"`__" msgstr "" #, python-format @@ -13277,7 +13231,10 @@ msgid "" "cost of the maximum flow on a graph" msgstr "" -msgid "``pgr_maxFlowMinCost`` (`Combinations`_)" +msgid "pgr_maxFlowMinCost(Combinations)" +msgstr "" + +msgid "|boost| graph inside." msgstr "" msgid "**TODO** check which statement is true:" @@ -13321,9 +13278,6 @@ msgstr "" msgid "Returns set of |result-flow-mincost|" msgstr "" -msgid "https://www.boost.org/libs/graph/doc/successive_shortest_path_nonnegative_weights.html" -msgstr "" - msgid "``pgr_maxFlowMinCost_Cost`` - Experimental" msgstr "" @@ -13332,7 +13286,7 @@ msgid "" "maximum flow on a graph" msgstr "" -msgid "``pgr_maxFlowMinCost_Cost`` (`Combinations`_)" +msgid "pgr_maxFlowMinCost_Cost(Combinations)" msgstr "" msgid "**The cost value of all input edges must be nonnegative.**" @@ -13365,7 +13319,7 @@ msgstr "" msgid "Minimum Cost Maximum Flow possible from the source(s) to the target(s)" msgstr "" -msgid "pgr_nodeNetwork" +msgid "``pgr_nodeNetwork``" msgstr "" msgid "``pgr_nodeNetwork`` - Nodes an network edge table." @@ -13793,7 +13747,7 @@ msgid "" "https://www.sintef.no/projectweb/top/pdptw/li-lim-benchmark/" msgstr "" -msgid "There are 25 vehciles in the problem all with the same characteristics." +msgid "There are 25 vehicles in the problem all with the same characteristics." msgstr "" msgid "The original orders" @@ -13804,7 +13758,7 @@ msgid "" "same order." msgstr "" -msgid "The original data needs to be converted to an appropiate table:" +msgid "The original data needs to be converted to an appropriate table:" msgstr "" msgid "The query" @@ -13903,9 +13857,6 @@ msgid "" "Algorithm." msgstr "" -msgid "``pgr_pushRelabel`` (`Combinations`_)" -msgstr "" - msgid "Renamed from ``pgr_maxFlowPushRelabel``" msgstr "" @@ -13924,7 +13875,7 @@ msgstr "" msgid "pgr_pushRelabel(`Edges SQL`_, `Combinations SQL`_)" msgstr "" -msgid "pgr_sequentialVertexColoring - Proposed" +msgid "``pgr_sequentialVertexColoring`` - Proposed" msgstr "" msgid "" @@ -13932,9 +13883,6 @@ msgid "" "undirected graph, using greedy approach." msgstr "" -msgid "Promoted to **proposed** signature" -msgstr "" - msgid "" "Sequential vertex coloring algorithm is a graph coloring algorithm in " "which color identifiers are assigned to the vertices of a graph in a " @@ -13979,7 +13927,12 @@ msgstr "" msgid "pgr_sequentialVertexColoring(`Edges SQL`_)" msgstr "" -msgid "pgr_stoerWagner - Experimental" +msgid "" +"`Boost: Sequential Vertex Coloring " +"`__" +msgstr "" + +msgid "``pgr_stoerWagner`` - Experimental" msgstr "" msgid "``pgr_stoerWagner`` — The min-cut of graph using stoerWagner algorithm." @@ -14066,6 +14019,11 @@ msgstr "" msgid "Using :doc:`pgr_connectedComponents`" msgstr "" +msgid "" +"`Boost: Stoer Wagner min cut " +"`__" +msgstr "" + #, python-format msgid "https://en.wikipedia.org/wiki/Stoer%E2%80%93Wagner_algorithm" msgstr "" @@ -14096,7 +14054,7 @@ msgid "The strong components of the graph" msgstr "" msgid "" -"Boost: `Strong components " +"`Boost: Strong components " "`__" msgstr "" @@ -14160,6 +14118,11 @@ msgstr "" msgid "Graph is not a DAG" msgstr "" +msgid "" +"`Boost: topological sort " +"`__" +msgstr "" + msgid "``pgr_transitiveClosure`` - Experimental" msgstr "" @@ -14216,57 +14179,51 @@ msgstr "" msgid "Identifiers of the vertices that are reachable from vertex v." msgstr "" -msgid "https://en.wikipedia.org/wiki/Transitive_closure" +msgid "" +"`Boost: transitive closure " +"`__" msgstr "" -msgid "pgr_trsp - Proposed" +msgid "https://en.wikipedia.org/wiki/Transitive_closure" msgstr "" -msgid "``pgr_trsp`` - routing vertices with restrictions." +msgid "``pgr_trsp``" msgstr "" -msgid "New proposed signatures" +msgid "``pgr_trsp`` - routing vertices with restrictions." msgstr "" -msgid "``pgr_trsp`` (`One to One`_)" +msgid "pgr_trsp(One to One)" msgstr "" -msgid "``pgr_trsp`` (`One to Many`_)" +msgid "pgr_trsp(One to Many)" msgstr "" -msgid "``pgr_trsp`` (`Many to One`_)" +msgid "pgr_trsp(Many to One)" msgstr "" -msgid "``pgr_trsp`` (`Many to Many`_)" +msgid "pgr_trsp(Many to Many)" msgstr "" -msgid "``pgr_trsp`` (`Combinations`_)" +msgid "pgr_trsp(Combinations)" msgstr "" msgid "Deprecated signatures" msgstr "" -msgid "``pgr_trsp(text,integer,integer,boolean,boolean,text)``" -msgstr "" - -msgid "``pgr_trsp(text,integer,float,integer,float,boolean,boolean,text)``" -msgstr "" - -msgid "``pgr_trspViaVertices(text,anyarray,boolean,boolean,text)``" +msgid "pgr_trsp(text,integer,float,integer,float,boolean,boolean,text)" msgstr "" -msgid "" -"``pgr_trspviaedges(text,integer[],double " -"precision[],boolean,boolean,text)``" +msgid "pgr_trspViaVertices(text,anyarray,boolean,boolean,text)" msgstr "" msgid "New prototypes" msgstr "" -msgid "``pgr_trspViaVertices``" +msgid "pgr_trspViaVertices" msgstr "" -msgid "``pgr_trspViaEdges``" +msgid "pgr_trspViaEdges" msgstr "" msgid "" @@ -14320,14 +14277,17 @@ msgstr "" msgid "From vertex :math:`6` to vertex :math:`10` on an undirected graph." msgstr "" +#, python-brace-format msgid "" "From vertex :math:`6` to vertices :math:`\\{10, 1\\}` on an undirected " "graph." msgstr "" +#, python-brace-format msgid "From vertices :math:`\\{6, 1\\}` to vertex :math:`8` on a directed graph." msgstr "" +#, python-brace-format msgid "" "From vertices :math:`\\{6, 1\\}` to vertices :math:`\\{10, 8\\}` on an " "undirected graph." @@ -14341,7 +14301,7 @@ msgid "" "`_" msgstr "" -msgid "``pgr_trspVia`` - Proposed" +msgid "``pgr_trspVia``" msgstr "" msgid "" @@ -14349,12 +14309,7 @@ msgid "" "restrictions." msgstr "" -msgid "New proposed function:" -msgstr "" - -msgid "``pgr_trspVia`` (`One Via`_)" -msgstr "" - +#, python-brace-format msgid "" "Given a list of vertices and a graph, this function is equivalent to " "finding the shortest path between :math:`vertex_i` and " @@ -14384,6 +14339,7 @@ msgid "" "[**options**])" msgstr "" +#, python-brace-format msgid "" "All this examples are about the route that visits the vertices " ":math:`\\{5, 7, 1, 8, 15\\}` in that order on a directed graph." @@ -14435,7 +14391,7 @@ msgstr "" msgid ":doc:`via-category`" msgstr "" -msgid "``pgr_trspVia_withPoints`` - Proposed" +msgid "``pgr_trspVia_withPoints``" msgstr "" msgid "" @@ -14443,9 +14399,7 @@ msgid "" "and/or points with restrictions." msgstr "" -msgid "``pgr_trspVia_withPoints`` (`One Via`_)" -msgstr "" - +#, python-brace-format msgid "" "Given a graph, a set of restriction on the graph edges, a set of points " "on the graphs edges and a list of vertices, this function is equivalent " @@ -14484,6 +14438,7 @@ msgid "" "**via vertices**, [**options**])" msgstr "" +#, python-brace-format msgid "" "Find the route that visits the vertices :math:`\\{-6, 15, -5\\}` in that " "order on an directed graph." @@ -14559,6 +14514,7 @@ msgstr "" msgid "Usage variations" msgstr "" +#, python-brace-format msgid "" "All this examples are about the route that visits the vertices " ":math:`\\{-6, 7, -4, 8, -2\\}` in that order on a directed graph." @@ -14607,30 +14563,12 @@ msgid "" "same edge." msgstr "" -msgid "pgr_trsp_withPoints - Proposed" +msgid "``pgr_trsp_withPoints``" msgstr "" msgid "``pgr_trsp_withPoints`` Routing Vertex/Point with restrictions." msgstr "" -msgid "New proposed signatures:" -msgstr "" - -msgid "``pgr_trsp_withPoints`` (`One to One`_)" -msgstr "" - -msgid "``pgr_trsp_withPoints`` (`One to Many`_)" -msgstr "" - -msgid "``pgr_trsp_withPoints`` (`Many to One`_)" -msgstr "" - -msgid "``pgr_trsp_withPoints`` (`Many to Many`_)" -msgstr "" - -msgid "``pgr_trsp_withPoints`` (`Combinations`_)" -msgstr "" - msgid "" "Modify the graph to include points defined by points_sql. Using Dijkstra " "algorithm, find the shortest path" @@ -14738,17 +14676,14 @@ msgid "" ":math:`1` on an undirected graph, with details." msgstr "" -msgid "pgr_turnRestrictedPath - Experimental" +msgid "``pgr_turnRestrictedPath`` - Experimental" msgstr "" msgid "" -"``pgr_turnRestrictedPath`` Using Yen's algorithm Vertex -Vertex routing " +"``pgr_turnRestrictedPath`` Using Yen's algorithm Vertex - Vertex routing " "with restrictions" msgstr "" -msgid "New experimental function" -msgstr "" - msgid "" "Using Yen's algorithm to obtain K shortest paths and analyze the paths to" " select the paths that do not use the restrictions" @@ -14819,7 +14754,7 @@ msgstr "" msgid "pgRouting Version for this documentation" msgstr "" -msgid "pgr_vrpOneDepot - Experimental" +msgid "``pgr_vrpOneDepot`` - Experimental" msgstr "" msgid "**No documentation available**" @@ -14828,7 +14763,7 @@ msgstr "" msgid "**TBD**" msgstr "" -msgid "``pgr_withPoints`` - Proposed" +msgid "``pgr_withPoints``" msgstr "" msgid "" @@ -14957,6 +14892,7 @@ msgstr "" msgid "Use :doc:`pgr_findCloseEdges` in the `Points SQL`_." msgstr "" +#, python-brace-format msgid "" "All the examples are about traveling from point :math:`1` and vertex " ":math:`5` to points :math:`\\{2, 3, 6\\}` and vertices :math:`\\{10, " @@ -14972,7 +14908,7 @@ msgstr "" msgid "Passes in front or visits with left side driving." msgstr "" -msgid "``pgr_withPointsCost`` - Proposed" +msgid "``pgr_withPointsCost``" msgstr "" msgid "" @@ -15105,6 +15041,7 @@ msgstr "" msgid "Right side driving topology" msgstr "" +#, python-brace-format msgid "" "Traveling from point :math:`1` and vertex :math:`5` to points " ":math:`\\{2, 3, 6\\}` and vertices :math:`\\{10, 11\\}`" @@ -15116,7 +15053,7 @@ msgstr "" msgid "Does not matter driving side driving topology" msgstr "" -msgid "``pgr_withPointsCostMatrix`` - proposed" +msgid "``pgr_withPointsCostMatrix``" msgstr "" msgid "" @@ -15129,6 +15066,7 @@ msgid "" "[**options**])" msgstr "" +#, python-brace-format msgid "" "Cost matrix for points :math:`\\{1, 6\\}` and vertices :math:`\\{10, " "11\\}` on an **undirected** graph" @@ -15148,7 +15086,7 @@ msgid "" "closest locations on the graph of point `(2.9, 1.8)`." msgstr "" -msgid "``pgr_withPointsDD`` - Proposed" +msgid "``pgr_withPointsDD``" msgstr "" msgid "" @@ -15161,7 +15099,10 @@ msgid "" "to unnamed compulsory **driving side**." msgstr "" -msgid "``pgr_withPointsDD`` (`Single vertex`)" +msgid "pgr_withPointsDD(Single vertex)" +msgstr "" + +msgid "pgr_withPointsDD(Multiple vertices)" msgstr "" msgid "Added ``depth``, ``pred`` and ``start_vid`` column." @@ -15179,13 +15120,13 @@ msgid "" msgstr "" msgid "" -"``pgr_withpointsdd(text,text,bigint,double " -"precision,boolean,character,boolean)``" +"pgr_withpointsdd(text,text,bigint,double " +"precision,boolean,character,boolean)" msgstr "" msgid "" -"``pgr_withpointsdd(text,text,anyarray,double " -"precision,boolean,character,boolean,boolean)``" +"pgr_withpointsdd(text,text,anyarray,double " +"precision,boolean,character,boolean,boolean)" msgstr "" msgid "" @@ -15292,7 +15233,7 @@ msgstr "" msgid ":doc:`pgr_alphaShape`" msgstr "" -msgid "pgr_withPointsKSP - Proposed" +msgid "``pgr_withPointsKSP``" msgstr "" msgid "" @@ -15303,25 +15244,22 @@ msgstr "" msgid "Standarizing output columns to |nksp-result|" msgstr "" -msgid "``pgr_withPointsKSP`` (One to One)" -msgstr "" - -msgid "New overload functions" +msgid "pgr_withPointsKSP(One to One)" msgstr "" -msgid "``pgr_withPointsKSP`` (One to Many)" +msgid "pgr_withPointsKSP(One to Many)" msgstr "" -msgid "``pgr_withPointsKSP`` (Many to One)" +msgid "pgr_withPointsKSP(Many to One)" msgstr "" -msgid "``pgr_withPointsKSP`` (Many to Many)" +msgid "pgr_withPointsKSP(Many to Many)" msgstr "" -msgid "``pgr_withPointsKSP`` (Combinations)" +msgid "pgr_withPointsKSP(Combinations)" msgstr "" -msgid "``pgr_withpointsksp(text,text,bigint,bigint,integer,boolean,boolean,char,boolean)``" +msgid "pgr_withpointsksp(text,text,bigint,bigint,integer,boolean,boolean,char,boolean)``" msgstr "" msgid "" @@ -15436,7 +15374,7 @@ msgid "" ":math:`1` to point :math:`2` with heap paths and details." msgstr "" -msgid "``pgr_withPointsVia`` - Proposed" +msgid "``pgr_withPointsVia``" msgstr "" msgid "" @@ -15444,9 +15382,7 @@ msgid "" " points." msgstr "" -msgid "New **proposed** function ``pgr_withPointsVia`` (`One Via`_)" -msgstr "" - +#, python-brace-format msgid "" "Given a graph, a set of points on the graphs edges and a list of " "vertices, this function is equivalent to finding the shortest path " @@ -15460,6 +15396,7 @@ msgid "" "[**options**])" msgstr "" +#, python-brace-format msgid "" "Find the route that visits the vertices :math:`\\{ -6, 15, -1\\}` in that" " order on a **directed** graph." @@ -15468,6 +15405,7 @@ msgstr "" msgid "Use :doc:`pgr_findCloseEdges` in the `Points SQL`_" msgstr "" +#, python-brace-format msgid "" "All this examples are about the route that visits the vertices " ":math:`\\{-1, 7, -3, 16, 15\\}` in that order on a **directed** graph." @@ -15517,81 +15455,247 @@ msgstr "" msgid ":doc:`pgr_withPoints` - Route from/to points anywhere on the graph." msgstr "" -msgid ":doc:`pgr_withPointsCost` - Costs of the shortest paths." +msgid ":doc:`pgr_withPointsCost` - Costs of the shortest paths." +msgstr "" + +msgid ":doc:`pgr_withPointsCostMatrix` - Costs of the shortest paths." +msgstr "" + +msgid ":doc:`pgr_withPointsKSP` - K shortest paths." +msgstr "" + +msgid ":doc:`pgr_withPointsDD` - Driving distance." +msgstr "" + +msgid ":doc:`pgr_withPointsVia` - Via routing" +msgstr "" + +msgid "" +":doc:`pgr_lineGraph` - Transformation algorithm for generating a Line " +"Graph." +msgstr "" + +msgid ":doc:`withPoints-family` - Functions based on Dijkstra algorithm." +msgstr "" + +msgid "From the :doc:`TRSP-family`:" +msgstr "" + +msgid "Reference" +msgstr "" + +msgid "Release Notes" +msgstr "" + +msgid "" +"To see the full list of changes check the list of `Git commits " +"`_ on Github." +msgstr "" + +msgid "Mayors" +msgstr "" + +msgid "pgRouting 4" +msgstr "" + +msgid "Minors 4.x" +msgstr "" + +msgid "pgRouting 4.0" +msgstr "" + +msgid "pgRouting 3" +msgstr "" + +msgid "Minors 3.x" +msgstr "" + +msgid "pgRouting 3.8" +msgstr "" + +msgid "pgRouting 3.8.0 Release Notes" +msgstr "" + +msgid "Promotion to official function of pgRouting." +msgstr "" + +msgid "pgr_extractVertices" +msgstr "" + +msgid "pgr_degree" +msgstr "" + +msgid "pgr_findCloseEdges" +msgstr "" + +msgid "Official functions changes" +msgstr "" + +msgid "" +"`#2786 `__: " +"pgr_contraction" +msgstr "" + +msgid "New proposed functions" +msgstr "" + +msgid "Contraction" +msgstr "" + +msgid "" +"`#2790 `__: " +"pgr_contractionDeadEnd" +msgstr "" + +msgid "" +"`#2791 `__: " +"pgr_contractionLinear" +msgstr "" + +msgid "pgRouting 3.7" +msgstr "" + +msgid "pgRouting 3.7.3 Release Notes" +msgstr "" + +#, python-format +msgid "" +"To see all issues & pull requests closed by this release see the `Git " +"closed milestone for 3.7.3 " +"`__" +msgstr "" + +msgid "" +"`#2731 `__ Build " +"Failure on Ubuntu 22" +msgstr "" + +msgid "pgRouting 3.7.2 Release Notes" +msgstr "" + +#, python-format +msgid "" +"To see all issues & pull requests closed by this release see the `Git " +"closed milestone for 3.7.2 " +"`__" +msgstr "" + +msgid "Build" +msgstr "" + +msgid "" +"`#2713 `__ cmake " +"missing some policies and min version" +msgstr "" + +msgid "Using OLD policies: CMP0148, CMP0144, CMP0167" +msgstr "" + +msgid "Minimum cmake version 3.12" +msgstr "" + +msgid "" +"`#2707 `__ Build " +"failure in pgRouting 3.7.1 on Alpine" +msgstr "" + +msgid "" +"`#2706 `__ winnie " +"crashing on pgr_betweennessCentrality" +msgstr "" + +msgid "pgRouting 3.7.1 Release Notes" msgstr "" -msgid ":doc:`pgr_withPointsCostMatrix` - Costs of the shortest paths." +#, python-format +msgid "" +"To see all issues & pull requests closed by this release see the `Git " +"closed milestone for 3.7.1 " +"`__" msgstr "" -msgid ":doc:`pgr_withPointsKSP` - K shortest paths." +msgid "" +"`#2680 `__ fails to " +"compile under mingw64 gcc 13.2" msgstr "" -msgid ":doc:`pgr_withPointsDD` - Driving distance." +msgid "" +"`#2689 `__ When point " +"is a vertex, the withPoints family do not return results." msgstr "" -msgid ":doc:`pgr_withPointsVia` - Via routing" +msgid "C/C++ code enhancemet" msgstr "" -msgid "These proposed functions do not modify the database." +msgid "TRSP family" msgstr "" -msgid "" -":doc:`pgr_degree` - Returns a set of vertices and corresponding count of " -"incidet edges to the vertex." +msgid "pgRouting 3.7.0 Release Notes" msgstr "" +#, python-format msgid "" -":doc:`pgr_extractVertices` - Extracts vertex information based on the " -"edge table information." +"To see all issues & pull requests closed by this release see the `Git " +"closed milestone for 3.7.0 " +"`__" msgstr "" msgid "" -":doc:`pgr_lineGraph` - Transformation algorithm for generating a Line " -"Graph." +"`#2656 `__ Stop support" +" of PostgreSQL12 on pgrouting v3.7" msgstr "" -msgid ":doc:`pgr_withPointsVia`" +msgid "Stopping support of PostgreSQL 12" msgstr "" -msgid ":doc:`pgr_trspVia`" +msgid "CI does not test for PostgreSQL 12" msgstr "" -msgid ":doc:`pgr_trspVia_withPoints`" +msgid "New experimental functions" msgstr "" -msgid ":doc:`withPoints-family` - Functions based on Dijkstra algorithm." +msgid "Metrics" msgstr "" -msgid "From the :doc:`TRSP-family`:" +msgid "pgr_betweennessCentrality" msgstr "" -msgid "Utilities" +msgid "" +"`#2605 `__ Standardize " +"spanning tree functions output" msgstr "" -msgid ":doc:`pgr_findCloseEdges`" +msgid "Functions:" msgstr "" -msgid "Reference" +msgid "Experimental promoted to proposed." msgstr "" -msgid "Release Notes" +msgid "" +"`#2635 `__ " +"pgr_LineGraph ignores directed flag and use negative values for " +"identifiers." msgstr "" -msgid "" -"To see the full list of changes check the list of `Git commits " -"`_ on Github." +msgid "``pgr_lineGraph``" msgstr "" -msgid "Mayors" +msgid "Code enhancement" msgstr "" -msgid "pgRouting 3" +msgid "" +"`#2599 `__ Driving " +"distance cleanup" msgstr "" -msgid "Minors 3.x" +msgid "" +"`#2607 `__ Read " +"postgresql data on C++" msgstr "" -msgid "pgRouting 3.7" +msgid "" +"`#2614 `__ Clang tidy " +"does not work" msgstr "" msgid "pgRouting 3.6" @@ -15607,9 +15711,6 @@ msgid "" "`__" msgstr "" -msgid "Build" -msgstr "" - msgid "Explicit minimum requirements:" msgstr "" @@ -15714,55 +15815,38 @@ msgid "" msgstr "" msgid "" -"`#2516 `__ Standarize " +"`#2516 `__ Standardize " "output pgr_aStar" msgstr "" -msgid "``pgr_aStar`` (`One to One`) added ``start_vid`` and ``end_vid`` columns." -msgstr "" - -msgid "``pgr_aStar`` (`One to Many`) added ``end_vid`` column." -msgstr "" - -msgid "``pgr_aStar`` (`Many to One`) added ``start_vid`` column." +msgid "Standardize output columns to |short-generic-result|" msgstr "" msgid "" -"`#2523 `__ Standarize " +"`#2523 `__ Standardize " "output pgr_bdAstar" msgstr "" msgid "" -"``pgr_bdAstar`` (`One to One`) added ``start_vid`` and ``end_vid`` " -"columns." -msgstr "" - -msgid "``pgr_bdAstar`` (`One to Many`) added ``end_vid`` column." -msgstr "" - -msgid "``pgr_bdAstar`` (`Many to One`) added ``start_vid`` column." -msgstr "" - -msgid "" -"`#2547 `__ Standarize " +"`#2547 `__ Standardize " "output and modifying signature pgr_KSP" msgstr "" msgid "" -"`#2548 `__ Standarize " -"output pgr_drivingdistance" +"`#2548 `__ Standardize " +"output pgr_drivingDistance" msgstr "" msgid "Proposed functions changes" msgstr "" msgid "" -"`#2544 `__ Standarize " +"`#2544 `__ Standardize " "output and modifying signature pgr_withPointsDD" msgstr "" msgid "" -"`#2546 `__ Standarize " +"`#2546 `__ Standardize " "output and modifying signature pgr_withPointsKSP" msgstr "" @@ -15807,11 +15891,11 @@ msgid "" "page history links." msgstr "" -msgid "..rubric:: SQL standarization" +msgid "..rubric:: Standardize SQL" msgstr "" msgid "" -"`#2555 `__ standarize " +"`#2555 `__ Standardize " "deprecated messages" msgstr "" @@ -15839,9 +15923,6 @@ msgstr "" msgid "Changes on the documentation to the following:" msgstr "" -msgid "pgr_degree" -msgstr "" - msgid "pgr_dijkstra" msgstr "" @@ -15859,7 +15940,7 @@ msgstr "" msgid "" "`#2565 `__ " -"pgr_pgr_lengauerTarjanDominatorTree triggers an assertion" +"pgr_lengauerTarjanDominatorTree triggers an assertion" msgstr "" msgid "SQL enhancements" @@ -15900,17 +15981,6 @@ msgstr "" msgid "Dijkstra" msgstr "" -msgid "" -"``pgr_dijkstra`` (`One to One`) added ``start_vid`` and ``end_vid`` " -"columns." -msgstr "" - -msgid "``pgr_dijkstra`` (`One to Many`) added ``end_vid`` column." -msgstr "" - -msgid "``pgr_dijkstra`` (`Many to One`) added ``start_vid`` column." -msgstr "" - msgid "pgRouting 3.4" msgstr "" @@ -15970,13 +16040,13 @@ msgid "" "doesn't give all correct shortest path" msgstr "" -msgid "New proposed functions" +msgid "New proposed functions." msgstr "" msgid "With points" msgstr "" -msgid "``pgr_withPointsVia`` (One Via)" +msgid "pgr_withPointsVia(One Via)" msgstr "" msgid "Turn Restrictions" @@ -15985,82 +16055,67 @@ msgstr "" msgid "Via with turn restrictions" msgstr "" -msgid "``pgr_trspVia`` (One Via)" -msgstr "" - -msgid "``pgr_trspVia_withPoints`` (One Via)" -msgstr "" - -msgid "``pgr_trsp``" -msgstr "" - -msgid "``pgr_trsp`` (One to One)" +msgid "pgr_trspVia(One Via)" msgstr "" -msgid "``pgr_trsp`` (One to Many)" +msgid "pgr_trspVia_withPoints(One Via)" msgstr "" -msgid "``pgr_trsp`` (Many to One)" +msgid "pgr_trsp_withPoints(One to One)" msgstr "" -msgid "``pgr_trsp`` (Many to Many)" +msgid "pgr_trsp_withPoints(One to Many)" msgstr "" -msgid "``pgr_trsp`` (Combinations)" +msgid "pgr_trsp_withPoints(Many to One)" msgstr "" -msgid "``pgr_trsp_withPoints``" -msgstr "" - -msgid "``pgr_trsp_withPoints`` (One to One)" -msgstr "" - -msgid "``pgr_trsp_withPoints`` (One to Many)" +msgid "pgr_trsp_withPoints(Many to Many)" msgstr "" -msgid "``pgr_trsp_withPoints`` (Many to One)" +msgid "pgr_trsp_withPoints(Combinations)" msgstr "" -msgid "``pgr_trsp_withPoints`` (Many to Many)" +msgid "Topology" msgstr "" -msgid "``pgr_trsp_withPoints`` (Combinations)" +msgid "Utilities" msgstr "" -msgid "Topology" +msgid "pgr_findCloseEdges(One point)" msgstr "" -msgid "``pgr_degree``" +msgid "pgr_findCloseEdges(Many points)" msgstr "" -msgid "``pgr_findCloseEdges`` (One point)" +msgid "Ordering" msgstr "" -msgid "``pgr_findCloseEdges`` (Many points)" +msgid "pgr_cuthillMckeeOrdering" msgstr "" -msgid "Ordering" +msgid "Unclassified" msgstr "" -msgid "``pgr_cuthillMckeeOrdering``" +msgid "pgr_hawickCircuits" msgstr "" msgid "Flow functions" msgstr "" -msgid "``pgr_maxCardinalityMatch(text)``" +msgid "pgr_maxCardinalityMatch(text)" msgstr "" -msgid "Deprecating ``pgr_maxCardinalityMatch(text,boolean)``" +msgid "Deprecating: pgr_maxCardinalityMatch(text,boolean)" msgstr "" msgid "Deprecated Functions" msgstr "" -msgid "``pgr_trsp(text,integer,float8,integer,float8,boolean,boolean,text)``" +msgid "pgr_trsp(text,integer,float8,integer,float8,boolean,boolean,text)" msgstr "" -msgid "``pgr_trspViaEdges(text,integer[],float[],boolean,boolean,text)``" +msgid "pgr_trspViaEdges(text,integer[],float[],boolean,boolean,text)" msgstr "" msgid "pgRouting 3.3" @@ -16253,9 +16308,6 @@ msgstr "" msgid "pgr_sequentialVertexColoring" msgstr "" -msgid "pgr_extractVertices" -msgstr "" - msgid "Traversal" msgstr "" @@ -16335,12 +16387,6 @@ msgstr "" msgid "Removing support for Boost v1.53, v1.54 & v1.55" msgstr "" -msgid "pgr_bellmanFord(Combinations)" -msgstr "" - -msgid "pgr_binaryBreadthFirstSearch(Combinations)" -msgstr "" - msgid "pgr_bipartite" msgstr "" @@ -16350,9 +16396,6 @@ msgstr "" msgid "Dijkstra Near" msgstr "" -msgid "pgr_edwardMoore(Combinations)" -msgstr "" - msgid "pgr_isPlanar" msgstr "" @@ -16362,51 +16405,15 @@ msgstr "" msgid "pgr_makeConnected" msgstr "" -msgid "pgr_maxFlowMinCost(Combinations)" -msgstr "" - -msgid "pgr_maxFlowMinCost_Cost(Combinations)" -msgstr "" - msgid "Astar" msgstr "" -msgid "pgr_aStar(Combinations)" -msgstr "" - -msgid "pgr_aStarCost(Combinations)" -msgstr "" - msgid "Bidirectional Astar" msgstr "" -msgid "pgr_bdAstar(Combinations)" -msgstr "" - -msgid "pgr_bdAstarCost(Combinations)" -msgstr "" - msgid "Bidirectional Dijkstra" msgstr "" -msgid "pgr_bdDijkstra(Combinations)" -msgstr "" - -msgid "pgr_bdDijkstraCost(Combinations)" -msgstr "" - -msgid "pgr_boykovKolmogorov(Combinations)" -msgstr "" - -msgid "pgr_edmondsKarp(Combinations)" -msgstr "" - -msgid "pgr_maxFlow(Combinations)" -msgstr "" - -msgid "pgr_pushRelabel(Combinations)" -msgstr "" - msgid "pgRouting 3.1" msgstr "" @@ -16664,7 +16671,7 @@ msgid "" "of information" msgstr "" -msgid "New functions" +msgid "New Functions" msgstr "" msgid "Kruskal family" @@ -16703,148 +16710,94 @@ msgstr "" msgid "aStar Family" msgstr "" -msgid "pgr_aStar(one to many)" -msgstr "" - -msgid "pgr_aStar(many to one)" -msgstr "" - -msgid "pgr_aStar(many to many)" -msgstr "" - -msgid "pgr_aStarCost(one to one)" -msgstr "" - -msgid "pgr_aStarCost(one to many)" -msgstr "" - -msgid "pgr_aStarCost(many to one)" -msgstr "" - -msgid "pgr_aStarCost(many to many)" +msgid "pgr_aStarCost(One to One)" msgstr "" -msgid "pgr_aStarCostMatrix(one to one)" +msgid "pgr_aStarCost(One to Many)" msgstr "" -msgid "pgr_aStarCostMatrix(one to many)" +msgid "pgr_aStarCost(Many to One)" msgstr "" -msgid "pgr_aStarCostMatrix(many to one)" +msgid "pgr_aStarCost(Many to Many)" msgstr "" -msgid "pgr_aStarCostMatrix(many to many)" +msgid "pgr_aStarCostMatrix" msgstr "" msgid "bdAstar Family" msgstr "" -msgid "pgr_bdAstar(one to many)" -msgstr "" - -msgid "pgr_bdAstar(many to one)" -msgstr "" - -msgid "pgr_bdAstar(many to many)" -msgstr "" - -msgid "pgr_bdAstarCost(one to one)" -msgstr "" - -msgid "pgr_bdAstarCost(one to many)" -msgstr "" - -msgid "pgr_bdAstarCost(many to one)" -msgstr "" - -msgid "pgr_bdAstarCost(many to many)" +msgid "pgr_bdAstarCost(One to One)" msgstr "" -msgid "pgr_bdAstarCostMatrix(one to one)" +msgid "pgr_bdAstarCost(One to Many)" msgstr "" -msgid "pgr_bdAstarCostMatrix(one to many)" +msgid "pgr_bdAstarCost(Many to One)" msgstr "" -msgid "pgr_bdAstarCostMatrix(many to one)" +msgid "pgr_bdAstarCost(Many to Many)" msgstr "" -msgid "pgr_bdAstarCostMatrix(many to many)" +msgid "pgr_bdAstarCostMatrix" msgstr "" msgid "bdDijkstra Family" msgstr "" -msgid "pgr_bdDijkstra(one to many)" -msgstr "" - -msgid "pgr_bdDijkstra(many to one)" -msgstr "" - -msgid "pgr_bdDijkstra(many to many)" -msgstr "" - -msgid "pgr_bdDijkstraCost(one to one)" -msgstr "" - -msgid "pgr_bdDijkstraCost(one to many)" -msgstr "" - -msgid "pgr_bdDijkstraCost(many to one)" +msgid "pgr_bdDijkstraCost(One to One)" msgstr "" -msgid "pgr_bdDijkstraCost(many to many)" +msgid "pgr_bdDijkstraCost(One to Many)" msgstr "" -msgid "pgr_bdDijkstraCostMatrix(one to one)" +msgid "pgr_bdDijkstraCost(Many to One)" msgstr "" -msgid "pgr_bdDijkstraCostMatrix(one to many)" +msgid "pgr_bdDijkstraCost(Many to Many)" msgstr "" -msgid "pgr_bdDijkstraCostMatrix(many to one)" -msgstr "" - -msgid "pgr_bdDijkstraCostMatrix(many to many)" +msgid "pgr_bdDijkstraCostMatrix" msgstr "" msgid "Flow Family" msgstr "" -msgid "pgr_pushRelabel(one to one)" +msgid "pgr_pushRelabel(One to One)" msgstr "" -msgid "pgr_pushRelabel(one to many)" +msgid "pgr_pushRelabel(One to Many)" msgstr "" -msgid "pgr_pushRelabel(many to one)" +msgid "pgr_pushRelabel(Many to One)" msgstr "" -msgid "pgr_pushRelabel(many to many)" +msgid "pgr_pushRelabel(Many to Many)" msgstr "" -msgid "pgr_edmondsKarp(one to one)" +msgid "pgr_edmondsKarp(One to One)" msgstr "" -msgid "pgr_edmondsKarp(one to many)" +msgid "pgr_edmondsKarp(One to Many)" msgstr "" -msgid "pgr_edmondsKarp(many to one)" +msgid "pgr_edmondsKarp(Many to One)" msgstr "" -msgid "pgr_edmondsKarp(many to many)" +msgid "pgr_edmondsKarp(Many to Many)" msgstr "" -msgid "pgr_boykovKolmogorov (one to one)" +msgid "pgr_boykovKolmogorov (One to One)" msgstr "" -msgid "pgr_boykovKolmogorov (one to many)" +msgid "pgr_boykovKolmogorov (One to Many)" msgstr "" -msgid "pgr_boykovKolmogorov (many to one)" +msgid "pgr_boykovKolmogorov (Many to One)" msgstr "" -msgid "pgr_boykovKolmogorov (many to many)" +msgid "pgr_boykovKolmogorov (Many to Many)" msgstr "" msgid "pgr_maxCardinalityMatching" @@ -16853,21 +16806,24 @@ msgstr "" msgid "pgr_maxFlow" msgstr "" -msgid "pgr_edgeDisjointPaths(one to one)" +msgid "pgr_edgeDisjointPaths(One to One)" msgstr "" -msgid "pgr_edgeDisjointPaths(one to many)" +msgid "pgr_edgeDisjointPaths(One to Many)" msgstr "" -msgid "pgr_edgeDisjointPaths(many to one)" +msgid "pgr_edgeDisjointPaths(Many to One)" msgstr "" -msgid "pgr_edgeDisjointPaths(many to many)" +msgid "pgr_edgeDisjointPaths(Many to Many)" msgstr "" msgid "Components family" msgstr "" +msgid "pgr_connectedComponents" +msgstr "" + msgid "pgr_strongComponents" msgstr "" @@ -17060,7 +17016,7 @@ msgstr "" msgid "pgr_johnson" msgstr "" -msgid "pgr_astar" +msgid "pgr_aStar" msgstr "" msgid "pgr_bdAstar" @@ -17081,6 +17037,9 @@ msgstr "" msgid "pgr_drivingDistance" msgstr "" +msgid "pgr_KSP" +msgstr "" + msgid "pgr_dijkstraVia (proposed)" msgstr "" @@ -17292,22 +17251,13 @@ msgstr "" msgid "Parameter names changed" msgstr "" -msgid "The many version results are the union of the one to one version" +msgid "The many version results are the union of the One to One version" msgstr "" msgid "New Signatures" msgstr "" -msgid "pgr_bdAstar(one to one)" -msgstr "" - -msgid "New Proposed functions" -msgstr "" - -msgid "pgr_bdAstarCostMatrix" -msgstr "" - -msgid "pgr_bdDijkstraCostMatrix" +msgid "pgr_bdAstar(One to One)" msgstr "" msgid "pgr_lineGraph" @@ -17393,31 +17343,7 @@ msgstr "" msgid "pgr_bdDijkstra" msgstr "" -msgid "New Proposed Signatures" -msgstr "" - -msgid "pgr_astar(one to many)" -msgstr "" - -msgid "pgr_astar(many to one)" -msgstr "" - -msgid "pgr_astar(many to many)" -msgstr "" - -msgid "pgr_astarCost(one to one)" -msgstr "" - -msgid "pgr_astarCost(one to many)" -msgstr "" - -msgid "pgr_astarCost(many to one)" -msgstr "" - -msgid "pgr_astarCost(many to many)" -msgstr "" - -msgid "pgr_astarCostMatrix" +msgid "Deprecated signatures." msgstr "" msgid "pgr_bddijkstra - use pgr_bdDijkstra instead" @@ -17492,52 +17418,43 @@ msgstr "" msgid "pgr_TSP" msgstr "" -msgid "pgr_aStar" -msgstr "" - -msgid "New Functions" -msgstr "" - msgid "pgr_eucledianTSP" msgstr "" -msgid "pgr_withPointsCostMatrix" -msgstr "" - -msgid "pgr_maxFlowPushRelabel(one to one)" +msgid "pgr_maxFlowPushRelabel(One to One)" msgstr "" -msgid "pgr_maxFlowPushRelabel(one to many)" +msgid "pgr_maxFlowPushRelabel(One to Many)" msgstr "" -msgid "pgr_maxFlowPushRelabel(many to one)" +msgid "pgr_maxFlowPushRelabel(Many to One)" msgstr "" -msgid "pgr_maxFlowPushRelabel(many to many)" +msgid "pgr_maxFlowPushRelabel(Many to Many)" msgstr "" -msgid "pgr_maxFlowEdmondsKarp(one to one)" +msgid "pgr_maxFlowEdmondsKarp(One to One)" msgstr "" -msgid "pgr_maxFlowEdmondsKarp(one to many)" +msgid "pgr_maxFlowEdmondsKarp(One to Many)" msgstr "" -msgid "pgr_maxFlowEdmondsKarp(many to one)" +msgid "pgr_maxFlowEdmondsKarp(Many to One)" msgstr "" -msgid "pgr_maxFlowEdmondsKarp(many to many)" +msgid "pgr_maxFlowEdmondsKarp(Many to Many)" msgstr "" -msgid "pgr_maxFlowBoykovKolmogorov (one to one)" +msgid "pgr_maxFlowBoykovKolmogorov (One to One)" msgstr "" -msgid "pgr_maxFlowBoykovKolmogorov (one to many)" +msgid "pgr_maxFlowBoykovKolmogorov (One to Many)" msgstr "" -msgid "pgr_maxFlowBoykovKolmogorov (many to one)" +msgid "pgr_maxFlowBoykovKolmogorov (Many to One)" msgstr "" -msgid "pgr_maxFlowBoykovKolmogorov (many to many)" +msgid "pgr_maxFlowBoykovKolmogorov (Many to Many)" msgstr "" msgid "pgr_maximumCardinalityMatching" @@ -17549,7 +17466,7 @@ msgstr "" msgid "pgr_tsp - use pgr_TSP or pgr_eucledianTSP instead" msgstr "" -msgid "pgr_astar - use pgr_aStar instead" +msgid "pgr_aStar - use pgr_aStar instead" msgstr "" msgid "pgr_flip_edges" @@ -17641,6 +17558,9 @@ msgstr "" msgid "Improvements" msgstr "" +msgid "pgr_nodeNetwork" +msgstr "" + msgid "Adding a row_where and outall optional parameters" msgstr "" @@ -17653,43 +17573,43 @@ msgstr "" msgid "pgr_Johnson" msgstr "" -msgid "pgr_dijkstraCost(one to one)" +msgid "pgr_dijkstraCost(One to One)" msgstr "" -msgid "pgr_dijkstraCost(one to many)" +msgid "pgr_dijkstraCost(One to Many)" msgstr "" -msgid "pgr_dijkstraCost(many to one)" +msgid "pgr_dijkstraCost(Many to One)" msgstr "" -msgid "pgr_dijkstraCost(many to many)" +msgid "pgr_dijkstraCost(Many to Many)" msgstr "" msgid "Proposed Functionality" msgstr "" -msgid "pgr_withPoints(one to one)" +msgid "pgr_withPoints(One to One)" msgstr "" -msgid "pgr_withPoints(one to many)" +msgid "pgr_withPoints(One to Many)" msgstr "" -msgid "pgr_withPoints(many to one)" +msgid "pgr_withPoints(Many to One)" msgstr "" -msgid "pgr_withPoints(many to many)" +msgid "pgr_withPoints(Many to Many)" msgstr "" -msgid "pgr_withPointsCost(one to one)" +msgid "pgr_withPointsCost(One to One)" msgstr "" -msgid "pgr_withPointsCost(one to many)" +msgid "pgr_withPointsCost(One to Many)" msgstr "" -msgid "pgr_withPointsCost(many to one)" +msgid "pgr_withPointsCost(Many to One)" msgstr "" -msgid "pgr_withPointsCost(many to many)" +msgid "pgr_withPointsCost(Many to Many)" msgstr "" msgid "pgr_withPointsDD(single vertex)" @@ -17698,9 +17618,6 @@ msgstr "" msgid "pgr_withPointsDD(multiple vertices)" msgstr "" -msgid "pgr_withPointsKSP" -msgstr "" - msgid "pgr_dijkstraVia" msgstr "" @@ -17735,25 +17652,10 @@ msgid "" " on Github." msgstr "" -msgid "pgr_dijkstra(one to many)" -msgstr "" - -msgid "pgr_dijkstra(many to one)" -msgstr "" - -msgid "pgr_dijkstra(many to many)" -msgstr "" - -msgid "pgr_drivingDistance(multiple vertices)" -msgstr "" - msgid "Refactored" msgstr "" -msgid "pgr_dijkstra(one to one)" -msgstr "" - -msgid "pgr_drivingDistance(single vertex)" +msgid "pgr_dijkstra(One to One)" msgstr "" msgid "" @@ -18093,8 +17995,8 @@ msgstr "" msgid "" "The documentation provides very simple example queries based on a small " -"sample network that resembles a city. To be able to execute the mayority " -"of the examples queries, follow the instructions bellow." +"sample network that resembles a city. To be able to execute the majority " +"of the examples queries, follow the instructions below." msgstr "" msgid "Main graph" @@ -18108,7 +18010,7 @@ msgstr "" msgid "" "Information known at this point is the geometry of the edges, cost " -"values, cpacity values, category values and some locations that are not " +"values, capacity values, category values and some locations that are not " "in the graph." msgstr "" @@ -18117,14 +18019,11 @@ msgid "" " that everything else is calculated." msgstr "" -msgid "Edges" -msgstr "" - msgid "" "The database design for the documentation of pgRouting, keeps in the same" " row 2 segments, one in the direction of the geometry and the second in " -"the oposite direction. Therfore some information has the ``reverse_`` " -"prefix which corresponds to the segment on the oposite direction of the " +"the opposite direction. Therefore some information has the ``reverse_`` " +"prefix which corresponds to the segment on the opposite direction of the " "geometry." msgstr "" @@ -18156,7 +18055,7 @@ msgid ":math:`x` coordinate of the starting vertex of the geometry." msgstr "" msgid "" -"For convinience it is saved on the table but can be calculated as " +"For convenience it is saved on the table but can be calculated as " "``ST_X(ST_StartPoint(geom))``." msgstr "" @@ -18164,7 +18063,7 @@ msgid ":math:`y` coordinate of the ending vertex of the geometry." msgstr "" msgid "" -"For convinience it is saved on the table but can be calculated as " +"For convenience it is saved on the table but can be calculated as " "``ST_Y(ST_EndPoint(geom))``." msgstr "" @@ -18175,8 +18074,8 @@ msgid "Starting on PostgreSQL 12::" msgstr "" msgid "" -"Optionally indexes on different columns can be created. The recomendation" -" is to have" +"Optionally indexes on different columns can be created. The " +"recommendation is to have" msgstr "" msgid "``id`` indexed." @@ -18186,7 +18085,7 @@ msgid "``source`` and ``target`` columns indexed to speed up pgRouting queries." msgstr "" msgid "" -"``geom`` indexed to speed up gemetry processes that might be needed in " +"``geom`` indexed to speed up geometry processes that might be needed in " "the front end." msgstr "" @@ -18255,7 +18154,7 @@ msgid "" msgstr "" msgid "" -"For convinence of this documentations, some combinations will be stored " +"For convenience of this documentation, some combinations will be stored " "on a table:" msgstr "" @@ -18470,7 +18369,7 @@ msgid "" msgstr "" msgid "" -"pgRouting suplies some functions to create a routing topology and to " +"pgRouting supplies some functions to create a routing topology and to " "analyze the topology." msgstr "" @@ -18491,7 +18390,7 @@ msgstr "" msgid "Traversal - Family of functions" msgstr "" -msgid "Aditionaly there are 2 categories under this family" +msgid "Additionally there are 2 categories under this family" msgstr "" msgid "Via - Category" @@ -18500,13 +18399,14 @@ msgstr "" msgid "This category intends to solve the general problem:" msgstr "" +#, python-brace-format msgid "" "Given a graph and a list of vertices, find the shortest path between " ":math:`vertex_i` and :math:`vertex_{i+1}` for all vertices" msgstr "" msgid "" -"In other words, find a continuos route that visits all the vertices in " +"In other words, find a continuous route that visits all the vertices in " "the order given." msgstr "" diff --git a/locale/es/LC_MESSAGES/index.po b/locale/es/LC_MESSAGES/index.po index e82b4d45a9..1785b2de1e 100644 --- a/locale/es/LC_MESSAGES/index.po +++ b/locale/es/LC_MESSAGES/index.po @@ -1,11 +1,11 @@ # SOME DESCRIPTIVE TITLE. -# Copyright (C) pgRouting Contributors - Version v3.7.0 +# Copyright (C) pgRouting Contributors - Version v3.8 # This file is distributed under the same license as the pgRouting package. # FIRST AUTHOR , 2022. # msgid "" msgstr "" -"Project-Id-Version: pgRouting v3.4.0-dev\n" +"Project-Id-Version: pgRouting v3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-06-25 12:55-0500\n" "PO-Revision-Date: 2022-09-29 16:37+0000\n" @@ -19,560 +19,3 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.14.1\n" "Generated-By: Babel 2.10.3\n" - -#: ../../build/doc/index.rst:30 -msgid "Table of Contents" -msgstr "Tabla de Contenido" - -#: ../../build/doc/index.rst:32 -msgid "" -"pgRouting extends the `PostGIS `__/`PostgreSQL " -"`__ geospatial database to provide geospatial" -" routing and other network analysis functionality." -msgstr "" -"pgRouting extiende la base de datos geospacial de `PostGIS " -"`__/`PostgreSQL `__ para" -" proporcionar enrutamiento geoespacial y otras funciones de análisis de " -"red." - -#: ../../build/doc/index.rst:36 -msgid "This is the manual for pgRouting |release|." -msgstr "Este es el manual para la version |release| de pgRouting." - -msgid "Creative Commons Attribution-Share Alike 3.0 License" -msgstr "Licencia de Creative Commons Attribution-Share Alike 3.0" - -#: ../../build/doc/index.rst:42 -msgid "" -"The pgRouting Manual is licensed under a `Creative Commons Attribution-" -"Share Alike 3.0 License `_. Feel free to use this material any way you like, but we ask " -"that you attribute credit to the pgRouting Project and wherever possible," -" a link back to https://pgrouting.org. For other licenses used in " -"pgRouting see the :ref:`license` page." -msgstr "" -"El Manual de pgRouting está bajo licencia `Creative Commons Attribution-" -"Share Alike 3.0 License `_. Siéntase libre de usar este material de la manera que desee, " -"pero le pedimos que atribuya el crédito correspondiente al proyecto " -"pgRouting y, siempre que sea posible, visite https://pgrouting.org. Para " -"otras licencias utilizadas en pgRouting, consulte la página " -":ref:`license` ." - -#: ../../build/doc/index.rst:50 -msgid "General" -msgstr "General" - -#: ../../build/doc/index.rst:60 -msgid ":doc:`sampledata` that is used in the examples of this manual." -msgstr ":doc:`sampledata` es usado en los ejemplos de este manual." - -#: ../../build/doc/index.rst:68 -msgid "Pgrouting Concepts" -msgstr "Conceptos de pgRouting" - -#: ../../build/doc/index.rst:77 -msgid ":doc:`routingFunctions`" -msgstr ":doc:`routingFunctions`" - -#: ../../build/doc/routingFunctions.rst:4 -msgid ":doc:`allpairs-family`" -msgstr ":doc:`allpairs-family`" - -#: ../../build/doc/allpairs-family.rst:3 -msgid ":doc:`pgr_floydWarshall` - Floyd-Warshall's algorithm." -msgstr ":doc:`pgr_floydWarshall` - Algoritmo de Floyd-Warshall." - -#: ../../build/doc/allpairs-family.rst:4 -msgid ":doc:`pgr_johnson` - Johnson's algorithm" -msgstr ":doc:`pgr_johnson` - Algoritmo de Johnson" - -#: ../../build/doc/routingFunctions.rst:10 -msgid ":doc:`aStar-family`" -msgstr ":doc:`aStar-family`" - -#: ../../build/doc/aStar-family.rst:3 -msgid ":doc:`pgr_aStar` - A* algorithm for the shortest path." -msgstr ":doc:`pgr_aStar` - Algoritmo A* para la ruta más corta." - -#: ../../build/doc/aStar-family.rst:4 -msgid ":doc:`pgr_aStarCost` - Get the aggregate cost of the shortest paths." -msgstr ":doc:`pgr_aStarCost` - Obtener el costo agregado de las rutas más cortas." - -#: ../../build/doc/aStar-family.rst:5 -msgid ":doc:`pgr_aStarCostMatrix` - Get the cost matrix of the shortest paths." -msgstr "" -":doc:`pgr_aStarCostMatrix` - Obtener la matriz de costos de las rutas más" -" cortas." - -#: ../../build/doc/routingFunctions.rst:17 -msgid ":doc:`bdAstar-family`" -msgstr ":doc:`bdAstar-family`" - -#: ../../build/doc/bdAstar-family.rst:3 -msgid ":doc:`pgr_bdAstar` - Bidirectional A* algorithm for obtaining paths." -msgstr ":doc:`pgr_bdAstar` - Algoritmo bidireccional A* para obtener rutas." - -#: ../../build/doc/bdAstar-family.rst:4 -msgid "" -":doc:`pgr_bdAstarCost` - Bidirectional A* algorithm to calculate the cost" -" of the paths." -msgstr "" -":doc:`pgr_bdAstarCost` - Algoritmo bidireccional A* para calcular el " -"coste de las rutas." - -#: ../../build/doc/bdAstar-family.rst:6 -msgid "" -":doc:`pgr_bdAstarCostMatrix` - Bidirectional A* algorithm to calculate a " -"cost matrix of paths." -msgstr "" -":doc:`pgr_bdAstarCostMatrix` - Algoritmo bidireccional A* para calcular " -"una matriz de costes de rutas." - -#: ../../build/doc/routingFunctions.rst:23 -msgid ":doc:`bdDijkstra-family`" -msgstr ":doc:`bdDijkstra-family`" - -#: ../../build/doc/bdDijkstra-family.rst:3 -msgid "" -":doc:`pgr_bdDijkstra` - Bidirectional Dijkstra algorithm for the shortest" -" paths." -msgstr "" -":doc:`pgr_bdDijkstra` - Algoritmo Dijkstra bidireccional para las rutas " -"más cortas." - -#: ../../build/doc/bdDijkstra-family.rst:5 -msgid "" -":doc:`pgr_bdDijkstraCost` - Bidirectional Dijkstra to calculate the cost " -"of the shortest paths" -msgstr "" -":doc:`pgr_bdDijkstraCost` - Dijkstra bidireccional para calcular el costo" -" de las rutas más cortas" - -#: ../../build/doc/bdDijkstra-family.rst:7 -msgid "" -":doc:`pgr_bdDijkstraCostMatrix` - Bidirectional Dijkstra algorithm to " -"create a matrix of costs of the shortest paths." -msgstr "" -":doc:`pgr_bdDijkstraCostMatrix` - Algoritmo Dijkstra bidireccional para " -"crear una matriz de costes de las rutas más cortas." - -#: ../../build/doc/routingFunctions.rst:29 -msgid ":doc:`components-family`" -msgstr ":doc:`components-family`" - -#: ../../build/doc/components-family.rst:3 -msgid "" -":doc:`pgr_connectedComponents` - Connected components of an undirected " -"graph." -msgstr "" -":doc:`pgr_connectedComponents` - Componentes conectados de un grafo no " -"dirigido." - -#: ../../build/doc/components-family.rst:4 -msgid "" -":doc:`pgr_strongComponents` - Strongly connected components of a directed" -" graph." -msgstr "" -":doc:`pgr_strongComponents` - Componentes fuertemente conectados de un " -"grafo dirigido." - -#: ../../build/doc/components-family.rst:6 -msgid "" -":doc:`pgr_biconnectedComponents` - Biconnected components of an " -"undirected graph." -msgstr "" -":doc:`pgr_biconnectedComponents` - Componentes biconectados de un grafo " -"no dirigido." - -#: ../../build/doc/components-family.rst:8 -msgid "" -":doc:`pgr_articulationPoints` - Articulation points of an undirected " -"graph." -msgstr "" -":doc:`pgr_articulationPoints` - Puntos de articulación de un grafo no " -"dirigido." - -#: ../../build/doc/components-family.rst:9 -msgid ":doc:`pgr_bridges` - Bridges of an undirected graph." -msgstr ":doc:`pgr_bridges` - Puentes de un grafo no dirigido." - -#: ../../build/doc/routingFunctions.rst:35 -msgid ":doc:`contraction-family`" -msgstr ":doc:`contraction-family`" - -#: ../../build/doc/contraction-family.rst:3 -msgid ":doc:`pgr_contraction`" -msgstr ":doc:`pgr_contraction`" - -#: ../../build/doc/routingFunctions.rst:41 -msgid ":doc:`dijkstra-family`" -msgstr ":doc:`dijkstra-family`" - -#: ../../build/doc/dijkstra-family.rst:3 -msgid ":doc:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths." -msgstr ":doc:`pgr_dijkstra` - Algoritmo de Dijkstra para las rutas más cortas." - -#: ../../build/doc/dijkstra-family.rst:4 -msgid ":doc:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths." -msgstr "" -":doc:`pgr_dijkstraCost` - Obtener el costo agregado de las rutas más " -"cortas." - -#: ../../build/doc/dijkstra-family.rst:5 -msgid ":doc:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix." -msgstr "" -":doc:`pgr_dijkstraCostMatrix` - Usar pgr_dijkstra para crear una matriz " -"de costes." - -#: ../../build/doc/dijkstra-family.rst:6 -msgid "" -":doc:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament " -"information." -msgstr "" -":doc:`pgr_drivingDistance` - Usar pgr_dijkstra para calcular información " -"de captación." - -#: ../../build/doc/dijkstra-family.rst:8 -msgid "" -":doc:`pgr_KSP` - Use Yen algorithm with pgr_dijkstra to get the K " -"shortest paths." -msgstr "" -":doc:`pgr_KSP` - Usar el algoritmo Yen con pgr_dijkstra para obtener las " -"K rutas más cortas." - -#: ../../build/doc/routingFunctions.rst:47 -msgid ":doc:`flow-family`" -msgstr ":doc:`flow-family`" - -#: ../../build/doc/flow-family.rst:3 -msgid "" -":doc:`pgr_maxFlow` - Only the Max flow calculation using Push and Relabel" -" algorithm." -msgstr "" -":doc:`pgr_maxFlow` - Solo el flujo máximo se calcula usando el algoritmo " -"empuja y reetiquetado." - -#: ../../build/doc/flow-family.rst:5 -msgid "" -":doc:`pgr_boykovKolmogorov` - Boykov and Kolmogorov with details of flow " -"on edges." -msgstr "" -":doc:`pgr_boykovKolmogorov` - Algoritmo Boykov y Kolmogorov con detalles " -"del flujo en aristas." - -#: ../../build/doc/flow-family.rst:7 -msgid "" -":doc:`pgr_edmondsKarp` - Edmonds and Karp algorithm with details of flow " -"on edges." -msgstr "" -":doc:`pgr_edmondsKarp` - Algoritmo Edmonds y Karp con detalles de flujo " -"del flujo en aristas." - -#: ../../build/doc/flow-family.rst:9 -msgid "" -":doc:`pgr_pushRelabel` - Push and relabel algorithm with details of flow " -"on edges." -msgstr "" -":doc:`pgr_pushRelabel` - Algoritmo empuja y reetiquetado con detalles del" -" flujo en aristas." - -#: ../../build/doc/flow-family.rst:11 -msgid "Applications" -msgstr "Aplicaciones" - -#: ../../build/doc/flow-family.rst:13 -msgid "" -":doc:`pgr_edgeDisjointPaths` - Calculates edge disjoint paths between two" -" groups of vertices." -msgstr "" -":doc:`pgr_edgeDisjointPaths` - Calcula rutas de aristas disjuntas entre " -"dos grupos de vértices." - -#: ../../build/doc/flow-family.rst:15 -msgid "" -":doc:`pgr_maxCardinalityMatch` - Calculates a maximum cardinality " -"matching in a graph." -msgstr "" -":doc:`pgr_maxCardinalityMatch` - Calcular una cardinalidad máxima de " -"coincidencia dentro de un grafo." - -#: ../../build/doc/routingFunctions.rst:53 -#: ../../build/doc/spanningTree-family.rst:3 -msgid ":doc:`kruskal-family`" -msgstr ":doc:`kruskal-family`" - -#: ../../build/doc/kruskal-family.rst:3 -msgid ":doc:`pgr_kruskal`" -msgstr ":doc:`pgr_kruskal`" - -#: ../../build/doc/BFS-category.rst:3 ../../build/doc/kruskal-family.rst:4 -msgid ":doc:`pgr_kruskalBFS`" -msgstr ":doc:`pgr_kruskalBFS`" - -#: ../../build/doc/kruskal-family.rst:5 -msgid ":doc:`pgr_kruskalDD`" -msgstr ":doc:`pgr_kruskalDD`" - -#: ../../build/doc/DFS-category.rst:3 ../../build/doc/kruskal-family.rst:6 -msgid ":doc:`pgr_kruskalDFS`" -msgstr ":doc:`pgr_kruskalDFS`" - -#: ../../build/doc/routingFunctions.rst:59 -#: ../../build/doc/spanningTree-family.rst:4 -msgid ":doc:`prim-family`" -msgstr ":doc:`prim-family`" - -#: ../../build/doc/prim-family.rst:3 -msgid ":doc:`pgr_prim`" -msgstr ":doc:`pgr_prim`" - -#: ../../build/doc/BFS-category.rst:4 ../../build/doc/prim-family.rst:4 -msgid ":doc:`pgr_primBFS`" -msgstr ":doc:`pgr_primBFS`" - -#: ../../build/doc/prim-family.rst:5 -msgid ":doc:`pgr_primDD`" -msgstr ":doc:`pgr_primDD`" - -#: ../../build/doc/DFS-category.rst:4 ../../build/doc/prim-family.rst:6 -msgid ":doc:`pgr_primDFS`" -msgstr ":doc:`pgr_primDFS`" - -#: ../../build/doc/routingFunctions.rst:65 -msgid ":doc:`reference`" -msgstr ":doc:`reference`" - -#: ../../build/doc/reference.rst:3 -msgid ":doc:`pgr_version`" -msgstr ":doc:`pgr_version`" - -#: ../../build/doc/reference.rst:4 -msgid ":doc:`pgr_full_version`" -msgstr ":doc:`pgr_full_version`" - -#: ../../build/doc/routingFunctions.rst:71 -msgid ":doc:`topology-functions`" -msgstr ":doc:`topology-functions`" - -#: ../../build/doc/topology-functions.rst:3 -msgid "" -"The following functions modify the database directly therefore the user " -"must have special permissions given by the administrators to use them." -msgstr "" -"Las siguientes funciones modifican la base de datos directamente, por lo " -"que el usuario debe tener permisos especiales otorgados por un " -"administrador para usarlos." - -#: ../../build/doc/topology-functions.rst:6 -msgid ":doc:`pgr_createTopology` - create a topology based on the geometry." -msgstr "" -":doc:`pgr_createTopology` - para crear una topología basada en la " -"geometría." - -#: ../../build/doc/topology-functions.rst:7 -msgid "" -":doc:`pgr_createVerticesTable` - reconstruct the vertices table based on " -"the source and target information." -msgstr "" -":doc:`pgr_createVerticesTable` - reconstruir la tabla de vértices en base" -" a la información de origen y destino." - -#: ../../build/doc/topology-functions.rst:9 -msgid "" -":doc:`pgr_analyzeGraph` - to analyze the edges and vertices of the edge " -"table." -msgstr "" -":doc:`pgr_analyzeGraph` - para analizar los bordes y vértices de la tabla" -" de aristas." - -#: ../../build/doc/topology-functions.rst:11 -msgid ":doc:`pgr_analyzeOneWay` - to analyze directionality of the edges." -msgstr "" -":doc:`pgr_analyzeOneWay` - para analizar la direccionalidad de las " -"aristas." - -#: ../../build/doc/topology-functions.rst:12 -msgid ":doc:`pgr_nodeNetwork` -to create nodes to a not noded edge table." -msgstr ":doc:`pgr_nodeNetwork` - para crear nodos en una tabla de aristas." - -#: ../../build/doc/routingFunctions.rst:77 -msgid ":doc:`TSP-family`" -msgstr ":doc:`TSP-family`" - -#: ../../build/doc/TSP-family.rst:3 -msgid ":doc:`pgr_TSP` - When input is given as matrix cell information." -msgstr "" -":doc:`pgr_TSP` - Cuando la entrada es la información de celdas de una " -"matriz." - -#: ../../build/doc/TSP-family.rst:4 -msgid ":doc:`pgr_TSPeuclidean` - When input are coordinates." -msgstr ":doc:`pgr_TSPeuclidean` - Cuando la información son coordenadas." - -#: ../../build/doc/routingFunctions.rst:83 -msgid ":doc:`pgr_trsp` - Turn Restriction Shortest Path (TRSP)" -msgstr ":doc:`pgr_trsp` - Camino más corto con restricción de giros (TRSP)" - -#: ../../build/doc/routingFunctions.rst:87 -msgid "Functions by categories" -msgstr "Funciones por categorías" - -#: ../../build/doc/routingFunctions.rst:89 -msgid ":doc:`cost-category`" -msgstr ":doc:`cost-category`" - -#: ../../build/doc/cost-category.rst:3 -msgid ":doc:`pgr_aStarCost`" -msgstr ":doc:`pgr_aStarCost`" - -#: ../../build/doc/cost-category.rst:4 -msgid ":doc:`pgr_bdAstarCost`" -msgstr ":doc:`pgr_bdAstarCost`" - -#: ../../build/doc/cost-category.rst:5 -msgid ":doc:`pgr_dijkstraCost`" -msgstr ":doc:`pgr_dijkstraCost`" - -#: ../../build/doc/cost-category.rst:6 -msgid ":doc:`pgr_bdDijkstraCost`" -msgstr ":doc:`pgr_bdDijkstraCost`" - -#: ../../build/doc/cost-category.rst:7 -msgid ":doc:`pgr_dijkstraNearCost`" -msgstr ":doc:`pgr_dijkstraNearCost`" - -#: ../../build/doc/routingFunctions.rst:95 -msgid ":doc:`costMatrix-category`" -msgstr ":doc:`costMatrix-category`" - -#: ../../build/doc/costMatrix-category.rst:3 -msgid ":doc:`pgr_aStarCostMatrix`" -msgstr ":doc:`pgr_aStarCostMatrix`" - -#: ../../build/doc/costMatrix-category.rst:4 -msgid ":doc:`pgr_bdAstarCostMatrix`" -msgstr ":doc:`pgr_bdAstarCostMatrix`" - -#: ../../build/doc/costMatrix-category.rst:5 -#: ../../build/doc/costMatrix-category.rst:7 -msgid ":doc:`pgr_bdDijkstraCostMatrix`" -msgstr ":doc:`pgr_bdDijkstraCostMatrix`" - -#: ../../build/doc/costMatrix-category.rst:6 -msgid ":doc:`pgr_dijkstraCostMatrix`" -msgstr ":doc:`pgr_dijkstraCostMatrix`" - -#: ../../build/doc/routingFunctions.rst:102 -msgid ":doc:`drivingDistance-category`" -msgstr ":doc:`drivingDistance-category`" - -#: ../../build/doc/drivingDistance-category.rst:3 -msgid "" -":doc:`pgr_drivingDistance` - Driving Distance based on Dijkstra's " -"algorithm" -msgstr "" -":doc:`pgr_drivingDistance` - Distancia de Manejo basada en el algoritmo " -"de Dijkstra" - -#: ../../build/doc/drivingDistance-category.rst:4 -msgid ":doc:`pgr_primDD` - Driving Distance based on Prim's algorithm" -msgstr ":doc:`pgr_primDD` - Distancia de manejo basada en el algoritmo de Prim" - -#: ../../build/doc/drivingDistance-category.rst:5 -msgid ":doc:`pgr_kruskalDD` - Driving Distance based on Kruskal's algorithm" -msgstr "" -":doc:`pgr_kruskalDD` - Distancia de Manejo basada en el algoritmo de " -"Kruskal" - -#: ../../build/doc/drivingDistance-category.rst:6 -msgid "Post pocessing" -msgstr "Post procesamiento" - -#: ../../build/doc/drivingDistance-category.rst:8 -msgid ":doc:`pgr_alphaShape` - Alpha shape computation" -msgstr ":doc:`pgr_alphaShape` - Cálcular la forma Alpha" - -#: ../../build/doc/routingFunctions.rst:108 -msgid ":doc:`KSP-category`" -msgstr ":doc:`KSP-category`" - -#: ../../build/doc/KSP-category.rst:3 -msgid ":doc:`pgr_KSP` - Yen's algorithm based on pgr_dijkstra" -msgstr ":doc:`pgr_KSP` - Algoritmo de Yen basado en pgr_dijkstra" - -#: ../../build/doc/routingFunctions.rst:114 -msgid ":doc:`spanningTree-family`" -msgstr ":doc:`spanningTree-family`" - -#: ../../build/doc/routingFunctions.rst:120 -msgid ":doc:`BFS-category`" -msgstr ":doc:`BFS-category`" - -#: ../../build/doc/routingFunctions.rst:126 -msgid ":doc:`DFS-category`" -msgstr ":doc:`DFS-category`" - -#: ../../build/doc/index.rst:91 -msgid "Available Functions but not official pgRouting functions" -msgstr "Funciones disponibles pero no oficiales de pgRouting" - -#: ../../build/doc/index.rst:93 -msgid ":doc:`proposed`" -msgstr ":doc:`proposed`" - -#: ../../build/doc/index.rst:94 -msgid ":doc:`experimental`" -msgstr ":doc:`experimental`" - -#: ../../build/doc/index.rst:105 -msgid ":doc:`release_notes`" -msgstr ":doc:`release_notes`" - -#: ../../build/doc/index.rst:119 -msgid "Indices and tables" -msgstr "Índices y tablas" - -#: ../../build/doc/index.rst:120 -msgid ":ref:`genindex`" -msgstr ":ref:`genindex`" - -#: ../../build/doc/index.rst:121 -msgid ":ref:`search`" -msgstr ":ref:`search`" - -msgid "**start vid**" -msgstr "**salida**" - -msgid "**start vids**" -msgstr "**salidas**" - -msgid "**end vid**" -msgstr "**destino**" - -msgid "**end vids**" -msgstr "**destinos**" - -msgid "**via vertices**" -msgstr "**vértices**" - -msgid "**Root vid**" -msgstr "**Raíz**" - -msgid "`Edges SQL`_" -msgstr "`SQL de aristas`_" - -msgid "**distance**" -msgstr "**distancia**" - -msgid "RETURNS SETOF" -msgstr "REGRESA CONJUNTO DE" - -msgid "edge" -msgstr "arista" - -msgid "RETURNS SET OF" -msgstr "REGRESA CONJUNTO DE" - -msgid "path" -msgstr "camino" diff --git a/locale/es/LC_MESSAGES/pgrouting_doc_strings.po b/locale/es/LC_MESSAGES/pgrouting_doc_strings.po index ba05a8015d..7f86624f8a 100644 --- a/locale/es/LC_MESSAGES/pgrouting_doc_strings.po +++ b/locale/es/LC_MESSAGES/pgrouting_doc_strings.po @@ -1,18 +1,18 @@ # SOME DESCRIPTIVE TITLE. -# Copyright (C) pgRouting Contributors - Version v3.7.0 +# Copyright (C) pgRouting Contributors - Version v3.8 # This file is distributed under the same license as the pgRouting package. # FIRST AUTHOR , 2022. # Pedro Jose Rios Vergara , 2022. # Celia Virginia Vergara Castillo , 2022. -# Celia Virginia Vergara Castillo , 2023, 2024. +# Celia Virginia Vergara Castillo , 2023, 2024, 2025. # DeepL , 2024. msgid "" msgstr "" -"Project-Id-Version: pgRouting v3.4.0-dev\n" +"Project-Id-Version: pgRouting v3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-17 00:50+0000\n" -"PO-Revision-Date: 2024-10-10 19:43+0000\n" -"Last-Translator: DeepL \n" +"POT-Creation-Date: 2025-03-24 14:17+0000\n" +"PO-Revision-Date: 2025-03-30 01:13+0000\n" +"Last-Translator: Celia Virginia Vergara Castillo \n" "Language-Team: Spanish \n" "Language: es\n" @@ -313,9 +313,6 @@ msgstr ":doc:`pgr_kruskalDFS`" msgid ":doc:`pgr_primDFS`" msgstr ":doc:`pgr_primDFS`" -msgid "Proposed" -msgstr "Propuesto" - msgid "Proposed functions for next mayor release." msgstr "Funciones propuestas para la próxima versión mayor." @@ -387,9 +384,6 @@ msgstr "" "Leer :doc:`migration` sobre como migrar de la funcionalidad obsoleta de TRSP " "a las nuevas firmas o funciones que las reemplazan." -msgid "Experimental" -msgstr "Experimental" - msgid "Possible server crash" msgstr "Posible bloqueo del servidor" @@ -434,7 +428,7 @@ msgstr "" "Puede ser necesario que los ejemplos de documentación se generen " "automáticamente." -msgid "Might need a lot of feedback from the comunity." +msgid "Might need a lot of feedback from the community." msgstr "Puede ser necesaria retroalimentación por parte de la comunidad." msgid "Might depend on a proposed function of pgRouting" @@ -726,11 +720,11 @@ msgid "References" msgstr "Referencias" msgid "" -"`Boost's metric appro's metric approximation `__" +"`Boost: metric TSP approx `__" msgstr "" -"`Algoritmo Métrico de la Librería Boost `__" +"`Boost: aproximación métrica de TSP `__" msgid "`University of Waterloo TSP `__" msgstr "`Universided de Waterloo TSP `__" @@ -742,8 +736,8 @@ msgstr "" "`Wikipedia: Problema del viajante `__" -msgid "Vehicle Routing Functions - Category (Experimental)" -msgstr "Funciones de Ruteo de Vehículos - Categoría (Experimental)" +msgid "Vehicle Routing Functions - Category" +msgstr "Funciones de Ruteo de Vehículos - Categoría" msgid "Pickup and delivery problem" msgstr "Problema de recogida y entrega" @@ -1788,8 +1782,8 @@ msgstr ":math:`1km * 0.0277hr/km = 0.0277hr`" msgid "https://en.wikipedia.org/wiki/Vehicle_routing_problem" msgstr "https://en.wikipedia.org/wiki/Vehicle_routing_problem" -msgid "The queries use the :doc:`sampledata` network." -msgstr "Las consultas utilizan la red :doc:`sampledata` ." +msgid ":doc:`sampledata`" +msgstr ":doc:`sampledata`" msgid "A* - Family of functions" msgstr "A* - Familia de Funciones" @@ -1969,8 +1963,11 @@ msgstr "" msgid ":doc:`bdAstar-family`" msgstr ":doc:`bdAstar-family`" -msgid "https://www.boost.org/libs/graph/doc/astar_search.html" -msgstr "https://www.boost.org/libs/graph/doc/astar_search.html" +msgid "" +"`Boost: A* search `__" +msgstr "" +"`Boost: Búsqueda A* `__" msgid "https://en.wikipedia.org/wiki/A*_search_algorithm" msgstr "https://en.wikipedia.org/wiki/A*_search_algorithm" @@ -2806,15 +2803,12 @@ msgstr "" "Para grandes gráficos donde hay un camino entre el vértice inicial y el " "vértice final:" -msgid "It is expected to terminate faster than pgr_astar" -msgstr "Se espera que termine más rápido que pgr_astar" +msgid "It is expected to terminate faster than pgr_aStar" +msgstr "Se espera que termine más rápido que pgr_aStar" msgid ":doc:`aStar-family`" msgstr ":doc:`aStar-family`" -msgid "Previous versions of this page" -msgstr "Versiones anteriores de esta página" - msgid "Bidirectional Dijkstra - Family of functions" msgstr "Bidirectional Dijkstra - Familia de funciones" @@ -2984,38 +2978,9 @@ msgid "Identifier of the color of the edge." msgstr "Identificador del color del segmento." msgid "" -"`Boost: Sequential Vertex Coloring algorithm documentation `__" -msgstr "" -"`Boost: Documentacion de Algoritmo de Coloración Secuencial de Vertices " -"`__" - -msgid "" -"`Wikipedia: Graph coloring `__" -msgstr "" -"`Wikipedia: Coloración de grafos `__" - -msgid "" -"`Boost: is_bipartite `__" -msgstr "" -"`Boost: es bipartido `__" - -msgid "" -"`Wikipedia: bipartite graph `__" -msgstr "" -"`Wikipedia: grafo bipartito `__" - -msgid "" -"`Boost: Edge Coloring Algorithm documentation `__" +"`Boost: `__" msgstr "" -"`Boost: Algoritmo de Coloración de Segmentos `__" +"`Boost: `__" msgid "Components - Family of functions" msgstr "Componentes - Familia de funciones" @@ -3059,6 +3024,9 @@ msgstr "Contraction - Familia de funciones" msgid ":doc:`pgr_contraction`" msgstr ":doc:`pgr_contraction`" +msgid ":doc:`pgr_contractionDeadEnd`" +msgstr ":doc:`pgr_contractionDeadEnd`" + msgid "" "In large graphs, like the road graphs, or electric networks, graph " "contraction can be used to speed up some graph algorithms. Contraction " @@ -3099,2718 +3067,2362 @@ msgstr "" "Decida el orden de los algoritmos de contracción y establezca el número " "máximo de veces que se van a ejecutar." -msgid "Contraction of the leaf nodes of the graph." -msgstr "Contracción de los nodos de hoja del grafo." - -msgid "Dead end" -msgstr "Sin salida" - -msgid "A node is considered a **dead end** node when" -msgstr "Un nodo se considera **sin salida** cuando" - -msgid "On undirected graphs:" -msgstr "En grafos no dirigidos:" - -msgid "The number of adjacent vertices is 1." -msgstr "El número de vértices adyacentes es 1." - -msgid "On directed graphs:" -msgstr "En grafos dirigidos:" - -msgid "There are no outgoing edges and has at least one incoming edge." -msgstr "No hay aristas salientes y tiene al menos una arista entrante." - -msgid "There are no incoming edges and has at least one outgoing edge." -msgstr "No hay aristas entrantes y tiene al menos una arista saliente." - msgid "" -"When the conditions are true then the `Operation: Dead End Contraction`_ can " -"be done." +"https://www.cs.cmu.edu/afs/cs/academic/class/15210-f12/www/lectures/" +"lecture16.pdf" msgstr "" -"Cuando las condiciones son verdaderas, se puede hacer la `Operación: " -"Contracción de callejón sin salida`_." +"https://www.cs.cmu.edu/afs/cs/academic/class/15210-f12/www/lectures/" +"lecture16.pdf" -msgid "Dead end vertex on undirected graph" -msgstr "Vértice sin salida en un grafo sin dirigir" +msgid "https://algo2.iti.kit.edu/documents/routeplanning/geisberger_dipl.pdf" +msgstr "https://algo2.iti.kit.edu/documents/routeplanning/geisberger_dipl.pdf" -msgid "The green nodes are `dead end`_ nodes" -msgstr "Los nodos verdes son nodos `dead end`_" +msgid "Cost - Category" +msgstr "Costo - Categoría" -msgid "The blue nodes have an unlimited number of edges." -msgstr "Los nodos azules tienen un número ilimitado de aristas." +msgid ":doc:`pgr_aStarCost`" +msgstr ":doc:`pgr_aStarCost`" -msgid "Node" -msgstr "Nodo" +msgid ":doc:`pgr_bdAstarCost`" +msgstr ":doc:`pgr_bdAstarCost`" -msgid "Adjecent nodes" -msgstr "Nodos adyacentes" +msgid ":doc:`pgr_dijkstraCost`" +msgstr ":doc:`pgr_dijkstraCost`" -msgid "Number of adjacent nodes" -msgstr "Número de vértices adyacentes" +msgid ":doc:`pgr_bdDijkstraCost`" +msgstr ":doc:`pgr_bdDijkstraCost`" -msgid ":math:`a`" -msgstr ":math:`a`" +msgid ":doc:`pgr_dijkstraNearCost`" +msgstr ":doc:`pgr_dijkstraNearCost`" -msgid ":math:`\\{u\\}`" -msgstr ":math:`\\{u\\}`" +msgid ":doc:`pgr_withPointsCost`" +msgstr ":doc:`pgr_withPointsCost`" -msgid ":math:`b`" -msgstr ":math:`b`" +msgid "Each function works as part of the family it belongs to." +msgstr "Cada función funciona como parte de la familia a la que pertenece." -msgid ":math:`\\{v\\}`" -msgstr ":math:`\\{v\\}`" +msgid "" +"Returns the sum of the costs of the shortest path of each pair combination " +"of nodes requested." +msgstr "" +"Devuelve la suma de los costos de la ruta más corta para cada par de " +"combinación de nodos requeridos." -msgid "Dead end vertex on directed graph" -msgstr "Vértice sin salida en un grafo dirigido" +msgid "" +"Let be the case the values returned are stored in a table, so the unique " +"index would be the pair: ``(start_vid, end_vid)``." +msgstr "" +"Sea el caso que los valores devueltos se almacenen en una tabla, el índice " +"único sería el par: `(start_vid, end_vid)`." msgid "" -"The blue nodes have an unlimited number of incoming and/or outgoing edges." +"Depending on the function and its parameters, the results can be symmetric." msgstr "" -"Los nodos azules tienen un número ilimitado de aristas entrantes y/o " -"salientes." +"Dependiendo de la función y sus parámetros, los resultados pueden ser " +"simétricos." + +msgid "" +"The **aggregate cost** of :math:`(u, v)` is the same as for :math:`(v, u)`." +msgstr "" +"El **costo agregado** de :math:`(u, v)` es el mismo que para :math:`(v, u)`." + +msgid "" +"Any duplicated value in the start or end vertex identifiers are ignored." +msgstr "" +"Se omite cualquier valor duplicado en los identificadores de vertices de " +"inicio y destino." -msgid "Number of incoming edges" -msgstr "Número de aristas entrantes" +msgid "The returned values are ordered:" +msgstr "Los valores regresados se ordenan:" -msgid "Number of outgoing edges" -msgstr "Número de aristas salientes" +msgid "``start_vid`` ascending" +msgstr "``start_vid`` ascendente" -msgid ":math:`c`" -msgstr ":math:`c`" +msgid "``end_vid`` ascending" +msgstr "``end_vid`` ascendente" -msgid ":math:`\\{v, w\\}`" -msgstr ":math:`\\{v, w\\}`" +msgid "Cost Matrix - Category" +msgstr "Cost Matrix - Categoría" -msgid "2" -msgstr "2" +msgid ":doc:`pgr_aStarCostMatrix`" +msgstr ":doc:`pgr_aStarCostMatrix`" -msgid ":math:`d`" -msgstr ":math:`d`" +msgid ":doc:`pgr_dijkstraCostMatrix`" +msgstr ":doc:`pgr_dijkstraCostMatrix`" -msgid ":math:`\\{x\\}`" -msgstr ":math:`\\{x\\}`" +msgid ":doc:`pgr_bdAstarCostMatrix`" +msgstr ":doc:`pgr_bdAstarCostMatrix`" -msgid ":math:`e`" -msgstr ":math:`e`" +msgid ":doc:`pgr_bdDijkstraCostMatrix`" +msgstr ":doc:`pgr_bdDijkstraCostMatrix`" -msgid ":math:`\\{x, y\\}`" -msgstr ":math:`\\{x, y\\}`" +msgid ":doc:`pgr_withPointsCostMatrix`" +msgstr ":doc:`pgr_withPointsCostMatrix`" msgid "" -"From above, nodes :math:`\\{a, b, d\\}` are dead ends because the number of " -"adjacent vertices is 1. No further checks are needed for those nodes." +":doc:`TSP-family` needs as input a symmetric cost matrix and no edge `(u, " +"v)` must value :math:`\\infty`." msgstr "" -"De arriba, nodes :math:`\\{a, b, d\\}` son callejones sin salida por que el " -"número de vértices adyacentes es 1. No son necesarios los checks para esos " -"nodos." +":doc:`TSP-family` necesita como entrada una matriz de costos simétrica y sin " +"borde `(u, v)`, debe valorar :math:`\\infty`." msgid "" -"On the following table, nodes :math:`\\{c, e\\}` because the even that the " -"number of adjacent vertices is not 1 for" +"This collection of functions will return a cost matrix in form of a table." msgstr "" -"En al siguiente tabla, nodos :math:`\\{c, e\\}` por que el par del numero de " -"vértices adyacentes no es 1 para" +"Esta colección de funciones devolverá una matriz de costes en forma de tabla." -msgid "Operation: Dead End Contraction" -msgstr "Operación: Contracción sin salida" +msgid "Can be used as input to :doc:`pgr_TSP`." +msgstr "Se puede utilizar como entrada para :doc:`pgr_TSP`." msgid "" -"The dead end contraction will stop until there are no more dead end nodes. " -"For example from the following graph where :math:`w` is the `dead end`_ node:" +"Use directly when the resulting matrix is symmetric and there is no :math:" +"`\\infty` value." msgstr "" -"La contracción sin salida se detendrá hasta que no haya más nodos sin " -"salida. Por ejemplo, del siguiente grafo donde :math:`w` es el nodo `dead " -"end`_:" +"Usar directamente cuando la matriz resultante es simétrica y no hay valor :" +"math:`\\infty`." -msgid "" -"After contracting :math:`w`, node :math:`v` is now a `dead end`_ node and is " -"contracted:" +msgid "It will be the users responsibility to make the matrix symmetric." +msgstr "Es responsabilidad dels usuario hacer que la matriz sea simétrica." + +msgid "By using geometric or harmonic average of the non symmetric values." msgstr "" -"Después de contraer :math:`w`, el nodo ` :math:`v` es ahora un nodo `dead " -"end`_ y es contraído:" +"Mediante el uso de la media geométrica o armónica de los valores no " +"simétricos." + +msgid "By using max or min the non symmetric values." +msgstr "Mediante el uso de max o min, los valores no simétricos." msgid "" -"After contracting :math:`v`, stop. Node :math:`u` has the information of " -"nodes that were contrcted." +"By setting the upper triangle to be the mirror image of the lower triangle." msgstr "" -"Después de contraer math:`v`, detenerse El nodo math:`u` tiene la " -"información de los nodos que se contraen." +"Estableciendo el triángulo superior para que sea la imagen reflejada del " +"triángulo inferior." -msgid "Node :math:`u` has the information of nodes that were contracted." +msgid "" +"By setting the lower triangle to be the mirror image of the upper triangle." msgstr "" -"El nodo :math:`u` tiene la información de los nodos que se contrajeron." +"Estableciendo el triángulo inferior para que sea la imagen reflejada del " +"triángulo superior." -msgid "In the algorithm, linear contraction is represented by 2." -msgstr "En el algoritmo, la contracción lineal es representada con un 2." +msgid "It is also the users responsibility to fix an :math:`\\infty` value." +msgstr "" +"También es responsabilidad de los usuarios para fijar un valor :math:" +"`\\infty`." -msgid "Linear" -msgstr "Lineal" +msgid "" +"Returns the sum of the costs of the shortest path for pair combination of " +"nodes in the graph." +msgstr "" +"Devuelve la suma de los costos de la ruta más corta para la combinación de " +"pares de nodos en el grafo." msgid "" -"In case of an undirected graph, a node is considered a `linear` node when" +"When the starting vertex and ending vertex are the same, there is no path." msgstr "" -"En el caso de un grafo no dirigido, un nodo se considera un nodo `lineal` " -"cuando" +"Cuando el vértice inicial y el vértice final son iguales, no hay camino." -msgid "The number of adjacent vertices is 2." -msgstr "El número de vértices adyacentes es 2." +msgid "The aggregate cost in the non included values `(v, v)` is `0`." +msgstr "El costo agregado de los valores no incluídos `(v, v)` es `0`." -msgid "In case of a directed graph, a node is considered a `linear` node when" -msgstr "En el caso de un grafo dirigido, un nodo se considera `lineal` cuando" +msgid "" +"When the starting vertex and ending vertex are the different and there is no " +"path." +msgstr "" +"Cuando el vértice inicial y el vértice final son diferentes y no hay ruta." -msgid "Linearity is symmetrical" -msgstr "La linealidad es simétrica" +msgid "" +"The aggregate cost in the non included values `(u, v)` is :math:`\\infty`." +msgstr "" +"El costo agregado de los valores no incluídos ``(u, v)`` es :math: `\\infty`." -msgid "Linear vertex on undirected graph" -msgstr "Vértice lineal en grafo no dirigido" +msgid "Let be the case the values returned are stored in a table:" +msgstr "Sea el caso, los valores devueltos se almacenan en una tabla:" -msgid "The green nodes are `linear`_ nodes" -msgstr "Los nodos verdes son `lineales`_" +msgid "The unique index would be the pair: ``(start_vid, end_vid)``." +msgstr "El índice único es el par: ``(start_vid, end_vid)``." -msgid "The blue nodes have an unlimited number of incoming and outgoing edges." -msgstr "" -"Los nodos azules tienen un número ilimitado de aristas entrantes y salientes." +msgid "The aggregate cost of `(u, v)` is the same as for `(v, u)`." +msgstr "El costo agregado de `(u, v)` es el mismo que para `(v, u)`." -msgid "Undirected" -msgstr "No dirigido" +msgid "Any duplicated value in the **start vids** are ignored." +msgstr "Se omite cualquier valor duplicado en las **salidas**." -msgid ":math:`v`" -msgstr ":math:`v`" +msgid "Used in:" +msgstr "Usado en:" -msgid ":math:`\\{u, w\\}`" -msgstr ":math:`\\{u, w\\}`" +msgid "`Edges SQL`_ as described below" +msgstr "`SQL de aristas`_ como se describe a continuación" -msgid "Linear vertex on directed graph" -msgstr "Vértice lineal en grafo dirigido" +msgid "**start vids**" +msgstr "**salidas**" -msgid "The white node is not linear because the linearity is not symetrical." -msgstr "El nodo blanco no es linero por que la linealidad no es simétrica." +msgid "``ARRAY[BIGINT]``" +msgstr "``ARRAY[BIGINT]``" -msgid "It is possible to go :math:`y \\rightarrow c \\rightarrow z`" -msgstr "Es posible ir a :math:`y \\rightarrow c \\rightarrow z`" +msgid "Array of identifiers of starting vertices." +msgstr "Arreglo de identificadores de vértices iniciales." -msgid "It's not possible to go :math:`z \\rightarrow c \\rightarrow y`" -msgstr "No es posible ir a :math:`z \\rightarrow c \\rightarrow y`" +msgid "`Points SQL`_" +msgstr "`SQL de puntos`_" -msgid "Is symmetrical?" -msgstr "Es simétrico?" +msgid "`Points SQL`_ as described below" +msgstr "`SQL de puntos`_ como se describe abajo" -msgid ":math:`\\{u, v\\}`" -msgstr ":math:`\\{u, v\\}`" +msgid "Points SQL" +msgstr "SQL de puntos" -msgid "yes" -msgstr "sí" +msgid "``pid``" +msgstr "``pid``" -msgid ":math:`\\{w, x\\}`" -msgstr ":math:`\\{w, x\\}`" +msgid "**value**" +msgstr "**valor**" -msgid ":math:`\\{y, z\\}`" -msgstr ":math:`\\{y, z\\}`" +msgid "Identifier of the point." +msgstr "Identificador del punto." -msgid "no" -msgstr "no" +msgid "" +"Use with positive value, as internally will be converted to negative value" +msgstr "" +"Use con un valor positivo, dado que internamente se convertirá a un valor " +"negativo" -msgid "Operation: Linear Contraction" -msgstr "Operación: Contracción Lineal" +msgid "If column is present, it can not be NULL." +msgstr "Si columna esta presente, no puede ser NULL." msgid "" -"The linear contraction will stop when there are no more linear nodes. For " -"example from the following graph where :math:`v` and :math:`w` are `linear`_ " -"nodes:" +"If column is not present, a sequential negative **value** will be given " +"automatically." msgstr "" -"La contracción lineal se detendrá hasta que no hayan más nodos lineales. Por " -"ejemplo, en el siguiente grafo donde ` :math:`v` y :math:`w` son nodos " -"`lineales`_ :" +"Si columna no esta presente, un **valor** secuencial negativo se otorgará " +"automáticamente." -msgid "Contracting :math:`w`," -msgstr "Contrayendo :math:`w`," +msgid "Identifier of the \"closest\" edge to the point." +msgstr "Identificador de la arista \"más cercana\" al punto." -msgid "The vertex :math:`w` is removed from the graph" -msgstr "El vértice :math:`w` se elimina del grafo" +msgid "``fraction``" +msgstr "``fraction``" msgid "" -"The edges :math:`v \\rightarrow w` and :math:`w \\rightarrow z` are removed " -"from the graph." +"Value in <0,1> that indicates the relative postition from the first end " +"point of the edge." msgstr "" -"Los aristas :math:`v \\rightarrow w` y :math:`w \\rightarrow z` fueron " -"eliminados del grafo." +"El valor en <0,1> que indica la posición relativa desde el primer punto de " +"la arista." -msgid "" -"A new edge :math:`v \\rightarrow z` is inserted represented with red color." -msgstr "" -"Se inserta un nuevo arista :math:`v \\rightarrow z` y se representa con " -"color rojo." +msgid "``side``" +msgstr "``side``" -msgid "Contracting :math:`v`:" -msgstr "Contrayendo :math:`v`:" +msgid "``CHAR``" +msgstr "``CHAR``" -msgid "The vertex :math:`v` is removed from the graph" -msgstr "El vértice :math:`v` se elimina del grafo" +msgid "``b``" +msgstr "``b``" -msgid "" -"The edges :math:`u \\rightarrow v` and :math:`v \\rightarrow z` are removed " -"from the graph." -msgstr "" -"Los aristas :math:`u \\rightarrow v` y :math:`v \\rightarrow z` son " -"removidos del grafo." +msgid "Value in [``b``, ``r``, ``l``, ``NULL``] indicating if the point is:" +msgstr "Valor en [``b``, ``r``, ``l``, ``NULL``] que indica si el punto es:" -msgid "" -"A new edge :math:`u \\rightarrow z` is inserted represented with red color." -msgstr "" -"Se inserta un nuevo arista :math:`u \\rightarrow z` y se representa con " -"color rojo." +msgid "In the right ``r``," +msgstr "A la derecha ``r``," -msgid "" -"Edge :math:`u \\rightarrow z` has the information of nodes that were " -"contracted." -msgstr "" -"El arista :math:`u \\rightarrow z` tiene la información de los nodos que " -"fueron contraídos." +msgid "In the left ``l``," +msgstr "A la izquierda `l`," -msgid "The cycle" -msgstr "El ciclo" +msgid "In both sides ``b``, ``NULL``" +msgstr "En ambos lados ``b``, ``NULL``" -msgid "" -"Contracting a graph, can be done with more than one operation. The order of " -"the operations affect the resulting contracted graph, after applying one " -"operation, the set of vertices that can be contracted by another operation " -"changes." -msgstr "" -"Contraer un grafo se puede hacer con más de una operación. El orden de las " -"operaciones afecta al gráfico contraído resultante; después de aplicar una " -"operación, el conjunto de vértices que se pueden contraer con otra operación " -"cambia." +msgid ":doc:`TSP-family`" +msgstr ":doc:`TSP-family`" -msgid "" -"This implementation, cycles ``max_cycles`` times through " -"``operations_order`` ." -msgstr "" -"Esta implementación alterna los tiempos `` max_cycles`` a través de `` " -"operations_order``." +msgid "Dijkstra - Family of functions" +msgstr "Dijkstra - Familia de funciones" -msgid "Contracting sample data" -msgstr "Contracción de los datos de muestra" +msgid ":doc:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths." +msgstr ":doc:`pgr_dijkstra` - Algoritmo de Dijkstra para las rutas más cortas." -msgid "" -"In this section, building and using a contracted graph will be shown by " -"example." +msgid ":doc:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths." msgstr "" -"En esta sección, la creación y el uso de un grafo contraído se mostrarán en " -"el ejemplo." - -msgid "The :doc:`sampledata` for an undirected graph is used" -msgstr "Se usa :doc:`sampledata` para un grafo no dirigido" - -msgid "a dead end operation first followed by a linear operation." -msgstr "una operación sin salida primero seguida de una operación lineal." - -msgid "Construction of the graph in the database" -msgstr "Construcción del grafo en la base de datos" - -msgid "Original Data" -msgstr "Datos Originales" +":doc:`pgr_dijkstraCost` - Obtener el costo agregado de las rutas más cortas." msgid "" -"The following query shows the original data involved in the contraction " -"operation." +":doc:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix." msgstr "" -"La siguiente consulta muestra los datos originales implicados en la " -"operación de contracción." - -msgid "The original graph:" -msgstr "El grafo original:" - -msgid "Contraction results" -msgstr "Resultados de la Contracción" +":doc:`pgr_dijkstraCostMatrix` - Usar pgr_dijkstra para crear una matriz de " +"costes." msgid "" -"The results do not represent the contracted graph. They represent the " -"changes done to the graph after applying the contraction algorithm." +":doc:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament " +"information." msgstr "" -"Los resultados no representan al grafo contraído. Representan los cambios " -"realizados en el grafo después de aplicar el algoritmo de contracción." +":doc:`pgr_drivingDistance` - Usar pgr_dijkstra para calcular información de " +"captación." msgid "" -"Observe that vertices, for example, :math:`6` do not appear in the results " -"because it was not affected by the contraction algorithm." +":doc:`pgr_KSP` - Use Yen algorithm with pgr_dijkstra to get the K shortest " +"paths." msgstr "" -"Observe que los vértices, por ejemplo, :math:`6` , no aparecen en los " -"resultados porque no se vieron afectados por el algoritmo de contracción." - -msgid "After doing the dead end contraction operation:" -msgstr "Después de realizar la operación de contracción sin salida:" - -msgid "After doing the linear contraction operation to the graph above:" -msgstr "Después de hacer la operación de contracción lineal al grafo anterior:" - -msgid "The process to create the contraction graph on the database:" -msgstr "El proceso para crear el grafo de contracción en la base de datos:" - -msgid "Add additional columns" -msgstr "Añadir columnas adicionales" +":doc:`pgr_KSP` - Usar el algoritmo Yen con pgr_dijkstra para obtener las K " +"rutas más cortas." -msgid "" -"Adding extra columns to the ``edge_table`` and ``edge_table_vertices_pgr`` " -"tables, where:" +msgid ":doc:`pgr_dijkstraVia` - Get a route of a sequence of vertices." msgstr "" -"Agregar de columnas adicionales a las tablas ``edge_table`` y " -"``edge_table_vertices_pgr`` donde:" - -msgid "``contracted_vertices``" -msgstr "``contracted_vertices``" - -msgid "The vertices set belonging to the vertex/edge" -msgstr "El conjunto de vértices que pertenecen al vértice/arista" - -msgid "``is_contracted``" -msgstr "``is_contracted``" +":doc:`pgr_dijkstraVia` - Obtener una ruta para una secuencia de vértices." -msgid "On the vertex table" -msgstr "En la tabla de vértices" +msgid ":doc:`pgr_dijkstraNear` - Get the route to the nearest vertex." +msgstr ":doc:`pgr_dijkstraNear` - Obtener la ruta al vértice más cercano." -msgid "" -"when ``true`` the vertex is contracted, its not part of the contracted graph." +msgid ":doc:`pgr_dijkstraNearCost` - Get the cost to the nearest vertex." msgstr "" -"En caso de ''true'' se contrae el vértice, no forma parte del grafo " -"contraído." +":doc:`pgr_dijkstraNearCost` - Consigue el costo del vértice más cercano." msgid "" -"when ``false`` the vertex is not contracted, its part of the contracted " -"graph." +"Dijkstra's algorithm, conceived by Dutch computer scientist Edsger Dijkstra " +"in 1956. It is a graph search algorithm that solves the shortest path " +"problem for a graph with non-negative edge path costs, producing a shortest " +"path from a starting vertex to an ending vertex. This implementation can be " +"used with a directed graph and an undirected graph." msgstr "" -"En caso de ''false'' el vértice no se contrae, su parte del grafo contraído." - -msgid "``is_new``" -msgstr "``is_new``" - -msgid "On the edge table" -msgstr "En la tabla de aristas" +"Algoritmo de Dijkstra, concebido por el informático holandés Edsger Dijkstra " +"en 1956. Es un algoritmo de búsqueda en grafos que resuelve el problema de " +"ruta más corta para un grafo con costos de aristas no negativos, produciendo " +"la ruta más corta desde un vértice inicial a un vértice final . Esta " +"implementación se puede utilizar con un grafos dirigidos y no dirigidos." -msgid "" -"when ``true`` the edge was generated by the contraction algorithm. its part " -"of the contracted graph." -msgstr "" -"En caso de `` true``, la arista se generó por el algoritmo de contracción. " -"Es parte del grafo contraído." +msgid "Running time: :math:`O(| start\\ vids | * (V \\log V + E))`" +msgstr "Tiempo de ejecución: :math:`O(| start\\_vids | * (V \\log V + E))`" -msgid "" -"when ``false`` the edge is an original edge, might be or not part of the " -"contracted graph." +msgid "The Dijkstra family functions are based on the Dijkstra algorithm." msgstr "" -"En caso de ``false`` , la arista es una arista original, podría ser o no " -"parte del grafo contraído." - -msgid "Store contraction information" -msgstr "Almacenar información de contracción" +"Las funciones de la familia de Dijkstra se basan en el algoritmo de Dijkstra." -msgid "Store the `contraction results`_ in a table" -msgstr "Almacenar los `resultados de la contracción`_ en una tabla" +msgid "`Combinations SQL`_" +msgstr "`SQL de combinaciones`_" -msgid "The vertex table update" -msgstr "Actualización de la tabla de vértices" +msgid "`Combinations SQL`_ as described below" +msgstr "`SQL de combinaciones`_ como se describe a abajo" -msgid "" -"Use ``is_contracted`` column to indicate the vertices that are contracted." -msgstr "" -"Usar la columna ``is_contracted`` para indicar los vértices contraídos." +msgid "**start vid**" +msgstr "**salida**" -msgid "" -"Fill ``contracted_vertices`` with the information from the results tha " -"belong to the vertices." -msgstr "" -"Lllena ``contracted_vertices`` con la información de los resultados que " -"pertenecen a los vértices." +msgid "Identifier of the starting vertex of the path." +msgstr "Identificador del vértice inicial de la ruta." -msgid "The modified vertices table:" -msgstr "La tabla de vértices modificada:" +msgid "**end vid**" +msgstr "**destino**" -msgid "The edge table update" -msgstr "Actialización de la tabla de aristas" +msgid "Identifier of the ending vertex of the path." +msgstr "Identificador del vértice final de la ruta." -msgid "Insert the new edges generated by pgr_contraction." -msgstr "Inserte las nuevas aristas generadas por pgr_contraction." +msgid "**end vids**" +msgstr "**destinos**" -msgid "The modified ``edge_table``." -msgstr "La modificada ``edge_table``." +msgid "Array of identifiers of ending vertices." +msgstr "Arreglo de identificadores de vértices finales." -msgid "The contracted graph" -msgstr "El grafo contraído" +msgid "Combinations SQL" +msgstr "SQL Combinaciones" -msgid "Vertices that belong to the contracted graph." -msgstr "Vértices que pertenecen al grafo contraído." +msgid "Identifier of the departure vertex." +msgstr "Identificador del vértice de partida." -msgid "Edges that belong to the contracted graph." -msgstr "Aristas que pertenecen al grafo contraído." +msgid "Identifier of the arrival vertex." +msgstr "Identificador del vértice de llegada." -msgid "Contracted graph" -msgstr "Grafo contraído" +msgid "The problem definition (Advanced documentation)" +msgstr "La definición de problema (Documentación avanzada)" -msgid "Using the contracted graph" -msgstr "Usando el grafo contraído" +msgid "Given the following query:" +msgstr "Dada la siguiente consulta:" -msgid "Using the contracted graph with ``pgr_dijkstra``" -msgstr "Uso del grafo contraído con ``pgr_dijkstra``" +msgid "pgr_dijkstra(:math:`sql, start_{vid}, end_{vid}, directed`)" +msgstr "pgr_dijkstra(:math:`sql, start_{vid}, end_{vid}, directed`)" msgid "" -"There are three cases when calculating the shortest path between a given " -"source and target in a contracted graph:" +"where :math:`sql = \\{(id_i, source_i, target_i, cost_i, reverse\\_cost_i)\\}" +"`" msgstr "" -"Hay tres casos al calcular la ruta más corta entre un origen y un destino " -"determinados en un grafo contraído:" - -msgid "Case 1: Both source and target belong to the contracted graph." -msgstr "Caso 1: Tanto el origen como el destino pertenecen al grafo contraído." - -msgid "Case 2: Source and/or target belong to an edge subgraph." -msgstr "Caso 2: El origen y/o el destino pertenecen a un subgrafo de aristas." +"Donde :math:`sql = \\{(id_i, source_i, target_i, cost_i, reverse\\_cost_i)\\}" +"`" -msgid "Case 3: Source and/or target belong to a vertex." -msgstr "Caso 3: El origen y/o el destino pertenecen a un vértice." +msgid "and" +msgstr "y" -msgid "" -"Using the `Edges that belong to the contracted graph.`_ on lines 11 to 20." -msgstr "" -"Usando las `Aristas que pertenecen al grafo contraído.`_ en las líneas 11 a " -"20." +msgid ":math:`source = \\bigcup source_i`," +msgstr ":math:`source = \\bigcup source_i`," -msgid "Case 1" -msgstr "Caso 1" +msgid ":math:`target = \\bigcup target_i`," +msgstr ":math:`target = \\bigcup target_i`," -msgid "" -"When both source and target belong to the contracted graph, a path is found." -msgstr "" -"Cuando el origen y el destino pertenecen al grafo contraído, se encuentra " -"ruta." +msgid "The graphs are defined as follows:" +msgstr "Los gráficos se definen como sigue:" -msgid "Case 2" -msgstr "Caso 2" +msgid "Directed graph" +msgstr "Grafo dirigido" -msgid "" -"When source and/or target belong to an edge subgraph then a path is not " -"found." -msgstr "" -"Cuando el origen y/o el destino pertenecen a un subgrafo de aristas, no se " -"encuentra una ruta." +msgid "The weighted directed graph, :math:`G_d(V,E)`, is defined by:" +msgstr "El ponderado del grafo dirigido, :math:`G_d(V,E)`, se define por:" -msgid "" -"In this case, the contracted graph do not have an edge connecting with node :" -"math:`4`." -msgstr "" -"En este caso, el grafo contraído no tiene una arista que se conecte con el " -"nodo :math:`4`." +msgid "the set of vertices :math:`V`" +msgstr "el conjunto de vértices :math:`V`" -msgid "Case 3" -msgstr "Caso 3" +msgid ":math:`V = source \\cup target \\cup {start_{vid}} \\cup {end_{vid}}`" +msgstr ":math:`V = source \\cup target \\cup {start_{vid}} \\cup {end_{vid}}`" -msgid "When source and/or target belong to a vertex then a path is not found." -msgstr "" -"Cuando el origen y/o el destino pertenecen a un vértice, no se encuentra " -"ruta." +msgid "the set of edges :math:`E`" +msgstr "El conjunto de aristas :math:`E`" msgid "" -"In this case, the contracted graph do not have an edge connecting with node :" -"math:`7` and of node :math:`4` of the second case." +":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) " +"\\text{ when } cost >=0 \\} & \\quad \\text{if } reverse\\_cost = " +"\\varnothing \\\\ \\text{ } \\text{ } & \\quad \\text{ } \\\\ \\text{ } " +"\\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & \\quad " +"\\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) " +"\\text{ when } reverse\\_cost_i>=0 \\} & \\quad \\text{if } reverse\\_cost " +"\\neq \\varnothing \\\\ \\end{cases}`" msgstr "" -"En este caso, el grafo contraído no tiene algún arista que conecte con el " -"nodo :math:`7` ni con el nodo :math:`4` del segundo caso." +":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) " +"\\text{ when } cost >=0 \\} & \\quad \\text{if } reverse\\_cost = " +"\\varnothing \\\\ \\text{ } \\text{ } & \\quad \\text{ } \\\\ \\text{ } " +"\\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & \\quad " +"\\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) " +"\\text{ when } reverse\\_cost_i>=0 \\} & \\quad \\text{if } reverse\\_cost " +"\\neq \\varnothing \\\\ \\end{cases}`" -msgid "Refining the above function to include nodes that belong to an edge." -msgstr "" -"Refinar la función anterior para incluir nodos que pertenezcan a una arista." +msgid "Undirected graph" +msgstr "Grafo no dirigido" -msgid "The vertices that need to be expanded are calculated on lines 11 to 17." -msgstr "Los vértices que deben ampliarse se calculan en las líneas 11 a 17." +msgid "The weighted undirected graph, :math:`G_u(V,E)`, is defined by:" +msgstr "El grafo ponderado no dirigido, :math:`G_u(V,E)`, es definido por:" -msgid "" -"Adding to the contracted graph that additional section on lines 26 to 28." -msgstr "" -"Añadiendo al grafo contraído esa sección adicional en las líneas 26 a 28." +msgid ":math:`V = source \\cup target \\cup {start_v{vid}} \\cup {end_{vid}}`" +msgstr ":math:`V = source \\cup target \\cup {start_v{vid}} \\cup {end_{vid}}`" msgid "" -"When source and/or target belong to an edge subgraph, now, a path is found." +":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) " +"\\text{ when } cost >=0 \\} & \\quad \\text{ } \\\\ \\cup \\{(target_i, " +"source_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ if } " +"reverse\\_cost = \\varnothing \\\\ \\text{ } \\text{ } & \\text{ } \\\\ " +"\\text{ } \\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & " +"\\text{ } \\\\ \\cup \\{(target_i, source_i, cost_i) \\text{ when } cost >=0 " +"\\} & \\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) " +"\\text{ when } reverse\\_cost_i >=0)\\} & \\text{ } \\\\ \\cup \\{(source_i, " +"target_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i >=0)\\} & \\quad " +"\\text{ if } reverse\\_cost \\neq \\varnothing \\\\ \\end{cases}`" msgstr "" -"Cuando el origen y/o el destino pertenecen a un subgrafo de arista, entonces " -"se encuentra una ruta." +":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) " +"\\text{ when } cost >=0 \\} & \\quad \\text{ } \\\\ \\cup \\{(target_i, " +"source_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ if } " +"reverse\\_cost = \\varnothing \\\\ \\text{ } \\text{ } & \\text{ } \\\\ " +"\\text{ } \\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & " +"\\text{ } \\\\ \\cup \\{(target_i, source_i, cost_i) \\text{ when } cost >=0 " +"\\} & \\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) " +"\\text{ when } reverse\\_cost_i >=0)\\} & \\text{ } \\\\ \\cup \\{(source_i, " +"target_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i >=0)\\} & \\quad " +"\\text{ if } reverse\\_cost \\neq \\varnothing \\\\ \\end{cases}`" -msgid "The routing graph now has an edge connecting with node :math:`4`." -msgstr "" -"El grafo de ruteo ahora tiene un arista que se conecta con el nodo :math:`4`." +msgid "The problem" +msgstr "El problema" -msgid "" -"In this case, the contracted graph do not have an edge connecting with node :" -"math:`7`." -msgstr "" -"En este caso, el grafo contraído no tiene una arista que se conecte con el " -"nodo :math:`7`." +msgid "Given:" +msgstr "Dado:" -msgid "The vertices that need to be expanded are calculated on lines 19 to 24." -msgstr "Los vértices que deben ampliarse se calculan en las líneas 19 a 24." +msgid ":math:`start_{vid} \\in V` a starting vertex" +msgstr ":math:`start_{vid} \\in V` un vértice inicial" -msgid "" -"Adding to the contracted graph that additional section on lines 38 to 40." -msgstr "" -"Añadiendo al grafo contraído esa sección adicional en las líneas 38 a 40." +msgid ":math:`end_{vid} \\in V` an ending vertex" +msgstr ":math:`end_{vid} \\in V` un vértice final" msgid "" -"The code change do not affect this case so when source and/or target belong " -"to an edge subgraph, a path is still found." -msgstr "" -"El cambio de código no afecta a este caso, por lo que cuando el origen o el " -"destino pertenecen a un subgrafo de aristas, aún se puede encontrar ruta." - -msgid "When source and/or target belong to a vertex, now, a path is found." -msgstr "" -"Cuando el origen y/o el destino pertenecen a un vértice, entonces se " -"encuentra ruta." - -msgid "Now, the routing graph has an edge connecting with node :math:`7`." +":math:`G(V,E) = \\begin{cases} G_d(V,E) & \\quad \\text{ if6 } directed = " +"true \\\\ G_u(V,E) & \\quad \\text{ if5 } directed = false \\\\ \\end{cases}`" msgstr "" -"Ahora, el grafo de ruteo tiene un arista que se conecta con el nodo :math:" -"`7`." +":math:`G(V,E) = \\begin{cases} G_d(V,E) & \\quad \\text{ if6 } directed = " +"true \\\\ G_u(V,E) & \\quad \\text{ if5 } directed = false \\\\ \\end{cases}`" -msgid ":doc:`sampledata`" -msgstr ":doc:`sampledata`" +msgid "Then:" +msgstr "Entonces:" msgid "" -"https://www.cs.cmu.edu/afs/cs/academic/class/15210-f12/www/lectures/" -"lecture16.pdf" +":math:`\\boldsymbol{\\pi} = \\{(path\\_seq_i, node_i, edge_i, cost_i, " +"agg\\_cost_i)\\}`" msgstr "" -"https://www.cs.cmu.edu/afs/cs/academic/class/15210-f12/www/lectures/" -"lecture16.pdf" +":math:`\\boldsymbol{\\pi} = \\{(path\\_seq_i, node_i, edge_i, cost_i, " +"agg\\_cost_i)\\}`" -msgid "https://algo2.iti.kit.edu/documents/routeplanning/geisberger_dipl.pdf" -msgstr "https://algo2.iti.kit.edu/documents/routeplanning/geisberger_dipl.pdf" +msgid "where:" +msgstr "donde:" -msgid "Cost - Category" -msgstr "Costo - Categoría" +msgid ":math:`path\\_seq_i = i`" +msgstr ":math:`path\\_seq_i = i`" -msgid ":doc:`pgr_aStarCost`" -msgstr ":doc:`pgr_aStarCost`" +msgid ":math:`path\\_seq_{| \\pi |} = | \\pi |`" +msgstr ":math:`path\\_seq_{| \\pi |} = | \\pi |`" -msgid ":doc:`pgr_bdAstarCost`" -msgstr ":doc:`pgr_bdAstarCost`" +msgid ":math:`node_i \\in V`" +msgstr ":math:`node_i \\in V`" -msgid ":doc:`pgr_dijkstraCost`" -msgstr ":doc:`pgr_dijkstraCost`" +msgid ":math:`node_1 = start_{vid}`" +msgstr ":math:`node_1 = start_{vid}`" -msgid ":doc:`pgr_bdDijkstraCost`" -msgstr ":doc:`pgr_bdDijkstraCost`" +msgid ":math:`node_{| \\pi |} = end_{vid}`" +msgstr ":math:`node_{| \\pi |} = end_{vid}`" -msgid ":doc:`pgr_dijkstraNearCost`" -msgstr ":doc:`pgr_dijkstraNearCost`" +msgid "" +":math:`\\forall i \\neq | \\pi |, \\quad (node_i, node_{i+1}, cost_i) \\in E`" +msgstr "" +":math:`\\forall i \\neq | \\pi |, \\quad (node_i, node_{i+1}, cost_i) \\in E`" -msgid ":doc:`pgr_withPointsCost`" -msgstr ":doc:`pgr_withPointsCost`" +msgid "" +":math:`edge_i = \\begin{cases} id_{(node_i, node_{i+1},cost_i)} &\\quad " +"\\text{when } i \\neq | \\pi | \\\\ -1 &\\quad \\text{when } i = | \\pi | \\" +"\\ \\end{cases}`" +msgstr "" +":math:`edge_i = \\begin{cases} id_{(node_i, node_{i+1},cost_i)} &\\quad " +"\\text{when } i \\neq | \\pi | \\\\ -1 &\\quad \\text{when } i = | \\pi | \\" +"\\ \\end{cases}`" -msgid "Each function works as part of the family it belongs to." -msgstr "Cada función funciona como parte de la familia a la que pertenece." +msgid ":math:`cost_i = cost_{(node_i, node_{i+1})}`" +msgstr ":math:`cost_i = cost_{(node_i, node_{i+1})}`" msgid "" -"Returns the sum of the costs of the shortest path of each pair combination " -"of nodes requested." +":math:`agg\\_cost_i = \\begin{cases} 0 &\\quad \\text{when } i = 1 \\" +"\\ \\displaystyle\\sum_{k=1}^{i} cost_{(node_{k-1}, node_k)} &\\quad " +"\\text{when } i \\neq 1 \\\\ \\end{cases}`" msgstr "" -"Devuelve la suma de los costos de la ruta más corta para cada par de " -"combinación de nodos requeridos." +":math:`agg\\_cost_i = \\begin{cases} 0 &\\quad \\text{when } i = 1 \\\\ " +"\\displaystyle\\sum_{k=1}^{i} cost_{(node_{k-1}, node_k)} &\\quad " +"\\text{when } i \\neq 1 \\\\ \\end{cases}`" msgid "" -"Let be the case the values returned are stored in a table, so the unique " -"index would be the pair: ``(start_vid, end_vid)``." +"In other words: The algorithm returns a the shortest path between :math:" +"`start_{vid}` and :math:`end_{vid}`, if it exists, in terms of a sequence of " +"nodes and of edges," msgstr "" -"Sea el caso que los valores devueltos se almacenen en una tabla, el índice " -"único sería el par: `(start_vid, end_vid)`." +"En otras palabras: El algoritmo devuelve la ruta más corta entre :math:" +"`start_{vid}` y :math:`end_{vid}`, si es que existe, en términos de una " +"secuencia de nodos y de aristas," msgid "" -"Depending on the function and its parameters, the results can be symmetric." +":math:`path\\_seq` indicates the relative position in the path of the :math:" +"`node` or :math:`edge`." msgstr "" -"Dependiendo de la función y sus parámetros, los resultados pueden ser " -"simétricos." +":math:`path\\_seq` indica la posición relativa en el camino de :math:`node` " +"o :math:`edge`." -msgid "" -"The **aggregate cost** of :math:`(u, v)` is the same as for :math:`(v, u)`." +msgid ":math:`cost` is the cost of the edge to be used to go to the next node." msgstr "" -"El **costo agregado** de :math:`(u, v)` es el mismo que para :math:`(v, u)`." +":math:`cost` es el coste del borde que se utilizará para ir al siguiente " +"nodo." msgid "" -"Any duplicated value in the start or end vertex identifiers are ignored." +":math:`agg\\_cost` is the cost from the :math:`start_{vid}` up to the node." msgstr "" -"Se omite cualquier valor duplicado en los identificadores de vertices de " -"inicio y destino." - -msgid "The returned values are ordered:" -msgstr "Los valores regresados se ordenan:" +":math:`agg\\_cost` es el costo desde el :math:`start_{vid}` hasta el nodo." -msgid "``start_vid`` ascending" -msgstr "``start_vid`` ascendente" +msgid "If there is no path, the resulting set is empty." +msgstr "Si no hay ruta, el conjunto resultante estará vacío." -msgid "``end_vid`` ascending" -msgstr "``end_vid`` ascendente" +msgid "Driving Distance - Category" +msgstr "Distancia Manejando - Categoría" -msgid "Cost Matrix - Category" -msgstr "Cost Matrix - Categoría" +msgid "" +":doc:`pgr_drivingDistance` - Driving Distance based on Dijkstra's algorithm" +msgstr "" +":doc:`pgr_drivingDistance` - Distancia de Manejo basada en el algoritmo de " +"Dijkstra" -msgid ":doc:`pgr_aStarCostMatrix`" -msgstr ":doc:`pgr_aStarCostMatrix`" +msgid ":doc:`pgr_primDD` - Driving Distance based on Prim's algorithm" +msgstr ":doc:`pgr_primDD` - Distancia de manejo basada en el algoritmo de Prim" -msgid ":doc:`pgr_dijkstraCostMatrix`" -msgstr ":doc:`pgr_dijkstraCostMatrix`" +msgid ":doc:`pgr_kruskalDD` - Driving Distance based on Kruskal's algorithm" +msgstr "" +":doc:`pgr_kruskalDD` - Distancia de Manejo basada en el algoritmo de Kruskal" -msgid ":doc:`pgr_bdAstarCostMatrix`" -msgstr ":doc:`pgr_bdAstarCostMatrix`" +msgid "Post processing" +msgstr "Post procesamiento" -msgid ":doc:`pgr_bdDijkstraCostMatrix`" -msgstr ":doc:`pgr_bdDijkstraCostMatrix`" +msgid ":doc:`pgr_alphaShape` - Alpha shape computation" +msgstr ":doc:`pgr_alphaShape` - Cálcular la forma Alpha" -msgid "proposed" -msgstr "propuesta" +msgid ":doc:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints" +msgstr ":doc:`pgr_withPointsDD` - Distancia Manejando basada en pgr_withPoints" -msgid ":doc:`pgr_withPointsCostMatrix`" -msgstr ":doc:`pgr_withPointsCostMatrix`" +msgid "Calculate nodes that are within a distance." +msgstr "Calcular nodos que están dentro de una distancia." msgid "" -":doc:`TSP-family` needs as input a symmetric cost matrix and no edge `(u, " -"v)` must value :math:`\\infty`." +"Extracts all the nodes that have costs less than or equal to the value " +"distance." msgstr "" -":doc:`TSP-family` necesita como entrada una matriz de costos simétrica y sin " -"borde `(u, v)`, debe valorar :math:`\\infty`." +"Extrae todos los nodos que tienen costos menor o igual al valor de la " +"distancia." -msgid "" -"This collection of functions will return a cost matrix in form of a table." +msgid "The edges extracted will conform to the corresponding spanning tree." msgstr "" -"Esta colección de funciones devolverá una matriz de costes en forma de tabla." +"Las aristas extraídas conformarán el correspondiente árbol de expansión." -msgid "Can be used as input to :doc:`pgr_TSP`." -msgstr "Se puede utilizar como entrada para :doc:`pgr_TSP`." +msgid "Edge :math:`(u, v)` will not be included when:" +msgstr "Arista :math:`(u, v)` no se incluye cuando:" -msgid "" -"Use directly when the resulting matrix is symmetric and there is no :math:" -"`\\infty` value." -msgstr "" -"Usar directamente cuando la matriz resultante es simétrica y no hay valor :" -"math:`\\infty`." +msgid "The distance from the **root** to :math:`u` > limit distance." +msgstr "La distancia de la **raiz** a:math:`u` > límite de la distancia." -msgid "It will be the users responsibility to make the matrix symmetric." -msgstr "Es responsabilidad dels usuario hacer que la matriz sea simétrica." +msgid "The distance from the **root** to :math:`v` > limit distance." +msgstr "La distancia de la **raiz** a :math:`v` > límite de la distancia." -msgid "By using geometric or harmonic average of the non symmetric values." +msgid "" +"No new nodes are created on the graph, so when is within the limit and is " +"not within the limit, the edge is not included." msgstr "" -"Mediante el uso de la media geométrica o armónica de los valores no " -"simétricos." +"No se crean nuevos nodos en el grafo, por lo que cuando el vértice está " +"dentro de los límites y parte de la arista no está dentro de los límites, la " +"arsta no se incluye." -msgid "By using max or min the non symmetric values." -msgstr "Mediante el uso de max o min, los valores no simétricos." +msgid "Edges SQL as described below." +msgstr "SQL de aristas como se describen abajo." -msgid "" -"By setting the upper triangle to be the mirror image of the lower triangle." -msgstr "" -"Estableciendo el triángulo superior para que sea la imagen reflejada del " -"triángulo inferior." +msgid "**Root vid**" +msgstr "**Raíz**" -msgid "" -"By setting the lower triangle to be the mirror image of the upper triangle." -msgstr "" -"Estableciendo el triángulo inferior para que sea la imagen reflejada del " -"triángulo superior." +msgid "**Root vids**" +msgstr "**Raíces**" -msgid "It is also the users responsibility to fix an :math:`\\infty` value." -msgstr "" -"También es responsabilidad de los usuarios para fijar un valor :math:" -"`\\infty`." +msgid "``ARRAY[ANY-INTEGER]``" +msgstr "``ARREGLO[ENTEROS]``" -msgid "" -"Returns the sum of the costs of the shortest path for pair combination of " -"nodes in the graph." -msgstr "" -"Devuelve la suma de los costos de la ruta más corta para la combinación de " -"pares de nodos en el grafo." +msgid "**distance**" +msgstr "**distancia**" -msgid "" -"When the starting vertex and ending vertex are the same, there is no path." -msgstr "" -"Cuando el vértice inicial y el vértice final son iguales, no hay camino." +msgid "Upper limit for the inclusion of a node in the result." +msgstr "Límite superior para la inclusión del nodo en el resultado." -msgid "The aggregate cost in the non included values `(v, v)` is `0`." -msgstr "El costo agregado de los valores no incluídos `(v, v)` es `0`." +msgid "Returns set of |result-spantree|" +msgstr "Regresa el conjunto de |result-spantree|" -msgid "" -"When the starting vertex and ending vertex are the different and there is no " -"path." -msgstr "" -"Cuando el vértice inicial y el vértice final son diferentes y no hay ruta." - -msgid "" -"The aggregate cost in the non included values `(u, v)` is :math:`\\infty`." -msgstr "" -"El costo agregado de los valores no incluídos ``(u, v)`` es :math: `\\infty`." +msgid ":math:`depth-1` is the depth of ``pred``" +msgstr ":math:`depth-1` es la profundidad de ``pred``" -msgid "Let be the case the values returned are stored in a table:" -msgstr "Sea el caso, los valores devueltos se almacenan en una tabla:" +msgid "``pred``" +msgstr "``pred``" -msgid "The unique index would be the pair: ``(start_vid, end_vid)``." -msgstr "El índice único es el par: ``(start_vid, end_vid)``." +msgid "Predecessor of ``node``." +msgstr "Presdecesor de ``node``." -msgid "The aggregate cost of `(u, v)` is the same as for `(v, u)`." -msgstr "El costo agregado de `(u, v)` es el mismo que para `(v, u)`." +msgid "When ``node`` = ``start_vid`` then has the value ``node``." +msgstr "Cuando ``node`` = ``start_vid`` entonces tiene el valor ``node``." -msgid "Any duplicated value in the **start vids** are ignored." -msgstr "Se omite cualquier valor duplicado en las **salidas**." +msgid "Identifier of the ``edge`` used to arrive from ``pred`` to ``node``." +msgstr "" +"Identificador del ``edge`` utilizado para llegar desde ``pred`` hasta " +"``node``." -msgid "Used in:" -msgstr "Usado en:" +msgid "Experimental Functions" +msgstr "Funciones Experimentales" -msgid "`Edges SQL`_ as described below" -msgstr "`SQL de aristas`_ como se describe a continuación" +msgid "Families" +msgstr "Familias" -msgid "**start vids**" -msgstr "**salidas**" +msgid ":doc:`flow-family`" +msgstr ":doc:`flow-family`" -msgid "``ARRAY[BIGINT]``" -msgstr "``ARRAY[BIGINT]``" +msgid ":doc:`pgr_maxFlowMinCost` - Details of flow and cost on edges." +msgstr "" +":doc:`pgr_maxFlowMinCost` - Detalles del flujo y el coste en los bordes." -msgid "Array of identifiers of starting vertices." -msgstr "Arreglo de identificadores de vértices iniciales." +msgid ":doc:`pgr_maxFlowMinCost_Cost` - Only the Min Cost calculation." +msgstr ":doc:`pgr_maxFlowMinCost_Cost` - Solo el cálculo del Coste Mínimo." -msgid "`Points SQL`_" -msgstr "`SQL de puntos`_" +msgid ":doc:`chinesePostmanProblem-family`" +msgstr ":doc:`chinesePostmanProblem-family`" -msgid "`Points SQL`_ as described below" -msgstr "`SQL de puntos`_ como se describe abajo" +msgid ":doc:`coloring-family`" +msgstr ":doc:`coloring-family`" -msgid "Points SQL" -msgstr "SQL de puntos" +msgid ":doc:`transformation-family`" +msgstr ":doc:`transformation-family`" -msgid "``pid``" -msgstr "``pid``" +msgid "" +":doc:`pgr_lineGraphFull` - Transformation algorithm for generating a Line " +"Graph out of each vertex in the input graph." +msgstr "" +":doc:`pgr_lineGraphFull` - Algoritmo de transformación para generar un grafo " +"de líneas a partir de cada vértice en el grafo de entrada." -msgid "**value**" -msgstr "**valor**" +msgid ":doc:`traversal-family`" +msgstr ":doc:`traversal-family`" -msgid "Identifier of the point." -msgstr "Identificador del punto." +msgid "" +":doc:`pgr_breadthFirstSearch` - Breath first search traversal of the graph." +msgstr "" +":doc:`pgr_breadthFirstSearch` - Recorrido de búsqueda en anchura del grafo." msgid "" -"Use with positive value, as internally will be converted to negative value" +":doc:`pgr_binaryBreadthFirstSearch` - Breath first search traversal of the " +"graph." msgstr "" -"Use con un valor positivo, dado que internamente se convertirá a un valor " -"negativo" +":doc:`pgr_binaryBreadthFirstSearch` - Recorrido de búsqueda en anchura del " +"grafo." -msgid "If column is present, it can not be NULL." -msgstr "Si columna esta presente, no puede ser NULL." +msgid ":doc:`components-family`" +msgstr ":doc:`components-family`" + +msgid ":doc:`ordering-family`" +msgstr ":doc:`ordering-family`" msgid "" -"If column is not present, a sequential negative **value** will be given " -"automatically." +":doc:`pgr_cuthillMckeeOrdering` - Return reverse Cuthill-McKee ordering of " +"an undirected graph." msgstr "" -"Si columna no esta presente, un **valor** secuencial negativo se otorgará " -"automáticamente." +":doc:`pgr_cuthillMckeeOrdering` - Ordenamiento Cuthill-McKee de grafo sin no " +"dirigido." -msgid "Identifier of the \"closest\" edge to the point." -msgstr "Identificador de la arista \"más cercana\" al punto." +msgid "" +":doc:`pgr_topologicalSort` - Linear ordering of the vertices for directed " +"acyclic graph." +msgstr "" +":doc:`pgr_topologicalSort` - Orden lineal de los vértices para grafos " +"acíclicos dirigidos." -msgid "``fraction``" -msgstr "``fraction``" +msgid ":doc:`metrics-family`" +msgstr ":doc:`metrics-family`" msgid "" -"Value in <0,1> that indicates the relative postition from the first end " -"point of the edge." +":doc:`pgr_betweennessCentrality` - Calculates relative betweenness " +"centrality using Brandes Algorithm" msgstr "" -"El valor en <0,1> que indica la posición relativa desde el primer punto de " -"la arista." +":doc:`pgr_betweennessCentrality` - Calcula la centralidad intermedia " +"relativa mediante el algoritmo de Brandes" -msgid "``side``" -msgstr "``side``" +msgid ":doc:`TRSP-family`" +msgstr ":doc:`TRSP-family`" -msgid "``CHAR``" -msgstr "``CHAR``" +msgid "categories" +msgstr "Categorías" -msgid "``b``" -msgstr "``b``" +msgid ":doc:`VRP-category`" +msgstr ":doc:`VRP-category`" -msgid "Value in [``b``, ``r``, ``l``, ``NULL``] indicating if the point is:" -msgstr "Valor en [``b``, ``r``, ``l``, ``NULL``] que indica si el punto es:" +msgid "Shortest Path Category" +msgstr "Rutas más cortas Categoría" -msgid "In the right ``r``," -msgstr "A la derecha ``r``," +msgid ":doc:`pgr_bellmanFord`" +msgstr ":doc:`pgr_bellmanFord`" -msgid "In the left ``l``," -msgstr "A la izquierda `l`," +msgid ":doc:`pgr_dagShortestPath`" +msgstr ":doc:`pgr_dagShortestPath`" -msgid "In both sides ``b``, ``NULL``" -msgstr "En ambos lados ``b``, ``NULL``" +msgid ":doc:`pgr_edwardMoore`" +msgstr ":doc:`pgr_edwardMoore`" -msgid ":doc:`TSP-family`" -msgstr ":doc:`TSP-family`" +msgid "Planar Family" +msgstr "Familia Planar" -msgid "Dijkstra - Family of functions" -msgstr "Dijkstra - Familia de funciones" +msgid ":doc:`pgr_isPlanar`" +msgstr ":doc:`pgr_isPlanar`" -msgid ":doc:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths." -msgstr ":doc:`pgr_dijkstra` - Algoritmo de Dijkstra para las rutas más cortas." +msgid "Miscellaneous Algorithms" +msgstr "Algoritmos Diversos" -msgid ":doc:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths." -msgstr "" -":doc:`pgr_dijkstraCost` - Obtener el costo agregado de las rutas más cortas." +msgid ":doc:`pgr_lengauerTarjanDominatorTree`" +msgstr ":doc:`pgr_lengauerTarjanDominatorTree`" + +msgid ":doc:`pgr_stoerWagner`" +msgstr ":doc:`pgr_stoerWagner`" + +msgid ":doc:`pgr_transitiveClosure`" +msgstr ":doc:`pgr_transitiveClosure`" + +msgid ":doc:`pgr_hawickCircuits`" +msgstr ":doc:`pgr_hawickCircuits`" + +msgid "Flow - Family of functions" +msgstr "Flow - Familia de funciones" msgid "" -":doc:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix." +":doc:`pgr_maxFlow` - Only the Max flow calculation using Push and Relabel " +"algorithm." msgstr "" -":doc:`pgr_dijkstraCostMatrix` - Usar pgr_dijkstra para crear una matriz de " -"costes." +":doc:`pgr_maxFlow` - Solo el flujo máximo se calcula usando el algoritmo " +"empuja y reetiquetado." msgid "" -":doc:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament " -"information." +":doc:`pgr_boykovKolmogorov` - Boykov and Kolmogorov with details of flow on " +"edges." msgstr "" -":doc:`pgr_drivingDistance` - Usar pgr_dijkstra para calcular información de " -"captación." +":doc:`pgr_boykovKolmogorov` - Algoritmo Boykov y Kolmogorov con detalles del " +"flujo en aristas." msgid "" -":doc:`pgr_KSP` - Use Yen algorithm with pgr_dijkstra to get the K shortest " -"paths." +":doc:`pgr_edmondsKarp` - Edmonds and Karp algorithm with details of flow on " +"edges." msgstr "" -":doc:`pgr_KSP` - Usar el algoritmo Yen con pgr_dijkstra para obtener las K " -"rutas más cortas." +":doc:`pgr_edmondsKarp` - Algoritmo Edmonds y Karp con detalles de flujo del " +"flujo en aristas." -msgid ":doc:`pgr_dijkstraVia` - Get a route of a seuence of vertices." +msgid "" +":doc:`pgr_pushRelabel` - Push and relabel algorithm with details of flow on " +"edges." msgstr "" -":doc:`pgr_dijkstraVia` - Obtenga una ruta a partir de una secuencia de " -"vértices." +":doc:`pgr_pushRelabel` - Algoritmo empuja y reetiquetado con detalles del " +"flujo en aristas." -msgid ":doc:`pgr_dijkstraNear` - Get the route to the nearest vertex." -msgstr ":doc:`pgr_dijkstraNear` - Obtener la ruta al vértice más cercano." +msgid "Applications" +msgstr "Aplicaciones" -msgid ":doc:`pgr_dijkstraNearCost` - Get the cost to the nearest vertex." +msgid "" +":doc:`pgr_edgeDisjointPaths` - Calculates edge disjoint paths between two " +"groups of vertices." msgstr "" -":doc:`pgr_dijkstraNearCost` - Consigue el costo del vértice más cercano." +":doc:`pgr_edgeDisjointPaths` - Calcula rutas de aristas disjuntas entre dos " +"grupos de vértices." msgid "" -"Dijkstra's algorithm, conceived by Dutch computer scientist Edsger Dijkstra " -"in 1956. It is a graph search algorithm that solves the shortest path " -"problem for a graph with non-negative edge path costs, producing a shortest " -"path from a starting vertex to an ending vertex. This implementation can be " -"used with a directed graph and an undirected graph." +":doc:`pgr_maxCardinalityMatch` - Calculates a maximum cardinality matching " +"in a graph." msgstr "" -"Algoritmo de Dijkstra, concebido por el informático holandés Edsger Dijkstra " -"en 1956. Es un algoritmo de búsqueda en grafos que resuelve el problema de " -"ruta más corta para un grafo con costos de aristas no negativos, produciendo " -"la ruta más corta desde un vértice inicial a un vértice final . Esta " -"implementación se puede utilizar con un grafos dirigidos y no dirigidos." +":doc:`pgr_maxCardinalityMatch` - Calcular una cardinalidad máxima de " +"coincidencia dentro de un grafo." -msgid "Running time: :math:`O(| start\\ vids | * (V \\log V + E))`" -msgstr "Tiempo de ejecución: :math:`O(| start\\_vids | * (V \\log V + E))`" +msgid "Flow Functions General Information" +msgstr "Información General de las Funciones de Flujo" -msgid "The Dijkstra family functions are based on the Dijkstra algorithm." -msgstr "" -"Las funciones de la familia de Dijkstra se basan en el algoritmo de Dijkstra." +msgid "The graph is **directed**." +msgstr "El grafo es **dirigido**." -msgid "`Combinations SQL`_" -msgstr "`SQL de combinaciones`_" +msgid "Process is done only on edges with positive capacities." +msgstr "El proceso se realiza sólo en aristas con capacidades positivas." -msgid "`Combinations SQL`_ as described below" -msgstr "`SQL de combinaciones`_ como se describe a abajo" +msgid "" +"When the maximum flow is 0 then there is no flow and **EMPTY SET** is " +"returned." +msgstr "" +"Cuando el flujo máximo es 0 entonces no hay flujo, se devolverá: **EMPTY " +"SET**." -msgid "**start vid**" -msgstr "**salida**" +msgid "There is no flow when source has the same value as target." +msgstr "No hay flujo cuando el origen tiene el mismo valor que el destino." -msgid "Identifier of the starting vertex of the path." -msgstr "Identificador del vértice inicial de la ruta." +msgid "Any duplicated values in source or target are ignored." +msgstr "Los valores duplicados en origen o destino se ignoran." -msgid "**end vid**" -msgstr "**destino**" +msgid "Calculates the flow/residual capacity for each edge. In the output" +msgstr "Calcula la capacidad de flujo/residuo para cada arista. En la salida" -msgid "Identifier of the ending vertex of the path." -msgstr "Identificador del vértice final de la ruta." - -msgid "**end vids**" -msgstr "**destinos**" - -msgid "Array of identifiers of ending vertices." -msgstr "Arreglo de identificadores de vértices finales." +msgid "Edges with zero flow are omitted." +msgstr "Se omiten las aristas con flujo cero." -msgid "Combinations SQL" -msgstr "SQL Combinaciones" +msgid "Creates" +msgstr "Crea" -msgid "Identifier of the departure vertex." -msgstr "Identificador del vértice de partida." +msgid "a **super source** and edges from it to all the sources," +msgstr "una **super fuente** y aristas desde ella a todas las fuentes," -msgid "Identifier of the arrival vertex." -msgstr "Identificador del vértice de llegada." +msgid "a **super target** and edges from it to all the targetss." +msgstr "un **super objetivo** y aristas desde él a todos los objetivos." -msgid "The problem definition (Advanced documentation)" -msgstr "La definición de problema (Documentación avanzada)" +msgid "" +"The maximum flow through the graph is guaranteed to be the value returned " +"by :doc:`pgr_maxFlow ` when executed with the same parameters " +"and can be calculated:" +msgstr "" +"Se garantiza que el flujo máximo a través del grafo es el valor devuelto " +"por :doc:`pgr_maxFlow ` cuando es ejecutado con los mismos " +"parámetros y se puede calcular:" -msgid "Given the following query:" -msgstr "Dada la siguiente consulta:" +msgid "By aggregation of the outgoing flow from the sources" +msgstr "Mediante la suma de los flujos salientes de las fuentes" -msgid "pgr_dijkstra(:math:`sql, start_{vid}, end_{vid}, directed`)" -msgstr "pgr_dijkstra(:math:`sql, start_{vid}, end_{vid}, directed`)" +msgid "By aggregation of the incoming flow to the targets" +msgstr "Mediante la suma de los flujos llegantes a los destinos" msgid "" -"where :math:`sql = \\{(id_i, source_i, target_i, cost_i, reverse\\_cost_i)\\}" -"`" +":doc:`pgr_maxFlow` is the maximum Flow and that maximum is guaranteed to be " +"the same on the functions :doc:`pgr_pushRelabel`, :doc:`pgr_edmondsKarp`, :" +"doc:`pgr_boykovKolmogorov`, but the actual flow through each edge may vary." msgstr "" -"Donde :math:`sql = \\{(id_i, source_i, target_i, cost_i, reverse\\_cost_i)\\}" -"`" +":doc:`pgr_maxFlow` es el flujo máximo y este máximo tiene garantía de ser el " +"mismo en las funciones :doc:`pgr_pushRelabel`, :doc:`pgr_edmondsKarp`, :doc:" +"`pgr_boykovKolmogorov`, pero el flujo actual para cada arista puede variar." -msgid "and" -msgstr "y" +msgid "Capacity edges" +msgstr "Aristas de capacidad" -msgid ":math:`source = \\bigcup source_i`," -msgstr ":math:`source = \\bigcup source_i`," +msgid ":doc:`pgr_pushRelabel`" +msgstr ":doc:`pgr_pushRelabel`" -msgid ":math:`target = \\bigcup target_i`," -msgstr ":math:`target = \\bigcup target_i`," +msgid ":doc:`pgr_edmondsKarp`" +msgstr ":doc:`pgr_edmondsKarp`" -msgid "The graphs are defined as follows:" -msgstr "Los gráficos se definen como sigue:" +msgid ":doc:`pgr_boykovKolmogorov`" +msgstr ":doc:`pgr_boykovKolmogorov`" -msgid "Directed graph" -msgstr "Grafo dirigido" +msgid "``reverse_capacity``" +msgstr "``reverse_capacity``" -msgid "The weighted directed graph, :math:`G_d(V,E)`, is definied by:" -msgstr "El gráfico dirigido ponderado, :math:`G_d(V,E)`, se define por:" +msgid "Capacity-Cost edges" +msgstr "Aristas Capacidad-Costo" -msgid "the set of vertices :math:`V`" -msgstr "el conjunto de vértices :math:`V`" +msgid ":doc:`pgr_maxFlowMinCost`" +msgstr ":doc:`pgr_maxFlowMinCost`" -msgid ":math:`V = source \\cup target \\cup {start_{vid}} \\cup {end_{vid}}`" -msgstr ":math:`V = source \\cup target \\cup {start_{vid}} \\cup {end_{vid}}`" +msgid ":doc:`pgr_maxFlowMinCost_Cost`" +msgstr ":doc:`pgr_maxFlowMinCost_Cost`" -msgid "the set of edges :math:`E`" -msgstr "El conjunto de aristas :math:`E`" +msgid "Capacity of the edge (``source``, ``target``)" +msgstr "Capacidad de la arista (``source``, ``target``)" -msgid "" -":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) " -"\\text{ when } cost >=0 \\} & \\quad \\text{if } reverse\\_cost = " -"\\varnothing \\\\ \\text{ } \\text{ } & \\quad \\text{ } \\\\ \\text{ } " -"\\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & \\quad " -"\\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) " -"\\text{ when } reverse\\_cost_i>=0 \\} & \\quad \\text{if } reverse\\_cost " -"\\neq \\varnothing \\\\ \\end{cases}`" -msgstr "" -":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) " -"\\text{ when } cost >=0 \\} & \\quad \\text{if } reverse\\_cost = " -"\\varnothing \\\\ \\text{ } \\text{ } & \\quad \\text{ } \\\\ \\text{ } " -"\\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & \\quad " -"\\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) " -"\\text{ when } reverse\\_cost_i>=0 \\} & \\quad \\text{if } reverse\\_cost " -"\\neq \\varnothing \\\\ \\end{cases}`" +msgid "Capacity of the edge (``target``, ``source``)" +msgstr "Capacidad de la arista (``target``, ``source``)" -msgid "Undirected graph" -msgstr "Grafo no dirigido" +msgid "Weight of the edge (``source``, ``target``) if it exist" +msgstr "Peso de la arista (``source``, ``target``) si existe" -msgid "The weighted undirected graph, :math:`G_u(V,E)`, is definied by:" -msgstr "El grafo ponderado no dirigido :math:`G_u(V,E)`, es definido por:" +msgid "Weight of the edge (``target``, ``source``) if it exist" +msgstr "Peso de la arista (``target``, ``source``) si existe" -msgid ":math:`V = source \\cup target \\cup {start_v{vid}} \\cup {end_{vid}}`" -msgstr ":math:`V = source \\cup target \\cup {start_v{vid}} \\cup {end_{vid}}`" +msgid "Cost edges" +msgstr "Aristas de costo" -msgid "" -":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) " -"\\text{ when } cost >=0 \\} & \\quad \\text{ } \\\\ \\cup \\{(target_i, " -"source_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ if } " -"reverse\\_cost = \\varnothing \\\\ \\text{ } \\text{ } & \\text{ } \\\\ " -"\\text{ } \\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & " -"\\text{ } \\\\ \\cup \\{(target_i, source_i, cost_i) \\text{ when } cost >=0 " -"\\} & \\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) " -"\\text{ when } reverse\\_cost_i >=0)\\} & \\text{ } \\\\ \\cup \\{(source_i, " -"target_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i >=0)\\} & \\quad " -"\\text{ if } reverse\\_cost \\neq \\varnothing \\\\ \\end{cases}`" -msgstr "" -":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) " -"\\text{ when } cost >=0 \\} & \\quad \\text{ } \\\\ \\cup \\{(target_i, " -"source_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ if } " -"reverse\\_cost = \\varnothing \\\\ \\text{ } \\text{ } & \\text{ } \\\\ " -"\\text{ } \\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & " -"\\text{ } \\\\ \\cup \\{(target_i, source_i, cost_i) \\text{ when } cost >=0 " -"\\} & \\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) " -"\\text{ when } reverse\\_cost_i >=0)\\} & \\text{ } \\\\ \\cup \\{(source_i, " -"target_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i >=0)\\} & \\quad " -"\\text{ if } reverse\\_cost \\neq \\varnothing \\\\ \\end{cases}`" +msgid ":doc:`pgr_edgeDisjointPaths`" +msgstr ":doc:`pgr_edgeDisjointPaths`" -msgid "The problem" -msgstr "El problema" +msgid "Used in" +msgstr "Usado en" -msgid "Given:" -msgstr "Dado:" +msgid "**seq**" +msgstr "**seq**" -msgid ":math:`start_{vid} \\in V` a starting vertex" -msgstr ":math:`start_{vid} \\in V` un vértice inicial" +msgid "``INT``" +msgstr "``INT``" -msgid ":math:`end_{vid} \\in V` an ending vertex" -msgstr ":math:`end_{vid} \\in V` un vértice final" +msgid "**edge**" +msgstr "**arista**" -msgid "" -":math:`G(V,E) = \\begin{cases} G_d(V,E) & \\quad \\text{ if6 } directed = " -"true \\\\ G_u(V,E) & \\quad \\text{ if5 } directed = false \\\\ \\end{cases}`" +msgid "Identifier of the edge in the original query (edges_sql)." +msgstr "Identificador de la arista en la consulta original(edges_sql)." + +msgid "**start_vid**" +msgstr "**start_vid**" + +msgid "**end_vid**" +msgstr "**end_vid**" + +msgid "**flow**" +msgstr "**flujo**" + +msgid "Flow through the edge in the direction (``start_vid``, ``end_vid``)." msgstr "" -":math:`G(V,E) = \\begin{cases} G_d(V,E) & \\quad \\text{ if6 } directed = " -"true \\\\ G_u(V,E) & \\quad \\text{ if5 } directed = false \\\\ \\end{cases}`" +"Flujo a través del arista en la dirección (``start_vid``, ``end_vid``)." -msgid "Then:" -msgstr "Entonces:" +msgid "**residual_capacity**" +msgstr "**residual_capacity**" msgid "" -":math:`\\boldsymbol{\\pi} = \\{(path\\_seq_i, node_i, edge_i, cost_i, " -"agg\\_cost_i)\\}`" +"Residual capacity of the edge in the direction (``start_vid``, ``end_vid``)." msgstr "" -":math:`\\boldsymbol{\\pi} = \\{(path\\_seq_i, node_i, edge_i, cost_i, " -"agg\\_cost_i)\\}`" +"Capacidad residual del arista en la dirección (``start_vid``, ``end_vid``)." -msgid "where:" -msgstr "donde:" +msgid "For :doc:`pgr_maxFlowMinCost`" +msgstr "Para :doc:`pgr_maxFlowMinCost`" -msgid ":math:`path\\_seq_i = i`" -msgstr ":math:`path\\_seq_i = i`" +msgid "**source**" +msgstr "**origen**" -msgid ":math:`path\\_seq_{| \\pi |} = | \\pi |`" -msgstr ":math:`path\\_seq_{| \\pi |} = | \\pi |`" +msgid "**target**" +msgstr "**objetivo**" -msgid ":math:`node_i \\in V`" -msgstr ":math:`node_i \\in V`" +msgid "Flow through the edge in the direction (source, target)." +msgstr "Flujo a través de la arista en la dirección (origen, destino)." -msgid ":math:`node_1 = start_{vid}`" -msgstr ":math:`node_1 = start_{vid}`" +msgid "Residual capacity of the edge in the direction (source, target)." +msgstr "Capacidad residual de la arista en la dirección (origen, destino)." -msgid ":math:`node_{| \\pi |} = end_{vid}`" -msgstr ":math:`node_{| \\pi |} = end_{vid}`" +msgid "**cost**" +msgstr "**costo**" msgid "" -":math:`\\forall i \\neq | \\pi |, \\quad (node_i, node_{i+1}, cost_i) \\in E`" +"The cost of sending this flow through the edge in the direction (source, " +"target)." msgstr "" -":math:`\\forall i \\neq | \\pi |, \\quad (node_i, node_{i+1}, cost_i) \\in E`" +"El costo de enviar este flujo a través de la arista en la dirección (origen, " +"destino)." -msgid "" -":math:`edge_i = \\begin{cases} id_{(node_i, node_{i+1},cost_i)} &\\quad " -"\\text{when } i \\neq | \\pi | \\\\ -1 &\\quad \\text{when } i = | \\pi | \\" -"\\ \\end{cases}`" -msgstr "" -":math:`edge_i = \\begin{cases} id_{(node_i, node_{i+1},cost_i)} &\\quad " -"\\text{when } i \\neq | \\pi | \\\\ -1 &\\quad \\text{when } i = | \\pi | \\" -"\\ \\end{cases}`" +msgid "**agg_cost**" +msgstr "**agg_cost**" -msgid ":math:`cost_i = cost_{(node_i, node_{i+1})}`" -msgstr ":math:`cost_i = cost_{(node_i, node_{i+1})}`" +msgid "The aggregate cost." +msgstr "El costo agregado." + +msgid "Advanced Documentation" +msgstr "Documentación Avanzada" msgid "" -":math:`agg\\_cost_i = \\begin{cases} 0 &\\quad \\text{when } i = 1 \\" -"\\ \\displaystyle\\sum_{k=1}^{i} cost_{(node_{k-1}, node_k)} &\\quad " -"\\text{when } i \\neq 1 \\\\ \\end{cases}`" +"A flow network is a directed graph where each edge has a capacity and a " +"flow. The flow through an edge must not exceed the capacity of the edge. " +"Additionally, the incoming and outgoing flow of a node must be equal except " +"for source which only has outgoing flow, and the destination(sink) which " +"only has incoming flow." msgstr "" -":math:`agg\\_cost_i = \\begin{cases} 0 &\\quad \\text{when } i = 1 \\\\ " -"\\displaystyle\\sum_{k=1}^{i} cost_{(node_{k-1}, node_k)} &\\quad " -"\\text{when } i \\neq 1 \\\\ \\end{cases}`" +"Una red de flujo es un gráfico dirigido donde cada arista tiene una " +"capacidad y un flujo. El flujo a través de una arista no debe exceder la " +"capacidad de la misma. Además, el flujo entrante y saliente de un nodo debe " +"ser igual, excepto para el origen que solo tiene flujo saliente, y el " +"destino (receptor) que solo tiene flujo entrante." msgid "" -"In other words: The algorithm returns a the shortest path between :math:" -"`start_{vid}` and :math:`end_{vid}`, if it exists, in terms of a sequence of " -"nodes and of edges," +"Maximum flow algorithms calculate the maximum flow through the graph and the " +"flow of each edge." msgstr "" -"En otras palabras: El algoritmo devuelve la ruta más corta entre :math:" -"`start_{vid}` y :math:`end_{vid}`, si es que existe, en términos de una " -"secuencia de nodos y de aristas," +"Los algoritmos de Flujo Máximo se calculan a través del grafo del flujo " +"máximo y el flujo de cada arista." msgid "" -":math:`path\\_seq` indicates the relative position in the path of the :math:" -"`node` or :math:`edge`." -msgstr "" -":math:`path\\_seq` indica la posición relativa en el camino de :math:`node` " -"o :math:`edge`." - -msgid ":math:`cost` is the cost of the edge to be used to go to the next node." +"The maximum flow through the graph is guaranteed to be the same with all " +"implementations, but the actual flow through each edge may vary." msgstr "" -":math:`cost` es el coste del borde que se utilizará para ir al siguiente " -"nodo." +"Se garantiza que el flujo máximo a través del grafo sea el mismo con todas " +"las implementaciones, pero el flujo real a través de cada arista puede " +"variar." + +msgid "pgr_maxFlow :math:`(edges\\_sql, source\\_vertex, sink\\_vertex)`" +msgstr "pgr_maxFlow :math:`(edges\\_sql, source\\_vertex, sink\\_vertex)`" msgid "" -":math:`agg\\_cost` is the cost from the :math:`start_{vid}` up to the node." +"where :math:`edges\\_sql = \\{(id_i, source_i, target_i, capacity_i, " +"reverse\\_capacity_i)\\}`" msgstr "" -":math:`agg\\_cost` es el costo desde el :math:`start_{vid}` hasta el nodo." +"donde: :math:`edges\\_sql = \\{(id_i, source_i, target_i, capacity_i, " +"reverse\\_capacity_i)\\}`" -msgid "If there is no path, the resulting set is empty." -msgstr "Si no hay ruta, el conjunto resultante estará vacío." +msgid "Graph definition" +msgstr "Definición de grafo" -msgid "Driving Distance - Category" -msgstr "Distancia Manejando - Categoría" +msgid "The weighted directed graph, :math:`G(V,E)`, is defined as:" +msgstr "El grafo ponderado dirigido, :math:`G(V,E)`, se define como:" + +msgid "the set of vertices :math:`V`" +msgstr "Conjunto de vértices :math:`V`" msgid "" -":doc:`pgr_drivingDistance` - Driving Distance based on Dijkstra's algorithm" +":math:`source\\_vertex \\cup sink\\_vertex \\bigcup source_i \\bigcup " +"target_i`" msgstr "" -":doc:`pgr_drivingDistance` - Distancia de Manejo basada en el algoritmo de " -"Dijkstra" - -msgid ":doc:`pgr_primDD` - Driving Distance based on Prim's algorithm" -msgstr ":doc:`pgr_primDD` - Distancia de manejo basada en el algoritmo de Prim" +":math:`source\\_vertex \\cup sink\\_vertex \\bigcup source_i " +"\\bigcuptarget_i`" -msgid ":doc:`pgr_kruskalDD` - Driving Distance based on Kruskal's algorithm" +msgid "" +":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, capacity_i) " +"\\text{ when } capacity > 0 \\} & \\quad \\text{ if } reverse\\_capacity = " +"\\varnothing \\\\ \\text{ } & \\quad \\text{ } \\\\ \\{(source_i, target_i, " +"capacity_i) \\text{ when } capacity > 0 \\} & \\text{ } \\\\ \\cup " +"\\{(target_i, source_i, reverse\\_capacity_i) \\text{ when } " +"reverse\\_capacity_i > 0)\\} & \\quad \\text{ if } reverse\\_capacity \\neq " +"\\varnothing \\\\ \\end{cases}`" msgstr "" -":doc:`pgr_kruskalDD` - Distancia de Manejo basada en el algoritmo de Kruskal" +":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, capacity_i) " +"\\text{ when } capacity > 0 \\} & \\quad \\text{ if } reverse\\_capacity = " +"\\varnothing \\\\ \\text{ } & \\quad \\text{ } \\\\ \\{(source_i, target_i, " +"capacity_i) \\text{ when } capacity > 0 \\} & \\text{ } \\\\ \\cup " +"\\{(target_i, source_i, reverse\\_capacity_i) \\text{ when } " +"reverse\\_capacity_i > 0)\\} & \\quad \\text{ if } reverse\\_capacity \\neq " +"\\varnothing \\\\ \\end{cases}`" -msgid "Post pocessing" -msgstr "Post procesamiento" +msgid "Maximum flow problem" +msgstr "Problema de Flujo Máximo" -msgid ":doc:`pgr_alphaShape` - Alpha shape computation" -msgstr ":doc:`pgr_alphaShape` - Cálcular la forma Alpha" +msgid ":math:`G(V,E)`" +msgstr ":math:`G(V,E)`" -msgid ":doc:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints" -msgstr ":doc:`pgr_withPointsDD` - Distancia Manejando basada en pgr_withPoints" +msgid ":math:`source\\_vertex \\in V` the source vertex" +msgstr ":math:`source\\_vertex \\in V` el vértice de origen" -msgid "Calculate nodes that are within a distance." -msgstr "Calcular nodos que están dentro de una distancia." +msgid ":math:`sink\\_vertex \\in V` the sink vertex" +msgstr ":math:`sink\\_vertex \\in V` el vértice pozo" + +msgid ":math:`pgr\\_maxFlow(edges\\_sql, source, sink) = \\boldsymbol{\\Phi}`" +msgstr ":math:`pgr\\_maxFlow(edges\\_sql, source, sink) = \\boldsymbol{\\Phi}`" msgid "" -"Extracts all the nodes that have costs less than or equal to the value " -"distance." +":math:`\\boldsymbol{\\Phi} = {(id_i, edge\\_id_i, source_i, target_i, " +"flow_i, residual\\_capacity_i)}`" msgstr "" -"Extrae todos los nodos que tienen costos menor o igual al valor de la " -"distancia." +":math:`\\boldsymbol{\\Phi} = {(id_i, edge\\_id_i, source_i, target_i, " +"flow_i, residual\\_capacity_i)}`" -msgid "The edges extracted will conform to the corresponding spanning tree." +msgid "" +":math:`\\boldsymbol{\\Phi}` is a subset of the original edges with their " +"residual capacity and flow. The maximum flow through the graph can be " +"obtained by aggregating on the source or sink and summing the flow from/to " +"it. In particular:" msgstr "" -"Las aristas extraídas conformarán el correspondiente árbol de expansión." +":math:`\\boldsymbol{\\Phi}` es un subconjunto de las aristas originales con " +"su flujo y capacidad residual. El flujo máximo a través del grafo se puede " +"obtener agregando en el origen o sumidero y sumiendo el flujo hacia él. En " +"particular:" -msgid "Edge :math:`(u, v)` will not be included when:" -msgstr "Arista :math:`(u, v)` no se incluye cuando:" +msgid ":math:`id_i = i`" +msgstr ":math:`id_i = i`" -msgid "The distance from the **root** to :math:`u` > limit distance." -msgstr "La distancia de la **raiz** a:math:`u` > límite de la distancia." +msgid ":math:`edge\\_id = id_i` in edges_sql" +msgstr ":math:`edge\\_id = id_i` en edges_sql" -msgid "The distance from the **root** to :math:`v` > limit distance." -msgstr "La distancia de la **raiz** a :math:`v` > límite de la distancia." +msgid ":math:`residual\\_capacity_i = capacity_i - flow_i`" +msgstr ":math:`residual\\_capacity_i = capacity_i - flow_i`" + +msgid "https://en.wikipedia.org/wiki/Maximum_flow_problem" +msgstr "https://en.wikipedia.org/wiki/Maximum_flow_problem" msgid "" -"No new nodes are created on the graph, so when is within the limit and is " -"not within the limit, the edge is not included." +"pgRouting extends the `PostGIS `__/`PostgreSQL `__ geospatial database to provide geospatial routing and " +"other network analysis functionality." msgstr "" -"No se crean nuevos nodos en el grafo, por lo que cuando el vértice está " -"dentro de los límites y parte de la arista no está dentro de los límites, la " -"arsta no se incluye." - -msgid "Edges SQL as described below." -msgstr "SQL de aristas como se describen abajo." +"pgRouting extiende la base de datos geospacial de `PostGIS `__/`PostgreSQL `__ para proporcionar " +"enrutamiento geoespacial y otras funciones de análisis de red." -msgid "**Root vid**" -msgstr "**Raíz**" +msgid "This is the manual for pgRouting |release|." +msgstr "Este es el manual para la version |release| de pgRouting." -msgid "**Root vids**" -msgstr "**Raíces**" +msgid "Creative Commons Attribution-Share Alike 3.0 License" +msgstr "Licencia de Creative Commons Attribution-Share Alike 3.0" -msgid "``ARRAY[ANY-INTEGER]``" -msgstr "``ARREGLO[ENTEROS]``" +msgid "" +"The pgRouting Manual is licensed under a `Creative Commons Attribution-Share " +"Alike 3.0 License `_. Feel " +"free to use this material any way you like, but we ask that you attribute " +"credit to the pgRouting Project and wherever possible, a link back to " +"https://pgrouting.org. For other licenses used in pgRouting see the :ref:" +"`license` page." +msgstr "" +"El Manual de pgRouting está bajo licencia `Creative Commons Attribution-" +"Share Alike 3.0 License `_. " +"Siéntase libre de usar este material de la manera que desee, pero le pedimos " +"que atribuya el crédito correspondiente al proyecto pgRouting y, siempre que " +"sea posible, visite https://pgrouting.org. Para otras licencias utilizadas " +"en pgRouting, consulte la página :ref:`license` ." -msgid "**distance**" -msgstr "**distancia**" +msgid "General" +msgstr "General" -msgid "Upper limit for the inclusion of a node in the result." -msgstr "Límite superior para la inclusión del nodo en el resultado." +msgid ":doc:`sampledata` that is used in the examples of this manual." +msgstr ":doc:`sampledata` es usado en los ejemplos de este manual." -msgid "Returns set of |result-spantree|" -msgstr "Regresa el conjunto de |result-spantree|" +msgid "Pgrouting Concepts" +msgstr "Conceptos de pgRouting" -msgid ":math:`depth-1` is the depth of ``pred``" -msgstr ":math:`depth-1` es la profundidad de ``pred``" +msgid ":doc:`routingFunctions`" +msgstr ":doc:`routingFunctions`" -msgid "``pred``" -msgstr "``pred``" +msgid ":doc:`allpairs-family`" +msgstr ":doc:`allpairs-family`" -msgid "Predecessor of ``node``." -msgstr "Presdecesor de ``node``." +msgid ":doc:`bdDijkstra-family`" +msgstr ":doc:`bdDijkstra-family`" -msgid "When ``node`` = ``start_vid`` then has the value ``node``." -msgstr "Cuando ``node`` = ``start_vid`` entonces tiene el valor ``node``." +msgid ":doc:`contraction-family`" +msgstr ":doc:`contraction-family`" -msgid "Identifier of the ``edge`` used to arrive from ``pred`` to ``node``." -msgstr "" -"Identificador del ``edge`` utilizado para llegar desde ``pred`` hasta " -"``node``." +msgid ":doc:`dijkstra-family`" +msgstr ":doc:`dijkstra-family`" -msgid "Experimental Functions" -msgstr "Funciones Experimentales" +msgid ":doc:`kruskal-family`" +msgstr ":doc:`kruskal-family`" -msgid "Families" -msgstr "Familias" +msgid ":doc:`pgr_kruskal`" +msgstr ":doc:`pgr_kruskal`" -msgid ":doc:`flow-family`" -msgstr ":doc:`flow-family`" +msgid ":doc:`pgr_kruskalDD`" +msgstr ":doc:`pgr_kruskalDD`" -msgid ":doc:`pgr_maxFlowMinCost` - Details of flow and cost on edges." +msgid "" +":doc:`pgr_degree` - Returns a set of vertices and corresponding count of " +"incident edges to the vertex." msgstr "" -":doc:`pgr_maxFlowMinCost` - Detalles del flujo y el coste en los bordes." +":doc:`pgr_degree` - Regresa un conjunto de vertices y la cantidad de aristas " +"incidentes al vértice." -msgid ":doc:`pgr_maxFlowMinCost_Cost` - Only the Min Cost calculation." -msgstr ":doc:`pgr_maxFlowMinCost_Cost` - Solo el cálculo del Coste Mínimo." +msgid ":doc:`prim-family`" +msgstr ":doc:`prim-family`" -msgid ":doc:`chinesePostmanProblem-family`" -msgstr ":doc:`chinesePostmanProblem-family`" +msgid ":doc:`pgr_prim`" +msgstr ":doc:`pgr_prim`" -msgid ":doc:`coloring-family`" -msgstr ":doc:`coloring-family`" +msgid ":doc:`pgr_primDD`" +msgstr ":doc:`pgr_primDD`" -msgid ":doc:`transformation-family`" -msgstr ":doc:`transformation-family`" +msgid ":doc:`reference`" +msgstr ":doc:`reference`" + +msgid ":doc:`pgr_version`" +msgstr ":doc:`pgr_version`" + +msgid ":doc:`pgr_full_version`" +msgstr ":doc:`pgr_full_version`" + +msgid ":doc:`topology-functions`" +msgstr ":doc:`topology-functions`" msgid "" -":doc:`pgr_lineGraphFull` - Transformation algorithm for generating a Line " -"Graph out of each vertex in the input graph." +"The following functions modify the database directly therefore the user must " +"have special permissions given by the administrators to use them." msgstr "" -":doc:`pgr_lineGraphFull` - Algoritmo de transformación para generar un grafo " -"de líneas a partir de cada vértice en el grafo de entrada." +"Las siguientes funciones modifican la base de datos directamente, por lo que " +"el usuario debe tener permisos especiales otorgados por un administrador " +"para usarlos." -msgid ":doc:`traversal-family`" -msgstr ":doc:`traversal-family`" +msgid ":doc:`pgr_createTopology` - create a topology based on the geometry." +msgstr "" +":doc:`pgr_createTopology` - crear una topología basada en la geometría." msgid "" -":doc:`pgr_breadthFirstSearch` - Breath first search traversal of the graph." +":doc:`pgr_createVerticesTable` - reconstruct the vertices table based on the " +"source and target information." msgstr "" -":doc:`pgr_breadthFirstSearch` - Recorrido de búsqueda en anchura del grafo." +":doc:`pgr_createVerticesTable` - reconstruir la tabla de vértices en base a " +"la información de origen y destino." msgid "" -":doc:`pgr_binaryBreadthFirstSearch` - Breath first search traversal of the " -"graph." +":doc:`pgr_analyzeGraph` - to analyze the edges and vertices of the edge " +"table." msgstr "" -":doc:`pgr_binaryBreadthFirstSearch` - Recorrido de búsqueda en anchura del " -"grafo." +":doc:`pgr_analyzeGraph` - para analizar los bordes y vértices de la tabla de " +"aristas." -msgid ":doc:`components-family`" -msgstr ":doc:`components-family`" +msgid ":doc:`pgr_analyzeOneWay` - to analyze directionality of the edges." +msgstr "" +":doc:`pgr_analyzeOneWay` - para analizar la direccionalidad de las aristas." -msgid ":doc:`ordering-family`" -msgstr ":doc:`ordering-family`" - -msgid "" -":doc:`pgr_cuthillMckeeOrdering` - Return reverse Cuthill-McKee ordering of " -"an undirected graph." +msgid ":doc:`pgr_nodeNetwork` - to create nodes to a not noded edge table." msgstr "" -":doc:`pgr_cuthillMckeeOrdering` - Ordenamiento Cuthill-McKee de grafo sin no " -"dirigido." - -msgid ":doc:`metrics-family`" -msgstr ":doc:`metrics-family`" +":doc:`pgr_nodeNetwork` - para crear nodos a una tabla de aristas sin nodos." msgid "" -":doc:`pgr_betweennessCentrality` - Calculates relative betweenness " -"centrality using Brandes Algorithm" +":doc:`pgr_extractVertices` - Extracts vertex information based on the edge " +"table information." msgstr "" -":doc:`pgr_betweennessCentrality` - Calcula la centralidad intermedia " -"relativa mediante el algoritmo de Brandes" +":doc:`pgr_extractVertices` - Extrae información de vértices basada en la " +"tabla de aristas." -msgid ":doc:`TRSP-family`" -msgstr ":doc:`TRSP-family`" +msgid ":doc:`pgr_trsp` - Turn Restriction Shortest Path (TRSP)" +msgstr ":doc:`pgr_trsp` - Camino más corto con restricción de giros (TRSP)" -msgid "categories" -msgstr "Categorías" +msgid "Utilities family" +msgstr "Utilidades - familia" -msgid ":doc:`VRP-category`" -msgstr ":doc:`VRP-category`" +msgid ":doc:`pgr_findCloseEdges`" +msgstr ":doc:`pgr_findCloseEdges`" -msgid "Unclassified" -msgstr "No clasificado" +msgid "Functions by categories" +msgstr "Funciones por categorías" -msgid ":doc:`pgr_bellmanFord`" -msgstr ":doc:`pgr_bellmanFord`" +msgid ":doc:`cost-category`" +msgstr ":doc:`cost-category`" -msgid ":doc:`pgr_dagShortestPath`" -msgstr ":doc:`pgr_dagShortestPath`" +msgid ":doc:`costMatrix-category`" +msgstr ":doc:`costMatrix-category`" -msgid ":doc:`pgr_edwardMoore`" -msgstr ":doc:`pgr_edwardMoore`" +msgid ":doc:`drivingDistance-category`" +msgstr ":doc:`drivingDistance-category`" -msgid ":doc:`pgr_isPlanar`" -msgstr ":doc:`pgr_isPlanar`" +msgid ":doc:`KSP-category`" +msgstr ":doc:`KSP-category`" -msgid ":doc:`pgr_stoerWagner`" -msgstr ":doc:`pgr_stoerWagner`" +msgid ":doc:`spanningTree-category`" +msgstr ":doc:`spanningTree-category`" -msgid ":doc:`pgr_topologicalSort`" -msgstr ":doc:`pgr_topologicalSort`" +msgid ":doc:`BFS-category`" +msgstr ":doc:`BFS-category`" -msgid ":doc:`pgr_transitiveClosure`" -msgstr ":doc:`pgr_transitiveClosure`" +msgid ":doc:`DFS-category`" +msgstr ":doc:`DFS-category`" -msgid ":doc:`pgr_lengauerTarjanDominatorTree`" -msgstr ":doc:`pgr_lengauerTarjanDominatorTree`" +msgid "Available Functions but not official pgRouting functions" +msgstr "Funciones disponibles pero no oficiales de pgRouting" -msgid ":doc:`pgr_hawickCircuits`" -msgstr ":doc:`pgr_hawickCircuits`" +msgid ":doc:`proposed`" +msgstr ":doc:`proposed`" -msgid "Flow - Family of functions" -msgstr "Flow - Familia de funciones" +msgid ":doc:`experimental`" +msgstr ":doc:`experimental`" -msgid "" -":doc:`pgr_maxFlow` - Only the Max flow calculation using Push and Relabel " -"algorithm." -msgstr "" -":doc:`pgr_maxFlow` - Solo el flujo máximo se calcula usando el algoritmo " -"empuja y reetiquetado." +msgid ":doc:`release_notes`" +msgstr ":doc:`release_notes`" -msgid "" -":doc:`pgr_boykovKolmogorov` - Boykov and Kolmogorov with details of flow on " -"edges." -msgstr "" -":doc:`pgr_boykovKolmogorov` - Algoritmo Boykov y Kolmogorov con detalles del " -"flujo en aristas." +msgid "pgRouting 4.0.0 Release Notes" +msgstr "Notas de la versión de pgRouting 4.0.0" msgid "" -":doc:`pgr_edmondsKarp` - Edmonds and Karp algorithm with details of flow on " -"edges." +"To see all issues & pull requests closed by this release see the `Git closed " +"milestone for 4.0.0 `__" msgstr "" -":doc:`pgr_edmondsKarp` - Algoritmo Edmonds y Karp con detalles de flujo del " -"flujo en aristas." +"Para ver todos los problemas y solicitudes de extracción cerrados para ésta " +"versión, consulte la `meta cerrada 4.0.0 `__" -msgid "" -":doc:`pgr_pushRelabel` - Push and relabel algorithm with details of flow on " -"edges." -msgstr "" -":doc:`pgr_pushRelabel` - Algoritmo empuja y reetiquetado con detalles del " -"flujo en aristas." +msgid "Functions promoted to official" +msgstr "Funciones promovidas a oficial" -msgid "Applications" -msgstr "Aplicaciones" +msgid "pgr_trsp" +msgstr "pgr_trsp" -msgid "" -":doc:`pgr_edgeDisjointPaths` - Calculates edge disjoint paths between two " -"groups of vertices." -msgstr "" -":doc:`pgr_edgeDisjointPaths` - Calcula rutas de aristas disjuntas entre dos " -"grupos de vértices." +msgid "pgr_trspVia" +msgstr "pgr_trspVia" -msgid "" -":doc:`pgr_maxCardinalityMatch` - Calculates a maximum cardinality matching " -"in a graph." -msgstr "" -":doc:`pgr_maxCardinalityMatch` - Calcular una cardinalidad máxima de " -"coincidencia dentro de un grafo." +msgid "pgr_trspVia_withPoints" +msgstr "pgr_trspVia_withPoints" -msgid "Flow Functions General Information" -msgstr "Información General de las Funciones de Flujo" +msgid "pgr_trsp_withPoints" +msgstr "pgr_trsp_withPoints" -msgid "The graph is **directed**." -msgstr "El grafo es **dirigido**." +msgid "pgr_withPoints" +msgstr "pgr_withPoints" -msgid "Process is done only on edges with positive capacities." -msgstr "El proceso se realiza sólo en aristas con capacidades positivas." +msgid "pgr_withPointsCost" +msgstr "pgr_withPointsCost" -msgid "" -"When the maximum flow is 0 then there is no flow and **EMPTY SET** is " -"returned." -msgstr "" -"Cuando el flujo máximo es 0 entonces no hay flujo, se devolverá: **EMPTY " -"SET**." +msgid "pgr_withPointsCostMatrix" +msgstr "pgr_withPointsCostMatrix" -msgid "There is no flow when source has the same vaule as target." -msgstr "No hay flujo cuando el origen tiene el mismo valor que el destino." +msgid "pgr_withPointsDD" +msgstr "pgr_withPointsDD" -msgid "Any duplicated values in source or target are ignored." -msgstr "Los valores duplicados en origen o destino se ignoran." +msgid "pgr_withPointsKSP" +msgstr "pgr_withPointsKSP" -msgid "Calculates the flow/residual capacity for each edge. In the output" -msgstr "Calcula la capacidad de flujo/residuo para cada arista. En la salida" +msgid "pgr_withPointsVia" +msgstr "pgr_withPointsVia" -msgid "Edges with zero flow are omitted." -msgstr "Se omiten las aristas con flujo cero." +msgid "Signatures promoted to official" +msgstr "Firmas promovidas a oficial" -msgid "Creates" -msgstr "Crea" +msgid "pgr_aStar(Combinations)" +msgstr "pgr_aStar(Combinaciones)" -msgid "a **super source** and edges from it to all the sources," -msgstr "una **super fuente** y aristas desde ella a todas las fuentes," +msgid "pgr_aStarCost(Combinations)" +msgstr "pgr_aStarCost(Combinaciones)" -msgid "a **super target** and edges from it to all the targetss." -msgstr "un **super objetivo** y aristas desde él a todos los objetivos." +msgid "pgr_bdAstar(Combinations)" +msgstr "pgr_bdAstar(Combinaciones)" -msgid "" -"The maximum flow through the graph is guaranteed to be the value returned " -"by :doc:`pgr_maxFlow ` when executed with the same parameters " -"and can be calculated:" -msgstr "" -"Se garantiza que el flujo máximo a través del grafo es el valor devuelto " -"por :doc:`pgr_maxFlow ` cuando es ejecutado con los mismos " -"parámetros y se puede calcular:" +msgid "pgr_bdAstarCost(Combinations)" +msgstr "pgr_bdAstarCost(Combinaciones)" -msgid "By aggregation of the outgoing flow from the sources" -msgstr "Mediante la suma de los flujos salientes de las fuentes" +msgid "pgr_bdDijkstra(Combinations)" +msgstr "pgr_bdDijkstra(Combinaciones)" -msgid "By aggregation of the incoming flow to the targets" -msgstr "Mediante la suma de los flujos llegantes a los destinos" +msgid "pgr_bdDijkstraCost(Combinations)" +msgstr "pgr_bdDijkstraCost(Combinaciones)" -msgid "" -":doc:`pgr_maxFlow` is the maximum Flow and that maximum is guaranteed to be " -"the same on the functions :doc:`pgr_pushRelabel`, :doc:`pgr_edmondsKarp`, :" -"doc:`pgr_boykovKolmogorov`, but the actual flow through each edge may vary." -msgstr "" -":doc:`pgr_maxFlow` es el flujo máximo y este máximo tiene garantía de ser el " -"mismo en las funciones :doc:`pgr_pushRelabel`, :doc:`pgr_edmondsKarp`, :doc:" -"`pgr_boykovKolmogorov`, pero el flujo actual para cada arista puede variar." +msgid "pgr_dijkstra(Combinations)" +msgstr "pgr_dijkstra(Combinaciones)" -msgid "Capacity edges" -msgstr "Aristas de capacidad" +msgid "pgr_dijkstraCost(Combinations)" +msgstr "pgr_dijkstraCost(Combinaciones)" -msgid ":doc:`pgr_pushRelabel`" -msgstr ":doc:`pgr_pushRelabel`" +msgid "pgr_KSP(All signatures)" +msgstr "pgr_KSP(todas las firmas)" -msgid ":doc:`pgr_edmondsKarp`" -msgstr ":doc:`pgr_edmondsKarp`" +msgid "pgr_boykovKolmogorov(Combinations)" +msgstr "pgr_boykovKolmogorov(Combinaciones)" -msgid ":doc:`pgr_boykovKolmogorov`" -msgstr ":doc:`pgr_boykovKolmogorov`" +msgid "pgr_edmondsKarp(Combinations)" +msgstr "pgr_edmondsKarp(Combinaciones)" -msgid "``reverse_capacity``" -msgstr "``reverse_capacity``" +msgid "pgr_maxFlow(Combinations)" +msgstr "pgr_maxFlow(Combinaciones)" -msgid "Capacity-Cost edges" -msgstr "Aristas Capacidad-Costo" +msgid "pgr_pushRelabel(Combinations)" +msgstr "pgr_pushRelabel(Combinaciones)" -msgid ":doc:`pgr_maxFlowMinCost`" -msgstr ":doc:`pgr_maxFlowMinCost`" +msgid "code enhancements:" +msgstr "Mejora del código:" -msgid ":doc:`pgr_maxFlowMinCost_Cost`" -msgstr ":doc:`pgr_maxFlowMinCost_Cost`" +msgid "Removal of unused C/C++ code" +msgstr "Eliminación de código C/C++ no utilizado" -msgid "Capacity of the edge (``source``, ``target``)" -msgstr "Capacidad de la arista (``source``, ``target``)" +msgid "Removal of SQL deprecated functions" +msgstr "Eliminación de funciones obsoletas" -msgid "Capacity of the edge (``target``, ``source``)" -msgstr "Capacidad de la arista (``target``, ``source``)" +msgid "" +"pgr_trsp(text,integer,double precision,integer,double precision,boolean," +"boolean,text)" +msgstr "" +"pgr_trsp(text,integer,double precision,integer,double precision,boolean," +"boolean,text)" -msgid "Weight of the edge (``source``, ``target``) if it exist" -msgstr "Peso de la arista (``source``, ``target``) si existe" +msgid "pgr_trsp(text,integer,integer,boolean,boolean,text)" +msgstr "pgr_trsp(text,integer,integer,boolean,boolean,text)" -msgid "Weight of the edge (``target``, ``source``) if it exist" -msgstr "Peso de la arista (``target``, ``source``) si existe" +msgid "" +"pgr_trspviaedges(text,integer[],double precision[],boolean,boolean,text)" +msgstr "" +"pgr_trspviaedges(text,integer[],double precision[],boolean,boolean,text)" -msgid "Cost edges" -msgstr "Aristas de costo" +msgid "pgr_trspviavertices(text,anyarray,boolean,boolean,text)" +msgstr "pgr_trspviavertices(text,anyarray,boolean,boolean,text)" -msgid ":doc:`pgr_edgeDisjointPaths`" -msgstr ":doc:`pgr_edgeDisjointPaths`" +msgid "Removal of SQL deprecated internal functions" +msgstr "Eliminación de funciones internas SQL obsoletas" -msgid "Used in" -msgstr "Usado en" +msgid "_pgr_dijkstranear(text,anyarray,anyarray,bigint,boolean)" +msgstr "_pgr_dijkstranear(text,anyarray,anyarray,bigint,boolean)" -msgid "**seq**" -msgstr "**seq**" +msgid "_pgr_dijkstranear(text,anyarray,bigint,bigint,boolean)" +msgstr "_pgr_dijkstranear(text,anyarray,bigint,bigint,boolean)" -msgid "``INT``" -msgstr "``INT``" +msgid "_pgr_dijkstranear(text,bigint,anyarray,bigint,boolean)" +msgstr "_pgr_dijkstranear(text,bigint,anyarray,bigint,boolean)" -msgid "**edge**" -msgstr "**arista**" +msgid "_pgr_dijkstra(text,anyarray,anyarray,boolean,boolean,boolean,bigint)" +msgstr "_pgr_dijkstra(text,anyarray,anyarray,boolean,boolean,boolean,bigint)" -msgid "Identifier of the edge in the original query (edges_sql)." -msgstr "Identificador de la arista en la consulta original(edges_sql)." +msgid "_pgr_dijkstra(text,text,boolean,boolean,boolean)" +msgstr "_pgr_dijkstra(text,text,boolean,boolean,boolean)" -msgid "**start_vid**" -msgstr "**start_vid**" +msgid "_pgr_drivingdistance(text,anyarray,double precision,boolean,boolean)" +msgstr "_pgr_drivingdistance(text,anyarray,double precision,boolean,boolean)" -msgid "**end_vid**" -msgstr "**end_vid**" +msgid "_pgr_kruskal(text,anyarray,text,bigint,double precision)" +msgstr "_pgr_kruskal(text,anyarray,text,bigint,double precision)" -msgid "**flow**" -msgstr "**flujo**" +msgid "_pgr_prim(text,anyarray,text,bigint,double precision)" +msgstr "_pgr_prim(text,anyarray,text,bigint,double precision)" -msgid "Flow through the edge in the direction (``start_vid``, ``end_vid``)." +msgid "" +"_pgr_trsp(text,integer,double precision,integer,double precision,boolean," +"boolean,text)" msgstr "" -"Flujo a través del arista en la dirección (``start_vid``, ``end_vid``)." +"_pgr_trsp(text,integer,double precision,integer,double precision,boolean," +"boolean,text)" -msgid "**residual_capacity**" -msgstr "**residual_capacity**" +msgid "_pgr_trsp(text,text,anyarray,anyarray,boolean)" +msgstr "_pgr_trsp(text,text,anyarray,anyarray,boolean)" -msgid "" -"Residual capacity of the edge in the direction (``start_vid``, ``end_vid``)." -msgstr "" -"Capacidad residual del arista en la dirección (``start_vid``, ``end_vid``)." +msgid "_pgr_trsp(text,text,anyarray,bigint,boolean)" +msgstr "_pgr_trsp(text,text,anyarray,bigint,boolean)" -msgid "For :doc:`pgr_maxFlowMinCost`" -msgstr "Para :doc:`pgr_maxFlowMinCost`" +msgid "_pgr_trsp(text,text,bigint,anyarray,boolean)" +msgstr "_pgr_trsp(text,text,bigint,anyarray,boolean)" -msgid "**source**" -msgstr "**origen**" +msgid "_pgr_trsp(text,text,bigint,bigint,boolean)" +msgstr "_pgr_trsp(text,text,bigint,bigint,boolean)" -msgid "**target**" -msgstr "**objetivo**" +msgid "_pgr_trspviavertices(text,integer[],boolean,boolean,text)" +msgstr "_pgr_trspviavertices(text,integer[],boolean,boolean,text)" -msgid "Flow through the edge in the direction (source, target)." -msgstr "Flujo a través de la arista en la dirección (origen, destino)." +msgid "_pgr_withpointsvia(text,bigint[],double precision[],boolean)" +msgstr "_pgr_withpointsvia(text,bigint[],double precision[],boolean)" -msgid "Residual capacity of the edge in the direction (source, target)." -msgstr "Capacidad residual de la arista en la dirección (origen, destino)." +msgid "_trsp(text,text,anyarray,anyarray,boolean)" +msgstr "_trsp(text,text,anyarray,anyarray,boolean)" -msgid "**cost**" -msgstr "**costo**" +msgid "_v4trsp(text,text,anyarray,anyarray,boolean)" +msgstr "_v4trsp(text,text,anyarray,anyarray,boolean)" -msgid "" -"The cost of sending this flow through the edge in the direction (source, " -"target)." -msgstr "" -"El costo de enviar este flujo a través de la arista en la dirección (origen, " -"destino)." +msgid "_v4trsp(text,text,text,boolean)" +msgstr "_v4trsp(text,text,text,boolean)" -msgid "**agg_cost**" -msgstr "**agg_cost**" +msgid "Deprecation of internal C/C++ functions" +msgstr "Obsolescencia de funciones internas C/C++" -msgid "The aggregate cost." -msgstr "El costo agregado." +msgid "Internal C/C++ functions in legacy" +msgstr "Funciones C/C++ internas en legado" -msgid "Advanced Documentation" -msgstr "Documentación Avanzada" +msgid "All releases" +msgstr "Todas las versiones" -msgid "" -"A flow network is a directed graph where each edge has a capacity and a " -"flow. The flow through an edge must not exceed the capacity of the edge. " -"Additionally, the incoming and outgoing flow of a node must be equal except " -"for source which only has outgoing flow, and the destination(sink) which " -"only has incoming flow." -msgstr "" -"Una red de flujo es un gráfico dirigido donde cada arista tiene una " -"capacidad y un flujo. El flujo a través de una arista no debe exceder la " -"capacidad de la misma. Además, el flujo entrante y saliente de un nodo debe " -"ser igual, excepto para el origen que solo tiene flujo saliente, y el " -"destino (receptor) que solo tiene flujo entrante." +msgid "Kruskal - Family of functions" +msgstr "Kruskal - Familia de funciones" msgid "" -"Maximum flow algorithms calculate the maximum flow through the graph and the " -"flow of each edge." +"Kruskal's algorithm is a greedy minimum spanning tree algorithm that in each " +"cycle finds and adds the edge of the least possible weight that connects any " +"two trees in the forest." msgstr "" -"Los algoritmos de Flujo Máximo se calculan a través del grafo del flujo " -"máximo y el flujo de cada arista." +"Kruskal es un ambicioso algoritmo para generar un árbol de expansión mínimo " +"que en cada ciclo encuentra y agrega la arista del menor peso posible que " +"conecta dos árboles en el bosque." -msgid "" -"The maximum flow through the graph is guaranteed to be the same with all " -"implementations, but the actual flow through each edge may vary." -msgstr "" -"Se garantiza que el flujo máximo a través del grafo sea el mismo con todas " -"las implementaciones, pero el flujo real a través de cada arista puede " -"variar." +msgid "**The main Characteristics are:**" +msgstr "**Las características principales son:**" -msgid "pgr_maxFlow :math:`(edges\\_sql, source\\_vertex, sink\\_vertex)`" -msgstr "pgr_maxFlow :math:`(edges\\_sql, source\\_vertex, sink\\_vertex)`" +msgid "The total weight of all the edges in the tree or forest is minimized." +msgstr "Se minimiza el peso total de todos los bordes del árbol o bosque." + +msgid "Kruskal's running time: :math:`O(E * log E)`" +msgstr "Tiempo de ejecución de Kruskal: :math:`O(E * log E)`" + +msgid "Metrics - Family of functions" +msgstr "Métricas - Familia de funciones" + +msgid "Migration guide" +msgstr "Guía de migración" msgid "" -"where :math:`edges\\_sql = \\{(id_i, source_i, target_i, capacity_i, " -"reverse\\_capacity_i)\\}`" +"Several functions are having changes on the signatures, and/or have been " +"replaced by new functions." msgstr "" -"donde: :math:`edges\\_sql = \\{(id_i, source_i, target_i, capacity_i, " -"reverse\\_capacity_i)\\}`" +"Varias funciones están teniendo cambios en las firmas, y/o han sido " +"remplazadas por nuevas funciones." -msgid "Graph definition" -msgstr "Definición de grafo" +msgid "Results can be different because of the changes." +msgstr "Resultados pueden ser diferentes dado los cambios." -msgid "The weighted directed graph, :math:`G(V,E)`, is defined as:" -msgstr "El grafo ponderado dirigido, :math:`G(V,E)`, se define como:" +msgid "All deprecated functions will be removed on next mayor version 4.0.0" +msgstr "" +"Todas las funciones obsoletas serán removidas en las siguiente versión mayor " +"4.0.0" -msgid "the set of vertices :math:`V`" -msgstr "Conjunto de vértices :math:`V`" +msgid "Migration of ``pgr_aStar``" +msgstr "Migración de ``pgr_aStar``" msgid "" -":math:`source\\_vertex \\cup sink\\_vertex \\bigcup source_i \\bigcup " -"target_i`" +"Starting from `v3.6.0 `__" msgstr "" -":math:`source\\_vertex \\cup sink\\_vertex \\bigcup source_i " -"\\bigcuptarget_i`" +"Comenzando en `v3.6.0 `__" -msgid "" -":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, capacity_i) " -"\\text{ when } capacity > 0 \\} & \\quad \\text{ if } reverse\\_capacity = " -"\\varnothing \\\\ \\text{ } & \\quad \\text{ } \\\\ \\{(source_i, target_i, " -"capacity_i) \\text{ when } capacity > 0 \\} & \\text{ } \\\\ \\cup " -"\\{(target_i, source_i, reverse\\_capacity_i) \\text{ when } " -"reverse\\_capacity_i > 0)\\} & \\quad \\text{ if } reverse\\_capacity \\neq " -"\\varnothing \\\\ \\end{cases}`" -msgstr "" -":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, capacity_i) " -"\\text{ when } capacity > 0 \\} & \\quad \\text{ if } reverse\\_capacity = " -"\\varnothing \\\\ \\text{ } & \\quad \\text{ } \\\\ \\{(source_i, target_i, " -"capacity_i) \\text{ when } capacity > 0 \\} & \\text{ } \\\\ \\cup " -"\\{(target_i, source_i, reverse\\_capacity_i) \\text{ when } " -"reverse\\_capacity_i > 0)\\} & \\quad \\text{ if } reverse\\_capacity \\neq " -"\\varnothing \\\\ \\end{cases}`" +msgid "Signatures to be migrated:" +msgstr "Firmas que serán migradas:" -msgid "Maximum flow problem" -msgstr "Problema de Flujo Máximo" +msgid "``pgr_aStar`` (`One to One`)" +msgstr "``pgr_aStar`` (`Uno a Uno`)" -msgid ":math:`G(V,E)`" -msgstr ":math:`G(V,E)`" +msgid "``pgr_aStar`` (`One to Many`)" +msgstr "``pgr_aStar`` (`Uno a Muchos`)" -msgid ":math:`source\\_vertex \\in V` the source vertex" -msgstr ":math:`source\\_vertex \\in V` el vértice de origen" +msgid "``pgr_aStar`` (`Many to One`)" +msgstr "``pgr_aStar`` (`Muchos a Uno`)" -msgid ":math:`sink\\_vertex \\in V` the sink vertex" -msgstr ":math:`sink\\_vertex \\in V` el vértice pozo" +msgid "Before Migration" +msgstr "Antes de la migración" -msgid ":math:`pgr\\_maxFlow(edges\\_sql, source, sink) = \\boldsymbol{\\Phi}`" -msgstr ":math:`pgr\\_maxFlow(edges\\_sql, source, sink) = \\boldsymbol{\\Phi}`" +msgid "Output columns were |old-generic-result|" +msgstr "Las columnas de resultados eran |old-generic-result|" msgid "" -":math:`\\boldsymbol{\\Phi} = {(id_i, edge\\_id_i, source_i, target_i, " -"flow_i, residual\\_capacity_i)}`" +"Depending on the overload used, the columns ``start_vid`` and ``end_vid`` " +"might be missing:" msgstr "" -":math:`\\boldsymbol{\\Phi} = {(id_i, edge\\_id_i, source_i, target_i, " -"flow_i, residual\\_capacity_i)}`" +"Dependiendo de la firma utilizada, es posible que falten las columnas " +"``start_vid`` y ``end_vid``:" msgid "" -":math:`\\boldsymbol{\\Phi}` is a subset of the original edges with their " -"residual capacity and flow. The maximum flow through the graph can be " -"obtained by aggregating on the source or sink and summing the flow from/to " -"it. In particular:" -msgstr "" -":math:`\\boldsymbol{\\Phi}` es un subconjunto de las aristas originales con " -"su flujo y capacidad residual. El flujo máximo a través del grafo se puede " -"obtener agregando en el origen o sumidero y sumiendo el flujo hacia él. En " -"particular:" +"``pgr_aStar`` (`One to One`) does not have ``start_vid`` and ``end_vid``." +msgstr "``pgr_aStar`` (`Uno a Uno`) no tiene ``start_vid`` ni ``end_vid``." -msgid ":math:`id_i = i`" -msgstr ":math:`id_i = i`" +msgid "``pgr_aStar`` (`One to Many`) does not have ``start_vid``." +msgstr "``pgr_aStar`` (`Uno a Muchos`) no tiene ``start_vid``." -msgid ":math:`edge\\_id = id_i` in edges_sql" -msgstr ":math:`edge\\_id = id_i` en edges_sql" +msgid "``pgr_aStar`` (`Many to One`) does not have ``end_vid``." +msgstr "``pgr_aStar`` (`Muchos a Uno`) no tiene ``end_vid``." -msgid ":math:`residual\\_capacity_i = capacity_i - flow_i`" -msgstr ":math:`residual\\_capacity_i = capacity_i - flow_i`" +msgid "Migration" +msgstr "Migración" -msgid "https://en.wikipedia.org/wiki/Maximum_flow_problem" -msgstr "https://en.wikipedia.org/wiki/Maximum_flow_problem" +msgid "Be aware of the existence of the additional columns." +msgstr "Tener en cuenta la existencia de las columnas adicionales." -msgid "" -"pgRouting extends the `PostGIS `__/`PostgreSQL `__ geospatial database to provide geospatial routing and " -"other network analysis functionality." -msgstr "" -"pgRouting extiende la base de datos geospacial de `PostGIS `__/`PostgreSQL `__ para proporcionar " -"enrutamiento geoespacial y otras funciones de análisis de red." +msgid "In ``pgr_aStar`` (`One to One`)" +msgstr "En ``pgr_aStar`` (`Uno a Uno`)" -msgid "This is the manual for pgRouting |release|." -msgstr "Este es el manual para la version |release| de pgRouting." +msgid "``start_vid`` contains the **start vid** parameter value." +msgstr "``start_vid`` contiene el valor del parámetro **start vid**." -msgid "Creative Commons Attribution-Share Alike 3.0 License" -msgstr "Licencia de Creative Commons Attribution-Share Alike 3.0" +msgid "``end_vid`` contains the **end vid** parameter value." +msgstr "``end_vid`` contiene el valor del parámetro **end vid**." + +msgid "In ``pgr_aStar`` (`One to Many`)" +msgstr "En ``pgr_aStar`` (`Uno a Muchos`)" + +msgid "In ``pgr_aStar`` (`Many to One`)" +msgstr "En ``pgr_aStar`` (`Muchos a Uno`)" + +msgid "If needed filter out the added columns, for example:" +msgstr "Si es necesario, filtrar las columnas añadidas, por ejemplo:" msgid "" -"The pgRouting Manual is licensed under a `Creative Commons Attribution-Share " -"Alike 3.0 License `_. Feel " -"free to use this material any way you like, but we ask that you attribute " -"credit to the pgRouting Project and wherever possible, a link back to " -"https://pgrouting.org. For other licenses used in pgRouting see the :ref:" -"`license` page." +"If needed add the new columns, similar to the following example where " +"``pgr_dijkstra`` is used, and the function had to be modified to be able to " +"return the new columns:" msgstr "" -"El Manual de pgRouting está bajo licencia `Creative Commons Attribution-" -"Share Alike 3.0 License `_. " -"Siéntase libre de usar este material de la manera que desee, pero le pedimos " -"que atribuya el crédito correspondiente al proyecto pgRouting y, siempre que " -"sea posible, visite https://pgrouting.org. Para otras licencias utilizadas " -"en pgRouting, consulte la página :ref:`license` ." +"Si es necesario añadir las nuevas columnas, similar al siguiente ejemplo " +"donde se utiliza ``pgr_dijkstra``, y la función tuvo que ser modificada para " +"poder devolver las nuevas columnas:" -msgid "General" -msgstr "General" +msgid "" +"In `v3.0 `__ the function " +"``my_dijkstra`` uses ``pgr_dijkstra``." +msgstr "" +"En `v3.0 `__ la función " +"``my_dijkstra`` utiliza ``pgr_dijkstra``." -msgid ":doc:`sampledata` that is used in the examples of this manual." -msgstr ":doc:`sampledata` es usado en los ejemplos de este manual." +msgid "" +"Starting from `v3.5 `__ the " +"function ``my_dijkstra`` returns the new additional columns of " +"``pgr_dijkstra``." +msgstr "" +"A partir de `v3.5 `__ la " +"función ``my_dijkstra`` devuelve las nuevas columnas adicionales de " +"``pgr_dijkstra``." -msgid "Pgrouting Concepts" -msgstr "Conceptos de pgRouting" +msgid "Migration of ``pgr_bdAstar``" +msgstr "Migración de ``pgr_bdAstar``" -msgid ":doc:`routingFunctions`" -msgstr ":doc:`routingFunctions`" +msgid "``pgr_bdAstar`` (`One to One`)" +msgstr "``pgr_bdAstar`` (`Uno a Uno`)" -msgid ":doc:`allpairs-family`" -msgstr ":doc:`allpairs-family`" +msgid "``pgr_bdAstar`` (`One to Many`)" +msgstr "``pgr_bdAstar`` (`Uno a Muchos`)" -msgid ":doc:`bdDijkstra-family`" -msgstr ":doc:`bdDijkstra-family`" +msgid "``pgr_bdAstar`` (`Many to One`)" +msgstr "``pgr_bdAstar`` (`Muchos a Uno`)" -msgid ":doc:`contraction-family`" -msgstr ":doc:`contraction-family`" +msgid "" +"``pgr_bdAstar`` (`One to One`) does not have ``start_vid`` and ``end_vid``." +msgstr "``pgr_bdAstar`` (`Uno to Uno`) no tiene ``start_vid`` ni ``end_vid``." -msgid ":doc:`dijkstra-family`" -msgstr ":doc:`dijkstra-family`" +msgid "``pgr_bdAstar`` (`One to Many`) does not have ``start_vid``." +msgstr "``pgr_bdAstar`` (`Uno a Muchos`) no tiene ``start_vid``." -msgid ":doc:`kruskal-family`" -msgstr ":doc:`kruskal-family`" +msgid "``pgr_bdAstar`` (`Many to One`) does not have ``end_vid``." +msgstr "``pgr_bdAstar`` (`Muchos a Uno`) no tiene ``end_vid``." -msgid ":doc:`pgr_kruskal`" -msgstr ":doc:`pgr_kruskal`" +msgid "In ``pgr_bdAstar`` (`One to One`)" +msgstr "En ``pgr_bdAstar`` (`Uno a Uno`)" -msgid ":doc:`pgr_kruskalDD`" -msgstr ":doc:`pgr_kruskalDD`" - -msgid ":doc:`prim-family`" -msgstr ":doc:`prim-family`" +msgid "In ``pgr_bdAstar`` (`One to Many`)" +msgstr "En ``pgr_bdAstar`` (`Uno a Muchos`)" -msgid ":doc:`pgr_prim`" -msgstr ":doc:`pgr_prim`" +msgid "In ``pgr_bdAstar`` (`Many to One`)" +msgstr "En ``pgr_bdAstar`` (`Muchos a Uno`)" -msgid ":doc:`pgr_primDD`" -msgstr ":doc:`pgr_primDD`" +msgid "Migration of ``pgr_dijkstra``" +msgstr "Migración de ``pgr_dijkstra``" -msgid ":doc:`reference`" -msgstr ":doc:`reference`" +msgid "" +"Starting from `v3.5.0 `__" +msgstr "" +"Comenzando en `v3.5.0 `__" -msgid ":doc:`pgr_version`" -msgstr ":doc:`pgr_version`" +msgid "``pgr_dijkstra`` (`One to One`)" +msgstr "``pgr_dijkstra`` (`Uno a Uno`)" -msgid ":doc:`pgr_full_version`" -msgstr ":doc:`pgr_full_version`" +msgid "``pgr_dijkstra`` (`One to Many`)" +msgstr "``pgr_dijkstra`` (`Uno a Muchos`)" -msgid ":doc:`topology-functions`" -msgstr ":doc:`topology-functions`" +msgid "``pgr_dijkstra`` (`Many to One`)" +msgstr "``pgr_dijkstra`` (`Muchos a Uno`)" msgid "" -"The following functions modify the database directly therefore the user must " -"have special permissions given by the administrators to use them." -msgstr "" -"Las siguientes funciones modifican la base de datos directamente, por lo que " -"el usuario debe tener permisos especiales otorgados por un administrador " -"para usarlos." +"``pgr_dijkstra`` (`One to One`) does not have ``start_vid`` and ``end_vid``." +msgstr "``pgr_dijkstra`` (`Uno to Uno`) no tiene ``start_vid`` ni ``end_vid``." -msgid ":doc:`pgr_createTopology` - create a topology based on the geometry." -msgstr "" -":doc:`pgr_createTopology` - crear una topología basada en la geometría." +msgid "``pgr_dijkstra`` (`One to Many`) does not have ``start_vid``." +msgstr "``pgr_dijkstra`` (`Uno a Muchos`) no tiene ``start_vid``." -msgid "" -":doc:`pgr_createVerticesTable` - reconstruct the vertices table based on the " -"source and target information." -msgstr "" -":doc:`pgr_createVerticesTable` - reconstruir la tabla de vértices en base a " -"la información de origen y destino." +msgid "``pgr_dijkstra`` (`Many to One`) does not have ``end_vid``." +msgstr "``pgr_dijkstra`` (`Muchos a Uno`) no tiene ``end_vid``." -msgid "" -":doc:`pgr_analyzeGraph` - to analyze the edges and vertices of the edge " -"table." -msgstr "" -":doc:`pgr_analyzeGraph` - para analizar los bordes y vértices de la tabla de " -"aristas." +msgid "In ``pgr_dijkstra`` (`One to One`)" +msgstr "En ``pgr_dijkstra`` (`Uno a Uno`)" -msgid ":doc:`pgr_analyzeOneWay` - to analyze directionality of the edges." -msgstr "" -":doc:`pgr_analyzeOneWay` - para analizar la direccionalidad de las aristas." +msgid "In ``pgr_dijkstra`` (`One to Many`)" +msgstr "En ``pgr_dijkstra`` (`Uno a Muchos`)" -msgid ":doc:`pgr_nodeNetwork` - to create nodes to a not noded edge table." -msgstr "" -":doc:`pgr_nodeNetwork` - para crear nodos a una tabla de aristas sin nodos." +msgid "In ``pgr_dijkstra`` (`Many to One`)" +msgstr "En ``pgr_dijkstra`` (`Muchos a Uno`)" -msgid ":doc:`pgr_trsp` - Turn Restriction Shortest Path (TRSP)" -msgstr ":doc:`pgr_trsp` - Camino más corto con restricción de giros (TRSP)" +msgid "If needed add the new columns, for example:" +msgstr "Si es necesario, añadir las nuevas columnas, por ejemplo:" -msgid "Functions by categories" -msgstr "Funciones por categorías" +msgid "Migration of ``pgr_drivingDistance``" +msgstr "Migración de ``pgr_drivingDistance``" -msgid ":doc:`cost-category`" -msgstr ":doc:`cost-category`" +msgid "" +"Starting from `v3.6.0 `__ :" +"doc:`pgr_drivingDistance` result columns are being standardized." +msgstr "" +"A partir de `v3.6.0 `__, " +"las columnas resultantes de :doc:`pgr_drivingDistance` son estandarizadas." -msgid ":doc:`costMatrix-category`" -msgstr ":doc:`costMatrix-category`" +msgid "from" +msgstr "de" -msgid ":doc:`drivingDistance-category`" -msgstr ":doc:`drivingDistance-category`" +msgid "|result-dij-dd|" +msgstr "|result-dij-dd|" -msgid ":doc:`KSP-category`" -msgstr ":doc:`KSP-category`" +msgid "to" +msgstr "a" -msgid ":doc:`spanningTree-family`" -msgstr ":doc:`spanningTree-family`" +msgid "|result-spantree|" +msgstr "|result-spantree|" -msgid ":doc:`BFS-category`" -msgstr ":doc:`BFS-category`" +msgid "pgr_drivingDistance(Single vertex)" +msgstr "pgr_drivingDistance(Vértice único)" -msgid ":doc:`DFS-category`" -msgstr ":doc:`DFS-category`" +msgid "pgr_drivingDistance(Multiple vertices)" +msgstr "pgr_drivingDistance(Múltiples vértices)" -msgid "Available Functions but not official pgRouting functions" -msgstr "Funciones disponibles pero no oficiales de pgRouting" +msgid "Output columns were |result-dij-dd|" +msgstr "Columnas de resultados eran |old-generic-result|" -msgid ":doc:`proposed`" -msgstr ":doc:`proposed`" +msgid "Does not have ``start_vid`` and ``depth`` result columns." +msgstr "No tiene las columnas ``start_vid`` ni ``depth`` en los resultados." -msgid ":doc:`experimental`" -msgstr ":doc:`experimental`" +msgid "Has ``from_v`` instead of ``start_vid`` result column." +msgstr "Tiene la columa de resultados ``from_v`` en vez de ``start_vid``." -msgid ":doc:`release_notes`" -msgstr ":doc:`release_notes`" +msgid "does not have ``depth`` result column." +msgstr "no tiene la columna ``depth`` en los resultados." -msgid "pgRouting 3.7.0 Release Notes" -msgstr "Notas de la versión de pgRouting 3.7.0" +msgid "Be aware of the existence and name change of the result columns." +msgstr "" +"Tener en cuenta la existencia y el cambio de nombre de las columnas de " +"resultados." msgid "" -"To see all issues & pull requests closed by this release see the `Git closed " -"milestone for 3.7.0 `__" +"Using `this `__ example." msgstr "" -"Para ver todos los problemas y solicitudes de extracción cerrados para ésta " -"versión, consulte la `meta cerrada 3.7.0 `_" +"Usando `éste `__ ejemplo." -msgid "Support" -msgstr "Soporte" +msgid "``depth`` contains the depth of the ``node``." +msgstr "``depth`` contiene la profundidad del ``node``." + +msgid "``pred`` contains the predecessor of the ``node``." +msgstr "``pred`` contiene el predecesor del ``nodo``." msgid "" -"`#2656 `__ Stop support of " -"PostgreSQL12 on pgrouting v3.7" +"If needed filter out the added columns, for example, to return the original " +"columns" msgstr "" -"`#2656 `__ PostgreSQL 12 " -"no se apya en pgrouting v3.7" - -msgid "Stopping support of PostgreSQL 12" -msgstr "PostgreSQL 12 ya no es soportado" - -msgid "CI does not test for PostgreSQL 12" -msgstr "CI no hace pruebas con PostgreSQL 12" +"Si es necesario, filtrar las columnas añadidas, por ejemplo, para devolver " +"las columnas originales" -msgid "New experimental functions" -msgstr "Nuevas funciones experimentales" +msgid "" +"Using `this `__ example." +msgstr "" +"Usando `éste `__ ejemplo." -msgid "Metrics" -msgstr "Métricas" +msgid "The ``from_v`` result column name changes to ``start_vid``." +msgstr "" +"El nombre de la columna de resultados ``from_v`` cambia a ``start_vid``." -msgid "pgr_betweennessCentrality" -msgstr "pgr_betweennessCentrality" +msgid "" +"If needed filter out and rename columns, for example, to return the original " +"columns:" +msgstr "" +"Si es necesario, filtrar y cambiar el nombre de las columnas, por ejemplo, " +"para devolver las columnas originales:" -msgid "Official functions changes" -msgstr "Cambios en las funciones oficiales" +msgid "" +"Migration of ``pgr_kruskalDD`` / ``pgr_kruskalBFS`` / ``pgr_kruskalDFS``" +msgstr "" +"Migración de ``pgr_kruskalDD`` / ``pgr_kruskalBFS`` / ``pgr_kruskalDFS``" msgid "" -"`#2605 `__ Standarize " -"spanning tree functions output" +"Starting from `v3.7.0 `__ :" +"doc:`pgr_kruskalDD`, :doc:`pgr_kruskalBFS` and :doc:`pgr_kruskalDFS` result " +"columns are being standardized." msgstr "" -"`#2605 `__ Estandarización " -"de las salida de las funciones de árbol de expansión" +"A partir de `v3.6.0 `__, " +"Las columnas resultantes de :doc:`pgr_kruskalDD`, :doc:`pgr_kruskalBFS` and :" +"doc:`pgr_kruskalDFS` son estandarizadas." -msgid "Functions:" -msgstr "Funciones:" +msgid "|result-bfs|" +msgstr "|result-bfs|" msgid "``pgr_kruskalDD``" msgstr "``pgr_kruskalDD``" +msgid "Single vertex" +msgstr "Vértice único" + +msgid "Multiple vertices" +msgstr "Múltiples vértices" + msgid "``pgr_kruskalDFS``" msgstr "``pgr_kruskalDFS``" msgid "``pgr_kruskalBFS``" msgstr "``pgr_kruskalBFS``" -msgid "``pgr_primDD``" -msgstr "``pgr_primDD``" +msgid "Output columns were |result-bfs|" +msgstr "Las columnas de salida fueron |result-bfs|" -msgid "``pgr_primDFS``" -msgstr "``pgr_primDFS``" +msgid "Single vertex and Multiple vertices" +msgstr "Vértice único y vértices múltiples" -msgid "``pgr_primBFS``" -msgstr "``pgr_primBFS``" +msgid "Do not have ``pred`` result column." +msgstr "No tiene columna de resultados ``pred``." -msgid "Standarizing output columns to |result-spantree|" -msgstr "Estandarización de columnas de resultados a |result-spantree|" +msgid "Be aware of the existence of `pred` result columns." +msgstr "Tenga en cuenta la existencia de columnas de resultados `pred`." -msgid "Added ``pred`` result columns." -msgstr "Agregado columna de resultados ``pred``." +msgid "If needed filter out the added columns" +msgstr "Si es necesario, filtrar las columnas añadidas" -msgid "Experimental promoted to proposed." -msgstr "Experimental promovido a propuesto." +msgid "Kruskal single vertex" +msgstr "Kruskal vértice único" msgid "" -"`#2635 `__ pgr_LineGraph " -"ignores directed flag and use negative values for identifiers." +"Using ``pgr_KruskalDD`` as example. Migration is similar to al the affected " +"functions." msgstr "" -"`#2635 `__ pgr_LineGraph " -"ignora la bandera directed y usa valores negatives para identificadores." - -msgid "``pgr_lineGraph``" -msgstr "``pgr_lineGraph``" - -msgid "Promoted to **proposed** signature." -msgstr "Promovido a firma **propuesta**." - -msgid "Works for directed and undirected graphs." -msgstr "Funciona para grafos dirigidos y no dirigidos." - -msgid "Code enhancement" -msgstr "Mejora del código" +"Usar ``pgr_KruskalDD`` como ejemplo. La migración es similar a todas las " +"funciones afectadas." msgid "" -"`#2599 `__ Driving " -"distance cleanup" +"Comparing with `this `__ example." msgstr "" -"`#2599 `__ Limpieza de la " -"distancia de conducción" +"Comparación con `este ejemplo `__." msgid "" -"`#2607 `__ Read postgresql " -"data on C++" +"Now column ``pred`` exists and contains the predecessor of the ``node``." msgstr "" -"`#2607 `__ Leer datos " -"postgresql en C++" +"Ahora la columna ``pred`` existe y contiene el predecesor del ``node``." + +msgid "Kruskal multiple vertices" +msgstr "Kruskal vértices múltiples" msgid "" -"`#2614 `__ Clang tidy does " -"not work" +"Comparing with `this `__ example." msgstr "" -"`#2614 `__ Clang tidy no " -"funciona" - -msgid "All releases" -msgstr "Todas las versiones" - -msgid "Kruskal - Family of functions" -msgstr "Kruskal - Familia de funciones" +"Comparación con `este ejemplo `__." -msgid "Boost Graph Inside" -msgstr "Adentro: Boost Graph" +msgid "Migration of ``pgr_KSP``" +msgstr "Migración de ``pgr_KSP``" msgid "" -"Kruskal's algorithm is a greedy minimum spanning tree algorithm that in each " -"cycle finds and adds the edge of the least possible weight that connects any " -"two trees in the forest." +"Starting from `v3.6.0 `__ :" +"doc:`pgr_KSP` result columns are being standardized." msgstr "" -"Kruskal es un ambicioso algoritmo para generar un árbol de expansión mínimo " -"que en cada ciclo encuentra y agrega la arista del menor peso posible que " -"conecta dos árboles en el bosque." - -msgid "**The main Characteristics are:**" -msgstr "**Las características principales son:**" +"A partir de `v3.6.0 `__ " +"En :doc:`pgr_KSP` las columnas de resultados están siendo estandarizadas." -msgid "The total weight of all the edges in the tree or forest is minimized." -msgstr "Se minimiza el peso total de todos los bordes del árbol o bosque." +msgid "|ksp-result|" +msgstr "|ksp-result|" -msgid "Kruskal's running time: :math:`O(E * log E)`" -msgstr "Tiempo de ejecución de Kruskal: :math:`O(E * log E)`" +msgid "|nksp-result|" +msgstr "|nksp-result|" -msgid "Metrics - Family of functions" -msgstr "Métricas - Familia de funciones" +msgid "``pgr_KSP`` (One to One)" +msgstr "``pgr_KSP`` (Uno a Uno)" -msgid "Migration guide" -msgstr "Guía de migración" +msgid "Output columns were |ksp-result|" +msgstr "Columnas de resultados eran |ksp-result|" -msgid "" -"Several functions are having changes on the signatures, and/or have been " -"replaced by new functions." -msgstr "" -"Varias funciones están teniendo cambios en las firmas, y/o han sido " -"remplazadas por nuevas funciones." +msgid "the columns ``start_vid`` and ``end_vid`` do not exist." +msgstr "las columnas ``start_vid`` y ``end_vid`` no existen." -msgid "Results can be different because of the changes." -msgstr "Resultados pueden ser diferentes dado los cambios." +msgid "``pgr_KSP`` (One to One) does not have ``start_vid`` and ``end_vid``." +msgstr "``pgr_KSP`` (Uno a Uno) no tiene ``start_vid`` ni ``end_vid``." -msgid "All deprecated functions will be removed on next mayor version 4.0.0" +msgid "" +"Using `this `__ " +"example." msgstr "" -"Todas las funciones obsoletas serán removidas en las siguiente versión mayor " -"4.0.0" - -msgid "Migration of functions" -msgstr "Migración de funciones" - -msgid "Migrating functions" -msgstr "Migrando funciones" - -msgid "Migration of ``pgr_aStar``" -msgstr "Migración de ``pgr_aStar``" +"Usando `éste `__ " +"ejemplo." msgid "" -"Starting from `v3.6.0 `__" +"If needed filter out the added columns, for example, to return the original " +"columns:" msgstr "" -"Comenzando en `v3.6.0 `__" - -msgid "Signatures to be migrated:" -msgstr "Firmas que serán migradas:" - -msgid "``pgr_aStar`` (`One to One`)" -msgstr "``pgr_aStar`` (`Uno a Uno`)" - -msgid "``pgr_aStar`` (`One to Many`)" -msgstr "``pgr_aStar`` (`Uno a Muchos`)" - -msgid "``pgr_aStar`` (`Many to One`)" -msgstr "``pgr_aStar`` (`Muchos a Uno`)" - -msgid "Before Migration" -msgstr "Antes de la migración" +"Si es necesario, filtrar las columnas añadidas, por ejemplo, para devolver " +"las columnas originales:" -msgid "Output columns were |old-generic-result|" -msgstr "Las columnas de resultados eran |old-generic-result|" +msgid "Migration of ``pgr_maxCardinalityMatch``" +msgstr "Migración de ``pgr_maxCardinalityMatch``" msgid "" -"Depending on the overload used, the columns ``start_vid`` and ``end_vid`` " -"might be missing:" +":doc:`pgr_maxCardinalityMatch` works only for undirected graphs, therefore " +"the ``directed`` flag has been removed." msgstr "" -"Dependiendo de la firma utilizada, es posible que falten las columnas " -"``start_vid`` y ``end_vid``:" +":doc:`pgr_maxCardinalityMatch` funciona solamente para grafos no dirigidos, " +"entonces la bandera ``directed`` ha sido removida." msgid "" -"``pgr_aStar`` (`One to One`) does not have ``start_vid`` and ``end_vid``." -msgstr "``pgr_aStar`` (`Uno a Uno`) no tiene ``start_vid`` ni ``end_vid``." - -msgid "``pgr_aStar`` (`One to Many`) does not have ``start_vid``." -msgstr "``pgr_aStar`` (`Uno a Muchos`) no tiene ``start_vid``." +"Starting from `v3.4.0 `__" +msgstr "" +"A partir de v3.4.0 `__" -msgid "``pgr_aStar`` (`Many to One`) does not have ``end_vid``." -msgstr "``pgr_aStar`` (`Muchos a Uno`) no tiene ``end_vid``." +msgid "Signature to be migrated:" +msgstr "Firma que serán migrada:" -msgid "Migration" -msgstr "Migración" +msgid "Migration is needed, because:" +msgstr "Migración es necesaria, porque:" -msgid "Be aware of the existence of the additional columns." -msgstr "Tener en cuenta la existencia de las columnas adicionales." +msgid "Use ``cost`` and ``reverse_cost`` on the inner query" +msgstr "Usa ``cost`` y ``reverse_cost`` en la consulta interna" -msgid "In ``pgr_aStar`` (`One to One`)" -msgstr "En ``pgr_aStar`` (`Uno a Uno`)" +msgid "Results are ordered" +msgstr "Los resultados son ordenados" -msgid "``start_vid`` contains the **start vid** parameter value." -msgstr "``start_vid`` contiene el valor del parámetro **start vid**." +msgid "Works for undirected graphs." +msgstr "Funciona para grafos no dirigidos." -msgid "``end_vid`` contains the **end vid** parameter value." -msgstr "``end_vid`` contiene el valor del parámetro **end vid**." +msgid "New signature" +msgstr "Nueva firma" -msgid "In ``pgr_aStar`` (`One to Many`)" -msgstr "En ``pgr_aStar`` (`Uno a Muchos`)" +msgid "``pgr_maxCardinalityMatch(text)`` returns only ``edge`` column." +msgstr "" +"``pgr_maxCardinalityMatch(text)`` regresa solamente la columna ``edge``." -msgid "In ``pgr_aStar`` (`Many to One`)" -msgstr "En ``pgr_aStar`` (`Muchos a Uno`)" +msgid "The optional flag ``directed`` is removed." +msgstr "La bandera opcional ``directed`` es removida." -msgid "If needed filter out the added columns, for example:" -msgstr "Si es necesario, filtrar las columnas añadidas, por ejemplo:" +msgid "Before migration" +msgstr "Antes de migración" msgid "" -"If needed add the new columns, similar to the following example where " -"``pgr_dijkstra`` is used, and the function had to be modified to be able to " -"return the new columns:" +"Columns used are ``going`` and ``coming`` to represent the existence of an " +"edge." msgstr "" -"Si es necesario añadir las nuevas columnas, similar al siguiente ejemplo " -"donde se utiliza ``pgr_dijkstra``, y la función tuvo que ser modificada para " -"poder devolver las nuevas columnas:" +"Las columnas usadas son ``going`` y ``coming`` para representar la " +"existencia de la arista." msgid "" -"In `v3.0 `__ the function " -"``my_dijkstra`` uses ``pgr_dijkstra``." +"Flag ``directed`` was used to indicate if it was for a **directed** or " +"**undirected** graph." msgstr "" -"En `v3.0 `__ la función " -"``my_dijkstra`` utiliza ``pgr_dijkstra``." +"La flag ``directed`` es usada para indicar si fue para un grafo **dirigido** " +"or **no dirigido**." + +msgid "The flag ``directed`` is ignored." +msgstr "La bandera ``directed`` es ignorada." msgid "" -"Starting from `v3.5 `__ the " -"function ``my_dijkstra`` returns the new additional columns of " -"``pgr_dijkstra``." +"Regardless of it's value it gives the result considering the graph as " +"**undirected**." msgstr "" -"A partir de `v3.5 `__ la " -"función ``my_dijkstra`` devuelve las nuevas columnas adicionales de " -"``pgr_dijkstra``." +"Independiente de su valor, da el resultado considerando el grafo como **no " +"dirigido**." -msgid "Migration of ``pgr_bdAstar``" -msgstr "Migración de ``pgr_bdAstar``" +msgid "" +"Use the columns ``cost`` and ``reverse_cost`` to represent the existence of " +"an edge." +msgstr "" +"Usa las columnas ``cost`` y ``reverse_cost`` para representar la existenica " +"de una arista." -msgid "``pgr_bdAstar`` (`One to One`)" -msgstr "``pgr_bdAstar`` (`Uno a Uno`)" +msgid "Do not use the flag ``directed``." +msgstr "No use la bandera ``directed``." -msgid "``pgr_bdAstar`` (`One to Many`)" -msgstr "``pgr_bdAstar`` (`Uno a Muchos`)" +msgid "In the query returns only ``edge`` column." +msgstr "En la consulta solo devuelve la columna ``edge``." -msgid "``pgr_bdAstar`` (`Many to One`)" -msgstr "``pgr_bdAstar`` (`Muchos a Uno`)" +msgid "Migration of ``pgr_primDD`` / ``pgr_primBFS`` / ``pgr_primDFS``" +msgstr "Migración de ``pgr_primDD`` / ``pgr_primBFS`` / ``pgr_primDFS``" msgid "" -"``pgr_bdAstar`` (`One to One`) does not have ``start_vid`` and ``end_vid``." -msgstr "``pgr_bdAstar`` (`Uno to Uno`) no tiene ``start_vid`` ni ``end_vid``." - -msgid "``pgr_bdAstar`` (`One to Many`) does not have ``start_vid``." -msgstr "``pgr_bdAstar`` (`Uno a Muchos`) no tiene ``start_vid``." - -msgid "``pgr_bdAstar`` (`Many to One`) does not have ``end_vid``." -msgstr "``pgr_bdAstar`` (`Muchos a Uno`) no tiene ``end_vid``." +"Starting from `v3.7.0 `__ :" +"doc:`pgr_primDD`, :doc:`pgr_primBFS` and :doc:`pgr_primDFS` result columns " +"are being standardized." +msgstr "" +"A partir de `v3.7.0 `__ se " +"estandarizan las columnas de resultados :doc:`pgr_primDD`, :doc:" +"`pgr_primBFS` y :doc:`pgr_primDFS`." -msgid "In ``pgr_bdAstar`` (`One to One`)" -msgstr "En ``pgr_bdAstar`` (`Uno a Uno`)" +msgid "``pgr_primDD``" +msgstr "``pgr_primDD``" -msgid "In ``pgr_bdAstar`` (`One to Many`)" -msgstr "En ``pgr_bdAstar`` (`Uno a Muchos`)" +msgid "``pgr_primDFS``" +msgstr "``pgr_primDFS``" -msgid "In ``pgr_bdAstar`` (`Many to One`)" -msgstr "En ``pgr_bdAstar`` (`Muchos a Uno`)" +msgid "``pgr_primBFS``" +msgstr "``pgr_primBFS``" -msgid "Migration of ``pgr_dijkstra``" -msgstr "Migración de ``pgr_dijkstra``" +msgid "Prim single vertex" +msgstr "Prim vértice único" msgid "" -"Starting from `v3.5.0 `__" +"Using ``pgr_primDD`` as example. Migration is similar to al the affected " +"functions." msgstr "" -"Comenzando en `v3.5.0 `__" +"Usando ``pgr_primDD`` como ejemplo. La migración es similar para todas las " +"funciones afectadas." -msgid "``pgr_dijkstra`` (`One to One`)" -msgstr "``pgr_dijkstra`` (`Uno a Uno`)" +msgid "" +"Comparing with `this `__ example." +msgstr "" +"Comparación con `este ejemplo `__." -msgid "``pgr_dijkstra`` (`One to Many`)" -msgstr "``pgr_dijkstra`` (`Uno a Muchos`)" - -msgid "``pgr_dijkstra`` (`Many to One`)" -msgstr "``pgr_dijkstra`` (`Muchos a Uno`)" +msgid "Prim multiple vertices" +msgstr "Prim vértices múltiples" msgid "" -"``pgr_dijkstra`` (`One to One`) does not have ``start_vid`` and ``end_vid``." -msgstr "``pgr_dijkstra`` (`Uno to Uno`) no tiene ``start_vid`` ni ``end_vid``." +"Comparing with `this `__ example." +msgstr "" +"Comparación con `este ejemplo `__." -msgid "``pgr_dijkstra`` (`One to Many`) does not have ``start_vid``." -msgstr "``pgr_dijkstra`` (`Uno a Muchos`) no tiene ``start_vid``." +msgid "Migration of ``pgr_withPointsDD``" +msgstr "Migración de ``pgr_withPointsDD``" -msgid "``pgr_dijkstra`` (`Many to One`) does not have ``end_vid``." -msgstr "``pgr_dijkstra`` (`Muchos a Uno`) no tiene ``end_vid``." +msgid "" +"Starting from `v3.6.0 `__ :" +"doc:`pgr_withPointsDD` result columns are being standardized." +msgstr "" +"A partir de `v3.6.0 `__ " +"En :doc:`pgr_withPointsDD` las columnas de resultados están siendo " +"estandarizadas." -msgid "In ``pgr_dijkstra`` (`One to One`)" -msgstr "En ``pgr_dijkstra`` (`Uno a Uno`)" +msgid "|result-generic-no-seq|" +msgstr "|result-generic-no-seq|" -msgid "In ``pgr_dijkstra`` (`One to Many`)" -msgstr "En ``pgr_dijkstra`` (`Uno a Muchos`)" +msgid "" +"And ``driving_side`` parameter changed from named optional to unnamed " +"compulsory **driving side** and its validity differ for directed and " +"undirected graphs." +msgstr "" +"Y el parámetro ``driving_side`` cambió de opcional con nombre a obligatorio " +"sin nombre **driving side** y su validez difiere para grafos dirigidos y no " +"dirigidos." -msgid "In ``pgr_dijkstra`` (`Many to One`)" -msgstr "En ``pgr_dijkstra`` (`Muchos a Uno`)" +msgid "``pgr_withPointsDD`` (Single vertex)" +msgstr "``pgr_withPointsDD`` (vértice único)" -msgid "If needed add the new columns, for example:" -msgstr "Si es necesario, añadir las nuevas columnas, por ejemplo:" +msgid "``pgr_withPointsDD`` (Multiple vertices)" +msgstr "``pgr_withPointsDD`` (Múltiples vértices)" -msgid "Migration of ``pgr_drivingdistance``" -msgstr "Migración de ``pgr_drivingDistance``" +msgid "Output columns were |result-1-1-no-seq|" +msgstr "Las columnas de resultados eran |result-1-1-no-seq|" + +msgid "Does not have ``start_vid``, ``pred`` and ``depth`` result columns." +msgstr "No tiene columnas de resultados ``start_vid``, ``pred`` y ``depth``." msgid "" -"Starting from `v3.6.0 `__ :" -"doc:`pgr_drivingDistance` result columns are being standardized." +"``driving_side`` parameter was named optional now it is compulsory unnamed." msgstr "" -"A partir de `v3.6.0 `__, " -"las columnas resultantes de :doc:`pgr_drivingDistance` son estandarizadas." - -msgid "from" -msgstr "de" +"El parámetro ``driving_side`` era opcional ahora es obligatorio sin nombre." -msgid "|result-dij-dd|" -msgstr "|result-dij-dd|" +msgid "``pgr_withPointsDD`` (`Multiple vertices`)" +msgstr "``pgr_withPointsDD`` (`Vértices múltiples`)" -msgid "to" -msgstr "a" +msgid "Output columns were |result-m-1-no-seq|" +msgstr "Las columnas de salida eran |result-m-1-no-seq|" -msgid "|result-spantree|" -msgstr "|result-spantree|" +msgid "Does not have ``depth`` and ``pred`` result columns." +msgstr "No tiene columnas de resultados ``depth`` y ``pred``." -msgid "``pgr_drivingdistance`` (Single vertex)" -msgstr "``pgr_drivingDistance`` (Vértice único)" +msgid "Driving side was optional" +msgstr "El lado de manejo era opcional" -msgid "``pgr_drivingdistance`` (Multiple vertices)" -msgstr "``pgr_drivingDistance`` (Múltiples vértices)" +msgid "The default values on this query are:" +msgstr "Los valores predeterminados en esta consulta son:" -msgid "Output columns were |result-dij-dd|" -msgstr "Columnas de resultados eran |old-generic-result|" +msgid "directed" +msgstr "dirigido" -msgid "Does not have ``start_vid`` and ``depth`` result columns." -msgstr "No tiene las columnas ``start_vid`` ni ``depth`` en los resultados." +msgid "true" +msgstr "verdadero" -msgid "Has ``from_v`` instead of ``start_vid`` result column." -msgstr "Tiene la columa de resultados ``from_v`` en vez de ``start_vid``." +msgid "driving_side" +msgstr "driving_side" -msgid "does not have ``depth`` result column." -msgstr "no tiene la columna ``depth`` en los resultados." +msgid "'b'" +msgstr "'b'" -msgid "Be aware of the existence and name change of the result columns." -msgstr "" -"Tener en cuenta la existencia y el cambio de nombre de las columnas de " -"resultados." +msgid "details" +msgstr "detalles" -msgid "" -"Using `this `__ example." -msgstr "" -"Usando `éste `__ ejemplo." +msgid "false" +msgstr "``false``" -msgid "``depth`` contains the depth of the ``node``." -msgstr "``depth`` contiene la profundidad del ``node``." +msgid "Driving side was named optional" +msgstr "El lado de manejo era opcional con nombre" -msgid "``pred`` contains the predecessor of the ``node``." -msgstr "``pred`` contiene el predecesor del ``nodo``." +msgid "On directed graph ``b`` could be used as **driving side**" +msgstr "En un grafo dirigido ``b`` podía usarse como **lado de manejo**" -msgid "" -"If needed filter out the added columns, for example, to return the original " -"columns" -msgstr "" -"Si es necesario, filtrar las columnas añadidas, por ejemplo, para devolver " -"las columnas originales" +msgid "On undirected graph ``r`` could be used as **driving side**" +msgstr "En un grafo no dirigido ``r`` podía usarse como **lado de manejo**" -msgid "" -"Using `this `__ example." -msgstr "" -"Usando `éste `__ ejemplo." +msgid "Also ``l`` could be used as **driving side**" +msgstr "También `` l`` podía usarse como \"lado de manejo\"" -msgid "The ``from_v`` result column name changes to ``start_vid``." -msgstr "" -"El nombre de la columna de resultados ``from_v`` cambia a ``start_vid``." +msgid "After Migration" +msgstr "Después de la migración" -msgid "" -"If needed filter out and rename columns, for example, to return the original " -"columns:" +msgid "Be aware of the existence of the additional result Columns." msgstr "" -"Si es necesario, filtrar y cambiar el nombre de las columnas, por ejemplo, " -"para devolver las columnas originales:" +"Tener en cuenta la existencia de las columnas adicionales de resultados." -msgid "" -"Migration of ``pgr_kruskalDD`` / ``pgr_kruskalBFS`` / ``pgr_kruskalDFS``" -msgstr "" -"Migración de ``pgr_kruskalDD`` / ``pgr_kruskalBFS`` / ``pgr_kruskalDFS``" +msgid "New output columns are |result-spantree|" +msgstr "Las nuevas columnas de salida son |result-spantree|" msgid "" -"Starting from `v3.7.0 `__ :" -"doc:`pgr_kruskalDD`, :doc:`pgr_kruskalBFS` and :doc:`pgr_kruskalDFS` result " -"columns are being standardized." +"**driving side** parameter is unnamed compulsory, and valid values differ " +"for directed and undirected graphs." msgstr "" -"A partir de `v3.6.0 `__, " -"Las columnas resultantes de :doc:`pgr_kruskalDD`, :doc:`pgr_kruskalBFS` and :" -"doc:`pgr_kruskalDFS` son estandarizadas." - -msgid "|result-bfs|" -msgstr "|result-bfs|" - -msgid "Single vertex" -msgstr "Vértice único" - -msgid "Multiple vertices" -msgstr "Múltiples vértices" - -msgid "Output columns were |result-bfs|" -msgstr "Las columnas de salida fueron |result-bfs|" - -msgid "Single vertex and Multiple vertices" -msgstr "Vértice único y vértices múltiples" +"El parámetro **lado de manjeo** es obligatorio sin nombre, y los valores " +"válidos difieren para grafos dirigidos y no dirigidos." -msgid "Do not have ``pred`` result column." -msgstr "No tiene columna de resultados ``pred``." +msgid "Does not have a default value." +msgstr "No tiene un valor de facto." -msgid "Be aware of the existence of `pred` result columns." -msgstr "Tenga en cuenta la existencia de columnas de resultados `pred`." +msgid "In directed graph: valid values are [``r``, ``R``, ``l``, ``L``]" +msgstr "" +"En grafos dirigidos: Los valores válidos son [``r``, ``R``, ``l``, ``L``]" -msgid "If needed filter out the added columns" -msgstr "Si es necesario, filtrar las columnas añadidas" +msgid "In undirected graph: valid values are [``b``, ``B``]" +msgstr "En grafos no dirigidos: Los valores válidos son [``b``, ``B``]" -msgid "Kruskal single vertex" -msgstr "Kruskal vértice único" +msgid "Using an invalid value throws an ``ERROR``." +msgstr "El uso de un valor inválido lanza un ``ERROR``." msgid "" -"Using ``pgr_KruskalDD`` as example. Migration is similar to al the affected " -"functions." +"Using `this `__ example." msgstr "" -"Usar ``pgr_KruskalDD`` como ejemplo. La migración es similar a todas las " -"funciones afectadas." +"Usando `éste `__ ejemplo." msgid "" -"Comparing with `this `__ example." +"``depth`` contains the **depth** from the ``start_vid`` vertex to the " +"``node``." msgstr "" -"Comparación con `este ejemplo `__." +"``depth`` contiene la **profundidad** desde el vértice ``start_vid`` hasta " +"el ``node``." msgid "" -"Now column ``pred`` exists and contains the predecessor of the ``node``." +"To migrate, use an unnamed valid value for **driving side** after the " +"**distance** parameter:" msgstr "" -"Ahora la columna ``pred`` existe y contiene el predecesor del ``node``." +"Para migrar, utilizar un valor válido sin nombre para **lado de manejo** " +"después del parámetro **distancia**:" -msgid "Kruskal multiple vertices" -msgstr "Kruskal vértices múltiples" +msgid "To get results from previous versions:" +msgstr "Para obtener resultados de versiones anteriores:" + +msgid "filter out the additional columns, for example;" +msgstr "filtrar las columnas adicionales, por ejemplo;" msgid "" -"Comparing with `this `__ example." +"When ``details => false`` to remove the points use ``WHERE node >= 0 OR cost " +"= 0``" msgstr "" -"Comparación con `este ejemplo `__." +"Cuando ``details => false`` para eliminar los puntos usar ``WHERE node >= 0 " +"OR cost = 0``" -msgid "Migration of ``pgr_KSP``" -msgstr "Migración de ``pgr_KSP``" +msgid "" +"Using `this `__ example." +msgstr "" +"Usando `éste `__ ejemplo." + +msgid "Filter out the additional columns" +msgstr "Filtrar las columnas adicionales" + +msgid "Migration of ``pgr_withPointsKSP``" +msgstr "Migración de ``pgr_withPointsKSP``" msgid "" "Starting from `v3.6.0 `__ :" -"doc:`pgr_KSP` result columns are being standardized." +"doc:`pgr_withPointsKSP` result columns are being standardized." msgstr "" "A partir de `v3.6.0 `__ " -"En :doc:`pgr_KSP` las columnas de resultados están siendo estandarizadas." - -msgid "|ksp-result|" -msgstr "|ksp-result|" - -msgid "|nksp-result|" -msgstr "|nksp-result|" +"en :doc:`pgr_withPointsKSP` las columnas de resultados están siendo " +"estandarizadas." -msgid "``pgr_KSP`` (One to One)" -msgstr "``pgr_KSP`` (Uno a Uno)" +msgid "" +"And ``driving side`` parameter changed from named optional to unnamed " +"compulsory **driving side** and its validity differ for directed and " +"undirected graphs." +msgstr "" +"Y el parámetro \"driving side\" ha cambiado de opcional con nombre a " +"obligatorio sin nombre **driving side** y su validez difiere para grafos " +"dirigidos y no dirigidos." -msgid "Output columns were |ksp-result|" -msgstr "Columnas de resultados eran |ksp-result|" +msgid "``pgr_withPointsKSP`` (`One to One`)" +msgstr "``pgr_withPointsKSP`` (`Uno a Uno`)" -msgid "the columns ``start_vid`` and ``end_vid`` do not exist." -msgstr "las columnas ``start_vid`` y ``end_vid`` no existen." +msgid "Output columns were |old-pid-result|" +msgstr "Regresa conjunto de |old-generic-result|" -msgid "``pgr_KSP`` (One to One) does not have ``start_vid`` and ``end_vid``." -msgstr "``pgr_KSP`` (Uno a Uno) no tiene ``start_vid`` ni ``end_vid``." +msgid "New output columns are |nksp-result|" +msgstr "Las nuevas columnas de salida son |nksp-result|" msgid "" -"Using `this `__ " -"example." +"Using `this `__ example." msgstr "" -"Usando `éste `__ " -"ejemplo." +"Usando `este `__ ejemplo." msgid "" -"If needed filter out the added columns, for example, to return the original " -"columns:" +"If needed filter out the additional columns, for example, to return the " +"original columns:" msgstr "" -"Si es necesario, filtrar las columnas añadidas, por ejemplo, para devolver " -"las columnas originales:" +"Si es necesario, filtrar las columnas adicionales, por ejemplo, para " +"devolver las columnas originales:" -msgid "Migration of ``pgr_maxCardinalityMatch``" -msgstr "Migración de ``pgr_maxCardinalityMatch``" +msgid "Migration of ``pgr_trsp`` (Vertices)" +msgstr "Migración de `pgr_trsp`` (Vértices)" -msgid "" -":doc:`pgr_maxCardinalityMatch` works only for undirected graphs, therefore " -"the ``directed`` flag has been removed." -msgstr "" -":doc:`pgr_maxCardinalityMatch` funciona solamente para grafos no dirigidos, " -"entonces la bandera ``directed`` ha sido removida." +msgid "Signature:" +msgstr "Firma:" -msgid "" -"Starting from `v3.4.0 `__" -msgstr "" -"A partir de v3.4.0 `__" +msgid "Deprecated" +msgstr "Obsoleto" -msgid "Signature to be migrated:" -msgstr "Firma que serán migrada:" +msgid "`v3.4.0 `__" +msgstr "`v3.4.0 `__" -msgid "Migration is needed, because:" -msgstr "Migración es necesaria, porque:" +msgid "Removed" +msgstr "Eliminado" -msgid "Use ``cost`` and ``reverse_cost`` on the inner query" -msgstr "Usa ``cost`` y ``reverse_cost`` en la consulta interna" +msgid "`v4.0.0 `__" +msgstr "`v4.0.0 `__" -msgid "Results are ordered" -msgstr "Los resultados son ordenados" +msgid ":doc:`pgr_dijkstra`" +msgstr ":doc:`pgr_dijkstra`" -msgid "Works for undirected graphs." -msgstr "Funciona para grafos no dirigidos." +msgid ":doc:`pgr_trsp`" +msgstr ":doc:`pgr_trsp`" -msgid "New signature" -msgstr "Nueva firma" +msgid "`Migration of restrictions`_" +msgstr "`Migración de restricciones`_" -msgid "``pgr_maxCardinalityMatch(text)`` returns only ``edge`` column." -msgstr "" -"``pgr_maxCardinalityMatch(text)`` regresa solamente la columna ``edge``." +msgid "Use ``pgr_dijkstra`` when there are no restrictions." +msgstr "Usar ``pgr_dijkstra`` cuando no hay restricciones." -msgid "The optional flag ``directed`` is removed." -msgstr "La bandera opcional ``directed`` es removida." +msgid "Use :doc:`pgr_dijkstra` instead." +msgstr "Usa en vez :doc:`pgr_dijkstra`." -msgid "Before migration" -msgstr "Antes de migración" +msgid "To get the original column names:" +msgstr "Para obtener los nombres originales de las columnas:" -msgid "" -"Columns used are ``going`` and ``coming`` to represent the existence of an " -"edge." -msgstr "" -"Las columnas usadas son ``going`` y ``coming`` para representar la " -"existencia de la arista." +msgid "``id1`` is the node" +msgstr "``id1`` es el nodo" -msgid "" -"Flag ``directed`` was used to indicate if it was for a **directed** or " -"**undirected** graph." -msgstr "" -"La flag ``directed`` es usada para indicar si fue para un grafo **dirigido** " -"or **no dirigido**." +msgid "``id2`` is the edge" +msgstr "``id2`` es la arista" -msgid "The flag ``directed`` is ignored." -msgstr "La bandera ``directed`` es ignorada." +msgid "Use ``pgr_trsp`` when there are restrictions." +msgstr "Usar ``pgr_trspVia`` cuando hay restricciones." -msgid "" -"Regardless of it's value it gives the result considering the graph as " -"**undirected**." -msgstr "" -"Independiente de su valor, da el resultado considerando el grafo como **no " -"dirigido**." +msgid "Use :doc:`pgr_trsp` (One to One) instead." +msgstr "Utilice en su lugar :doc:`pgr_trsp` (Uno a Uno)." -msgid "" -"Use the columns ``cost`` and ``reverse_cost`` to represent the existence of " -"an edge." -msgstr "" -"Usa las columnas ``cost`` y ``reverse_cost`` para representar la existenica " -"de una arista." +msgid "Migration of ``pgr_trsp`` (Edges)" +msgstr "Migración de ``pgr_trsp`` (Aristas)" -msgid "Do not use the flag ``directed``." -msgstr "No use la bandera ``directed``." +msgid ":doc:`pgr_withPoints`" +msgstr ":doc:`pgr_withPoints`" -msgid "In the query returns only ``edge`` column." -msgstr "En la consulta solo devuelve la columna ``edge``." +msgid ":doc:`pgr_trsp_withPoints`" +msgstr ":doc:`pgr_trsp_withPoints`" -msgid "Migration of ``pgr_primDD`` / ``pgr_primBFS`` / ``pgr_primDFS``" -msgstr "Migración de ``pgr_primDD`` / ``pgr_primBFS`` / ``pgr_primDFS``" +msgid "Use ``pgr_withPoints`` when there are no restrictions." +msgstr "Usar ``pgr_withPoints`` cuando no hay restricciones." -msgid "" -"Starting from `v3.7.0 `__ :" -"doc:`pgr_primDD`, :doc:`pgr_primBFS` and :doc:`pgr_primDFS` result columns " -"are being standardized." -msgstr "" -"A partir de `v3.7.0 `__ se " -"estandarizan las columnas de resultados :doc:`pgr_primDD`, :doc:" -"`pgr_primBFS` y :doc:`pgr_primDFS`." +msgid "Use :doc:`pgr_withPoints` (One to One) instead." +msgstr "Utilizar en su lugar :doc:`pgr_withPoints` (Uno a Uno)." -msgid "Prim single vertex" -msgstr "Prim vértice único" +msgid "Use ``pgr_trsp_withPoints`` when there are restrictions." +msgstr "Usar ``pgr_trsp_withPoints`` cuando hay restricciones." -msgid "" -"Using ``pgr_primDD`` as example. Migration is similar to al the affected " -"functions." -msgstr "" -"Usando ``pgr_primDD`` como ejemplo. La migración es similar para todas las " -"funciones afectadas." +msgid "Use :doc:`pgr_trsp_withPoints` instead." +msgstr "Utilizar en su lugar :doc:`pgr_trsp_withPoints`." -msgid "" -"Comparing with `this `__ example." -msgstr "" -"Comparación con `este ejemplo `__." +msgid "Migration of ``pgr_trspViaVertices``" +msgstr "Migraciones de ``pgr_trspViaVertices``" -msgid "Prim multiple vertices" -msgstr "Prim vértices múltiples" +msgid ":doc:`pgr_dijkstraVia`" +msgstr ":doc:`pgr_dijkstraVia`" -msgid "" -"Comparing with `this `__ example." -msgstr "" -"Comparación con `este ejemplo `__." +msgid ":doc:`pgr_trspVia`" +msgstr ":doc:`pgr_trspVia`" -msgid "Migration of ``pgr_withPointsDD``" -msgstr "Migración de ``pgr_withPointsDD``" +msgid "Use ``pgr_dijkstraVia`` when there are no restrictions" +msgstr "Usar ``pgr_dijkstraVia`` cuando no hay restricciones" -msgid "" -"Starting from `v3.6.0 `__ :" -"doc:`pgr_withPointsDD` result columns are being standardized." -msgstr "" -"A partir de `v3.6.0 `__ " -"En :doc:`pgr_withPointsDD` las columnas de resultados están siendo " -"estandarizadas." +msgid "Use :doc:`pgr_dijkstraVia` instead." +msgstr "Usar :doc:`pgr_dijkstraVia` en su lugar." -msgid "|result-generic-no-seq|" -msgstr "|result-generic-no-seq|" +msgid "``id1`` is the path identifier" +msgstr "``id1`` es el identificador de camino" -msgid "" -"And ``driving_side`` parameter changed from named optional to unnamed " -"compulsory **driving side** and its validity differ for directed and " -"undirected graphs." -msgstr "" -"Y el parámetro ``driving_side`` cambió de opcional con nombre a obligatorio " -"sin nombre **driving side** y su validez difiere para grafos dirigidos y no " -"dirigidos." +msgid "``id2`` is the node" +msgstr "``id2`` es el nodo" -msgid "``pgr_withPointsDD`` (Single vertex)" -msgstr "``pgr_withPointsDD`` (vértice único)" +msgid "``id3`` is the edge" +msgstr "``id3`` es la arista" -msgid "``pgr_withPointsDD`` (Multiple vertices)" -msgstr "``pgr_withPointsDD`` (Múltiples vértices)" +msgid "Use ``pgr_trspVia`` when there are restrictions" +msgstr "Usar ``pgr_trspVia`` cuando hay restricciones" -msgid "Output columns were |result-1-1-no-seq|" -msgstr "Las columnas de resultados eran |result-1-1-no-seq|" +msgid "Use :doc:`pgr_trspVia` instead." +msgstr "Usar :doc:`pgr_trspVia` en su lugar." -msgid "Does not have ``start_vid``, ``pred`` and ``depth`` result columns." -msgstr "No tiene columnas de resultados ``start_vid``, ``pred`` y ``depth``." +msgid "Migration of ``pgr_trspViaEdges``" +msgstr "Migración de ``pgr_trspViaEdges``" -msgid "" -"``driving_side`` parameter was named optional now it is compulsory unnamed." -msgstr "" -"El parámetro ``driving_side`` era opcional ahora es obligatorio sin nombre." +msgid ":doc:`pgr_withPointsVia`" +msgstr ":doc:`pgr_withPointsVia`" -msgid "``pgr_withPointsDD`` (`Multiple vertices`)" -msgstr "``pgr_withPointsDD`` (`Vértices múltiples`)" +msgid ":doc:`pgr_trspVia_withPoints`" +msgstr ":doc:`pgr_trspVia_withPoints`" -msgid "Output columns were |result-m-1-no-seq|" -msgstr "Las columnas de salida eran |result-m-1-no-seq|" +msgid "Use ``pgr_withPointsVia`` when there are no restrictions" +msgstr "Usar ``pgr_withPointsVia`` cuando no hay restricciones" -msgid "Does not have ``depth`` and ``pred`` result columns." -msgstr "No tiene columnas de resultados ``depth`` y ``pred``." +msgid "Use :doc:`pgr_withPointsVia` instead." +msgstr "Usar :doc:`pgr_withPointsVia` en su lugar." -msgid "Driving side was optional" -msgstr "El lado de manejo era opcional" +msgid "Use ``pgr_trspVia_withPoints`` when there are restrictions" +msgstr "Usar ``pgr_trspVia_withPoints`` cuando hay restricciones" -msgid "The default values on this query are:" -msgstr "Los valores predeterminados en esta consulta son:" +msgid "Use :doc:`pgr_trspVia_withPoints` instead." +msgstr "Usar :doc:`pgr_trspVia_withPoints` en su lugar." -msgid "directed" -msgstr "dirigido" +msgid "Migration of restrictions" +msgstr "Migración de restricciones" -msgid "true" -msgstr "verdadero" +msgid "The structure of the restrictions have changed:" +msgstr "La estructura de las restricciones ha cambiado:" -msgid "driving_side" -msgstr "driving_side" +msgid "Old restrictions structure" +msgstr "Estructura de restricciones vieja" -msgid "'b'" -msgstr "'b'" +msgid "On the deprecated signatures:" +msgstr "Sobre las firmas obsoletas:" -msgid "details" -msgstr "detalles" +msgid "Column ``rid`` is ignored" +msgstr "La columna ``rid`` es ignorada" -msgid "false" -msgstr "``false``" +msgid "``via_path``" +msgstr "``via_path``" -msgid "Driving side was named optional" -msgstr "El lado de manejo era opcional con nombre" +msgid "Must be in reverse order." +msgstr "Debe de estar en orden reverso." -msgid "On directed graph ``b`` could be used as **driving side**" -msgstr "En un grafo dirigido ``b`` podía usarse como **lado de manejo**" +msgid "Is of type ``TEXT``." +msgstr "Es de tipo ``TEXT``." -msgid "On undirected graph ``r`` could be used as **driving side**" -msgstr "En un grafo no dirigido ``r`` podía usarse como **lado de manejo**" +msgid "When more than one via edge must be separated with ``,``." +msgstr "Cuando hay más de una arista debe de ser separada con ``,``." -msgid "Also ``l`` could be used as **driving side**" -msgstr "También `` l`` podía usarse como \"lado de manejo\"" - -msgid "After Migration" -msgstr "Después de la migración" - -msgid "Be aware of the existence of the additional result Columns." -msgstr "" -"Tener en cuenta la existencia de las columnas adicionales de resultados." - -msgid "New output columns are |result-spantree|" -msgstr "Las nuevas columnas de salida son |result-spantree|" - -msgid "" -"**driving side** parameter is unnamed compulsory, and valid values differ " -"for directed and undirected graphs." -msgstr "" -"El parámetro **lado de manjeo** es obligatorio sin nombre, y los valores " -"válidos difieren para grafos dirigidos y no dirigidos." - -msgid "Does not have a default value." -msgstr "No tiene un valor de facto." - -msgid "In directed graph: valid values are [``r``, ``R``, ``l``, ``L``]" -msgstr "" -"En grafos dirigidos: Los valores válidos son [``r``, ``R``, ``l``, ``L``]" - -msgid "In undirected graph: valid values are [``b``, ``B``]" -msgstr "En grafos no dirigidos: Los valores válidos son [``b``, ``B``]" - -msgid "Using an invalid value throws an ``ERROR``." -msgstr "El uso de un valor inválido lanza un ``ERROR``." - -msgid "" -"Using `this `__ example." -msgstr "" -"Usando `éste `__ ejemplo." - -msgid "" -"``depth`` contains the **depth** from the ``start_vid`` vertex to the " -"``node``." -msgstr "" -"``depth`` contiene la **profundidad** desde el vértice ``start_vid`` hasta " -"el ``node``." - -msgid "" -"To migrate, use an unnamed valid value for **driving side** after the " -"**distance** parameter:" -msgstr "" -"Para migrar, utilizar un valor válido sin nombre para **lado de manejo** " -"después del parámetro **distancia**:" - -msgid "To get results from previous versions:" -msgstr "Para obtener resultados de versiones anteriores:" - -msgid "filter out the additional columns, for example;" -msgstr "filtrar las columnas adicionales, por ejemplo;" - -msgid "" -"When ``details => false`` to remove the points use ``WHERE node >= 0 OR cost " -"= 0``" -msgstr "" -"Cuando ``details => false`` para eliminar los puntos usar ``WHERE node >= 0 " -"OR cost = 0``" - -msgid "" -"Using `this `__ example." -msgstr "" -"Usando `éste `__ ejemplo." - -msgid "Filter out the additional columns" -msgstr "Filtrar las columnas adicionales" - -msgid "Migration of ``pgr_withPointsKSP``" -msgstr "Migración de ``pgr_withPointsKSP``" - -msgid "" -"Starting from `v3.6.0 `__ :" -"doc:`pgr_withPointsKSP` result columns are being standardized." -msgstr "" -"A partir de `v3.6.0 `__ " -"en :doc:`pgr_withPointsKSP` las columnas de resultados están siendo " -"estandarizadas." - -msgid "" -"And ``driving side`` parameter changed from named optional to unnamed " -"compulsory **driving side** and its validity differ for directed and " -"undirected graphs." -msgstr "" -"Y el parámetro \"driving side\" ha cambiado de opcional con nombre a " -"obligatorio sin nombre **driving side** y su validez difiere para grafos " -"dirigidos y no dirigidos." - -msgid "``pgr_withPointsKSP`` (`One to One`)" -msgstr "``pgr_withPointsKSP`` (`Uno a Uno`)" - -msgid "Output columns were |old-pid-result|" -msgstr "Regresa conjunto de |old-generic-result|" - -msgid "New output columns are |nksp-result|" -msgstr "Las nuevas columnas de salida son |nksp-result|" - -msgid "" -"Using `this `__ example." -msgstr "" -"Usando `este `__ ejemplo." - -msgid "" -"If needed filter out the additional columns, for example, to return the " -"original columns:" -msgstr "" -"Si es necesario, filtrar las columnas adicionales, por ejemplo, para " -"devolver las columnas originales:" - -msgid "Migration of turn restrictions" -msgstr "Migración de las restricciones de giro" - -msgid "Migration of restrictions" -msgstr "Migración de restricciones" - -msgid "The structure of the restrictions have changed:" -msgstr "La estructura de las restricciones ha cambiado:" - -msgid "Old restrictions structure" -msgstr "Estructura de restricciones vieja" - -msgid "On the deprecated signatures:" -msgstr "Sobre las firmas obsoletas:" - -msgid "Column ``rid`` is ignored" -msgstr "La columna ``rid`` es ignorada" - -msgid "``via_path``" -msgstr "``via_path``" - -msgid "Must be in reverse order." -msgstr "Debe de estar en orden reverso." - -msgid "Is of type ``TEXT``." -msgstr "Es de tipo ``TEXT``." - -msgid "When more than one via edge must be separated with ``,``." -msgstr "Cuando hay más de una arista debe de ser separada con ``,``." - -msgid "``target_id``" -msgstr "``target_id``" +msgid "``target_id``" +msgstr "``target_id``" msgid "Is the last edge of the forbidden path." msgstr "Es la última arista del camino prohibido." @@ -5935,382 +5547,131 @@ msgstr "Se eliminara en la próxima versión mayor 4.0.0" msgid "The migrated table contents:" msgstr "El contenido de la tabla de migración:" -msgid "Migration of ``pgr_trsp`` (Vertices)" -msgstr "Migración de `pgr_trsp`` (Vértices)" - -msgid "" -":doc:`pgr_trsp` signatures have changed and many issues have been fixed in " -"the new signatures. This section will show how to migrate from the old " -"signatures to the new replacement functions. This also affects the " -"restrictions." -msgstr "" -":doc:`pgr_trsp` firmas han cambiando y varios problemas han sido arreglados " -"en las nuevas firmas. Esta sección enseñara como migrar las viejas firmas a " -"la nueva función de reemplazo. Esto también afecta las restricciones ." - -msgid "The integral type of the ``Edges SQL`` can only be ``INTEGER``." -msgstr "El tipo integral de ``Edges SQL`` sólo puede ser ``INTEGER``." - -msgid "The floating point type of the ``Edges SQL`` can only be ``FLOAT``." -msgstr "El tipo de punto flotante del ``Edges SQL`` solo puede ser ``FLOAT``." +msgid ":doc:`withPoints-category`" +msgstr ":doc:`withPoints-category`" -msgid "``directed`` flag is compulsory." -msgstr "La bandera ``directed`` es obligatoria." +msgid "Ordering - Family of functions" +msgstr "Ordenamiento - Familia de funciones" -msgid "Does not autodetect if ``reverse_cost`` column exist." -msgstr "No auto-detecta si la columna``reverse_cost`` existe." +msgid "pgRouting Concepts" +msgstr "Conceptos de pgRouting" msgid "" -"User must be careful to match the existence of the column with the value of " -"``has_rcost`` parameter." +"This is a simple guide that go through some of the steps for getting started " +"with pgRouting. This guide covers:" msgstr "" -"El usuario debe de tener cuidado al coincidir la existencia de la columna " -"con el valor del parámetro ``has_rcost``." +"Esta es una guía simple que va a través de los pasos básicos para empezar " +"trabajar con pgRouting. Esta guía cubre:" -msgid "The restrictions inner query is optional." -msgstr "Las restricciones de consulta interna son opcionales." +msgid "Graphs" +msgstr "Grafos" -msgid "The output column names are meaningless" -msgstr "Los nombres de la columna de salida no tienen importancia" +msgid "A graph is an ordered pair :math:`G = (V ,E)` where:" +msgstr "Un grafo es un par ordenado :math:`G = (V ,E)` donde:" -msgid "Migrate by using:" -msgstr "Migra al user:" +msgid ":math:`V` is a set of vertices, also called nodes." +msgstr ":math:`V` es un conjunto de vértices, también llamados nodos." -msgid ":doc:`pgr_dijkstra` when there are no restrictions," -msgstr ":doc:`pgr_dijkstra` cuando no hay restricciones," +msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V \\}`" +msgstr ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V \\}`" -msgid ":doc:`pgr_trsp` (One to One) when there are restrictions." -msgstr ":doc:`pgr_trsp` (Uno a Uno) cuando hay restricciones." +msgid "There are different kinds of graphs:" +msgstr "Hay diferentes tipos de grafos:" -msgid "Migrating ``pgr_trsp`` (Vertices) using ``pgr_dijkstra``" -msgstr "Migrar ``pgr_trsp`` (Vértices) usando ``pgr_dijkstra``" +msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V\\}`" +msgstr ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V\\}`" -msgid "The following query does not have restrictions." -msgstr "La siguiente consulta no tiene restricciones." +msgid "Undirected simple graph" +msgstr "Grafo no dirigido simple" -msgid "A message about deprecation is shown" -msgstr "Un mensaje sobre lo obsoleto se enseña" +msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V, u \\neq v\\}`" +msgstr ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V, u \\neq v\\}`" -msgid "Deprecated functions will be removed on the next mayor version 4.0.0" -msgstr "Funciones obsoletas se eliminaran en la siguiente versión mayor 4.0.0" +msgid ":math:`E \\subseteq \\{( u, v ) \\mid (u , v) \\in (V X V) \\}`" +msgstr ":math:`E \\subseteq \\{( u, v ) \\mid (u , v) \\in (V X V) \\}`" -msgid "Use :doc:`pgr_dijkstra` instead." -msgstr "Usa en vez :doc:`pgr_dijkstra`." +msgid "Directed simple graph" +msgstr "Grafo dirigido simple" -msgid "The types casting has been removed." -msgstr "Se han eliminado la fundición de tipos." +msgid "" +":math:`E \\subseteq \\{( u, v ) \\mid (u , v) \\in (V X V), u \\neq v\\}`" +msgstr "" +":math:`E \\subseteq \\{( u, v ) \\mid (u , v) \\in (V X V), u \\neq v\\}`" -msgid ":doc:`pgr_dijkstra`:" -msgstr ":doc:`pgr_dijkstra`:" +msgid "Graphs:" +msgstr "Grafos:" -msgid "Autodetects if ``reverse_cost`` column is in the edges SQL." -msgstr "Auto-detecta si la columna``reverse_cost`` está en la SQL de aristas." +msgid "Do not have geometries." +msgstr "No tienen geometrías." -msgid "Accepts ``ANY-INTEGER`` on integral types" -msgstr "Acepta ``ANY-INTEGER`` sobre tipos integrales" +msgid "" +"Some graph theory problems require graphs to have weights, called **cost** " +"in pgRouting." +msgstr "" +"Algunos problemas de teoría de grafos requieren tener pesos, llamados " +"**cost** en pgRouting." -msgid "Accepts ``ANY-NUMERICAL`` on floating point types" -msgstr "Acepta ``ANY-NUMERICAL`` sobre tipos de puntos flotantes" +msgid "" +"In pgRouting there are several ways to represent a graph on the database:" +msgstr "" +"En pgRouting hay varias maneras de representar in grafo en la base de datos:" -msgid "``directed`` flag has a default value of ``true``." -msgstr "La bandera ``directed`` tiene valor de facto de ``true``." +msgid "With ``cost``" +msgstr "Con ``cost``" -msgid "Use the same value that on the original query." -msgstr "Usa el mismo valor de la consulta original." +msgid "(``id``, ``source``, ``target``, ``cost``)" +msgstr "(``id``, ``source``, ``target``, ``cost``)" -msgid "In this example it is ``true`` which is the default value." -msgstr "En este ejemplo ``true`` que es el valor de facto." +msgid "With ``cost`` and ``reverse_cost``" +msgstr "Con ``cost`` y ``reverse_cost``" -msgid "The flag has been omitted and the default is been used." -msgstr "Se ha omitido la bandera y se ha utilizado el valor por defecto." +msgid "(``id``, ``source``, ``target``, ``cost``, ``reverse_cost``)" +msgstr "(``id``, ``source``, ``target``, ``cost``, ``reverse_cost``)" msgid "" -"When the need of using strictly the same (meaningless) names and types of " -"the function been migrated then:" +"Identifier of the edge. Requirement to use the database in a consistent. " +"manner." msgstr "" -"Cuando la necesidad de utilizar estrictamente los mismos nombres (sin " -"importancia) y los tipos de la función han sido migradas entonces:" - -msgid "``id1`` is the node" -msgstr "``id1`` es el nodo" - -msgid "``id2`` is the edge" -msgstr "``id2`` es la arista" +"Identificador de la asirsta. Requerimiento para mantener consistente la base " +"de datos." -msgid "Migrating ``pgr_trsp`` (Vertices) using ``pgr_trsp``" -msgstr "Migrando ``pgr_trsp`` (Vértices) usando ``pgr_trsp``" +msgid "Identifier of a vertex." +msgstr "Identificador de un vértice." -msgid "The following query has restrictions." -msgstr "La siguiente consulta tiene restricciones." +msgid "Weight of the edge (``source``, ``target``):" +msgstr "Peso de la arista (``source``, ``target``):" -msgid "The restrictions are the last parameter of the function" -msgstr "Las restricciones son el último parámetro de la función" +msgid "" +"When negative the edge (``source``, ``target``) do not exist on the graph." +msgstr "" +"Cuando negativo: la arista (``source``, ``target``) no existe en el grafo." -msgid "Using the old structure of restrictions" -msgstr "Usando la antigua estructura de restricciones" +msgid "``cost`` must exist in the query." +msgstr "``cost`` debe existir en la consulta." -msgid "Use :doc:`pgr_trsp` (One to One) instead." -msgstr "Utilice en su lugar :doc:`pgr_trsp` (Uno a Uno)." +msgid "" +"When negative the edge (``target``, ``source``) do not exist on the graph." +msgstr "" +"Cuando negativo: la arista (``target``, ``source``) no existe en el grafo." -msgid "The new structure of restrictions is been used." -msgstr "La nueva estructura de restricciones han sido utilizados." +msgid "" +"The decision of the graph to be **directed** or **undirected** is done when " +"executing a pgRouting algorithm." +msgstr "" +"La decisión del grafo de ser **directed** o **undirected** es resultado al " +"ejecutar el algoritmo de pgRouting." -msgid "It is the second parameter." -msgstr "Es el segundo parámetro." +msgid "Graph with ``cost``" +msgstr "Grafo con ``cost``" -msgid ":doc:`pgr_trsp`:" -msgstr ":doc:`pgr_trsp`:" +msgid "The weighted directed graph, :math:`G_d(V,E)`:" +msgstr "El grafo ponderado dirigido, :math:`G_d(V,E)`:" -msgid "Migration of ``pgr_trsp`` (Edges)" -msgstr "Migración de ``pgr_trsp`` (Aristas)" +msgid "Graph data is obtained with a query" +msgstr "Datos de l grafo se obtienen mediante una consulta" -msgid "The integral types of the ``sql`` can only be ``INTEGER``." -msgstr "Los tipos integrales de ``sql`` solo pueden ser ``INTEGER``." - -msgid "The floating point type of the ``sql`` can only be ``FLOAT``." -msgstr "El tipo de punto flotante del ``sql`` solo pueden ser ``FLOAT``." - -msgid "For these migration guide the following points will be used:" -msgstr "Para los siguientes puntos la guía de migración se utilizara:" - -msgid ":doc:`pgr_withPoints` when there are no restrictions," -msgstr ":doc:`pgr_withPoints` cuando no hay restricciones," - -msgid ":doc:`pgr_trsp_withPoints` (One to One) when there are restrictions." -msgstr ":doc:`pgr_trsp_withPoints` (Uno a Uno) cuando hay restricciones." - -msgid "Migrating ``pgr_trsp`` (Edges) using ``pgr_withPoints``" -msgstr "Migrando ``pgr_trsp`` (Aristas) usando ``pgr_withPoints``" - -msgid "Use :doc:`pgr_withPoints` instead." -msgstr "Utilizar en su lugar :doc:`pgr_withPoints`." - -msgid "Do not show details, as the deprecated function does not show details." -msgstr "No enseña detalles, pues las funciones obsoletas no enseñan detalles." - -msgid ":doc:`pgr_withPoints`:" -msgstr ":doc:`pgr_withPoints`:" - -msgid "On the points query do not include the ``side`` column." -msgstr "La consulta de puntos con incluye la columna ``side``." - -msgid "" -"When the need of using strictly the same (meaningless) names and types, and " -"node values of the function been migrated then:" -msgstr "" -"Cuando la necesidad de utilizar estrictamente los mismos nombres (sin " -"importancia) y tipos , y los valores de nodo de la función han sido migradas " -"entonces:" - -msgid "Migrating ``pgr_trsp`` (Edges) using ``pgr_trsp_withPoints``" -msgstr "Migrando``pgr_trsp`` (Aristas) utilizando ``pgr_trsp_withPoints``" - -msgid "Use :doc:`pgr_trsp_withPoints` instead." -msgstr "Utilizar en su lugar :doc:`pgr_trsp_withPoints`." - -msgid ":doc:`pgr_trsp_withPoints`:" -msgstr ":doc:`pgr_trsp_withPoints`:" - -msgid "Migration of ``pgr_trspViaVertices``" -msgstr "Migraciones de ``pgr_trspViaVertices``" - -msgid "The integral types of the ``Edges SQL`` can only be ``INTEGER``." -msgstr "" -"Los tipos enteros de las ``Consultas de Aristas`` solo pueden ser " -"``ENTEROS``." - -msgid ":doc:`pgr_dijkstraVia` when there are no restrictions," -msgstr ":doc:`pgr_dijkstraVia` cuando no hay restricciones," - -msgid ":doc:`pgr_trspVia` when there are restrictions." -msgstr ":doc:`pgr_trspVia` cuando hay restricciones." - -msgid "Migrating ``pgr_trspViaVertices`` using ``pgr_dijkstraVia``" -msgstr "Migrando ``pgr_trspViaVertices`` usando ``pgr_dijkstraVia``" - -msgid "Use :doc:`pgr_dijkstraVia` instead." -msgstr "Usar :doc:`pgr_dijkstraVia` en su lugar." - -msgid ":doc:`pgr_dijkstraVia`:" -msgstr ":doc:`pgr_dijkstraVia`:" - -msgid "``id1`` is the path identifier" -msgstr "``id1`` es el identificador de camino" - -msgid "``id2`` is the node" -msgstr "``id2`` es el nodo" - -msgid "``id3`` is the edge" -msgstr "``id3`` es la arista" - -msgid "Migrating ``pgr_trspViaVertices`` using ``pgr_trspVia``" -msgstr "Migrando ``pgr_trspViaVertices`` usando ``pgr_trspVia``" - -msgid "Use :doc:`pgr_trspVia` instead." -msgstr "Usar :doc:`pgr_trspVia` en su lugar." - -msgid ":doc:`pgr_trspVia`:" -msgstr ":doc:`pgr_trspVia`:" - -msgid "Migration of ``pgr_trspViaEdges``" -msgstr "Migración de ``pgr_trspViaEdges``" - -msgid "" -"And will travel thru the following Via points :math:" -"`4\\rightarrow3\\rightarrow6`" -msgstr "" -"Viajará a travez de los siguientes puntos de la vía :math:" -"`4\\rightarrow3\\rightarrow6`" - -msgid ":doc:`pgr_withPointsVia` when there are no restrictions," -msgstr ":doc:`pgr_withPointsVia` cuando no hay restricciones," - -msgid ":doc:`pgr_trspVia_withPoints` when there are restrictions." -msgstr ":doc:`pgr_trspVia_withPoints` cuando hay restricciones." - -msgid "Migrating ``pgr_trspViaEdges`` using ``pgr_withPointsVia``" -msgstr "Migrando ``pgr_trspViaEdges`` usando ``pgr_withPointsVia``" - -msgid "Use :doc:`pgr_withPointsVia` instead." -msgstr "Usar :doc:`pgr_withPointsVia` en su lugar." - -msgid ":doc:`pgr_withPointsVia`:" -msgstr ":doc:`pgr_withPointsVia`:" - -msgid "Migrating ``pgr_trspViaEdges`` using ``pgr_trspVia_withPoints``" -msgstr "Migrando ``pgr_trspViaEdges`` usando ``pgr_trspVia_withPoints``" - -msgid "Use :doc:`pgr_trspVia_withPoints` instead." -msgstr "Usar :doc:`pgr_trspVia_withPoints` en su lugar." - -msgid ":doc:`pgr_trspVia_withPoints`:" -msgstr ":doc:`pgr_trspVia_withPoints`:" - -msgid ":doc:`withPoints-category`" -msgstr ":doc:`withPoints-category`" - -msgid "Ordering - Family of functions" -msgstr "Ordenamiento - Familia de funciones" - -msgid "pgRouting Concepts" -msgstr "Conceptos de pgRouting" - -msgid "" -"This is a simple guide that go through some of the steps for getting started " -"with pgRouting. This guide covers:" -msgstr "" -"Esta es una guía simple que va a través de los pasos básicos para empezar " -"trabajar con pgRouting. Esta guía cubre:" - -msgid "Graphs" -msgstr "Grafos" - -msgid "A graph is an ordered pair :math:`G = (V ,E)` where:" -msgstr "Un grafo es un par ordenado :math:`G = (V ,E)` donde:" - -msgid ":math:`V` is a set of vertices, also called nodes." -msgstr ":math:`V` es un conjunto de vértices, también llamados nodos." - -msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V \\}`" -msgstr ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V \\}`" - -msgid "There are different kinds of graphs:" -msgstr "Hay diferentes tipos de grafos:" - -msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V\\}`" -msgstr ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V\\}`" - -msgid "Undirected simple graph" -msgstr "Grafo no dirigido simple" - -msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V, u \\neq v\\}`" -msgstr ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V, u \\neq v\\}`" - -msgid ":math:`E \\subseteq \\{( u, v ) \\mid (u , v) \\in (V X V) \\}`" -msgstr ":math:`E \\subseteq \\{( u, v ) \\mid (u , v) \\in (V X V) \\}`" - -msgid "Directed simple graph" -msgstr "Grafo dirigido simple" - -msgid "" -":math:`E \\subseteq \\{( u, v ) \\mid (u , v) \\in (V X V), u \\neq v\\}`" -msgstr "" -":math:`E \\subseteq \\{( u, v ) \\mid (u , v) \\in (V X V), u \\neq v\\}`" - -msgid "Graphs:" -msgstr "Grafos:" - -msgid "Do not have geometries." -msgstr "No tienen geometrías." - -msgid "" -"Some graph theory problems require graphs to have weights, called **cost** " -"in pgRouting." -msgstr "" -"Algunos problemas de teoría de grafos requieren tener pesos, llamados " -"**cost** en pgRouting." - -msgid "" -"In pgRouting there are several ways to represent a graph on the database:" -msgstr "" -"En pgRouting hay varias maneras de representar in grafo en la base de datos:" - -msgid "With ``cost``" -msgstr "Con ``cost``" - -msgid "(``id``, ``source``, ``target``, ``cost``)" -msgstr "(``id``, ``source``, ``target``, ``cost``)" - -msgid "With ``cost`` and ``reverse_cost``" -msgstr "Con ``cost`` y ``reverse_cost``" - -msgid "(``id``, ``source``, ``target``, ``cost``, ``reverse_cost``)" -msgstr "(``id``, ``source``, ``target``, ``cost``, ``reverse_cost``)" - -msgid "" -"Identifier of the edge. Requirement to use the database in a consistent. " -"manner." -msgstr "" -"Identificador de la asirsta. Requerimiento para mantener consistente la base " -"de datos." - -msgid "Identifier of a vertex." -msgstr "Identificador de un vértice." - -msgid "Weight of the edge (``source``, ``target``):" -msgstr "Peso de la arista (``source``, ``target``):" - -msgid "" -"When negative the edge (``source``, ``target``) do not exist on the graph." -msgstr "" -"Cuando negativo: la arista (``source``, ``target``) no existe en el grafo." - -msgid "``cost`` must exist in the query." -msgstr "``cost`` debe existir en la consulta." - -msgid "" -"When negative the edge (``target``, ``source``) do not exist on the graph." -msgstr "" -"Cuando negativo: la arista (``target``, ``source``) no existe en el grafo." - -msgid "" -"The decision of the graph to be **directed** or **undirected** is done when " -"executing a pgRouting algorithm." -msgstr "" -"La decisión del grafo de ser **directed** o **undirected** es resultado al " -"ejecutar el algoritmo de pgRouting." - -msgid "Graph with ``cost``" -msgstr "Grafo con ``cost``" - -msgid "The weighted directed graph, :math:`G_d(V,E)`:" -msgstr "El grafo ponderado dirigido, :math:`G_d(V,E)`:" - -msgid "Graph data is obtained with a query" -msgstr "Datos de l grafo se obtienen mediante una consulta" - -msgid "``SELECT id, source, target, cost FROM edges``" -msgstr "``SELECT id, source, target, cost FROM edges``" +msgid "``SELECT id, source, target, cost FROM edges``" +msgstr "``SELECT id, source, target, cost FROM edges``" msgid "" ":math:`E = \\{(source_{id}, target_{id}, cost_{id}) \\text{ when } cost_{id} " @@ -6370,9 +5731,6 @@ msgstr "" msgid "Graph with ``cost`` and ``reverse_cost``" msgstr "Grafo con ``cost`` y ``reverse_cost``" -msgid "The weighted directed graph, :math:`G_d(V,E)`, is defined by:" -msgstr "El ponderado del grafo dirigido, :math:`G_d(V,E)`, se define por:" - msgid "``SELECT id, source, target, cost, reverse_cost FROM edges``" msgstr "``SELECT id, source, target, cost, reverse_cost FROM edges``" @@ -7179,22 +6537,29 @@ msgstr "Callejones sin salida" msgid "To get the dead ends:" msgstr "Para obtener los callejones sin salida:" +msgid "A dead end happens when" +msgstr "" + msgid "" -"That information is correct, for example, when the dead end is on the limit " -"of the imported graph." +"The vertex is the limit of a cul-de-sac, a no-through road or a no-exit road." +msgstr "" + +msgid "The vertex is on the limit of the imported graph." +msgstr "El vértice esta en el limite del grafo importado." + +msgid "If a larger graph is imported then the vertex might not be a dead end" msgstr "" -"Esa información es correcta, por ejemplo, cuando el punto muerto está en el " -"límite del gráfico importado." msgid "" -"Visually node :math:`4` looks to be as start/ending of 3 edges, but it is " -"not." +"Node :math:`4`, is a dead end on the query, even that it visually looks like " +"an end point of 3 edges." +msgstr "" + +msgid "Is node :math:`4` a dead end or not?" msgstr "" -"Visualmente el nodo :math:`4` parece ser el inicio/final de 3 aristas, pero " -"no lo es." -msgid "Is that correct?" -msgstr "¿Es correcto?" +msgid "The answer to that question will depend on the application." +msgstr "" msgid "Is there such a small curb:" msgstr "Hay un bordillo tan pequeño:" @@ -7223,12 +6588,16 @@ msgstr "" "¿Hay un gran acantilado y desde la vista de las águilas parece que el " "callejón sin salida está cerca del segmento?" +msgid "Depending on the answer, modification of the data might be needed." +msgstr "Dependiendo de la respuesta, será necesario la modificación de datos." + msgid "" -"When there are many dead ends, to speed up, the :doc:`contraction-family` " -"functions can be used to divide the problem." +"When there are many dead ends, to speed up processing, the :doc:`contraction-" +"family` functions can be used to contract the graph." msgstr "" -"Cuando hay muchos callejones sin salida, para acelerar, se pueden utilizar " -"las funciones de :doc:`contraction-family` para dividir el problema." +"Cuando hay muchos callejones sin salida, para acelerar el procesamiento, se " +"pueden utilizar las funciones de :doc:`contraction-family` para contraer el " +"grafo." msgid "Linear edges" msgstr "Bordes lineales" @@ -7237,18 +6606,18 @@ msgid "To get the linear edges:" msgstr "Para obtener las aristas lineales:" msgid "" -"This information is correct, for example, when the application is taking " -"into account speed bumps, stop signals." +"These linear vertices are correct, for example, when those the vertices are " +"speed bumps, stop signals and the application is taking them into account." msgstr "" -"Esta información es correcta, por ejemplo, cuando la aplicación tiene en " -"cuenta los topes o las señales de stop." msgid "" -"When there are many linear edges, to speed up, the :doc:`contraction-family` " -"functions can be used to divide the problem." +"When there are many linear vertices, that need not to be taken into account, " +"to speed up the processing, the :doc:`contraction-family` functions can be " +"used to contract the problem." msgstr "" -"Cuando hay muchas aristas lineales, para acelerar, se pueden utilizar las " -"funciones :doc:`contraction-family` para dividir el problema." +"Cuando hay muchas aristas lineales, que no necesitan tomarse en cuenta, para " +"acelerar el procesamiento se pueden utilizar las funciones :doc:`contraction-" +"family` para contraer el grafo." msgid "Function's structure" msgstr "Estructura de la función" @@ -7543,3877 +6912,4433 @@ msgstr "" "requerido. Los parámetros opcionales son parámetros con nombre y tendrán un " "valor por defecto." -msgid "Parameters for the Via functions" -msgstr "Párametros para las funciones Via" +msgid "Parameters for the Via functions" +msgstr "Párametros para las funciones Via" + +msgid "SQL query as described." +msgstr "Consulta SQL como se describe." + +msgid "When ``true`` Graph is considered `Directed`" +msgstr "Cuando ``true`` el gráfo se considera `Dirigido`" + +msgid "When ``false`` the graph is considered as Undirected." +msgstr "Cuando ``false`` el gráfico se considera como No Dirigido." + +msgid "``strict``" +msgstr "``strict``" + +msgid "``false``" +msgstr "``false``" + +msgid "When ``true`` if a path is missing stops and returns **EMPTY SET**" +msgstr "Cuando ``true`` si un camino le faltan paradas y regresa **EMPTY SET**" + +msgid "When ``false`` ignores missing paths returning all paths found" +msgstr "" +"Cuando ``false``, ignora las rutas faltantes y devuelve todas las rutas " +"encontradas" + +msgid "``U_turn_on_edge``" +msgstr "``U_turn_on_edge``" + +msgid "" +"When ``true`` departing from a visited vertex will not try to avoid using " +"the edge used to reach it. In other words, U turn using the edge with same " +"identifier is allowed." +msgstr "" +"Cuando ``true`` saliendo de un vértice visitado no intentará evitar el uso " +"de la arista utilizada para alcanzarlo. En otras palabras, se permite la " +"vuelta en U usando la arista con el mismo identificador." + +msgid "" +"When ``false`` when a departing from a visited vertex tries to avoid using " +"the edge used to reach it. In other words, U turn using the edge with same " +"identifier is used when no other path is found." +msgstr "" +"Cuando ``false`` al salir de un vértice visitado intenta evitar el uso de la " +"arista utilizada para alcanzarlo. En otras palabras, se utiliza la vuelta en " +"U utilizando la arista con el mismo identificador cuando no se encuentra " +"ninguna otra ruta." + +msgid "For the TRSP functions" +msgstr "Para las funciones de TRSP" + +msgid "Array of identifiers of destination vertices." +msgstr "Arreglo de identificadores de vértices destino." + +msgid "" +"There are several kinds of columns returned are depending of the function." +msgstr "Hay varios tipos de columnas devueltas que dependen de la función." + +msgid "Result columns for a path" +msgstr "Columnas de resultados para una ruta" + +msgid "Used in functions that return one path solution" +msgstr "Se utiliza en funciones que devuelven una solución de ruta" + +msgid "" +"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost, " +"agg_cost)``" +msgstr "" +"Devuelve el conjunto de ``(seq, path_seq [, start_vid] [, end_vid], node, " +"edge, cost, agg_cost)``" + +msgid "``path_seq``" +msgstr "``path_seq``" + +msgid "" +"Relative position in the path. Has value **1** for the beginning of a path." +msgstr "" +"Posición relativa en la ruta. Tiene el valor **1** para el inicio de una " +"ruta." + +msgid "" +"Identifier of the starting vertex. Returned when multiple starting vetrices " +"are in the query." +msgstr "" +"Identificador del vértice inicial. Se devuelve cuando hay varias vetrices " +"iniciales en la consulta." + +msgid "" +"Identifier of the ending vertex. Returned when multiple ending vertices are " +"in the query." +msgstr "" +"Identificador del vértice final. Se devuelve cuando hay varios vértices " +"finales en la consulta." + +msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``." +msgstr "Identificador del nodo en la ruta de ``start_vid`` a ``end_vid``." + +msgid "" +"Identifier of the edge used to go from ``node`` to the next node in the path " +"sequence. **-1** for the last node of the path." +msgstr "" +"Identificador de la arista utilizado para ir del ``node`` al siguiente nodo " +"de la secuencia de ruta. ``-1`` para el último nodo de la ruta." + +msgid "" +"Cost to traverse from ``node`` using ``edge`` to the next node in the path " +"sequence." +msgstr "" +"Costo para atravesar desde ``node`` usando ``edge`` hasta el siguiente nodo " +"en la secuencia de la ruta." + +msgid "Used in functions the following:" +msgstr "Se utiliza en las funciones siguientes:" + +msgid "" +"Returns set of ``(seq, path_seq [, start_pid] [, end_pid], node, edge, cost, " +"agg_cost)``" +msgstr "" +"Devuelve el conjunto de ``(seq, path_seq [, start_pid] [, end_pid], node, " +"edge, cost, agg_cost)``" + +msgid "Relative position in the path." +msgstr "Posición relativa en la ruta." + +msgid "**1** For the first row of the path." +msgstr "**1** para la primera fila de la secuencia de ruta." + +msgid "``start_pid``" +msgstr "``start_pid``" + +msgid "Identifier of a starting vertex/point of the path." +msgstr "Identificador del vértice/punto inicial de la ruta." + +msgid "When positive is the identifier of the starting vertex." +msgstr "Cunado positivo, es el identificador del vértice inicial." + +msgid "When negative is the identifier of the starting point." +msgstr "Cuando negativo, es el identificador del punto inicial." + +msgid "Returned on `Many to One`_ and `Many to Many`_" +msgstr "Regresado en `Muchos a Uno`_ y `Muchos a Muchos`_" + +msgid "``end_pid``" +msgstr "``end_pid``" + +msgid "Identifier of an ending vertex/point of the path." +msgstr "Identificador d vértice/punto final del camino." + +msgid "When positive is the identifier of the ending vertex." +msgstr "Cuando negativo, es el identificador del vertice final." + +msgid "When negative is the identifier of the ending point." +msgstr "Cuando es negativo, es el identificador del vértice destino." + +msgid "Returned on `One to Many`_ and `Many to Many`_" +msgstr "Regresado en `Uno a Muchos`_ y `Muchos a Muchos`_" + +msgid "Identifier of the node in the path from ``start_pid`` to ``end_pid``." +msgstr "Identificador del nodo en la ruta de ``start_pid`` a ``end_pid``." + +msgid "When positive is the identifier of the a vertex." +msgstr "Cuando es positivo, es el identificador de un vértice." + +msgid "When negative is the identifier of the a point." +msgstr "Cuando es negativo, es identificador de un punto." + +msgid "" +"Identifier of the edge used to go from ``node`` to the next node in the path " +"sequence." +msgstr "" +"Identificador de la arsita utilizada para ir del ``node`` al siguiente nodo " +"de la secuencia de ruta." + +msgid "**-1** for the last row of the path." +msgstr "**-1** para la última fila de la ruta." + +msgid "**0** For the first row of the path." +msgstr "**0** para la primera fila de la secuencia de ruta." + +msgid ":doc:`pgr_dijkstraNear`" +msgstr ":doc:`pgr_dijkstraNear`" + +msgid "" +"Returns ``(seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)``" +msgstr "" +"Regresa ``(seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)``" + +msgid "Identifier of the starting vertex of the current path." +msgstr "Identificador del vértice inicial de la ruta actual." + +msgid "Identifier of the ending vertex of the current path." +msgstr "Identificador del vértice final de la ruta actual." + +msgid "Multiple paths" +msgstr "Varias rutas" + +msgid "Selective for multiple paths." +msgstr "Selectivo para múltiples rutas." + +msgid "The columns depend on the function call." +msgstr "Las columnas dependen de la llamada a la función." + +msgid "" +"Set of ``(seq, path_id, path_seq [, start_vid] [, end_vid], node, edge, " +"cost, agg_cost)``" +msgstr "" +"Conjunto de ``(seq, path_id, path_seq [, start_vid] [, end_vid], node, edge, " +"cost, agg_cost)``" + +msgid "``path_id``" +msgstr "``path_id``" + +msgid "Path identifier." +msgstr "Identificador del camino." + +msgid "" +"Has value **1** for the first of a path from ``start_vid`` to ``end_vid``." +msgstr "" +"Tiene valor **1** para el primero de la ruta de ``start_vid`` a ``end_vid``." + +msgid "Non selective for multiple paths" +msgstr "No selectivo para rutas múltiples" + +msgid "Regardless of the call, al the columns are returned." +msgstr "Independientemente de la llamada, se devuelven todas las columnas." + +msgid "" +"Returns set of ``(seq, path_id, path_seq, start_vid, end_vid, node, edge, " +"cost, agg_cost)``" +msgstr "" +"Devuelve el conjunto de ``(seq, path_id, path_seq, start_vid, end_vid, node, " +"edge, cost, agg_cost)``" + +msgid "Result columns for cost functions" +msgstr "Columnas de resultados de las funciones de costes" + +msgid "Used in the following" +msgstr "Se utiliza en" + +msgid "" +"When start_vid or end_vid columns have negative values, the identifier is " +"for a Point." +msgstr "" +"Cuando las columnas del vértice inicial o del destino continen valores " +"negativos, el identificador es para un Punto." + +msgid "Result columns for flow functions" +msgstr "Columnas de resultados para funciones de flujo" + +msgid "Edges SQL for the following" +msgstr "SQL de aristas para lo siguiente" + +msgid "Result columns for spanning tree functions" +msgstr "Columnas de resultados para funciones de árbol de expansión" + +msgid "Returns set of ``(edge, cost)``" +msgstr "Regresa el conjunto de ``(edge, cost)``" + +msgid "Cost to traverse the edge." +msgstr "Coste para atravezar el borde." + +msgid "Performance Tips" +msgstr "Consejos de Rendimiento" + +msgid "For the Routing functions" +msgstr "Para las funciones de Ruteo" + +msgid "" +"To get faster results bound the queries to an area of interest of routing." +msgstr "" +"Para obtener resultados más rápidos, delimitar las consultas a un área de " +"interés para el ruteo." + +msgid "" +"In this example Use an inner query SQL that does not include some edges in " +"the routing function and is within the area of the results." +msgstr "" +"En este ejemplo, usar una consulta SQL interna que no incluya algunas " +"aristas en la función de ruteo y dentro del área de los resultados." + +msgid "Given this area:" +msgstr "Dada esta área:" + +msgid "Calculate a route:" +msgstr "Calcular una ruta:" + +msgid "How to contribute" +msgstr "Cómo contribuir" + +msgid "Wiki" +msgstr "Wiki" + +msgid "" +"Edit an existing `pgRouting Wiki `__ page." +msgstr "" +"Edita una página existente `Wiki de pgRouting `_." + +msgid "Or create a new Wiki page" +msgstr "O crea una nueva página Wiki" + +msgid "" +"Create a page on the `pgRouting Wiki `__" +msgstr "" +"Crear una página en el `Wiki de pgRouting `_" + +msgid "Give the title an appropriate name" +msgstr "Asigne al título un nombre apropiado" + +msgid "" +"`Example `__" +msgstr "" +"`Ejemplo `__" + +msgid "Adding Functionality to pgRouting" +msgstr "Agregando Funcionalidad a pgRouting" + +msgid "" +"Consult the `developer's documentation `__" +msgstr "" +"Consultar la `documentation de desarrolladores `__" + +msgid "Installation" +msgstr "Instalación" + +msgid ":ref:`install-short`" +msgstr ":ref:`install-short`" + +msgid ":ref:`install_get_sources`" +msgstr ":ref:`install_get_sources`" + +msgid ":ref:`install_enable_db`" +msgstr ":ref:`install_enable_db`" + +msgid ":ref:`install_dependencies`" +msgstr ":ref:`install_dependencies`" + +msgid ":ref:`install_configuring`" +msgstr ":ref:`install_configuring`" + +msgid ":ref:`install_build`" +msgstr ":ref:`install_build`" + +msgid ":ref:`install_testing`" +msgstr ":ref:`install_testing`" + +msgid "" +"Instructions for downloading and installing binaries for different operating " +"systems, additional notes and corrections not included in this documentation " +"can be found in `Installation wiki `__" +msgstr "" +"Las instrucciones para descargar e instalar los binarios para diferentes " +"sistemas operativos, notas adicionales y correcciones no incluidas en esta " +"documentación se pueden encontrar en `Installation wiki `__" + +msgid "" +"To use pgRouting PostGIS needs to be installed, please read the information " +"about installation in this `Install Guide `__" +msgstr "" +"Para utilizar pgRouting postGIS necesita ser instalado, por favor lea la " +"información sobre la instalación en esta `Guía de instalacoón `__" + +msgid "Short Version" +msgstr "Versión corta" + +msgid "Extracting the tar ball" +msgstr "Extraer la bola de alquitrán" + +msgid "To compile assuming you have all the dependencies in your search path:" +msgstr "" +"Para compilar suponiendo que tiene todas las dependencias en su ruta de " +"búsqueda:" + +msgid "" +"Once pgRouting is installed, it needs to be enabled in each individual " +"database you want to use it in." +msgstr "" +"Una vez que pgRouting está instalado, debe habilitarse en cada base de datos " +"individual en la que desee utilizarlo." + +msgid "Get the sources" +msgstr "Obtener las fuentes" + +msgid "" +"The pgRouting latest release can be found in https://github.com/pgRouting/" +"pgrouting/releases/latest" +msgstr "" +"La última versión de pgRouting se puede encontrar en https://github.com/" +"pgRouting/pgrouting/releases/latest" + +msgid "To download this release:" +msgstr "Para descargar esta versión:" + +msgid "" +"Go to :ref:`install-short` for more instructions on extracting tar ball and " +"compiling pgRouting." +msgstr "" +"Ir a :ref:`install-short` para más instrucciones sobre la extraccion de la " +"bola tar y la compilación de pgRouting." + +msgid "git" +msgstr "git" + +msgid "To download the repository" +msgstr "Para descargar el repositorio" + +msgid "" +"Go to :ref:`install-short` for more instructions on compiling pgRouting " +"(there is no tar ball involved while downloading pgRouting repository from " +"GitHub)." +msgstr "" +"Ir a :ref:`install-short` para más instrucciones sobre la compilación de " +"pgRouting (no hay bola tar involucrada al descargar el repositorio pgRouting " +"desde GitHub)." + +msgid "Enabling and upgrading in the database" +msgstr "Habilitación y actualización en la base de datos" + +msgid "Enabling the database" +msgstr "Habilitación de la base de datos" + +msgid "" +"pgRouting is a PostgreSQL extension and depends on PostGIS to provide " +"functionalities to end user. Below given code demonstrates enabling PostGIS " +"and pgRouting in the database." +msgstr "" +"pgRouting es una extensión de PostgreSQL y depende de PostGIS para " +"proporcionar funcionalidades al usuario final. A continuación se muestra el " +"código demuestra que permite PostGIS y pgRouting en la base de datos." + +msgid "" +"Checking PostGIS and pgRouting version after enabling them in the database." +msgstr "" +"Comprobación de la versión de PostGIS y pgRouting después de habilitarlos en " +"la base de datos." + +msgid "Upgrading the database" +msgstr "Actualización de la base de datos" + +msgid "" +"To upgrade pgRouting in the database to version 4.0.0 use the following " +"command:" +msgstr "" +"Para actualizar pgRouting en la base de datos a la versión 4.0.0 utilice el " +"siguiente comando:" + +msgid "" +"More information can be found in https://www.postgresql.org/docs/current/sql-" +"createextension.html" +msgstr "" +"Puede hallar más información en https://www.postgresql.org/docs/current/sql-" +"createextension.html" + +msgid "Dependencies" +msgstr "Dependencias" + +msgid "Compilation Dependencies" +msgstr "Dependencias de Compilación" + +msgid "" +"To be able to compile pgRouting, make sure that the following dependencies " +"are met:" +msgstr "" +"Para poder compilar pgRouting, asegúrese de que se cumplen las siguientes " +"dependencias:" + +msgid "C and C++0x compilers" +msgstr "Compiladores C y C++0x" + +msgid "" +"Compiling with Boost 1.56 up to Boost 1.74 requires C++ Compiler with C++03 " +"or C++11 standard support" +msgstr "" +"Compilar con Boost 1.56 hasta Boost 1.74 requiere un compilador C++ con " +"soporte estandard para C++03 o C++11" + +msgid "" +"Compiling with Boost 1.75 requires C++ Compiler with C++14 standard support" +msgstr "" +"La compilación con Boost 1.75 requiere un compilador de C++ compatible con " +"el estándar C++14" + +msgid "Postgresql version = Supported versions by PostgreSQL" +msgstr "Versión postgresql = Versiones compatibles por PostgreSQL" + +msgid "The Boost Graph Library (BGL). Version >= 1.56" +msgstr "La Biblioteca de Gráficos Boost (BGL). Versión >= 1.56" + +msgid "CMake >= 3.2" +msgstr "CMake >= 3.2" + +msgid "optional dependencies" +msgstr "dependencias opcionales" + +msgid "For user's documentation" +msgstr "Para la documentación del usuario" + +msgid "Sphinx >= 1.1" +msgstr "Sphinx >= 1.1" + +msgid "Latex" +msgstr "Latex" + +msgid "For developer's documentation" +msgstr "Para la documentación del desarrollador" + +msgid "Doxygen >= 1.7" +msgstr "Doxygen >= 1.7" + +msgid "For testing" +msgstr "Para pruebas" + +msgid "pgtap" +msgstr "pgtap" + +msgid "pg_prove" +msgstr "pg_prove" + +msgid "For using:" +msgstr "Para uso:" + +msgid "PostGIS version >= 2.2" +msgstr "PostGIS version >= 2.2" + +msgid "Example: Installing dependencies on linux" +msgstr "Ejemplo: Instalación de dependencias en linux" + +msgid "Installing the compilation dependencies" +msgstr "Instalación de las dependencias de compilación" + +msgid "Database dependencies" +msgstr "Dependencias de bases de datos" + +msgid "Configuring PostgreSQL" +msgstr "Configurar PostgreSQL" -msgid ":doc:`pgr_dijkstraVia`" -msgstr ":doc:`pgr_dijkstraVia`" +msgid "Entering psql console" +msgstr "Entrar en la consola psql" -msgid "SQL query as described." -msgstr "Consulta SQL como se describe." +msgid "To exit psql console" +msgstr "Para salir de la consola psql" -msgid "When ``true`` Graph is considered `Directed`" -msgstr "Cuando ``true`` el gráfo se considera `Dirigido`" +msgid "" +"Entering psql console directly without switching roles can be done by the " +"following commands" +msgstr "" +"Se puede entrar directamente en la consola psql sin cambiar de rol mediante " +"los siguientes comandos" -msgid "When ``false`` the graph is considered as Undirected." -msgstr "Cuando ``false`` el gráfico se considera como No Dirigido." +msgid "Then use the above given method to exit out of the psql console" +msgstr "" +"A continuación, utilizar el método anterior para salir de la consola psql" -msgid "``strict``" -msgstr "``strict``" +msgid "Checking PostgreSQL version" +msgstr "Comprobación de la versión de PostgreSQL" -msgid "``false``" -msgstr "``false``" +msgid "or" +msgstr "o" -msgid "When ``true`` if a path is missing stops and returns **EMPTY SET**" -msgstr "Cuando ``true`` si un camino le faltan paradas y regresa **EMPTY SET**" +msgid "Enter the psql console using above given method and then enter" +msgstr "Entrar a la consola psql usando el método anterior e introducir" -msgid "When ``false`` ignores missing paths returning all paths found" -msgstr "" -"Cuando ``false``, ignora las rutas faltantes y devuelve todas las rutas " -"encontradas" +msgid "Creating PostgreSQL role" +msgstr "Creación del rol PostgreSQL" -msgid "``U_turn_on_edge``" -msgstr "``U_turn_on_edge``" +msgid "" +"Default role provided by PostgreSQL is postgres. To create new roles you can " +"use the above provided commands. The prompt will ask the user to type name " +"of the role and then provide affirmation. Proceed with the steps and you " +"will succeed in creating PostgreSQL role successfully." +msgstr "" +"El rol por defecto proporcionado por PostgreSQL es postgres. Para crear " +"nuevos roles puede utilizar los comandos proporcionados anteriromente. El " +"prompt le pedirá al usuario que escibir el nombre del rol y confirmarlo. " +"Proceder con los pasos y tendrá éxito en la creación de rol PostgreSQL." msgid "" -"When ``true`` departing from a visited vertex will not try to avoid using " -"the edge used to reach it. In other words, U turn using the edge with same " -"identifier is allowed." +"To add password to the role or change previously created password of the " +"role use the following commands" msgstr "" -"Cuando ``true`` saliendo de un vértice visitado no intentará evitar el uso " -"de la arista utilizada para alcanzarlo. En otras palabras, se permite la " -"vuelta en U usando la arista con el mismo identificador." +"Para añadir una contraseña a un rol o cambiar una contraseña previamente " +"creada utilizar los siguientes comandos" msgid "" -"When ``false`` when a departing from a visited vertex tries to avoid using " -"the edge used to reach it. In other words, U turn using the edge with same " -"identifier is used when no other path is found." +"To get additional details on the flags associated with ``createuser`` below " +"given command can be used" msgstr "" -"Cuando ``false`` al salir de un vértice visitado intenta evitar el uso de la " -"arista utilizada para alcanzarlo. En otras palabras, se utiliza la vuelta en " -"U utilizando la arista con el mismo identificador cuando no se encuentra " -"ninguna otra ruta." +"Para obtener detalles adicionales sobre las banderas asociadas con " +"``createuser`` se puede utilizar el siguiente comando" -msgid "For the TRSP functions" -msgstr "Para las funciones de TRSP" +msgid "Creating Database in PostgreSQL" +msgstr "Crear una base de datos en PostgreSQL" -msgid ":doc:`pgr_trsp`" -msgstr ":doc:`pgr_trsp`" +msgid "Connecting to a PostgreSQL Database" +msgstr "Conexión a una base de datos PostgreSQL" -msgid "Array of identifiers of destination vertices." -msgstr "Arreglo de identificadores de vértices destino." +msgid "Enter the psql console and type the following commands" +msgstr "Entrar en la consola psql y escribir los siguientes comandos" -msgid "" -"There are several kinds of columns returned are depending of the function." -msgstr "Hay varios tipos de columnas devueltas que dependen de la función." +msgid "Build dependencies" +msgstr "Construir dependencias" -msgid "Result columns for a path" -msgstr "Columnas de resultados para una ruta" +msgid "Optional dependencies" +msgstr "Dependencias opcionales" -msgid "Used in functions that return one path solution" -msgstr "Se utiliza en funciones que devuelven una solución de ruta" +msgid "For documentation and testing" +msgstr "Para documentación y pruebas" -msgid "" -"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost, " -"agg_cost)``" -msgstr "" -"Devuelve el conjunto de ``(seq, path_seq [, start_vid] [, end_vid], node, " -"edge, cost, agg_cost)``" +msgid "Configuring" +msgstr "Configuración" -msgid "``path_seq``" -msgstr "``path_seq``" +msgid "pgRouting uses the `cmake` system to do the configuration." +msgstr "pgRouting utiliza el sistema 'cmake' para realizar la configuración." -msgid "" -"Relative position in the path. Has value **1** for the beginning of a path." -msgstr "" -"Posición relativa en la ruta. Tiene el valor **1** para el inicio de una " -"ruta." +msgid "The build directory is different from the source directory" +msgstr "El directorio de compilación es diferente del directorio de origen" -msgid "" -"Identifier of the starting vertex. Returned when multiple starting vetrices " -"are in the query." -msgstr "" -"Identificador del vértice inicial. Se devuelve cuando hay varias vetrices " -"iniciales en la consulta." +msgid "Create the build directory" +msgstr "Cree el directorio de compilación" -msgid "" -"Identifier of the ending vertex. Returned when multiple ending vertices are " -"in the query." -msgstr "" -"Identificador del vértice final. Se devuelve cuando hay varios vértices " -"finales en la consulta." +msgid "Configurable variables" +msgstr "Variables configurables" -msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``." -msgstr "Identificador del nodo en la ruta de ``start_vid`` a ``end_vid``." +msgid "To see the variables that can be configured" +msgstr "Para ver las variables que se pueden configurar" -msgid "" -"Identifier of the edge used to go from ``node`` to the next node in the path " -"sequence. **-1** for the last node of the path." -msgstr "" -"Identificador de la arista utilizado para ir del ``node`` al siguiente nodo " -"de la secuencia de ruta. ``-1`` para el último nodo de la ruta." +msgid "Configuring The Documentation" +msgstr "Configurar la documentación" msgid "" -"Cost to traverse from ``node`` using ``edge`` to the next node in the path " -"sequence." +"Most of the effort of the documentation has been on the HTML files. Some " +"variables for building documentation:" msgstr "" -"Costo para atravesar desde ``node`` usando ``edge`` hasta el siguiente nodo " -"en la secuencia de la ruta." - -msgid "Used in functions the following:" -msgstr "Se utiliza en las funciones siguientes:" +"La mayor parte del esfuerzo de la documentación ha estado en los archivos " +"HTML. Algunas variables para construir la documentación:" -msgid ":doc:`pgr_withPoints`" -msgstr ":doc:`pgr_withPoints`" +msgid "Variable" +msgstr "Variable" -msgid "" -"Returns set of ``(seq, path_seq [, start_pid] [, end_pid], node, edge, cost, " -"agg_cost)``" -msgstr "" -"Devuelve el conjunto de ``(seq, path_seq [, start_pid] [, end_pid], node, " -"edge, cost, agg_cost)``" +msgid "Comment" +msgstr "Comentario" -msgid "Relative position in the path." -msgstr "Posición relativa en la ruta." +msgid "WITH_DOC" +msgstr "WITH_DOC" -msgid "**1** For the first row of the path." -msgstr "**1** para la primera fila de la secuencia de ruta." +msgid "BOOL=OFF" +msgstr "BOOL=OFF" -msgid "``start_pid``" -msgstr "``start_pid``" +msgid "Turn on/off building the documentation" +msgstr "Activar/desactivar la construcción de la documentación" -msgid "Identifier of a starting vertex/point of the path." -msgstr "Identificador del vértice/punto inicial de la ruta." +msgid "BUILD_HTML" +msgstr "BUILD_HTML" -msgid "When positive is the identifier of the starting vertex." -msgstr "Cunado positivo, es el identificador del vértice inicial." +msgid "BOOL=ON" +msgstr "BOOL=ON" -msgid "When negative is the identifier of the starting point." -msgstr "Cuando negativo, es el identificador del punto inicial." +msgid "If ON, turn on/off building HTML for user's documentation" +msgstr "" +"Si está activado, active/desactive la creación de HTML para la documentación " +"del usuario" -msgid "Returned on `Many to One`_ and `Many to Many`_" -msgstr "Regresado en `Muchos a Uno`_ y `Muchos a Muchos`_" +msgid "BUILD_DOXY" +msgstr "BUILD_DOXY" -msgid "``end_pid``" -msgstr "``end_pid``" +msgid "If ON, turn on/off building HTML for developer's documentation" +msgstr "" +"Si está activado, active o desactive la creación de HTML para la " +"documentación del desarrollador" -msgid "Identifier of an ending vertex/point of the path." -msgstr "Identificador d vértice/punto final del camino." +msgid "BUILD_LATEX" +msgstr "BUILD_LATEX" -msgid "When positive is the identifier of the ending vertex." -msgstr "Cuando negativo, es el identificador del vertice final." +msgid "If ON, turn on/off building PDF" +msgstr "Si está activado, active/desactive la creación de PDF" -msgid "When negative is the identifier of the ending point." -msgstr "Cuando es negativo, es el identificador del vértice destino." +msgid "BUILD_MAN" +msgstr "BUILD_MAN" -msgid "Returned on `One to Many`_ and `Many to Many`_" -msgstr "Regresado en `Uno a Muchos`_ y `Muchos a Muchos`_" +msgid "If ON, turn on/off building MAN pages" +msgstr "Si está activado, active/desactive las páginas MAN de construcción" -msgid "Identifier of the node in the path from ``start_pid`` to ``end_pid``." -msgstr "Identificador del nodo en la ruta de ``start_pid`` a ``end_pid``." +msgid "DOC_USE_BOOTSTRAP" +msgstr "DOC_USE_BOOTSTRAP" -msgid "When positive is the identifier of the a vertex." -msgstr "Cuando es positivo, es el identificador de un vértice." +msgid "If ON, use sphinx-bootstrap for HTML pages of the users documentation" +msgstr "" +"Si está activado, utilice sphinx-bootstrap para las páginas HTML de la " +"documentación de los usuarios" -msgid "When negative is the identifier of the a point." -msgstr "Cuando es negativo, es identificador de un punto." +msgid "Configuring cmake to create documentation before building pgRouting" +msgstr "" +"Configuración de cmake para crear documentación antes de compilar pgRouting" -msgid "" -"Identifier of the edge used to go from ``node`` to the next node in the path " -"sequence." +msgid "Most of the effort of the documentation has been on the html files." msgstr "" -"Identificador de la arsita utilizada para ir del ``node`` al siguiente nodo " -"de la secuencia de ruta." +"La mayor parte del esfuerzo de la documentación ha estado en los archivos " +"html." -msgid "**-1** for the last row of the path." -msgstr "**-1** para la última fila de la ruta." +msgid "Building" +msgstr "Compilando" -msgid "**0** For the first row of the path." -msgstr "**0** para la primera fila de la secuencia de ruta." +msgid "Using ``make`` to build the code and the documentation" +msgstr "Uso de ``make`` para compilar el código y la documentación" -msgid ":doc:`pgr_dijkstraNear`" -msgstr ":doc:`pgr_dijkstraNear`" +msgid "The following instructions start from *path/to/pgrouting/build*" +msgstr "Las siguientes instrucciones comienzan desde *path/to/pgrouting/build*" msgid "" -"Returns ``(seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)``" +"We have tested on several platforms, For installing or reinstalling all the " +"steps are needed." msgstr "" -"Regresa ``(seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)``" - -msgid "Identifier of the starting vertex of the current path." -msgstr "Identificador del vértice inicial de la ruta actual." +"Hemos probado en varias plataformas, Para instalar o reinstalar todos los " +"pasos son necesarios." -msgid "Identifier of the ending vertex of the current path." -msgstr "Identificador del vértice final de la ruta actual." +msgid "The sql signatures are configured and build in the ``cmake`` command." +msgstr "Las firmas sql se configuran y se compilan en el comando ``cmake``." -msgid "Multiple paths" -msgstr "Varias rutas" +msgid "MinGW on Windows" +msgstr "MinGW en Windows" -msgid "Selective for multiple paths." -msgstr "Selectivo para múltiples rutas." +msgid "Linux" +msgstr "Linux" -msgid "The columns depend on the function call." -msgstr "Las columnas dependen de la llamada a la función." +msgid "The following instructions start from *path/to/pgrouting*" +msgstr "Las siguientes instrucciones comienzan desde *path/to/pgrouting*" msgid "" -"Set of ``(seq, path_id, path_seq [, start_vid] [, end_vid], node, edge, " -"cost, agg_cost)``" +"To remove the build when the configuration changes, use the following code:" msgstr "" -"Conjunto de ``(seq, path_id, path_seq [, start_vid] [, end_vid], node, edge, " -"cost, agg_cost)``" +"Para eliminar la compilación cuando se cambie la configuración, utilizar el " +"siguiente código:" -msgid "``path_id``" -msgstr "``path_id``" +msgid "and start the build process as mentioned previously." +msgstr "e iniciar el proceso de compilación como se mencionó anteriormente." -msgid "Path identifier." -msgstr "Identificador del camino." +msgid "Testing" +msgstr "Pruebas" -msgid "" -"Has value **1** for the first of a path from ``start_vid`` to ``end_vid``." +msgid "Currently there is no :code:`make test` and testing is done as follows" msgstr "" -"Tiene valor **1** para el primero de la ruta de ``start_vid`` a ``end_vid``." - -msgid "Non selective for multiple paths" -msgstr "No selectivo para rutas múltiples" +"Actualmente no hay :code:`make test` y las pruebas se realizan de la " +"siguiente manera" -msgid "Regardless of the call, al the columns are returned." -msgstr "Independientemente de la llamada, se devuelven todas las columnas." +msgid "The following instructions start from *path/to/pgrouting/*" +msgstr "Las siguientes instrucciones comienzan desde *path/to/pgrouting/*" msgid "" -"Returns set of ``(seq, path_id, path_seq, start_vid, end_vid, node, edge, " -"cost, agg_cost)``" +"pgRouting is an extension of `PostGIS `__ and " +"`PostgreSQL `__ geospatial database and adds " +"routing and other network analysis functionality. A predecessor of pgRouting " +"– pgDijkstra, written by Sylvain Pasche from `Camptocamp `__, was later extended by Orkney and renamed to pgRouting. The project " +"is now supported and maintained by `Georepublic `__, `Paragon Corporation `__ and " +"a broad user community." msgstr "" -"Devuelve el conjunto de ``(seq, path_id, path_seq, start_vid, end_vid, node, " -"edge, cost, agg_cost)``" - -msgid "Result columns for cost functions" -msgstr "Columnas de resultados de las funciones de costes" - -msgid "Used in the following" -msgstr "Se utiliza en" +"pgRouting es una extensión de la base de datos geoespacial `PostGIS `__ y `PostgreSQL `__ y agrega ruteo " +"y otras funciones de análisis de redes. Un predecesor de pgRouting – " +"pgDijkstra, escrito por Sylvain Pasche de `Camptocamp `__, fue más tarde extendido por Orkney y renombrado a pgRouting. El " +"proyecto ahora es apoyado y mantenido por Georepublic `__, `Paragon Corporation `__ y " +"una amplia comunidad de usuarios." msgid "" -"When start_vid or end_vid columns have negative values, the identifier is " -"for a Point." +"pgRouting is part of `OSGeo Community Projects `__ from the `OSGeo Foundation `__ and included on `OSGeoLive `__." msgstr "" -"Cuando las columnas del vértice inicial o del destino continen valores " -"negativos, el identificador es para un Punto." - -msgid "Result columns for flow functions" -msgstr "Columnas de resultados para funciones de flujo" - -msgid "Edges SQL for the following" -msgstr "SQL de aristas para lo siguiente" - -msgid "Result columns for spanning tree functions" -msgstr "Columnas de resultados para funciones de árbol de expansión" +"pgRouting es parte de la `Comunidad de Proyectos de OSGeo ` __ de la `Fundación OSGeo ` __ y se incluye en`OSGeoLive `__." -msgid "Returns set of ``(edge, cost)``" -msgstr "Regresa el conjunto de ``(edge, cost)``" +msgid "Licensing" +msgstr "Licencias" -msgid "Cost to traverse the edge." -msgstr "Coste para atravezar el borde." +msgid "The following licenses can be found in pgRouting:" +msgstr "Las siguientes licencias pueden ser encontradas en pgRouting:" -msgid "Performance Tips" -msgstr "Consejos de Rendimiento" +msgid "**License**" +msgstr "**Licencia**" -msgid "For the Routing functions" -msgstr "Para las funciones de Ruteo" +msgid "GNU General Public License v2.0 or later" +msgstr "Licencia Pública General GNU v2.0 o posterior" msgid "" -"To get faster results bound the queries to an area of interest of routing." +"Most features of pgRouting are available under `GNU General Public License " +"v2.0 or later `_." msgstr "" -"Para obtener resultados más rápidos, delimitar las consultas a un área de " -"interés para el ruteo." +"La mayoría de las características de pgRouting están disponibles en " +"`Licencia Pública General v2.0 o posterior `_." + +msgid "Boost Software License - Version 1.0" +msgstr "Licencia de Software Boost - Version 1.0" msgid "" -"In this example Use an inner query SQL that does not include some edges in " -"the routing function and is within the area of the results." +"Some Boost extensions are available under `Boost Software License - Version " +"1.0 `_." msgstr "" -"En este ejemplo, usar una consulta SQL interna que no incluya algunas " -"aristas en la función de ruteo y dentro del área de los resultados." - -msgid "How to contribute" -msgstr "Cómo contribuir" +"Algunas extensiones de Boost están disponibles bajo `Boost Software License " +"- Version 1.0 `_." -msgid "Wiki" -msgstr "Wiki" +msgid "MIT-X License" +msgstr "Licencia MIT-X" msgid "" -"Edit an existing `pgRouting Wiki `__ page." +"Some code contributed by iMaptools.com is available under MIT-X license." msgstr "" -"Edita una página existente `Wiki de pgRouting `_." - -msgid "Or create a new Wiki page" -msgstr "O crea una nueva página Wiki" +"Parte del código es contribución de iMaptools.com y está disponibe bajo la " +"licencia MIT-X." msgid "" -"Create a page on the `pgRouting Wiki `__" +"The pgRouting Manual is licensed under a `Creative Commons Attribution-Share " +"Alike 3.0 License `_." msgstr "" -"Crear una página en el `Wiki de pgRouting `_" - -msgid "Give the title an appropriate name" -msgstr "Asigne al título un nombre apropiado" +"El Manual de pgRouting está disponible bajo una licencia `Creative Commons " +"Attribution-Share Alike 3.0 License `_." msgid "" -"`Example `__" +"In general license information should be included in the header of each " +"source file." msgstr "" -"`Ejemplo `__" +"En general, la información de las licencias debe estar incluida en la " +"cabecera de cada archivo de origen." + +msgid "Contributors" +msgstr "Colaboradores" + +msgid "This Release Contributors" +msgstr "Colaboradores de esta Versión" + +msgid "Individuals in this release v3.7.x (in alphabetical order)" +msgstr "Elementos de esta versión v3.7.x (por orden alfabético)" + +msgid "(Alphabetical order)" +msgstr "(Orden alfabético)" -msgid "Adding Functionaity to pgRouting" -msgstr "Agregar funcionalidad a pgRouting" +msgid "Regina Obe, Vicky Vergara" +msgstr "Regina Obe, Vicky Vergara" msgid "" -"Consult the `developer's documentation `__" +"And all the people that give us a little of their time making comments, " +"finding issues, making pull requests etc. in any of our products: " +"osm2pgrouting, pgRouting, pgRoutingLayer, workshop." msgstr "" -"Consultar la `documentation de desarrolladores `__" - -msgid "Installation" -msgstr "Instalación" +"Y a toda la gente que nos regala un poco de su tiempo haciendo comentarios, " +"encontrando problemas, haciendo pull requests etc. en cualquiera de nuestros " +"productos: osm2pgrouting, pgRouting, pgRoutingLayer, workshop." -msgid ":ref:`install-short`" -msgstr ":ref:`install-short`" +msgid "Corporate Sponsors in this release (in alphabetical order)" +msgstr "Patrocinadores corporativos de este lanzamiento (en orden alfabético)" -msgid ":ref:`install_get_sources`" -msgstr ":ref:`install_get_sources`" +msgid "" +"These are corporate entities that have contributed developer time, hosting, " +"or direct monetary funding to the pgRouting project:" +msgstr "" +"Estas son las entidades corporativas que han contribuido con tiempo de " +"desarrollo, alojamiento, o financiamiento monetario directo al proyecto de " +"pgRouting:" -msgid ":ref:`install_enable_db`" -msgstr ":ref:`install_enable_db`" +msgid "`OSGeo `__" +msgstr "`OSGeo `__" -msgid ":ref:`install_dependencies`" -msgstr ":ref:`install_dependencies`" +msgid "`OSGeo UK `__" +msgstr "`OSGeo UK `__" -msgid ":ref:`install_configuring`" -msgstr ":ref:`install_configuring`" +msgid "`Google Summer of Code `__" +msgstr "`Google Summer of Code `__" -msgid ":ref:`install_build`" -msgstr ":ref:`install_build`" +msgid "`Paragon Corporation `__" +msgstr "`Paragon Corporation `__" -msgid ":ref:`install_testing`" -msgstr ":ref:`install_testing`" +msgid "Contributors Past & Present:" +msgstr "Colaboradores, Pasado y Presente:" -msgid "" -"Instructions for downloading and installing binaries for different operating " -"systems, additional notes and corrections not included in this documentation " -"can be found in `Installation wiki `__" -msgstr "" -"Las instrucciones para descargar e instalar los binarios para diferentes " -"sistemas operativos, notas adicionales y correcciones no incluidas en esta " -"documentación se pueden encontrar en `Installation wiki `__" +msgid "Individuals (in alphabetical order)" +msgstr "Personas (en orden alfabético)" msgid "" -"To use pgRouting PostGIS needs to be installed, please read the information " -"about installation in this `Install Guide `__" +"Aasheesh Tiwari, Abhinav Jain, Aditya Pratap Singh, Adrien Berchet, Akio " +"Takubo, Andrea Nardelli, Anthony Tasca, Anton Patrushev, Aryan Gupta, Ashraf " +"Hossain, Ashish Kumar, Cayetano Benavent, Christian Gonzalez, Daniel Kastl, " +"Dave Potts, David Techer, Denis Rykov, Ema Miyawaki, Esteban Zimanyi, " +"Florian Thurkow, Frederic Junod, Gerald Fenoy, Gudesa Venkata Sai Akhil, " +"Hang Wu, Himanshu Raj, Imre Samu, Jay Mahadeokar, Jinfu Leng, Kai Behncke, " +"Kishore Kumar, Ko Nagase, Mahmoud Sakr, Manikata Kondeti, Mario Basa, Martin " +"Wiesenhaan, Maxim Dubinin, Maoguang Wang, Mohamed Bakli, Mohamed Zia, Mukul " +"Priya, Nitish Chauhan, Rajat Shinde, Razequl Islam, Regina Obe, Rohith " +"Reddy, Sarthak Agarwal, Shobhit Chaurasia, Sourabh Garg, Stephen Woodbridge, " +"Swapnil Joshi, Sylvain Housseman, Sylvain Pasche, Veenit Kumar, Vidhan Jain, " +"Virginia Vergara, Yige Huang" msgstr "" -"Para utilizar pgRouting postGIS necesita ser instalado, por favor lea la " -"información sobre la instalación en esta `Guía de instalacoón `__" +"Aasheesh Tiwari, Abhinav Jain, Aditya Pratap Singh, Adrien Berchet, Akio " +"Takubo, Andrea Nardelli, Anthony Tasca, Anton Patrushev, Aryan Gupta, Ashraf " +"Hossain, Ashish Kumar, Cayetano Benavent, Christian Gonzalez, Daniel Kastl, " +"Dave Potts, David Techer, Denis Rykov, Ema Miyawaki, Esteban Zimanyi, " +"Florian Thurkow, Frederic Junod, Gerald Fenoy, Gudesa Venkata Sai Akhil, " +"Hang Wu, Himanshu Raj, Imre Samu, Jay Mahadeokar, Jinfu Leng, Kai Behncke, " +"Kishore Kumar, Ko Nagase, Mahmoud Sakr, Manikata Kondeti, Mario Basa, Martin " +"Wiesenhaan, Maxim Dubinin, Maoguang Wang, Mohamed Bakli, Mohamed Zia, Mukul " +"Priya, Nitish Chauhan, Rajat Shinde, Razequl Islam, Regina Obe, Rohith " +"Reddy, Sarthak Agarwal, Shobhit Chaurasia, Sourabh Garg, Stephen Woodbridge, " +"Swapnil Joshi, Sylvain Housseman, Sylvain Pasche, Veenit Kumar, Vidhan Jain, " +"Virginia Vergara, Yige Huang" -msgid "Short Version" -msgstr "Versión corta" +msgid "Corporate Sponsors (in alphabetical order)" +msgstr "Patrocinadores corporativos (en orden alfabético)" -msgid "Extracting the tar ball" -msgstr "Extraer la bola de alquitrán" +msgid "Camptocamp" +msgstr "Camptocamp" -msgid "To compile assuming you have all the dependencies in your search path:" -msgstr "" -"Para compilar suponiendo que tiene todas las dependencias en su ruta de " -"búsqueda:" +msgid "CSIS (University of Tokyo)" +msgstr "CSIS (University of Tokyo)" -msgid "" -"Once pgRouting is installed, it needs to be enabled in each individual " -"database you want to use it in." -msgstr "" -"Una vez que pgRouting está instalado, debe habilitarse en cada base de datos " -"individual en la que desee utilizarlo." +msgid "Georepublic" +msgstr "Georepublic" -msgid "Get the sources" -msgstr "Obtener las fuentes" +msgid "Google Summer of Code" +msgstr "Google Summer of Code" -msgid "" -"The pgRouting latest release can be found in https://github.com/pgRouting/" -"pgrouting/releases/latest" -msgstr "" -"La última versión de pgRouting se puede encontrar en https://github.com/" -"pgRouting/pgrouting/releases/latest" +msgid "iMaptools" +msgstr "iMaptools" -msgid "To download this release:" -msgstr "Para descargar esta versión:" +msgid "Leopark" +msgstr "Leopark" -msgid "" -"Go to :ref:`install-short` for more instructions on extracting tar ball and " -"compiling pgRouting." -msgstr "" -"Ir a :ref:`install-short` para más instrucciones sobre la extraccion de la " -"bola tar y la compilación de pgRouting." +msgid "Orkney" +msgstr "Orkney" -msgid "git" -msgstr "git" +msgid "OSGeo" +msgstr "OSGeo" -msgid "To download the repository" -msgstr "Para descargar el repositorio" +msgid "OSGeo UK" +msgstr "OSGeo UK" -msgid "" -"Go to :ref:`install-short` for more instructions on compiling pgRouting " -"(there is no tar ball involved while downloading pgRouting repository from " -"GitHub)." -msgstr "" -"Ir a :ref:`install-short` para más instrucciones sobre la compilación de " -"pgRouting (no hay bola tar involucrada al descargar el repositorio pgRouting " -"desde GitHub)." +msgid "Paragon Corporation" +msgstr "Paragon Corporation" -msgid "Enabling and upgrading in the database" -msgstr "Habilitación y actualización en la base de datos" +msgid "Versaterm Inc." +msgstr "Versaterm Inc." -msgid "Enabling the database" -msgstr "Habilitación de la base de datos" +msgid "More Information" +msgstr "Más Información" msgid "" -"pgRouting is a PostgreSQL extension and depends on PostGIS to provide " -"functionalities to end user. Below given code demonstrates enabling PostGIS " -"and pgRouting in the database." +"The latest software, documentation and news items are available at the " +"pgRouting web site https://pgrouting.org." msgstr "" -"pgRouting es una extensión de PostgreSQL y depende de PostGIS para " -"proporcionar funcionalidades al usuario final. A continuación se muestra el " -"código demuestra que permite PostGIS y pgRouting en la base de datos." +"Lo último en software, documentación y noticias, se encuentra disponible en " +"el sitio web de pgRouting https://pgrouting.org." msgid "" -"Checking PostGIS and pgRouting version after enabling them in the database." +"PostgreSQL database server at the PostgreSQL main site https://www." +"postgresql.org." msgstr "" -"Comprobación de la versión de PostGIS y pgRouting después de habilitarlos en " -"la base de datos." - -msgid "Upgrading the database" -msgstr "Actualización de la base de datos" +"Servidor de base de datos PostgreSQL en el sitio principal de PostgreSQL " +"https://www.postgresql.org." -msgid "" -"To upgrade pgRouting in the database to version 3.7.0 use the following " -"command:" +msgid "PostGIS extension at the PostGIS project web site https://postgis.net." msgstr "" -"Para actualizar pgRouting en la base de datos a la versión 3.7.0 utilice el " -"siguiente comando:" +"PostGIS extension en el sitio web del projecto PostGIS https://postgis.net." -msgid "" -"More information can be found in https://www.postgresql.org/docs/current/sql-" -"createextension.html" -msgstr "" -"Puede hallar más información en https://www.postgresql.org/docs/current/sql-" -"createextension.html" +msgid "Boost C++ source libraries at https://www.boost.org." +msgstr "Bibliotecas de código Boost C++ en https://www.boost.org." -msgid "Dependencies" -msgstr "Dependencias" +msgid ":doc:`migration`" +msgstr ":doc:`migration`" -msgid "Compilation Dependencies" -msgstr "Dependencias de Compilación" +msgid "``pgr_KSP``" +msgstr "``pgr_KSP``" -msgid "" -"To be able to compile pgRouting, make sure that the following dependencies " -"are met:" -msgstr "" -"Para poder compilar pgRouting, asegúrese de que se cumplen las siguientes " -"dependencias:" +msgid "``pgr_KSP`` — Yen's algorithm for K shortest paths using Dijkstra." +msgstr "``pgr_KSP`` — Devuelve las K rutas más cortas usando Dijkstra ." -msgid "C and C++0x compilers" -msgstr "Compiladores C y C++0x" +msgid "Availability" +msgstr "Disponibilidad" -msgid "" -"Compiling with Boost 1.56 up to Boost 1.74 requires C++ Compiler with C++03 " -"or C++11 standard support" -msgstr "" -"Compilar con Boost 1.56 hasta Boost 1.74 requiere un compilador C++ con " -"soporte estandard para C++03 o C++11" +msgid "Version 4.0.0" +msgstr "Versión 4.0.0" -msgid "" -"Compiling with Boost 1.75 requires C++ Compiler with C++14 standard support" -msgstr "" -"La compilación con Boost 1.75 requiere un compilador de C++ compatible con " -"el estándar C++14" +msgid "All signatures promoted to official." +msgstr "Todas las firmas promovidas a oficial." -msgid "Postgresql version = Supported versions by PostgreSQL" -msgstr "Versión postgresql = Versiones compatibles por PostgreSQL" +msgid "Version 3.6.0" +msgstr "Versión 3.6.0" -msgid "The Boost Graph Library (BGL). Version >= 1.56" -msgstr "La Biblioteca de Gráficos Boost (BGL). Versión >= 1.56" +msgid "Result columns standarized to: |nksp-result|" +msgstr "Columnas de resultados estandarizadas a: |nksp-result|" -msgid "CMake >= 3.2" -msgstr "CMake >= 3.2" +msgid "pgr_ksp(One to One)" +msgstr "pgr_ksp(Uno a Uno)" -msgid "optional dependencies" -msgstr "dependencias opcionales" +msgid "Added ``start_vid`` and ``end_vid`` result columns." +msgstr "Añadidas las columnas de resultados ``start_vid`` y ``end_vid``." -msgid "For user's documentation" -msgstr "Para la documentación del usuario" +msgid "New proposed signatures:" +msgstr "Nuevas firmas propuestas:" -msgid "Sphinx >= 1.1" -msgstr "Sphinx >= 1.1" +msgid "pgr_ksp(One to Many)" +msgstr "pgr_ksp(Uno a muchos)" -msgid "Latex" -msgstr "Latex" +msgid "pgr_ksp(Many to One)" +msgstr "pgr_ksp(Muchos a uno)" -msgid "For developer's documentation" -msgstr "Para la documentación del desarrollador" +msgid "pgr_ksp(Many to Many)" +msgstr "pgr_ksp(Muchos a muchos)" -msgid "Doxygen >= 1.7" -msgstr "Doxygen >= 1.7" +msgid "pgr_ksp(Combinations)" +msgstr "pgr_ksp(Combinaciones)" -msgid "For testing" -msgstr "Para pruebas" +msgid "Version 2.1.0" +msgstr "Versión 2.1.0" -msgid "pgtap" -msgstr "pgtap" +msgid "Signature change" +msgstr "Cambio de firma" -msgid "pg_prove" -msgstr "pg_prove" +msgid "Old signature no longer supported" +msgstr "Firma antigua ya no soportada" -msgid "For using:" -msgstr "Para uso:" +msgid "Version 2.0.0" +msgstr "Versión 2.0.0" -msgid "PostGIS version >= 2.2" -msgstr "PostGIS version >= 2.2" +msgid "Official function." +msgstr "Función oficial." -msgid "Example: Installing dependencies on linux" -msgstr "Ejemplo: Instalación de dependencias en linux" +msgid "" +"The K shortest path routing algorithm based on Yen's algorithm. \"K\" is the " +"number of shortest paths desired." +msgstr "" +"El algoritmo de ruteo para obtener la ruta más corta K basado en el " +"algoritmo de Yen . \"K\" es el número de rutas más cortas deseadas." -msgid "Installing the compilation dependencies" -msgstr "Instalación de las dependencias de compilación" +msgid "|Boost| Boost Graph Inside" +msgstr "|Boost| Adentro: Boost Graph" -msgid "Database dependencies" -msgstr "Dependencias de bases de datos" +msgid "Boost Graph Inside" +msgstr "Adentro: Boost Graph" -msgid "Configuring PostgreSQL" -msgstr "Configurar PostgreSQL" +msgid "Signatures" +msgstr "Firmas" -msgid "Entering psql console" -msgstr "Entrar en la consola psql" +msgid "Summary" +msgstr "Resumen" -msgid "To exit psql console" -msgstr "Para salir de la consola psql" +msgid "pgr_KSP(`Edges SQL`_, **start vid**, **end vid**, **K**, [**options**])" +msgstr "" +"pgr_KSP(`SQL de aristas`_, **salida**, **destino**, **K**, [**opciones**])" msgid "" -"Entering psql console directly without switching roles can be done by the " -"following commands" +"pgr_KSP(`Edges SQL`_, **start vid**, **end vids**, **K**, [**options**])" msgstr "" -"Se puede entrar directamente en la consola psql sin cambiar de rol mediante " -"los siguientes comandos" +"pgr_KSP(`SQL de aristas`_, **salida**, **destinos**, **K**, [**opciones**])" -msgid "Then use the above given method to exit out of the psql console" +msgid "" +"pgr_KSP(`Edges SQL`_, **start vids**, **end vid**, **K**, [**options**])" msgstr "" -"A continuación, utilizar el método anterior para salir de la consola psql" +"pgr_KSP(`SQL de aristas`_, **salidas**, **destino**, **K**, [**opciones**])" -msgid "Checking PostgreSQL version" -msgstr "Comprobación de la versión de PostgreSQL" +msgid "" +"pgr_KSP(`Edges SQL`_, **start vids**, **end vids**, **K**, [**options**])" +msgstr "" +"pgr_KSP(`SQL de aristas`_, **salidas**, **destinos**, **K**, [**opciones**])" -msgid "or" -msgstr "o" +msgid "pgr_KSP(`Edges SQL`_, `Combinations SQL`_, **K**, [**options**])" +msgstr "" +"pgr_KSP(`SQL de aristas`_, `SQL de combinaciones`_, **K**, [**opciones**])" -msgid "Enter the psql console using above given method and then enter" -msgstr "Entrar a la consola psql usando el método anterior e introducir" +msgid "**options:** ``[directed, heap_paths]``" +msgstr "**opcionales:** ``[directed, heap_paths]``" + +msgid "Returns set of |nksp-result|" +msgstr "Regresa conjunto de |nksp-result|" + +msgid "OR EMPTY SET" +msgstr "O CONJUNTO VACÍO" + +msgid "Example" +msgstr "Ejemplo" -msgid "Creating PostgreSQL role" -msgstr "Creación del rol PostgreSQL" +msgid "Get 2 paths from :math:`6` to :math:`17` on a directed graph." +msgstr "" +"Obteners 2 caminos desde :math:`6` hasta :math:`17` en un grafo dirigido." msgid "" -"Default role provided by PostgreSQL is postgres. To create new roles you can " -"use the above provided commands. The prompt will ask the user to type name " -"of the role and then provide affirmation. Proceed with the steps and you " -"will succeed in creating PostgreSQL role successfully." +"Get 2 paths from vertex :math:`6` to vertices :math:`\\{10, 17\\}` on a " +"directed graph." msgstr "" -"El rol por defecto proporcionado por PostgreSQL es postgres. Para crear " -"nuevos roles puede utilizar los comandos proporcionados anteriromente. El " -"prompt le pedirá al usuario que escibir el nombre del rol y confirmarlo. " -"Proceder con los pasos y tendrá éxito en la creación de rol PostgreSQL." +"Obtener 2 rutas del vértice :math:`6` a los vértices :math:`\\{10, 17\\}` en " +"un grafo dirigido." msgid "" -"To add password to the role or change previously created password of the " -"role use the following commands" +"Get 2 paths from vertices :math:`\\{6, 1\\}` to vertex :math:`17` on a " +"directed graph." msgstr "" -"Para añadir una contraseña a un rol o cambiar una contraseña previamente " -"creada utilizar los siguientes comandos" +"Obtener 2 rutas de los vértices :math:`\\{6, 1\\}` al vértice :math:`17` en " +"un grafo dirigido." msgid "" -"To get additional details on the flags associated with ``createuser`` below " -"given command can be used" +"Get 2 paths vertices :math:`\\{6, 1\\}` to vertices :math:`\\{10, 17\\}` on " +"a directed graph." msgstr "" -"Para obtener detalles adicionales sobre las banderas asociadas con " -"``createuser`` se puede utilizar el siguiente comando" - -msgid "Creating Database in PostgreSQL" -msgstr "Crear una base de datos en PostgreSQL" - -msgid "Connecting to a PostgreSQL Database" -msgstr "Conexión a una base de datos PostgreSQL" - -msgid "Enter the psql console and type the following commands" -msgstr "Entrar en la consola psql y escribir los siguientes comandos" +"Obtener 2 rutas los vértices :math:`\\{6, 1\\}` a los vértices :math:`\\{10, " +"17\\}` en un grafo dirigido." -msgid "Build dependencies" -msgstr "Construir dependencias" +msgid "Using a combinations table on an directed graph" +msgstr "Usando una tabla de combinaciones en un grafo dirigido" -msgid "Optional dependencies" -msgstr "Dependencias opcionales" +msgid "The combinations table:" +msgstr "La tabla de combinaciones:" -msgid "For documentation and testing" -msgstr "Para documentación y pruebas" +msgid "The query:" +msgstr "La consulta:" -msgid "Configuring" -msgstr "Configuración" +msgid "Identifier of the destination vertex." +msgstr "Identificador del vértice destino." -msgid "pgRouting uses the `cmake` system to do the configuration." -msgstr "pgRouting utiliza el sistema 'cmake' para realizar la configuración." +msgid "**K**" +msgstr "**K**" -msgid "The build directory is different from the source directory" -msgstr "El directorio de compilación es diferente del directorio de origen" +msgid "Number of required paths." +msgstr "Cantidad de rutas requeridas." -msgid "Create the build directory" -msgstr "Cree el directorio de compilación" +msgid "KSP Optional parameters" +msgstr "Parámetros opcionales de KSP" -msgid "Configurable variables" -msgstr "Variables configurables" +msgid "``heap_paths``" +msgstr "``heap_paths``" -msgid "To see the variables that can be configured" -msgstr "Para ver las variables que se pueden configurar" +msgid "When ``false`` Returns at most K paths." +msgstr "Cuando ``false`` Regresa a lo más K caminos." -msgid "Configuring The Documentation" -msgstr "Configurar la documentación" +msgid "When ``true`` all the calculated paths while processing are returned." +msgstr "" +"Cuando ``true`` se regresan todos los caminos calulados mientras se procesa." msgid "" -"Most of the effort of the documentation has been on the HTML files. Some " -"variables for building documentation:" +"Roughly, when the shortest path has ``N`` edges, the heap will contain about " +"than ``N * K`` paths for small value of ``K`` and ``K > 5``." msgstr "" -"La mayor parte del esfuerzo de la documentación ha estado en los archivos " -"HTML. Algunas variables para construir la documentación:" +"Aproximadamente, si la ruta más corta tiene ``N`` aristas, las procesadas " +"contendrán aproximadamente ``N * K`` rutas para valores pequeños de ``K`` y " +"``K > 5``." -msgid "Variable" -msgstr "Variable" +msgid "" +"Has value **1** for the first of a path from ``start_vid`` to ``end_vid``" +msgstr "" +"Tiene valor **1** para el primero de la ruta de ``start_vid`` a ``end_vid``" -msgid "Comment" -msgstr "Comentario" +msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``" +msgstr "Identificador del nodo en la ruta de ``start_vid`` a ``end_vid``" -msgid "WITH_DOC" -msgstr "WITH_DOC" +msgid ":math:`0` for the last ``node`` of the path." +msgstr ":math:`0` para el último ``node`` de la ruta." -msgid "BOOL=OFF" -msgstr "BOOL=OFF" +msgid "Aggregate cost from **start vid** to ``node``." +msgstr "Costo agregado desde **vid inicial** hasta ``node``." -msgid "Turn on/off building the documentation" -msgstr "Activar/desactivar la construcción de la documentación" +msgid "Additional Examples" +msgstr "Ejemplos Adicionales" -msgid "BUILD_HTML" -msgstr "BUILD_HTML" +msgid "Get 2 paths from :math:`6` to :math:`17` on an undirected graph" +msgstr "" +"Obteners 2 caminos desde :math:`6` hasta :math:`17` en un grafo no dirigido" -msgid "BOOL=ON" -msgstr "BOOL=ON" +msgid "Also get the paths in the heap." +msgstr "También obtener los caminos procesados." -msgid "If ON, turn on/off building HTML for user's documentation" +msgid "Get 2 paths using combinations table on an undirected graph" msgstr "" -"Si está activado, active/desactive la creación de HTML para la documentación " -"del usuario" - -msgid "BUILD_DOXY" -msgstr "BUILD_DOXY" +"Obtener dos rutas usando una tabla de combinaciones en un grafo no dirigido" -msgid "If ON, turn on/off building HTML for developer's documentation" +msgid "" +"Get 2 paths from vertices :math:`\\{6, 1\\}` to vertex :math:`17` on a " +"undirected graph." msgstr "" -"Si está activado, active o desactive la creación de HTML para la " -"documentación del desarrollador" +"Obtener 2 rutas de los vértices :math:`\\{6, 1\\}` al vértice :math:`17` en " +"un grafo no dirigido." -msgid "BUILD_LATEX" -msgstr "BUILD_LATEX" +msgid "https://en.wikipedia.org/wiki/K_shortest_path_routing" +msgstr "https://en.wikipedia.org/wiki/K_shortest_path_routing" -msgid "If ON, turn on/off building PDF" -msgstr "Si está activado, active/desactive la creación de PDF" +msgid "``pgr_TSP``" +msgstr "``pgr_TSP``" -msgid "BUILD_MAN" -msgstr "BUILD_MAN" +msgid "``pgr_TSP`` - Approximation using *metric* algorithm." +msgstr "``pgr_TSP`` - Aproximación usando el algoritmo *métrico*." -msgid "If ON, turn on/off building MAN pages" -msgstr "Si está activado, active/desactive las páginas MAN de construcción" +msgid "Availability:" +msgstr "Disponibilidad:" -msgid "DOC_USE_BOOTSTRAP" -msgstr "DOC_USE_BOOTSTRAP" +msgid "Version 3.2.1" +msgstr "Versión 3.2.1" -msgid "If ON, use sphinx-bootstrap for HTML pages of the users documentation" +msgid "" +"Metric Algorithm from `Boost library `__" msgstr "" -"Si está activado, utilice sphinx-bootstrap para las páginas HTML de la " -"documentación de los usuarios" +"Algoritmo Metrico de la `Librería Boost `__" -msgid "Configuring cmake to create documentation before building pgRouting" -msgstr "" -"Configuración de cmake para crear documentación antes de compilar pgRouting" +msgid "Simulated Annealing Algorithm no longer supported" +msgstr "El algoritmo de recocido simulado ya no es utilizado" -msgid "Most of the effort of the documentation has been on the html files." +msgid "" +"The Simulated Annealing Algorithm related parameters are ignored: " +"max_processing_time, tries_per_temperature, max_changes_per_temperature, " +"max_consecutive_non_changes, initial_temperature, final_temperature, " +"cooling_factor, randomize" msgstr "" -"La mayor parte del esfuerzo de la documentación ha estado en los archivos " -"html." - -msgid "Building" -msgstr "Compilando" - -msgid "Using ``make`` to build the code and the documentation" -msgstr "Uso de ``make`` para compilar el código y la documentación" +"Se ignoran los parámetros relacionados con el algoritmo de recocido " +"simulado: max_processing_time, tries_per_temperature, " +"max_changes_per_temperature, max_consecutive_non_changes, " +"initial_temperature, final_temperature, cooling_factor, randomize" -msgid "The following instructions start from *path/to/pgrouting/build*" -msgstr "Las siguientes instrucciones comienzan desde *path/to/pgrouting/build*" +msgid "Version 2.3.0" +msgstr "Versión 2.3.0" msgid "" -"We have tested on several platforms, For installing or reinstalling all the " -"steps are needed." +"Can be Used with :doc:`costMatrix-category` functions preferably with " +"`directed => false`." msgstr "" -"Hemos probado en varias plataformas, Para instalar o reinstalar todos los " -"pasos son necesarios." - -msgid "The sql signatures are configured and build in the ``cmake`` command." -msgstr "Las firmas sql se configuran y se compilan en el comando ``cmake``." +"Se puede utilizar con funciones :doc:`costMatrix-category` preferiblemente " +"con `directed => false`." -msgid "MinGW on Windows" -msgstr "MinGW en Windows" +msgid "With ``directed => false``" +msgstr "Con ``directed => false``" -msgid "Linux" -msgstr "Linux" +msgid "Will generate a graph that:" +msgstr "Generará un grafo que:" -msgid "The following instructions start from *path/to/pgrouting*" -msgstr "Las siguientes instrucciones comienzan desde *path/to/pgrouting*" +msgid "is undirected" +msgstr "es no dirigido" -msgid "" -"To remove the build when the configuration changes, use the following code:" +msgid "is fully connected (As long as the graph has one component)" msgstr "" -"Para eliminar la compilación cuando se cambie la configuración, utilizar el " -"siguiente código:" - -msgid "and start the build process as mentioned previously." -msgstr "e iniciar el proceso de compilación como se mencionó anteriormente." - -msgid "Testing" -msgstr "Pruebas" +"está completamente conectado (siempre que el grafo tenga un componente)" -msgid "Currently there is no :code:`make test` and testing is done as follows" +msgid "all traveling costs on edges obey the triangle inequality." msgstr "" -"Actualmente no hay :code:`make test` y las pruebas se realizan de la " -"siguiente manera" - -msgid "The following instructions start from *path/to/pgrouting/*" -msgstr "Las siguientes instrucciones comienzan desde *path/to/pgrouting/*" +"todos los costos de viaje en los segmentos vumplen con la desigualdad del " +"triángulo." -msgid "" -"pgRouting is an extension of `PostGIS `__ and " -"`PostgreSQL `__ geospatial database and adds " -"routing and other network analysis functionality. A predecessor of pgRouting " -"– pgDijkstra, written by Sylvain Pasche from `Camptocamp `__, was later extended by Orkney and renamed to pgRouting. The project " -"is now supported and maintained by `Georepublic `__, `Paragon Corporation `__ and " -"a broad user community." -msgstr "" -"pgRouting es una extensión de la base de datos geoespacial `PostGIS `__ y `PostgreSQL `__ y agrega ruteo " -"y otras funciones de análisis de redes. Un predecesor de pgRouting – " -"pgDijkstra, escrito por Sylvain Pasche de `Camptocamp `__, fue más tarde extendido por Orkney y renombrado a pgRouting. El " -"proyecto ahora es apoyado y mantenido por Georepublic `__, `Paragon Corporation `__ y " -"una amplia comunidad de usuarios." +msgid "When ``start_vid = 0 OR end_vid = 0``" +msgstr "Cuando ``start_vid = 0 Ó end_vid = 0``" msgid "" -"pgRouting is part of `OSGeo Community Projects `__ from the `OSGeo Foundation `__ and included on `OSGeoLive `__." +"The solutions generated is garanteed to be *twice as long as the optimal " +"tour in the worst case*" msgstr "" -"pgRouting es parte de la `Comunidad de Proyectos de OSGeo ` __ de la `Fundación OSGeo ` __ y se incluye en`OSGeoLive `__." - -msgid "Licensing" -msgstr "Licencias" +"Las soluciones generadas están garantizadas para ser *el doble de largas que " +"el recorrido óptimo en el peor de los casos*" -msgid "The following licenses can be found in pgRouting:" -msgstr "Las siguientes licencias pueden ser encontradas en pgRouting:" +msgid "When ``start_vid != 0 AND end_vid != 0 AND start_vid != end_vid``" +msgstr "Cuando ``start_vid != 0 Y end_vid != 0 Y start_vid != end_vid``" -msgid "**License**" -msgstr "**Licencia**" +msgid "" +"It is **not garanteed** that the solution will be, in the worse case, twice " +"as long as the optimal tour, due to the fact that `end_vid` is forced to be " +"in a fixed position." +msgstr "" +"**No está garantizado** que la solución sea, en el peor de los casos, el " +"doble de larga que el recorrido óptimo, debido al hecho de que `end_vid` se " +"ve obligado a estar en una posición fija." -msgid "GNU General Public License v2.0 or later" -msgstr "Licencia Pública General GNU v2.0 o posterior" +msgid "With ``directed => true``" +msgstr "Con ``directed => true``" msgid "" -"Most features of pgRouting are available under `GNU General Public License " -"v2.0 or later `_." +"It is **not garanteed** that the solution will be, in the worse case, twice " +"as long as the optimal tour" msgstr "" -"La mayoría de las características de pgRouting están disponibles en " -"`Licencia Pública General v2.0 o posterior `_." +"**No está garantizado** que la solución sea, en el peor de los casos, el " +"doble de larga que el recorrido óptimo" -msgid "Boost Software License - Version 1.0" -msgstr "Licencia de Software Boost - Version 1.0" +msgid "is directed" +msgstr "es dirigido" msgid "" -"Some Boost extensions are available under `Boost Software License - Version " -"1.0 `_." +"some (or all) traveling costs on edges might not obey the triangle " +"inequality." msgstr "" -"Algunas extensiones de Boost están disponibles bajo `Boost Software License " -"- Version 1.0 `_." +"algunos (o todos) los costos de viaje en los segmentos podrían no obedecer a " +"la desigualdad del triángulo." -msgid "MIT-X License" -msgstr "Licencia MIT-X" +msgid "" +"As an undirected graph is required, the directed graph is transformed as " +"follows:" +msgstr "" +"Como se requiere un grafo no dirigido, el grafo dirigido se transforma de la " +"siguiente manera:" msgid "" -"Some code contributed by iMaptools.com is available under MIT-X license." +"edges `(u, v)` and `(v, u)` is considered to be the same edge (denoted `(u, " +"v)`" msgstr "" -"Parte del código es contribución de iMaptools.com y está disponibe bajo la " -"licencia MIT-X." +"los segmentos `(u, v)` y `(v, u)` se consideran el mismo segmentos (denotado " +"`(u, v)`" + +msgid "if ``agg_cost`` differs between one or more instances of edge `(u, v)`" +msgstr "" +"Si '``agg_cost`` difiere entre una o más instancias del segmento `(u, v)`" msgid "" -"The pgRouting Manual is licensed under a `Creative Commons Attribution-Share " -"Alike 3.0 License `_." +"The minimum value of the ``agg_cost`` all instances of edge `(u, v)` is " +"going to be considered as the ``agg_cost`` of edge `(u, v)`" msgstr "" -"El Manual de pgRouting está disponible bajo una licencia `Creative Commons " -"Attribution-Share Alike 3.0 License `_." +"El valor mínimo de ``agg_cost`` en todas las instancias de la arista `(u, " +"v)` se considera como el ``agg_cost`` de la arista `(u, v)`" msgid "" -"In general license information should be included in the header of each " -"source file." +"Some (or all) traveling costs on edges will still might not obey the " +"triangle inequality." msgstr "" -"En general, la información de las licencias debe estar incluida en la " -"cabecera de cada archivo de origen." +"Algunos (o todos) los costos de viaje en los segmentos aún podrían no " +"obedecer a la desigualdad del triángulo." -msgid "Contributors" -msgstr "Colaboradores" +msgid "When the data is incomplete, but it is a connected graph:" +msgstr "Cuando los datos están incompletos, pero es un grafo conectado:" -msgid "This Release Contributors" -msgstr "Colaboradores de esta Versión" +msgid "the missing values will be calculated with dijkstra algorithm." +msgstr "" +"los datos están incompletos se calcularán con el algoritmo de Dijkstra." -msgid "Individuals in this release v3.7.x (in alphabetical order)" -msgstr "Elementos de esta versión v3.7.x (por orden alfabético)" +msgid "pgr_TSP(`Matrix SQL`_, ``[start_id, end_id]``)" +msgstr "pgr_TSP(`SQL de martiz`_, ``[start_id, end_id]``)" -msgid "(Alphabetical order)" -msgstr "(Orden alfabético)" +msgid "Returns set of |tsp-result|" +msgstr "Regresa el conjunto de |nksp-result|" -msgid "Regina Obe, Vicky Vergara" -msgstr "Regina Obe, Vicky Vergara" +msgid "OR EMTPY SET" +msgstr "O CONJUNTO VACÍO" -msgid "" -"And all the people that give us a little of their time making comments, " -"finding issues, making pull requests etc. in any of our products: " -"osm2pgrouting, pgRouting, pgRoutingLayer, workshop." +msgid "Using :doc:`pgr_dijkstraCostMatrix` to generate the matrix information" msgstr "" -"Y a toda la gente que nos regala un poco de su tiempo haciendo comentarios, " -"encontrando problemas, haciendo pull requests etc. en cualquiera de nuestros " -"productos: osm2pgrouting, pgRouting, pgRoutingLayer, workshop." - -msgid "Corporate Sponsors in this release (in alphabetical order)" -msgstr "Patrocinadores corporativos de este lanzamiento (en orden alfabético)" +"Usando :doc:`pgr_dijkstraCostMatrix` para generar la información de la matriz" msgid "" -"These are corporate entities that have contributed developer time, hosting, " -"or direct monetary funding to the pgRouting project:" +"**Line 4** Vertices :math:`\\{2, 4, 13, 14\\}` are not included because they " +"are not connected." msgstr "" -"Estas son las entidades corporativas que han contribuido con tiempo de " -"desarrollo, alojamiento, o financiamiento monetario directo al proyecto de " -"pgRouting:" +"**Línea 5** Los vértices :math:`\\{2, 4, 13, 14\\}` no están incluidos " +"porque no están conectados." -msgid "`OSGeo `__" -msgstr "`OSGeo `__" +msgid "`Matrix SQL`_ as described below" +msgstr "`SQL de matriz`_ como se describe más adelante" -msgid "`OSGeo UK `__" -msgstr "`OSGeo UK `__" +msgid "``ANY-INTEGER``" +msgstr "``ANY-INTEGER``" -msgid "`Google Summer of Code `__" -msgstr "`Google Summer of Code `__" +msgid "``ANY-NUMERICAL``" +msgstr "``ANY-NUMERICAL``" -msgid "`Paragon Corporation `__" -msgstr "`Paragon Corporation `__" +msgid "Cost for going from start_vid to end_vid" +msgstr "Costo para pasar de start_vid a end_vid" -msgid "Contributors Past & Present:" -msgstr "Colaboradores, Pasado y Presente:" +msgid "Returns SET OF ``(seq, node, cost, agg_cost)``" +msgstr "Devuelve el CONJUNTO DE ``(seq, node, cost, agg_cost)``" -msgid "Individuals (in alphabetical order)" -msgstr "Personas (en orden alfabético)" +msgid "Row sequence." +msgstr "Secuencia de filas." + +msgid "**node**" +msgstr "**node**" + +msgid "Identifier of the node/coordinate/point." +msgstr "Identificador del nodo/coordenada/punto." msgid "" -"Aasheesh Tiwari, Abhinav Jain, Aditya Pratap Singh, Adrien Berchet, Akio " -"Takubo, Andrea Nardelli, Anthony Tasca, Anton Patrushev, Aryan Gupta, Ashraf " -"Hossain, Ashish Kumar, Cayetano Benavent, Christian Gonzalez, Daniel Kastl, " -"Dave Potts, David Techer, Denis Rykov, Ema Miyawaki, Esteban Zimanyi, " -"Florian Thurkow, Frederic Junod, Gerald Fenoy, Gudesa Venkata Sai Akhil, " -"Hang Wu, Himanshu Raj, Imre Samu, Jay Mahadeokar, Jinfu Leng, Kai Behncke, " -"Kishore Kumar, Ko Nagase, Mahmoud Sakr, Manikata Kondeti, Mario Basa, Martin " -"Wiesenhaan, Maxim Dubinin, Maoguang Wang, Mohamed Bakli, Mohamed Zia, Mukul " -"Priya, Nitish Chauhan, Rajat Shinde, Razequl Islam, Regina Obe, Rohith " -"Reddy, Sarthak Agarwal, Shobhit Chaurasia, Sourabh Garg, Stephen Woodbridge, " -"Swapnil Joshi, Sylvain Housseman, Sylvain Pasche, Veenit Kumar, Vidhan Jain, " -"Virginia Vergara, Yige Huang" +"Cost to traverse from the current ``node`` to the next ``node`` in the path " +"sequence." msgstr "" -"Aasheesh Tiwari, Abhinav Jain, Aditya Pratap Singh, Adrien Berchet, Akio " -"Takubo, Andrea Nardelli, Anthony Tasca, Anton Patrushev, Aryan Gupta, Ashraf " -"Hossain, Ashish Kumar, Cayetano Benavent, Christian Gonzalez, Daniel Kastl, " -"Dave Potts, David Techer, Denis Rykov, Ema Miyawaki, Esteban Zimanyi, " -"Florian Thurkow, Frederic Junod, Gerald Fenoy, Gudesa Venkata Sai Akhil, " -"Hang Wu, Himanshu Raj, Imre Samu, Jay Mahadeokar, Jinfu Leng, Kai Behncke, " -"Kishore Kumar, Ko Nagase, Mahmoud Sakr, Manikata Kondeti, Mario Basa, Martin " -"Wiesenhaan, Maxim Dubinin, Maoguang Wang, Mohamed Bakli, Mohamed Zia, Mukul " -"Priya, Nitish Chauhan, Rajat Shinde, Razequl Islam, Regina Obe, Rohith " -"Reddy, Sarthak Agarwal, Shobhit Chaurasia, Sourabh Garg, Stephen Woodbridge, " -"Swapnil Joshi, Sylvain Housseman, Sylvain Pasche, Veenit Kumar, Vidhan Jain, " -"Virginia Vergara, Yige Huang" +"Coste que se debe recorrer desde el ``nodo`` al siguiente ``nodo`` en la " +"secuencia de ruta." -msgid "Corporate Sponsors (in alphabetical order)" -msgstr "Patrocinadores corporativos (en orden alfabético)" +msgid "``0`` for the last row in the tour sequence." +msgstr "``0`` para la última fila en la secuencia del recorrido." -msgid "Camptocamp" -msgstr "Camptocamp" +msgid "Aggregate cost from the ``node`` at ``seq = 1`` to the current node." +msgstr "Costo agregado del ``nodo`` en ``seq = 1`` hacia el nodo actual." -msgid "CSIS (University of Tokyo)" -msgstr "CSIS (University of Tokyo)" +msgid "``0`` for the first row in the tour sequence." +msgstr "``0`` para la primera fila en la secuencia del recorrido." -msgid "Georepublic" -msgstr "Georepublic" +msgid "Start from vertex :math:`1`" +msgstr "Inicio en el vértice :math:`1`" -msgid "Google Summer of Code" -msgstr "Google Summer of Code" +msgid "**Line 6** ``start_vid => 1``" +msgstr "**Linea 6** ``start_vid => 1``" -msgid "iMaptools" -msgstr "iMaptools" +msgid "Using points of interest to generate an asymetric matrix." +msgstr "Uso de puntos de interés para generar una matriz asimétrica." -msgid "Leopark" -msgstr "Leopark" +msgid "To generate an asymmetric matrix:" +msgstr "Para generar una matriz asimétrica:" -msgid "Orkney" -msgstr "Orkney" +msgid "" +"**Line 4** The ``side`` information of ``pointsOfInterset`` is ignored by " +"not including it in the query" +msgstr "" +"**Línea 4** La información ``side`` de ``pointsOfInterset`` se ignora al no " +"incluirla en la consulta" -msgid "OSGeo" -msgstr "OSGeo" +msgid "**Line 6** Generating an asymetric matrix with ``directed => true``" +msgstr "" +"**Línea 6** Generación de una matriz asimétrica con ``directed => true``" -msgid "OSGeo UK" -msgstr "OSGeo UK" +msgid "" +":math:`min(agg\\_cost(u, v), agg\\_cost(v, u))` is going to be considered as " +"the ``agg_cost``" +msgstr "" +":math:`min(agg\\_cost(u, v), agg\\_cost(v, u))` se considera como el " +"``agg_cost``" -msgid "Paragon Corporation" -msgstr "Paragon Corporation" +msgid "" +"The solution that can be larger than *twice as long as the optimal tour* " +"because:" +msgstr "" +"La solución que puede ser mayor que *el doble de larga que el tour óptimo* " +"porque:" -msgid "Versaterm Inc." -msgstr "Versaterm Inc." +msgid "Triangle inequality might not be satisfied." +msgstr "La desigualdad del triángulo podría no estar satisfecha." -msgid "More Information" -msgstr "Más Información" +msgid "``start_id != 0 AND end_id != 0``" +msgstr "``start_id != 0 Y end_id != 0``" + +msgid "Connected incomplete data" +msgstr "Datos incompletos conectados" msgid "" -"The latest software, documentation and news items are available at the " -"pgRouting web site https://pgrouting.org." +"Using selected edges :math:`\\{2, 4, 5, 8, 9, 15\\}` the matrix is not " +"complete." msgstr "" -"Lo último en software, documentación y noticias, se encuentra disponible en " -"el sitio web de pgRouting https://pgrouting.org." +"Usando aristas seleccionadas :math:`\\{2, 4, 5, 8, 9, 15\\}` la matriz no es " +"completa." msgid "" -"PostgreSQL database server at the PostgreSQL main site https://www." -"postgresql.org." +"Cost value for :math:`17 \\rightarrow 10` do not exist on the matrix, but " +"the value used is taken from :math:`10 \\rightarrow 17`." msgstr "" -"Servidor de base de datos PostgreSQL en el sitio principal de PostgreSQL " -"https://www.postgresql.org." +"Valor del cost para :math:`17 \\rightarrow 10` no existe en la matriz, pero " +"el valor se toma de :math:`10 \\rightarrow 17`." -msgid "PostGIS extension at the PostGIS project web site https://postgis.net." -msgstr "" -"PostGIS extension en el sitio web del projecto PostGIS https://postgis.net." +msgid "``pgr_TSPeuclidean``" +msgstr "``pgr_TSPeuclidean``" -msgid "Boost C++ source libraries at https://www.boost.org." -msgstr "Bibliotecas de código Boost C++ en https://www.boost.org." +msgid "``pgr_TSPeuclidean`` - Approximation using *metric* algorithm." +msgstr "``pgr_TSPeuclidean`` - Aproximación usando el algoritmo *métrico*." -msgid ":doc:`migration`" -msgstr ":doc:`migration`" +msgid "" +"Using `Boost: metric TSP approx `__" +msgstr "" +"Usando `Boost: Algoritmo de aproximación Métrica de TSP `__" -msgid "pgr_KSP" -msgstr "pgr_KSP" +msgid "" +"The Simulated Annealing Algorithm related parameters are ignored: " +"`max_processing_time`, `tries_per_temperature`, " +"`max_changes_per_temperature`, `max_consecutive_non_changes`, " +"`initial_temperature`, `final_temperature`, `cooling_factor`, `randomize`" +msgstr "" +"Se ignoran los parámetros relacionados con el algoritmo de recocido " +"simulado: `max_processing_time`, `tries_per_temperature`, " +"`max_changes_per_temperature`, `max_consecutive_non_changes`, " +"`initial_temperature`, `final_temperature`, `cooling_factor`, `randomize`" -msgid "``pgr_KSP`` — Yen's algorithm for K shortest paths using Dijkstra." -msgstr "``pgr_KSP`` — Devuelve las K rutas más cortas usando Dijkstra ." +msgid "Version 3.0.0" +msgstr "Versión 3.0.0" -msgid "Availability" -msgstr "Disponibilidad" +msgid "Name change from pgr_eucledianTSP" +msgstr "Cambio de nombre de pgr_eucledianTSP" -msgid "Version 3.6.0" -msgstr "Versión 3.6.0" +msgid "New official function." +msgstr "Nueva función oficial." -msgid "Result columns standarized to: |nksp-result|" -msgstr "Columnas de resultados estandarizadas a: |nksp-result|" +msgid "" +"Any duplicated identifier will be ignored. The coordinates that will be kept" +msgstr "" +"Cualquier identificador duplicado será ignorado. Las coordenadas que se " +"mantendrán" -msgid "``pgr_ksp`` (One to One)" -msgstr "``pgr_ksp`` (Uno a Uno)" +msgid "is arbitrarly." +msgstr "es arbitrario." -msgid "Added ``start_vid`` and ``end_vid`` result columns." -msgstr "Añadidas las columnas de resultados ``start_vid`` y ``end_vid``." +msgid "" +"The coordinates are quite similar for the same identifier, for example ::" +msgstr "" +"Las coordenadas son bastante similares para el mismo identificador, por " +"ejemplo:" -msgid "New overload functions:" -msgstr "Nuevas funciones de sobrecarga:" +msgid "" +"The coordinates are quite different for the same identifier, for example ::" +msgstr "" +"Las coordenadas son bastante diferentes para el mismo identificador, por " +"ejemplo:" -msgid "``pgr_ksp`` (One to Many)" -msgstr "``pgr_ksp`` (Uno a muchos)" +msgid "pgr_TSPeuclidean(`Coordinates SQL`_, ``[start_id, end_id]``)" +msgstr "pgr_TSPeuclidean(`SQL de Coordenadas`_, ``[start_id, end_id]``)" -msgid "``pgr_ksp`` (Many to One)" -msgstr "``pgr_ksp`` (Muchos a uno)" +msgid "With default values" +msgstr "Con valores predeterminados" -msgid "``pgr_ksp`` (Many to Many)" -msgstr "``pgr_ksp`` (Muchos a muchos)" +msgid "`Coordinates SQL`_" +msgstr "`SQL coordenadas`_" -msgid "``pgr_ksp`` (Combinations)" -msgstr "``pgr_ksp`` (Combinaciones)" +msgid "`Coordinates SQL`_ as described below" +msgstr "`SQL de coordenadas`_ descritas más adelante" -msgid "Version 2.1.0" -msgstr "Versión 2.1.0" +msgid "Coordinates SQL" +msgstr "Coordenadas SQL" -msgid "Signature change" -msgstr "Cambio de firma" +msgid "``x``" +msgstr "``x``" -msgid "Old signature no longer supported" -msgstr "Firma antigua ya no soportada" +msgid "X value of the coordinate." +msgstr "Valor X de la coordenada." -msgid "Version 2.0.0" -msgstr "Versión 2.0.0" +msgid "``y``" +msgstr "``y``" + +msgid "Y value of the coordinate." +msgstr "Valor Y de la coordenada." -msgid "**Official** function" -msgstr "Función **oficial**" +msgid "Test 29 cities of Western Sahara" +msgstr "Prueba 29 ciudades del Sáhara Occidental" msgid "" -"The K shortest path routing algorithm based on Yen's algorithm. \"K\" is the " -"number of shortest paths desired." +"This example shows how to make performance tests using University of " +"Waterloo's `example data `__ using the 29 cities of `Western Sahara dataset `__" msgstr "" -"El algoritmo de ruteo para obtener la ruta más corta K basado en el " -"algoritmo de Yen . \"K\" es el número de rutas más cortas deseadas." +"Este ejemplo muestra cómo hacer pruebas de rendimiento utilizando los `datos " +"de ejemplo `__ de la " +"Universidad de Waterloo utilizando el conjunto de datos de 29 ciudades del " +"`Sáhara Occidental `__" -msgid "Signatures" -msgstr "Firmas" +msgid "Creating a table for the data and storing the data" +msgstr "Creación de una tabla para datos y almacenamiento de los datos" -msgid "Summary" -msgstr "Resumen" +msgid "Adding a geometry (for visual purposes)" +msgstr "Agregar una geometría (con fines visuales)" -msgid "pgr_KSP(`Edges SQL`_, **start vid**, **end vid**, **K**, [**options**])" -msgstr "" -"pgr_KSP(`SQL de aristas`_, **salida**, **destino**, **K**, [**opciones**])" +msgid "Total tour cost" +msgstr "Costo total del tour" msgid "" -"pgr_KSP(`Edges SQL`_, **start vid**, **end vids**, **K**, [**options**])" +"Getting a total cost of the tour, compare the value with the length of an " +"optimal tour is 27603, given on the dataset" msgstr "" -"pgr_KSP(`SQL de aristas`_, **salida**, **destinos**, **K**, [**opciones**])" +"Al obtener un costo total del recorrido, comparar el valor con la duración " +"de un recorrido óptimo, que es 27603, dado en el conjunto de datos" -msgid "" -"pgr_KSP(`Edges SQL`_, **start vids**, **end vid**, **K**, [**options**])" -msgstr "" -"pgr_KSP(`SQL de aristas`_, **salidas**, **destino**, **K**, [**opciones**])" +msgid "Getting a geometry of the tour" +msgstr "Obtener una geometría del recorrido" -msgid "" -"pgr_KSP(`Edges SQL`_, **start vids**, **end vids**, **K**, [**options**])" -msgstr "" -"pgr_KSP(`SQL de aristas`_, **salidas**, **destinos**, **K**, [**opciones**])" +msgid "Visual results" +msgstr "Resultados visuales" -msgid "pgr_KSP(`Edges SQL`_, `Combinations SQL`_, **K**, [**options**])" +msgid "" +"Visualy, The first image is the `optimal solution `__ and the second image is the solution " +"obtained with ``pgr_TSPeuclidean``." msgstr "" -"pgr_KSP(`SQL de aristas`_, `SQL de combinaciones`_, **K**, [**opciones**])" +"Visualmente, la primera imagen es la `solución óptima `__ y la segunda imagen es la solución " +"obtenida con ``pgr_TSPeuclidean``." -msgid "**options:** ``[directed, heap_paths]``" -msgstr "**opcionales:** ``[directed, heap_paths]``" +msgid "``pgr_aStar``" +msgstr "``pgr_aStar``" -msgid "Returns set of |nksp-result|" -msgstr "Regresa conjunto de |nksp-result|" +msgid "``pgr_aStar`` — Shortest path using the A* algorithm." +msgstr "``pgr_aStar`` — La ruta más corta utilizando el algoritmo A*." -msgid "OR EMPTY SET" -msgstr "O CONJUNTO VACÍO" +msgid "Combinations signature promoted to official." +msgstr "Firmas de combinaciones promovidas a oficial." -msgid "Example" -msgstr "Ejemplo" +msgid "Standarizing output columns to |short-generic-result|" +msgstr "Estandarización de las columnas de salida a |short-generic-result|" -msgid "Get 2 paths from :math:`6` to :math:`17` on a directed graph." +msgid "pgr_aStar(One to One) added ``start_vid`` and ``end_vid`` columns." msgstr "" -"Obteners 2 caminos desde :math:`6` hasta :math:`17` en un grafo dirigido." +"pgr_aStar(Uno a Uno) ha añadido las columnas ``start_vid`` y ``end_vid``." -msgid "" -"Get 2 paths from vertex :math:`6` to vertices :math:`\\{10, 17\\}` on a " -"directed graph." -msgstr "" -"Obtener 2 rutas del vértice :math:`6` a los vértices :math:`\\{10, 17\\}` en " -"un grafo dirigido." +msgid "pgr_aStar(One to Many) added ``end_vid`` column." +msgstr "pgr_aStar(Uno a Muchos) ha añadido la columna ``end_vid``." -msgid "" -"Get 2 paths from vertices :math:`\\{6, 1\\}` to vertex :math:`17` on a " -"directed graph." -msgstr "" -"Obtener 2 rutas de los vértices :math:`\\{6, 1\\}` al vértice :math:`17` en " -"un grafo dirigido." +msgid "pgr_aStar(Many to One) added ``start_vid`` column." +msgstr "pgr_aStar(Muchos a Uno) ha añadido la columna ``start_vid``." -msgid "" -"Get 2 paths vertices :math:`\\{6, 1\\}` to vertices :math:`\\{10, 17\\}` on " -"a directed graph." -msgstr "" -"Obtener 2 rutas los vértices :math:`\\{6, 1\\}` a los vértices :math:`\\{10, " -"17\\}` en un grafo dirigido." +msgid "Version 3.2.0" +msgstr "Versión 3.2.0" -msgid "Using a combinations table on an directed graph" -msgstr "Usando una tabla de combinaciones en un grafo dirigido" +msgid "New proposed signature:" +msgstr "Nuevas firmas propuesta:" -msgid "The combinations table:" -msgstr "La tabla de combinaciones:" +msgid "Function promoted to official." +msgstr "Función promovida a oficial." -msgid "The query:" -msgstr "La consulta:" +msgid "Version 2.4.0" +msgstr "Versión 2.4.0" -msgid "Identifier of the destination vertex." -msgstr "Identificador del vértice destino." +msgid "pgr_aStar(One to Many)" +msgstr "pgr_aStar(Uno a Muchos)" -msgid "**K**" -msgstr "**K**" +msgid "pgr_aStar(Many to One)" +msgstr "pgr_aStar(Muchos a Uno)" -msgid "Number of required paths." -msgstr "Cantidad de rutas requeridas." +msgid "pgr_aStar(Many to Many)" +msgstr "pgr_aStar(Muchos a Muchos)" -msgid "KSP Optional parameters" -msgstr "Parámetros opcionales de KSP" +msgid "Signature change on pgr_aStar(One to One)" +msgstr "Cambio de firma en pgr_aStar(Uno a Uno)" -msgid "``heap_paths``" -msgstr "``heap_paths``" +msgid "" +"The results are equivalent to the union of the results of the `pgr_aStar(` " +"`One to One`_ `)` on the:" +msgstr "" +"Los resultados son equivalentes a la unión de los resultados de " +"pgr_aStar( `Uno a Uno`_ ) en:" -msgid "When ``false`` Returns at most K paths." -msgstr "Cuando ``false`` Regresa a lo más K caminos." +msgid "pgr_aStar(`Edges SQL`_, **start vid**, **end vid**, [**options**])" +msgstr "" +"pgr_aStar(`SQL de aristas`_, **salida**, **destino**, **K**, [**opciones**])" -msgid "When ``true`` all the calculated paths while processing are returned." +msgid "pgr_aStar(`Edges SQL`_, **start vid**, **end vids**, [**options**])" msgstr "" -"Cuando ``true`` se regresan todos los caminos calulados mientras se procesa." +"pgr_aStar(`SQL de aristas`_, **salida**, **destinos**, **K**, [**opciones**])" -msgid "" -"Roughly, when the shortest path has ``N`` edges, the heap will contain about " -"than ``N * K`` paths for small value of ``K`` and ``K > 5``." +msgid "pgr_aStar(`Edges SQL`_, **start vids**, **end vid**, [**options**])" msgstr "" -"Aproximadamente, si la ruta más corta tiene ``N`` aristas, las procesadas " -"contendrán aproximadamente ``N * K`` rutas para valores pequeños de ``K`` y " -"``K > 5``." +"pgr_aStar(`SQL de aristas`_, **salidas**, **destino**, **K**, [**opciones**])" -msgid "" -"Has value **1** for the first of a path from ``start_vid`` to ``end_vid``" +msgid "pgr_aStar(`Edges SQL`_, **start vids**, **end vids**, [**options**])" msgstr "" -"Tiene valor **1** para el primero de la ruta de ``start_vid`` a ``end_vid``" +"pgr_aStar(`SQL de aristas`_, **salidas**, **destinos**, **K**, " +"[**opciones**])" -msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``" -msgstr "Identificador del nodo en la ruta de ``start_vid`` a ``end_vid``" +msgid "pgr_aStar(`Edges SQL`_, `Combinations SQL`_, [**options**])" +msgstr "pgr_aStar(`SQL de aristas`_, `SQL de combinaciones`_, [**opciones**])" -msgid ":math:`0` for the last ``node`` of the path." -msgstr ":math:`0` para el último ``node`` de la ruta." +msgid "**options:** ``[directed, heuristic, factor, epsilon]``" +msgstr "**opcionales:** ``[directed, heuristic, factor, epsilon]``" -msgid "Aggregate cost from **start vid** to ``node``." -msgstr "Costo agregado desde **vid inicial** hasta ``node``." +msgid "Returns set of |short-generic-result|" +msgstr "Regresa el conjunto de |short-generic-result|" -msgid "Additional Examples" -msgstr "Ejemplos Adicionales" +msgid "Optional parameters are `named parameters` and have a default value." +msgstr "" +"Los parámetros opcionales son `parámetros con nombre` y tienen un valor " +"predeterminado." -msgid "Get 2 paths from :math:`6` to :math:`17` on an undirected graph" +msgid "" +"From vertex :math:`6` to vertex :math:`12` on a **directed** graph with " +"heuristic :math:`2`" msgstr "" -"Obteners 2 caminos desde :math:`6` hasta :math:`17` en un grafo no dirigido" +"De vértice :math:`6` a vértice :math:`12` en un grafo **dirigido** usando la " +"heurística :math:`2`" -msgid "Also get the paths in the heap." -msgstr "También obtener los caminos procesados." +msgid "" +"From vertex :math:`6` to vertices :math:`\\{10, 12\\}` on a **directed** " +"graph with heuristic :math:`3` and factor :math:`3.5`" +msgstr "" +"Desde el vértice :math:`6` a los vértices :math:`\\{12, 10\\}` en un grafo " +"**dirigido** usando la heurística :math:`3` con factor :math:`3.5`" -msgid "Get 2 paths using combinations table on an undirected graph" +msgid "" +"From vertices :math:`\\{6, 8\\}` to vertex :math:`10` on an **undirected** " +"graph with heuristic :math:`4`" msgstr "" -"Obtener dos rutas usando una tabla de combinaciones en un grafo no dirigido" +"De los vértices :math:`\\{6, 8\\}` al vértice :math:`10` en un grafo **no " +"dirigido** usando la heurística :math:`4`" msgid "" -"Get 2 paths from vertices :math:`\\{6, 1\\}` to vertex :math:`17` on a " -"undirected graph." +"From vertices :math:`\\{6, 8\\}` to vertices :math:`\\{10, 12\\}` on a " +"**directed** graph with factor :math:`0.5`" msgstr "" -"Obtener 2 rutas de los vértices :math:`\\{6, 1\\}` al vértice :math:`17` en " -"un grafo no dirigido." +"De los vértices :math:`\\{6, 8\\}` a los vértices :math:`\\{10, 12\\}` en un " +"gráfico **dirigido** con factor :math:`0.5`" -msgid "https://en.wikipedia.org/wiki/K_shortest_path_routing" -msgstr "https://en.wikipedia.org/wiki/K_shortest_path_routing" +msgid "" +"Using a combinations table on a **directed** graph with factor :math:`0.5`." +msgstr "" +"Usando una tabla de combinaciones en un grafo **dirigido** con factor :math:" +"`0.5`." -msgid "``pgr_TSP``" -msgstr "``pgr_TSP``" +msgid "Example 1" +msgstr "Ejemplo 1" -msgid "``pgr_TSP`` - Aproximation using *metric* algorithm." -msgstr "``pgr_TSP`` - Aproximación usando el algoritmo*metrico*." +msgid "Demonstration of repeated values are ignored, and result is sorted." +msgstr "Demostración de ignorar los valores repertidos, y resultado ordenado." -msgid "Availability:" -msgstr "Disponibilidad:" +msgid "Example 2" +msgstr "Ejemplo 2" -msgid "Version 3.2.1" -msgstr "Versión 3.2.1" +msgid "Making **start vids** the same as **end vids**." +msgstr "Haciendo **vids iniciales** los mismos que **vids destinos**." + +msgid "Example 3" +msgstr "Ejemplo 3" + +msgid "Manually assigned vertex combinations." +msgstr "Manualmente asignar combinaciones de vértices." + +msgid "``pgr_aStarCost``" +msgstr "``pgr_aStarCost``" msgid "" -"Metric Algorithm from `Boost library `__" +"``pgr_aStarCost`` - Total cost of the shortest path using the A* algorithm." msgstr "" -"Algoritmo Metrico de la `Librería Boost `__" +"``pgr_aStarCost`` - Coste total del camino más corto utilizando el algoritmo " +"A*." -msgid "Simulated Annealing Algorithm no longer supported" -msgstr "El algoritmo de recocido simulado ya no es utilizado" +msgid "New proposed function." +msgstr "Nueva función propuesta." msgid "" -"The Simulated Annealing Algorithm related parameters are ignored: " -"max_processing_time, tries_per_temperature, max_changes_per_temperature, " -"max_consecutive_non_changes, initial_temperature, final_temperature, " -"cooling_factor, randomize" +"The ``pgr_aStarCost`` function sumarizes of the cost of the shortest path " +"using the A* algorithm." msgstr "" -"Se ignoran los parámetros relacionados con el algoritmo de recocido " -"simulado: max_processing_time, tries_per_temperature, " -"max_changes_per_temperature, max_consecutive_non_changes, " -"initial_temperature, final_temperature, cooling_factor, randomize" - -msgid "Version 2.3.0" -msgstr "Versión 2.3.0" +"La función ``pgr_aStarCost`` suma el coste del camino más corto utilizando " +"el algoritmo A*." msgid "" -"Can be Used with :doc:`costMatrix-category` functions preferably with " -"`directed => false`." +"Let be the case the values returned are stored in a table, so the unique " +"index would be the pair: `(start_vid, end_vid)`" msgstr "" -"Se puede utilizar con funciones :doc:`costMatrix-category` preferiblemente " -"con `directed => false`." +"Sea el caso de que los resultados se almacenen en una tabla, el índice unico " +"lo conformarían el par `(start_vid, end_vid)`" -msgid "With ``directed => false``" -msgstr "Con ``directed => false``" +msgid "For undirected graphs, the results are symmetric." +msgstr "Para grafos no dirigidos, los resultados son simétricos." -msgid "Will generate a graph that:" -msgstr "Generará un grafo que:" +msgid "The returned values are ordered in ascending order:" +msgstr "Loas valores regresandos son ordenados en orden ascendente:" -msgid "is undirected" -msgstr "es no dirigido" +msgid "`start_vid` ascending" +msgstr "`start_vid` ascendente" -msgid "is fully connected (As long as the graph has one component)" -msgstr "" -"está completamente conectado (siempre que el grafo tenga un componente)" +msgid "`end_vid` ascending" +msgstr "`end_vid` ascendente" -msgid "all traveling costs on edges obey the triangle inequality." +msgid "pgr_aStarCost(`Edges SQL`_, **start vid**, **end vid**, [**options**])" msgstr "" -"todos los costos de viaje en los segmentos vumplen con la desigualdad del " -"triángulo." - -msgid "When ``start_vid = 0 OR end_vid = 0``" -msgstr "Cuando ``start_vid = 0 Ó end_vid = 0``" +"pgr_aStarCost(`SQL de aristas`_, **salida**, **destino**, [**opciones**])" -msgid "" -"The solutions generated is garanteed to be *twice as long as the optimal " -"tour in the worst case*" +msgid "pgr_aStarCost(`Edges SQL`_, **start vid**, **end vids**, [**options**])" msgstr "" -"Las soluciones generadas están garantizadas para ser *el doble de largas que " -"el recorrido óptimo en el peor de los casos*" +"pgr_aStarCost(`SQL de aristas`_, **salida**, **destinos**, [**opciones**])" -msgid "When ``start_vid != 0 AND end_vid != 0 AND start_vid != end_vid``" -msgstr "Cuando ``start_vid != 0 Y end_vid != 0 Y start_vid != end_vid``" +msgid "pgr_aStarCost(`Edges SQL`_, **start vids**, **end vid**, [**options**])" +msgstr "" +"pgr_aStarCost(`SQL de aristas`_, **salidas**, **destino**, [**opciones**])" msgid "" -"It is **not garanteed** that the solution will be, in the worse case, twice " -"as long as the optimal tour, due to the fact that `end_vid` is forced to be " -"in a fixed position." +"pgr_aStarCost(`Edges SQL`_, **start vids**, **end vids**, [**options**])" msgstr "" -"**No está garantizado** que la solución sea, en el peor de los casos, el " -"doble de larga que el recorrido óptimo, debido al hecho de que `end_vid` se " -"ve obligado a estar en una posición fija." - -msgid "With ``directed => true``" -msgstr "Con ``directed => true``" +"pgr_aStarCost(`SQL de aristas`_, **salidas**, **destinos**, [**opciones**])" -msgid "" -"It is **not garanteed** that the solution will be, in the worse case, twice " -"as long as the optimal tour" +msgid "pgr_aStarCost(`Edges SQL`_, `Combinations SQL`_, [**options**])" msgstr "" -"**No está garantizado** que la solución sea, en el peor de los casos, el " -"doble de larga que el recorrido óptimo" +"pgr_aStarCost(`SQL de aristas`_, `SQL de combinaciones`_, [**opciones**])" -msgid "is directed" -msgstr "es dirigido" +msgid "Returns set of |matrix-result|" +msgstr "Regresa el conjunto de |matrix-result|" -msgid "" -"some (or all) traveling costs on edges might not obey the triangle " -"inequality." +msgid "pgr_aStarCost(`Edges SQL`_, **start vids**, **end vids**, [options])" msgstr "" -"algunos (o todos) los costos de viaje en los segmentos podrían no obedecer a " -"la desigualdad del triángulo." +"pgr_aStarCost(`SQL de aristas`_, **salidas**, **destinos**, [opciones])" -msgid "" -"As an undirected graph is required, the directed graph is transformed as " -"follows:" -msgstr "" -"Como se requiere un grafo no dirigido, el grafo dirigido se transforma de la " -"siguiente manera:" +msgid "``pgr_aStarCostMatrix``" +msgstr "``pgr_aStarCostMatrix``" msgid "" -"edges `(u, v)` and `(v, u)` is considered to be the same edge (denoted `(u, " -"v)`" +"``pgr_aStarCostMatrix`` - Calculates the a cost matrix using :doc:" +"`pgr_aStar`." msgstr "" -"los segmentos `(u, v)` y `(v, u)` se consideran el mismo segmentos (denotado " -"`(u, v)`" +"``pgr_aStarCostMatrix`` - Calcula la matriz de costes utilizando :doc:" +"`pgr_aStar`." -msgid "if ``agg_cost`` differs between one or more instances of edge `(u, v)`" -msgstr "" -"Si '``agg_cost`` difiere entre una o más instancias del segmento `(u, v)`" +msgid "Using internaly the :doc:`pgr_aStar` algorithm" +msgstr "Usando internamente el algoritmo :doc:`pgr_aStar`" -msgid "" -"The minimum value of the ``agg_cost`` all instances of edge `(u, v)` is " -"going to be considered as the ``agg_cost`` of edge `(u, v)`" -msgstr "" -"El valor mínimo de ``agg_cost`` en todas las instancias de la arista `(u, " -"v)` se considera como el ``agg_cost`` de la arista `(u, v)`" +msgid "Returns a cost matrix." +msgstr "Devuelve una matriz de costes." -msgid "" -"Some (or all) traveling costs on edges will still might not obey the " -"triangle inequality." -msgstr "" -"Algunos (o todos) los costos de viaje en los segmentos aún podrían no " -"obedecer a la desigualdad del triángulo." +msgid "No ordering is performed" +msgstr "No se realiza ningún pedido" -msgid "When the data is incomplete, but it is a connected graph:" -msgstr "Cuando los datos están incompletos, pero es un grafo conectado:" +msgid "let `v` and `u` are nodes on the graph:" +msgstr "Sean `v` y `u` nodos en el grafo:" -msgid "the missing values will be calculated with dijkstra algorithm." -msgstr "" -"los datos están incompletos se calcularán con el algoritmo de Dijkstra." +msgid "when there is no path from `v` to `u`:" +msgstr "cuando no hay ruta de `v` a `u`:" -msgid "pgr_TSP(`Matrix SQL`_, ``[start_id, end_id]``)" -msgstr "pgr_TSP(`SQL de martiz`_, ``[start_id, end_id]``)" +msgid "cost from `v` to `u` is :math:`\\inf`" +msgstr "costo de `v` a `u` es :math:`\\inf`" -msgid "Returns set of |tsp-result|" -msgstr "Regresa el conjunto de |nksp-result|" +msgid "when :math:`v = u` then" +msgstr "cuando :math:`v = u` entonces" -msgid "OR EMTPY SET" -msgstr "O CONJUNTO VACÍO" +msgid "cost from `v` to `u` is :math:`0`" +msgstr "costo de `v` a `u` es :math:`0`" -msgid "Using :doc:`pgr_dijkstraCostMatrix` to generate the matrix information" -msgstr "" -"Usando :doc:`pgr_dijkstraCostMatrix` para generar la información de la matriz" +msgid "When the graph is **undirected** the cost matrix is symmetric" +msgstr "Cuando el grafo es **no dirigido**, la matriz de costes es simétrica" + +msgid "pgr_aStarCostMatrix(`Edges SQL`_, **start vids**, [**options**])" +msgstr "pgr_aStarCostMatrix(`SQL de aristas`_, **salidas**, [**opciones**])" msgid "" -"**Line 4** Vertices :math:`\\{2, 4, 13, 14\\}` are not included because they " -"are not connected." +"Symmetric cost matrix for vertices :math:`\\{5, 6, 10, 15\\}` on an " +"**undirected** graph using heuristic :math:`2`" msgstr "" -"**Línea 5** Los vértices :math:`\\{2, 4, 13, 14\\}` no están incluidos " -"porque no están conectados." - -msgid "`Matrix SQL`_ as described below" -msgstr "`SQL de matriz`_ como se describe más adelante" - -msgid "``ANY-INTEGER``" -msgstr "``ANY-INTEGER``" +"Matriz simétrica de costes para los vértices :math:`\\{5, 6, 10, 15\\}` en " +"un grafo **no dirigido** usando la heurística :math:`2`" -msgid "``ANY-NUMERICAL``" -msgstr "``ANY-NUMERICAL``" +msgid "Use with :doc:`pgr_TSP`" +msgstr "Uso con :doc:`pgr_TSP`" -msgid "Cost for going from start_vid to end_vid" -msgstr "Costo para pasar de start_vid a end_vid" +msgid "``pgr_alphaShape``" +msgstr "``pgr_alphaShape``" -msgid "Returns SET OF ``(seq, node, cost, agg_cost)``" -msgstr "Devuelve el CONJUNTO DE ``(seq, node, cost, agg_cost)``" +msgid "``pgr_alphaShape`` — Polygon part of an alpha shape." +msgstr "``pgr_alphaShape`` —Parte poligonal de una forma alfa." -msgid "Row sequence." -msgstr "Secuencia de filas." +msgid "Breaking change on signature" +msgstr "Cambio de ruptura en la firma" -msgid "**node**" -msgstr "**node**" +msgid "**Boost 1.54** & **Boost 1.55** are supported" +msgstr "**Boost 1.54** y **Boost 1.55** son soportados" -msgid "Identifier of the node/coordinate/point." -msgstr "Identificador del nodo/coordenada/punto." +msgid "**Boost 1.56+** is preferable" +msgstr "**Boost 1.56+** es preferible" -msgid "" -"Cost to traverse from the current ``node`` to the next ``node`` in the path " -"sequence." -msgstr "" -"Coste que se debe recorrer desde el ``nodo`` al siguiente ``nodo`` en la " -"secuencia de ruta." +msgid "Boost Geometry is stable on Boost 1.56" +msgstr "Boost Geometry es estable en Boost 1.56" -msgid "``0`` for the last row in the tour sequence." -msgstr "``0`` para la última fila en la secuencia del recorrido." +msgid "Added alpha argument with default 0 (use optimal value)" +msgstr "" +"Añadido argumento alfa con valor predeterminado 0 (usar el valor óptimo)" -msgid "Aggregate cost from the ``node`` at ``seq = 1`` to the current node." -msgstr "Costo agregado del ``nodo`` en ``seq = 1`` hacia el nodo actual." +msgid "Support to return multiple outer/inner ring" +msgstr "Soporte para devolver múltiples anillos exteriores/interiores" -msgid "``0`` for the first row in the tour sequence." -msgstr "``0`` para la primera fila en la secuencia del recorrido." +msgid "Renamed from version 1.x" +msgstr "Renombrado desde la versión 1.x" -msgid "Start from vertex :math:`1`" -msgstr "Inicio en el vértice :math:`1`" +msgid "Support" +msgstr "Soporte" -msgid "**Line 6** ``start_vid => 1``" -msgstr "**Linea 6** ``start_vid => 1``" +msgid "Returns the polygon part of an alpha shape." +msgstr "Devuelve la parte poligonal de una forma alfa." -msgid "Using points of interest to generate an asymetric matrix." -msgstr "Uso de puntos de interés para generar una matriz asimétrica." +msgid "Input is a *geometry* and returns a *geometry*" +msgstr "La entrada es una *geometría* y devuelve una *geometría*" -msgid "To generate an asymmetric matrix:" -msgstr "Para generar una matriz asimétrica:" +msgid "Uses PostGis ST_DelaunyTriangles" +msgstr "Usa PostGis ST_DelaunyTriangles" msgid "" -"**Line 4** The ``side`` information of ``pointsOfInterset`` is ignored by " -"not including it in the query" +"Instead of using CGAL's definition of `alpha` it use the ``spoon_radius``" msgstr "" -"**Línea 4** La información ``side`` de ``pointsOfInterset`` se ignora al no " -"incluirla en la consulta" +"En lugar de utilizar la definición de CGAL de `alpha` utiliza " +"``spoon_radius`` el ''spoon_radius''" -msgid "**Line 6** Generating an asymetric matrix with ``directed => true``" -msgstr "" -"**Línea 6** Generación de una matriz asimétrica con ``directed => true``" +msgid ":math:`spoon\\_radius = \\sqrt alpha`" +msgstr ":math:`spoon\\_radius = \\sqrt alpha`" msgid "" -":math:`min(agg\\_cost(u, v), agg\\_cost(v, u))` is going to be considered as " -"the ``agg_cost``" +"A Triangle area is considered part of the alpha shape when :math:" +"`circumcenter\\ radius < spoon\\_radius`" msgstr "" -":math:`min(agg\\_cost(u, v), agg\\_cost(v, u))` se considera como el " -"``agg_cost``" +"Un área de triángulo se considera parte de la forma alfa cuando :math:" +"`circumcenter\\ radius < spoon\\_radius`" + +msgid "The ``alpha`` parameter is the **spoon radius**" +msgstr "El parámetro ``alpha`` es el **radio de cuchara**" msgid "" -"The solution that can be larger than *twice as long as the optimal tour* " -"because:" +"When the total number of points is less than 3, returns an EMPTY geometry" msgstr "" -"La solución que puede ser mayor que *el doble de larga que el tour óptimo* " -"porque:" - -msgid "Triangle inequality might not be satisfied." -msgstr "La desigualdad del triángulo podría no estar satisfecha." +"Cuando el número total de puntos es menor que 3, devuelve una geometría EMPTY" -msgid "``start_id != 0 AND end_id != 0``" -msgstr "``start_id != 0 Y end_id != 0``" +msgid "pgr_alphaShape(**geometry**, [alpha])" +msgstr "pgr_alphaShape(**geometría**, [alpha])" -msgid "Connected incomplete data" -msgstr "Datos incompletos conectados" +msgid "RETURNS ``geometry``" +msgstr "REGRESA ``geometry``" msgid "" -"Using selected edges :math:`\\{2, 4, 5, 8, 9, 15\\}` the matrix is not " -"complete." +"passing a geometry collection with spoon radius :math:`1.5` using the return " +"variable ``geom``" msgstr "" -"Usando aristas seleccionadas :math:`\\{2, 4, 5, 8, 9, 15\\}` la matriz no es " -"completa." +"pasar una colección de geometrías con radio de cuchara :math:`1.5` usando la " +"variable de retorno ``geom``" -msgid "" -"Cost value for :math:`17 \\rightarrow 10` do not exist on the matrix, but " -"the value used is taken from :math:`10 \\rightarrow 17`." -msgstr "" -"Valor del cost para :math:`17 \\rightarrow 10` no existe en la matriz, pero " -"el valor se toma de :math:`10 \\rightarrow 17`." +msgid "**geometry**" +msgstr "**geometría**" -msgid "``pgr_TSPeuclidean``" -msgstr "``pgr_TSPeuclidean``" +msgid "``geometry``" +msgstr "``geometry``" -msgid "``pgr_TSPeuclidean`` - Aproximation using *metric* algorithm." -msgstr "``pgr_TSPeuclidean`` - Aproximación usando el algoritmo *metric*." +msgid "Geometry with at least :math:`3` points" +msgstr "Geometría con al menos :math:`3` puntos" -msgid "" -"The Simulated Annealing Algorithm related parameters are ignored: " -"`max_processing_time`, `tries_per_temperature`, " -"`max_changes_per_temperature`, `max_consecutive_non_changes`, " -"`initial_temperature`, `final_temperature`, `cooling_factor`, `randomize`" -msgstr "" -"Se ignoran los parámetros relacionados con el algoritmo de recocido " -"simulado: `max_processing_time`, `tries_per_temperature`, " -"`max_changes_per_temperature`, `max_consecutive_non_changes`, " -"`initial_temperature`, `final_temperature`, `cooling_factor`, `randomize`" +msgid "``alpha``" +msgstr "``alpha``" -msgid "Version 3.0.0" -msgstr "Versión 3.0.0" +msgid "The radius of the spoon." +msgstr "El radio de la cuchara." -msgid "Name change from pgr_eucledianTSP" -msgstr "Cambio de nombre de pgr_eucledianTSP" +msgid "Return Value" +msgstr "Valor de Devolución" -msgid "New **Official** function" -msgstr "Nueva función **Oficial**" +msgid "Kind of geometry" +msgstr "Tipo de geometría" -msgid "" -"Any duplicated identifier will be ignored. The coordinates that will be kept" -msgstr "" -"Cualquier identificador duplicado será ignorado. Las coordenadas que se " -"mantendrán" +msgid "GEOMETRY COLLECTION" +msgstr "GEOMETRY COLLECTION" -msgid "is arbitrarly." -msgstr "es arbitrario." +msgid "A Geometry collection of Polygons" +msgstr "Una colección de Geometría de Polígonos" -msgid "" -"The coordinates are quite similar for the same identifier, for example ::" -msgstr "" -"Las coordenadas son bastante similares para el mismo identificador, por " -"ejemplo:" +msgid ":doc:`pgr_drivingDistance`" +msgstr ":doc:`pgr_drivingDistance`" + +msgid "`ST_ConcaveHull `__" +msgstr "`ST_ConcaveHull `__" + +msgid "``pgr_analyzeGraph``" +msgstr "``pgr_analyzeGraph``" + +msgid "``pgr_analyzeGraph`` — Analyzes the network topology." +msgstr "``pgr_analyzeGraph`` — analiza la topología de red." + +msgid "The function returns:" +msgstr "La función devuelve:" + +msgid "``OK`` after the analysis has finished." +msgstr "``OK`` Cuando el análisis ha terminado." + +msgid "``FAIL`` when the analysis was not completed due to an error." +msgstr "``FAIL`` cuando el análisis no se completó debido a un error." + +msgid "pgr_analyzeGraph(**edge_table**, **tolerance**, [**options**])" +msgstr "pgr_analyzeGraph(**edge_table**, **tolerancia**, [**opciones**])" + +msgid "**options:** ``[the_geom, id, source, target, rows_where]``" +msgstr "**opcionales:** ``[the_geom, id, source, target, rows_where]``" + +msgid "RETURNS ``VARCHAR``" +msgstr "DEVUELVE ``VARCHAR``" + +msgid "Prerequisites" +msgstr "Pre-requisitos" msgid "" -"The coordinates are quite different for the same identifier, for example ::" +"The edge table to be analyzed must contain a source column and a target " +"column filled with id's of the vertices of the segments and the " +"corresponding vertices table _vertices_pgr that stores the " +"vertices information." msgstr "" -"Las coordenadas son bastante diferentes para el mismo identificador, por " -"ejemplo:" +"La tabla de aristas a analizar debe contener una columna origen y una " +"columna destino rellenas con identificadores de los vértices de los " +"segmentos y la correspondiente tabla de vértices _vertices_pgr " +"que almacena la información de los vértices." -msgid "pgr_TSPeuclidean(`Coordinates SQL`_, ``[start_id, end_id]``)" -msgstr "pgr_TSPeuclidean(`SQL de Coordenadas`_, ``[start_id, end_id]``)" +msgid "Use :doc:`pgr_createVerticesTable` to create the vertices table." +msgstr "Use :doc:`pgr_createVerticesTable` para crear la tabla de vértices." -msgid "With default values" -msgstr "Con valores predeterminados" +msgid "" +"Use :doc:`pgr_createTopology` to create the topology and the vertices table." +msgstr "Use :doc:`pgr_createTopology` para crear la topología y los vértices." -msgid "`Coordinates SQL`_" -msgstr "`SQL coordenadas`_" +msgid "The analyze graph function accepts the following parameters:" +msgstr "La función de análisis gráfico acepta los siguientes parámetros:" -msgid "`Coordinates SQL`_ as described below" -msgstr "`SQL de coordenadas`_ descritas más adelante" +msgid "edge_table" +msgstr "edge_table" -msgid "Coordinates SQL" -msgstr "Coordenadas SQL" +msgid "``text`` Network table name. (may contain the schema name as well)" +msgstr "``text`` La tabla de la red. (puede contener el nombre del esquema)" -msgid "``x``" -msgstr "``x``" +msgid "tolerance" +msgstr "tolerancia" -msgid "X value of the coordinate." -msgstr "Valor X de la coordenada." +msgid "" +"``float8`` Snapping tolerance of disconnected edges. (in projection unit)" +msgstr "" +"``float8`` ajuste tolerancia de bordes desconectados. (en la unidad de " +"proyección)" -msgid "``y``" -msgstr "``y``" +msgid "the_geom" +msgstr "the_geom" -msgid "Y value of the coordinate." -msgstr "Valor Y de la coordenada." +msgid "" +"``text`` Geometry column name of the network table. Default value is " +"``the_geom``." +msgstr "" +"``text`` nombre de la columna de la geometría en la tabla de la red. El " +"valor por defecto es `the_geom``." -msgid "Test 29 cities of Western Sahara" -msgstr "Prueba 29 ciudades del Sáhara Occidental" +msgid "id" +msgstr "id" msgid "" -"This example shows how to make performance tests using University of " -"Waterloo's `example data `__ using the 29 cities of `Western Sahara dataset `__" +"``text`` Primary key column name of the network table. Default value is " +"``id``." msgstr "" -"Este ejemplo muestra cómo hacer pruebas de rendimiento utilizando los `datos " -"de ejemplo `__ de la " -"Universidad de Waterloo utilizando el conjunto de datos de 29 ciudades del " -"`Sáhara Occidental `__" +"``text``Nombre de la columna de la clave principal de la tabla de red. Valor " +"por defecto es ``id``'." -msgid "Creating a table for the data and storing the data" -msgstr "Creación de una tabla para datos y almacenamiento de los datos" +msgid "source" +msgstr "source" -msgid "Adding a geometry (for visual purposes)" -msgstr "Agregar una geometría (con fines visuales)" +msgid "" +"``text`` Source column name of the network table. Default value is " +"``source``." +msgstr "" +"``id``Nombre de columna de origen de la tabla de red. El valor " +"predeterminado es``source``." -msgid "Total tour cost" -msgstr "Costo total del tour" +msgid "target" +msgstr "target" msgid "" -"Getting a total cost of the tour, compare the value with the length of an " -"optimal tour is 27603, given on the dataset" +"``text`` Target column name of the network table. Default value is " +"``target``." msgstr "" -"Al obtener un costo total del recorrido, comparar el valor con la duración " -"de un recorrido óptimo, que es 27603, dado en el conjunto de datos" - -msgid "Getting a geometry of the tour" -msgstr "Obtener una geometría del recorrido" +"``text`` El nombre de la columna del destino del segmento. El valor por " +"defecto es ``target``." -msgid "Visual results" -msgstr "Resultados visuales" +msgid "rows_where" +msgstr "rows_where" msgid "" -"Visualy, The first image is the `optimal solution `__ and the second image is the solution " -"obtained with ``pgr_TSPeuclidean``." +"``text`` Condition to select a subset or rows. Default value is ``true`` to " +"indicate all rows." msgstr "" -"Visualmente, la primera imagen es la `solución óptima `__ y la segunda imagen es la solución " -"obtenida con ``pgr_TSPeuclidean``." +"``text`` Condición para seleccionar un subconjunto o filas. Valor " +"predeterminado es ``true`` para indicar todas las filas." -msgid ":doc:`sampledata` network." -msgstr ":doc:`sampledata` ." +msgid "Uses the vertices table: _vertices_pgr." +msgstr "Utiliza la tabla de los vértices: _vertices_pgr." -msgid "``pgr_aStar``" -msgstr "``pgr_aStar``" +msgid "Fills completely the ``cnt`` and ``chk`` columns of the vertices table." +msgstr "" +"Llena totalmente las columnas ``cnt`` y ``chk`` de la tabla de vértices." -msgid "``pgr_aStar`` — Shortest path using the A* algorithm." -msgstr "``pgr_aStar`` — La ruta más corta utilizando el algoritmo A*." +msgid "" +"Returns the analysis of the section of the network defined by ``rows_where``" +msgstr "" +"Devuelve el análisis de la sección de la red definida por ``rows_where``" -msgid "Standarizing output columns to |short-generic-result|" -msgstr "Estandarización de las columnas de salida a |short-generic-result|" +msgid "The vertices table is not found." +msgstr "No se encuentra en la tabla de los vértices." msgid "" -"``pgr_aStar`` (`One to One`_) added ``start_vid`` and ``end_vid`` columns." +"A required column of the Network table is not found or is not of the " +"appropriate type." msgstr "" -"``pgr_aStar`` (`Uno a Uno`_) ha añadido las columnas ``start_vid`` y " -"``end_vid``." +"Una columna de la tabla de red requerida no se encuentra o no es del tipo " +"apropiado." -msgid "``pgr_aStar`` (`One to Many`_) added ``end_vid`` column." -msgstr "``pgr_aStar`` (`Uno a Muchos`_) ha añadido la columna ``end_vid``." +msgid "The condition is not well formed." +msgstr "La condición no está bien formada." -msgid "``pgr_aStar`` (`Many to One`_) added ``start_vid`` column." -msgstr "``pgr_aStar`` (`Muchos a Uno`_) ha añadido la columna ``start_vid``." +msgid "The names of source , target or id are the same." +msgstr "Los nombres de origen, destino o id son las mismos." -msgid "Version 3.2.0" -msgstr "Versión 3.2.0" +msgid "The SRID of the geometry could not be determined." +msgstr "No pudo determinarse el SRID de la geometría." -msgid "New **proposed** signature:" -msgstr "Nueva firma **propuesta**:" +msgid "The Vertices Table" +msgstr "La tabla de vértices" -msgid "``pgr_aStar`` (`Combinations`_)" -msgstr "``pgr_aStar`` (`Combinaciones`_)" +msgid "" +"The vertices table can be created with :doc:`pgr_createVerticesTable " +"` or :doc:`pgr_createTopology `" +msgstr "" +"Los vértices pueden ser creados con :doc:`pgr_createVerticesTable " +"` o :doc:`pgr_createTopology `" -msgid "Version 2.4.0" -msgstr "Versión 2.4.0" +msgid "The structure of the vertices table is:" +msgstr "La estructura de la tabla de los vértices es:" -msgid "New **Proposed** signatures:" -msgstr "Nuevas firmas **propuestas**:" +msgid "``bigint`` Identifier of the vertex." +msgstr "``bigint`` identificador del vértice." -msgid "``pgr_aStar`` (`One to Many`_)" -msgstr "``pgr_aStar`` (`Uno a Muchos`_)" +msgid "cnt" +msgstr "cnt" -msgid "``pgr_aStar`` (`Many to One`_)" -msgstr "``pgr_aStar`` (`Muchos a Uno`_)" +msgid "" +"``integer`` Number of vertices in the edge_table that reference this vertex." +msgstr "" +"``integer`` Número de vértices en edge_table que hacen referencia a este " +"vértice." -msgid "``pgr_aStar`` (`Many to Many`_)" -msgstr "``pgr_aStar`` (`Muchos a Muchos`_)" +msgid "chk" +msgstr "chk" -msgid "Signature change on ``pgr_astar`` (`One to One`_)" -msgstr "Cambio de firma en ``pgr_astar`` (`Uno a Uno`_)" +msgid "``integer`` Indicator that the vertex might have a problem." +msgstr "``integer`` Indicador de que el vértice puede tener un problema." -msgid "**Official** ``pgr_aStar`` (`One to One`_)" -msgstr "**Oficial** ``pgr_aStar`` (`Uno a Uno`_)" +msgid "ein" +msgstr "ein" msgid "" -"The results are equivalent to the union of the results of the `pgr_aStar(` " -"`One to One`_ `)` on the:" +"``integer`` Number of vertices in the edge_table that reference this vertex " +"as incoming. See :doc:`pgr_analyzeOneWay `." msgstr "" -"Los resultados son equivalentes a la unión de los resultados de " -"pgr_aStar( `Uno a Uno`_ ) en:" +"``integer`` Número de vértices en edge_table que hacen referencia a este " +"vértice como entrante. Consulte :doc:`pgr_analyzeOneWay`." -msgid "pgr_aStar(`Edges SQL`_, **start vid**, **end vid**, [**options**])" -msgstr "" -"pgr_aStar(`SQL de aristas`_, **salida**, **destino**, **K**, [**opciones**])" +msgid "eout" +msgstr "eout" -msgid "pgr_aStar(`Edges SQL`_, **start vid**, **end vids**, [**options**])" +msgid "" +"``integer`` Number of vertices in the edge_table that reference this vertex " +"as outgoing. See :doc:`pgr_analyzeOneWay `." msgstr "" -"pgr_aStar(`SQL de aristas`_, **salida**, **destinos**, **K**, [**opciones**])" +"``integer`` Número de vértices en edge_table que hacen referencia a este " +"vértice como saliente. Consulte :doc:`pgr_analyzeOneWay `." -msgid "pgr_aStar(`Edges SQL`_, **start vids**, **end vid**, [**options**])" -msgstr "" -"pgr_aStar(`SQL de aristas`_, **salidas**, **destino**, **K**, [**opciones**])" +msgid "``geometry`` Point geometry of the vertex." +msgstr "``geometry`` Valor de la geometría POINT del vértice." -msgid "pgr_aStar(`Edges SQL`_, **start vids**, **end vids**, [**options**])" +msgid "Usage when the edge table's columns MATCH the default values:" msgstr "" -"pgr_aStar(`SQL de aristas`_, **salidas**, **destinos**, **K**, " -"[**opciones**])" - -msgid "pgr_aStar(`Edges SQL`_, `Combinations SQL`_, [**options**])" -msgstr "pgr_aStar(`SQL de aristas`_, `SQL de combinaciones`_, [**opciones**])" +"Uso cuando las columnas de la tabla de borde coinciden con los valores por " +"defecto:" -msgid "**options:** ``[directed, heuristic, factor, epsilon]``" -msgstr "**opcionales:** ``[directed, heuristic, factor, epsilon]``" +msgid "The simplest way to use pgr_analyzeGraph is:" +msgstr "La forma más sencilla de usar pgr_analyzeGraph es:" -msgid "Returns set of |short-generic-result|" -msgstr "Regresa el conjunto de |short-generic-result|" +msgid "Arguments are given in the order described in the parameters:" +msgstr "Los argumentos se escriben en el orden descrito en los parámetros:" -msgid "Optional parameters are `named parameters` and have a default value." +msgid "We get the same result as the simplest way to use the function." msgstr "" -"Los parámetros opcionales son `parámetros con nombre` y tienen un valor " -"predeterminado." +"Obtenemos el mismo resultado que la forma más sencilla de utilizar la " +"función." -msgid "" -"From vertex :math:`6` to vertex :math:`12` on a **directed** graph with " -"heuristic :math:`2`" -msgstr "" -"De vértice :math:`6` a vértice :math:`12` en un grafo **dirigido** usando la " -"heurística :math:`2`" +msgid "An error would occur when" +msgstr "Un error puede ocurrir cuando" -msgid "" -"From vertex :math:`6` to vertices :math:`\\{10, 12\\}` on a **directed** " -"graph with heuristic :math:`3` and factor :math:`3.5`" -msgstr "" -"Desde el vértice :math:`6` a los vértices :math:`\\{12, 10\\}` en un grafo " -"**dirigido** usando la heurística :math:`3` con factor :math:`3.5`" +msgid "the arguments are not given in the appropriate order:" +msgstr "los argumentos se no se escriben en el orden apropiado:" msgid "" -"From vertices :math:`\\{6, 8\\}` to vertex :math:`10` on an **undirected** " -"graph with heuristic :math:`4`" +"In this example, the column ``id`` of the table ``mytable`` is passed to the " +"function as the geometry column, and the geometry column ``the_geom`` is " +"passed to the function as the id column." msgstr "" -"De los vértices :math:`\\{6, 8\\}` al vértice :math:`10` en un grafo **no " -"dirigido** usando la heurística :math:`4`" +"En este ejemplo, la columna ``id`` de la tabla ``mytable`` se pasa a la " +"función como geometría, y la columna de geometría ``the_geom`` se pasa a la " +"función de columna ``id``." -msgid "" -"From vertices :math:`\\{6, 8\\}` to vertices :math:`\\{10, 12\\}` on a " -"**directed** graph with factor :math:`0.5`" -msgstr "" -"De los vértices :math:`\\{6, 8\\}` a los vértices :math:`\\{10, 12\\}` en un " -"gráfico **dirigido** con factor :math:`0.5`" +msgid "When using the named notation" +msgstr "Cuando se utiliza la notación por nombre" + +msgid "The order of the parameters do not matter:" +msgstr "No importa el orden de los parámetros:" msgid "" -"Using a combinations table on a **directed** graph with factor :math:`0.5`." +"Parameters defined with a default value can be omitted, as long as the value " +"matches the default:" msgstr "" -"Usando una tabla de combinaciones en un grafo **dirigido** con factor :math:" -"`0.5`." - -msgid "Example 1" -msgstr "Ejemplo 1" - -msgid "Demonstration of repeated values are ignored, and result is sorted." -msgstr "Demostración de ignorar los valores repertidos, y resultado ordenado." - -msgid "Example 2" -msgstr "Ejemplo 2" - -msgid "Making **start vids** the same as **end vids**." -msgstr "Haciendo **vids iniciales** los mismos que **vids destinos**." - -msgid "Example 3" -msgstr "Ejemplo 3" - -msgid "Manually assigned vertex combinations." -msgstr "Manualmente asignar combinaciones de vértices." +"Parámetros definidos con un valor predeterminado se pueden omitir, siempre y " +"cuando el valor coincida con el valor por defecto:" -msgid "pgr_aStarCost" -msgstr "pgr_aStarCost" +msgid "Selecting rows using rows_where parameter" +msgstr "Seleccionar filas utilizando el parámetro rows_where" msgid "" -"``pgr_aStarCost`` - Total cost of the shortest path using the A* algorithm." +"Selecting rows based on the id. Displays the analysis a the section of the " +"network." msgstr "" -"``pgr_aStarCost`` - Coste total del camino más corto utilizando el algoritmo " -"A*." - -msgid "``pgr_aStarCost`` (`Combinations`_)" -msgstr "``pgr_aStarCost`` (`Combinaciones`_)" - -msgid "New **proposed** function" -msgstr "Nueva función **propuesta**" +"La selección de filas basadas en el id. El análisis muestra una parte de la " +"red." msgid "" -"The ``pgr_aStarCost`` function sumarizes of the cost of the shortest path " -"using the A* algorithm." +"Selecting the rows where the geometry is near the geometry of row with " +"``id`` = 5" msgstr "" -"La función ``pgr_aStarCost`` suma el coste del camino más corto utilizando " -"el algoritmo A*." +"Seleccionar las filas donde la geometría está cerca de la geometría de la " +"fila con ``id`` = 5" msgid "" -"Let be the case the values returned are stored in a table, so the unique " -"index would be the pair: `(start_vid, end_vid)`" +"Selecting the rows where the geometry is near the geometry of the row with " +"``gid`` =100 of the table ``othertable``." msgstr "" -"Sea el caso de que los resultados se almacenen en una tabla, el índice unico " -"lo conformarían el par `(start_vid, end_vid)`" - -msgid "For undirected graphs, the results are symmetric." -msgstr "Para grafos no dirigidos, los resultados son simétricos." - -msgid "The returned values are ordered in ascending order:" -msgstr "Loas valores regresandos son ordenados en orden ascendente:" - -msgid "`start_vid` ascending" -msgstr "`start_vid` ascendente" - -msgid "`end_vid` ascending" -msgstr "`end_vid` ascendente" +"Seleccionar las filas donde la geometría está cerca de la geometría de la " +"fila con``gid`` =100 de la tabla ``othertable``." -msgid "pgr_aStarCost(`Edges SQL`_, **start vid**, **end vid**, [**options**])" +msgid "Usage when the edge table's columns DO NOT MATCH the default values:" msgstr "" -"pgr_aStarCost(`SQL de aristas`_, **salida**, **destino**, [**opciones**])" +"Uso cuando las columnas de la tabla de borde NO COINCIDEN con los valores " +"por defecto:" -msgid "pgr_aStarCost(`Edges SQL`_, **start vid**, **end vids**, [**options**])" -msgstr "" -"pgr_aStarCost(`SQL de aristas`_, **salida**, **destinos**, [**opciones**])" +msgid "For the following table" +msgstr "Para la siguiente tabla" -msgid "pgr_aStarCost(`Edges SQL`_, **start vids**, **end vid**, [**options**])" -msgstr "" -"pgr_aStarCost(`SQL de aristas`_, **salidas**, **destino**, [**opciones**])" +msgid "Using positional notation:" +msgstr "Usando notación posicional:" msgid "" -"pgr_aStarCost(`Edges SQL`_, **start vids**, **end vids**, [**options**])" +"The arguments need to be given in the order described in the parameters:" +msgstr "Las discusiones deben recibir en el orden descrito en los parámetros:" + +msgid "" +"An error would occur when the arguments are not given in the appropriate " +"order: In this example, the column ``gid`` of the table ``mytable`` is " +"passed to the function as the geometry column, and the geometry column " +"``mygeom`` is passed to the function as the id column." msgstr "" -"pgr_aStarCost(`SQL de aristas`_, **salidas**, **destinos**, [**opciones**])" +"Un error puede ocurrir cuando los argumentos no se dan en el orden adecuado: " +"en este ejemplo, la columna ``gid`` de la tabla ``mytable`` se pasa a la " +"función como geometría, y la columna de geometría``mygeom`` se pasa a la " +"función como columna ``id``." -msgid "pgr_aStarCost(`Edges SQL`_, `Combinations SQL`_, [**options**])" +msgid "" +"In this scenario omitting a parameter would create an error because the " +"default values for the column names do not match the column names of the " +"table." msgstr "" -"pgr_aStarCost(`SQL de aristas`_, `SQL de combinaciones`_, [**opciones**])" +"En este escenario omitir un parámetro crearía un error porque los valores " +"predeterminados de los nombres de columna no coinciden con los nombres de " +"columna de la tabla." -msgid "Returns set of |matrix-result|" -msgstr "Regresa el conjunto de |matrix-result|" +msgid "Selecting rows based on the id." +msgstr "La selección de filas basadas en el id." -msgid "pgr_aStarCost(`Edges SQL`_, **start vids**, **end vids**, [options])" +msgid "" +"Selecting the rows WHERE the geometry is near the geometry of row with " +"``id`` =5 ." msgstr "" -"pgr_aStarCost(`SQL de aristas`_, **salidas**, **destinos**, [opciones])" - -msgid "``pgr_aStarCostMatrix``" -msgstr "``pgr_aStarCostMatrix``" +"Seleccionar las filas donde la geometría está cerca de la geometría de la " +"fila con ``id`` =5 ." msgid "" -"``pgr_aStarCostMatrix`` - Calculates the a cost matrix using :doc:" -"`pgr_aStar`." +"Selecting the rows WHERE the geometry is near the place='myhouse' of the " +"table ``othertable``. (note the use of quote_literal)" msgstr "" -"``pgr_aStarCostMatrix`` - Calcula la matriz de costes utilizando :doc:" -"`pgr_aStar`." - -msgid "Using internaly the :doc:`pgr_aStar` algorithm" -msgstr "Usando internamente el algoritmo :doc:`pgr_aStar`" +"Seleccionar las filas donde la geometría está cerca de la place='myhouse' de " +"la tabla ``othertable``. (Nótese el uso de quote_literal)" -msgid "Returns a cost matrix." -msgstr "Devuelve una matriz de costes." +msgid ":doc:`pgr_analyzeOneWay`" +msgstr ":doc:`pgr_analyzeOneWay`" -msgid "No ordering is performed" -msgstr "No se realiza ningún pedido" +msgid ":doc:`pgr_createVerticesTable`" +msgstr ":doc:`pgr_createVerticesTable`" -msgid "let `v` and `u` are nodes on the graph:" -msgstr "Sean `v` y `u` nodos en el grafo:" +msgid ":doc:`pgr_nodeNetwork` to create nodes to a not noded edge table." +msgstr ":doc:`pgr_nodeNetwork` para crear nodos en una tabla sin nodos." -msgid "when there is no path from `v` to `u`:" -msgstr "cuando no hay ruta de `v` a `u`:" +msgid "``pgr_analyzeOneWay``" +msgstr "``pgr_analyzeOneWay``" -msgid "cost from `v` to `u` is :math:`\\inf`" -msgstr "costo de `v` a `u` es :math:`\\inf`" +msgid "" +"``pgr_analyzeOneWay`` — Analyzes oneway Sstreets and identifies flipped " +"segments." +msgstr "" +"``pgr_analyzeOneWay`` — Analiza las calles de sentido unidireccional e " +"identifica los segmentos volteados." -msgid "when :math:`v = u` then" -msgstr "cuando :math:`v = u` entonces" +msgid "" +"This function analyzes oneway streets in a graph and identifies any flipped " +"segments." +msgstr "" +"Esta función analiza las calles unidireccionales en un gráfico e identifica " +"cualquier segmentos invertido." -msgid "cost from `v` to `u` is :math:`0`" -msgstr "costo de `v` a `u` es :math:`0`" +msgid "" +"The analyses of one way segments is pretty simple but can be a powerful " +"tools to identifying some the potential problems created by setting the " +"direction of a segment the wrong way. A node is a `source` if it has edges " +"the exit from that node and no edges enter that node. Conversely, a node is " +"a `sink` if all edges enter the node but none exit that node. For a `source` " +"type node it is logically impossible to exist because no vehicle can exit " +"the node if no vehicle and enter the node. Likewise, if you had a `sink` " +"node you would have an infinite number of vehicle piling up on this node " +"because you can enter it but not leave it." +msgstr "" +"El análisis de segmentos que tienen un solo sentido es bastante simple, pero " +"a la vez ser una herramienta poderosa para identificar algunos problemas " +"potenciales que son creados al establecer la dirección de un segmento de la " +"manera equivocada. Un nodo es un `source` si tiene bordes que salen de ese " +"nodo y no hay bordes que entren a ese nodo. Por el contrario, un nodo es " +"un`sink` si todos los bordes entran al nodo pero ninguno sale de ese nodo. " +"Para un nodo `source` es lógicamente imposible existir porque ningún " +"vehículo puede salir del nodo o si algún vehículo logró entrar en el nodo. " +"Asimismo, si tuvieras un nodo `sink` tienes un número infinito de vehículos " +"que se van acumulando en este nodo porque no pueden salir de el." -msgid "When the graph is **undirected** the cost matrix is symmetric" -msgstr "Cuando el grafo es **no dirigido**, la matriz de costes es simétrica" +msgid "" +"So why do we care if the are not feasible? Well if the direction of an edge " +"was reversed by mistake we could generate exactly these conditions. Think " +"about a divided highway and on the north bound lane one segment got entered " +"wrong or maybe a sequence of multiple segments got entered wrong or maybe " +"this happened on a round-about. The result would be potentially a `source` " +"and/or a `sink` node." +msgstr "" +"Así que ¿por qué nos importa si no es factibles? Si la dirección de un borde " +"se revirtió por error podríamos generar exactamente en estas condiciones. " +"Pensar en una carretera dividida y en el carril que va al norte un segmento " +"o varios segmentos fueron introducidos al revés, o tal vez esto sucedió en " +"una glorieta. El resultado sería potencialmente un nodo `source` y/o a " +"`sink` node." -msgid "pgr_aStarCostMatrix(`Edges SQL`_, **start vids**, [**options**])" -msgstr "pgr_aStarCostMatrix(`SQL de aristas`_, **salidas**, [**opciones**])" +msgid "" +"So by counting the number of edges entering and exiting each node we can " +"identify both `source` and `sink` nodes so that you can look at those areas " +"of your network to make repairs and/or report the problem back to your data " +"vendor." +msgstr "" +"Así contando el número de aristas entrantes y salientes de cada nodo podemos " +"identificar los nodos `source` y `sink`, así que usted puede mirar esas " +"áreas de su red para hacer reparaciones o informar del problema a su " +"proveedor de datos." msgid "" -"Symmetric cost matrix for vertices :math:`\\{5, 6, 10, 15\\}` on an " -"**undirected** graph using heuristic :math:`2`" +"pgr_analyzeOneWay(**geom_table**, **s_in_rules**, **s_out_rules**, " +"**t_in_rules**, **t_out_rules**, [**options**])" msgstr "" -"Matriz simétrica de costes para los vértices :math:`\\{5, 6, 10, 15\\}` en " -"un grafo **no dirigido** usando la heurística :math:`2`" +"pgr_analyzeOneWay(**geom_table**, **s_in_rules**, **s_out_rules**, " +"**t_in_rules**, **t_out_rules**, [**opciones**])" -msgid "Use with :doc:`pgr_TSP`" -msgstr "Uso con :doc:`pgr_TSP`" +msgid "**options:** ``[oneway, source, target, two_way_if_null]``" +msgstr "**opcionales:** ``[oneway, source, target, two_way_if_null]``" -msgid "``pgr_alphaShape``" -msgstr "``pgr_alphaShape``" +msgid "RETURNS ``TEXT``" +msgstr "DEVUELVE ``TEXT``" -msgid "``pgr_alphaShape`` — Polygon part of an alpha shape." -msgstr "``pgr_alphaShape`` —Parte poligonal de una forma alfa." +msgid "s_in_rules" +msgstr "s_in_rules" -msgid "Breaking change on signature" -msgstr "Cambio de ruptura en la firma" +msgid "``text[]`` source node **in** rules" +msgstr "``text[]`` reglas de **entrada** del nodo inicial" -msgid "**Boost 1.54** & **Boost 1.55** are supported" -msgstr "**Boost 1.54** y **Boost 1.55** son soportados" +msgid "s_out_rules" +msgstr "s_out_rules" -msgid "**Boost 1.56+** is preferable" -msgstr "**Boost 1.56+** es preferible" +msgid "``text[]`` source node **out** rules" +msgstr "``text[]`` reglas de **salida** del nodo inicial" -msgid "Boost Geometry is stable on Boost 1.56" -msgstr "Boost Geometry es estable en Boost 1.56" +msgid "t_in_rules" +msgstr "t_in_rules" -msgid "Added alpha argument with default 0 (use optimal value)" -msgstr "" -"Añadido argumento alfa con valor predeterminado 0 (usar el valor óptimo)" +msgid "``text[]`` target node **in** rules" +msgstr "``text[]`` reglas de **entrada** del nodo final" -msgid "Support to return multiple outer/inner ring" -msgstr "Soporte para devolver múltiples anillos exteriores/interiores" +msgid "t_out_rules" +msgstr "t_out_rules" -msgid "Renamed from version 1.x" -msgstr "Renombrado desde la versión 1.x" +msgid "``text[]`` target node **out** rules" +msgstr "``text[]`` reglas de **salida** del nodo final" -msgid "Returns the polygon part of an alpha shape." -msgstr "Devuelve la parte poligonal de una forma alfa." +msgid "oneway" +msgstr "oneway" -msgid "Input is a *geometry* and returns a *geometry*" -msgstr "La entrada es una *geometría* y devuelve una *geometría*" +msgid "" +"``text`` oneway column name name of the network table. Default value is " +"``oneway``." +msgstr "" +"``text`` El nombre de la columna del sentido. El valor por defecto es " +"``oneway``." -msgid "Uses PostGis ST_DelaunyTriangles" -msgstr "Usa PostGis ST_DelaunyTriangles" +msgid "two_way_if_null" +msgstr "two_way_if_null" msgid "" -"Instead of using CGAL's definition of `alpha` it use the ``spoon_radius``" +"``boolean`` flag to treat oneway NULL values as bi-directional. Default " +"value is ``true``." msgstr "" -"En lugar de utilizar la definición de CGAL de `alpha` utiliza " -"``spoon_radius`` el ''spoon_radius''" +"``boolean`` bandera para tratar los valores NULL de oneway como " +"bidireccional. Valor predeterminado es``true``." -msgid ":math:`spoon\\_radius = \\sqrt alpha`" -msgstr ":math:`spoon\\_radius = \\sqrt alpha`" +msgid "" +"It is strongly recommended to use the named notation. See :doc:" +"`pgr_createVerticesTable` or :doc:`pgr_createTopology` for examples." +msgstr "" +"Es ampliamente recomendable usar la notación nombrada . Ver ejemplos en: :" +"doc:`pgr_createVerticesTable` o :doc:`pgr_createTopology`." msgid "" -"A Triangle area is considered part of the alpha shape when :math:" -"`circumcenter\\ radius < spoon\\_radius`" +"Fills completely the ``ein`` and ``eout`` columns of the vertices table." msgstr "" -"Un área de triángulo se considera parte de la forma alfa cuando :math:" -"`circumcenter\\ radius < spoon\\_radius`" +"Se llena completamente las columnas de la tabla de vértices ``ein`` y " +"``eout``." -msgid "The ``alpha`` parameter is the **spoon radius**" -msgstr "El parámetro ``alpha`` es el **radio de cuchara**" +msgid "The names of source , target or oneway are the same." +msgstr "Los nombres de origen, destino o oneway son las mismos." msgid "" -"When the total number of points is less than 3, returns an EMPTY geometry" +"The rules are defined as an array of text strings that if match the " +"``oneway`` value would be counted as ``true`` for the source or target " +"**in** or **out** condition." msgstr "" -"Cuando el número total de puntos es menor que 3, devuelve una geometría EMPTY" +"Las reglas se definen como un conjunto de textos que si encajan con el valor " +"de ``oneway`` se contara como ``true`` para las condiciones de el origen o " +"destino **in** o **out** ." -msgid "pgr_alphaShape(**geometry**, [alpha])" -msgstr "pgr_alphaShape(**geometría**, [alpha])" +msgid "" +"The vertices table can be created with :doc:`pgr_createVerticesTable` or :" +"doc:`pgr_createTopology`" +msgstr "" +"Los vértices pueden ser creados con :doc:`pgr_createVerticesTable` o :doc:" +"`pgr_createTopology`" -msgid "RETURNS ``geometry``" -msgstr "REGRESA ``geometry``" +msgid "" +"``integer`` Number of vertices in the edge_table that reference this vertex. " +"See :doc:`pgr_analyzeGgraph `." +msgstr "" +"``integer`` Número de vértices en edge_table que hacen referencia a este " +"vértice. Consulte :doc:`pgr_analyzeGgraph `." msgid "" -"passing a geometry collection with spoon radius :math:`1.5` using the return " -"variable ``geom``" +"``integer`` Indicator that the vertex might have a problem. See :doc:" +"`pgr_analyzeGraph `." msgstr "" -"pasar una colección de geometrías con radio de cuchara :math:`1.5` usando la " -"variable de retorno ``geom``" +"``integer`` Indicador de que el vértice podría tener un problema. Consulte :" +"doc:`pgr_analyzeGraph `." -msgid "**geometry**" -msgstr "**geometría**" +msgid "" +"``integer`` Number of vertices in the edge_table that reference this vertex " +"as incoming." +msgstr "" +"``integer`` número de vértices en la edge_table que hacen referencia a este " +"vértice como entrante." -msgid "``geometry``" -msgstr "``geometry``" +msgid "" +"``integer`` Number of vertices in the edge_table that reference this vertex " +"as outgoing." +msgstr "" +"``integer`` número de vértices en la edge_table que hacen referencia a este " +"vértice como saliente." -msgid "Geometry with at least :math:`3` points" -msgstr "Geometría con al menos :math:`3` puntos" +msgid ":doc:`pgr_analyzeGraph`" +msgstr ":doc:`pgr_analyzeGraph`" -msgid "``alpha``" -msgstr "``alpha``" +msgid "``pgr_articulationPoints``" +msgstr "``pgr_articulationPoints``" -msgid "The radius of the spoon." -msgstr "El radio de la cuchara." +msgid "" +"``pgr_articulationPoints`` - Return the articulation points of an undirected " +"graph." +msgstr "" +"``pgr_articulationPoints`` - Devuelve los puntos de articulación de un grafo " +"no dirigido." -msgid "Return Value" -msgstr "Valor de Devolución" +msgid "Result columns change: ``seq`` is removed" +msgstr "Cambio de columnas de resultados: ``seq`` se elimina" -msgid "Kind of geometry" -msgstr "Tipo de geometría" +msgid "Version 2.5.0" +msgstr "Versión 2.5.0" -msgid "GEOMETRY COLLECTION" -msgstr "GEOMETRY COLLECTION" +msgid "New experimental function." +msgstr "Nueva función experimental." -msgid "A Geometry collection of Polygons" -msgstr "Una colección de Geometría de Polígonos" +msgid "" +"Those vertices that belong to more than one biconnected component are called " +"articulation points or, equivalently, cut vertices. Articulation points are " +"vertices whose removal would increase the number of connected components in " +"the graph. This implementation can only be used with an undirected graph." +msgstr "" +"Los vértices que pertenecen a más de un componente biconectado se denominan " +"puntos de articulación o, equivalentemente, corte de vértices. Los puntos de " +"articulación son vértices cuya eliminación aumentaría el número de " +"componentes conectados en el grafo. Esta implementación solo se puede " +"utilizar con un grafo no dirigido." -msgid ":doc:`pgr_drivingDistance`" -msgstr ":doc:`pgr_drivingDistance`" +msgid "Works for **undirected** graphs." +msgstr "Funciona para grafos **no dirigidos**." -msgid "`ST_ConcaveHull `__" -msgstr "`ST_ConcaveHull `__" +msgid "``node`` ascending" +msgstr "``node`` ascendente" -msgid "pgr_analyzeGraph" -msgstr "pgr_analyzeGraph" +msgid "Running time: :math:`O(V + E)`" +msgstr "Tiempo de ejecución: :math:`O(V + E)`" -msgid "``pgr_analyzeGraph`` — Analyzes the network topology." -msgstr "``pgr_analyzeGraph`` — analiza la topología de red." +msgid "pgr_articulationPoints(`Edges SQL`_)" +msgstr "pgr_articulationPoints(`SQL de aristas`_)" -msgid "The function returns:" -msgstr "La función devuelve:" +msgid "Returns set of |result-node|" +msgstr "Regresa conjunto de |result-node|" -msgid "``OK`` after the analysis has finished." -msgstr "``OK`` Cuando el análisis ha terminado." +msgid "The articulation points of the graph" +msgstr "Los puntos de articulación del grafo" -msgid "``FAIL`` when the analysis was not completed due to an error." -msgstr "``FAIL`` cuando el análisis no se completó debido a un error." +msgid "Nodes in red are the articulation points." +msgstr "Nodos en rojo son los puntos de articulación." -msgid "pgr_analyzeGraph(**edge_table**, **tolerance**, [**options**])" -msgstr "pgr_analyzeGraph(**edge_table**, **tolerancia**, [**opciones**])" +msgid "" +"`Boost: Biconnected components & articulation points `__" +msgstr "" +"`Boost: Componentes biconectados y puntos de articulación `__" -msgid "**options:** ``[the_geom, id, source, target, rows_where]``" -msgstr "**opcionales:** ``[the_geom, id, source, target, rows_where]``" +msgid "" +"wikipedia: `Biconnected component `__" +msgstr "" +"wikipedia: `Componentes biconnectados `__" -msgid "RETURNS ``VARCHAR``" -msgstr "DEVUELVE ``VARCHAR``" +msgid "``pgr_bdAstar``" +msgstr "``pgr_bdAstar``" -msgid "Prerequisites" -msgstr "Pre-requisitos" +msgid "``pgr_bdAstar`` — Shortest path using the bidirectional A* algorithm." +msgstr "" +"``pgr_bdAstar`` — Devuelve la ruta más corta usando el algoritmo " +"Bidireccional A*." -msgid "" -"The edge table to be analyzed must contain a source column and a target " -"column filled with id's of the vertices of the segments and the " -"corresponding vertices table _vertices_pgr that stores the " -"vertices information." +msgid "pgr_bdAstar(One to One) added ``start_vid`` and ``end_vid`` columns." msgstr "" -"La tabla de aristas a analizar debe contener una columna origen y una " -"columna destino rellenas con identificadores de los vértices de los " -"segmentos y la correspondiente tabla de vértices _vertices_pgr " -"que almacena la información de los vértices." +"pgr_bdAstar(Uno a Uno) ha añadido las columnas ``start_vid`` y ``end_vid``." -msgid "Use :doc:`pgr_createVerticesTable` to create the vertices table." -msgstr "Use :doc:`pgr_createVerticesTable` para crear la tabla de vértices." +msgid "pgr_bdAstar(One to Many) added ``end_vid`` column." +msgstr "pgr_bdAstar(Uno a Muchos) ha añadido la columna ``end_vid``." -msgid "" -"Use :doc:`pgr_createTopology` to create the topology and the vertices table." -msgstr "Use :doc:`pgr_createTopology` para crear la topología y los vértices." +msgid "pgr_bdAstar(Many to One) added ``start_vid`` column." +msgstr "pgr_bdAstar(Muchos a Uno) ha añadido la columna ``start_vid``." -msgid "The analyze graph function accepts the following parameters:" -msgstr "La función de análisis gráfico acepta los siguientes parámetros:" +msgid "pgr_bdAstar(One to Many)" +msgstr "pgr_bdAstar(Uno a Muchos)" -msgid "edge_table" -msgstr "edge_table" +msgid "pgr_bdAstar(Many to One)" +msgstr "pgr_bdAstar(Muchos a Uno)" -msgid "``text`` Network table name. (may contain the schema name as well)" -msgstr "``text`` La tabla de la red. (puede contener el nombre del esquema)" +msgid "pgr_bdAstar(Many to Many)" +msgstr "pgr_bdAstar(Muchos a Muchos)" -msgid "tolerance" -msgstr "tolerancia" +msgid "Signature change on pgr_bdAstar(One to One)" +msgstr "Cambio de firma en pgr_bdAstar(Uno a Uno)" msgid "" -"``float8`` Snapping tolerance of disconnected edges. (in projection unit)" +"The results are equivalent to the union of the results of the " +"pgr_bdAStar(One to One) on the:" msgstr "" -"``float8`` ajuste tolerancia de bordes desconectados. (en la unidad de " -"proyección)" - -msgid "the_geom" -msgstr "the_geom" +"Los resultados son equivalentes a la unión de los resultados de " +"pgr_bdAStar(Uno a Uno) en:" -msgid "" -"``text`` Geometry column name of the network table. Default value is " -"``the_geom``." +msgid "pgr_bdAstar(`Edges SQL`_, **start vid**, **end vid**, [**options**])" msgstr "" -"``text`` nombre de la columna de la geometría en la tabla de la red. El " -"valor por defecto es `the_geom``." +"pgr_bdAstar(`SQL de aristas`_, **salida**, **destino**, [**opciones**])" -msgid "id" -msgstr "id" +msgid "pgr_bdAstar(`Edges SQL`_, **start vid**, **end vids**, [**options**])" +msgstr "" +"pgr_bdAstar(`SQL de aristas`_, **salida**, **destinos**, [**opciones**])" -msgid "" -"``text`` Primary key column name of the network table. Default value is " -"``id``." +msgid "pgr_bdAstar(`Edges SQL`_, **start vids**, **end vid**, [**options**])" msgstr "" -"``text``Nombre de la columna de la clave principal de la tabla de red. Valor " -"por defecto es ``id``'." +"pgr_bdAstar(`SQL de aristas`_, **salidas**, **destino**, [**opciones**])" -msgid "source" -msgstr "source" +msgid "pgr_bdAstar(`Edges SQL`_, **start vids**, **end vids**, [**options**])" +msgstr "" +"pgr_bdAstar(`SQL de aristas`_, **salidas**, **destinos**, [**opciones**])" -msgid "" -"``text`` Source column name of the network table. Default value is " -"``source``." +msgid "pgr_bdAstar(`Edges SQL`_, `Combinations SQL`_, [**options**])" msgstr "" -"``id``Nombre de columna de origen de la tabla de red. El valor " -"predeterminado es``source``." +"pgr_bdAstar(`SQL de aristas`_, `SQL de combinaciones`_, [**opciones**])" -msgid "target" -msgstr "target" +msgid "``pgr_bdAstarCost``" +msgstr "``pgr_bdAstarCost``" msgid "" -"``text`` Target column name of the network table. Default value is " -"``target``." +"``pgr_bdAstarCost`` - Total cost of the shortest path using the " +"bidirectional A* algorithm." msgstr "" -"``text`` El nombre de la columna del destino del segmento. El valor por " -"defecto es ``target``." - -msgid "rows_where" -msgstr "rows_where" +"``pgr_bdAstarCost`` - Coste total del camino más corto utilizando el " +"algoritmo bidireccional A*." msgid "" -"``text`` Condition to select a subset or rows. Default value is ``true`` to " -"indicate all rows." +"The ``pgr_bdAstarCost`` function sumarizes of the cost of the shortest path " +"using the bidirectional A* algorithm." msgstr "" -"``text`` Condición para seleccionar un subconjunto o filas. Valor " -"predeterminado es ``true`` para indicar todas las filas." - -msgid "Uses the vertices table: _vertices_pgr." -msgstr "Utiliza la tabla de los vértices: _vertices_pgr." +"La función ``pgr_bdAstarCost`` suma el coste del camino más corto utilizando " +"el algoritmo bidireccional A*." -msgid "Fills completely the ``cnt`` and ``chk`` columns of the vertices table." +msgid "" +"pgr_bdAstarCost(`Edges SQL`_, **start vid**, **end vid**, [**options**])" msgstr "" -"Llena totalmente las columnas ``cnt`` y ``chk`` de la tabla de vértices." +"pgr_bdAstarCost(`SQL de aristas`_, **salida**, **destino**, [**opciones**])" msgid "" -"Returns the analysis of the section of the network defined by ``rows_where``" +"pgr_bdAstarCost(`Edges SQL`_, **start vid**, **end vids**, [**options**])" msgstr "" -"Devuelve el análisis de la sección de la red definida por ``rows_where``" - -msgid "The vertices table is not found." -msgstr "No se encuentra en la tabla de los vértices." +"pgr_bdAstarCost(`SQL de aristas`_, **salida**, **destinos**, [**opciones**])" msgid "" -"A required column of the Network table is not found or is not of the " -"appropriate type." +"pgr_bdAstarCost(`Edges SQL`_, **start vids**, **end vid**, [**options**])" msgstr "" -"Una columna de la tabla de red requerida no se encuentra o no es del tipo " -"apropiado." - -msgid "The condition is not well formed." -msgstr "La condición no está bien formada." - -msgid "The names of source , target or id are the same." -msgstr "Los nombres de origen, destino o id son las mismos." - -msgid "The SRID of the geometry could not be determined." -msgstr "No pudo determinarse el SRID de la geometría." - -msgid "The Vertices Table" -msgstr "La tabla de vértices" +"pgr_bdAstarCost(`SQL de aristas`_, **salidas**, **destino**, [**opciones**])" msgid "" -"The vertices table can be created with :doc:`pgr_createVerticesTable " -"` or :doc:`pgr_createTopology `" +"pgr_bdAstarCost(`Edges SQL`_, **start vids**, **end vids**, [**options**])" msgstr "" -"Los vértices pueden ser creados con :doc:`pgr_createVerticesTable " -"` o :doc:`pgr_createTopology `" - -msgid "The structure of the vertices table is:" -msgstr "La estructura de la tabla de los vértices es:" +"pgr_bdAstarCost(`SQL de aristas`_, **salidas**, **destinos**, [**opciones**])" -msgid "``bigint`` Identifier of the vertex." -msgstr "``bigint`` identificador del vértice." +msgid "pgr_bdAstarCost(`Edges SQL`_, `Combinations SQL`_, [**options**])" +msgstr "" +"pgr_bdAstarCost(`SQL de aristas`_, `SQL de combinaciones`_, [**opciones**])" -msgid "cnt" -msgstr "cnt" +msgid "``pgr_bdAstarCostMatrix``" +msgstr "``pgr_bdAstarCostMatrix``" msgid "" -"``integer`` Number of vertices in the edge_table that reference this vertex." +"``pgr_bdAstarCostMatrix`` - Calculates the a cost matrix using :doc:" +"`pgr_aStar`." msgstr "" -"``integer`` Número de vértices en edge_table que hacen referencia a este " -"vértice." - -msgid "chk" -msgstr "chk" - -msgid "``integer`` Indicator that the vertex might have a problem." -msgstr "``integer`` Indicador de que el vértice puede tener un problema." +"``pgr_bdAstarCostMatrix`` - Calcula la matriz de costes utilizando :doc:" +"`pgr_aStar`." -msgid "ein" -msgstr "ein" +msgid "Using internaly the :doc:`pgr_bdAstar` algorithm" +msgstr "Usando internamente el algoritmo :doc:`pgr_bdAstar`" -msgid "" -"``integer`` Number of vertices in the edge_table that reference this vertex " -"as incoming. See :doc:`pgr_analyzeOneWay `." -msgstr "" -"``integer`` Número de vértices en edge_table que hacen referencia a este " -"vértice como entrante. Consulte :doc:`pgr_analyzeOneWay`." +msgid "pgr_bdAstarCostMatrix(`Edges SQL`_, **start vids**, [**options**])" +msgstr "pgr_bdAstarCostMatrix(`SQL de aristas`_, **salidas**, [**opciones**])" -msgid "eout" -msgstr "eout" +msgid "``pgr_bdDijkstra``" +msgstr "``pgr_bdDijkstra``" msgid "" -"``integer`` Number of vertices in the edge_table that reference this vertex " -"as outgoing. See :doc:`pgr_analyzeOneWay `." +"``pgr_bdDijkstra`` — Returns the shortest path using Bidirectional Dijkstra " +"algorithm." msgstr "" -"``integer`` Número de vértices en edge_table que hacen referencia a este " -"vértice como saliente. Consulte :doc:`pgr_analyzeOneWay `." +"``pgr_bdDijkstra`` - Devuelve el camino más corto utilizando el algoritmo " +"Bidireccional de Dijkstra." -msgid "``geometry`` Point geometry of the vertex." -msgstr "``geometry`` Valor de la geometría POINT del vértice." +msgid "pgr_bdDijkstra(One to Many)" +msgstr "pgr_bdDijkstra(Uno a Muchos)" -msgid "Usage when the edge table's columns MATCH the default values:" -msgstr "" -"Uso cuando las columnas de la tabla de borde coinciden con los valores por " -"defecto:" +msgid "pgr_bdDijkstra(Many to One)" +msgstr "pgr_bdDijkstra(Muchos a Uno)" -msgid "The simplest way to use pgr_analyzeGraph is:" -msgstr "La forma más sencilla de usar pgr_analyzeGraph es:" +msgid "pgr_bdDijkstra(Many to Many)" +msgstr "pgr_bdDijkstra(Muchos a Muchos)" -msgid "Arguments are given in the order described in the parameters:" -msgstr "Los argumentos se escriben en el orden descrito en los parámetros:" +msgid "Signature change on pgr_bdDijsktra(One to One)" +msgstr "La firma cambió en pgr_bdDijsktra(Uno a Uno)" -msgid "We get the same result as the simplest way to use the function." +msgid "" +"pgr_bdDijkstra(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" msgstr "" -"Obtenemos el mismo resultado que la forma más sencilla de utilizar la " -"función." +"pgr_bdDijkstra(`SQL de aristas`_, **salida**, **destino**, [``directed``])" -msgid "An error would occur when" -msgstr "Un error puede ocurrir cuando" +msgid "" +"pgr_bdDijkstra(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" +msgstr "" +"pgr_bdDijkstra(`SQL de aristas`_, **salida**, **destinos**, [``directed``])" -msgid "the arguments are not given in the appropriate order:" -msgstr "los argumentos se no se escriben en el orden apropiado:" +msgid "" +"pgr_bdDijkstra(`Edges SQL`_, **start vids**, **end vid**, [``directed``])" +msgstr "" +"pgr_bdDijkstra(`SQL de aristas`_, **salidas**, **destino**, [``directed``])" msgid "" -"In this example, the column ``id`` of the table ``mytable`` is passed to the " -"function as the geometry column, and the geometry column ``the_geom`` is " -"passed to the function as the id column." +"pgr_bdDijkstra(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" msgstr "" -"En este ejemplo, la columna ``id`` de la tabla ``mytable`` se pasa a la " -"función como geometría, y la columna de geometría ``the_geom`` se pasa a la " -"función de columna ``id``." +"pgr_bdDijkstra(`SQL de aristas`_, **salidas**, **destinos**, [``directed``])" -msgid "When using the named notation" -msgstr "Cuando se utiliza la notación por nombre" +msgid "pgr_bdDijkstra(`Edges SQL`_, `Combinations SQL`_, [``directed``])" +msgstr "" +"pgr_bdDijkstra(`SQL de aristas`_, `SQL de combinaciones`_, [``directed``])" -msgid "The order of the parameters do not matter:" -msgstr "No importa el orden de los parámetros:" +msgid "Returns set of |old-generic-result|" +msgstr "Regresa el conjunto de |old-generic-result|" -msgid "" -"Parameters defined with a default value can be omitted, as long as the value " -"matches the default:" -msgstr "" -"Parámetros definidos con un valor predeterminado se pueden omitir, siempre y " -"cuando el valor coincida con el valor por defecto:" +msgid "Returns set of |result-1-1|" +msgstr "Regresa el conjunto de |result-1-1|" -msgid "Selecting rows using rows_where parameter" -msgstr "Seleccionar filas utilizando el parámetro rows_where" +msgid "From vertex :math:`6` to vertex :math:`10` on a **directed** graph" +msgstr "Del vértice :math:`6` al vértice :math:`10` en un grafo **dirigido**" + +msgid "Returns set of |result-1-m|" +msgstr "Regresa el conjunto de |result-1-m|" msgid "" -"Selecting rows based on the id. Displays the analysis a the section of the " -"network." +"From vertex :math:`6` to vertices :math:`\\{10, 17\\}` on a **directed** " +"graph" msgstr "" -"La selección de filas basadas en el id. El análisis muestra una parte de la " -"red." +"Del vértice :math:`6` a los vértices :math:`\\{10, 17\\}` en un grafo " +"**dirigido**" + +msgid "Returns set of |result-m-1|" +msgstr "Regresa el conjunto de |result-m-1|" msgid "" -"Selecting the rows where the geometry is near the geometry of row with " -"``id`` = 5" +"From vertices :math:`\\{6, 1\\}` to vertex :math:`17` on a **directed** graph" msgstr "" -"Seleccionar las filas donde la geometría está cerca de la geometría de la " -"fila con ``id`` = 5" +"De los vértices :math:`\\{6, 1\\}` al vertice :math:`17` en un grafo " +"**dirigido**" msgid "" -"Selecting the rows where the geometry is near the geometry of the row with " -"``gid`` =100 of the table ``othertable``." +"From vertices :math:`\\{6, 1\\}` to vertices :math:`\\{10, 17\\}` on an " +"**undirected** graph" msgstr "" -"Seleccionar las filas donde la geometría está cerca de la geometría de la " -"fila con``gid`` =100 de la tabla ``othertable``." +"De los vértices :math:`\\{6, 1\\}` a los vértices :math:`\\{10, 17\\}` en un " +"grafo **no dirigido**" -msgid "Usage when the edge table's columns DO NOT MATCH the default values:" -msgstr "" -"Uso cuando las columnas de la tabla de borde NO COINCIDEN con los valores " -"por defecto:" +msgid "Using a combinations table on an **undirected** graph" +msgstr "Usando una tabla de combinaciones en un grafo **no dirigido**" -msgid "For the following table" -msgstr "Para la siguiente tabla" +msgid "https://en.wikipedia.org/wiki/Bidirectional_search" +msgstr "https://en.wikipedia.org/wiki/Bidirectional_search" -msgid "Using positional notation:" -msgstr "Usando notación posicional:" +msgid "``pgr_bdDijkstraCost``" +msgstr "``pgr_bdDijkstraCost``" msgid "" -"The arguments need to be given in the order described in the parameters:" -msgstr "Las discusiones deben recibir en el orden descrito en los parámetros:" +"``pgr_bdDijkstraCost`` — Returns the shortest path's cost using " +"Bidirectional Dijkstra algorithm." +msgstr "" +"``pgr_bdDijkstraCost`` - Devuelve el coste del camino más corto utilizando " +"el algoritmo Bidireccional de Dijkstra." msgid "" -"An error would occur when the arguments are not given in the appropriate " -"order: In this example, the column ``gid`` of the table ``mytable`` is " -"passed to the function as the geometry column, and the geometry column " -"``mygeom`` is passed to the function as the id column." +"The ``pgr_bdDijkstraCost`` function sumarizes of the cost of the shortest " +"path using the bidirectional Dijkstra Algorithm." msgstr "" -"Un error puede ocurrir cuando los argumentos no se dan en el orden adecuado: " -"en este ejemplo, la columna ``gid`` de la tabla ``mytable`` se pasa a la " -"función como geometría, y la columna de geometría``mygeom`` se pasa a la " -"función como columna ``id``." +"La función ``pgr_bdDijkstraCost`` sumarisa el costo de la ruta más corta " +"utilizando el algoritmo de bidirecional de Dijkstra." msgid "" -"In this scenario omitting a parameter would create an error because the " -"default values for the column names do not match the column names of the " -"table." +"pgr_bdDijkstraCost(`Edges SQL`_, **start vid**, **end vid** , [``directed``])" msgstr "" -"En este escenario omitir un parámetro crearía un error porque los valores " -"predeterminados de los nombres de columna no coinciden con los nombres de " -"columna de la tabla." - -msgid "Selecting rows based on the id." -msgstr "La selección de filas basadas en el id." +"pgr_bdDijkstraCost(`SQL de aristas`_, **salida**, **destino**, " +"[``directed``])" msgid "" -"Selecting the rows WHERE the geometry is near the geometry of row with " -"``id`` =5 ." +"pgr_bdDijkstraCost(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" msgstr "" -"Seleccionar las filas donde la geometría está cerca de la geometría de la " -"fila con ``id`` =5 ." +"pgr_bdDijkstraCost(`SQL de aristas`_, **salida**, **destinos**, " +"[``directed``])" msgid "" -"Selecting the rows WHERE the geometry is near the place='myhouse' of the " -"table ``othertable``. (note the use of quote_literal)" +"pgr_bdDijkstraCost(`Edges SQL`_, **start vids**, **end vid** , " +"[``directed``])" msgstr "" -"Seleccionar las filas donde la geometría está cerca de la place='myhouse' de " -"la tabla ``othertable``. (Nótese el uso de quote_literal)" - -msgid "The examples use the :doc:`sampledata` network." -msgstr "Los ejemplos usan la red de ejemplo :doc:`sampledata`." +"pgr_bdDijkstraCost(`SQL de aristas`_, **salidas**, **destino**, " +"[``directed``])" -msgid ":doc:`pgr_analyzeOneWay`" -msgstr ":doc:`pgr_analyzeOneWay`" +msgid "" +"pgr_bdDijkstraCost(`Edges SQL`_, **start vids**, **end vids**, " +"[``directed``])" +msgstr "" +"pgr_bdDijkstraCost(`SQL de aristas`_, **salidas**, **destinos**, " +"[``directed``])" -msgid ":doc:`pgr_createVerticesTable`" -msgstr ":doc:`pgr_createVerticesTable`" +msgid "pgr_bdDijkstraCost(`Edges SQL`_, `Combinations SQL`_, [ ``directed``])" +msgstr "" +"pgr_bdDijkstraCost(`SQL de aristas`_, `SQL de combinaciones`_, " +"[ ``directed``])" -msgid ":doc:`pgr_nodeNetwork` to create nodes to a not noded edge table." -msgstr ":doc:`pgr_nodeNetwork` para crear nodos en una tabla sin nodos." +msgid "pgr_bdDijkstraCost(`Edges SQL`_, `Combinations SQL`_, [``directed``])" +msgstr "" +"pgr_bdDijkstraCost(`SQL de aristas`_, `SQL de combinaciones`_, " +"[``directed``])" -msgid "pgr_analyzeOneWay" -msgstr "pgr_analyzeOneWay" +msgid "``pgr_bdDijkstraCostMatrix``" +msgstr "``pgr_bdDijkstraCostMatrix``" msgid "" -"``pgr_analyzeOneWay`` — Analyzes oneway Sstreets and identifies flipped " -"segments." +"``pgr_bdDijkstraCostMatrix`` - Calculates a cost matrix using :doc:" +"`pgr_bdDijkstra`." msgstr "" -"``pgr_analyzeOneWay`` — Analiza las calles de sentido unidireccional e " -"identifica los segmentos volteados." +"``pgr_bdDijkstraCostMatrix`` - Calcula la matriz de costes utilizando :doc:" +"`pgr_bdDijkstra`." msgid "" -"This function analyzes oneway streets in a graph and identifies any flipped " -"segments." +"Using bidirectional Dijkstra algorithm, calculate and return a cost matrix." msgstr "" -"Esta función analiza las calles unidireccionales en un gráfico e identifica " -"cualquier segmentos invertido." +"Usando el algoritmo bidireccional de Dijkstra, calcular y regresar una " +"matriz de costos." + +msgid "pgr_bdDijkstraCostMatrix(`Edges SQL`_, **start vids**, [``directed``])" +msgstr "" +"pgr_bdDijkstraCostMatrix(`SQL de aristas`_, **salidas**, [``directed``])" msgid "" -"The analyses of one way segments is pretty simple but can be a powerful " -"tools to identifying some the potential problems created by setting the " -"direction of a segment the wrong way. A node is a `source` if it has edges " -"the exit from that node and no edges enter that node. Conversely, a node is " -"a `sink` if all edges enter the node but none exit that node. For a `source` " -"type node it is logically impossible to exist because no vehicle can exit " -"the node if no vehicle and enter the node. Likewise, if you had a `sink` " -"node you would have an infinite number of vehicle piling up on this node " -"because you can enter it but not leave it." +"Symmetric cost matrix for vertices :math:`\\{5, 6, 10, 15\\}` on an " +"**undirected** graph" msgstr "" -"El análisis de segmentos que tienen un solo sentido es bastante simple, pero " -"a la vez ser una herramienta poderosa para identificar algunos problemas " -"potenciales que son creados al establecer la dirección de un segmento de la " -"manera equivocada. Un nodo es un `source` si tiene bordes que salen de ese " -"nodo y no hay bordes que entren a ese nodo. Por el contrario, un nodo es " -"un`sink` si todos los bordes entran al nodo pero ninguno sale de ese nodo. " -"Para un nodo `source` es lógicamente imposible existir porque ningún " -"vehículo puede salir del nodo o si algún vehículo logró entrar en el nodo. " -"Asimismo, si tuvieras un nodo `sink` tienes un número infinito de vehículos " -"que se van acumulando en este nodo porque no pueden salir de el." +"Matriz de costos simétrica para vértices :math:`\\{5, 6, 10, 15\\}` en un " +"grafo **no dirigido**" + +msgid "Use with :doc:`pgr_TSP`." +msgstr "Usar con :doc:`pgr_TSP`." + +msgid "``pgr_bellmanFord - Experimental``" +msgstr "``pgr_bellmanFord`` - Experimental" + +msgid "``pgr_bellmanFord`` — Shortest path using Bellman-Ford algorithm." +msgstr "" +"``pgr_bellmanFord`` - Camino más corto utilizando el algoritmo de Bellman-" +"Ford." + +msgid "New experimental signature:" +msgstr "Nueva firma experimental:" + +msgid "pgr_bellmanFord(Combinations)" +msgstr "pgr_bellmanFord(Combinaciones)" msgid "" -"So why do we care if the are not feasible? Well if the direction of an edge " -"was reversed by mistake we could generate exactly these conditions. Think " -"about a divided highway and on the north bound lane one segment got entered " -"wrong or maybe a sequence of multiple segments got entered wrong or maybe " -"this happened on a round-about. The result would be potentially a `source` " -"and/or a `sink` node." +"Bellman-Ford's algorithm, is named after Richard Bellman and Lester Ford, " +"who first published it in 1958 and 1956, respectively.It is a graph search " +"algorithm that computes shortest paths from a starting vertex " +"(``start_vid``) to an ending vertex (``end_vid``) in a graph where some of " +"the edge weights may be negative. Though it is more versatile, it is slower " +"than Dijkstra's algorithm.This implementation can be used with a directed " +"graph and an undirected graph." msgstr "" -"Así que ¿por qué nos importa si no es factibles? Si la dirección de un borde " -"se revirtió por error podríamos generar exactamente en estas condiciones. " -"Pensar en una carretera dividida y en el carril que va al norte un segmento " -"o varios segmentos fueron introducidos al revés, o tal vez esto sucedió en " -"una glorieta. El resultado sería potencialmente un nodo `source` y/o a " -"`sink` node." +"El algoritmo de Bellman-Ford, lleva el nombre de Richard Bellman y Lester " +"Ford, quienes lo publicaron por primera vez en 1958 y 1956, respectivamente. " +"Es un algoritmo de búsqueda de grafos que calcula las rutas más cortas desde " +"un vértice inicial (``start_vid``) hasta un vértice final (``end_vid``) en " +"un grafo donde algunos de los pesos de borde pueden ser números negativos. " +"Aunque es más versátil, es más lento que el algoritmo de Dijkstra/ Esta " +"implementación se puede utilizar con un grafo dirigido y un grafo no " +"dirigido." msgid "" -"So by counting the number of edges entering and exiting each node we can " -"identify both `source` and `sink` nodes so that you can look at those areas " -"of your network to make repairs and/or report the problem back to your data " -"vendor." +"Process is valid for edges with both positive and negative edge weights." msgstr "" -"Así contando el número de aristas entrantes y salientes de cada nodo podemos " -"identificar los nodos `source` y `sink`, así que usted puede mirar esas " -"áreas de su red para hacer reparaciones o informar del problema a su " -"proveedor de datos." +"El proceso es válido para aristas con grosores de arista positivos y " +"negativos." msgid "" -"pgr_analyzeOneWay(**geom_table**, **s_in_rules**, **s_out_rules**, " -"**t_in_rules**, **t_out_rules**, [**options**])" +"When the start vertex and the end vertex are the same, there is no path. The " +"agg_cost would be :math:`0`." msgstr "" -"pgr_analyzeOneWay(**geom_table**, **s_in_rules**, **s_out_rules**, " -"**t_in_rules**, **t_out_rules**, [**opciones**])" - -msgid "**options:** ``[oneway, source, target, two_way_if_null]``" -msgstr "**opcionales:** ``[oneway, source, target, two_way_if_null]``" - -msgid "RETURNS ``TEXT``" -msgstr "DEVUELVE ``TEXT``" - -msgid "s_in_rules" -msgstr "s_in_rules" - -msgid "``text[]`` source node **in** rules" -msgstr "``text[]`` reglas de **entrada** del nodo inicial" - -msgid "s_out_rules" -msgstr "s_out_rules" - -msgid "``text[]`` source node **out** rules" -msgstr "``text[]`` reglas de **salida** del nodo inicial" +"Cuando el vértice inicial y el vértice final son los mismos, no hay ruta. El " +"agg_cost sería :math:`0`." -msgid "t_in_rules" -msgstr "t_in_rules" +msgid "" +"When the start vertex and the end vertex are different, and there exists a " +"path between them without having a *negative cycle*. The agg_cost would be " +"some finite value denoting the shortest distance between them." +msgstr "" +"Cuando el vértice inicial y el vértice final son diferentes, y existe una " +"ruta entre ellos sin tener un *ciclo negativo*. El agg_cost sería un valor " +"finito que indica la distancia más corta entre ellos." -msgid "``text[]`` target node **in** rules" -msgstr "``text[]`` reglas de **entrada** del nodo final" +msgid "" +"When the start vertex and the end vertex are different, and there exists a " +"path between them, but it contains a *negative cycle*. In such case, " +"agg_cost for those vertices keep on decreasing furthermore, Hence agg_cost " +"can’t be defined for them." +msgstr "" +"Cuando el vértice inicial y el vértice final son diferentes y existe una " +"ruta entre ellos, pero contiene un *ciclo negativo*. En tal caso, agg_cost " +"para esos vértices siguen disminuyendo además, por lo tanto agg_cost no se " +"puede definir para ellos." -msgid "t_out_rules" -msgstr "t_out_rules" +msgid "" +"When the start vertex and the end vertex are different, and there is no " +"path. The agg_cost is :math:`\\infty`." +msgstr "" +"Cuando el vértice inicial y el vértice final son diferentes y no hay ruta. " +"El agg_cost es :math:`\\infty`." -msgid "``text[]`` target node **out** rules" -msgstr "``text[]`` reglas de **salida** del nodo final" +msgid "" +"For optimization purposes, any duplicated value in the `start_vids` or " +"`end_vids` are ignored." +msgstr "" +"Para fines de optimización, se ignora cualquier valor duplicado en " +"`start_vids` o `end_vids`." -msgid "oneway" -msgstr "oneway" +msgid "Running time: :math:`O(| start\\_vids | * ( V * E))`" +msgstr "Tiempo de ejecución :math:`O(| start\\_vids | * ( V * E))`" msgid "" -"``text`` oneway column name name of the network table. Default value is " -"``oneway``." +"pgr_bellmanFord(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" msgstr "" -"``text`` El nombre de la columna del sentido. El valor por defecto es " -"``oneway``." - -msgid "two_way_if_null" -msgstr "two_way_if_null" +"pgr_bellmanFord(`SQL de aristas`_, **salida**, **destino**, [``directed``])" msgid "" -"``boolean`` flag to treat oneway NULL values as bi-directional. Default " -"value is ``true``." +"pgr_bellmanFord(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" msgstr "" -"``boolean`` bandera para tratar los valores NULL de oneway como " -"bidireccional. Valor predeterminado es``true``." +"pgr_bellmanFord(`SQL de aristas`_, **salida**, **destinos**, [``directed``])" msgid "" -"It is strongly recommended to use the named notation. See :doc:" -"`pgr_createVerticesTable` or :doc:`pgr_createTopology` for examples." +"pgr_bellmanFord(`Edges SQL`_, **start vids**, **end vid**, [``directed``])" msgstr "" -"Es ampliamente recomendable usar la notación nombrada . Ver ejemplos en: :" -"doc:`pgr_createVerticesTable` o :doc:`pgr_createTopology`." +"pgr_bellmanFord(`SQL de aristas`_, **salidas**, **destino**, [``directed``])" msgid "" -"Fills completely the ``ein`` and ``eout`` columns of the vertices table." +"pgr_bellmanFord(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" msgstr "" -"Se llena completamente las columnas de la tabla de vértices ``ein`` y " -"``eout``." +"pgr_bellmanFord(`SQL de aristas`_, **salidas**, **destinos**, [``directed``])" -msgid "The names of source , target or oneway are the same." -msgstr "Los nombres de origen, destino o oneway son las mismos." +msgid "pgr_bellmanFord(`Edges SQL`_, `Combinations SQL`_, [``directed``])" +msgstr "" +"pgr_bellmanFord(`SQL de aristas`_, `SQL de combinaciones`_, [``directed``])" msgid "" -"The rules are defined as an array of text strings that if match the " -"``oneway`` value would be counted as ``true`` for the source or target " -"**in** or **out** condition." +"From vertex :math:`6` to vertices :math:`\\{ 10, 17\\}` on a **directed** " +"graph" msgstr "" -"Las reglas se definen como un conjunto de textos que si encajan con el valor " -"de ``oneway`` se contara como ``true`` para las condiciones de el origen o " -"destino **in** o **out** ." +"Desde el vértice :math:`6` a los vértices :math:`\\{ 10, 17\\}` en un grafo " +"**dirigido**" + +msgid "Using a combinations table on an **undirected** graph." +msgstr "Uso de una tabla de combinaciones en un grafo **no dirigido**." msgid "" -"The vertices table can be created with :doc:`pgr_createVerticesTable` or :" -"doc:`pgr_createTopology`" +"`Boost: Bellman Ford `__" msgstr "" -"Los vértices pueden ser creados con :doc:`pgr_createVerticesTable` o :doc:" -"`pgr_createTopology`" +"`Boost: Bellman Ford `__" + +msgid "https://en.wikipedia.org/wiki/Bellman%E2%80%93Ford_algorithm" +msgstr "https://en.wikipedia.org/wiki/Bellman%E2%80%93Ford_algorithm" + +msgid "``pgr_betweennessCentrality`` - Experimental" +msgstr "``pgr_betweennessCentrality`` - Experimental" msgid "" -"``integer`` Number of vertices in the edge_table that reference this vertex. " -"See :doc:`pgr_analyzeGgraph `." +"``pgr_betweennessCentrality`` - Calculates the relative betweenness " +"centrality using Brandes Algorithm" msgstr "" -"``integer`` Número de vértices en edge_table que hacen referencia a este " -"vértice. Consulte :doc:`pgr_analyzeGgraph `." +"``pgr_betweennessCentrality`` - Calcula la centralidad intermedia relativa " +"mediante el algoritmo de Brandes" + +msgid "Version 3.7.0" +msgstr "Versión 3.7.0" msgid "" -"``integer`` Indicator that the vertex might have a problem. See :doc:" -"`pgr_analyzeGraph `." +"The Brandes Algorithm takes advantage of the sparse graphs for evaluating " +"the betweenness centrality score of all vertices." msgstr "" -"``integer`` Indicador de que el vértice podría tener un problema. Consulte :" -"doc:`pgr_analyzeGraph `." +"El algoritmo Brandes aprovecha los grafos dispersos para evaluar la " +"puntuación de centralidad intermedia de todos los vértices." msgid "" -"``integer`` Number of vertices in the edge_table that reference this vertex " -"as incoming." +"Betweenness centrality measures the extent to which a vertex lies on the " +"shortest paths between all other pairs of vertices. Vertices with a high " +"betweenness centrality score may have considerable influence in a network by " +"the virtue of their control over the shortest paths passing between them." msgstr "" -"``integer`` número de vértices en la edge_table que hacen referencia a este " -"vértice como entrante." +"La centralidad de interrelación mide hasta qué punto un vértice se encuentra " +"en las rutas más cortas entre todos los demás pares de vértices. Los " +"vértices con una alta centralidad entre pares pueden tener una influencia " +"considerable en una red gracias a su control sobre los caminos más cortos " +"que pasan entre ellos." msgid "" -"``integer`` Number of vertices in the edge_table that reference this vertex " -"as outgoing." +"The removal of these vertices will affect the network by disrupting the it, " +"as most of the shortest paths between vertices pass through them." msgstr "" -"``integer`` número de vértices en la edge_table que hacen referencia a este " -"vértice como saliente." +"La eliminación de estos vértices afectará a la red al perturbarla, ya que la " +"mayoría de los caminos más cortos entre vértices pasan por ellos." -msgid ":doc:`pgr_analyzeGraph`" -msgstr ":doc:`pgr_analyzeGraph`" +msgid "This implementation work for both directed and undirected graphs." +msgstr "" +"Esta implementación funciona tanto para grafos dirigidos como no dirigidos." -msgid "``pgr_articulationPoints``" -msgstr "``pgr_articulationPoints``" +msgid "Running time: :math:`\\Theta(VE)`" +msgstr "Tiempo de ejecución: :math:`\\Theta(VE)`" -msgid "" -"``pgr_articulationPoints`` - Return the articulation points of an undirected " -"graph." -msgstr "" -"``pgr_articulationPoints`` - Devuelve los puntos de articulación de un grafo " -"no dirigido." +msgid "Running space: :math:`\\Theta(VE)`" +msgstr "Espacio de ejecución: :math:`\\Theta(VE)`" -msgid "Result columns change: ``seq`` is removed" -msgstr "Cambio de columnas de resultados: ``seq`` se elimina" +msgid "Throws when there are no edges in the graph" +msgstr "Lanza cuando no hay aristas en el grafo" -msgid "Version 2.5.0" -msgstr "Versión 2.5.0" +msgid "pgr_betweennessCentrality(`Edges SQL`_, [``directed``])" +msgstr "pgr_betweennessCentrality(`SQL de aristas`_, [``directed``])" + +msgid "Returns set of ``(vid, centrality)``" +msgstr "Regresa el conjunto de ``(vid, centrality)``" + +msgid "For a directed graph with edges :math:`\\{1, 2, 3, 4\\}`." +msgstr "Para un grafo dirigido con aristas :math:`\\{1, 2, 3, 4\\}`." + +msgid "Explanation" +msgstr "Explicación" + +msgid "The betweenness centrality are between parenthesis." +msgstr "La centralidad intermedia está entre paréntesis." -msgid "New **experimental** function" -msgstr "Nueva función **experimental**" +msgid "The leaf vertices have betweenness centrality :math:`0`." +msgstr "Los vértices de las hojas tienen una centralidad intermedia :math:`0`." msgid "" -"Those vertices that belong to more than one biconnected component are called " -"articulation points or, equivalently, cut vertices. Articulation points are " -"vertices whose removal would increase the number of connected components in " -"the graph. This implementation can only be used with an undirected graph." +"Betweenness centrality of vertex :math:`6` is higher than of vertex :math:" +"`10`." msgstr "" -"Los vértices que pertenecen a más de un componente biconectado se denominan " -"puntos de articulación o, equivalentemente, corte de vértices. Los puntos de " -"articulación son vértices cuya eliminación aumentaría el número de " -"componentes conectados en el grafo. Esta implementación solo se puede " -"utilizar con un grafo no dirigido." +"La centralidad de entrecruzamiento del vértice :math:`6` es mayor que la del " +"vértice :math:`10`." -msgid "Works for **undirected** graphs." -msgstr "Funciona para grafos **no dirigidos**." +msgid "Removing vertex :math:`6` will create three graph components." +msgstr "Al eliminar el vértice :math:`6` se crearían tres componentes." -msgid "``node`` ascending" -msgstr "``node`` ascendente" +msgid "Removing vertex :math:`10` will create two graph components." +msgstr "" +"Al eliminar el vértice :math:`10` se crearán dos componentes del grafo." -msgid "Running time: :math:`O(V + E)`" -msgstr "Tiempo de ejecución: :math:`O(V + E)`" +msgid "``vid``" +msgstr "``vid``" -msgid "pgr_articulationPoints(`Edges SQL`_)" -msgstr "pgr_articulationPoints(`SQL de aristas`_)" +msgid "``centrality``" +msgstr "``centrality``" -msgid "Returns set of |result-node|" -msgstr "Regresa conjunto de |result-node|" +msgid "" +"Relative betweenness centrality score of the vertex (will be in range [0,1])" +msgstr "" +"Puntuación relativa de centralidad entre vértices (estará en el rango [0,1])" -msgid "The articulation points of the graph" -msgstr "Los puntos de articulación del grafo" +msgid "" +"`Boost: betweenness centrality `_" +msgstr "" +"`Boost: Centralidad de intermediación `__" -msgid "Nodes in red are the articulation points." -msgstr "Nodos en rojo son los puntos de articulación." +msgid "``pgr_biconnectedComponents``" +msgstr "``pgr_biconnectedComponents``" msgid "" -"Boost: `Biconnected components & articulation points `__" +"``pgr_biconnectedComponents`` — Biconnected components of an undirected " +"graph." msgstr "" -"Boost: `Componentes biconectados & y puntos de articulación `__" +"``pgr_biconnectedComponents`` — Componentes biconectados de un grafo no " +"dirigido." -msgid "" -"wikipedia: `Biconnected component `__" -msgstr "" -"wikipedia: `Componentes biconnectados `__" +msgid "Result columns change:" +msgstr "Las columnas de resultados cambian:" -msgid "``pgr_bdAstar``" -msgstr "``pgr_bdAstar``" +msgid "``n_seq`` is removed" +msgstr "``n_seq`` se elimina" -msgid "``pgr_bdAstar`` — Shortest path using the bidirectional A* algorithm." -msgstr "" -"``pgr_bdAstar`` — Devuelve la ruta más corta usando el algoritmo " -"Bidireccional A*." +msgid "``seq`` changed type to ``BIGINT``" +msgstr "``seq`` cambió el tipo a ``BIGINT``'" msgid "" -"``pgr_bdAstar`` (`One to One`_) added ``start_vid`` and ``end_vid`` columns." +"The biconnected components of an undirected graph are the maximal subsets of " +"vertices such that the removal of a vertex from particular component will " +"not disconnect the component. Unlike connected components, vertices may " +"belong to multiple biconnected components. Vertices can be present in " +"multiple biconnected components, but each edge can only be contained in a " +"single biconnected component." msgstr "" -"``pgr_bdAstar`` (`Uno a Uno`_) ha añadido las columnas ``start_vid`` y " -"``end_vid``." +"Los componentes biconectados de un grafo no dirigido son los subconjuntos " +"máximos de vértices de modo que la eliminación de un vértice de un " +"componente determinado no desconectará el mismo. A diferencia de los " +"componentes conectados, los vértices pueden pertenecer a varios componentes " +"biconectados. Los vértices pueden estar presentes en varios componentes " +"biconectados, pero cada arista solo puede estar contenida en un único " +"componente biconectado." -msgid "``pgr_bdAstar`` (`One to Many`_) added ``end_vid`` column." -msgstr "``pgr_bdAstar`` (`Uno a Muchos`_) ha añadido la columna ``end_vid``." +msgid "Components are described by edges." +msgstr "Los componentes se describen mediante aristas." -msgid "``pgr_bdAstar`` (`Many to One`_) added ``start_vid`` column." -msgstr "``pgr_bdAstar`` (`Muchos a Uno`_) ha añadido la columna ``start_vid``." +msgid "``component`` ascending." +msgstr "``componente`` ascendente." -msgid "``pgr_bdAstar`` (`Combinations`_)" -msgstr "``pgr_bdAstar`` (`Combinaciones`_)" +msgid "``edge`` ascending." +msgstr "``edge`` ascendente." -msgid "``pgr_bdAstar`` (`One to Many`_)" -msgstr "``pgr_bdAstar`` (`Uno a Muchos`_)" +msgid "pgr_biconnectedComponents(`Edges SQL`_)" +msgstr "pgr_biconnectedComponents(`SQL de aristas`_)" -msgid "``pgr_bdAstar`` (`Many to One`_)" -msgstr "``pgr_bdAstar`` (`Muchos a Uno`_)" +msgid "Returns set of |result-component-E|" +msgstr "Regresa conjunto de |result-component-E|" -msgid "``pgr_bdAstar`` (`Many to Many`_)" -msgstr "``pgr_bdAstar`` (`Muchos a Muchos`_)" +msgid "The biconnected components of the graph" +msgstr "Los componentes biconectados del grafo" -msgid "Signature change on ``pgr_bdAstar`` (`One to One`_)" -msgstr "Cambio de firma en ``pgr_bdAstar`` (`Uno a Uno`_)" +msgid "``component``" +msgstr "``component``" -msgid "**Official** ``pgr_bdAstar`` (`One to One`_)" -msgstr "**Oficial** ``pgr_bdAstar`` (`Uno a Uno`_)" +msgid "Component identifier." +msgstr "Identificador de componente." -msgid "" -"The results are equivalent to the union of the results of the `pgr_bdAStar(` " -"`One to One`_ `)` on the:" -msgstr "" -"Los resultados son equivalentes a la unión de los resultados de " -"`pgr_bdAStar(` `Uno a Uno`_ `)` en:" +msgid "Has the value of the minimum edge identifier in the component." +msgstr "Contiene el identificador mínimo de arista en el componente." -msgid "pgr_bdAstar(`Edges SQL`_, **start vid**, **end vid**, [**options**])" -msgstr "" -"pgr_bdAstar(`SQL de aristas`_, **salida**, **destino**, [**opciones**])" +msgid "Identifier of the edge that belongs to the ``component``." +msgstr "Identificador de arista que pertenece a ``component``." -msgid "pgr_bdAstar(`Edges SQL`_, **start vid**, **end vids**, [**options**])" -msgstr "" -"pgr_bdAstar(`SQL de aristas`_, **salida**, **destinos**, [**opciones**])" +msgid "``pgr_binaryBreadthFirstSearch`` - Experimental" +msgstr "``pgr_binaryBreadthFirstSearch`` - Experimental" -msgid "pgr_bdAstar(`Edges SQL`_, **start vids**, **end vid**, [**options**])" +msgid "" +"``pgr_binaryBreadthFirstSearch`` — Returns the shortest path in a binary " +"graph." msgstr "" -"pgr_bdAstar(`SQL de aristas`_, **salidas**, **destino**, [**opciones**])" +"``pgr_binaryBreadthFirstSearch`` - Devuelve el camino más corto en un grafo " +"binario." -msgid "pgr_bdAstar(`Edges SQL`_, **start vids**, **end vids**, [**options**])" +msgid "" +"Any graph whose edge-weights belongs to the set {0,X}, where 'X' is any non-" +"negative integer, is termed as a 'binary graph'." msgstr "" -"pgr_bdAstar(`SQL de aristas`_, **salidas**, **destinos**, [**opciones**])" +"Un grafo cuyos pesos de las aristas pertenece al conjunto {0, X}, donde 'X' " +"es un entero no negativo, se le llama 'grafo binario'." -msgid "pgr_bdAstar(`Edges SQL`_, `Combinations SQL`_, [**options**])" +msgid "pgr_binaryBreadthFirstSearch(Combinations)" +msgstr "pgr_binaryBreadthFirstSearch(Combinaciones)" + +msgid "" +"It is well-known that the shortest paths between a single source and all " +"other vertices can be found using Breadth First Search in :math:`O(|E|)` in " +"an unweighted graph, i.e. the distance is the minimal number of edges that " +"you need to traverse from the source to another vertex. We can interpret " +"such a graph also as a weighted graph, where every edge has the weight :math:" +"`1`. If not alledges in graph have the same weight, that we need a more " +"general algorithm, like Dijkstra's Algorithm which runs in :math:`O(|E|log|" +"V|)` time." msgstr "" -"pgr_bdAstar(`SQL de aristas`_, `SQL de combinaciones`_, [**opciones**])" +"Es bien sabido que los caminos más cortos entre un único origen y todos los " +"demás vértices se pueden encontrar utilizando la búsqueda rápida en :math:" +"`O(|E|)` en un grafo no ponderado, es decir, la distancia es el número " +"mínimo de aristas que hay que recorrer desde el origen hasta otro vértice. " +"Podemos interpretar este grafo también como un grafo ponderado, en el que " +"cada arista tiene el peso :math:`1`. Si no todas las aristas del grafo " +"tienen el mismo peso, necesitaremos un algoritmo más general, como el " +"Algoritmo de Dijkstra, que se ejecuta en tiempo :math:`O(|E|log|V|)`." -msgid "pgr_bdAstarCost" -msgstr "pgr_bdAstarCost" +msgid "" +"However if the weights are more constrained, we can use a faster algorithm. " +"This algorithm, termed as 'Binary Breadth First Search' as well as '0-1 " +"BFS', is a variation of the standard Breadth First Search problem to solve " +"the SSSP (single-source shortest path) problem in :math:`O(|E|)`, if the " +"weights of each edge belongs to the set {0,X}, where 'X' is any non-negative " +"real integer." +msgstr "" +"Sin embargo, si los pesos están más restringidos, podemos usar un algoritmo " +"más rápido. Este algoritmo, llamado 'búsqueda binaria de primero " +"profundidad' así como '0-1 BFS', es una variación del problema estándar de " +"búsqueda de primero profundidad para resolver el problema SSSP (ruta más " +"corta de una sola fuente) en :math:`O(|E|)`, si los pesos de cada arista " +"pertenecen al conjunto de caracteres de {0,X}, donde 'X' es cualquier entero " +"no negativo." msgid "" -"``pgr_bdAstarCost`` - Total cost of the shortest path using the " -"bidirectional A* algorithm." +"Process is done only on 'binary graphs'. ('Binary Graph': Any graph whose " +"edge-weights belongs to the set {0,X}, where 'X' is any non-negative real " +"integer.)" msgstr "" -"``pgr_bdAstarCost`` - Coste total del camino más corto utilizando el " -"algoritmo bidireccional A*." +"El proceso se realiza sólo en 'grafos binarios'. ('Grafo binario': Cualquier " +"grafo cuyos pesos de aristas pertenezcan al conjunto {0, X}, donde 'X' es " +"cualquier entero real no negativo.)" -msgid "``pgr_bdAstarCost`` (`Combinations`_)" -msgstr "``pgr_bdAstarCost`` (`Combinaciones`_)" +msgid "Running time: :math:`O(| start\\_vids | * |E|)`" +msgstr "Tiempo de ejecución: :math:`O(| start\\_vids | * |E|)`" msgid "" -"The ``pgr_bdAstarCost`` function sumarizes of the cost of the shortest path " -"using the bidirectional A* algorithm." +"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vid**, **end vid**, " +"[``directed``])" msgstr "" -"La función ``pgr_bdAstarCost`` suma el coste del camino más corto utilizando " -"el algoritmo bidireccional A*." +"pgr_binaryBreadthFirstSearch(`SQL de aristas`_, **salida**, **destino**, " +"[``directed``])" msgid "" -"pgr_bdAstarCost(`Edges SQL`_, **start vid**, **end vid**, [**options**])" +"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vid**, **end vids**, " +"[``directed``])" msgstr "" -"pgr_bdAstarCost(`SQL de aristas`_, **salida**, **destino**, [**opciones**])" +"pgr_binaryBreadthFirstSearch(`SQL de aristas`_, **salida**, **destinos**, " +"[``directed``])" msgid "" -"pgr_bdAstarCost(`Edges SQL`_, **start vid**, **end vids**, [**options**])" +"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vids**, **end vid**, " +"[``directed``])" msgstr "" -"pgr_bdAstarCost(`SQL de aristas`_, **salida**, **destinos**, [**opciones**])" +"pgr_binaryBreadthFirstSearch(`SQL de aristas`_, **salidas**, **destino**, " +"[``directed``])" msgid "" -"pgr_bdAstarCost(`Edges SQL`_, **start vids**, **end vid**, [**options**])" +"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vids**, **end vids**, " +"[``directed``])" msgstr "" -"pgr_bdAstarCost(`SQL de aristas`_, **salidas**, **destino**, [**opciones**])" +"pgr_binaryBreadthFirstSearch(`SQL de aristas`_, **salidas**, **destinos**, " +"[``directed``])" msgid "" -"pgr_bdAstarCost(`Edges SQL`_, **start vids**, **end vids**, [**options**])" +"pgr_binaryBreadthFirstSearch(`Edges SQL`_, `Combinations SQL`_, " +"[``directed``])" msgstr "" -"pgr_bdAstarCost(`SQL de aristas`_, **salidas**, **destinos**, [**opciones**])" +"pgr_binaryBreadthFirstSearch(`SQL de aristas`_, `SQL de combinaciones`_, " +"[``directed``])" -msgid "pgr_bdAstarCost(`Edges SQL`_, `Combinations SQL`_, [**options**])" +msgid "" +"**Note:** Using the :doc:`sampledata` Network as all weights are same (i.e :" +"math:`1``)" msgstr "" -"pgr_bdAstarCost(`SQL de aristas`_, `SQL de combinaciones`_, [**opciones**])" - -msgid "``pgr_bdAstarCostMatrix``" -msgstr "``pgr_bdAstarCostMatrix``" +"**Nota:** Usando la red de :doc:`sampledata` como todos los pesos son los " +"mismos (i.e :math:`1``)" msgid "" -"``pgr_bdAstarCostMatrix`` - Calculates the a cost matrix using :doc:" -"`pgr_aStar`." +"`Boost: Breadth First Search `__" msgstr "" -"``pgr_bdAstarCostMatrix`` - Calcula la matriz de costes utilizando :doc:" -"`pgr_aStar`." - -msgid "Using internaly the :doc:`pgr_bdAstar` algorithm" -msgstr "Usando internamente el algoritmo :doc:`pgr_bdAstar`" - -msgid "pgr_bdAstarCostMatrix(`Edges SQL`_, **start vids**, [**options**])" -msgstr "pgr_bdAstarCostMatrix(`SQL de aristas`_, **salidas**, [**opciones**])" +"`Boost: Primera búsqueda en amplitud `__" -msgid "``pgr_bdDijkstra``" -msgstr "``pgr_bdDijkstra``" +msgid "https://cp-algorithms.com/graph/01_bfs.html" +msgstr "https://cp-algorithms.com/graph/01_bfs.html" msgid "" -"``pgr_bdDijkstra`` — Returns the shortest path using Bidirectional Dijkstra " -"algorithm." +"https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm#Specialized_variants" msgstr "" -"``pgr_bdDijkstra`` - Devuelve el camino más corto utilizando el algoritmo " -"Bidireccional de Dijkstra." - -msgid "pgr_bdDijkstra(`Combinations`_)" -msgstr "pgr_bdDijkstra(`Combinaciones`_)" - -msgid "New **Proposed** functions:" -msgstr "Nuevas funciones **Propuestas**:" - -msgid "``pgr_bdDijkstra`` (`One to Many`_)" -msgstr "``pgr_bdDijkstra`` (`Uno a Muchos`_)" - -msgid "``pgr_bdDijkstra`` (`Many to One`_)" -msgstr "``pgr_bdDijkstra`` (`Muchos a Uno`_)" - -msgid "``pgr_bdDijkstra`` (`Many to Many`_)" -msgstr "``pgr_bdDijkstra`` (`Muchos a Muchos`_)" - -msgid "Signature change on ``pgr_bdDijsktra`` (`One to One`_)" -msgstr "La firma cambió en ``pgr_bdDijsktra`` (`Uno a Uno`_)" +"https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm#Specialized_variants" -msgid "**Official** ``pgr_bdDijkstra`` (`One to One`_)" -msgstr "**Oficial** ``pgr_bdDijkstra`` (`Uno a Uno`_)" +msgid "``pgr_bipartite`` - Experimental" +msgstr "``pgr_bipartite`` - Experimental" msgid "" -"pgr_bdDijkstra(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" +"``pgr_bipartite`` — Disjoint sets of vertices such that no two vertices " +"within the same set are adjacent." msgstr "" -"pgr_bdDijkstra(`SQL de aristas`_, **salida**, **destino**, [``directed``])" +"``pgr_bipartite`` — Conjuntos disjuntos tal que ningun par de vertices en el " +"mismo conjunto son adjacentes." msgid "" -"pgr_bdDijkstra(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" +"A bipartite graph is a graph with two sets of vertices which are connected " +"to each other, but not within themselves. A bipartite graph is possible if " +"the graph coloring is possible using two colors such that vertices in a set " +"are colored with the same color." msgstr "" -"pgr_bdDijkstra(`SQL de aristas`_, **salida**, **destinos**, [``directed``])" +"Un grafo bipartito es un grafo con dos conjuntos de vértices que están " +"conectados entre sí, pero no dentro de sí mismos. Un gráfico bipartito es " +"posible si el color del gráfico es posible utilizando dos colores, de modo " +"que los vértices de un conjunto se colorean con el mismo color." -msgid "" -"pgr_bdDijkstra(`Edges SQL`_, **start vids**, **end vid**, [``directed``])" -msgstr "" -"pgr_bdDijkstra(`SQL de aristas`_, **salidas**, **destino**, [``directed``])" +msgid "The algorithm works in undirected graph only." +msgstr "El algoritmo solo funciona en un grafo no dirigido." + +msgid "The returned values are not ordered." +msgstr "Los valores devueltos no están ordenados." msgid "" -"pgr_bdDijkstra(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" +"The algorithm checks graph is bipartite or not. If it is bipartite then it " +"returns the node along with two colors `0` and `1` which represents two " +"different sets." msgstr "" -"pgr_bdDijkstra(`SQL de aristas`_, **salidas**, **destinos**, [``directed``])" +"El algoritmo comprueba si el grafo es bipartito o no. Si es bipartito " +"entonces devuelve el nodo junto con dos colores `0` y `1` que representan " +"dos conjuntos diferentes." -msgid "pgr_bdDijkstra(`Edges SQL`_, `Combinations SQL`_, [``directed``])" -msgstr "" -"pgr_bdDijkstra(`SQL de aristas`_, `SQL de combinaciones`_, [``directed``])" +msgid "If graph is not bipartite then algorithm returns empty set." +msgstr "Si el grafo no es bipartito, el algoritmo devuelve un conjunto vacío." -msgid "Returns set of |old-generic-result|" -msgstr "Regresa el conjunto de |old-generic-result|" +msgid "pgr_bipartite(`Edges SQL`_)" +msgstr "pgr_bipartite(`SQL de aristas`_)" -msgid "Returns set of |result-1-1|" -msgstr "Regresa el conjunto de |result-1-1|" +msgid "Returns set of |result-node-color|" +msgstr "Regresa el conjunto de |result-node-color|" -msgid "From vertex :math:`6` to vertex :math:`10` on a **directed** graph" -msgstr "Del vértice :math:`6` al vértice :math:`10` en un grafo **dirigido**" +msgid "When the graph is bipartite" +msgstr "Cuando el grafo es bi-partido" -msgid "Returns set of |result-1-m|" -msgstr "Regresa el conjunto de |result-1-m|" +msgid "Additional Example" +msgstr "Ejemplo Adicional" + +msgid "The odd length cyclic graph can not be bipartite." +msgstr "El gráfico cíclico de longitud impar no puede ser bipartito." msgid "" -"From vertex :math:`6` to vertices :math:`\\{10, 17\\}` on a **directed** " -"graph" +"The edge :math:`5 \\rightarrow 1` will make subgraph with vertices :math:" +"`\\{1, 3, 7, 6, 5\\}` an odd length cyclic graph, as the cycle has 5 " +"vertices." msgstr "" -"Del vértice :math:`6` a los vértices :math:`\\{10, 17\\}` en un grafo " -"**dirigido**" +"La arista :math:`5 \\rightarrow 1` hace que el sub-grafo con vértices:math:" +"`\\{1, 3, 7, 6, 5\\}` se un grafo de ciclo impar, ya que ciclo tiene 5 " +"vértices." -msgid "Returns set of |result-m-1|" -msgstr "Regresa el conjunto de |result-m-1|" +msgid "Edges in blue represent odd length cycle subgraph." +msgstr "Aristas en azul representan un grafo de ciclo impar." msgid "" -"From vertices :math:`\\{6, 1\\}` to vertex :math:`17` on a **directed** graph" +"`Boost: is_bipartite `__" msgstr "" -"De los vértices :math:`\\{6, 1\\}` al vertice :math:`17` en un grafo " -"**dirigido**" +"`Boost: es bipartido `__" msgid "" -"From vertices :math:`\\{6, 1\\}` to vertices :math:`\\{10, 17\\}` on an " -"**undirected** graph" +"`Wikipedia: bipartite graph `__" msgstr "" -"De los vértices :math:`\\{6, 1\\}` a los vértices :math:`\\{10, 17\\}` en un " -"grafo **no dirigido**" +"`Wikipedia: grafo bipartito `__" -msgid "Using a combinations table on an **undirected** graph" -msgstr "Usando una tabla de combinaciones en un grafo **no dirigido**" +msgid "``pgr_boykovKolmogorov``" +msgstr "``pgr_boykovKolmogorov``" msgid "" -"https://www.cs.princeton.edu/courses/archive/spr06/cos423/Handouts/" -"EPP%20shortest%20path%20algorithms.pdf" +"``pgr_boykovKolmogorov`` — Calculates the flow on the graph edges that " +"maximizes the flow from the sources to the targets using Boykov Kolmogorov " +"algorithm." msgstr "" -"https://www.cs.princeton.edu/courses/archive/spr06/cos423/Handouts/" -"EPP%20shortest%20path%20algorithms.pdf" +"``pgr_boykovKolmogorov`` — Calcula el flujo en las aristas del grafo que " +"maximiza el flujo de las fuentes a los objetivos utilizando el algoritmo " +"Boykov Kolmogorov." -msgid "https://en.wikipedia.org/wiki/Bidirectional_search" -msgstr "https://en.wikipedia.org/wiki/Bidirectional_search" +msgid "Renamed from ``pgr_maxFlowBoykovKolmogorov``" +msgstr "Renombrado de ``pgr_maxFlowBoykovKolmogorov``" -msgid "``pgr_bdDijkstraCost``" -msgstr "``pgr_bdDijkstraCost``" +msgid "Function promoted to proposed." +msgstr "Función promovida a propuesta." -msgid "" -"``pgr_bdDijkstraCost`` — Returns the shortest path's cost using " -"Bidirectional Dijkstra algorithm." -msgstr "" -"``pgr_bdDijkstraCost`` - Devuelve el coste del camino más corto utilizando " -"el algoritmo Bidireccional de Dijkstra." +msgid "Running time: Polynomial" +msgstr "Tiempo de ejecución: Polinomio" -msgid "``pgr_bdDijkstraCost`` (`Combinations`_)" -msgstr "``pgr_bdDijkstraCost`` (`Combinaciones`_)" +msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vid**, **end vid**)" +msgstr "pgr_boykovKolmogorov(`SQL de aristas`_, **salida**, **destino**)" -msgid "" -"The ``pgr_bdDijkstraCost`` function sumarizes of the cost of the shortest " -"path using the bidirectional Dijkstra Algorithm." -msgstr "" -"La función ``pgr_bdDijkstraCost`` sumarisa el costo de la ruta más corta " -"utilizando el algoritmo de bidirecional de Dijkstra." +msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vid**, **end vids**)" +msgstr "pgr_boykovKolmogorov(`SQL de aristas`_, **salida**, **destinos**)" -msgid "" -"pgr_bdDijkstraCost(`Edges SQL`_, **start vid**, **end vid** , [``directed``])" -msgstr "" -"pgr_bdDijkstraCost(`SQL de aristas`_, **salida**, **destino**, " -"[``directed``])" +msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vids**, **end vid**)" +msgstr "pgr_boykovKolmogorov(`SQL de aristas`_, **salidas**, **destino**)" -msgid "" -"pgr_bdDijkstraCost(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" -msgstr "" -"pgr_bdDijkstraCost(`SQL de aristas`_, **salida**, **destinos**, " -"[``directed``])" +msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vids**, **end vids**)" +msgstr "pgr_boykovKolmogorov(`SQL de aristas`_, **salidas**, **destinos**)" -msgid "" -"pgr_bdDijkstraCost(`Edges SQL`_, **start vids**, **end vid** , " -"[``directed``])" -msgstr "" -"pgr_bdDijkstraCost(`SQL de aristas`_, **salidas**, **destino**, " -"[``directed``])" +msgid "pgr_boykovKolmogorov(`Edges SQL`_, `Combinations SQL`_)" +msgstr "pgr_boykovKolmogorov(`SQL de aristas`_, `SQL de combinaciones`_)" -msgid "" -"pgr_bdDijkstraCost(`Edges SQL`_, **start vids**, **end vids**, " -"[``directed``])" -msgstr "" -"pgr_bdDijkstraCost(`SQL de aristas`_, **salidas**, **destinos**, " -"[``directed``])" +msgid "Returns set of |result-flow|" +msgstr "Regresa el conjunto de |result-flow|" -msgid "pgr_bdDijkstraCost(`Edges SQL`_, `Combinations SQL`_, [ ``directed``])" -msgstr "" -"pgr_bdDijkstraCost(`SQL de aristas`_, `SQL de combinaciones`_, " -"[ ``directed``])" +msgid "From vertex :math:`11` to vertex :math:`12`" +msgstr "Del vértice :math:`11` al vértice :math:`12`" -msgid "pgr_bdDijkstraCost(`Edges SQL`_, `Combinations SQL`_, [``directed``])" -msgstr "" -"pgr_bdDijkstraCost(`SQL de aristas`_, `SQL de combinaciones`_, " -"[``directed``])" +msgid "From vertex :math:`11` to vertices :math:`\\{5, 10, 12\\}`" +msgstr "Desde el vértice :math:`11` a los vértices :math:`\\{5, 10, 12\\}`" -msgid "``pgr_bdDijkstraCostMatrix``" -msgstr "``pgr_bdDijkstraCostMatrix``" +msgid "From vertices :math:`\\{11, 3, 17\\}` to vertex :math:`12`" +msgstr "De los vértices vertices :math:`\\{11, 3, 17\\}` al vértice :math:`12`" msgid "" -"``pgr_bdDijkstraCostMatrix`` - Calculates a cost matrix using :doc:" -"`pgr_bdDijkstra`." +"From vertices :math:`\\{11, 3, 17\\}` to vertices :math:`\\{5, 10, 12\\}`" msgstr "" -"``pgr_bdDijkstraCostMatrix`` - Calcula la matriz de costes utilizando :doc:" -"`pgr_bdDijkstra`." +"De los vértices :math:`\\{11, 3, 17\\}` a los vértices :math:`\\{5, 10, 12\\}" +"`" msgid "" -"Using bidirectional Dijkstra algorithm, calculate and return a cost matrix." -msgstr "" -"Usando el algoritmo bidireccional de Dijkstra, calcular y regresar una " -"matriz de costos." - -msgid "pgr_bdDijkstraCostMatrix(`Edges SQL`_, **start vids**, [``directed``])" +"Using a combinations table, equivalent to calculating result from vertices :" +"math:`\\{5, 6\\}` to vertices :math:`\\{10, 15, 14\\}`." msgstr "" -"pgr_bdDijkstraCostMatrix(`SQL de aristas`_, **salidas**, [``directed``])" +"Usando una tabla de combinaciones, equivalente a calcular el resultado de " +"los vértices :math:`\\{5, 6\\}` a los vértices :math:`\\{10, 15, 14\\}`." msgid "" -"Symmetric cost matrix for vertices :math:`\\{5, 6, 10, 15\\}` on an " -"**undirected** graph" +"`Boost: Boykov Kolmogorov max flow `__" msgstr "" -"Matriz de costos simétrica para vértices :math:`\\{5, 6, 10, 15\\}` en un " -"grafo **no dirigido**" +"`Boost: Flujo máximo Boykov Kolmogorov `__" -msgid "Use with :doc:`pgr_TSP`." -msgstr "Usar con :doc:`pgr_TSP`." +msgid "``pgr_breadthFirstSearch`` - Experimental" +msgstr "``pgr_breadthFirstSearch`` - Experimental" -msgid "``pgr_bellmanFord - Experimental``" -msgstr "``pgr_bellmanFord`` - Experimental" +msgid "" +"``pgr_breadthFirstSearch`` — Returns the traversal order(s) using Breadth " +"First Search algorithm." +msgstr "" +"``pgr_breadthFirstSearch`` — Devuelve los orden(es) transversales mediante " +"el algoritmo Breadth First Search." -msgid "``pgr_bellmanFord`` — Shortest path using Bellman-Ford algorithm." +msgid "" +"Provides the Breadth First Search traversal order from a root vertex to a " +"particular depth." msgstr "" -"``pgr_bellmanFord`` - Camino más corto utilizando el algoritmo de Bellman-" -"Ford." +"Proporciona el orden transversal de Primera Búsqueda de Amplitud desde un " +"vértice raíz hasta una profundidad particular." -msgid "New **experimental** signature:" -msgstr "Nueva firma **experimental**:" +msgid "The implementation will work on any type of graph." +msgstr "La implementación funcionará en cualquier tipo de grafo." -msgid "``pgr_bellmanFord`` (`Combinations`_)" -msgstr "``pgr_bellmanFord`` (`Combinaciones`_)" +msgid "" +"Provides the Breadth First Search traversal order from a source node to a " +"target depth level." +msgstr "" +"Proporciona el orden de recorrido de Búsqueda de Primero Amplitud desde un " +"nodo de origen a un nivel de profundidad objetivo." -msgid "New **experimental** signatures:" -msgstr "Nuevas firmas **experimental**:" +msgid "Running time: :math:`O(E + V)`" +msgstr "Tiempo de ejecución: :math:`O(E + V)`" -msgid "``pgr_bellmanFord`` (`One to One`_)" -msgstr "``pgr_bellmanFord`` (`Uno a Uno`_)" +msgid "pgr_breadthFirstSearch(`Edges SQL`_, **root vid**, [**options**])" +msgstr "pgr_breadthFirstSearch(`SQL de aristas`_, **raíz**, [**options**])" -msgid "``pgr_bellmanFord`` (`One to Many`_)" -msgstr "``pgr_bellmanFord`` (`Uno a Muchos`_)" +msgid "pgr_breadthFirstSearch(`Edges SQL`_, **root vids**, [**options**])" +msgstr "pgr_breadthFirstSearch(`SQL de aristas`_, **raices**, [**options**])" -msgid "``pgr_bellmanFord`` (`Many to One`_)" -msgstr "``pgr_bellmanFord`` (`Muchos a uno`_)" +msgid "**options:** ``[max_depth, directed]``" +msgstr "**opcionales:** ``[max_depth, directed]``" -msgid "``pgr_bellmanFord`` (`Many to Many`_)" -msgstr "``pgr_bellmanFord`` (`Muchos a Muchos`_)" +msgid "Returns set of |result-bfs|" +msgstr "Regresa el conjunto de |result-bfs|" msgid "" -"Bellman-Ford's algorithm, is named after Richard Bellman and Lester Ford, " -"who first published it in 1958 and 1956, respectively.It is a graph search " -"algorithm that computes shortest paths from a starting vertex " -"(``start_vid``) to an ending vertex (``end_vid``) in a graph where some of " -"the edge weights may be negative. Though it is more versatile, it is slower " -"than Dijkstra's algorithm.This implementation can be used with a directed " -"graph and an undirected graph." +"From root vertex :math:`6` on a **directed** graph with edges in ascending " +"order of ``id``" msgstr "" -"El algoritmo de Bellman-Ford, lleva el nombre de Richard Bellman y Lester " -"Ford, quienes lo publicaron por primera vez en 1958 y 1956, respectivamente. " -"Es un algoritmo de búsqueda de grafos que calcula las rutas más cortas desde " -"un vértice inicial (``start_vid``) hasta un vértice final (``end_vid``) en " -"un grafo donde algunos de los pesos de borde pueden ser números negativos. " -"Aunque es más versátil, es más lento que el algoritmo de Dijkstra/ Esta " -"implementación se puede utilizar con un grafo dirigido y un grafo no " -"dirigido." +"Desde el vértice raíz :math:`6` en un grafo **dirigido** con aristas en " +"orden ascendente de ``id``" msgid "" -"Process is valid for edges with both positive and negative edge weights." +"From root vertices :math:`\\{12, 6\\}` on an **undirected** graph with " +"**depth** :math:`<= 2` and edges in ascending order of ``id``" msgstr "" -"El proceso es válido para aristas con grosores de arista positivos y " -"negativos." +"A partir de los vértices de la raíz :math:`\\{12, 6\\}` en un grafo **no " +"dirigido** con **profundidad** :math:`<= 2` y aristas ordenadas " +"ascendentemente in términos de ``id``" -msgid "" -"When the start vertex and the end vertex are the same, there is no path. The " -"agg_cost would be :math:`0`." -msgstr "" -"Cuando el vértice inicial y el vértice final son los mismos, no hay ruta. El " -"agg_cost sería :math:`0`." +msgid "DFS optional parameters" +msgstr "Parámetros opcionales de DFS" -msgid "" -"When the start vertex and the end vertex are different, and there exists a " -"path between them without having a *negative cycle*. The agg_cost would be " -"some finite value denoting the shortest distance between them." -msgstr "" -"Cuando el vértice inicial y el vértice final son diferentes, y existe una " -"ruta entre ellos sin tener un *ciclo negativo*. El agg_cost sería un valor " -"finito que indica la distancia más corta entre ellos." +msgid "Same as `Single vertex`_ with edges in ascending order of ``id``." +msgstr "Igual que `Vértice único`_ con aritas en orden ascendente de ``id``." -msgid "" -"When the start vertex and the end vertex are different, and there exists a " -"path between them, but it contains a *negative cycle*. In such case, " -"agg_cost for those vertices keep on decreasing furthermore, Hence agg_cost " -"can’t be defined for them." -msgstr "" -"Cuando el vértice inicial y el vértice final son diferentes y existe una " -"ruta entre ellos, pero contiene un *ciclo negativo*. En tal caso, agg_cost " -"para esos vértices siguen disminuyendo además, por lo tanto agg_cost no se " -"puede definir para ellos." +msgid "Same as `Single vertex`_ with edges in descending order of ``id``." +msgstr "Igual que `Vértice único`_ con aritas en orden descendente de ``id``." -msgid "" -"When the start vertex and the end vertex are different, and there is no " -"path. The agg_cost is :math:`\\infty`." -msgstr "" -"Cuando el vértice inicial y el vértice final son diferentes y no hay ruta. " -"El agg_cost es :math:`\\infty`." +msgid "The resulting traversal is different." +msgstr "El recorrido resultante es diferente." msgid "" -"For optimization purposes, any duplicated value in the `start_vids` or " -"`end_vids` are ignored." +"The left image shows the result with ascending order of ids and the right " +"image shows with descending order of the edge identifiers." msgstr "" -"Para fines de optimización, se ignora cualquier valor duplicado en " -"`start_vids` o `end_vids`." +"La imagen izquierda muestra el resultado con el orden ascendente de los ids " +"y la imagen derecha muestra con el orden descendente de los identificadores " +"de aristas." -msgid "Running time: :math:`O(| start\\_vids | * ( V * E))`" -msgstr "Tiempo de ejecución :math:`O(| start\\_vids | * ( V * E))`" +msgid "|ascending| |descending|" +msgstr "|ascending| |descending|" -msgid "" -"pgr_bellmanFord(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" -msgstr "" -"pgr_bellmanFord(`SQL de aristas`_, **salida**, **destino**, [``directed``])" +msgid "ascending" +msgstr "ascendente" -msgid "" -"pgr_bellmanFord(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" -msgstr "" -"pgr_bellmanFord(`SQL de aristas`_, **salida**, **destinos**, [``directed``])" +msgid "descending" +msgstr "descendente" msgid "" -"pgr_bellmanFord(`Edges SQL`_, **start vids**, **end vid**, [``directed``])" +"`Wikipedia: Breadth First Search algorithm `__" msgstr "" -"pgr_bellmanFord(`SQL de aristas`_, **salidas**, **destino**, [``directed``])" +"`Wikipedia: Breadth First Search `__" -msgid "" -"pgr_bellmanFord(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" -msgstr "" -"pgr_bellmanFord(`SQL de aristas`_, **salidas**, **destinos**, [``directed``])" +msgid "``pgr_bridges``" +msgstr "``pgr_bridges``" -msgid "pgr_bellmanFord(`Edges SQL`_, `Combinations SQL`_, [``directed``])" -msgstr "" -"pgr_bellmanFord(`SQL de aristas`_, `SQL de combinaciones`_, [``directed``])" +msgid "``pgr_bridges`` - Return the bridges of an undirected graph." +msgstr "``pgr_bridges`` - Calcula los puentes de un grafo no dirigido." msgid "" -"From vertex :math:`6` to vertices :math:`\\{ 10, 17\\}` on a **directed** " -"graph" +"A bridge is an edge of an undirected graph whose deletion increases its " +"number of connected components. This implementation can only be used with an " +"undirected graph." msgstr "" -"Desde el vértice :math:`6` a los vértices :math:`\\{ 10, 17\\}` en un grafo " -"**dirigido**" +"Un puente es un borde de un grafo no dirigido cuya eliminación aumenta su " +"número de componentes conectados. Esta implementación solo se puede utilizar " +"con un grafo no dirigido." -msgid "Using a combinations table on an **undirected** graph." -msgstr "Uso de una tabla de combinaciones en un grafo **no dirigido**." +msgid "``edge`` ascending" +msgstr "``edge`` ascendente" -msgid "https://en.wikipedia.org/wiki/Bellman%E2%80%93Ford_algorithm" -msgstr "https://en.wikipedia.org/wiki/Bellman%E2%80%93Ford_algorithm" +msgid "Running time: :math:`O(E * (V + E))`" +msgstr "Tiempo de ejecución: :math:`O(E * (V + E))`" -msgid "``pgr_betweennessCentrality``" -msgstr "``pgr_betweennessCentrality``" +msgid "pgr_bridges(`Edges SQL`_)" +msgstr "pgr_bridges(`SQL de aristas`_)" -msgid "" -"``pgr_betweennessCentrality`` - Calculates the relative betweeness " -"centrality using Brandes Algorithm" -msgstr "" -"``pgr_betweennessCentrality`` - Calcula la centralidad intermedia relativa " -"mediante el algoritmo de Brandes" +msgid "Returns set of |result-edge|" +msgstr "Regresa conjunto de |result-edge|" -msgid "Version 3.7.0" -msgstr "Versión 3.7.0" +msgid "The bridges of the graph" +msgstr "Los puentes del grafo" -msgid "New **experimental** function:" -msgstr "Nueva función **experimental**:" +msgid "Identifier of the edge that is a bridge." +msgstr "Identificador del borde que es un puente." -msgid "" -"The Brandes Algorithm takes advantage of the sparse graphs for evaluating " -"the betweenness centrality score of all vertices." -msgstr "" -"El algoritmo Brandes aprovecha los grafos dispersos para evaluar la " -"puntuación de centralidad intermedia de todos los vértices." +msgid "https://en.wikipedia.org/wiki/Bridge_%28graph_theory%29" +msgstr "https://en.wikipedia.org/wiki/Bridge_%28graph_theory%29" msgid "" -"Betweenness centrality measures the extent to which a vertex lies on the " -"shortest paths between all other pairs of vertices. Vertices with a high " -"betweenness centrality score may have considerable influence in a network by " -"the virtue of their control over the shortest paths passing between them." +"`Boost: Connected components `__" msgstr "" -"La centralidad de interrelación mide hasta qué punto un vértice se encuentra " -"en las rutas más cortas entre todos los demás pares de vértices. Los " -"vértices con una alta centralidad entre pares pueden tener una influencia " -"considerable en una red gracias a su control sobre los caminos más cortos " -"que pasan entre ellos." +"`Boost: Componentes conectados `__" -msgid "" -"The removal of these vertices will affect the network by disrupting the it, " -"as most of the shortest paths between vertices pass through them." -msgstr "" -"La eliminación de estos vértices afectará a la red al perturbarla, ya que la " -"mayoría de los caminos más cortos entre vértices pasan por ellos." +msgid "``pgr_chinesePostman`` - Experimental" +msgstr "``pgr_chinesePostman`` - Experimental" -msgid "This implementation work for both directed and undirected graphs." +msgid "" +"``pgr_chinesePostman`` — Calculates the shortest circuit path which contains " +"every edge in a directed graph and starts and ends on the same vertex." msgstr "" -"Esta implementación funciona tanto para grafos dirigidos como no dirigidos." - -msgid "Running time: :math:`\\Theta(VE)`" -msgstr "Tiempo de ejecución: :math:`\\Theta(VE)`" +"``pgr_chinesePostman`` — Calcula la ruta de circuito más corta que contiene " +"cada arista en un grafo dirigido y comienza y termina en el mismo vértice." -msgid "Running space: :math:`\\Theta(VE)`" -msgstr "Espacio de ejecución: :math:`\\Theta(VE)`" +msgid "Returns ``EMPTY SET`` on a disconnected graph" +msgstr "Devuelve ``EMPTY SET`` en un grafo desconectado" -msgid "Throws when there are no edges in the graph" -msgstr "Lanza cuando no hay aristas en el grafo" +msgid "pgr_chinesePostman(`Edges SQL`_)" +msgstr "pgr_chinesePostman(`SQL de aristas`_)" -msgid "pgr_betweennessCentrality(`Edges SQL`_, [``directed``])" -msgstr "pgr_betweennessCentrality(`SQL de aristas`_, [``directed``])" +msgid "Returns set of |result-1-1-no-seq|" +msgstr "Regresa el conjunto de |result-1-1-no-seq|" -msgid "Returns set of ``(vid, centrality)``" -msgstr "Regresa el conjunto de ``(vid, centrality)``" +msgid "Returns set of ``(seq, node, edge, cost, agg_cost)``" +msgstr "Devuelve un conjunto de ``(seq, node, edge, cost, agg_cost)``" -msgid "For a directed graph with edges :math:`\\{1, 2, 3, 4\\}`." -msgstr "Para un grafo dirigido con aristas :math:`\\{1, 2, 3, 4\\}`." +msgid "Sequential value starting from ``1``" +msgstr "Valor secuencial a partir de ``1``" -msgid "Explanation" -msgstr "Explicación" +msgid "" +"Identifier of the edge used to go from ``node`` to the next node in the path " +"sequence. ``-1`` for the last node of the path." +msgstr "" +"Identificador del borde utilizado para ir del ``nodo`` al siguiente nodo de " +"la secuencia de ruta. ``-1`` para el último nodo de la ruta." -msgid "The betweenness centrality are between parenthesis." -msgstr "La centralidad intermedia está entre paréntesis." +msgid "Aggregate cost from ``start_v`` to ``node``." +msgstr "Coste agregado de ``start_v`` to ``node``." -msgid "The leaf vertices have betweenness centrality :math:`0`." -msgstr "Los vértices de las hojas tienen una centralidad intermedia :math:`0`." +msgid "``pgr_chinesePostmanCost`` - Experimental" +msgstr "``pgr_chinesePostmanCost`` - Experimental" msgid "" -"Betweenness centrality of vertex :math:`6` is higher than of vertex :math:" -"`10`." +"``pgr_chinesePostmanCost`` — Calculates the minimum costs of a circuit path " +"which contains every edge in a directed graph and starts and ends on the " +"same vertex." msgstr "" -"La centralidad de entrecruzamiento del vértice :math:`6` es mayor que la del " -"vértice :math:`10`." +"``pgr_chinesePostmanCost`` — Calcula los costes mínimos de una ruta de " +"circuito que contiene cada arista de un grafo dirigido y comienza y termina " +"en el mismo vértice." -msgid "Removing vertex :math:`6` will create three graph components." -msgstr "Al eliminar el vértice :math:`6` se crearían tres componentes." +msgid "Return value when the graph if disconnected" +msgstr "Valor devuelto cuando el grafo está desconectado" -msgid "Removing vertex :math:`10` will create two graph components." -msgstr "" -"Al eliminar el vértice :math:`10` se crearán dos componentes del grafo." +msgid "pgr_chinesePostmanCost(`Edges SQL`_)" +msgstr "pgr_chinesePostmanCost(`SQL de aristas`_)" -msgid "``vid``" -msgstr "``vid``" +msgid "RETURNS ``FLOAT``" +msgstr "DEVUELVE ``FLOAT``" -msgid "``centrality``" -msgstr "``centrality``" +msgid "``pgr_chinesepostmancost``" +msgstr "``pgr_chinesepostmancost``" + +msgid "Minimum costs of a circuit path." +msgstr "Costes mínimos de una trayectoria de circuito." + +msgid "``pgr_connectedComponents``" +msgstr "``pgr_connectedComponents``" msgid "" -"Relative betweenness centrality score of the vertex (will be in range [0,1])" +"``pgr_connectedComponents`` — Connected components of an undirected graph " +"using a DFS-based approach." msgstr "" -"Puntuación relativa de centralidad entre vértices (estará en el rango [0,1])" +"``pgr_connectedComponents`` — Componentes conectados de un grafo no dirigido " +"mediante un enfoque basado en DFS." msgid "" -"Boost's `betweenness_centrality `_" +"A connected component of an undirected graph is a set of vertices that are " +"all reachable from each other." msgstr "" -"`Boost: Centralidad de intermediación `__" +"Un componente conectado de un gráfico no direccionado es un conjunto de " +"vértices que son todos accesibles entre sí." -msgid "Queries use the :doc:`sampledata` network." -msgstr "Las consultas utilizan la red :doc:`sampledata`." +msgid "Components are described by vertices" +msgstr "Los componentes se describen mediante vértices" -msgid "``pgr_biconnectedComponents``" -msgstr "``pgr_biconnectedComponents``" +msgid "``component`` ascending" +msgstr "``component`` ascendente" + +msgid "pgr_connectedComponents(`Edges SQL`_)" +msgstr "pgr_connectedComponents(`SQL de aristas`_)" + +msgid "Returns set of |result-component-V|" +msgstr "Regresa conjunto de |result-component-V|" + +msgid "The connected components of the graph" +msgstr "Los componentes conectados del grafo" + +msgid "Has the value of the minimum node identifier in the component." +msgstr "Continene le valor mínimo de identificador de nodo en el componente." + +msgid "Identifier of the vertex that belongs to the ``component``." +msgstr "Identificador del vértice que pertenece al ``component``." + +msgid "Connecting disconnected components" +msgstr "Conectando componentes desconectados" msgid "" -"``pgr_biconnectedComponents`` — Biconnected components of an undirected " -"graph." +"wikipedia: `Connected component `__" msgstr "" -"``pgr_biconnectedComponents`` — Componentes biconectados de un grafo no " -"dirigido." +"wikipedia: `Componente conectado `__" -msgid "Result columns change:" -msgstr "Las columnas de resultados cambian:" +msgid "``pgr_contraction``" +msgstr "``pgr_contraction``" -msgid "``n_seq`` is removed" -msgstr "``n_seq`` se elimina" +msgid "" +"``pgr_contraction`` — Performs graph contraction and returns the contracted " +"vertices and edges." +msgstr "" +"``pgr_contraction`` — Realiza la contracción del grafo y devuelve los " +"vértices y aristas contraídos.." -msgid "``seq`` changed type to ``BIGINT``" -msgstr "``seq`` cambió el tipo a ``BIGINT``'" +msgid "Version 3.8.0" +msgstr "Versión 3.8.0" + +msgid "New signature:" +msgstr "Nueva firma:" msgid "" -"The biconnected components of an undirected graph are the maximal subsets of " -"vertices such that the removal of a vertex from particular component will " -"not disconnect the component. Unlike connected components, vertices may " -"belong to multiple biconnected components. Vertices can be present in " -"multiple biconnected components, but each edge can only be contained in a " -"single biconnected component." +"Previously compulsory parameter **Contraction order** is now optional with " +"name ``methods``." msgstr "" -"Los componentes biconectados de un grafo no dirigido son los subconjuntos " -"máximos de vértices de modo que la eliminación de un vértice de un " -"componente determinado no desconectará el mismo. A diferencia de los " -"componentes conectados, los vértices pueden pertenecer a varios componentes " -"biconectados. Los vértices pueden estar presentes en varios componentes " -"biconectados, pero cada arista solo puede estar contenida en un único " -"componente biconectado." -msgid "Components are described by edges." -msgstr "Los componentes se describen mediante aristas." +msgid "New name and order of optional parameters." +msgstr "Nuevo nombre y orden de parámetros opcionales." -msgid "``component`` ascending." -msgstr "``componente`` ascendente." +msgid "" +"Deprecated signature pgr_contraction(text,bigint[],integer,bigint[],boolean)" +msgstr "Firma obsoleta pgr_contraction(text,bigint[],integer,bigint[],boolean)" -msgid "``edge`` ascending." -msgstr "``edge`` ascendente." +msgid "Name change from ``pgr_contractGraph``" +msgstr "Cambio de nombre de ``pgr_contractGraph``" -msgid "pgr_biconnectedComponents(`Edges SQL`_)" -msgstr "pgr_biconnectedComponents(`SQL de aristas`_)" +msgid "Bug fixes" +msgstr "Correcciones" -msgid "Returns set of |result-component-E|" -msgstr "Regresa conjunto de |result-component-E|" +msgid "" +"Contraction reduces the size of the graph by removing some of the vertices " +"and edges and, for example, might add edges that represent a sequence of " +"original edges decreasing the total time and space used in graph algorithms." +msgstr "" +"La contracción reduce el tamaño del grafo eliminando algunos de los vértices " +"y aristas, también por ejemplo, podría agregar aristas que representan una " +"secuencia de aristas originales disminuyendo el tiempo total y el espacio " +"utilizados en los algoritmos de grafo." -msgid "The biconnected components of the graph" -msgstr "Los componentes biconectados del grafo" +msgid "Does not return the full contracted graph." +msgstr "No devuelve el grafo contraído completo." -msgid "``component``" -msgstr "``component``" +msgid "Only changes on the graph are returned." +msgstr "Solo se devuelven los cambios en el grafo." -msgid "Component identifier." -msgstr "Identificador de componente." +msgid "The returned values include:" +msgstr "Los valores devueltos incluyen:" -msgid "Has the value of the minimum edge identifier in the component." -msgstr "Contiene el identificador mínimo de arista en el componente." +msgid "The new edges generated by linear contraction." +msgstr "Las nuevas aristas generadas por la contracción lineal." -msgid "Identifier of the edge that belongs to the ``component``." -msgstr "Identificador de arista que pertenece a ``component``." +msgid "The modified vertices generated by dead end contraction." +msgstr "Los vértices modificados por contracción sin salida." -msgid "" -"Boost: `Biconnected components `__" -msgstr "" -"Boost: `Componentes Biconectados `__" +msgid "The returned values are ordered as follows:" +msgstr "Los valores devueltos se ordenan de la siguiente manera:" -msgid "``pgr_binaryBreadthFirstSearch`` - Experimental" -msgstr "``pgr_binaryBreadthFirstSearch`` - Experimental" +msgid "column ``id`` ascending when its a modified vertex." +msgstr "columna ``id`` ascendente cuando es un vértice modificado." -msgid "" -"``pgr_binaryBreadthFirstSearch`` — Returns the shortest path in a binary " -"graph." +msgid "column ``id`` with negative numbers descending when its a new edge." msgstr "" -"``pgr_binaryBreadthFirstSearch`` - Devuelve el camino más corto en un grafo " -"binario." +"columna ``id`` con números negativos descendentes cuando es una nueva arista." msgid "" -"Any graph whose edge-weights belongs to the set {0,X}, where 'X' is any non-" -"negative integer, is termed as a 'binary graph'." +"Currently there are two types of contraction methods included in this " +"function:" msgstr "" -"Un grafo cuyos pesos de las aristas pertenece al conjunto {0, X}, donde 'X' " -"es un entero no negativo, se le llama 'grafo binario'." +"Actualmente hay dos tipos de métodos de contracción incluidos en esta " +"función:" -msgid "pgr_binaryBreadthFirstSearch(`Combinations`_)" -msgstr "pgr_binaryBreadthFirstSearch(`Combinaciones`_)" +msgid "Dead End Contraction. See :doc:`pgr_contractionDeadEnd`." +msgstr "" -msgid "pgr_binaryBreadthFirstSearch(`One to One`_)" -msgstr "pgr_binaryBreadthFirstSearch(`Uno a Uno`_)" +msgid "Linear Contraction. See :doc:`pgr_contractionLinear`." +msgstr "" -msgid "pgr_binaryBreadthFirstSearch(`One to Many`_)" -msgstr "pgr_binaryBreadthFirstSearch(`Uno a Muchos`_)" +msgid "pgr_contraction(`Edges SQL`_, [**options**])" +msgstr "pgr_contraction(`SQL de aristas`_, [**opciones**])" -msgid "pgr_binaryBreadthFirstSearch(`Many to One`_)" -msgstr "pgr_binaryBreadthFirstSearch(`Muchos a Uno`_)" +msgid "**options:** ``[directed, methods, cycles, forbidden]``" +msgstr "**opciones:** ``[directed, methods, cycles, forbidden]``" -msgid "pgr_binaryBreadthFirstSearch(`Many to Many`_)" -msgstr "pgr_binaryBreadthFirstSearch(`Muchos a Muchos`_)" +msgid "Returns set of |result-contract|" +msgstr "Regresa conjunto de |result-contract|" -msgid "" -"It is well-known that the shortest paths between a single source and all " -"other vertices can be found using Breadth First Search in :math:`O(|E|)` in " -"an unweighted graph, i.e. the distance is the minimal number of edges that " -"you need to traverse from the source to another vertex. We can interpret " -"such a graph also as a weighted graph, where every edge has the weight :math:" -"`1`. If not alledges in graph have the same weight, that we need a more " -"general algorithm, like Dijkstra's Algorithm which runs in :math:`O(|E|log|" -"V|)` time." +msgid "Dead end and linear contraction in that order on an undirected graph." msgstr "" -"Es bien sabido que los caminos más cortos entre un único origen y todos los " -"demás vértices se pueden encontrar utilizando la búsqueda rápida en :math:" -"`O(|E|)` en un grafo no ponderado, es decir, la distancia es el número " -"mínimo de aristas que hay que recorrer desde el origen hasta otro vértice. " -"Podemos interpretar este grafo también como un grafo ponderado, en el que " -"cada arista tiene el peso :math:`1`. Si no todas las aristas del grafo " -"tienen el mismo peso, necesitaremos un algoritmo más general, como el " -"Algoritmo de Dijkstra, que se ejecuta en tiempo :math:`O(|E|log|V|)`." +"Hacer una contracción de callejón sin salida y una contracción lineal en ese " +"orden en un grafo no dirigido." -msgid "" -"However if the weights are more constrained, we can use a faster algorithm. " -"This algorithm, termed as 'Binary Breadth First Search' as well as '0-1 " -"BFS', is a variation of the standard Breadth First Search problem to solve " -"the SSSP (single-source shortest path) problem in :math:`O(|E|)`, if the " -"weights of each edge belongs to the set {0,X}, where 'X' is any non-negative " -"real integer." -msgstr "" -"Sin embargo, si los pesos están más restringidos, podemos usar un algoritmo " -"más rápido. Este algoritmo, llamado 'búsqueda binaria de primero " -"profundidad' así como '0-1 BFS', es una variación del problema estándar de " -"búsqueda de primero profundidad para resolver el problema SSSP (ruta más " -"corta de una sola fuente) en :math:`O(|E|)`, si los pesos de cada arista " -"pertenecen al conjunto de caracteres de {0,X}, donde 'X' es cualquier entero " -"no negativo." +msgid "Contraction optional parameters" +msgstr "Parámetros opcionales de Contracción" -msgid "" -"Process is done only on 'binary graphs'. ('Binary Graph': Any graph whose " -"edge-weights belongs to the set {0,X}, where 'X' is any non-negative real " -"integer.)" +msgid "``methods``" msgstr "" -"El proceso se realiza sólo en 'grafos binarios'. ('Grafo binario': Cualquier " -"grafo cuyos pesos de aristas pertenezcan al conjunto {0, X}, donde 'X' es " -"cualquier entero real no negativo.)" -msgid "Running time: :math:`O(| start\\_vids | * |E|)`" -msgstr "Tiempo de ejecución: :math:`O(| start\\_vids | * |E|)`" +msgid "``INTEGER[]``" +msgstr "``INTEGER[]``" -msgid "" -"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vid**, **end vid**, " -"[``directed``])" -msgstr "" -"pgr_binaryBreadthFirstSearch(`SQL de aristas`_, **salida**, **destino**, " -"[``directed``])" +msgid "``ARRAY[1,2]``" +msgstr "``ARRAY[1,2]``" -msgid "" -"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vid**, **end vids**, " -"[``directed``])" -msgstr "" -"pgr_binaryBreadthFirstSearch(`SQL de aristas`_, **salida**, **destinos**, " -"[``directed``])" +msgid "Ordered contraction operations." +msgstr "Operaciones de contracción ordenadas." -msgid "" -"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vids**, **end vid**, " -"[``directed``])" -msgstr "" -"pgr_binaryBreadthFirstSearch(`SQL de aristas`_, **salidas**, **destino**, " -"[``directed``])" +msgid "1 = Dead end contraction" +msgstr "1 = Contracción sin salida" -msgid "" -"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vids**, **end vids**, " -"[``directed``])" -msgstr "" -"pgr_binaryBreadthFirstSearch(`SQL de aristas`_, **salidas**, **destinos**, " -"[``directed``])" +msgid "2 = Linear contraction" +msgstr "2 - Contracción lineal" -msgid "" -"pgr_binaryBreadthFirstSearch(`Edges SQL`_, `Combinations SQL`_, " -"[``directed``])" -msgstr "" -"pgr_binaryBreadthFirstSearch(`SQL de aristas`_, `SQL de combinaciones`_, " -"[``directed``])" +msgid "``cycles``" +msgstr "``cycles``" -msgid "" -"**Note:** Using the :doc:`sampledata` Network as all weights are same (i.e :" -"math:`1``)" -msgstr "" -"**Nota:** Usando la red de :doc:`sampledata` como todos los pesos son los " -"mismos (i.e :math:`1``)" +msgid ":math:`1`" +msgstr ":math:`1`" -msgid "https://cp-algorithms.com/graph/01_bfs.html" -msgstr "https://cp-algorithms.com/graph/01_bfs.html" +msgid "Number of times the contraction methods will be performed." +msgstr "Número de veces que se realizarán las operaciones de contracción." -msgid "" -"https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm#Specialized_variants" -msgstr "" -"https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm#Specialized_variants" +msgid "``forbidden``" +msgstr "``forbidden``" -msgid "pgr_bipartite -Experimental" -msgstr "pgr_bipartite - Experimental" +msgid "``BIGINT[]``" +msgstr "``BIGINT[]``" -msgid "" -"``pgr_bipartite`` — Disjoint sets of vertices such that no two vertices " -"within the same set are adjacent." -msgstr "" -"``pgr_bipartite`` — Conjuntos disjuntos tal que ningun par de vertices en el " -"mismo conjunto son adjacentes." +msgid "``ARRAY[]::BIGINT[]``" +msgstr "``ARRAY[]::BIGINT[]``" + +msgid "Identifiers of vertices forbidden for contraction." +msgstr "Identificadores de vértices prohibidos para contracción." + +msgid "The function returns a single row. The columns of the row are:" +msgstr "La función devuelve una sola fila. Las columnas de la fila son:" + +msgid "``type``" +msgstr "``type``" + +msgid "Type of the row." +msgstr "Tipo de la fila." + +msgid "``v`` when the row is a vertex." +msgstr "``v`` cuando la fila es un vértice." + +msgid "Column ``id`` has a positive value." +msgstr "Columna ``id`` tiene valor positivo." + +msgid "``e`` when the row is an edge." +msgstr "``e`` cuando la fila es una arista." + +msgid "Column ``id`` has a negative value." +msgstr "Columna ``id`` tiene valor negativo." + +msgid "All numbers on this column are ``DISTINCT``" +msgstr "Todos los números de esta columna son ''DISTINTOS''" + +msgid "When ``type`` = **'v'**." +msgstr "En caso de ``type`` = **'v'**." + +msgid "Identifier of the modified vertex." +msgstr "Identificador del vértice modificado." + +msgid "When ``type`` = **'e'**." +msgstr "En caso de ``type`` = **'e'**." -msgid "New **experimental** signature" -msgstr "Nueva firma **experimental**" +msgid "Decreasing sequence starting from **-1**." +msgstr "Disminución de la secuencia a partir de **-1**." msgid "" -"A bipartite graph is a graph with two sets of vertices which are connected " -"to each other, but not within themselves. A bipartite graph is possible if " -"the graph coloring is possible using two colors such that vertices in a set " -"are colored with the same color." +"Representing a pseudo `id` as is not incorporated in the set of original " +"edges." msgstr "" -"Un grafo bipartito es un grafo con dos conjuntos de vértices que están " -"conectados entre sí, pero no dentro de sí mismos. Un gráfico bipartito es " -"posible si el color del gráfico es posible utilizando dos colores, de modo " -"que los vértices de un conjunto se colorean con el mismo color." +"Representando un pseudo `id` como no incorporado en el conjunto de aristas " +"originales." -msgid "The algorithm works in undirected graph only." -msgstr "El algoritmo solo funciona en un grafo no dirigido." +msgid "``contracted_vertices``" +msgstr "``contracted_vertices``" -msgid "The returned values are not ordered." -msgstr "Los valores devueltos no están ordenados." +msgid "Array of contracted vertex identifiers." +msgstr "Arreglo de identificadores de vértices contraídos." + +msgid "When ``type`` = **'v'**: :math:`-1`" +msgstr "En caso de ``type`` = **'v'**: :math:`-1`" msgid "" -"The algorithm checks graph is bipartite or not. If it is bipartite then it " -"returns the node along with two colors `0` and `1` which represents two " -"different sets." +"When ``type`` = **'e'**: Identifier of the source vertex of the current edge " +"(``source``, ``target``)." msgstr "" -"El algoritmo comprueba si el grafo es bipartito o no. Si es bipartito " -"entonces devuelve el nodo junto con dos colores `0` y `1` que representan " -"dos conjuntos diferentes." - -msgid "If graph is not bipartite then algorithm returns empty set." -msgstr "Si el grafo no es bipartito, el algoritmo devuelve un conjunto vacío." +"En caso de ``type`` = **'e'**: Identificador del vétice de la arista actual " +"(``source``, ``target``)." -msgid "pgr_bipartite(`Edges SQL`_)" -msgstr "pgr_bipartite(`SQL de aristas`_)" +msgid "" +"When ``type`` = **'e'**: Identifier of the target vertex of the current edge " +"(``source``, ``target``)." +msgstr "" +"En caso de ``type`` = **'e'**: Identificador del vértice objetivo de la " +"arista actual (``source``, ``target``)." -msgid "Returns set of |result-node-color|" -msgstr "Regresa el conjunto de |result-node-color|" +msgid "" +"When ``type`` = **'e'**: Weight of the current edge (``source``, ``target``)." +msgstr "" +"En caso de ``type`` = **'e'**: Peso de la arista actual (``source``, " +"``target``)." -msgid "When the graph is bipartite" -msgstr "Cuando el grafo es bi-partido" +msgid "Only dead end contraction" +msgstr "Sólo contracción sin salida" -msgid "Additional Example" -msgstr "Ejemplo Adicional" +msgid "Only linear contraction" +msgstr "Sólo contracción lineal" -msgid "The odd length cyclic graph can not be bipartite." -msgstr "El gráfico cíclico de longitud impar no puede ser bipartito." +msgid "The cycle" +msgstr "El ciclo" msgid "" -"The edge :math:`5 \\rightarrow 1` will make subgraph with vertices :math:" -"`\\{1, 3, 7, 6, 5\\}` an odd length cyclic graph, as the cycle has 5 " -"vertices." +"Contracting a graph can be done with more than one operation. The order of " +"the operations affect the resulting contracted graph, after applying one " +"operation, the set of vertices that can be contracted by another operation " +"changes." msgstr "" -"La arista :math:`5 \\rightarrow 1` hace que el sub-grafo con vértices:math:" -"`\\{1, 3, 7, 6, 5\\}` se un grafo de ciclo impar, ya que ciclo tiene 5 " -"vértices." +"Contraer un grafo se puede hacer con más de una operación. El orden de las " +"operaciones afecta al grafo contraído resultante, después de aplicar una " +"operación, el conjunto de vértices que se pueden contraer con otra operación " +"cambia." -msgid "Edges in blue represent odd length cycle subgraph." -msgstr "Aristas en azul representan un grafo de ciclo impar." +msgid "This implementation cycles ``cycles`` times through the ``methods`` ." +msgstr "" +"Esta implementación cicla `` cycles`` veces a través de los ``methods``." -msgid "``pgr_boykovKolmogorov``" -msgstr "``pgr_boykovKolmogorov``" +msgid "Contracting sample data" +msgstr "Contracción de los datos de muestra" msgid "" -"``pgr_boykovKolmogorov`` — Calculates the flow on the graph edges that " -"maximizes the flow from the sources to the targets using Boykov Kolmogorov " -"algorithm." +"In this section, building and using a contracted graph will be shown by " +"example." msgstr "" -"``pgr_boykovKolmogorov`` — Calcula el flujo en las aristas del grafo que " -"maximiza el flujo de las fuentes a los objetivos utilizando el algoritmo " -"Boykov Kolmogorov." +"En esta sección, la creación y el uso de un grafo contraído se mostrarán en " +"el ejemplo." -msgid "New **proposed** signature" -msgstr "Nueva firma **propuesta**" +msgid "The :doc:`sampledata` for an undirected graph is used" +msgstr "Se usa :doc:`sampledata` para un grafo no dirigido" -msgid "``pgr_boykovKolmogorov`` (`Combinations`_)" -msgstr "``pgr_boykovKolmogorov`` (`Combinaciones`_)" +msgid "a dead end operation first followed by a linear operation." +msgstr "una operación sin salida primero seguida de una operación lineal." -msgid "Renamed from ``pgr_maxFlowBoykovKolmogorov``" -msgstr "Renombrado de ``pgr_maxFlowBoykovKolmogorov``" +msgid "Construction of the graph in the database" +msgstr "Construcción del grafo en la base de datos" -msgid "**Proposed** function" -msgstr "Función **propuesta**" +msgid "The original graph:" +msgstr "El grafo original:" -msgid "New **Experimental** function" -msgstr "Nueva función **Experimental**" +msgid "" +"The results do not represent the contracted graph. They represent the " +"changes that need to be done to the graph after applying the contraction " +"methods." +msgstr "" +"Los resultados no representan al grafo contraído. Representan los cambios " +"que necesitan hacerse en el grafo después de aplicar los métodos de " +"contracción." -msgid "Running time: Polynomial" -msgstr "Tiempo de ejecución: Polinomio" +msgid "" +"Observe that vertices, for example, :math:`6` do not appear in the results " +"because it was not affected by the contraction algorithm." +msgstr "" +"Observe que los vértices, por ejemplo, :math:`6` , no aparecen en los " +"resultados porque no se vieron afectados por el algoritmo de contracción." -msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vid**, **end vid**)" -msgstr "pgr_boykovKolmogorov(`SQL de aristas`_, **salida**, **destino**)" +msgid "After doing the dead end contraction operation:" +msgstr "Después de realizar la operación de contracción sin salida:" -msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vid**, **end vids**)" -msgstr "pgr_boykovKolmogorov(`SQL de aristas`_, **salida**, **destinos**)" +msgid "After doing the linear contraction operation to the graph above:" +msgstr "Después de hacer la operación de contracción lineal al grafo anterior:" -msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vids**, **end vid**)" -msgstr "pgr_boykovKolmogorov(`SQL de aristas`_, **salidas**, **destino**)" +msgid "The process to create the contraction graph on the database:" +msgstr "El proceso para crear el grafo de contracción en la base de datos:" -msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vids**, **end vids**)" -msgstr "pgr_boykovKolmogorov(`SQL de aristas`_, **salidas**, **destinos**)" +msgid "Add additional columns" +msgstr "Añadir columnas adicionales" -msgid "pgr_boykovKolmogorov(`Edges SQL`_, `Combinations SQL`_)" -msgstr "pgr_boykovKolmogorov(`SQL de aristas`_, `SQL de combinaciones`_)" +msgid "" +"Adding extra columns to the edges and vertices tables. In this documentation " +"the following will be used:" +msgstr "" -msgid "Returns set of |result-flow|" -msgstr "Regresa el conjunto de |result-flow|" +msgid "Column." +msgstr "Columna." -msgid "From vertex :math:`11` to vertex :math:`12`" -msgstr "Del vértice :math:`11` al vértice :math:`12`" +msgid "The vertices set belonging to the vertex/edge" +msgstr "El conjunto de vértices que pertenecen al vértice/arista" -msgid "From vertex :math:`11` to vertices :math:`\\{5, 10, 12\\}`" -msgstr "Desde el vértice :math:`11` a los vértices :math:`\\{5, 10, 12\\}`" +msgid "``is_contracted``" +msgstr "``is_contracted``" -msgid "From vertices :math:`\\{11, 3, 17\\}` to vertex :math:`12`" -msgstr "De los vértices vertices :math:`\\{11, 3, 17\\}` al vértice :math:`12`" +msgid "On the vertex table" +msgstr "En la tabla de vértices" msgid "" -"From vertices :math:`\\{11, 3, 17\\}` to vertices :math:`\\{5, 10, 12\\}`" +"when ``true`` the vertex is contracted, its not part of the contracted graph." msgstr "" -"De los vértices :math:`\\{11, 3, 17\\}` a los vértices :math:`\\{5, 10, 12\\}" -"`" +"En caso de ''true'' se contrae el vértice, no forma parte del grafo " +"contraído." msgid "" -"Using a combinations table, equivalent to calculating result from vertices :" -"math:`\\{5, 6\\}` to vertices :math:`\\{10, 15, 14\\}`." +"when ``false`` the vertex is not contracted, its part of the contracted " +"graph." msgstr "" -"Usando una tabla de combinaciones, equivalente a calcular el resultado de " -"los vértices :math:`\\{5, 6\\}` a los vértices :math:`\\{10, 15, 14\\}`." +"En caso de ''false'' el vértice no se contrae, su parte del grafo contraído." -msgid "https://www.boost.org/libs/graph/doc/boykov_kolmogorov_max_flow.html" -msgstr "https://www.boost.org/libs/graph/doc/boykov_kolmogorov_max_flow.html" +msgid "``is_new``" +msgstr "``is_new``" -msgid "``pgr_breadthFirstSearch`` - Experimental" -msgstr "``pgr_breadthFirstSearch`` - Experimental" +msgid "On the edge table" +msgstr "En la tabla de aristas" msgid "" -"``pgr_breadthFirstSearch`` — Returns the traversal order(s) using Breadth " -"First Search algorithm." +"when ``true`` the edge was generated by the contraction algorithm. its part " +"of the contracted graph." msgstr "" -"``pgr_breadthFirstSearch`` — Devuelve los orden(es) transversales mediante " -"el algoritmo Breadth First Search." +"En caso de `` true``, la arista se generó por el algoritmo de contracción. " +"Es parte del grafo contraído." + +msgid "" +"when ``false`` the edge is an original edge, might be or not part of the " +"contracted graph." +msgstr "" +"En caso de ``false`` , la arista es una arista original, podría ser o no " +"parte del grafo contraído." -msgid "``pgr_breadthFirstSearch`` (`Single Vertex`_)" -msgstr "``pgr_breadthFirstSearch`` (`Vértice único`_)" +msgid "Store contraction information" +msgstr "Almacenar información de contracción" -msgid "``pgr_breadthFirstSearch`` (`Multiple Vertices`_)" -msgstr "``pgr_breadthFirstSearch`` (`Múltiples Vértices`_)" +msgid "Store the contraction results in a table." +msgstr "Almacenar los resultados de la contracción en una tabla." + +msgid "Update the edges and vertices tables" +msgstr "Actualizar las tablas de aristas y vértices" msgid "" -"Provides the Breadth First Search traversal order from a root vertex to a " -"particular depth." +"Use ``is_contracted`` column to indicate the vertices that are contracted." msgstr "" -"Proporciona el orden transversal de Primera Búsqueda de Amplitud desde un " -"vértice raíz hasta una profundidad particular." - -msgid "The implementation will work on any type of graph." -msgstr "La implementación funcionará en cualquier tipo de grafo." +"Usar la columna ``is_contracted`` para indicar los vértices contraídos." msgid "" -"Provides the Breadth First Search traversal order from a source node to a " -"target depth level." +"Fill ``contracted_vertices`` with the information from the results that " +"belong to the vertices." msgstr "" -"Proporciona el orden de recorrido de Búsqueda de Primero Amplitud desde un " -"nodo de origen a un nivel de profundidad objetivo." +"Llenar ``contracted_vertices`` con la información de los resultados que " +"pertenecen a los vértices." -msgid "Running time: :math:`O(E + V)`" -msgstr "Tiempo de ejecución: :math:`O(E + V)`" +msgid "Insert the new edges generated by pgr_contraction." +msgstr "Inserte las nuevas aristas generadas por pgr_contraction." -msgid "pgr_breadthFirstSearch(`Edges SQL`_, **root vid**, [**options**])" -msgstr "pgr_breadthFirstSearch(`SQL de aristas`_, **raíz**, [**options**])" +msgid "The contracted graph" +msgstr "El grafo contraído" -msgid "pgr_breadthFirstSearch(`Edges SQL`_, **root vids**, [**options**])" -msgstr "pgr_breadthFirstSearch(`SQL de aristas`_, **raices**, [**options**])" +msgid "Vertices that belong to the contracted graph." +msgstr "Vértices que pertenecen al grafo contraído." -msgid "**options:** ``[max_depth, directed]``" -msgstr "**opcionales:** ``[max_depth, directed]``" +msgid "Edges that belong to the contracted graph." +msgstr "Aristas que pertenecen al grafo contraído." -msgid "Returns set of |result-bfs|" -msgstr "Regresa el conjunto de |result-bfs|" +msgid "Visually:" +msgstr "Visualmente:" + +msgid "Using the contracted graph" +msgstr "Usando el grafo contraído" msgid "" -"From root vertex :math:`6` on a **directed** graph with edges in ascending " -"order of ``id``" +"Depending on the final application the graph is to be prepared. In this " +"example the final application will be to calculate the cost from two " +"vertices in the original graph by using the contracted graph with " +"``pgr_dijkstraCost``" msgstr "" -"Desde el vértice raíz :math:`6` en un grafo **dirigido** con aristas en " -"orden ascendente de ``id``" msgid "" -"From root vertices :math:`\\{12, 6\\}` on an **undirected** graph with " -"**depth** :math:`<= 2` and edges in ascending order of ``id``" +"There are three cases when calculating the shortest path between a given " +"source and target in a contracted graph:" msgstr "" -"A partir de los vértices de la raíz :math:`\\{12, 6\\}` en un grafo **no " -"dirigido** con **profundidad** :math:`<= 2` y aristas ordenadas " -"ascendentemente in términos de ``id``" - -msgid "DFS optional parameters" -msgstr "Parámetros opcionales de DFS" +"Hay tres casos al calcular la ruta más corta entre un origen y un destino " +"determinados en un grafo contraído:" -msgid "Same as `Single vertex`_ with edges in ascending order of ``id``." -msgstr "Igual que `Vértice único`_ con aritas en orden ascendente de ``id``." +msgid "Case 1: Both source and target belong to the contracted graph." +msgstr "Caso 1: Tanto el origen como el destino pertenecen al grafo contraído." -msgid "Same as `Single vertex`_ with edges in descending order of ``id``." -msgstr "Igual que `Vértice único`_ con aritas en orden descendente de ``id``." +msgid "Case 2: Source and/or target belong to an edge subgraph." +msgstr "Caso 2: El origen y/o el destino pertenecen a un subgrafo de aristas." -msgid "The resulting traversal is different." -msgstr "El recorrido resultante es diferente." +msgid "Case 3: Source and/or target belong to a vertex." +msgstr "Caso 3: El origen y/o el destino pertenecen a un vértice." -msgid "" -"The left image shows the result with ascending order of ids and the right " -"image shows with descending order of the edge identifiers." +msgid "The final application should consider all of those cases." msgstr "" -"La imagen izquierda muestra el resultado con el orden ascendente de los ids " -"y la imagen derecha muestra con el orden descendente de los identificadores " -"de aristas." -msgid "|ascending| |descending|" -msgstr "|ascending| |descending|" +msgid "Create a view (or table) of the contracted graph:" +msgstr "Crear una vista (o tabla) del grafo Contraído:" -msgid "ascending" -msgstr "ascendente" +msgid "Create the function that will use the contracted graph." +msgstr "Crear la función que va a utilizar el grafo contraído." -msgid "descending" -msgstr "descendente" +msgid "" +"Case 2: Source and/or target belong to an edge that has contracted vertices." +msgstr "" +"Caso 2: El origen y/o el destino pertenecen a una arista que ha contraído " +"vertices." msgid "" -"`Boost: Breadth First Search algorithm documentation `__" +"Case 3: Source and/or target belong to a vertex that has been contracted." msgstr "" -"`Boost: Breadth First Search `__" +"Caso 3: El origen y/o el destino pertenecen a un vértice que ha sido " +"contraído." + +msgid "``pgr_contractionDeadEnd`` - Proposed" +msgstr "``pgr_contractionDeadEnd`` - Propuesto" msgid "" -"`Wikipedia: Breadth First Search algorithm `__" +"``pgr_contractionDeadEnd`` — Performs graph contraction and returns the " +"contracted vertices and edges." msgstr "" -"`Wikipedia: Breadth First Search `__" +"``pgr_contractionDeadEnd`` — Realiza la contracción del grafo y devuelve los " +"vértices y aristas contraídos.." -msgid "``pgr_bridges``" -msgstr "``pgr_bridges``" +msgid "A node is considered a dead end node when:" +msgstr "Un nodo se considera sin salida cuando:" -msgid "``pgr_bridges`` - Return the bridges of an undirected graph." -msgstr "``pgr_bridges`` - Calcula los puentes de un grafo no dirigido." +msgid "On undirected graphs:" +msgstr "En grafos no dirigidos:" + +msgid "The number of adjacent vertices is 1." +msgstr "El número de vértices adyacentes es 1." + +msgid "On directed graphs:" +msgstr "En grafos dirigidos:" + +msgid "When there is only one adjacent vertex or" +msgstr "Cuando hay solo un vértice adyacente o" msgid "" -"A bridge is an edge of an undirected graph whose deletion increases its " -"number of connected components. This implementation can only be used with an " -"undirected graph." +"When all edges are incoming regardless of the number of adjacent vertices." msgstr "" -"Un puente es un borde de un grafo no dirigido cuya eliminación aumenta su " -"número de componentes conectados. Esta implementación solo se puede utilizar " -"con un grafo no dirigido." -msgid "``edge`` ascending" -msgstr "``edge`` ascendente" +msgid "pgr_contractionDeadEnd(`Edges SQL`_, [**options**])" +msgstr "pgr_contractionDeadEnd(`SQL de aristas`_, [**opciones**])" -msgid "Running time: :math:`O(E * (V + E))`" -msgstr "Tiempo de ejecución: :math:`O(E * (V + E))`" +msgid "**options:** ``[directed, forbidden_vertices]``" +msgstr "**opciones:** ``[directed, forbidden]``" -msgid "pgr_bridges(`Edges SQL`_)" -msgstr "pgr_bridges(`SQL de aristas`_)" +msgid "Dead end contraction on an undirected graph." +msgstr "Contracción de vértice sin salida en un grafo no dirigido." -msgid "Returns set of |result-edge|" -msgstr "Regresa conjunto de |result-edge|" +msgid "The green nodes are dead end nodes." +msgstr "Los nodos verdes son nodos sin salida." -msgid "The bridges of the graph" -msgstr "Los puentes del grafo" +msgid "Node :math:`3` is a dead end node after node :math:`1` is contracted." +msgstr "" +"El nodo :math:`3` es sin salida después de haberse contraído el nodo " +":math:`1`." -msgid "Identifier of the edge that is a bridge." -msgstr "Identificador del borde que es un puente." +msgid "``forbidden_vertices``" +msgstr "``forbidden_vertices``" -msgid "https://en.wikipedia.org/wiki/Bridge_%28graph_theory%29" -msgstr "https://en.wikipedia.org/wiki/Bridge_%28graph_theory%29" +msgid "``ARRAY[`` |ANY-INTEGER| ``]``" +msgstr "``ARRAY[`` |ANY-INTEGER| ``]``" -msgid "**Supported versions**" -msgstr "** Versions soportadas**" +msgid "**Empty**" +msgstr "**vacío**" -msgid "``pgr_chinesePostman`` - Experimental" -msgstr "``pgr_chinesePostman`` - Experimental" +msgid "Value = ``e`` indicating the row is an edge." +msgstr "Valor = ``e`` cuando la fila es una arista." -msgid "" -"``pgr_chinesePostman`` — Calculates the shortest circuit path which contains " -"every edge in a directed graph and starts and ends on the same vertex." -msgstr "" -"``pgr_chinesePostman`` — Calcula la ruta de circuito más corta que contiene " -"cada arista en un grafo dirigido y comienza y termina en el mismo vértice." +msgid "A pseudo `id` of the edge." +msgstr "Un pseudo `identificador` de la arista." -msgid "Returns ``EMPTY SET`` on a disconnected graph" -msgstr "Devuelve ``EMPTY SET`` en un grafo desconectado" +msgid "Identifier of the source vertex of the current edge." +msgstr "Identificador del vértice de origen de la arista actual." -msgid "pgr_chinesePostman(`Edges SQL`_)" -msgstr "pgr_chinesePostman(`SQL de aristas`_)" +msgid "Identifier of the target vertex of the current edge." +msgstr "Identificador del vértice destino de la arista actual." -msgid "Returns set of |result-1-1-no-seq|" -msgstr "Regresa el conjunto de |result-1-1-no-seq|" +msgid "Weight of the current edge." +msgstr "Peso de la arista actual." -msgid "Returns set of ``(seq, node, edge, cost, agg_cost)``" -msgstr "Devuelve un conjunto de ``(seq, node, edge, cost, agg_cost)``" +msgid "Dead end vertex on undirected graph" +msgstr "Vértice sin salida en un grafo sin dirigir" -msgid "Sequential value starting from ``1``" -msgstr "Valor secuencial a partir de ``1``" +msgid "They have only one adjacent node." +msgstr "" + +msgid "Dead end vertex on directed graph" +msgstr "Vértice sin salida en un grafo dirigido" + +msgid "The green nodes are dead end nodes" +msgstr "Los nodos verdes son nodos sin salida" msgid "" -"Identifier of the edge used to go from ``node`` to the next node in the path " -"sequence. ``-1`` for the last node of the path." +"The blue nodes have an unlimited number of incoming and/or outgoing edges." msgstr "" -"Identificador del borde utilizado para ir del ``nodo`` al siguiente nodo de " -"la secuencia de ruta. ``-1`` para el último nodo de la ruta." +"Los nodos azules tienen un número ilimitado de aristas entrantes y/o " +"salientes." + +msgid "Node" +msgstr "Nodo" -msgid "Aggregate cost from ``start_v`` to ``node``." -msgstr "Coste agregado de ``start_v`` to ``node``." +msgid "Adjacent nodes" +msgstr "Nodos adyacentes" -msgid "``pgr_chinesePostmanCost`` - Experimental" -msgstr "``pgr_chinesePostmanCost`` - Experimental" +msgid "Dead end" +msgstr "Sin salida" -msgid "" -"``pgr_chinesePostmanCost`` — Calculates the minimum costs of a circuit path " -"which contains every edge in a directed graph and starts and ends on the " -"same vertex." +msgid "Reason" msgstr "" -"``pgr_chinesePostmanCost`` — Calcula los costes mínimos de una ruta de " -"circuito que contiene cada arista de un grafo dirigido y comienza y termina " -"en el mismo vértice." -msgid "Return value when the graph if disconnected" -msgstr "Valor devuelto cuando el grafo está desconectado" +msgid ":math:`6`" +msgstr ":math:`6`" -msgid "pgr_chinesePostmanCost(`Edges SQL`_)" -msgstr "pgr_chinesePostmanCost(`SQL de aristas`_)" +msgid ":math:`\\{1\\}`" +msgstr ":math:`\\{1\\}`" -msgid "RETURNS ``FLOAT``" -msgstr "DEVUELVE ``FLOAT``" +msgid "Yes" +msgstr "Si" -msgid "``pgr_chinesepostmancost``" -msgstr "``pgr_chinesepostmancost``" +msgid "Has only one adjacent node." +msgstr "Solo tiene un nodo adyacente." -msgid "Minimum costs of a circuit path." -msgstr "Costes mínimos de una trayectoria de circuito." +msgid ":math:`7`" +msgstr ":math:`7`" -msgid "pgr_connectedComponents" -msgstr "pgr_connectedComponents" +msgid ":math:`\\{2\\}`" +msgstr ":math:`\\{2\\}`" -msgid "" -"``pgr_connectedComponents`` — Connected components of an undirected graph " -"using a DFS-based approach." -msgstr "" -"``pgr_connectedComponents`` — Componentes conectados de un grafo no dirigido " -"mediante un enfoque basado en DFS." +msgid ":math:`8`" +msgstr ":math:`8`" -msgid "" -"A connected component of an undirected graph is a set of vertices that are " -"all reachable from each other." -msgstr "" -"Un componente conectado de un gráfico no direccionado es un conjunto de " -"vértices que son todos accesibles entre sí." +msgid ":math:`\\{2, 3\\}`" +msgstr ":math:`\\{2, 3\\}`" -msgid "Components are described by vertices" -msgstr "Los componentes se describen mediante vértices" +msgid "Has more than one adjacent node and all edges are incoming." +msgstr "" -msgid "``component`` ascending" -msgstr "``component`` ascendente" +msgid ":math:`\\{4\\}`" +msgstr ":math:`\\{4\\}`" -msgid "pgr_connectedComponents(`Edges SQL`_)" -msgstr "pgr_connectedComponents(`SQL de aristas`_)" +msgid ":math:`10`" +msgstr ":math:`10`" -msgid "Returns set of |result-component-V|" -msgstr "Regresa conjunto de |result-component-V|" +msgid ":math:`\\{4, 5\\}`" +msgstr ":math:`\\{4, 5\\}`" -msgid "The connected components of the graph" -msgstr "Los componentes conectados del grafo" +msgid "No" +msgstr "No" -msgid "Has the value of the minimum node identifier in the component." -msgstr "Continene le valor mínimo de identificador de nodo en el componente." +msgid "Has more than one adjacent node and all edges are outgoing." +msgstr "" -msgid "Identifier of the vertex that belongs to the ``component``." -msgstr "Identificador del vértice que pertenece al ``component``." +msgid ":math:`1,2,3,4,5`" +msgstr ":math:`1,2,3,4,5`" -msgid "Connecting disconnected components" -msgstr "Conectando componentes desconectados" +msgid "Many adjacent nodes." +msgstr "Muchos nodos adyacentes." msgid "" -"Boost: `Connected components `__" +"Has more than one adjacent node and some edges are incoming and some are " +"outgoing." msgstr "" -"Boost: `Componente conectado `__" msgid "" -"wikipedia: `Connected component `__" +"From above, nodes :math:`\\{6, 7, 9\\}` are dead ends because the total " +"number of adjacent vertices is one." msgstr "" -"wikipedia: `Componente conectado `__" - -msgid "``pgr_contraction``" -msgstr "``pgr_contraction``" +"De arriba, nodes :math:`\\{6, 7, 9\\}` son sin salida por que el número de " +"vértices adyacentes es 1." msgid "" -"``pgr_contraction`` — Performs graph contraction and returns the contracted " -"vertices and edges." +"When there are more than one adjacent vertex, all edges need to be all " +"incoming edges otherwise it is not a dead end." msgstr "" -"``pgr_contraction`` — Realiza la contracción del grafo y devuelve los " -"vértices y aristas contraídos.." - -msgid "Name change from ``pgr_contractGraph``" -msgstr "Cambio de nombre de ``pgr_contractGraph``" -msgid "Bug fixes" -msgstr "Correcciones" +msgid "Step by step dead end contraction" +msgstr "Paso a paso contracción sin salida" msgid "" -"Contraction reduces the size of the graph by removing some of the vertices " -"and edges and, for example, might add edges that represent a sequence of " -"original edges decreasing the total time and space used in graph algorithms." +"The dead end contraction will stop until there are no more dead end nodes. " +"For example, from the following graph where :math:`3` is the dead end node:" msgstr "" -"La contracción reduce el tamaño del grafo eliminando algunos de los vértices " -"y aristas, también por ejemplo, podría agregar aristas que representan una " -"secuencia de aristas originales disminuyendo el tiempo total y el espacio " -"utilizados en los algoritmos de grafo." - -msgid "Does not return the full contracted graph" -msgstr "No devuelve el grafo completo contraído" +"La contracción sin salida se detendrá hasta que no haya más nodos sin " +"salida. Por ejemplo, del siguiente grafo donde :math:`3` es el nodo sin " +"salida:" -msgid "Only changes on the graph are returned" -msgstr "Solo se devuelven los cambios en el gráfico" +msgid "" +"After contracting :math:`3`, node :math:`2` is now a dead end node and is " +"contracted:" +msgstr "" +"Después de contraer :math:`3`, el nodo ` :math:`2` es ahora un nodo sin " +"salida y es contraído:" -msgid "Currnetly there are two types of contraction methods" -msgstr "Actualmente hay dos tipos de métodos de contracción" +msgid "" +"After contracting :math:`2`, stop. Node :math:`1` has the information of " +"nodes that were contracted." +msgstr "" +"Después de contraer :math:`2`, detener. El nodo :math:`1` tiene la " +"información de los nodos que se contraen." -msgid "Dead End Contraction" -msgstr "Contracción Sin Salida" +msgid "Creating the contracted graph" +msgstr "Creando el grafo contraído" -msgid "Linear Contraction" -msgstr "Contracción Lineal" +msgid "Steps for the creation of the contracted graph" +msgstr "Pasos para la creación del grafo contraído" -msgid "The returned values include" -msgstr "Los valores devueltos incluyen" +msgid "Add additional columns." +msgstr "Añadir columnas adicionales." -msgid "the added edges by linear contraction." -msgstr "las aristas añadidas por contracción lineal." +msgid "Save results into a table." +msgstr "Almacenar los resultados en una tabla." -msgid "the modified vertices by dead end contraction." -msgstr "los vértices modificados por contracción sin salida." +msgid "The contracted vertices are not part of the contracted graph." +msgstr "Los vértices contraído no forman parte del grafo contraído." -msgid "The returned values are ordered as follows:" -msgstr "Los valores devueltos se ordenan de la siguiente manera:" +msgid "Using when departure and destination are in the contracted graph" +msgstr "Usando cuando la salida como el destino pertenecen al grafo contraído" -msgid "column ``id`` ascending when type is ``v``" -msgstr "columna ``id`` ascendente cuando el tipo = ``v``" +msgid "Using when departure/destination is not in the contracted graph" +msgstr "Usando cuando la salida /destino no pertenecen al grafo contraído" -msgid "column ``id`` descending when type is ``e``" -msgstr "columna ``id`` descendente cuando el tipo = ``e``" +msgid "Using when departure and destination are not in the contracted graph" +msgstr "Usando cuando la salida y el destino no están en el grafo contraído" -msgid "The pgr_contraction function has the following signature:" -msgstr "La función pgr_contraction tiene la siguiente firma:" +msgid "``pgr_contractionLinear`` - Proposed" +msgstr "``pgr_contractionLinear`` - Propuesto" -msgid "pgr_contraction(`Edges SQL`_, **contraction order**, [**options**])" +msgid "" +"``pgr_contractionLinear`` — Performs graph contraction and returns the " +"contracted vertices and edges." msgstr "" -"pgr_contraction(`SQL de aristas`_, **orden de contracción**, [**opciones**])" +"``pgr_contractionLinear`` — Realiza la contracción del grafo y devuelve los " +"vértices y aristas contraídos.." -msgid "**options:** ``[ max_cycles, forbidden_vertices, directed]``" -msgstr "**opcionales:** ``[ max_cycles, forbidden_vertices, directed]``" +msgid "pgr_contractionLinear(`Edges SQL`_, [**options**])" +msgstr "pgr_contractionLinear(`SQL de aristas`_, [**opciones**])" -msgid "Returns set of |result-contract|" -msgstr "Regresa conjunto de |result-contract|" +msgid "**options:** ``[directed, max_cycles, forbidden_vertices]``" +msgstr "**opciones:** ``[directed, forbidden_vertices]``" +msgid "Linear contraction on an undirected graph." +msgstr "Contracción lineal en un grafo no dirigido." + +#, fuzzy msgid "" -"Making a dead end and linear contraction in that order on an undirected " +"The green nodes are linear nodes and will not be part of the contracted " "graph." msgstr "" -"Hacer una contracción de callejón sin salida y una contracción lineal en ese " -"orden en un grafo no dirigido." +"En caso de ''true'' se contrae el vértice, no forma parte del grafo " +"contraído." + +#, fuzzy +msgid "All edges adjacent will not be part of the contracted graph." +msgstr "Aristas que pertenecen al grafo contraído." + +#, fuzzy +msgid "The red lines will be new edges of the contracted graph." +msgstr "Vértices que pertenecen al grafo contraído." msgid "**contraction Order**" msgstr "**Orden de contracciones**" -msgid "Ordered contraction operations." -msgstr "Operaciones de contracción ordenadas." - -msgid "1 = Dead end contraction" -msgstr "1 = Contracción sin salida" +msgid "" +"Number of times the contraction operations on ``contraction_order`` will be " +"performed." +msgstr "" +"Número de veces que se realizarán las operaciones de contracción en el orden " +"``contraction_order``." -msgid "2 = Linear contraction" -msgstr "2 - Contracción lineal" +msgid "A node connects two (or more) `linear` edges when" +msgstr "" -msgid "Contraction optional parameters" -msgstr "Parámetros opcionales de Contracción" +msgid "The number of adjacent vertices is 2." +msgstr "El número de vértices adyacentes es 2." -msgid "``forbidden_vertices``" -msgstr "``forbidden_vertices``" +msgid "In case of a directed graph, a node is considered a `linear` node when" +msgstr "En el caso de un grafo dirigido, un nodo se considera `lineal` cuando" -msgid "**Empty**" -msgstr "**vacío**" +msgid "Linearity is symmetrical." +msgstr "La linealidad es simétrica." -msgid "Identifiers of vertices forbidden for contraction." -msgstr "Identificadores de vértices prohibidos para contracción." +#, fuzzy +msgid "Linearity is not symmetrical" +msgstr "La linealidad es simétrica" -msgid ":math:`1`" -msgstr ":math:`1`" +msgid "Graph where linearity is not symmetrical." +msgstr "Grafo cuando la linealidad no es simétrica." msgid "" -"Number of times the contraction operations on ``contraction_order`` will be " -"performed." +"When the graph is processed as a directed graph, linearity is not " +"symmetrical, therefore the graph can not be contracted." msgstr "" -"Número de veces que se realizarán las operaciones de contracción en el orden " -"``contraction_order``." -msgid "The function returns a single row. The columns of the row are:" -msgstr "La función devuelve una sola fila. Las columnas de la fila son:" +msgid "" +"When the same graph is processed as an undirected graph, linearity is " +"symmetrical, therefore the graph can be contracted." +msgstr "" -msgid "``type``" -msgstr "``type``" +msgid "The three edges can be replaced by one undirected edge" +msgstr "Las tres aristas pueden ser reemplazadas por una arista no dirigida" -msgid "Type of the ``id``." -msgstr "Tipo del ``id``." +msgid "Edge :math:`1 - 3`." +msgstr "Arista :math:`1 - 3`." -msgid "``v`` when the row is a vertex." -msgstr "``v`` cuando la fila es un vértice." +msgid "With cost: :math:`4`." +msgstr "Con costo: :math:`4`." -msgid "Column ``id`` has a positive value" -msgstr "Columna ``id`` tiene valor positivo" +#, fuzzy +msgid "Contracted vertices in the edge: :math:`\\{2\\}`." +msgstr "Para un grafo dirigido con aristas :math:`\\{1, 2, 3, 4\\}`." -msgid "``e`` when the row is an edge." -msgstr "``e`` cuando la fila es una arista." +msgid "Linearity is symmetrical" +msgstr "La linealidad es simétrica" -msgid "Column ``id`` has a negative value" -msgstr "Columna ``id`` tiene valor negativo" +msgid "Graph where linearity is symmetrical." +msgstr "Grafo donde la linealidad es simétrica." -msgid "All numbers on this column are ``DISTINCT``" -msgstr "Todos los números de esta columna son ''DISTINTOS''" +#, fuzzy +msgid "The four edges can be replaced by two directed edges." +msgstr "El gráfico puede dirigido o no." -msgid "When ``type`` = **'v'**." -msgstr "En caso de ``type`` = **'v'**." +msgid "Edge :math:`3 - 1`." +msgstr "Arista :math:`3 - 1`." -msgid "Identifier of the modified vertex." -msgstr "Identificador del vértice modificado." +msgid "With cost: :math:`6`." +msgstr "Con costo: :math:`6`." -msgid "When ``type`` = **'e'**." -msgstr "En caso de ``type`` = **'e'**." +#, fuzzy +msgid "The four edges can be replaced by one undirected edge." +msgstr "El gráfico puede dirigido o no." -msgid "Decreasing sequence starting from **-1**." -msgstr "Disminución de la secuencia a partir de **-1**." +#, fuzzy +msgid "Step by step linear contraction" +msgstr "Sólo contracción lineal" msgid "" -"Representing a pseudo `id` as is not incorporated in the set of original " -"edges." +"The linear contraction will stop when there are no more linear edges. For " +"example from the following graph there are linear edges" msgstr "" -"Representando un pseudo `id` como no incorporado en el conjunto de aristas " -"originales." +"La contracción lineal se detendrá hasta que no hayan más aristas lineales. " +"Por ejemplo, en el siguiente grafo hay aristas lineales" -msgid "Array of contracted vertex identifiers." -msgstr "Arreglo de identificadores de vértices contraídos." +#, fuzzy +msgid "Contracting vertex :math:`3`," +msgstr "Contrayendo :math:`w`," -msgid "When ``type`` = **'v'**: :math:`-1`" -msgstr "En caso de ``type`` = **'v'**: :math:`-1`" +#, fuzzy +msgid "The vertex :math:`3` is removed from the graph" +msgstr "El vértice :math:`w` se elimina del grafo" +#, fuzzy msgid "" -"When ``type`` = **'e'**: Identifier of the source vertex of the current edge " -"(``source``, ``target``)." +"The edges :math:`2 \\rightarrow 3` and :math:`w \\rightarrow z` are removed " +"from the graph." msgstr "" -"En caso de ``type`` = **'e'**: Identificador del vétice de la arista actual " -"(``source``, ``target``)." +"Los aristas :math:`v \\rightarrow w` y :math:`w \\rightarrow z` fueron " +"eliminados del grafo." +#, fuzzy msgid "" -"When ``type`` = **'e'**: Identifier of the target vertex of the current edge " -"(``source``, ``target``)." +"A new edge :math:`2 \\rightarrow 4` is inserted represented with red color." msgstr "" -"En caso de ``type`` = **'e'**: Identificador del vértice objetivo de la " -"arista actual (``source``, ``target``)." +"Se inserta un nuevo arista :math:`v \\rightarrow z` y se representa con " +"color rojo." + +#, fuzzy +msgid "Contracting vertex :math:`2`:" +msgstr "Contrayendo :math:`v`:" + +#, fuzzy +msgid "The vertex :math:`2` is removed from the graph" +msgstr "El vértice :math:`w` se elimina del grafo" +#, fuzzy msgid "" -"When ``type`` = **'e'**: Weight of the current edge (``source``, ``target``)." +"The edges :math:`1 \\rightarrow 2` and :math:`2 \\rightarrow 3` are removed " +"from the graph." msgstr "" -"En caso de ``type`` = **'e'**: Peso de la arista actual (``source``, " -"``target``)." +"Los aristas :math:`v \\rightarrow w` y :math:`w \\rightarrow z` fueron " +"eliminados del grafo." -msgid "Only dead end contraction" -msgstr "Sólo contracción sin salida" +#, fuzzy +msgid "" +"A new edge :math:`1 \\rightarrow 3` is inserted represented with red color." +msgstr "" +"Se inserta un nuevo arista :math:`v \\rightarrow z` y se representa con " +"color rojo." -msgid "Only linear contraction" -msgstr "Sólo contracción lineal" +#, fuzzy +msgid "" +"Edge :math:`1 \\rightarrow 3` has the information of cost and the nodes that " +"were contracted." +msgstr "" +"El arista :math:`u \\rightarrow z` tiene la información de los nodos que " +"fueron contraídos." + +msgid "Create the contracted graph." +msgstr "Crear el grafo contraído." -msgid "pgr_createTopology" -msgstr "pgr_createTopology" +msgid "``pgr_createTopology``" +msgstr "``pgr_createTopology``" msgid "" "``pgr_createTopology`` — Builds a network topology based on the geometry " @@ -11667,11 +11592,8 @@ msgstr "" "En este ejemplo se inicia una topología limpia, con 5 aristas y, a " "continuación, se incrementa al resto de los bordes." -msgid "The example uses the :doc:`sampledata` network." -msgstr "En el ejemplo se utiliza la red :doc:`sampledata`." - -msgid "pgr_createVerticesTable" -msgstr "pgr_createVerticesTable" +msgid "``pgr_createVerticesTable``" +msgstr "``pgr_createVerticesTable``" msgid "" "``pgr_createVerticesTable`` — Reconstructs the vertices table based on the " @@ -11936,8 +11858,8 @@ msgstr "" "`Wikipedia: Ordenamiento Cuthill-McKee `__" -msgid "pgr_dagShortestPath - Experimental" -msgstr "pgr_dagShortestPath - Experimental" +msgid "``pgr_dagShortestPath`` - Experimental" +msgstr "``pgr_dagShortestPath`` - Experimental" msgid "" "``pgr_dagShortestPath`` — Returns the shortest path for weighted directed " @@ -12032,11 +11954,19 @@ msgstr "Columnas de Resultados" msgid "Making **start_vids** the same as **end_vids**" msgstr "Haciendo **vértices de salida** igual que **vértices destino**" +msgid "" +"`Boost: DAG shortest paths `__" +msgstr "" +"`Boost: Caminos mas cortos en DAG `__" + msgid "https://en.wikipedia.org/wiki/Topological_sorting" msgstr "https://en.wikipedia.org/wiki/Topological_sorting" -msgid "``pgr_degree`` -- Proposed" -msgstr "``pgr_degree`` -- Propuesto" +#, fuzzy +msgid "``pgr_degree``" +msgstr "pgr_degree" msgid "" "``pgr_degree`` — For each vertex in an undirected graph, return the count of " @@ -12045,28 +11975,92 @@ msgstr "" "``pgr_degree`` - Para cada vértice de un grafo no dirigido, devuelve el " "número de aristas incidentes en el vértice." -msgid "Calculates the degree of the vertices of an **undirected** graph" +msgid "Error messages adjustment." +msgstr "" + +msgid "New signature with only Edges SQL." +msgstr "" + +#, fuzzy +msgid "Calculates the degree of the vertices of an undirected graph" msgstr "Calcula el grado de los vértices de un grafo **no dirigido**" -msgid "pgr_degree(`Edges SQL`_ , `Vertex SQL`_, [``dryrun``])" -msgstr "pgr_degree(`SQL de aristas`_ , `SQL de vértices`_, [``dryrun``])" +#, fuzzy +msgid "" +"The degree (or valency) of a vertex of a graph is the number of edges that " +"are incident to the vertex." +msgstr "" +"``pgr_degree`` - Para cada vértice de un grafo no dirigido, devuelve el " +"número de aristas incidentes en el vértice." + +msgid "A loop contributes 2 to a vertex's degree." +msgstr "" + +msgid "A vertex with degree 0 is called an isolated vertex." +msgstr "" + +#, fuzzy +msgid "Isolated vertex is not part of the result" +msgstr "" +"Corrige la distancia de conducción cuando el vértice no forma parte del grafo" + +msgid "" +"Vertex not participating on the subgraph is considered and isolated vertex." +msgstr "" + +#, fuzzy +msgid "" +"There can be a ``dryrun`` execution and the code used to get the answer will " +"be shown in a PostgreSQL ``NOTICE``." +msgstr "" +"Dado que se trata de una ejecución **dry run**, el código de todos los " +"cálculos se muestra en el ``NOTICE`` de PostgreSQL." + +msgid "" +"The code can be used as base code for the particular application " +"requirements." +msgstr "" + +msgid "No ordering is performed." +msgstr "No se realiza ningún ordenamiento." + +#, fuzzy +msgid "pgr_degree(`Edges SQL`_ , [``dryrun``])" +msgstr "pgr_degree(`SQL de aristas`_ , `SQL de vértices`_, [``dryrun``])" + +msgid "pgr_degree(`Edges SQL`_ , `Vertex SQL`_, [``dryrun``])" +msgstr "pgr_degree(`SQL de aristas`_ , `SQL de vértices`_, [``dryrun``])" + +msgid "RETURNS SETOF |result-degree|" +msgstr "REGRESA CONJUNTO DE |result-degree|" + +msgid "Edges" +msgstr "" + +#, fuzzy +msgid "example" +msgstr "Ejemplo" + +msgid "Get the degree of the vertices defined on the edges table" +msgstr "Obtener el grado de los vértices definidos en la tabla de aristas" -msgid "RETURNS SETOF |result-degree|" -msgstr "REGRESA CONJUNTO DE |result-degree|" +#, fuzzy +msgid "Edges and Vertices" +msgstr "Añadiendo nuevos vértices" msgid "Extracting the vertex information" msgstr "Extraer la información del vértice" +msgid "``pgr_degree`` can use :doc:`pgr_extractVertices` embedded in the call." +msgstr "" + msgid "" -"pgr_degree can utilize output from `pgr_extractVertices` or can have " -"`pgr_extractVertices` embedded in the call. For decent size networks, it is " -"best to prep your vertices table before hand and use that vertices table for " -"pgr_degree calls." +"For decent size networks, it is best to prepare your vertices table before " +"hand and use it on ``pgr_degree`` calls. (See `Using a vertex table`_)" msgstr "" -"pgr_degree puede utilizar la salida de `pgr_extractVertices` o puede tener " -"`pgr_extractVertices` incrustado en la llamada. Para redes de tamaño " -"decente, lo mejor es preparar la tabla de vértices de antemano y utilizar " -"esa tabla de vértices para las llamadas pgr_degree." + +msgid "Calculate the degree of the nodes:" +msgstr "Calcula el grado de los vértices:" msgid "`Vertex SQL`_" msgstr "`SQL de vértices`_" @@ -12081,15 +12075,20 @@ msgid "When true do not process and get in a NOTICE the resulting query." msgstr "" "Cuando verdadero, no procesar y recibir un AVISO de la consulta resultante." +#, fuzzy +msgid "For the `Edges and Vertices`_ signature:" +msgstr "Sobre las firmas obsoletas:" + +#, fuzzy +msgid "For the `Edges`_ signature:" +msgstr "Sobre las firmas obsoletas:" + msgid "Vertex SQL" msgstr "SQL de vértices" msgid "``in_edges``" msgstr "``in_edges``" -msgid "``BIGINT[]``" -msgstr "``BIGINT[]``" - msgid "" "Array of identifiers of the edges that have the vertex ``id`` as *first end " "point*." @@ -12122,9 +12121,54 @@ msgstr "``degree``" msgid "Number of edges that are incident to the vertex ``id``" msgstr "Número de aristas incidentes al vértice ``id``" +#, fuzzy +msgid "Degree of a loop" +msgstr "Grado de un subgrafo" + +msgid "Using the `Edges`_ signature." +msgstr "Usando la firma `Aristas`_." + +msgid "Using the `Edges and Vertices`_ signature." +msgstr "" + msgid "Degree of a sub graph" msgstr "Grado de un subgrafo" +msgid "For the following is a subgraph of the :doc:`sampledata`:" +msgstr "Para el siguiente sub-grafo de :doc:`sampledata`:" + +msgid ":math:`E = \\{(1, 5 \\leftrightarrow 6), (1, 6 \\leftrightarrow 10)\\}`" +msgstr "" + +msgid ":math:`V = \\{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17\\}`" +msgstr "" + +msgid "The vertices not participating on the edge are considered isolated" +msgstr "" + +msgid "their degree is 0 in the subgraph and" +msgstr "" + +msgid "their degree is not shown in the output." +msgstr "" + +#, fuzzy +msgid "Using a vertex table" +msgstr "En la tabla de vértices" + +#, fuzzy +msgid "" +"For decent size networks, it is best to prepare your vertices table before " +"hand and use it on ``pgr_degree`` calls." +msgstr "" +"pgr_degree puede utilizar la salida de `pgr_extractVertices` o puede tener " +"`pgr_extractVertices` incrustado en la llamada. Para redes de tamaño " +"decente, lo mejor es preparar la tabla de vértices de antemano y utilizar " +"esa tabla de vértices para las llamadas pgr_degree." + +msgid "Extract the vertex information and save into a table:" +msgstr "Extraer la información del vértice y almacenar en una tabla:" + msgid "Dry run execution" msgstr "Ejecución de prueba" @@ -12142,19 +12186,39 @@ msgstr "" "Los resultados se pueden usar como código base para realizar un refinamiento " "basado en las necesidades de desarrollo de back-end." -msgid "Degree from an existing table" -msgstr "Grado a partir de una tabla existente" +#, fuzzy +msgid "Finding dead ends" +msgstr "Callejones sin salida" +#, fuzzy msgid "" -"If you have a vertices table already built using ``pgr_extractVertices`` and " -"want the degree of the whole graph rather than a subset, you can forgo using " -"pgr_degree and work with the ``in_edges`` and ``out_edges`` columns directly." +"If there is a vertices table already built using ``pgr_extractVertices`` and " +"want the degree of the whole graph rather than a subset, it can be forgo " +"using ``pgr_degree`` and work with the ``in_edges`` and ``out_edges`` " +"columns directly." msgstr "" "Si se tiene una tabla de vértices ya construida usando " "``pgr_extractVertices`` y se quiere el grado de todo el grafo en lugar de un " "subconjunto, se puede trabajar con las columnas ``in_edges`` y ``out_edges`` " "directamente." +msgid "The degree of a dead end is 1." +msgstr "El grado de un sin salida es 1." + +#, fuzzy +msgid "Finding linear vertices" +msgstr "Añadiendo nuevos vértices" + +#, fuzzy +msgid "The degree of a linear vertex is 2." +msgstr "El número de vértices adyacentes es 2." + +#, fuzzy +msgid "" +"If there is a vertices table already built using the ``pgr_extractVertices``" +msgstr "" +"Para obtener la información de los vértices, use :doc:`pgr_extractVertices`" + msgid ":doc:`pgr_extractVertices`" msgstr ":doc:`pgr_extractVertices`" @@ -12171,15 +12235,6 @@ msgstr "" msgid "Version 3.3.0" msgstr "Versión 3.3.0" -msgid "Promoted to **proposed** function" -msgstr "Promovido a función **propuesta**" - -msgid "``pgr_depthFirstSearch`` (`Single Vertex`_)" -msgstr "``pgr_depthFirstSearch`` (`Vértice único`_)" - -msgid "``pgr_depthFirstSearch`` (`Multiple Vertices`_)" -msgstr "``pgr_depthFirstSearch`` (`Vértices multiples`_)" - msgid "" "Depth First Search algorithm is a traversal algorithm which starts from a " "root vertex, goes as deep as possible, and backtracks once a vertex is " @@ -12249,18 +12304,18 @@ msgstr "" "Igual que `Vértice único`_ pero con aristas en orden descendente de ``id``." msgid "" -"`Boost: Depth First Search algorithm documentation `__" +"`Boost: Depth First Search `__" msgstr "" -"`Boost: Documentación del algoritmo de Primera Búsqueda de Profundidad " -"`__" +"`Boost: Primera Búsqueda de Profundidad `__" msgid "" -"`Boost: Undirected DFS algorithm documentation `__" +"`Boost: Undirected DFS `__" msgstr "" -"`Boost: Documentación del algoritmo DFS No dirigido `__" +"`Boost: DFS No dirigido `__" msgid "" "`Wikipedia: Depth First Search algorithm `__" +msgstr "" +"`Boost: Camino mas corto Dijkstra `__" + msgid "https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm" msgstr "https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm" @@ -12546,9 +12593,6 @@ msgstr "" "``pgr_dijkstraCost`` - Coste total del camino más corto utilizando el " "algoritmo de Dijkstra." -msgid "``pgr_dijkstraCost`` (`Combinations`_)" -msgstr "``pgr_dijkstraCost`` (`Combinaciones`_)" - msgid "" "The ``pgr_dijkstraCost`` function sumarizes of the cost of the shortest path " "using Dijkstra Algorithm." @@ -12906,9 +12950,6 @@ msgstr "Cuando ``true``: solo se devolverán los resultados del límite ``cap``" msgid "When ``false``: ``cap`` limit per ``Start vid`` will be returned" msgstr "Cuando ``false``: ``cap`` límite por ``Start vid`` será devuelto" -msgid "boost: https://www.boost.org/libs/graph/doc/table_of_contents.html" -msgstr "boost: https://www.boost.org/libs/graph/doc/table_of_contents.html" - msgid "Wikipedia: https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm" msgstr "Wikipedia: https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm" @@ -13113,6 +13154,9 @@ msgstr "" "``pgr_drivingDistance`` - Devuelve la distancia de manejo desde un nodo de " "inicio." +msgid "Standarizing output columns to |result-spantree|" +msgstr "Estandarización de columnas de resultados a |result-spantree|" + msgid "Added ``depth`` and ``start_vid`` result columns." msgstr "Agregado las columnas de resultados``depth`` y ``start_vid``." @@ -13123,14 +13167,17 @@ msgstr "" msgid "Added ``depth`` and ``pred`` result columns." msgstr "Agregado las columnas de resultados``depth`` y ``pred``." -msgid "Signature change pgr_drivingDistance(single vertex)" -msgstr "Cambio de firma pgr_drivingDistance(vértice único)" +msgid "Signature change:" +msgstr "Cambio de firma:" + +msgid "pgr_drivingDistance(single vertex)" +msgstr "pgr_drivingDistance(vértice único)" -msgid "New **Official** pgr_drivingDistance(multiple vertices)" -msgstr "Nuevo **Oficial** pgr_drivingDistance(multiples vértices)" +msgid "New official signature:" +msgstr "Nueva firma oficial:" -msgid "Official:: pgr_drivingDistance(single vertex)" -msgstr "Oficial:: pgr_drivingDistance(vértice único)" +msgid "pgr_drivingDistance(multiple vertices)" +msgstr "pgr_drivingDistance(múltiples vértices)" msgid "" "Using the Dijkstra algorithm, extracts all the nodes that have costs less " @@ -13199,8 +13246,8 @@ msgstr "" "Desde vértices math:`\\{11, 16\\}` con una distancia de :math:`3.0` en un " "grafo no dirigido" -msgid "pgr_edgeColoring - Experimental" -msgstr "pgr_edgeColoring - Experimental" +msgid "``pgr_edgeColoring`` - Experimental" +msgstr "``pgr_edgeColoring`` - Experimental" msgid "" "``pgr_edgeColoring`` — Returns the edge coloring of undirected and loop-free " @@ -13286,6 +13333,19 @@ msgstr "Regresa el conjunto de |result-edge-color|" msgid "Graph coloring of pgRouting :doc:`sampledata`" msgstr "Coloración de grafos de pgRouting :doc:`sampledata`" +msgid "" +"`Boost: Edge Coloring `__" +msgstr "" +"`Boost: Coloración de Segmentos `__" + +msgid "" +"`Wikipedia: Graph coloring `__" +msgstr "" +"`Wikipedia: Coloración de grafos `__" + msgid "``pgr_edgeDisjointPaths``" msgstr "``pgr_edgeDisjointPaths``" @@ -13296,9 +13356,6 @@ msgstr "" "``pgr_edgeDisjointPaths`` — Calcula las rutas de aristas desarticuladas " "entre dos grupos de vértices." -msgid "New **proposed** function:" -msgstr "Nueva función **propuesta**:" - msgid "pgr_edgeDisjointPaths(Combinations)" msgstr "pgr_edgeDisjointPaths(Combinaciones)" @@ -13403,9 +13460,6 @@ msgstr "" "maximizan el flujo de las fuentes a los destinos usando el algoritmo de " "Edmonds Karp." -msgid "``pgr_edmondsKarp`` (`Combinations`_)" -msgstr "``pgr_edmondsKarp`` (`Combinaciones`_)" - msgid "Renamed from ``pgr_maxFlowEdmondsKarp``" msgstr "Renombrado desde ``pgr_maxFlowEdmondsKarp``" @@ -13427,13 +13481,18 @@ msgstr "pgr_edmondsKarp(`SQL de aristas`_, **salidas**, **destinos**)" msgid "pgr_edmondsKarp(`Edges SQL`_, `Combinations SQL`_)" msgstr "pgr_edmondsKarp(`SQL de aristas`_, `SQL de combinaciones`_)" -msgid "https://www.boost.org/libs/graph/doc/edmonds_karp_max_flow.html" -msgstr "https://www.boost.org/libs/graph/doc/edmonds_karp_max_flow.html" +#, fuzzy +msgid "" +"`Boost: Edmonds Karp max flow `__" +msgstr "" +"`Boost: Flujo máximo Edmonds Karp `__" msgid "https://en.wikipedia.org/wiki/Edmonds%E2%80%93Karp_algorithm" msgstr "https://en.wikipedia.org/wiki/Edmonds%E2%80%93Karp_algorithm" -msgid "``pgr_edwardMoore - Experimental``" +msgid "``pgr_edwardMoore`` - Experimental" msgstr "``pgr_edwardMoore`` - Experimental" msgid "" @@ -13442,20 +13501,8 @@ msgstr "" "``pgr_edwardMoore`` — Devuelve la ruta más cortas usando el algoritmo Edward-" "Moore." -msgid "``pgr_edwardMoore`` (`Combinations`_)" -msgstr "``pgr_edwardMoore`` (`Combinaciones`_)" - -msgid "``pgr_edwardMoore`` (`One to One`_)" -msgstr "``pgr_edwardMoore`` (`Uno a Uno`_)" - -msgid "``pgr_edwardMoore`` (`One to Many`_)" -msgstr "``pgr_edwardMoore`` (`Uno a Muchos`_)" - -msgid "``pgr_edwardMoore`` (`Many to One`_)" -msgstr "``pgr_edwardMoore`` (`Muchos a Uno`_)" - -msgid "``pgr_edwardMoore`` (`Many to Many`_)" -msgstr "``pgr_edwardMoore`` (`Muchos a Muchos`_)" +msgid "pgr_edwardMoore(Combinations)" +msgstr "pgr_edwardMoore(Combinaciones)" msgid "" "Edward Moore’s Algorithm is an improvement of the Bellman-Ford Algorithm. It " @@ -13537,15 +13584,13 @@ msgstr "" msgid "https://en.wikipedia.org/wiki/Shortest_Path_Faster_Algorithm" msgstr "https://en.wikipedia.org/wiki/Shortest_Path_Faster_Algorithm" -msgid "pgr_extractVertices -- Proposed" -msgstr "pgr_extractVertices -- Propuesto" +#, fuzzy +msgid "``pgr_extractVertices``" +msgstr "pgr_extractVertices" msgid "``pgr_extractVertices`` — Extracts the vertices information" msgstr "``pgr_extractVertices`` — Extrae la información de los vértices" -msgid "Classified as **proposed** function" -msgstr "Clasicado como función **propuesta**" - msgid "" "This is an auxiliary function for extracting the vertex information of the " "set of edges of a graph." @@ -13662,14 +13707,8 @@ msgstr "" "``pgr_findCloseEdges`` - Encuentra las aristas cercanas a una geometría " "puntual." -msgid "New **proposed** signatures:" -msgstr "Nuevas firmas **propuestas**:" - -msgid "``pgr_findCloseEdges`` (`One point`_)" -msgstr "``pgr_findCloseEdges`` (`Un punto`_)" - -msgid "``pgr_findCloseEdges`` (`Many points`_)" -msgstr "``pgr_findCloseEdges`` (`Muchos puntos`_)" +msgid "``partial`` option is removed." +msgstr "Opción ``partial`` se elimina." msgid "" "``pgr_findCloseEdges`` - An utility function that finds the closest edge to " @@ -13691,7 +13730,8 @@ msgstr "" "El código para realizar los cálculos puede obtenerse para realizar los " "ajustes específicos que necesite la aplicación." -msgid "``EMTPY SET`` is returned on dryrun executions" +#, fuzzy +msgid "``EMPTY SET`` is returned on dryrun executions" msgstr "``EMTPY SET`` se devuelve en ejecuciones en seco" msgid "" @@ -13704,7 +13744,8 @@ msgid "" msgstr "" "pgr_findCloseEdges(`Edges SQL`_, **puntos**, **tolerancia**, [**options**])" -msgid "**options:** ``[cap, partial, dryrun]``" +#, fuzzy +msgid "**options:** ``[cap, dryrun]``" msgstr "**opcionales:** ``[cap, partial, dryrun]``" msgid "Returns set of |result-find|" @@ -13713,59 +13754,17 @@ msgstr "Regresa conjunto de |result-find|" msgid "One point" msgstr "Un punto" -msgid "Default: ``cap => 1``" -msgstr "Por defecto: ``cap => 1``" - -msgid "Maximum one row answer." -msgstr "Respuesta de una fila como máximo." - -msgid "Default: ``partial => true``" -msgstr "Por defecto: ``partial => true``" - -msgid "With less calculations as possible." -msgstr "Con menos cálculos posibles." - -msgid "Default: ``dryrun => false``" -msgstr "Por defecto: ``dryrun => false``" - -msgid "Process query" -msgstr "Consulta del proceso" - -msgid "Returns" -msgstr "Devuelve" - -msgid "values on ``edge_id``, ``fraction``, ``side`` columns." -msgstr "valores en las columnas ``edge_id``, ``fraction``, ``side``." +msgid "Get two close edges to points of interest with :math:`pid = 5`" +msgstr "" -msgid "``NULL`` on ``distance``, ``geom``, ``edge`` columns." -msgstr "``NULL`` en las columnas ``distance``, ``geom``, ``edge``." +msgid "``cap => 2``" +msgstr "``cap => 2``" msgid "Many points" msgstr "Muchos puntos" -msgid "" -"Find at most :math:`2` edges close to all vertices on the points of interest " -"table." -msgstr "" -"Encuentra como máximo :math:`2` aristas cercanas a todos los vértices de la " -"tabla de puntos de interés." - -msgid "One answer per point, as small as possible." -msgstr "Una respuesta por punto, lo más pequeña posible." - -msgid "" -"Columns ``edge_id``, ``fraction``, ``side`` and ``geom`` are returned with " -"values." -msgstr "" -"Las columnas ``edge_id``, ``fraction``, ``side`` y ``geom`` se devuelven con " -"valores." - -msgid "" -"``geom`` contains the original point geometry to assist on deterpartialing " -"to which point geometry the row belongs to." +msgid "For each points of interests, find the closest edge." msgstr "" -"``geom`` contiene la geometría de puntos original para ayudar a determinar a " -"qué geometría de puntos pertenece la fila." msgid "**point**" msgstr "**punto**" @@ -13791,19 +13790,6 @@ msgstr "Distancia máxima entre geometrías" msgid "Limit output rows" msgstr "Limitar las filas de salida" -msgid "``partial``" -msgstr "``parcial``" - -msgid "" -"When ``true`` only columns needed for :doc:`withPoints-category` are " -"calculated." -msgstr "" -"Cuando ``true`` sólo se calculan las columnas necesarias para :doc:" -"`withPoints-category`." - -msgid "When ``false`` all columns are calculated" -msgstr "Cuando ``false`` se calculan todas las columnas" - msgid "When ``false`` calculations are performed." msgstr "Cuando ``false`` se realizan los cálculos." @@ -13820,9 +13806,10 @@ msgstr "La geometría ``LINESTRING`` de la arista." msgid "When :math:`cap = 1`, it is the closest edge." msgstr "Cuando :math:`cap = 1`, es la arista más cercana." +#, fuzzy msgid "" -"Value in <0,1> that indicates the relative postition from the first end-" -"point of the edge." +"Value in <0,1> that indicates the relative position from the first end-point " +"of the edge." msgstr "" "El valor entre <0,1> indica la posición relativa desde el primer punto de la " "arista." @@ -13830,311 +13817,115 @@ msgstr "" msgid "Value in ``[r, l]`` indicating if the point is:" msgstr "Valor en ``[r, l]`` que indica si el punto es:" -msgid "In the right ``r``." -msgstr "A la derecha ``r``." - -msgid "In the left ``l``." -msgstr "A la izquierda ``l``." +#, fuzzy +msgid "At the right ``r`` of the segment." +msgstr "En cualquier lado del segmento." msgid "When the point is on the line it is considered to be on the right." msgstr "Cuando el punto está en la línea se considera que está a la derecha." +#, fuzzy +msgid "At the left ``l`` of the segment." +msgstr "En cualquier lado del segmento." + msgid "``distance``" msgstr "``distancia``" -msgid "Distance from point to edge." +#, fuzzy +msgid "Distance from the point to the edge." msgstr "Distancia del punto a la arista." -msgid "``NULL`` when ``cap = 1`` on the `One point`_ signature" -msgstr "``NULL`` cuando ``cap = 1`` en la firma de `Un punto`_" - -msgid "``POINT`` geometry" -msgstr "geometría ``POINT``" - -msgid "" -"`One Point`_: Contains the point on the edge that is ``fraction`` away from " -"the starting point of the edge." -msgstr "" -"`Un Punto`_: Contiene el punto de la arista que está a ``fraction`` del " -"punto inicial de la arista." - -msgid "`Many Points`_: Contains the corresponding **original point**" -msgstr "`Muchos Puntos`_: Contiene el **punto original** correspondiente" +msgid "Original ``POINT`` geometry." +msgstr "Geometría original ``POINT``." +#, fuzzy msgid "" -"``LINESTRING`` geometry from the **original point** to the closest point of " -"the edge with identifier ``edge_id``" +"``LINESTRING`` geometry that connects the original **point** to the closest " +"point of the edge with identifier ``edge_id``" msgstr "" "Geometría ``LINESTRING`` desde el **punto original** hasta el punto más " "cercano de la arista con identificador ``edge_id``" -msgid "One point results" -msgstr "Resultados de un punto" - -msgid "The green nodes is the **original point**" -msgstr "Los nodos verdes son el **punto original**" - -msgid "" -"The geometry ``geom`` is a point on the :math:`sp \\rightarrow ep` edge." -msgstr "" -"La geometría ``geom`` es un punto en la arista :math:`sp \\rightarrow ep`." - -msgid "" -"The geometry ``edge`` is a line that connects the **original point** with " -"``geom``" -msgstr "" -"La geometría ``edge`` es una línea que conecta el **punto original** con " -"``geom``" - -msgid "Many point results" -msgstr "Resultados de muchos puntos" +#, fuzzy +msgid "One point in an edge" +msgstr "Ejecución en seco de un punto" -msgid "The green nodes are the **original points**" -msgstr "Los nodos verdes son los **puntos originales**" +msgid "The green node is the original point." +msgstr "El nodo verde es el punto original." -msgid "" -"The geometry ``geom``, marked as **g1** and **g2** are the **original " -"points**" -msgstr "" -"La geometría ``geom``, marcada como **g1** y **g2** son los **puntos " -"originales**" +msgid "``geom`` has the value of the original point." +msgstr "``geom`` Tiene el valor del punto original." +#, fuzzy msgid "" -"The geometry ``edge``, marked as **edge1** and **edge2** is a line that " -"connects the **original point** with the closest point on the :math:`sp " -"\\rightarrow ep` edge." +"The geometry ``edge`` is a line that connects the original point with the " +"edge :math:`sp \\rightarrow ep` edge." msgstr "" "La geometría ``edge``, marcada como **edge1** y **edge2** es una línea que " "conecta el **punto original** con el punto más cercano de la arista :math:" "`sp \\rightarrow ep`." -msgid "One point examples" -msgstr "Ejemplos de un punto" - -msgid "At most two answers" -msgstr "Como máximo dos respuestas" - -msgid "``cap => 2``" -msgstr "``cap => 2``" - -msgid "Maximum two row answer." -msgstr "Respuesta de dos filas como máximo." - -msgid "Understanding the result" -msgstr "Comprendiendo el resultado" - -msgid "``NULL`` on ``geom``, ``edge``" -msgstr "``NULL`` en ``geom``, ``edge``" - -msgid "``edge_id`` identifier of the edge close to the **original point**" -msgstr "``edge_id`` identificador de la arista cercana al **punto original**" - -msgid "" -"Two edges are withing :math:`0.5` distance units from the **original " -"point**: :math:`{5, 8}`" -msgstr "" -"Dos aristas están a menos de :math:`0.5` unidades de distancia del **punto " -"original**: :math:`{5, 8}`" - -msgid "For edge :math:`5`:" -msgstr "Para la arista :math:`5`:" - -msgid "" -"``fraction``: The closest point from the **original point** is at the :math:" -"`0.8` fraction of the edge :math:`5`." -msgstr "" -"``fraction``: El punto más cercano desde el **punto original** está en la " -"fracción :math:`0.8` del borde :math:`5`." - -msgid "" -"``side``: The **original point** is located to the left side of edge :math:" -"`5`." +#, fuzzy +msgid "The point is located at the left of the edge." msgstr "" "``side``: El **punto original** está situado a la izquierda de la arista :" "math:`5`." -msgid "" -"``distance``: The **original point** is located :math:`0.1` length units " -"from edge :math:`5`." -msgstr "" -"``distance``: El **punto original** está situado a :math:`0.1` unidades de " -"longitud de la arista :math:`5`." - -msgid "For edge :math:`8`:" -msgstr "Para la arista :math:`8`:" - -msgid "" -"``fraction``: The closest point from the **original point** is at the :math:" -"`0.89..` fraction of the edge :math:`8`." -msgstr "" -"``fraction``: El punto más cercano desde el **punto original** está en la " -"fracción :math:`0.89..` del borde :math:`8`." - -msgid "" -"``side``: The **original point** is located to the right side of edge :math:" -"`8`." -msgstr "" -"``side``: El **punto original** está situado a la derecha de la arista :math:" -"`8`." - -msgid "" -"``distance``: The **original point** is located :math:`0.19..` length units " -"from edge :math:`8`." -msgstr "" -"``distance``: El **punto original** se encuentra a :math:`0.19..` unidades " -"de longitud de la arista :math:`8`." - -msgid "One answer, all columns" -msgstr "Una respuesta, todas las columnas" - -msgid "``partial => false``" -msgstr "``partial => false``" - -msgid "Calculate all columns" -msgstr "Calcular todas las columnas" - -msgid "" -"``edge_id`` identifier of the edge **closest** to the **original point**" -msgstr "" -"``edge_id`` identificador de la arista **más cercana** al **punto original**" - -msgid "" -"From all edges within :math:`0.5` distance units from the **original " -"point**: :math:`{5}` is the closest one." -msgstr "" -"De todos los bordes dentro de :math:`0.5` unidades de distancia desde el " -"**punto original**: :math:`{5}` es el más cercano." - -msgid "" -"``geom``: Contains the geometry of the closest point on edge :math:`5` from " -"the **original point**." -msgstr "" -"``geom``: Contiene la geometría del punto más cercano de la arista :math:`5` " -"desde el **punto original**." - -msgid "" -"``edge``: Contains the ``LINESTRING`` geometry of the **original point** to " -"the closest point on on edge :math:`5` ``geom``" -msgstr "" -"``edge``: Contiene la geometría ``LINESTRING`` del **punto original** al " -"punto más cercano de la arista :math:`5` ``geom``" - -msgid "At most two answers with all columns" -msgstr "Como máximo dos respuestas con todas las columnas" - -msgid "Understanding the result:" -msgstr "Comprender el resultado:" - -msgid "" -"``geom``: Contains the geometry of the closest point on edge :math:`8` from " -"the **original point**." -msgstr "" -"``geom``: Contiene la geometría del punto más cercano de la arista :math:`8` " -"desde el **punto original**." - -msgid "" -"``edge``: Contains the ``LINESTRING`` geometry of the **original point** to " -"the closest point on on edge :math:`8` ``geom``" -msgstr "" -"``borde``: Contiene la geometría ``LINESTRING`` del **punto original** al " -"punto más cercano de la arista :math:`8` ``geom``" - msgid "One point dry run execution" msgstr "Ejecución en seco de un punto" +#, fuzzy +msgid "Using the query from the previous example:" +msgstr "Usando este diseño de tabla para este ejemplo:" + msgid "Returns ``EMPTY SET``." msgstr "Devuelve ``CONJUNTO VACÍO``." -msgid "``partial => true``" -msgstr "``partial => true``" - -msgid "Is ignored" -msgstr "Se ignora" - -msgid "" -"Because it is a **dry run** excecution, the code for all calculations are " -"shown on the PostgreSQL ``NOTICE``." -msgstr "" -"Dado que se trata de una ejecución **dry run**, el código de todos los " -"cálculos se muestra en el ``NOTICE`` de PostgreSQL." - msgid "``dryrun => true``" msgstr "``dryrun => true``" -msgid "Do not process query" -msgstr "No procesar la consulta" +msgid "Generates a PostgreSQL ``NOTICE`` with the code used." +msgstr "Genera un ``NOTICE`` de PostgreSQL con el código utilizado." msgid "" -"Generate a PostgreSQL ``NOTICE`` with the code used to calculate all columns" +"The generated code can be used as a starting base code for additional " +"requirements, like taking into consideration the SRID." msgstr "" -"Generar un ``NOTICE`` de PostgreSQL con el código utilizado para calcular " -"todas las columnas" -msgid "``cap`` and **original point** are used in the code" -msgstr "``cap`` y **punto original** se utilizan en el código" - -msgid "Many points examples" +#, fuzzy +msgid "Many points in an edge" msgstr "Ejemplos de muchos puntos" -msgid "At most two answers per point" -msgstr "Un máximo de dos respuestas por punto" - -msgid "``NULL`` on ``edge``" -msgstr "``NULL`` en ``edge``" - -msgid "" -"``edge_id`` identifier of the edge close to a **original point** (``geom``)" -msgstr "" -"``edge_id`` identificador de la arista cercana a un **punto original** " -"(``geom``)" +msgid "The green nodes are the **original points**" +msgstr "Los nodos verdes son los **puntos originales**" msgid "" -"Two edges at most withing :math:`0.5` distance units from each of the " -"**original points**:" -msgstr "" -"Dos aristas a un máximo de :math:`0.5` unidades de distancia de cada uno de " -"los **puntos originales**:" - -msgid "For ``POINT(1.8 0.4)`` and ``POINT(0.3 1.8)`` only one edge was found." +"The geometry ``geom``, marked as **g1** and **g2** are the **original " +"points**" msgstr "" -"Para ``POINT(1.8 0.4)`` y ``POINT(0.3 1.8)`` sólo se encontró una arista." - -msgid "For the rest of the points two edges were found." -msgstr "Para el resto de los puntos se encontraron dos aristas." - -msgid "For point ``POINT(2.9 1.8)``" -msgstr "Para el punto ``POINT(2.9 1.8)``" +"La geometría ``geom``, marcada como **g1** y **g2** son los **puntos " +"originales**" msgid "" -"Edge :math:`5` is before :math:`8` therefore edge :math:`5` has the shortest " -"distance to ``POINT(2.9 1.8)``." +"The geometry ``edge``, marked as **edge1** and **edge2** is a line that " +"connects the **original point** with the closest point on the :math:`sp " +"\\rightarrow ep` edge." msgstr "" -"La arista :math:`5` está antes que la arista :math:`8` por lo tanto la " -"arista :math:`5` tiene la distancia más corta a ``POINT(2.9 1.8)``." - -msgid "One answer per point, all columns" -msgstr "Una respuesta por punto, todas las columnas" - -msgid "For the **original point** ``POINT(2.9 1.8)``" -msgstr "Para el **punto original** ``POINT(2.9 1.8)``" +"La geometría ``edge``, marcada como **edge1** y **edge2** es una línea que " +"conecta el **punto original** con el punto más cercano de la arista :math:" +"`sp \\rightarrow ep`." -msgid "Edge :math:`5` is the closest edge to the **original point**" -msgstr "La arista :math:`5` es la más cercana al **punto original**" +msgid "Many points dry run execution" +msgstr "Ejecución en seco de muchos puntos" -msgid "" -"``geom``: Contains the geometry of the **original point** ``POINT(2.9 1.8)``" -msgstr "" -"``geom``: Contiene la geometría del **punto original** ``POINT(2.9 1.8)``" +msgid "Do not process query" +msgstr "No procesar la consulta" msgid "" -"``edge``: Contains the ``LINESTRING`` geometry of the **original point** " -"(``geom``) to the closest point on on edge." +"Generate a PostgreSQL ``NOTICE`` with the code used to calculate all columns" msgstr "" -"``edge``: Contiene la geometría ``LINESTRING`` del **punto original** " -"(``geom``) al punto más cercano en el borde." - -msgid "Many points dry run execution" -msgstr "Ejecución en seco de muchos puntos" +"Generar un ``NOTICE`` de PostgreSQL con el código utilizado para calcular " +"todas las columnas" msgid "Find at most two routes to a given point" msgstr "Encontrar como máximo dos rutas a un punto dado" @@ -14177,14 +13968,13 @@ msgstr "" msgid "A unique identifier." msgstr "Un identificador único." -msgid "" -"Identifier of the edge nearest edge that allows an arrival to the point." -msgstr "" -"Identificador de la arista más cercana que permite una llegada al punto." +#, fuzzy +msgid "Identifier of the nearest segment." +msgstr "Identificador del vértice." -msgid "Is it on the left, right or both sides of the segment ``edge_id``" +msgid "Is it on the left, right or both sides of the segment ``edge_id``." msgstr "" -"Está a la izquierda, a la derecha o a ambos lados del segmento ``edge_id``" +"Está a la izquierda, a la derecha o a ambos lados del segmento ``edge_id``." msgid "Where in the segment is the point located." msgstr "En qué parte del segmento se encuentra el punto." @@ -14192,15 +13982,40 @@ msgstr "En qué parte del segmento se encuentra el punto." msgid "The geometry of the points." msgstr "La geometría de los puntos." +msgid "The distance between ``geom`` and the segment ``edge_id``." +msgstr "La distancia entre ``geom`` y el segmento ``edge_id``." + +msgid "" +"A segment that connects the ``geom`` of the point to the closest point on " +"the segment ``edge_id``." +msgstr "" +"Un segmento que conecta la ``geom`` del punto al punto mas cercano al " +"segmento ``edge_id``." + msgid "``newPoint``" msgstr "``newPoint``" -msgid "The geometry of the points moved on top of the segment." -msgstr "La geometría de los puntos desplazados sobre el segmento." +msgid "A point on segment ``edge_id`` that is the closest to ``geom``." +msgstr "" -msgid "Points of interest fillup" +#, fuzzy +msgid "Points of interest fill up" msgstr "LLenado de puntos de interés" +msgid "Inserting the points of interest." +msgstr "Insertando los puntos de interés." + +msgid "Filling the rest of the table." +msgstr "Llenando el resto de la tabla." + +msgid "" +"Any other additional modification: In this manual, point :math:`6` can be " +"reached from both sides." +msgstr "" + +msgid "The points of interest:" +msgstr "Los puntos de interés:" + msgid "``pgr_floydWarshall``" msgstr "``pgr_floydWarshall``" @@ -14235,9 +14050,6 @@ msgstr "" "Boost `Algoritmo floyd-Warshall `_" -msgid "Queries uses the :doc:`sampledata` network." -msgstr "Consultas utilizan la red :doc:`sampledata`." - msgid "``pgr_full_version``" msgstr "``pgr_full_version``" @@ -14247,9 +14059,6 @@ msgstr "" "``pgr_full_version`` — Obtener los detalles de la información de la versión " "de pgRouting." -msgid "New **official** function" -msgstr "Nueva función **oficial**" - msgid "Get complete details of pgRouting version information" msgstr "Obtener los detalles de la información de la versión de pgRouting" @@ -14316,19 +14125,17 @@ msgstr "``hash``" msgid "Git hash of pgRouting build" msgstr "Hash de Git de pgRouting" -msgid "``pgr_hawickCircuits - Experimental``" -msgstr "``pgr_hawickCircuits - Experimental``" +msgid "``pgr_hawickCircuits`` - Experimental" +msgstr "``pgr_hawickCircuits`` - Experimental" +#, fuzzy msgid "" -"``pgr_hawickCircuits`` — Returns the list of cirucits using hawick circuits " +"``pgr_hawickCircuits`` — Returns the list of ciruits using hawick circuits " "algorithm." msgstr "" "``pgr_hawickCircuits`` — Enumeración de los circuitos usando el algoritmo de " "circutos de Hawick." -msgid "``pgr_hawickCircuits``" -msgstr "``pgr_hawickCircuits``" - msgid "" "Hawick Circuit algorithm, is published in 2008 by Ken Hawick and Health A. " "James. This algorithm solves the problem of detecting and enumerating " @@ -14480,8 +14287,12 @@ msgstr "" "El nuevo grafo no es planar porque tiene un subgráfico :math:`K_5`. Las " "aristas en azul representan el subgrafo :math:`K_5`." -msgid "https://www.boost.org/libs/graph/doc/boyer_myrvold.html" -msgstr "https://www.boost.org/libs/graph/doc/boyer_myrvold.html" +msgid "" +"`Boost: Boyer Myrvold `__" +msgstr "" +"`Boost: Boyer Myrvold `__" msgid "``pgr_johnson``" msgstr "``pgr_johnson``" @@ -14549,6 +14360,9 @@ msgstr "" "``pgr_kruskalBFS`` — Algoritmo de Kruskal para el Árbol de Expansión Mínimo " "con orden de Primera Búsqueda en Anchura." +msgid "Added ``pred`` result columns." +msgstr "Agregado columna de resultados ``pred``." + msgid "" "Visits and extracts the nodes information in Breath First Search ordering of " "the Minimum Spanning Tree created using Kruskal's algorithm." @@ -14648,8 +14462,8 @@ msgstr "pgr_kruskalDFS(`SQL de aristas`_, **raíz**, [``max_depth``])" msgid "pgr_kruskalDFS(`Edges SQL`_, **root vids**, [``max_depth``])" msgstr "pgr_kruskalDFS(`SQL de aristas`_, **raices**, [``max_depth``])" -msgid "pgr_lengauerTarjanDominatorTree -Experimental" -msgstr "pgr_lengauerTarjanDominatorTree -Experimental" +msgid "``pgr_lengauerTarjanDominatorTree`` - Experimental" +msgstr "``pgr_lengauerTarjanDominatorTree`` - Experimental" msgid "" "``pgr_lengauerTarjanDominatorTree`` — Returns the immediate dominator of all " @@ -14714,11 +14528,11 @@ msgid "Dominator tree of another component." msgstr "Árbnol dominante de otro componente." msgid "" -"`Boost: Lengauer-Tarjan dominator tree algorithm `__" +"`Boost: Lengauer-Tarjan dominator `__" msgstr "" -"`Boost: Algoritmo Lengauer-Tarjan de árbol dominante `__" +"`Boost: Árbol dominante Lengauer-Tarjan `__" msgid "" "`Wikipedia: dominator tree `__" -msgid "pgr_lineGraph - Proposed" -msgstr "pgr_lineGraph - Propuesto" +msgid "``pgr_lineGraph`` - Proposed" +msgstr "``pgr_lineGraph`` - Propuesto" msgid "" "``pgr_lineGraph`` — Transforms the given graph into its corresponding edge-" @@ -14737,6 +14551,9 @@ msgstr "" "``pgr_lineGraph`` — Transforma un grafo dado en su grafo correspondiente " "basado en aristas." +msgid "Works for directed and undirected graphs." +msgstr "Funciona para grafos dirigidos y no dirigidos." + msgid "" "Given a graph :math:`G`, its line graph :math:`L(G)` is a graph such that:" msgstr "" @@ -14787,16 +14604,10 @@ msgstr "Para un grafo no dirigido con aristas :math:'{2,4,5,8}'" msgid "Gives a local identifier for the edge" msgstr "Da un identificador local de la arista" -msgid "Identifier of the source vertex of the current edge." -msgstr "Identificador del vértice de origen de la arista actual." - msgid "When `negative`: the source is the reverse edge in the original graph." msgstr "" "Cuando es 'negativo': el origen es la arista inversa en el grafo original." -msgid "Identifier of the target vertex of the current edge." -msgstr "Identificador del vértice destino de la arista actual." - msgid "When `negative`: the target is the reverse edge in the original graph." msgstr "" "Cuando es `negativo`: el destino es la arista inversa en el grafo original." @@ -15054,16 +14865,14 @@ msgstr "" "Grafo de línea completa del subgrafo de las aristas :math:`\\{4, 7, 8, 10\\}`" msgid "" -"The examples of this section are based on the :doc:`sampledata` network. The " -"examples include the subgraph including edges 4, 7, 8, and 10 with " +"The examples include the subgraph including edges 4, 7, 8, and 10 with " "``reverse_cost``." msgstr "" -"Los ejemplos de esta sección se basan en la red :doc:`sampledata`. Los " -"ejemplos incluyen el subgrafo que incluye las aristas 4, 7, 8 y 10 con " +"Los ejemplos incluyen el sub-grafo que incluye las aristas 4, 7, 8 y 10 con " "``reverse_cost``." msgid "The data" -msgstr "" +msgstr "Los datos" msgid "" "This example displays how this graph transformation works to create " @@ -15079,7 +14888,7 @@ msgid "first" msgstr "primero" msgid "The transformation" -msgstr "" +msgstr "La transformación" msgid "|second|" msgstr "|second|" @@ -15122,7 +14931,7 @@ msgid "" msgstr "" msgid "Store edge results" -msgstr "" +msgstr "Almacenar resultados de aristas" msgid "" "The first step is to store the results of the ``pgr_lineGraphFull`` call " @@ -15136,7 +14945,7 @@ msgid "From the original graph's vertex information" msgstr "" msgid "Add the new vertices" -msgstr "" +msgstr "Agregar nuevos vértices" msgid "Filling the mapping table" msgstr "" @@ -15156,7 +14965,7 @@ msgid "Updating values from self loops" msgstr "" msgid "Inspecting the vertices table" -msgstr "" +msgstr "Inspeccionando la tabla de vértices" msgid "Updating from inner self loops" msgstr "" @@ -15298,18 +15107,18 @@ msgstr "pgr_makeConnected(`SQL de aristas`_)" msgid "Returns set of |result-component-make|" msgstr "Regresa conjunto de |result-component-make|" +msgid "List of edges that are needed to connect the graph." +msgstr "Lista de aristas que se necesitan para conectar el grafo." + msgid "" -"Query done on :doc:`sampledata` network gives the list of edges that are " -"needed to connect the graph." +"`Boost: make connected `__" msgstr "" -"La consulta realizada en la red de :doc:`sampledata` proporciona la lista de " -"aristas que se necesitan en el grafo para conectarlo." - -msgid "https://www.boost.org/libs/graph/doc/make_connected.html" -msgstr "https://www.boost.org/libs/graph/doc/make_connected.html" +"`Boost: conectar `__" -msgid "pgr_maxCardinalityMatch" -msgstr "pgr_maxCardinalityMatch" +msgid "``pgr_maxCardinalityMatch``" +msgstr "``pgr_maxCardinalityMatch``" msgid "" "``pgr_maxCardinalityMatch`` — Calculates a maximum cardinality matching in a " @@ -15318,14 +15127,17 @@ msgstr "" "``pgr_maxCardinalityMatch`` — Calcula una coincidencia de cardinalidad " "máxima en un grafo." +msgid "pgr_maxCardinalityMatch(text) returns only ``edge`` column." +msgstr "pgr_maxCardinalityMatch(text) regresa solamente la columna ``edge``." + msgid "Deprecated signature" msgstr "" -msgid "``pgr_maxCardinalityMatch(text,boolean)``" -msgstr "``pgr_maxCardinalityMatch(text,boolean)``" +msgid "pgr_maxCardinalityMatch(text,boolean)" +msgstr "pgr_maxCardinalityMatch(text,boolean)" -msgid "``directed => false`` when used." -msgstr "" +msgid "directed => ``false`` when used." +msgstr "Con directed => `` false`` cuando se usa." msgid "Renamed from ``pgr_maximumCardinalityMatching``" msgstr "Renombrado de ``pgr_maximumCardinalityMatching``" @@ -15385,8 +15197,12 @@ msgstr "" msgid "Identifier of the edge in the original query." msgstr "Identificador de la arista en la consulta original." -msgid "https://www.boost.org/libs/graph/doc/maximum_matching.html" -msgstr "https://www.boost.org/libs/graph/doc/maximum_matching.html" +msgid "" +"`Boost: maximum_matching `__" +msgstr "" +"`Boost: Coincidencia máxima `__" msgid "https://en.wikipedia.org/wiki/Matching_%28graph_theory%29" msgstr "https://en.wikipedia.org/wiki/Matching_%28graph_theory%29" @@ -15404,12 +15220,6 @@ msgstr "" "``pgr_maxFlow`` — Calcula el flujo máximo en un gráfico dirigido desde los " "orígene(s) a los destino(s) mediante el algoritmo Push Relabel." -msgid "``pgr_maxFlow`` (`Combinations`_)" -msgstr "``pgr_maxFlow`` (`Combinaciones`_)" - -msgid "New **Proposed** function" -msgstr "Nueva función **Propuesta**" - msgid "Calculates the maximum flow from the sources to the targets." msgstr "Calcula el flujo máximo de las fuentes a los objetivos." @@ -15418,6 +15228,9 @@ msgid "" msgstr "" "Cuando el flujo máximo es **0**, entonces no hay flujo y se devuelve **0**." +msgid "There is no flow when source has the same vaule as target." +msgstr "No hay flujo cuando el origen tiene el mismo valor que el destino." + msgid "Uses the :doc:`pgr_pushRelabel ` algorithm." msgstr "Use el algoritmo :doc:`pgr_pushRelabel ` ." @@ -15445,8 +15258,12 @@ msgstr "" msgid "Maximum flow possible from the source(s) to the target(s)" msgstr "Flujo máximo posible desde el/los orígen(es) hacia el/los destino(s)" -msgid "https://www.boost.org/libs/graph/doc/push_relabel_max_flow.html" -msgstr "https://www.boost.org/libs/graph/doc/push_relabel_max_flow.html" +msgid "" +"`Boost: push relabel max flow `__" +msgstr "" +"`Boost: Flujo máximo empujar reetiquetar `__" msgid "" "https://en.wikipedia.org/wiki/Push%E2%80%93relabel_maximum_flow_algorithm" @@ -15463,8 +15280,11 @@ msgstr "" "``pgr_maxFlowMinCost`` — Calcula las aristas que minimiza el costo del flujo " "maximo en un grafo" -msgid "``pgr_maxFlowMinCost`` (`Combinations`_)" -msgstr "``pgr_maxFlowMinCost`` (`Combinaciones`_)" +msgid "pgr_maxFlowMinCost(Combinations)" +msgstr "pgr_maxFlowMinCost(Combinaciones)" + +msgid "|boost| graph inside." +msgstr "|boost| graph adentro." msgid "**TODO** check which statement is true:" msgstr "**Por hacer** comprobar qué declaración es verdadera:" @@ -15513,13 +15333,6 @@ msgstr "pgr_maxFlowMinCost(`SQL de aristas`_, `SQL de combinaciones`_)" msgid "Returns set of |result-flow-mincost|" msgstr "Regresa el conjunto de |result-flow-mincost|" -msgid "" -"https://www.boost.org/libs/graph/doc/" -"successive_shortest_path_nonnegative_weights.html" -msgstr "" -"https://www.boost.org/libs/graph/doc/" -"successive_shortest_path_nonnegative_weights.html" - msgid "``pgr_maxFlowMinCost_Cost`` - Experimental" msgstr "``pgr_maxFlowMinCost_Cost`` - Experimental" @@ -15530,8 +15343,8 @@ msgstr "" "``pgr_maxFlowMinCost_Cost`` — Calcula el costo mínimo para el máximo flujo " "en un grafo" -msgid "``pgr_maxFlowMinCost_Cost`` (`Combinations`_)" -msgstr "``pgr_maxFlowMinCost_Cost`` (`Combinaciones`_)" +msgid "pgr_maxFlowMinCost_Cost(Combinations)" +msgstr "pgr_maxFlowMinCost_Cost(Combinaciones)" msgid "**The cost value of all input edges must be nonnegative.**" msgstr "" @@ -15567,8 +15380,8 @@ msgstr "" "Coste Mínimo Flujo Máximo posible desde el/los origen(es) hasta el/los " "objetivo(s)" -msgid "pgr_nodeNetwork" -msgstr "pgr_nodeNetwork" +msgid "``pgr_nodeNetwork``" +msgstr "``pgr_nodeNetwork``" msgid "``pgr_nodeNetwork`` - Nodes an network edge table." msgstr "" @@ -15952,6 +15765,8 @@ msgstr "Firma" msgid "" "pgr_pickDeliver(`Orders SQL`_, `Vehicles SQL`_, `Matrix SQL`_, [**options**])" msgstr "" +"pgr_pickDeliver(`SQL de ordenes`_, `SQL de vehículos`_, `SQL de matriz`_, " +"[**opciones**])" msgid "**options:** ``[factor, max_cycles, initial_sol]``" msgstr "**opcionales:** ``[factor, max_cycles, initial_sol]``" @@ -16060,7 +15875,7 @@ msgid "" "projectweb/top/pdptw/li-lim-benchmark/" msgstr "" -msgid "There are 25 vehciles in the problem all with the same characteristics." +msgid "There are 25 vehicles in the problem all with the same characteristics." msgstr "" msgid "The original orders" @@ -16071,7 +15886,7 @@ msgid "" "order." msgstr "" -msgid "The original data needs to be converted to an appropiate table:" +msgid "The original data needs to be converted to an appropriate table:" msgstr "" msgid "The query" @@ -16191,9 +16006,6 @@ msgstr "" "``pgr_pushRelabel`` — Calcula el flujo en los bordes del grafo que maximiza " "el flujo de los orígenes a los destinos mediante el Algoritmo Push Relabel." -msgid "``pgr_pushRelabel`` (`Combinations`_)" -msgstr "``pgr_pushRelabel`` (`Combinaciones`_)" - msgid "Renamed from ``pgr_maxFlowPushRelabel``" msgstr "Renombrado de ``pgr_maxFlowPushRelabel``" @@ -16212,8 +16024,8 @@ msgstr "pgr_pushRelabel(`SQL de aristas`_, **salidas**, **destinos**)" msgid "pgr_pushRelabel(`Edges SQL`_, `Combinations SQL`_)" msgstr "pgr_pushRelabel(`SQL de aristas`_, `SQL de combinaciones`_)" -msgid "pgr_sequentialVertexColoring - Proposed" -msgstr "pgr_sequentialVertexColoring - Propuesto" +msgid "``pgr_sequentialVertexColoring`` - Proposed" +msgstr "``pgr_sequentialVertexColoring`` - Propuesto" msgid "" "``pgr_sequentialVertexColoring`` — Returns the vertex coloring of an " @@ -16222,9 +16034,6 @@ msgstr "" "``pgr_sequentialVertexColoring`` — Devuelve el color de vértice de un grafo " "no dirigido, utilizando un enfoque codicioso." -msgid "Promoted to **proposed** signature" -msgstr "Promovido a firma **propuesta**" - msgid "" "Sequential vertex coloring algorithm is a graph coloring algorithm in which " "color identifiers are assigned to the vertices of a graph in a sequential " @@ -16283,8 +16092,15 @@ msgstr ":math:`k` es el número de colores utilizados." msgid "pgr_sequentialVertexColoring(`Edges SQL`_)" msgstr "pgr_sequentialVertexColoring(`SQL de aristas`_)" -msgid "pgr_stoerWagner - Experimental" -msgstr "pgr_stoerWagner - Experimental" +msgid "" +"`Boost: Sequential Vertex Coloring `__" +msgstr "" +"`Boost: Coloración Secuencial de Vértices `__" + +msgid "``pgr_stoerWagner`` - Experimental" +msgstr "``pgr_stoerWagner`` - Experimental" msgid "``pgr_stoerWagner`` — The min-cut of graph using stoerWagner algorithm." msgstr "" @@ -16390,6 +16206,13 @@ msgstr "corte mínimo de una arista" msgid "Using :doc:`pgr_connectedComponents`" msgstr "Usando :doc:`pgr_connectedComponents`" +msgid "" +"`Boost: Stoer Wagner min cut `__" +msgstr "" +"`Boost: Corte mínimo Stoer Wagner `__" + msgid "https://en.wikipedia.org/wiki/Stoer%E2%80%93Wagner_algorithm" msgstr "https://en.wikipedia.org/wiki/Stoer%E2%80%93Wagner_algorithm" @@ -16423,10 +16246,10 @@ msgid "The strong components of the graph" msgstr "Los componentes fuertes del grafo" msgid "" -"Boost: `Strong components `__" msgstr "" -"Boost: `Components fuertemente conectados `__" msgid "" @@ -16499,6 +16322,13 @@ msgstr "" msgid "Graph is not a DAG" msgstr "" +msgid "" +"`Boost: topological sort `__" +msgstr "" +"`Boost: Ordenamiento topológico `__" + msgid "``pgr_transitiveClosure`` - Experimental" msgstr "``pgr_transitiveClosure`` - Experimental" @@ -16555,57 +16385,54 @@ msgid "Identifiers of the vertices that are reachable from vertex v." msgstr "" "Identificadores de los vértices que son alcanzables desde el vértice v." +msgid "" +"`Boost: transitive closure `__" +msgstr "" +"`Boost: Cierre transitivo `__" + msgid "https://en.wikipedia.org/wiki/Transitive_closure" msgstr "https://en.wikipedia.org/wiki/Transitive_closure" -msgid "pgr_trsp - Proposed" -msgstr "" +msgid "``pgr_trsp``" +msgstr "``pgr_trsp``" msgid "``pgr_trsp`` - routing vertices with restrictions." msgstr "``pgr_trsp`` - Ruteo con restricciones." -msgid "New proposed signatures" -msgstr "Nuevas firmas propuestas" +msgid "pgr_trsp(One to One)" +msgstr "pgr_trsp(Uno a Uno)" -msgid "``pgr_trsp`` (`One to One`_)" -msgstr "``pgr_trsp`` (`Uno a Uno`_)" - -msgid "``pgr_trsp`` (`One to Many`_)" -msgstr "" +msgid "pgr_trsp(One to Many)" +msgstr "pgr_trsp(Uno a Muchos)" -msgid "``pgr_trsp`` (`Many to One`_)" -msgstr "" +msgid "pgr_trsp(Many to One)" +msgstr "pgr_trsp(Muchos a Uno)" -msgid "``pgr_trsp`` (`Many to Many`_)" -msgstr "" +msgid "pgr_trsp(Many to Many)" +msgstr "pgr_trsp(Muchos a Muchos)" -msgid "``pgr_trsp`` (`Combinations`_)" -msgstr "" +msgid "pgr_trsp(Combinations)" +msgstr "pgr_trsp(Combinaciones)" msgid "Deprecated signatures" msgstr "Firmas obsoletas" -msgid "``pgr_trsp(text,integer,integer,boolean,boolean,text)``" -msgstr "``pgr_trsp(text,integer,integer,boolean,boolean,text)``" - -msgid "``pgr_trsp(text,integer,float,integer,float,boolean,boolean,text)``" -msgstr "" - -msgid "``pgr_trspViaVertices(text,anyarray,boolean,boolean,text)``" -msgstr "" +msgid "pgr_trsp(text,integer,float,integer,float,boolean,boolean,text)" +msgstr "pgr_trsp(text,integer,float,integer,float,boolean,boolean,text)" -msgid "" -"``pgr_trspviaedges(text,integer[],double precision[],boolean,boolean,text)``" -msgstr "" +msgid "pgr_trspViaVertices(text,anyarray,boolean,boolean,text)" +msgstr "pgr_trspViaVertices(text,anyarray,boolean,boolean,text)" msgid "New prototypes" msgstr "Nuevos prototipos" -msgid "``pgr_trspViaVertices``" -msgstr "``pgr_trspViaVertices``" +msgid "pgr_trspViaVertices" +msgstr "pgr_trspViaVertices" -msgid "``pgr_trspViaEdges``" -msgstr "``pgr_trspViaEdges``" +msgid "pgr_trspViaEdges" +msgstr "pgr_trspViaEdges" msgid "" "Turn restricted shortest path (TRSP) is an algorithm that receives turn " @@ -16686,20 +16513,15 @@ msgstr "Usando una tabla de combinaciones en un grafo no dirigido." msgid "" "`Deprecated documentation `_" msgstr "" +"`Documentación obsoleta `_" -msgid "``pgr_trspVia`` - Proposed" -msgstr "" +msgid "``pgr_trspVia``" +msgstr "``pgr_trspVia``" msgid "" "``pgr_trspVia`` Route that goes through a list of vertices with restrictions." msgstr "" -msgid "New proposed function:" -msgstr "" - -msgid "``pgr_trspVia`` (`One Via`_)" -msgstr "" - msgid "" "Given a list of vertices and a graph, this function is equivalent to finding " "the shortest path between :math:`vertex_i` and :math:`vertex_{i+1}` for all :" @@ -16710,7 +16532,7 @@ msgid "The paths represents the sections of the route." msgstr "Las trayectorias representan los tramos de la ruta." msgid "Execute a :doc:`pgr_dijkstraVia`." -msgstr "" +msgstr "Ejecutar un :doc:`pgr_dijkstraVia`." msgid "" "For the set of sub paths of the solution that pass through a restriction then" @@ -16781,17 +16603,14 @@ msgstr "" msgid ":doc:`via-category`" msgstr ":doc:`via-category`" -msgid "``pgr_trspVia_withPoints`` - Proposed" -msgstr "" +msgid "``pgr_trspVia_withPoints``" +msgstr "``pgr_trspVia_withPoints``" msgid "" "``pgr_trspVia_withPoints`` - Route that goes through a list of vertices and/" "or points with restrictions." msgstr "" -msgid "``pgr_trspVia_withPoints`` (`One Via`_)" -msgstr "" - msgid "" "Given a graph, a set of restriction on the graph edges, a set of points on " "the graphs edges and a list of vertices, this function is equivalent to " @@ -16888,7 +16707,7 @@ msgid "Use ``pgr_findCloseEdges`` for points on the fly" msgstr "" msgid "Using :doc:`pgr_findCloseEdges`:" -msgstr "Usa :doc:`pgr_findCloseEdges`:" +msgstr "Usando :doc:`pgr_findCloseEdges`:" msgid "" "Visit from vertex :math:`1` to the two locations on the graph of point " @@ -16923,7 +16742,7 @@ msgid "Status of \"passes in front\" or \"visits\" of the nodes and points." msgstr "" msgid "The algorithm performs a :doc:`pgr_withPointsVia`" -msgstr "" +msgstr "El algoritmo realiza una :doc:`pgr_withPointsVia`" msgid "" "Detects which of the paths pass through a restriction in this case is for " @@ -16961,30 +16780,12 @@ msgid "" "`pgr_trsp` algorithm. In this case a U turn is been done using the same edge." msgstr "" -msgid "pgr_trsp_withPoints - Proposed" -msgstr "" +msgid "``pgr_trsp_withPoints``" +msgstr "``pgr_trsp_withPoints``" msgid "``pgr_trsp_withPoints`` Routing Vertex/Point with restrictions." msgstr "" -msgid "New proposed signatures:" -msgstr "" - -msgid "``pgr_trsp_withPoints`` (`One to One`_)" -msgstr "``pgr_trsp_withPoints`` (`Uno a Uno`_)" - -msgid "``pgr_trsp_withPoints`` (`One to Many`_)" -msgstr "" - -msgid "``pgr_trsp_withPoints`` (`Many to One`_)" -msgstr "" - -msgid "``pgr_trsp_withPoints`` (`Many to Many`_)" -msgstr "" - -msgid "``pgr_trsp_withPoints`` (`Combinations`_)" -msgstr "" - msgid "" "Modify the graph to include points defined by points_sql. Using Dijkstra " "algorithm, find the shortest path" @@ -17128,16 +16929,15 @@ msgstr "" "Desde el punto :math:`1` y el vértice :math:`6` al punto :math:`3` y el " "vértice :math:`1` en un grafo no dirigido, con detalles." -msgid "pgr_turnRestrictedPath - Experimental" -msgstr "pgr_turnRestrictedPath - Experimental" +msgid "``pgr_turnRestrictedPath`` - Experimental" +msgstr "``pgr_turnRestrictedPath`` - Experimental" msgid "" -"``pgr_turnRestrictedPath`` Using Yen's algorithm Vertex -Vertex routing with " -"restrictions" +"``pgr_turnRestrictedPath`` Using Yen's algorithm Vertex - Vertex routing " +"with restrictions" msgstr "" - -msgid "New experimental function" -msgstr "Nueva función Experimental" +"``pgr_turnRestrictedPath`` Usando el algoritmo vértice -vértice de Yen para " +"ruteo con restricciones" msgid "" "Using Yen's algorithm to obtain K shortest paths and analyze the paths to " @@ -17213,8 +17013,8 @@ msgstr "pgr_version()" msgid "pgRouting Version for this documentation" msgstr "Versión de pgRouting para esta documentación" -msgid "pgr_vrpOneDepot - Experimental" -msgstr "pgr_vrpOneDepot - Experimental" +msgid "``pgr_vrpOneDepot`` - Experimental" +msgstr "``pgr_vrpOneDepot`` - Experimental" msgid "**No documentation available**" msgstr "**No hay documentación disponible**" @@ -17222,8 +17022,8 @@ msgstr "**No hay documentación disponible**" msgid "**TBD**" msgstr "**TBD**" -msgid "``pgr_withPoints`` - Proposed" -msgstr "``pgr_withPoints`` - Propuesto" +msgid "``pgr_withPoints``" +msgstr "``pgr_withPoints``" msgid "" "``pgr_withPoints`` - Returns the shortest path in a graph with additional " @@ -17398,8 +17198,8 @@ msgstr "Del punto :math:`6` al vértice :math:`11`." msgid "Passes in front or visits with left side driving." msgstr "Pasa enfrente o visita con lado izquierdo de manejo." -msgid "``pgr_withPointsCost`` - Proposed" -msgstr "``pgr_withPointsCost`` - Propuesto" +msgid "``pgr_withPointsCost``" +msgstr "``pgr_withPointsCost``" msgid "" "``pgr_withPointsCost`` - Calculates the shortest path and returns only the " @@ -17582,8 +17382,8 @@ msgstr "Topología de manejo del lado izquierdo" msgid "Does not matter driving side driving topology" msgstr "No importa el lado de manejo" -msgid "``pgr_withPointsCostMatrix`` - proposed" -msgstr "``pgr_withPointsCostMatrix`` - propuesto" +msgid "``pgr_withPointsCostMatrix``" +msgstr "``pgr_withPointsCostMatrix``" msgid "" "``pgr_withPointsCostMatrix`` - Calculates a cost matrix using :doc:" @@ -17622,8 +17422,8 @@ msgstr "" "Encontrar la matriz de costos de las rutas desde el vértice :math:`1` y las " "dos ubicaciones más cercanas en el grafo al punto `(2.9, 1.8)`." -msgid "``pgr_withPointsDD`` - Proposed" -msgstr "``pgr_withPointsDD`` - Propuesto" +msgid "``pgr_withPointsDD``" +msgstr "``pgr_withPointsDD``" msgid "" "``pgr_withPointsDD`` - Returns the driving **distance** from a starting " @@ -17637,8 +17437,11 @@ msgid "" "unnamed compulsory **driving side**." msgstr "" -msgid "``pgr_withPointsDD`` (`Single vertex`)" -msgstr "``pgr_withPointsDD`` (`Vértice único`)" +msgid "pgr_withPointsDD(Single vertex)" +msgstr "pgr_withPointsDD(Vértice único)" + +msgid "pgr_withPointsDD(Multiple vertices)" +msgstr "pgr_withPointsDD(Múltiples vértices)" msgid "Added ``depth``, ``pred`` and ``start_vid`` column." msgstr "Agregado las columnas ``depth``, ``pred`` y ``start_vid``." @@ -17655,18 +17458,16 @@ msgid "" msgstr "" msgid "" -"``pgr_withpointsdd(text,text,bigint,double precision,boolean,character," -"boolean)``" +"pgr_withpointsdd(text,text,bigint,double precision,boolean,character,boolean)" msgstr "" -"``pgr_withpointsdd(text,text,bigint,double precision,boolean,character," -"boolean)``" +"pgr_withpointsdd(text,text,bigint,double precision,boolean,character,boolean)" msgid "" -"``pgr_withpointsdd(text,text,anyarray,double precision,boolean,character," -"boolean,boolean)``" +"pgr_withpointsdd(text,text,anyarray,double precision,boolean,character," +"boolean,boolean)" msgstr "" -"``pgr_withpointsdd(text,text,anyarray,double precision,boolean,character," -"boolean,boolean)``" +"pgr_withpointsdd(text,text,anyarray,double precision,boolean,character," +"boolean,boolean)" msgid "" "Modify the graph to include points and using Dijkstra algorithm, extracts " @@ -17798,8 +17599,8 @@ msgstr "" msgid ":doc:`pgr_alphaShape`" msgstr ":doc:`pgr_alphaShape`" -msgid "pgr_withPointsKSP - Proposed" -msgstr "pgr_withPointsKSP - Propuesto" +msgid "``pgr_withPointsKSP``" +msgstr "``pgr_withPointsKSP``" msgid "" "``pgr_withPointsKSP`` — Yen's algorithm for K shortest paths using Dijkstra." @@ -17810,29 +17611,26 @@ msgstr "" msgid "Standarizing output columns to |nksp-result|" msgstr "" -msgid "``pgr_withPointsKSP`` (One to One)" -msgstr "``pgr_withPointsKSP`` (Uno a Uno)" +msgid "pgr_withPointsKSP(One to One)" +msgstr "pgr_withPointsKSP(Uno a Uno)" -msgid "New overload functions" -msgstr "Nuevas funciones de sobrecarga" +msgid "pgr_withPointsKSP(One to Many)" +msgstr "pgr_withPointsKSP(Uno a Muchos)" -msgid "``pgr_withPointsKSP`` (One to Many)" -msgstr "``pgr_withPointsKSP`` (Uno a Muchos)" +msgid "pgr_withPointsKSP(Many to One)" +msgstr "pgr_withPointsKSP(Muchos a Uno)" -msgid "``pgr_withPointsKSP`` (Many to One)" -msgstr "``pgr_withPointsKSP`` (Muchos a Uno)" +msgid "pgr_withPointsKSP(Many to Many)" +msgstr "pgr_withPointsKSP(Muchos a Muchos)" -msgid "``pgr_withPointsKSP`` (Many to Many)" -msgstr "``pgr_withPointsKSP`` (Muchos a Muchos)" - -msgid "``pgr_withPointsKSP`` (Combinations)" -msgstr "``pgr_withPointsKSP`` (Combinaciones)" +msgid "pgr_withPointsKSP(Combinations)" +msgstr "pgr_withPointsKSP(Combinaciones)" msgid "" -"``pgr_withpointsksp(text,text,bigint,bigint,integer,boolean,boolean,char," +"pgr_withpointsksp(text,text,bigint,bigint,integer,boolean,boolean,char," "boolean)``" msgstr "" -"``pgr_withpointsksp(text,text,bigint,bigint,integer,boolean,boolean,char," +"pgr_withpointsksp(text,text,bigint,bigint,integer,boolean,boolean,char," "boolean)``" msgid "" @@ -17985,16 +17783,14 @@ msgstr "" "Obtener :math:`2` rutas, usando topología de manejo por la derecha, desde el " "punto :math:`1` al punto :math:`2`, detallado y con rutas procesadas." -msgid "``pgr_withPointsVia`` - Proposed" -msgstr "" +msgid "``pgr_withPointsVia``" +msgstr "``pgr_withPointsVia``" msgid "" "``pgr_withPointsVia`` - Route that goes through a list of vertices and/or " "points." msgstr "" - -msgid "New **proposed** function ``pgr_withPointsVia`` (`One Via`_)" -msgstr "" +"``pgr_withPointsVia`` - Ruta que recorre una lista de vértices y/o puntos." msgid "" "Given a graph, a set of points on the graphs edges and a list of vertices, " @@ -18100,72 +17896,277 @@ msgstr ":doc:`pgr_withPointsDD` - Distancia de conducción." msgid ":doc:`pgr_withPointsVia` - Via routing" msgstr ":doc:`pgr_withPointsVia` - Ruteo vía ubicaciones" -msgid "These proposed functions do not modify the database." -msgstr "Estas funciones propuestas no modifican la base de datos." +msgid "" +":doc:`pgr_lineGraph` - Transformation algorithm for generating a Line Graph." +msgstr "" +":doc:`pgr_lineGraph` - Algoritmo de transformación para generar un grafo de " +"líneas." + +msgid ":doc:`withPoints-family` - Functions based on Dijkstra algorithm." +msgstr ":doc:`withPoints-family` - Funciones basadas en el algoritmo Dijkstra." + +msgid "From the :doc:`TRSP-family`:" +msgstr "Desde :doc:`TRSP-family` :" + +msgid "Reference" +msgstr "Referencia" + +msgid "Release Notes" +msgstr "Notas de versión" msgid "" -":doc:`pgr_degree` - Returns a set of vertices and corresponding count of " -"incidet edges to the vertex." +"To see the full list of changes check the list of `Git commits `_ on Github." +msgstr "" +"Para ver la lista completa de cambios, consulte la lista de `Git commits " +"`_ en Github." + +msgid "Mayors" +msgstr "" + +msgid "pgRouting 4" +msgstr "pgRouting 4" + +msgid "Minors 4.x" +msgstr "" + +msgid "pgRouting 4.0" +msgstr "pgRouting 4.0" + +msgid "pgRouting 3" +msgstr "pgRouting 3" + +msgid "Minors 3.x" +msgstr "" + +#, fuzzy +msgid "pgRouting 3.8" +msgstr "pgRouting 3.7" + +#, fuzzy +msgid "pgRouting 3.8.0 Release Notes" +msgstr "Notas de la versión de pgRouting 3.7.0" + +msgid "Promotion to official function of pgRouting." +msgstr "Promoción a función oficial de pgRouting." + +msgid "pgr_extractVertices" +msgstr "pgr_extractVertices" + +msgid "pgr_degree" +msgstr "pgr_degree" + +msgid "pgr_findCloseEdges" +msgstr "pgr_findCloseEdges" + +msgid "Official functions changes" +msgstr "Cambios en las funciones oficiales" + +msgid "" +"`#2786 `__: " +"pgr_contraction" msgstr "" +"`#2786 `__: " +"pgr_contraction" + +msgid "New proposed functions" +msgstr "Nuevas funciones propuestas" +msgid "Contraction" +msgstr "Contracción" + +#, fuzzy msgid "" -":doc:`pgr_extractVertices` - Extracts vertex information based on the edge " -"table information." +"`#2790 `__: " +"pgr_contractionDeadEnd" msgstr "" -":doc:`pgr_extractVertices` - Extrae información de vértices basada en la " -"tabla de aristas." +"`#2087 `__: " +"pgr_extractVertices a propuesto" + +msgid "" +"`#2791 `__: " +"pgr_contractionLinear" +msgstr "" +"`#2791 `__: " +"pgr_contractionLinear" + +msgid "pgRouting 3.7" +msgstr "pgRouting 3.7" + +msgid "pgRouting 3.7.3 Release Notes" +msgstr "Notas de la versión de pgRouting 3.7.3" + +msgid "" +"To see all issues & pull requests closed by this release see the `Git closed " +"milestone for 3.7.3 `__" +msgstr "" +"Para ver todos los problemas y solicitudes de extracción cerrados para ésta " +"versión, consulte la `meta cerrada 3.7.3 `__" + +msgid "" +"`#2731 `__ Build Failure " +"on Ubuntu 22" +msgstr "" +"`#2731 `__ Construcción " +"falla en Ubuntu 22" + +msgid "pgRouting 3.7.2 Release Notes" +msgstr "Notas de la versión de pgRouting 3.7.2" + +msgid "" +"To see all issues & pull requests closed by this release see the `Git closed " +"milestone for 3.7.2 `__" +msgstr "" +"Para ver todos los problemas y solicitudes de extracción cerrados para ésta " +"versión, consulte la `meta cerrada 3.7.2 `__" + +msgid "Build" +msgstr "Construir" + +msgid "" +"`#2713 `__ cmake missing " +"some policies and min version" +msgstr "" +"`#2713 `__ cmake le falta " +"algunas políticas y versión minima" + +msgid "Using OLD policies: CMP0148, CMP0144, CMP0167" +msgstr "" + +msgid "Minimum cmake version 3.12" +msgstr "" + +msgid "" +"`#2707 `__ Build failure " +"in pgRouting 3.7.1 on Alpine" +msgstr "" +"`#2707 `__ Falla de " +"construcción en Alpine para pgRouting 3.7.1" + +msgid "" +"`#2706 `__ winnie crashing " +"on pgr_betweennessCentrality" +msgstr "" +"`#2706 `__ winnie falla en " +"pgr_betweennessCentrality" + +msgid "pgRouting 3.7.1 Release Notes" +msgstr "Notas de la versión de pgRouting 3.7.1" + +msgid "" +"To see all issues & pull requests closed by this release see the `Git closed " +"milestone for 3.7.1 `__" +msgstr "" +"Para ver todos los problemas y solicitudes de extracción cerrados para ésta " +"versión, consulte la `meta cerrada 3.7.1 `__" + +msgid "" +"`#2680 `__ fails to " +"compile under mingw64 gcc 13.2" +msgstr "" +"`#2680 `__ Compilación " +"falla bajo mingw64 gcc 13.2" + +msgid "" +"`#2689 `__ When point is a " +"vertex, the withPoints family do not return results." +msgstr "" +"`#2689 `__ Cuando el punto " +"es un vértice, la familia withPoints no devuelve resultados." + +msgid "C/C++ code enhancemet" +msgstr "Mejora del código C/C++" + +msgid "TRSP family" +msgstr "Familia TRSP" + +msgid "pgRouting 3.7.0 Release Notes" +msgstr "Notas de la versión de pgRouting 3.7.0" + +msgid "" +"To see all issues & pull requests closed by this release see the `Git closed " +"milestone for 3.7.0 `__" +msgstr "" +"Para ver todos los problemas y solicitudes de extracción cerrados para ésta " +"versión, consulte la `meta cerrada 3.7.0 `_" msgid "" -":doc:`pgr_lineGraph` - Transformation algorithm for generating a Line Graph." +"`#2656 `__ Stop support of " +"PostgreSQL12 on pgrouting v3.7" msgstr "" -":doc:`pgr_lineGraph` - Algoritmo de transformación para generar un grafo de " -"líneas." - -msgid ":doc:`pgr_withPointsVia`" -msgstr ":doc:`pgr_withPointsVia`" +"`#2656 `__ PostgreSQL 12 " +"no se apya en pgrouting v3.7" -msgid ":doc:`pgr_trspVia`" -msgstr ":doc:`pgr_trspVia`" +msgid "Stopping support of PostgreSQL 12" +msgstr "PostgreSQL 12 ya no es soportado" -msgid ":doc:`pgr_trspVia_withPoints`" -msgstr ":doc:`pgr_trspVia_withPoints`" +msgid "CI does not test for PostgreSQL 12" +msgstr "CI no hace pruebas con PostgreSQL 12" -msgid ":doc:`withPoints-family` - Functions based on Dijkstra algorithm." -msgstr ":doc:`withPoints-family` - Funciones basadas en el algoritmo Dijkstra." +msgid "New experimental functions" +msgstr "Nuevas funciones experimentales" -msgid "From the :doc:`TRSP-family`:" -msgstr "Desde :doc:`TRSP-family` :" +msgid "Metrics" +msgstr "Métricas" -msgid "Utilities" -msgstr "Utilidades" +msgid "pgr_betweennessCentrality" +msgstr "pgr_betweennessCentrality" -msgid ":doc:`pgr_findCloseEdges`" -msgstr ":doc:`pgr_findCloseEdges`" +#, fuzzy +msgid "" +"`#2605 `__ Standardize " +"spanning tree functions output" +msgstr "" +"`#2605 `__ Estandarización " +"de las salida de las funciones de árbol de expansión" -msgid "Reference" -msgstr "Referencia" +msgid "Functions:" +msgstr "Funciones:" -msgid "Release Notes" -msgstr "Notas de versión" +msgid "Experimental promoted to proposed." +msgstr "Experimental promovido a propuesto." msgid "" -"To see the full list of changes check the list of `Git commits `_ on Github." +"`#2635 `__ pgr_LineGraph " +"ignores directed flag and use negative values for identifiers." msgstr "" -"Para ver la lista completa de cambios, consulte la lista de `Git commits " -"`_ en Github." +"`#2635 `__ pgr_LineGraph " +"ignora la bandera directed y usa valores negatives para identificadores." -msgid "Mayors" -msgstr "" +msgid "``pgr_lineGraph``" +msgstr "``pgr_lineGraph``" -msgid "pgRouting 3" -msgstr "pgRouting 3" +msgid "Code enhancement" +msgstr "Mejora del código" -msgid "Minors 3.x" +msgid "" +"`#2599 `__ Driving " +"distance cleanup" msgstr "" +"`#2599 `__ Limpieza de la " +"distancia de conducción" -msgid "pgRouting 3.7" -msgstr "pgRouting 3.7" +msgid "" +"`#2607 `__ Read postgresql " +"data on C++" +msgstr "" +"`#2607 `__ Leer datos " +"postgresql en C++" + +msgid "" +"`#2614 `__ Clang tidy does " +"not work" +msgstr "" +"`#2614 `__ Clang tidy no " +"funciona" msgid "pgRouting 3.6" msgstr "pgRouting 3.6" @@ -18182,9 +18183,6 @@ msgstr "" "consulte `Git closed milestone for 3.6.3 `__" -msgid "Build" -msgstr "Construir" - msgid "Explicit minimum requirements:" msgstr "" @@ -18296,70 +18294,56 @@ msgstr "" "versión, consulte la `meta cerrada 3.6.0 `_" +#, fuzzy msgid "" -"`#2516 `__ Standarize " +"`#2516 `__ Standardize " "output pgr_aStar" msgstr "" "`#2516 `__ estandarización " "de resultados de pgr_aStar" -msgid "" -"``pgr_aStar`` (`One to One`) added ``start_vid`` and ``end_vid`` columns." -msgstr "" -"``pgr_aStar`` (`Uno a Uno`) ha añadido las columnas ``start_vid`` y " -"``end_vid``." - -msgid "``pgr_aStar`` (`One to Many`) added ``end_vid`` column." -msgstr "``pgr_aStar`` (`Uno a Muchos`) ha añadido la columna ``end_vid``." - -msgid "``pgr_aStar`` (`Many to One`) added ``start_vid`` column." -msgstr "``pgr_aStar`` (`Muchos a Uno`) ha añadido la columna ``start_vid``." +#, fuzzy +msgid "Standardize output columns to |short-generic-result|" +msgstr "Estandarización de las columnas de salida a |short-generic-result|" +#, fuzzy msgid "" -"`#2523 `__ Standarize " +"`#2523 `__ Standardize " "output pgr_bdAstar" msgstr "" "`#2523 `__ Estandarización " "de resultados de pgr_bdAstar" +#, fuzzy msgid "" -"``pgr_bdAstar`` (`One to One`) added ``start_vid`` and ``end_vid`` columns." -msgstr "" -"``pgr_bdAstar`` (`Uno a Uno`) ha añadido las columnas ``start_vid`` y " -"``end_vid``." - -msgid "``pgr_bdAstar`` (`One to Many`) added ``end_vid`` column." -msgstr "``pgr_bdAstar`` (`Uno a Muchos`) ha añadido la columna ``end_vid``." - -msgid "``pgr_bdAstar`` (`Many to One`) added ``start_vid`` column." -msgstr "``pgr_bdAstar`` (`Muchos a Uno`) ha añadido la columna ``start_vid``." - -msgid "" -"`#2547 `__ Standarize " +"`#2547 `__ Standardize " "output and modifying signature pgr_KSP" msgstr "" "`#2547 `__ Estandarización " "de resultados y modificación de firmas de pgr_KSP" +#, fuzzy msgid "" -"`#2548 `__ Standarize " -"output pgr_drivingdistance" +"`#2548 `__ Standardize " +"output pgr_drivingDistance" msgstr "" "`#2548 `__ Estandarización " -"de resultados de pgr_drivingdistance" +"de resultados de pgr_drivingDistance" msgid "Proposed functions changes" msgstr "Cambios en funciones propuestas" +#, fuzzy msgid "" -"`#2544 `__ Standarize " +"`#2544 `__ Standardize " "output and modifying signature pgr_withPointsDD" msgstr "" "`#2544 `__ Estandarización " "de resultados y modificación de firmas de pgr_withPointsDD" +#, fuzzy msgid "" -"`#2546 `__ Standarize " +"`#2546 `__ Standardize " "output and modifying signature pgr_withPointsKSP" msgstr "" "`#2546 `__ Estandarización " @@ -18419,11 +18403,12 @@ msgstr "" "`#2490 `__ Lígas " "automáticas historiales." -msgid "..rubric:: SQL standarization" +msgid "..rubric:: Standardize SQL" msgstr "" +#, fuzzy msgid "" -"`#2555 `__ standarize " +"`#2555 `__ Standardize " "deprecated messages" msgstr "" "`#2555 `__ Estandarización " @@ -18454,9 +18439,6 @@ msgstr "Arreglos a la documentación" msgid "Changes on the documentation to the following:" msgstr "" -msgid "pgr_degree" -msgstr "pgr_degree" - msgid "pgr_dijkstra" msgstr "pgr_dijkstra" @@ -18474,10 +18456,10 @@ msgstr "Corrección de problema" msgid "" "`#2565 `__ " -"pgr_pgr_lengauerTarjanDominatorTree triggers an assertion" +"pgr_lengauerTarjanDominatorTree triggers an assertion" msgstr "" "`#2565 `__ " -"pgr_pgr_lengauerTarjanDominatorTree genera un error de afirmación" +"pgr_lengauerTarjanDominatorTree genera un error de afirmación" msgid "SQL enhancements" msgstr "Mejoras SQL" @@ -18523,18 +18505,6 @@ msgstr "" msgid "Dijkstra" msgstr "Dijkstra" -msgid "" -"``pgr_dijkstra`` (`One to One`) added ``start_vid`` and ``end_vid`` columns." -msgstr "" -"``pgr_dijkstra`` (`Uno a Uno`) ha añadido las columnas ``start_vid`` y " -"``end_vid``." - -msgid "``pgr_dijkstra`` (`One to Many`) added ``end_vid`` column." -msgstr "``pgr_dijkstra`` (`Uno a Muchos`) ha añadido la columna ``end_vid``." - -msgid "``pgr_dijkstra`` (`Many to One`) added ``start_vid`` column." -msgstr "``pgr_dijkstra`` (`Muchos a Uno`) ha añadido la columna ``start_vid``." - msgid "pgRouting 3.4" msgstr "pgRouting 3.4" @@ -18609,14 +18579,14 @@ msgid "" "doesn't give all correct shortest path" msgstr "" -msgid "New proposed functions" -msgstr "Nuevas funciones propuestas" +msgid "New proposed functions." +msgstr "Nuevas funciones propuestas." msgid "With points" msgstr "Con puntos" -msgid "``pgr_withPointsVia`` (One Via)" -msgstr "``pgr_withPointsVia`` (Una trayectoria)" +msgid "pgr_withPointsVia(One Via)" +msgstr "pgr_withPointsVia(Una Vía)" msgid "Turn Restrictions" msgstr "Restricciones de giro" @@ -18624,83 +18594,68 @@ msgstr "Restricciones de giro" msgid "Via with turn restrictions" msgstr "Trayectoria con restricciones de giro" -msgid "``pgr_trspVia`` (One Via)" -msgstr "" - -msgid "``pgr_trspVia_withPoints`` (One Via)" -msgstr "``pgr_trspVia_withPoints`` (Muchas trayectorias)" - -msgid "``pgr_trsp``" -msgstr "``pgr_trsp``" - -msgid "``pgr_trsp`` (One to One)" -msgstr "``pgr_trsp`` (Uno a Uno)" - -msgid "``pgr_trsp`` (One to Many)" -msgstr "``pgr_trsp`` (Uno a Muchos)" +msgid "pgr_trspVia(One Via)" +msgstr "pgr_trspVia(Una Vía)" -msgid "``pgr_trsp`` (Many to One)" -msgstr "``pgr_trsp`` (Muchos a Uno)" +msgid "pgr_trspVia_withPoints(One Via)" +msgstr "pgr_trspVia_withPoints(Una Vía)" -msgid "``pgr_trsp`` (Many to Many)" -msgstr "``pgr_trsp`` (Muchos a Muchos)" +msgid "pgr_trsp_withPoints(One to One)" +msgstr "pgr_trsp_withPoints(Uno a Uno)" -msgid "``pgr_trsp`` (Combinations)" -msgstr "``pgr_trsp`` (Combinaciones)" +msgid "pgr_trsp_withPoints(One to Many)" +msgstr "pgr_trsp_withPoints(Uno a Muchos)" -msgid "``pgr_trsp_withPoints``" -msgstr "``pgr_trsp_withPoints``" - -msgid "``pgr_trsp_withPoints`` (One to One)" -msgstr "``pgr_trsp_withPoints`` (Uno a Uno)" - -msgid "``pgr_trsp_withPoints`` (One to Many)" -msgstr "``pgr_trsp_withPoints`` (Uno a Muchos)" +msgid "pgr_trsp_withPoints(Many to One)" +msgstr "pgr_trsp_withPoints(Muchos a Uno)" -msgid "``pgr_trsp_withPoints`` (Many to One)" -msgstr "``pgr_trsp_withPoints`` (Muchos a Uno)" +msgid "pgr_trsp_withPoints(Many to Many)" +msgstr "pgr_trsp_withPoints(Muchos a Muchos)" -msgid "``pgr_trsp_withPoints`` (Many to Many)" -msgstr "``pgr_trsp_withPoints`` (Muchos a Muchos)" - -msgid "``pgr_trsp_withPoints`` (Combinations)" -msgstr "``pgr_trsp_withPoints`` (Combinaciones)" +msgid "pgr_trsp_withPoints(Combinations)" +msgstr "pgr_trsp_withPoints(Combinaciones)" msgid "Topology" msgstr "Topología" -msgid "``pgr_degree``" -msgstr "" +msgid "Utilities" +msgstr "Utilidades" -msgid "``pgr_findCloseEdges`` (One point)" -msgstr "" +msgid "pgr_findCloseEdges(One point)" +msgstr "pgr_findCloseEdges(Un punto)" -msgid "``pgr_findCloseEdges`` (Many points)" -msgstr "" +msgid "pgr_findCloseEdges(Many points)" +msgstr "pgr_findCloseEdges(Muchos puntos)" msgid "Ordering" msgstr "Ordenamiento" -msgid "``pgr_cuthillMckeeOrdering``" -msgstr "``pgr_cuthillMckeeOrdering``" +msgid "pgr_cuthillMckeeOrdering" +msgstr "pgr_cuthillMckeeOrdering" + +msgid "Unclassified" +msgstr "No clasificado" + +msgid "pgr_hawickCircuits" +msgstr "pgr_hawickCircuits" msgid "Flow functions" msgstr "Funciones de flujo" -msgid "``pgr_maxCardinalityMatch(text)``" -msgstr "``pgr_maxCardinalityMatch(text)``" +msgid "pgr_maxCardinalityMatch(text)" +msgstr "pgr_maxCardinalityMatch(text)" -msgid "Deprecating ``pgr_maxCardinalityMatch(text,boolean)``" -msgstr "" +msgid "Deprecating: pgr_maxCardinalityMatch(text,boolean)" +msgstr "Ossoleto: pgr_maxCardinalityMatch(text,boolean)" msgid "Deprecated Functions" msgstr "Funciones obsoletas" -msgid "``pgr_trsp(text,integer,float8,integer,float8,boolean,boolean,text)``" -msgstr "``pgr_trsp(text,integer,float8,integer,float8,boolean,boolean,text)``" +msgid "pgr_trsp(text,integer,float8,integer,float8,boolean,boolean,text)" +msgstr "pgr_trsp(text,integer,float8,integer,float8,boolean,boolean,text)" -msgid "``pgr_trspViaEdges(text,integer[],float[],boolean,boolean,text)``" -msgstr "" +msgid "pgr_trspViaEdges(text,integer[],float[],boolean,boolean,text)" +msgstr "pgr_trspViaEdges(text,integer[],float[],boolean,boolean,text)" msgid "pgRouting 3.3" msgstr "pgRouting 3.3" @@ -18918,9 +18873,6 @@ msgstr "pgr_dijkstraNearCost(Uno a Muchos)" msgid "pgr_sequentialVertexColoring" msgstr "pgr_sequentialVertexColoring" -msgid "pgr_extractVertices" -msgstr "pgr_extractVertices" - msgid "Traversal" msgstr "Travesía" @@ -19018,12 +18970,6 @@ msgstr "" msgid "Removing support for Boost v1.53, v1.54 & v1.55" msgstr "Eliminación de soporte para Boost v1.53, v1.54 & v1.55" -msgid "pgr_bellmanFord(Combinations)" -msgstr "pgr_bellmanFord(Combinaciones)" - -msgid "pgr_binaryBreadthFirstSearch(Combinations)" -msgstr "pgr_binaryBreadthFirstSearch(Combinaciones)" - msgid "pgr_bipartite" msgstr "pgr_bipartite" @@ -19033,9 +18979,6 @@ msgstr "pgr_depthFirstSearch" msgid "Dijkstra Near" msgstr "Dijkstra Cercano" -msgid "pgr_edwardMoore(Combinations)" -msgstr "pgr_edwardMoore(Combinaciones)" - msgid "pgr_isPlanar" msgstr "pgr_isPlanar" @@ -19045,51 +18988,15 @@ msgstr "pgr_lengauerTarjanDominatorTree" msgid "pgr_makeConnected" msgstr "pgr_makeConnected" -msgid "pgr_maxFlowMinCost(Combinations)" -msgstr "pgr_maxFlowMinCost(Combinaciones)" - -msgid "pgr_maxFlowMinCost_Cost(Combinations)" -msgstr "pgr_maxFlowMinCost_Cost(Combinaciones)" - msgid "Astar" msgstr "Astar" -msgid "pgr_aStar(Combinations)" -msgstr "pgr_aStar(Combinaciones)" - -msgid "pgr_aStarCost(Combinations)" -msgstr "pgr_aStarCost(Combinaciones)" - msgid "Bidirectional Astar" msgstr "Astar Bidireccional" -msgid "pgr_bdAstar(Combinations)" -msgstr "pgr_bdAstar(Combinaciones)" - -msgid "pgr_bdAstarCost(Combinations)" -msgstr "pgr_bdAstarCost(Combinaciones)" - msgid "Bidirectional Dijkstra" msgstr "Dijkstra Bidireccional" -msgid "pgr_bdDijkstra(Combinations)" -msgstr "pgr_bdDijkstra(Combinaciones)" - -msgid "pgr_bdDijkstraCost(Combinations)" -msgstr "pgr_bdDijkstraCost(Combinaciones)" - -msgid "pgr_boykovKolmogorov(Combinations)" -msgstr "pgr_boykovKolmogorov(Combinaciones)" - -msgid "pgr_edmondsKarp(Combinations)" -msgstr "pgr_edmondsKarp(Combinaciones)" - -msgid "pgr_maxFlow(Combinations)" -msgstr "pgr_maxFlow(Combinaciones)" - -msgid "pgr_pushRelabel(Combinations)" -msgstr "pgr_pushRelabel(Combinaciones)" - msgid "pgRouting 3.1" msgstr "pgRouting 3.1" @@ -19407,8 +19314,8 @@ msgstr "" "`#1006 `__: No hay " "pérdida de información2" -msgid "New functions" -msgstr "Nuevas funciones" +msgid "New Functions" +msgstr "Nuevas Funciones" msgid "Kruskal family" msgstr "Familia Kruskal" @@ -19446,149 +19353,95 @@ msgstr "Propuesta cambió a oficial en pgRouting" msgid "aStar Family" msgstr "Familia aStar" -msgid "pgr_aStar(one to many)" -msgstr "pgr_aStar(Uno a Muchos)" - -msgid "pgr_aStar(many to one)" -msgstr "pgr_aStar(muchos a uno)" - -msgid "pgr_aStar(many to many)" -msgstr "pgr_aStar(muchos a muchos)" - -msgid "pgr_aStarCost(one to one)" +msgid "pgr_aStarCost(One to One)" msgstr "pgr_aStarCost(Uno a Uno)" -msgid "pgr_aStarCost(one to many)" +msgid "pgr_aStarCost(One to Many)" msgstr "pgr_aStarCost(Uno a Muchos)" -msgid "pgr_aStarCost(many to one)" -msgstr "pgr_aStarCost(muchos a uno)" - -msgid "pgr_aStarCost(many to many)" -msgstr "pgr_aStarCost(muchos a muchos)" +msgid "pgr_aStarCost(Many to One)" +msgstr "pgr_aStarCost(Muchos a Uno)" -msgid "pgr_aStarCostMatrix(one to one)" -msgstr "pgr_aStarCostMatrix(Uno a Uno)" +msgid "pgr_aStarCost(Many to Many)" +msgstr "pgr_aStarCost(Muchos a Muchos)" -msgid "pgr_aStarCostMatrix(one to many)" -msgstr "pgr_aStarCostMatrix(Uno a Muchos)" - -msgid "pgr_aStarCostMatrix(many to one)" -msgstr "pgr_aStarCostMatrix(muchos a uno)" - -msgid "pgr_aStarCostMatrix(many to many)" -msgstr "pgr_aStarCostMatrix(muchos a muchos)" +msgid "pgr_aStarCostMatrix" +msgstr "pgr_aStarCostMatrix" msgid "bdAstar Family" msgstr "Familia bdAstar" -msgid "pgr_bdAstar(one to many)" -msgstr "pgr_bdAstar(Uno a Muchos)" - -msgid "pgr_bdAstar(many to one)" -msgstr "pgr_bdAstar(muchos a uno)" - -msgid "pgr_bdAstar(many to many)" -msgstr "pgr_bdAstar(muchos a muchos)" - -msgid "pgr_bdAstarCost(one to one)" +msgid "pgr_bdAstarCost(One to One)" msgstr "pgr_bdAstarCost(Uno a Uno)" -msgid "pgr_bdAstarCost(one to many)" +msgid "pgr_bdAstarCost(One to Many)" msgstr "pgr_bdAstarCost(Uno a Muchos)" -msgid "pgr_bdAstarCost(many to one)" -msgstr "pgr_bdAstarCost(muchos a uno)" - -msgid "pgr_bdAstarCost(many to many)" -msgstr "pgr_bdAstarCost(muchos a muchos)" - -msgid "pgr_bdAstarCostMatrix(one to one)" -msgstr "pgr_bdAstarCostMatrix(Uno a Uno)" +msgid "pgr_bdAstarCost(Many to One)" +msgstr "pgr_bdAstarCost(Muchos a Uno)" -msgid "pgr_bdAstarCostMatrix(one to many)" -msgstr "pgr_bdAstarCostMatrix(Uno a Muchos)" +msgid "pgr_bdAstarCost(Many to Many)" +msgstr "pgr_bdAstarCost(Muchos a Muchos)" -msgid "pgr_bdAstarCostMatrix(many to one)" -msgstr "pgr_bdAstarCostMatrix(muchos a uno)" - -msgid "pgr_bdAstarCostMatrix(many to many)" -msgstr "pgr_bdAstarCostMatrix(muchos a muchos)" +msgid "pgr_bdAstarCostMatrix" +msgstr "pgr_bdAstarCostMatrix" msgid "bdDijkstra Family" msgstr "bdDijkstra Familia" -msgid "pgr_bdDijkstra(one to many)" -msgstr "pgr_bdDijkstra(Uno a Muchos)" - -msgid "pgr_bdDijkstra(many to one)" -msgstr "pgr_bdDijkstra(muchos a uno)" - -msgid "pgr_bdDijkstra(many to many)" -msgstr "pgr_bdDijkstra(muchos a muchos)" - -msgid "pgr_bdDijkstraCost(one to one)" -msgstr "pgr_bdDijkstraCost(uno a uno)" - -msgid "pgr_bdDijkstraCost(one to many)" -msgstr "pgr_bdDijkstraCost(uno a muchos)" +msgid "pgr_bdDijkstraCost(One to One)" +msgstr "pgr_bdDijkstraCost(Uno a Uno)" -msgid "pgr_bdDijkstraCost(many to one)" -msgstr "pgr_bdDijkstraCost(muchos a uno)" +msgid "pgr_bdDijkstraCost(One to Many)" +msgstr "pgr_bdDijkstraCost(Uno a Muchos)" -msgid "pgr_bdDijkstraCost(many to many)" -msgstr "pgr_bdDijkstraCost(muchos a muchos)" +msgid "pgr_bdDijkstraCost(Many to One)" +msgstr "pgr_bdDijkstraCost(Muchos a Uno)" -msgid "pgr_bdDijkstraCostMatrix(one to one)" -msgstr "pgr_bdDijkstraCostMatrix(uno a uno)" +msgid "pgr_bdDijkstraCost(Many to Many)" +msgstr "pgr_bdDijkstraCost(Muchos a Muchos)" -msgid "pgr_bdDijkstraCostMatrix(one to many)" -msgstr "pgr_bdDijkstraCostMatrix(uno a muchos)" - -msgid "pgr_bdDijkstraCostMatrix(many to one)" -msgstr "pgr_bdDijkstraCostMatrix(muchos a uno)" - -msgid "pgr_bdDijkstraCostMatrix(many to many)" -msgstr "pgr_bdDijkstraCostMatrix(muchos a muchos)" +msgid "pgr_bdDijkstraCostMatrix" +msgstr "pgr_bdDijkstraCostMatrix" msgid "Flow Family" msgstr "Familia Flow" -msgid "pgr_pushRelabel(one to one)" +msgid "pgr_pushRelabel(One to One)" msgstr "pgr_pushRelabel(Uno a Uno)" -msgid "pgr_pushRelabel(one to many)" +msgid "pgr_pushRelabel(One to Many)" msgstr "pgr_pushRelabel(Uno a Muchos)" -msgid "pgr_pushRelabel(many to one)" -msgstr "pgr_pushRelabel(muchos a uno)" +msgid "pgr_pushRelabel(Many to One)" +msgstr "pgr_pushRelabel(Muchos a Uno)" -msgid "pgr_pushRelabel(many to many)" -msgstr "pgr_pushRelabel(muchos a muchos)" +msgid "pgr_pushRelabel(Many to Many)" +msgstr "pgr_pushRelabel(Muchos a Muchos)" -msgid "pgr_edmondsKarp(one to one)" +msgid "pgr_edmondsKarp(One to One)" msgstr "pgr_edmondsKarp(Uno a Uno)" -msgid "pgr_edmondsKarp(one to many)" +msgid "pgr_edmondsKarp(One to Many)" msgstr "pgr_edmondsKarp(Uno a Muchos)" -msgid "pgr_edmondsKarp(many to one)" -msgstr "pgr_edmondsKarp(muchos a uno)" +msgid "pgr_edmondsKarp(Many to One)" +msgstr "pgr_edmondsKarp(Muchos a Uno)" -msgid "pgr_edmondsKarp(many to many)" -msgstr "pgr_edmondsKarp(muchos a muchos)" +msgid "pgr_edmondsKarp(Many to Many)" +msgstr "pgr_edmondsKarp(Muchos a Muchos)" -msgid "pgr_boykovKolmogorov (one to one)" +msgid "pgr_boykovKolmogorov (One to One)" msgstr "pgr_boykovKolmogorov(Uno a Uno)" -msgid "pgr_boykovKolmogorov (one to many)" +msgid "pgr_boykovKolmogorov (One to Many)" msgstr "pgr_boykovKolmogorov(Uno a Muchos)" -msgid "pgr_boykovKolmogorov (many to one)" -msgstr "pgr_boykovKolmogorov (muchos a uno)" +msgid "pgr_boykovKolmogorov (Many to One)" +msgstr "pgr_boykovKolmogorov (Muchos a Uno)" -msgid "pgr_boykovKolmogorov (many to many)" -msgstr "pgr_boykovKolmogorov (muchos a muchos)" +msgid "pgr_boykovKolmogorov (Many to Many)" +msgstr "pgr_boykovKolmogorov (Muchos a Muchos)" msgid "pgr_maxCardinalityMatching" msgstr "pgr_maxCardinalityMatching" @@ -19596,21 +19449,24 @@ msgstr "pgr_maxCardinalityMatching" msgid "pgr_maxFlow" msgstr "pgr_maxFlow" -msgid "pgr_edgeDisjointPaths(one to one)" +msgid "pgr_edgeDisjointPaths(One to One)" msgstr "pgr_edgeDisjointPaths(Uno a Uno)" -msgid "pgr_edgeDisjointPaths(one to many)" +msgid "pgr_edgeDisjointPaths(One to Many)" msgstr "pgr_edgeDisjointPaths(Uno a Muchos)" -msgid "pgr_edgeDisjointPaths(many to one)" -msgstr "pgr_edgeDisjointPaths(muchos a uno)" +msgid "pgr_edgeDisjointPaths(Many to One)" +msgstr "pgr_edgeDisjointPaths(Muchos a Uno)" -msgid "pgr_edgeDisjointPaths(many to many)" -msgstr "pgr_edgeDisjointPaths(muchos a muchos)" +msgid "pgr_edgeDisjointPaths(Many to Many)" +msgstr "pgr_edgeDisjointPaths(Muchos a Muchos)" msgid "Components family" msgstr "Familia de Componentes" +msgid "pgr_connectedComponents" +msgstr "pgr_connectedComponents" + msgid "pgr_strongComponents" msgstr "pgr_strongComponents" @@ -19814,8 +19670,8 @@ msgstr "pgr_floydWarshall" msgid "pgr_johnson" msgstr "pgr_johnson" -msgid "pgr_astar" -msgstr "pgr_astar" +msgid "pgr_aStar" +msgstr "pgr_aStar" msgid "pgr_bdAstar" msgstr "pgr_bdAstar" @@ -19835,6 +19691,9 @@ msgstr "pgr_dijkstraCost" msgid "pgr_drivingDistance" msgstr "pgr_drivingDistance" +msgid "pgr_KSP" +msgstr "pgr_KSP" + msgid "pgr_dijkstraVia (proposed)" msgstr "pgr_dijkstraVia (proposed)" @@ -20065,25 +19924,16 @@ msgstr "Columnas path_id, cost y agg_cost añadidas al resultado" msgid "Parameter names changed" msgstr "Nombres de parámetros cambiados" -msgid "The many version results are the union of the one to one version" +msgid "The many version results are the union of the One to One version" msgstr "" -"Los muchos resultados de la versión son la unión de la versión uno a uno" +"Los muchos resultados de la versión son la unión de la versión Uno a Uno" msgid "New Signatures" msgstr "Nuevas Firmas" -msgid "pgr_bdAstar(one to one)" +msgid "pgr_bdAstar(One to One)" msgstr "pgr_bdAstar(Uno a Uno)" -msgid "New Proposed functions" -msgstr "Nuevas Funciones Propuestas" - -msgid "pgr_bdAstarCostMatrix" -msgstr "pgr_bdAstarCostMatrix" - -msgid "pgr_bdDijkstraCostMatrix" -msgstr "pgr_bdDijkstraCostMatrix" - msgid "pgr_lineGraph" msgstr "pgr_lineGraph" @@ -20175,32 +20025,8 @@ msgstr "" msgid "pgr_bdDijkstra" msgstr "pgr_bdDijkstra" -msgid "New Proposed Signatures" -msgstr "Nuevas Firmas Propuestas" - -msgid "pgr_astar(one to many)" -msgstr "pgr_astar(Uno a Muchos)" - -msgid "pgr_astar(many to one)" -msgstr "pgr_astar(muchos a uno)" - -msgid "pgr_astar(many to many)" -msgstr "pgr_astar(muchos a muchos)" - -msgid "pgr_astarCost(one to one)" -msgstr "pgr_astarCost(Uno a Uno)" - -msgid "pgr_astarCost(one to many)" -msgstr "pgr_astarCost(uno a muchos)" - -msgid "pgr_astarCost(many to one)" -msgstr "pgr_astarCost(muchos a uno)" - -msgid "pgr_astarCost(many to many)" -msgstr "pgr_astarCost(muchos a muchos)" - -msgid "pgr_astarCostMatrix" -msgstr "pgr_astarCostMatrix" +msgid "Deprecated signatures." +msgstr "Firmas obsoletas." msgid "pgr_bddijkstra - use pgr_bdDijkstra instead" msgstr "pgr_bddijkstra - utilizar pgr_bdDijkstra en su lugar" @@ -20285,53 +20111,44 @@ msgstr "" msgid "pgr_TSP" msgstr "pgr_TSP" -msgid "pgr_aStar" -msgstr "pgr_aStar" - -msgid "New Functions" -msgstr "Nuevas Funciones" - msgid "pgr_eucledianTSP" msgstr "pgr_eucledianTSP" -msgid "pgr_withPointsCostMatrix" -msgstr "pgr_withPointsCostMatrix" - -msgid "pgr_maxFlowPushRelabel(one to one)" +msgid "pgr_maxFlowPushRelabel(One to One)" msgstr "pgr_maxFlowPushRelabel(Uno a Uno)" -msgid "pgr_maxFlowPushRelabel(one to many)" -msgstr "pgr_maxFlowPushRelabel(uno a muchos)" +msgid "pgr_maxFlowPushRelabel(One to Many)" +msgstr "pgr_maxFlowPushRelabel(Uno a Muchos)" -msgid "pgr_maxFlowPushRelabel(many to one)" -msgstr "pgr_maxFlowPushRelabel(muchos a uno)" +msgid "pgr_maxFlowPushRelabel(Many to One)" +msgstr "pgr_maxFlowPushRelabel(Muchos a Uno)" -msgid "pgr_maxFlowPushRelabel(many to many)" -msgstr "pgr_maxFlowPushRelabel(muchos a muchos)" +msgid "pgr_maxFlowPushRelabel(Many to Many)" +msgstr "pgr_maxFlowPushRelabel(Muchos a Muchos)" -msgid "pgr_maxFlowEdmondsKarp(one to one)" +msgid "pgr_maxFlowEdmondsKarp(One to One)" msgstr "pgr_maxFlowEdmondsKarp(Uno a Uno)" -msgid "pgr_maxFlowEdmondsKarp(one to many)" -msgstr "pgr_maxFlowEdmondsKarp(uno a muchos)" +msgid "pgr_maxFlowEdmondsKarp(One to Many)" +msgstr "pgr_maxFlowEdmondsKarp(Uno a Muchos)" -msgid "pgr_maxFlowEdmondsKarp(many to one)" -msgstr "pgr_maxFlowEdmondsKarp(muchos a uno)" +msgid "pgr_maxFlowEdmondsKarp(Many to One)" +msgstr "pgr_maxFlowEdmondsKarp(Muchos a Uno)" -msgid "pgr_maxFlowEdmondsKarp(many to many)" -msgstr "pgr_maxFlowEdmondsKarp(muchos a muchos)" +msgid "pgr_maxFlowEdmondsKarp(Many to Many)" +msgstr "pgr_maxFlowEdmondsKarp(Muchos a Muchos)" -msgid "pgr_maxFlowBoykovKolmogorov (one to one)" +msgid "pgr_maxFlowBoykovKolmogorov (One to One)" msgstr "pgr_maxFlowBoykovKolmogorov(Uno a Uno)" -msgid "pgr_maxFlowBoykovKolmogorov (one to many)" -msgstr "pgr_maxFlowBoykovKolmogorov (uno a muchos)" +msgid "pgr_maxFlowBoykovKolmogorov (One to Many)" +msgstr "pgr_maxFlowBoykovKolmogorov (Uno a Muchos)" -msgid "pgr_maxFlowBoykovKolmogorov (many to one)" -msgstr "pgr_maxFlowBoykovKolmogorov (muchos a uno)" +msgid "pgr_maxFlowBoykovKolmogorov (Many to One)" +msgstr "pgr_maxFlowBoykovKolmogorov (Muchos a Uno)" -msgid "pgr_maxFlowBoykovKolmogorov (many to many)" -msgstr "pgr_maxFlowBoykovKolmogorov (muchos a muchos)" +msgid "pgr_maxFlowBoykovKolmogorov (Many to Many)" +msgstr "pgr_maxFlowBoykovKolmogorov (Muchos a Muchos)" msgid "pgr_maximumCardinalityMatching" msgstr "pgr_maximumCardinalityMatching" @@ -20342,8 +20159,8 @@ msgstr "pgr_contractGraph" msgid "pgr_tsp - use pgr_TSP or pgr_eucledianTSP instead" msgstr "pgr_tsp - utilice pgr_TSP o pgr_eucledianTSP en su lugar" -msgid "pgr_astar - use pgr_aStar instead" -msgstr "pgr_astar - utilice pgr_aStar en su lugar" +msgid "pgr_aStar - use pgr_aStar instead" +msgstr "pgr_aStar - utilice pgr_aStar en su lugar" msgid "pgr_flip_edges" msgstr "pgr_flip_edges" @@ -20444,6 +20261,9 @@ msgstr "" msgid "Improvements" msgstr "Mejoras" +msgid "pgr_nodeNetwork" +msgstr "pgr_nodeNetwork" + msgid "Adding a row_where and outall optional parameters" msgstr "Adición de un row_where y todos los parámetros opcionales" @@ -20456,44 +20276,44 @@ msgstr "pgr_dijkstra -- para que coincida con lo documentado" msgid "pgr_Johnson" msgstr "pgr_Johnson" -msgid "pgr_dijkstraCost(one to one)" +msgid "pgr_dijkstraCost(One to One)" msgstr "pgr_dijkstraCost(Uno a Uno)" -msgid "pgr_dijkstraCost(one to many)" -msgstr "pgr_dijkstraCost(uno a muchos)" +msgid "pgr_dijkstraCost(One to Many)" +msgstr "pgr_dijkstraCost(Uno a Muchos)" -msgid "pgr_dijkstraCost(many to one)" -msgstr "pgr_dijkstraCost(muchos a uno)" +msgid "pgr_dijkstraCost(Many to One)" +msgstr "pgr_dijkstraCost(Muchos a Uno)" -msgid "pgr_dijkstraCost(many to many)" -msgstr "pgr_dijkstraCost(muchos a muchos)" +msgid "pgr_dijkstraCost(Many to Many)" +msgstr "pgr_dijkstraCost(Muchos a Muchos)" msgid "Proposed Functionality" msgstr "Funcionalidad Propuesta" -msgid "pgr_withPoints(one to one)" +msgid "pgr_withPoints(One to One)" msgstr "pgr_withPoints(Uno a Uno)" -msgid "pgr_withPoints(one to many)" -msgstr "pgr_withPoints(uno a muchos)" +msgid "pgr_withPoints(One to Many)" +msgstr "pgr_withPoints(Uno a Muchos)" -msgid "pgr_withPoints(many to one)" -msgstr "pgr_withPoints(muchos a uno)" +msgid "pgr_withPoints(Many to One)" +msgstr "pgr_withPoints(Muchos a Uno)" -msgid "pgr_withPoints(many to many)" -msgstr "pgr_withPoints(muchos a muchos)" +msgid "pgr_withPoints(Many to Many)" +msgstr "pgr_withPoints(Muchos a Muchos)" -msgid "pgr_withPointsCost(one to one)" +msgid "pgr_withPointsCost(One to One)" msgstr "pgr_withPointsCost(Uno a Uno)" -msgid "pgr_withPointsCost(one to many)" -msgstr "pgr_withPointsCost(uno a muchos)" +msgid "pgr_withPointsCost(One to Many)" +msgstr "pgr_withPointsCost(Uno a Muchos)" -msgid "pgr_withPointsCost(many to one)" -msgstr "pgr_withPointsCost(muchos a uno)" +msgid "pgr_withPointsCost(Many to One)" +msgstr "pgr_withPointsCost(Muchos a Uno)" -msgid "pgr_withPointsCost(many to many)" -msgstr "pgr_withPointsCost(muchos a muchos)" +msgid "pgr_withPointsCost(Many to Many)" +msgstr "pgr_withPointsCost(Muchos a Muchos)" msgid "pgr_withPointsDD(single vertex)" msgstr "pgr_withPointsDD(vértice único)" @@ -20501,9 +20321,6 @@ msgstr "pgr_withPointsDD(vértice único)" msgid "pgr_withPointsDD(multiple vertices)" msgstr "pgr_withPointsDD(múltiples vértices)" -msgid "pgr_withPointsKSP" -msgstr "pgr_withPointsKSP" - msgid "pgr_dijkstraVia" msgstr "pgr_dijkstraVia" @@ -20540,27 +20357,12 @@ msgstr "" "issues for 2.1.0 `_ en Github." -msgid "pgr_dijkstra(one to many)" -msgstr "pgr_dijkstra(uno a muchos)" - -msgid "pgr_dijkstra(many to one)" -msgstr "pgr_dijkstra(muchos a uno)" - -msgid "pgr_dijkstra(many to many)" -msgstr "pgr_dijkstra(muchos a muchos)" - -msgid "pgr_drivingDistance(multiple vertices)" -msgstr "pgr_drivingDistance(múltiples vértices)" - msgid "Refactored" msgstr "Refactorizado" -msgid "pgr_dijkstra(one to one)" +msgid "pgr_dijkstra(One to One)" msgstr "pgr_dijkstra(Uno a Uno)" -msgid "pgr_drivingDistance(single vertex)" -msgstr "pgr_drivingDistance(vértice único)" - msgid "" "pgr_alphaShape function now can generate better (multi)polygon with holes " "and alpha parameter." @@ -20947,10 +20749,11 @@ msgstr "Familias de Funciones" msgid "Sample Data" msgstr "Datos Muestra" +#, fuzzy msgid "" "The documentation provides very simple example queries based on a small " -"sample network that resembles a city. To be able to execute the mayority of " -"the examples queries, follow the instructions bellow." +"sample network that resembles a city. To be able to execute the majority of " +"the examples queries, follow the instructions below." msgstr "" "La documentación proporciona consultas de ejemplo muy simples basadas en una " "red muestra pequeña que asemeja una ciudad. Para ser capaz de ejecutar la " @@ -20967,7 +20770,8 @@ msgstr "" msgid "" "Information known at this point is the geometry of the edges, cost values, " -"cpacity values, category values and some locations that are not in the graph." +"capacity values, category values and some locations that are not in the " +"graph." msgstr "" msgid "" @@ -20975,14 +20779,11 @@ msgid "" "that everything else is calculated." msgstr "" -msgid "Edges" -msgstr "" - msgid "" "The database design for the documentation of pgRouting, keeps in the same " "row 2 segments, one in the direction of the geometry and the second in the " -"oposite direction. Therfore some information has the ``reverse_`` prefix " -"which corresponds to the segment on the oposite direction of the geometry." +"opposite direction. Therefore some information has the ``reverse_`` prefix " +"which corresponds to the segment on the opposite direction of the geometry." msgstr "" msgid "Identifier of the starting vertex of the geometry ``geom``." @@ -21013,7 +20814,7 @@ msgid ":math:`x` coordinate of the starting vertex of the geometry." msgstr "" msgid "" -"For convinience it is saved on the table but can be calculated as " +"For convenience it is saved on the table but can be calculated as " "``ST_X(ST_StartPoint(geom))``." msgstr "" @@ -21021,7 +20822,7 @@ msgid ":math:`y` coordinate of the ending vertex of the geometry." msgstr "" msgid "" -"For convinience it is saved on the table but can be calculated as " +"For convenience it is saved on the table but can be calculated as " "``ST_Y(ST_EndPoint(geom))``." msgstr "" @@ -21032,8 +20833,8 @@ msgid "Starting on PostgreSQL 12::" msgstr "A partir de PostgreSQL 12::" msgid "" -"Optionally indexes on different columns can be created. The recomendation is " -"to have" +"Optionally indexes on different columns can be created. The recommendation " +"is to have" msgstr "" msgid "``id`` indexed." @@ -21044,7 +20845,7 @@ msgid "" msgstr "" msgid "" -"``geom`` indexed to speed up gemetry processes that might be needed in the " +"``geom`` indexed to speed up geometry processes that might be needed in the " "front end." msgstr "" @@ -21113,9 +20914,11 @@ msgid "" msgstr "" msgid "" -"For convinence of this documentations, some combinations will be stored on a " +"For convenience of this documentation, some combinations will be stored on a " "table:" msgstr "" +"Por conveniencia de esta documentación, algunas combinaciones se almacenan " +"en una tabla:" msgid "Inserting the data:" msgstr "Insertar los datos:" @@ -21377,8 +21180,8 @@ msgid "" msgstr "" msgid "" -"pgRouting suplies some functions to create a routing topology and to analyze " -"the topology." +"pgRouting supplies some functions to create a routing topology and to " +"analyze the topology." msgstr "" msgid "Additional functions to create a graph:" @@ -21400,7 +21203,8 @@ msgstr "" msgid "Traversal - Family of functions" msgstr "Traversal - Familia de funciones" -msgid "Aditionaly there are 2 categories under this family" +#, fuzzy +msgid "Additionally there are 2 categories under this family" msgstr "Adicionalmente, hay dos categorías en esta familia" msgid "Via - Category" @@ -21416,8 +21220,9 @@ msgstr "" "Dado un grafo y una lista de vértices, encuentra el camino mas corto entre :" "math:`vertex_i` and :math:`vertex_{i+1}` para todos los vértices" +#, fuzzy msgid "" -"In other words, find a continuos route that visits all the vertices in the " +"In other words, find a continuous route that visits all the vertices in the " "order given." msgstr "" "En otras palabras, encuentre la ruta continua que visite todos los vértices " @@ -21829,3 +21634,4 @@ msgstr "pgr_withPointsDD es pgr_drivingDistance **con puntos**" msgid "pgr_withPointsvia is pgr_dijkstraVia **with points**" msgstr "pgr_withPoints es pgr_dijkstraVia **con puntos**" + diff --git a/locale/ja/LC_MESSAGES/index.po b/locale/ja/LC_MESSAGES/index.po index cc99899084..544c8a8b0a 100644 --- a/locale/ja/LC_MESSAGES/index.po +++ b/locale/ja/LC_MESSAGES/index.po @@ -1,11 +1,11 @@ # SOME DESCRIPTIVE TITLE. -# Copyright (C) pgRouting Contributors - Version v3.7.0 +# Copyright (C) pgRouting Contributors - Version v3.8 # This file is distributed under the same license as the pgRouting package. # FIRST AUTHOR , 2022. # msgid "" msgstr "" -"Project-Id-Version: pgRouting v3.4.0-dev\n" +"Project-Id-Version: pgRouting v3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-06-25 12:55-0500\n" "PO-Revision-Date: 2024-05-01 03:45+0000\n" @@ -19,482 +19,3 @@ msgstr "" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 5.4.3\n" "Generated-By: Babel 2.9.1\n" - -#: ../../build/doc/index.rst:12 -msgid "" -"**Supported versions:** `Latest " -"`__ (`3.4 " -"`__) `3.3 " -"`__ `3.2 " -"`__ `3.1 " -"`__ `3.0 " -"`__" -msgstr "" - -#: ../../build/doc/index.rst:19 -msgid "" -"**Unsupported versions:** `2.6 " -"`__ `2.5 " -"`__ `2.4 " -"`__ `2.3 " -"`__ `2.2 " -"`__ `2.1 " -"`__ `2.0 " -"`__" -msgstr "" - -#: ../../build/doc/index.rst:30 -msgid "Table of Contents" -msgstr "目次" - -#: ../../build/doc/index.rst:32 -msgid "" -"pgRouting extends the `PostGIS `__/`PostgreSQL " -"`__ geospatial database to provide geospatial" -" routing and other network analysis functionality." -msgstr "" - -#: ../../build/doc/index.rst:36 -msgid "This is the manual for pgRouting |release|." -msgstr "このマニュアルは pgRouting |release| のマニュアルです。" - -msgid "Creative Commons Attribution-Share Alike 3.0 License" -msgstr "" - -#: ../../build/doc/index.rst:42 -msgid "" -"The pgRouting Manual is licensed under a `Creative Commons Attribution-" -"Share Alike 3.0 License `_. Feel free to use this material any way you like, but we ask " -"that you attribute credit to the pgRouting Project and wherever possible," -" a link back to https://pgrouting.org. For other licenses used in " -"pgRouting see the :ref:`license` page." -msgstr "" - -#: ../../build/doc/index.rst:50 -msgid "General" -msgstr "概要" - -#: ../../build/doc/index.rst:60 -msgid ":doc:`sampledata` that is used in the examples of this manual." -msgstr "" - -#: ../../build/doc/index.rst:68 -msgid "Pgrouting Concepts" -msgstr "" - -#: ../../build/doc/index.rst:77 -msgid ":doc:`routingFunctions`" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:4 -msgid ":doc:`allpairs-family`" -msgstr "" - -#: ../../build/doc/allpairs-family.rst:3 -msgid ":doc:`pgr_floydWarshall` - Floyd-Warshall's algorithm." -msgstr "" - -#: ../../build/doc/allpairs-family.rst:4 -msgid ":doc:`pgr_johnson` - Johnson's algorithm" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:10 -msgid ":doc:`aStar-family`" -msgstr "" - -#: ../../build/doc/aStar-family.rst:3 -msgid ":doc:`pgr_aStar` - A* algorithm for the shortest path." -msgstr "" - -#: ../../build/doc/aStar-family.rst:4 -msgid ":doc:`pgr_aStarCost` - Get the aggregate cost of the shortest paths." -msgstr "" - -#: ../../build/doc/aStar-family.rst:5 -msgid ":doc:`pgr_aStarCostMatrix` - Get the cost matrix of the shortest paths." -msgstr "" - -#: ../../build/doc/routingFunctions.rst:17 -msgid ":doc:`bdAstar-family`" -msgstr "" - -#: ../../build/doc/bdAstar-family.rst:3 -msgid ":doc:`pgr_bdAstar` - Bidirectional A* algorithm for obtaining paths." -msgstr "" - -#: ../../build/doc/bdAstar-family.rst:4 -msgid "" -":doc:`pgr_bdAstarCost` - Bidirectional A* algorithm to calculate the cost" -" of the paths." -msgstr "" - -#: ../../build/doc/bdAstar-family.rst:6 -msgid "" -":doc:`pgr_bdAstarCostMatrix` - Bidirectional A* algorithm to calculate a " -"cost matrix of paths." -msgstr "" - -#: ../../build/doc/routingFunctions.rst:23 -msgid ":doc:`bdDijkstra-family`" -msgstr "" - -#: ../../build/doc/bdDijkstra-family.rst:3 -msgid "" -":doc:`pgr_bdDijkstra` - Bidirectional Dijkstra algorithm for the shortest" -" paths." -msgstr "" - -#: ../../build/doc/bdDijkstra-family.rst:5 -msgid "" -":doc:`pgr_bdDijkstraCost` - Bidirectional Dijkstra to calculate the cost " -"of the shortest paths" -msgstr "" - -#: ../../build/doc/bdDijkstra-family.rst:7 -msgid "" -":doc:`pgr_bdDijkstraCostMatrix` - Bidirectional Dijkstra algorithm to " -"create a matrix of costs of the shortest paths." -msgstr "" - -#: ../../build/doc/routingFunctions.rst:29 -msgid ":doc:`components-family`" -msgstr "" - -#: ../../build/doc/components-family.rst:3 -msgid "" -":doc:`pgr_connectedComponents` - Connected components of an undirected " -"graph." -msgstr "" - -#: ../../build/doc/components-family.rst:4 -msgid "" -":doc:`pgr_strongComponents` - Strongly connected components of a directed" -" graph." -msgstr "" - -#: ../../build/doc/components-family.rst:6 -msgid "" -":doc:`pgr_biconnectedComponents` - Biconnected components of an " -"undirected graph." -msgstr "" - -#: ../../build/doc/components-family.rst:8 -msgid "" -":doc:`pgr_articulationPoints` - Articulation points of an undirected " -"graph." -msgstr "" - -#: ../../build/doc/components-family.rst:9 -msgid ":doc:`pgr_bridges` - Bridges of an undirected graph." -msgstr "" - -#: ../../build/doc/routingFunctions.rst:35 -msgid ":doc:`contraction-family`" -msgstr "" - -#: ../../build/doc/contraction-family.rst:3 -msgid ":doc:`pgr_contraction`" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:41 -msgid ":doc:`dijkstra-family`" -msgstr "" - -#: ../../build/doc/dijkstra-family.rst:3 -msgid ":doc:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths." -msgstr ":doc:`pgr_dijkstra` - 最短経路を求めるためのダイクストラ・アルゴリズム。" - -#: ../../build/doc/dijkstra-family.rst:4 -msgid ":doc:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths." -msgstr ":doc:`pgr_dijkstraCost` - 最短経路の総コストを集計します。" - -#: ../../build/doc/dijkstra-family.rst:5 -msgid ":doc:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix." -msgstr ":doc:`pgr_dijkstraCostMatrix` - pgr_dijkstra " -"を使用してコストマトリックスを作成します。" - -#: ../../build/doc/dijkstra-family.rst:6 -msgid "" -":doc:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament " -"information." -msgstr ":doc:`pgr_drivingDistance` - pgr_dijkstra " -"を使用して対象エリアの情報を計算します。" - -#: ../../build/doc/dijkstra-family.rst:8 -msgid "" -":doc:`pgr_KSP` - Use Yen algorithm with pgr_dijkstra to get the K " -"shortest paths." -msgstr ":doc:`pgr_KSP` - " -"pgr_dijkstraでYenアルゴリズムを使用してK最短経路を取得します。" - -#: ../../build/doc/routingFunctions.rst:47 -msgid ":doc:`flow-family`" -msgstr "" - -#: ../../build/doc/flow-family.rst:3 -msgid "" -":doc:`pgr_maxFlow` - Only the Max flow calculation using Push and Relabel" -" algorithm." -msgstr "" - -#: ../../build/doc/flow-family.rst:5 -msgid "" -":doc:`pgr_boykovKolmogorov` - Boykov and Kolmogorov with details of flow " -"on edges." -msgstr "" - -#: ../../build/doc/flow-family.rst:7 -msgid "" -":doc:`pgr_edmondsKarp` - Edmonds and Karp algorithm with details of flow " -"on edges." -msgstr "" - -#: ../../build/doc/flow-family.rst:9 -msgid "" -":doc:`pgr_pushRelabel` - Push and relabel algorithm with details of flow " -"on edges." -msgstr "" - -#: ../../build/doc/flow-family.rst:11 -msgid "Applications" -msgstr "" - -#: ../../build/doc/flow-family.rst:13 -msgid "" -":doc:`pgr_edgeDisjointPaths` - Calculates edge disjoint paths between two" -" groups of vertices." -msgstr "" - -#: ../../build/doc/flow-family.rst:15 -msgid "" -":doc:`pgr_maxCardinalityMatch` - Calculates a maximum cardinality " -"matching in a graph." -msgstr "" - -#: ../../build/doc/routingFunctions.rst:53 -#: ../../build/doc/spanningTree-family.rst:3 -msgid ":doc:`kruskal-family`" -msgstr "" - -#: ../../build/doc/kruskal-family.rst:3 -msgid ":doc:`pgr_kruskal`" -msgstr "" - -#: ../../build/doc/BFS-category.rst:3 ../../build/doc/kruskal-family.rst:4 -msgid ":doc:`pgr_kruskalBFS`" -msgstr ":doc:`pgr_kruskalBFS`" - -#: ../../build/doc/kruskal-family.rst:5 -msgid ":doc:`pgr_kruskalDD`" -msgstr "" - -#: ../../build/doc/DFS-category.rst:3 ../../build/doc/kruskal-family.rst:6 -msgid ":doc:`pgr_kruskalDFS`" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:59 -#: ../../build/doc/spanningTree-family.rst:4 -msgid ":doc:`prim-family`" -msgstr "" - -#: ../../build/doc/prim-family.rst:3 -msgid ":doc:`pgr_prim`" -msgstr "" - -#: ../../build/doc/BFS-category.rst:4 ../../build/doc/prim-family.rst:4 -msgid ":doc:`pgr_primBFS`" -msgstr ":doc:`pgr_primBFS`" - -#: ../../build/doc/prim-family.rst:5 -msgid ":doc:`pgr_primDD`" -msgstr "" - -#: ../../build/doc/DFS-category.rst:4 ../../build/doc/prim-family.rst:6 -msgid ":doc:`pgr_primDFS`" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:65 -msgid ":doc:`reference`" -msgstr "" - -#: ../../build/doc/reference.rst:3 -msgid ":doc:`pgr_version`" -msgstr "" - -#: ../../build/doc/reference.rst:4 -msgid ":doc:`pgr_full_version`" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:71 -msgid ":doc:`topology-functions`" -msgstr "" - -#: ../../build/doc/topology-functions.rst:3 -msgid "" -"The following functions modify the database directly therefore the user " -"must have special permissions given by the administrators to use them." -msgstr "" - -#: ../../build/doc/topology-functions.rst:6 -msgid ":doc:`pgr_createTopology` - create a topology based on the geometry." -msgstr "" - -#: ../../build/doc/topology-functions.rst:7 -msgid "" -":doc:`pgr_createVerticesTable` - reconstruct the vertices table based on " -"the source and target information." -msgstr "" - -#: ../../build/doc/topology-functions.rst:9 -msgid "" -":doc:`pgr_analyzeGraph` - to analyze the edges and vertices of the edge " -"table." -msgstr "" - -#: ../../build/doc/topology-functions.rst:11 -msgid ":doc:`pgr_analyzeOneWay` - to analyze directionality of the edges." -msgstr "" - -#: ../../build/doc/topology-functions.rst:12 -msgid ":doc:`pgr_nodeNetwork` -to create nodes to a not noded edge table." -msgstr "" - -#: ../../build/doc/routingFunctions.rst:77 -msgid ":doc:`TSP-family`" -msgstr ":doc:`TSP-family`" - -#: ../../build/doc/TSP-family.rst:3 -msgid ":doc:`pgr_TSP` - When input is given as matrix cell information." -msgstr ":doc:`pgr_TSP` - 引数に行列のマトリクスが与えられたとき。" - -#: ../../build/doc/TSP-family.rst:4 -msgid ":doc:`pgr_TSPeuclidean` - When input are coordinates." -msgstr ":doc:`pgr_TSPeuclidean` - 引数に一連の座標が与えられたとき。" - -#: ../../build/doc/routingFunctions.rst:83 -msgid ":doc:`pgr_trsp` - Turn Restriction Shortest Path (TRSP)" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:87 -msgid "Functions by categories" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:89 -msgid ":doc:`cost-category`" -msgstr "" - -#: ../../build/doc/cost-category.rst:3 -msgid ":doc:`pgr_aStarCost`" -msgstr "" - -#: ../../build/doc/cost-category.rst:4 -msgid ":doc:`pgr_bdAstarCost`" -msgstr "" - -#: ../../build/doc/cost-category.rst:5 -msgid ":doc:`pgr_dijkstraCost`" -msgstr "" - -#: ../../build/doc/cost-category.rst:6 -msgid ":doc:`pgr_bdDijkstraCost`" -msgstr "" - -#: ../../build/doc/cost-category.rst:7 -msgid ":doc:`pgr_dijkstraNearCost`" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:95 -msgid ":doc:`costMatrix-category`" -msgstr "" - -#: ../../build/doc/costMatrix-category.rst:3 -msgid ":doc:`pgr_aStarCostMatrix`" -msgstr "" - -#: ../../build/doc/costMatrix-category.rst:4 -msgid ":doc:`pgr_bdAstarCostMatrix`" -msgstr "" - -#: ../../build/doc/costMatrix-category.rst:5 -#: ../../build/doc/costMatrix-category.rst:7 -msgid ":doc:`pgr_bdDijkstraCostMatrix`" -msgstr "" - -#: ../../build/doc/costMatrix-category.rst:6 -msgid ":doc:`pgr_dijkstraCostMatrix`" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:102 -msgid ":doc:`drivingDistance-category`" -msgstr "" - -#: ../../build/doc/drivingDistance-category.rst:3 -msgid "" -":doc:`pgr_drivingDistance` - Driving Distance based on Dijkstra's " -"algorithm" -msgstr "" - -#: ../../build/doc/drivingDistance-category.rst:4 -msgid ":doc:`pgr_primDD` - Driving Distance based on Prim's algorithm" -msgstr "" - -#: ../../build/doc/drivingDistance-category.rst:5 -msgid ":doc:`pgr_kruskalDD` - Driving Distance based on Kruskal's algorithm" -msgstr "" - -#: ../../build/doc/drivingDistance-category.rst:6 -msgid "Post pocessing" -msgstr "" - -#: ../../build/doc/drivingDistance-category.rst:8 -msgid ":doc:`pgr_alphaShape` - Alpha shape computation" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:108 -msgid ":doc:`KSP-category`" -msgstr "" - -#: ../../build/doc/KSP-category.rst:3 -msgid ":doc:`pgr_KSP` - Yen's algorithm based on pgr_dijkstra" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:114 -msgid ":doc:`spanningTree-family`" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:120 -msgid ":doc:`BFS-category`" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:126 -msgid ":doc:`DFS-category`" -msgstr ":doc:`DFS-category`" - -#: ../../build/doc/index.rst:91 -msgid "Available Functions but not official pgRouting functions" -msgstr "" - -#: ../../build/doc/index.rst:93 -msgid ":doc:`proposed`" -msgstr "" - -#: ../../build/doc/index.rst:94 -msgid ":doc:`experimental`" -msgstr "" - -#: ../../build/doc/index.rst:105 -msgid ":doc:`release_notes`" -msgstr "" - -#: ../../build/doc/index.rst:119 -msgid "Indices and tables" -msgstr "索引とテーブル" - -#: ../../build/doc/index.rst:120 -msgid ":ref:`genindex`" -msgstr ":ref:`genindex`" - -#: ../../build/doc/index.rst:121 -msgid ":ref:`search`" -msgstr ":ref:`search`" diff --git a/locale/ja/LC_MESSAGES/pgrouting_doc_strings.po b/locale/ja/LC_MESSAGES/pgrouting_doc_strings.po index c113bc9e15..b17bf75b97 100644 --- a/locale/ja/LC_MESSAGES/pgrouting_doc_strings.po +++ b/locale/ja/LC_MESSAGES/pgrouting_doc_strings.po @@ -1,6 +1,5 @@ -# #-#-#-#-# allpairs-family.po (pgRouting v3.4.0-dev) #-#-#-#-# # SOME DESCRIPTIVE TITLE. -# Copyright (C) pgRouting Contributors - Version v3.7.0 +# Copyright (C) pgRouting Contributors - Version v3.8 # This file is distributed under the same license as the pgRouting package. # FIRST AUTHOR , 2022. # Translators: @@ -19,9 +18,9 @@ # Celia Virginia Vergara Castillo , 2024. msgid "" msgstr "" -"Project-Id-Version: PROJECT VERSION\n" +"Project-Id-Version: pgRouting v3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-17 00:50+0000\n" +"POT-Creation-Date: 2025-03-24 14:17+0000\n" "PO-Revision-Date: 2024-09-23 01:16+0000\n" "Last-Translator: Celia Virginia Vergara Castillo \n" "Language-Team: Japanese `__" +"`Boost: metric TSP approx `__" msgstr "" msgid "`University of Waterloo TSP `__" @@ -699,7 +692,7 @@ msgstr "" "`Wikipedia: 巡回セールスマン問題 `__" -msgid "Vehicle Routing Functions - Category (Experimental)" +msgid "Vehicle Routing Functions - Category" msgstr "" msgid "Pickup and delivery problem" @@ -1648,8 +1641,8 @@ msgstr "" msgid "https://en.wikipedia.org/wiki/Vehicle_routing_problem" msgstr "" -msgid "The queries use the :doc:`sampledata` network." -msgstr "クエリは :doc:`sampledata` ネットワークを使用します。" +msgid ":doc:`sampledata`" +msgstr "" msgid "A* - Family of functions" msgstr "" @@ -1811,7 +1804,8 @@ msgstr "" msgid ":doc:`bdAstar-family`" msgstr "" -msgid "https://www.boost.org/libs/graph/doc/astar_search.html" +msgid "" +"`Boost: A* search `__" msgstr "" msgid "https://en.wikipedia.org/wiki/A*_search_algorithm" @@ -2615,15 +2609,12 @@ msgid "" "ending vertex:" msgstr "" -msgid "It is expected to terminate faster than pgr_astar" +msgid "It is expected to terminate faster than pgr_aStar" msgstr "" msgid ":doc:`aStar-family`" msgstr "" -msgid "Previous versions of this page" -msgstr "このページの以前のバージョン" - msgid "Bidirectional Dijkstra - Family of functions" msgstr "" @@ -2766,27 +2757,7 @@ msgid "Identifier of the color of the edge." msgstr "" msgid "" -"`Boost: Sequential Vertex Coloring algorithm documentation `__" -msgstr "" - -msgid "" -"`Wikipedia: Graph coloring `__" -msgstr "" - -msgid "" -"`Boost: is_bipartite `__" -msgstr "" - -msgid "" -"`Wikipedia: bipartite graph `__" -msgstr "" - -msgid "" -"`Boost: Edge Coloring Algorithm documentation `__" +"`Boost: `__" msgstr "" msgid "Components - Family of functions" @@ -2822,6 +2793,9 @@ msgstr "" msgid ":doc:`pgr_contraction`" msgstr "" +msgid ":doc:`pgr_contractionDeadEnd`" +msgstr "" + msgid "" "In large graphs, like the road graphs, or electric networks, graph " "contraction can be used to speed up some graph algorithms. Contraction " @@ -2852,1139 +2826,658 @@ msgid "" "times they are to be executed." msgstr "" -msgid "Contraction of the leaf nodes of the graph." +msgid "" +"https://www.cs.cmu.edu/afs/cs/academic/class/15210-f12/www/lectures/" +"lecture16.pdf" msgstr "" -msgid "Dead end" +msgid "https://algo2.iti.kit.edu/documents/routeplanning/geisberger_dipl.pdf" msgstr "" -msgid "A node is considered a **dead end** node when" +msgid "Cost - Category" msgstr "" -msgid "On undirected graphs:" +msgid ":doc:`pgr_aStarCost`" msgstr "" -msgid "The number of adjacent vertices is 1." +msgid ":doc:`pgr_bdAstarCost`" msgstr "" -msgid "On directed graphs:" +msgid ":doc:`pgr_dijkstraCost`" msgstr "" -msgid "There are no outgoing edges and has at least one incoming edge." +msgid ":doc:`pgr_bdDijkstraCost`" msgstr "" -msgid "There are no incoming edges and has at least one outgoing edge." +msgid ":doc:`pgr_dijkstraNearCost`" msgstr "" -msgid "" -"When the conditions are true then the `Operation: Dead End Contraction`_ can " -"be done." +msgid ":doc:`pgr_withPointsCost`" msgstr "" -msgid "Dead end vertex on undirected graph" +msgid "Each function works as part of the family it belongs to." msgstr "" -msgid "The green nodes are `dead end`_ nodes" +msgid "" +"Returns the sum of the costs of the shortest path of each pair combination " +"of nodes requested." msgstr "" -msgid "The blue nodes have an unlimited number of edges." +msgid "" +"Let be the case the values returned are stored in a table, so the unique " +"index would be the pair: ``(start_vid, end_vid)``." msgstr "" -msgid "Node" +msgid "" +"Depending on the function and its parameters, the results can be symmetric." msgstr "" -msgid "Adjecent nodes" +msgid "" +"The **aggregate cost** of :math:`(u, v)` is the same as for :math:`(v, u)`." msgstr "" -msgid "Number of adjacent nodes" +msgid "" +"Any duplicated value in the start or end vertex identifiers are ignored." msgstr "" -msgid ":math:`a`" +msgid "The returned values are ordered:" msgstr "" -msgid ":math:`\\{u\\}`" +msgid "``start_vid`` ascending" msgstr "" -msgid ":math:`b`" +msgid "``end_vid`` ascending" msgstr "" -msgid ":math:`\\{v\\}`" +msgid "Cost Matrix - Category" msgstr "" -msgid "Dead end vertex on directed graph" +msgid ":doc:`pgr_aStarCostMatrix`" msgstr "" -msgid "" -"The blue nodes have an unlimited number of incoming and/or outgoing edges." +msgid ":doc:`pgr_dijkstraCostMatrix`" msgstr "" -msgid "Number of incoming edges" +msgid ":doc:`pgr_bdAstarCostMatrix`" msgstr "" -msgid "Number of outgoing edges" +msgid ":doc:`pgr_bdDijkstraCostMatrix`" msgstr "" -msgid ":math:`c`" +msgid ":doc:`pgr_withPointsCostMatrix`" msgstr "" -msgid ":math:`\\{v, w\\}`" +msgid "" +":doc:`TSP-family` needs as input a symmetric cost matrix and no edge `(u, " +"v)` must value :math:`\\infty`." msgstr "" -msgid "2" +msgid "" +"This collection of functions will return a cost matrix in form of a table." msgstr "" -msgid ":math:`d`" +msgid "Can be used as input to :doc:`pgr_TSP`." msgstr "" -msgid ":math:`\\{x\\}`" +msgid "" +"Use directly when the resulting matrix is symmetric and there is no :math:" +"`\\infty` value." msgstr "" -msgid ":math:`e`" +msgid "It will be the users responsibility to make the matrix symmetric." msgstr "" -msgid ":math:`\\{x, y\\}`" +msgid "By using geometric or harmonic average of the non symmetric values." msgstr "" -msgid "" -"From above, nodes :math:`\\{a, b, d\\}` are dead ends because the number of " -"adjacent vertices is 1. No further checks are needed for those nodes." +msgid "By using max or min the non symmetric values." msgstr "" msgid "" -"On the following table, nodes :math:`\\{c, e\\}` because the even that the " -"number of adjacent vertices is not 1 for" -msgstr "" - -msgid "Operation: Dead End Contraction" +"By setting the upper triangle to be the mirror image of the lower triangle." msgstr "" msgid "" -"The dead end contraction will stop until there are no more dead end nodes. " -"For example from the following graph where :math:`w` is the `dead end`_ node:" +"By setting the lower triangle to be the mirror image of the upper triangle." msgstr "" -msgid "" -"After contracting :math:`w`, node :math:`v` is now a `dead end`_ node and is " -"contracted:" +msgid "It is also the users responsibility to fix an :math:`\\infty` value." msgstr "" msgid "" -"After contracting :math:`v`, stop. Node :math:`u` has the information of " -"nodes that were contrcted." -msgstr "" - -msgid "Node :math:`u` has the information of nodes that were contracted." +"Returns the sum of the costs of the shortest path for pair combination of " +"nodes in the graph." msgstr "" -msgid "In the algorithm, linear contraction is represented by 2." +msgid "" +"When the starting vertex and ending vertex are the same, there is no path." msgstr "" -msgid "Linear" +msgid "The aggregate cost in the non included values `(v, v)` is `0`." msgstr "" msgid "" -"In case of an undirected graph, a node is considered a `linear` node when" +"When the starting vertex and ending vertex are the different and there is no " +"path." msgstr "" -msgid "The number of adjacent vertices is 2." +msgid "" +"The aggregate cost in the non included values `(u, v)` is :math:`\\infty`." msgstr "" -msgid "In case of a directed graph, a node is considered a `linear` node when" +msgid "Let be the case the values returned are stored in a table:" msgstr "" -msgid "Linearity is symmetrical" +msgid "The unique index would be the pair: ``(start_vid, end_vid)``." msgstr "" -msgid "Linear vertex on undirected graph" +msgid "The aggregate cost of `(u, v)` is the same as for `(v, u)`." msgstr "" -msgid "The green nodes are `linear`_ nodes" +msgid "Any duplicated value in the **start vids** are ignored." msgstr "" -msgid "The blue nodes have an unlimited number of incoming and outgoing edges." +msgid "Used in:" msgstr "" -msgid "Undirected" +msgid "`Edges SQL`_ as described below" msgstr "" -msgid ":math:`v`" +msgid "**start vids**" msgstr "" -msgid ":math:`\\{u, w\\}`" +msgid "``ARRAY[BIGINT]``" msgstr "" -msgid "Linear vertex on directed graph" +msgid "Array of identifiers of starting vertices." msgstr "" -msgid "The white node is not linear because the linearity is not symetrical." +msgid "`Points SQL`_" msgstr "" -msgid "It is possible to go :math:`y \\rightarrow c \\rightarrow z`" +msgid "`Points SQL`_ as described below" msgstr "" -msgid "It's not possible to go :math:`z \\rightarrow c \\rightarrow y`" +msgid "Points SQL" msgstr "" -msgid "Is symmetrical?" +msgid "``pid``" msgstr "" -msgid ":math:`\\{u, v\\}`" +msgid "**value**" msgstr "" -msgid "yes" -msgstr "はい" - -msgid ":math:`\\{w, x\\}`" +msgid "Identifier of the point." msgstr "" -msgid ":math:`\\{y, z\\}`" +msgid "" +"Use with positive value, as internally will be converted to negative value" msgstr "" -msgid "no" -msgstr "いいえ" - -msgid "Operation: Linear Contraction" +msgid "If column is present, it can not be NULL." msgstr "" msgid "" -"The linear contraction will stop when there are no more linear nodes. For " -"example from the following graph where :math:`v` and :math:`w` are `linear`_ " -"nodes:" +"If column is not present, a sequential negative **value** will be given " +"automatically." msgstr "" -msgid "Contracting :math:`w`," +msgid "Identifier of the \"closest\" edge to the point." msgstr "" -msgid "The vertex :math:`w` is removed from the graph" +msgid "``fraction``" msgstr "" msgid "" -"The edges :math:`v \\rightarrow w` and :math:`w \\rightarrow z` are removed " -"from the graph." +"Value in <0,1> that indicates the relative postition from the first end " +"point of the edge." msgstr "" -msgid "" -"A new edge :math:`v \\rightarrow z` is inserted represented with red color." +msgid "``side``" msgstr "" -msgid "Contracting :math:`v`:" +msgid "``CHAR``" msgstr "" -msgid "The vertex :math:`v` is removed from the graph" +msgid "``b``" msgstr "" -msgid "" -"The edges :math:`u \\rightarrow v` and :math:`v \\rightarrow z` are removed " -"from the graph." +msgid "Value in [``b``, ``r``, ``l``, ``NULL``] indicating if the point is:" msgstr "" -msgid "" -"A new edge :math:`u \\rightarrow z` is inserted represented with red color." +msgid "In the right ``r``," msgstr "" -msgid "" -"Edge :math:`u \\rightarrow z` has the information of nodes that were " -"contracted." +msgid "In the left ``l``," msgstr "" -msgid "The cycle" +msgid "In both sides ``b``, ``NULL``" msgstr "" -msgid "" -"Contracting a graph, can be done with more than one operation. The order of " -"the operations affect the resulting contracted graph, after applying one " -"operation, the set of vertices that can be contracted by another operation " -"changes." -msgstr "" +msgid ":doc:`TSP-family`" +msgstr ":doc:`TSP-family`" -msgid "" -"This implementation, cycles ``max_cycles`` times through " -"``operations_order`` ." -msgstr "" +msgid "Dijkstra - Family of functions" +msgstr "ダイクストラ関連機能" -msgid "Contracting sample data" +msgid ":doc:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths." msgstr "" +":doc:`pgr_dijkstra` - 最短経路を求めるためのダイクストラ・アルゴリズム。" + +msgid ":doc:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths." +msgstr ":doc:`pgr_dijkstraCost` - 最短経路の総コストを集計します。" msgid "" -"In this section, building and using a contracted graph will be shown by " -"example." +":doc:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix." msgstr "" +":doc:`pgr_dijkstraCostMatrix` - pgr_dijkstra を使用してコストマトリックスを作" +"成します。" -msgid "The :doc:`sampledata` for an undirected graph is used" +msgid "" +":doc:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament " +"information." msgstr "" +":doc:`pgr_drivingDistance` - pgr_dijkstra を使用して対象エリアの情報を計算し" +"ます。" -msgid "a dead end operation first followed by a linear operation." +msgid "" +":doc:`pgr_KSP` - Use Yen algorithm with pgr_dijkstra to get the K shortest " +"paths." msgstr "" +":doc:`pgr_KSP` - pgr_dijkstraでYenアルゴリズムを使用してK最短経路を取得しま" +"す。" -msgid "Construction of the graph in the database" -msgstr "" +#, fuzzy +msgid ":doc:`pgr_dijkstraVia` - Get a route of a sequence of vertices." +msgstr ":doc:`pgr_dijkstraVia` - 連続したノードの経路を取得します。" -msgid "Original Data" +msgid ":doc:`pgr_dijkstraNear` - Get the route to the nearest vertex." msgstr "" -msgid "" -"The following query shows the original data involved in the contraction " -"operation." +msgid ":doc:`pgr_dijkstraNearCost` - Get the cost to the nearest vertex." msgstr "" -msgid "The original graph:" +msgid "" +"Dijkstra's algorithm, conceived by Dutch computer scientist Edsger Dijkstra " +"in 1956. It is a graph search algorithm that solves the shortest path " +"problem for a graph with non-negative edge path costs, producing a shortest " +"path from a starting vertex to an ending vertex. This implementation can be " +"used with a directed graph and an undirected graph." msgstr "" -msgid "Contraction results" +msgid "Running time: :math:`O(| start\\ vids | * (V \\log V + E))`" msgstr "" -msgid "" -"The results do not represent the contracted graph. They represent the " -"changes done to the graph after applying the contraction algorithm." +msgid "The Dijkstra family functions are based on the Dijkstra algorithm." msgstr "" -msgid "" -"Observe that vertices, for example, :math:`6` do not appear in the results " -"because it was not affected by the contraction algorithm." +msgid "`Combinations SQL`_" msgstr "" -msgid "After doing the dead end contraction operation:" +msgid "`Combinations SQL`_ as described below" msgstr "" -msgid "After doing the linear contraction operation to the graph above:" +msgid "**start vid**" msgstr "" -msgid "The process to create the contraction graph on the database:" +msgid "Identifier of the starting vertex of the path." msgstr "" -msgid "Add additional columns" +msgid "**end vid**" msgstr "" -msgid "" -"Adding extra columns to the ``edge_table`` and ``edge_table_vertices_pgr`` " -"tables, where:" +msgid "Identifier of the ending vertex of the path." msgstr "" -msgid "``contracted_vertices``" +msgid "**end vids**" msgstr "" -msgid "The vertices set belonging to the vertex/edge" +msgid "Array of identifiers of ending vertices." msgstr "" -msgid "``is_contracted``" +msgid "Combinations SQL" msgstr "" -msgid "On the vertex table" +msgid "Identifier of the departure vertex." msgstr "" -msgid "" -"when ``true`` the vertex is contracted, its not part of the contracted graph." +msgid "Identifier of the arrival vertex." msgstr "" -msgid "" -"when ``false`` the vertex is not contracted, its part of the contracted " -"graph." -msgstr "" +msgid "The problem definition (Advanced documentation)" +msgstr "問題の定義 (詳細ドキュメント)" -msgid "``is_new``" -msgstr "" +msgid "Given the following query:" +msgstr "次のクエリを実行します。" -msgid "On the edge table" -msgstr "" +msgid "pgr_dijkstra(:math:`sql, start_{vid}, end_{vid}, directed`)" +msgstr "pgr_dijkstra(:math:`sql, start_{vid}, end_{vid}, directed`)" +#, fuzzy msgid "" -"when ``true`` the edge was generated by the contraction algorithm. its part " -"of the contracted graph." +"where :math:`sql = \\{(id_i, source_i, target_i, cost_i, reverse\\_cost_i)\\}" +"`" msgstr "" +"where :math:`sql = \\{(id_i, source_i, target_i, cost_i, reverse\\_cost_i)\\}" +"`" -msgid "" -"when ``false`` the edge is an original edge, might be or not part of the " -"contracted graph." +msgid "and" msgstr "" -msgid "Store contraction information" -msgstr "" +msgid ":math:`source = \\bigcup source_i`," +msgstr ":math:`source = \\bigcup source_i`," -msgid "Store the `contraction results`_ in a table" -msgstr "" +msgid ":math:`target = \\bigcup target_i`," +msgstr ":math:`target = \\bigcup target_i`," -msgid "The vertex table update" -msgstr "" +msgid "The graphs are defined as follows:" +msgstr "グラフは次のように定義されます:" -msgid "" -"Use ``is_contracted`` column to indicate the vertices that are contracted." -msgstr "" +msgid "Directed graph" +msgstr "導かれたグラフ" -msgid "" -"Fill ``contracted_vertices`` with the information from the results tha " -"belong to the vertices." +msgid "The weighted directed graph, :math:`G_d(V,E)`, is defined by:" msgstr "" -msgid "The modified vertices table:" -msgstr "" +#, fuzzy +msgid "the set of vertices :math:`V`" +msgstr "ノードのセット :math:`V`" -msgid "The edge table update" -msgstr "" +msgid ":math:`V = source \\cup target \\cup {start_{vid}} \\cup {end_{vid}}`" +msgstr ":math:`V = source \\cup target \\cup {start_{vid}} \\cup {end_{vid}}`" -msgid "Insert the new edges generated by pgr_contraction." -msgstr "" +msgid "the set of edges :math:`E`" +msgstr "エッジのセット:math:`E`" -msgid "The modified ``edge_table``." +#, fuzzy +msgid "" +":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) " +"\\text{ when } cost >=0 \\} & \\quad \\text{if } reverse\\_cost = " +"\\varnothing \\\\ \\text{ } \\text{ } & \\quad \\text{ } \\\\ \\text{ } " +"\\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & \\quad " +"\\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) " +"\\text{ when } reverse\\_cost_i>=0 \\} & \\quad \\text{if } reverse\\_cost " +"\\neq \\varnothing \\\\ \\end{cases}`" msgstr "" +":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) " +"\\text{ when } cost >=0 \\} & \\quad \\text{if } reverse\\_cost = " +"\\varnothing \\\\ \\text{ } \\text{ } & \\quad \\text{ } \\\\ \\text{ } " +"\\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & \\quad " +"\\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) " +"\\text{ when } reverse\\_cost_i>=0 \\} & \\quad \\text{if } reverse\\_cost " +"\\neq \\varnothing \\\\ \\end{cases}`" -msgid "The contracted graph" -msgstr "" +msgid "Undirected graph" +msgstr "導かれないグラフ" -msgid "Vertices that belong to the contracted graph." -msgstr "" +#, fuzzy +msgid "The weighted undirected graph, :math:`G_u(V,E)`, is defined by:" +msgstr "重みづけされた無向グラフ :math:'G_u(V,E)''は、次のように定義されます。" -msgid "Edges that belong to the contracted graph." -msgstr "" +msgid ":math:`V = source \\cup target \\cup {start_v{vid}} \\cup {end_{vid}}`" +msgstr ":math:`V = source \\cup target \\cup {start_v{vid}} \\cup {end_{vid}}`" -msgid "Contracted graph" +#, fuzzy +msgid "" +":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) " +"\\text{ when } cost >=0 \\} & \\quad \\text{ } \\\\ \\cup \\{(target_i, " +"source_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ if } " +"reverse\\_cost = \\varnothing \\\\ \\text{ } \\text{ } & \\text{ } \\\\ " +"\\text{ } \\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & " +"\\text{ } \\\\ \\cup \\{(target_i, source_i, cost_i) \\text{ when } cost >=0 " +"\\} & \\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) " +"\\text{ when } reverse\\_cost_i >=0)\\} & \\text{ } \\\\ \\cup \\{(source_i, " +"target_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i >=0)\\} & \\quad " +"\\text{ if } reverse\\_cost \\neq \\varnothing \\\\ \\end{cases}`" msgstr "" +":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) " +"\\text{ when } cost >=0 \\} & \\quad \\text{ } \\\\ \\cup \\{(target_i, " +"source_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ if } " +"reverse\\_cost = \\varnothing \\\\ \\text{ } \\text{ } & \\text{ } \\\\ " +"\\text{ } \\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & " +"\\text{ } \\\\ \\cup \\{(target_i, source_i, cost_i) \\text{ when } cost >=0 " +"\\} & \\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) " +"\\text{ when } reverse\\_cost_i >=0)\\} & \\text{ } \\\\ \\cup \\{(source_i, " +"target_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i >=0)\\} & \\quad " +"\\text{ if } reverse\\_cost \\neq \\varnothing \\\\ \\end{cases}`" -msgid "Using the contracted graph" -msgstr "" +msgid "The problem" +msgstr "問題点" -msgid "Using the contracted graph with ``pgr_dijkstra``" -msgstr "" +msgid "Given:" +msgstr "与えられるもの:" -msgid "" -"There are three cases when calculating the shortest path between a given " -"source and target in a contracted graph:" +msgid ":math:`start_{vid} \\in V` a starting vertex" msgstr "" -msgid "Case 1: Both source and target belong to the contracted graph." +msgid ":math:`end_{vid} \\in V` an ending vertex" msgstr "" -msgid "Case 2: Source and/or target belong to an edge subgraph." +msgid "" +":math:`G(V,E) = \\begin{cases} G_d(V,E) & \\quad \\text{ if6 } directed = " +"true \\\\ G_u(V,E) & \\quad \\text{ if5 } directed = false \\\\ \\end{cases}`" msgstr "" +":math:`G(V,E) = \\begin{cases} G_d(V,E) & \\quad \\text{ if6 } directed = " +"true \\\\ G_u(V,E) & \\quad \\text{ if5 } directed = false \\\\ \\end{cases}`" -msgid "Case 3: Source and/or target belong to a vertex." -msgstr "" +msgid "Then:" +msgstr "その次に:" msgid "" -"Using the `Edges that belong to the contracted graph.`_ on lines 11 to 20." +":math:`\\boldsymbol{\\pi} = \\{(path\\_seq_i, node_i, edge_i, cost_i, " +"agg\\_cost_i)\\}`" msgstr "" +":math:`\\boldsymbol{\\pi} = \\{(path\\_seq_i, node_i, edge_i, cost_i, " +"agg\\_cost_i)\\}`" -msgid "Case 1" -msgstr "" +msgid "where:" +msgstr "どこに:" -msgid "" -"When both source and target belong to the contracted graph, a path is found." -msgstr "" +msgid ":math:`path\\_seq_i = i`" +msgstr ":math:`path\\_seq_i = i`" -msgid "Case 2" -msgstr "" +msgid ":math:`path\\_seq_{| \\pi |} = | \\pi |`" +msgstr ":math:`path\\_seq_{| \\pi |} = | \\pi |`" + +msgid ":math:`node_i \\in V`" +msgstr ":math:`node_i \\in V`" + +msgid ":math:`node_1 = start_{vid}`" +msgstr ":math:`node_1 = start_{vid}`" + +msgid ":math:`node_{| \\pi |} = end_{vid}`" +msgstr ":math:`node_{| \\pi |} = end_{vid}`" msgid "" -"When source and/or target belong to an edge subgraph then a path is not " -"found." +":math:`\\forall i \\neq | \\pi |, \\quad (node_i, node_{i+1}, cost_i) \\in E`" msgstr "" +":math:`\\forall i \\neq | \\pi |, \\quad (node_i, node_{i+1}, cost_i) \\in E`" msgid "" -"In this case, the contracted graph do not have an edge connecting with node :" -"math:`4`." +":math:`edge_i = \\begin{cases} id_{(node_i, node_{i+1},cost_i)} &\\quad " +"\\text{when } i \\neq | \\pi | \\\\ -1 &\\quad \\text{when } i = | \\pi | \\" +"\\ \\end{cases}`" msgstr "" +":math:`edge_i = \\begin{cases} id_{(node_i, node_{i+1},cost_i)} &\\quad " +"\\text{when } i \\neq | \\pi | \\\\ -1 &\\quad \\text{when } i = | \\pi | \\" +"\\ \\end{cases}`" -msgid "Case 3" -msgstr "" +msgid ":math:`cost_i = cost_{(node_i, node_{i+1})}`" +msgstr ":math:`cost_i = cost_{(node_i, node_{i+1})}`" -msgid "When source and/or target belong to a vertex then a path is not found." +msgid "" +":math:`agg\\_cost_i = \\begin{cases} 0 &\\quad \\text{when } i = 1 \\" +"\\ \\displaystyle\\sum_{k=1}^{i} cost_{(node_{k-1}, node_k)} &\\quad " +"\\text{when } i \\neq 1 \\\\ \\end{cases}`" msgstr "" +":math:`agg\\_cost_i = \\begin{cases} 0 &\\quad \\text{when } i = 1 \\\\ " +"\\displaystyle\\sum_{k=1}^{i} cost_{(node_{k-1}, node_k)} &\\quad " +"\\text{when } i \\neq 1 \\\\ \\end{cases}`" msgid "" -"In this case, the contracted graph do not have an edge connecting with node :" -"math:`7` and of node :math:`4` of the second case." +"In other words: The algorithm returns a the shortest path between :math:" +"`start_{vid}` and :math:`end_{vid}`, if it exists, in terms of a sequence of " +"nodes and of edges," msgstr "" -msgid "Refining the above function to include nodes that belong to an edge." +msgid "" +":math:`path\\_seq` indicates the relative position in the path of the :math:" +"`node` or :math:`edge`." msgstr "" +":math:`path\\_seq' は、:math:'node' または :math:'edge' の経路内の相対位置を" +"示しています。" -msgid "The vertices that need to be expanded are calculated on lines 11 to 17." +msgid ":math:`cost` is the cost of the edge to be used to go to the next node." msgstr "" +":math:`cost` は、次のノードに移動するために使用するエッジのコストです。" msgid "" -"Adding to the contracted graph that additional section on lines 26 to 28." +":math:`agg\\_cost` is the cost from the :math:`start_{vid}` up to the node." msgstr "" +":math:'agg\\_cost' は、:math:'start_{vid}' からノードまでのコストです。" -msgid "" -"When source and/or target belong to an edge subgraph, now, a path is found." -msgstr "" +msgid "If there is no path, the resulting set is empty." +msgstr "経路がない場合、計算結果は空になります。" -msgid "The routing graph now has an edge connecting with node :math:`4`." +msgid "Driving Distance - Category" msgstr "" msgid "" -"In this case, the contracted graph do not have an edge connecting with node :" -"math:`7`." +":doc:`pgr_drivingDistance` - Driving Distance based on Dijkstra's algorithm" msgstr "" -msgid "The vertices that need to be expanded are calculated on lines 19 to 24." +msgid ":doc:`pgr_primDD` - Driving Distance based on Prim's algorithm" msgstr "" -msgid "" -"Adding to the contracted graph that additional section on lines 38 to 40." +msgid ":doc:`pgr_kruskalDD` - Driving Distance based on Kruskal's algorithm" msgstr "" -msgid "" -"The code change do not affect this case so when source and/or target belong " -"to an edge subgraph, a path is still found." +msgid "Post processing" msgstr "" -msgid "When source and/or target belong to a vertex, now, a path is found." +msgid ":doc:`pgr_alphaShape` - Alpha shape computation" msgstr "" -msgid "Now, the routing graph has an edge connecting with node :math:`7`." +msgid ":doc:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints" msgstr "" -msgid ":doc:`sampledata`" +msgid "Calculate nodes that are within a distance." msgstr "" msgid "" -"https://www.cs.cmu.edu/afs/cs/academic/class/15210-f12/www/lectures/" -"lecture16.pdf" +"Extracts all the nodes that have costs less than or equal to the value " +"distance." msgstr "" -msgid "https://algo2.iti.kit.edu/documents/routeplanning/geisberger_dipl.pdf" +msgid "The edges extracted will conform to the corresponding spanning tree." msgstr "" -msgid "Cost - Category" +msgid "Edge :math:`(u, v)` will not be included when:" msgstr "" -msgid ":doc:`pgr_aStarCost`" +msgid "The distance from the **root** to :math:`u` > limit distance." msgstr "" -msgid ":doc:`pgr_bdAstarCost`" +msgid "The distance from the **root** to :math:`v` > limit distance." msgstr "" -msgid ":doc:`pgr_dijkstraCost`" +msgid "" +"No new nodes are created on the graph, so when is within the limit and is " +"not within the limit, the edge is not included." msgstr "" -msgid ":doc:`pgr_bdDijkstraCost`" +msgid "Edges SQL as described below." msgstr "" -msgid ":doc:`pgr_dijkstraNearCost`" +msgid "**Root vid**" msgstr "" -msgid ":doc:`pgr_withPointsCost`" +msgid "**Root vids**" msgstr "" -msgid "Each function works as part of the family it belongs to." +msgid "``ARRAY[ANY-INTEGER]``" msgstr "" -msgid "" -"Returns the sum of the costs of the shortest path of each pair combination " -"of nodes requested." +msgid "**distance**" msgstr "" -msgid "" -"Let be the case the values returned are stored in a table, so the unique " -"index would be the pair: ``(start_vid, end_vid)``." +msgid "Upper limit for the inclusion of a node in the result." msgstr "" -msgid "" -"Depending on the function and its parameters, the results can be symmetric." +msgid "Returns set of |result-spantree|" msgstr "" -msgid "" -"The **aggregate cost** of :math:`(u, v)` is the same as for :math:`(v, u)`." +msgid ":math:`depth-1` is the depth of ``pred``" msgstr "" -msgid "" -"Any duplicated value in the start or end vertex identifiers are ignored." +msgid "``pred``" msgstr "" -msgid "The returned values are ordered:" +msgid "Predecessor of ``node``." msgstr "" -msgid "``start_vid`` ascending" +msgid "When ``node`` = ``start_vid`` then has the value ``node``." msgstr "" -msgid "``end_vid`` ascending" -msgstr "" +#, fuzzy +msgid "Identifier of the ``edge`` used to arrive from ``pred`` to ``node``." +msgstr "start_vid から end_vid まで行くのにかかるコスト" -msgid "Cost Matrix - Category" +msgid "Experimental Functions" msgstr "" -msgid ":doc:`pgr_aStarCostMatrix`" +msgid "Families" msgstr "" -msgid ":doc:`pgr_dijkstraCostMatrix`" +msgid ":doc:`flow-family`" msgstr "" -msgid ":doc:`pgr_bdAstarCostMatrix`" +msgid ":doc:`pgr_maxFlowMinCost` - Details of flow and cost on edges." msgstr "" -msgid ":doc:`pgr_bdDijkstraCostMatrix`" +msgid ":doc:`pgr_maxFlowMinCost_Cost` - Only the Min Cost calculation." msgstr "" -msgid "proposed" -msgstr "リリース予定" +msgid ":doc:`chinesePostmanProblem-family`" +msgstr "" -msgid ":doc:`pgr_withPointsCostMatrix`" +msgid ":doc:`coloring-family`" msgstr "" -msgid "" -":doc:`TSP-family` needs as input a symmetric cost matrix and no edge `(u, " -"v)` must value :math:`\\infty`." +msgid ":doc:`transformation-family`" msgstr "" msgid "" -"This collection of functions will return a cost matrix in form of a table." +":doc:`pgr_lineGraphFull` - Transformation algorithm for generating a Line " +"Graph out of each vertex in the input graph." msgstr "" -msgid "Can be used as input to :doc:`pgr_TSP`." +msgid ":doc:`traversal-family`" msgstr "" msgid "" -"Use directly when the resulting matrix is symmetric and there is no :math:" -"`\\infty` value." +":doc:`pgr_breadthFirstSearch` - Breath first search traversal of the graph." msgstr "" -msgid "It will be the users responsibility to make the matrix symmetric." +msgid "" +":doc:`pgr_binaryBreadthFirstSearch` - Breath first search traversal of the " +"graph." msgstr "" -msgid "By using geometric or harmonic average of the non symmetric values." +msgid ":doc:`components-family`" msgstr "" -msgid "By using max or min the non symmetric values." -msgstr "" +msgid ":doc:`ordering-family`" +msgstr ":doc:`ordering-family`" msgid "" -"By setting the upper triangle to be the mirror image of the lower triangle." +":doc:`pgr_cuthillMckeeOrdering` - Return reverse Cuthill-McKee ordering of " +"an undirected graph." msgstr "" msgid "" -"By setting the lower triangle to be the mirror image of the upper triangle." -msgstr "" - -msgid "It is also the users responsibility to fix an :math:`\\infty` value." -msgstr "" - -msgid "" -"Returns the sum of the costs of the shortest path for pair combination of " -"nodes in the graph." -msgstr "" - -msgid "" -"When the starting vertex and ending vertex are the same, there is no path." -msgstr "" - -msgid "The aggregate cost in the non included values `(v, v)` is `0`." -msgstr "" - -msgid "" -"When the starting vertex and ending vertex are the different and there is no " -"path." -msgstr "" - -msgid "" -"The aggregate cost in the non included values `(u, v)` is :math:`\\infty`." -msgstr "" - -msgid "Let be the case the values returned are stored in a table:" -msgstr "" - -msgid "The unique index would be the pair: ``(start_vid, end_vid)``." -msgstr "" - -msgid "The aggregate cost of `(u, v)` is the same as for `(v, u)`." -msgstr "" - -msgid "Any duplicated value in the **start vids** are ignored." -msgstr "" - -msgid "Used in:" -msgstr "" - -msgid "`Edges SQL`_ as described below" -msgstr "" - -msgid "**start vids**" -msgstr "" - -msgid "``ARRAY[BIGINT]``" -msgstr "" - -msgid "Array of identifiers of starting vertices." -msgstr "" - -msgid "`Points SQL`_" -msgstr "" - -msgid "`Points SQL`_ as described below" -msgstr "" - -msgid "Points SQL" -msgstr "" - -msgid "``pid``" -msgstr "" - -msgid "**value**" -msgstr "" - -msgid "Identifier of the point." -msgstr "" - -msgid "" -"Use with positive value, as internally will be converted to negative value" -msgstr "" - -msgid "If column is present, it can not be NULL." -msgstr "" - -msgid "" -"If column is not present, a sequential negative **value** will be given " -"automatically." -msgstr "" - -msgid "Identifier of the \"closest\" edge to the point." -msgstr "" - -msgid "``fraction``" -msgstr "" - -msgid "" -"Value in <0,1> that indicates the relative postition from the first end " -"point of the edge." -msgstr "" - -msgid "``side``" -msgstr "" - -msgid "``CHAR``" -msgstr "" - -msgid "``b``" -msgstr "" - -msgid "Value in [``b``, ``r``, ``l``, ``NULL``] indicating if the point is:" -msgstr "" - -msgid "In the right ``r``," -msgstr "" - -msgid "In the left ``l``," -msgstr "" - -msgid "In both sides ``b``, ``NULL``" -msgstr "" - -msgid ":doc:`TSP-family`" -msgstr ":doc:`TSP-family`" - -msgid "Dijkstra - Family of functions" -msgstr "ダイクストラ関連機能" - -msgid ":doc:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths." -msgstr "" -":doc:`pgr_dijkstra` - 最短経路を求めるためのダイクストラ・アルゴリズム。" - -msgid ":doc:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths." -msgstr ":doc:`pgr_dijkstraCost` - 最短経路の総コストを集計します。" - -msgid "" -":doc:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix." -msgstr "" -":doc:`pgr_dijkstraCostMatrix` - pgr_dijkstra を使用してコストマトリックスを作" -"成します。" - -msgid "" -":doc:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament " -"information." -msgstr "" -":doc:`pgr_drivingDistance` - pgr_dijkstra を使用して対象エリアの情報を計算し" -"ます。" - -msgid "" -":doc:`pgr_KSP` - Use Yen algorithm with pgr_dijkstra to get the K shortest " -"paths." -msgstr "" -":doc:`pgr_KSP` - pgr_dijkstraでYenアルゴリズムを使用してK最短経路を取得しま" -"す。" - -msgid ":doc:`pgr_dijkstraVia` - Get a route of a seuence of vertices." -msgstr ":doc:`pgr_dijkstraVia` - 連続したノードの経路を取得します。" - -msgid ":doc:`pgr_dijkstraNear` - Get the route to the nearest vertex." -msgstr "" - -msgid ":doc:`pgr_dijkstraNearCost` - Get the cost to the nearest vertex." -msgstr "" - -msgid "" -"Dijkstra's algorithm, conceived by Dutch computer scientist Edsger Dijkstra " -"in 1956. It is a graph search algorithm that solves the shortest path " -"problem for a graph with non-negative edge path costs, producing a shortest " -"path from a starting vertex to an ending vertex. This implementation can be " -"used with a directed graph and an undirected graph." -msgstr "" - -msgid "Running time: :math:`O(| start\\ vids | * (V \\log V + E))`" -msgstr "" - -msgid "The Dijkstra family functions are based on the Dijkstra algorithm." -msgstr "" - -msgid "`Combinations SQL`_" -msgstr "" - -msgid "`Combinations SQL`_ as described below" -msgstr "" - -msgid "**start vid**" -msgstr "" - -msgid "Identifier of the starting vertex of the path." -msgstr "" - -msgid "**end vid**" -msgstr "" - -msgid "Identifier of the ending vertex of the path." -msgstr "" - -msgid "**end vids**" -msgstr "" - -msgid "Array of identifiers of ending vertices." -msgstr "" - -msgid "Combinations SQL" -msgstr "" - -msgid "Identifier of the departure vertex." -msgstr "" - -msgid "Identifier of the arrival vertex." -msgstr "" - -msgid "The problem definition (Advanced documentation)" -msgstr "問題の定義 (詳細ドキュメント)" - -msgid "Given the following query:" -msgstr "次のクエリを実行します。" - -msgid "pgr_dijkstra(:math:`sql, start_{vid}, end_{vid}, directed`)" -msgstr "pgr_dijkstra(:math:`sql, start_{vid}, end_{vid}, directed`)" - -#, fuzzy -msgid "" -"where :math:`sql = \\{(id_i, source_i, target_i, cost_i, reverse\\_cost_i)\\}" -"`" -msgstr "" -"where :math:`sql = \\{(id_i, source_i, target_i, cost_i, reverse\\_cost_i)\\}" -"`" - -msgid "and" -msgstr "" - -msgid ":math:`source = \\bigcup source_i`," -msgstr ":math:`source = \\bigcup source_i`," - -msgid ":math:`target = \\bigcup target_i`," -msgstr ":math:`target = \\bigcup target_i`," - -msgid "The graphs are defined as follows:" -msgstr "グラフは次のように定義されます:" - -msgid "Directed graph" -msgstr "導かれたグラフ" - -msgid "The weighted directed graph, :math:`G_d(V,E)`, is definied by:" -msgstr "重みづけされた有向グラフ :math:'G_d(V,E)''は、次のように定義されます:" - -#, fuzzy -msgid "the set of vertices :math:`V`" -msgstr "ノードのセット :math:`V`" - -msgid ":math:`V = source \\cup target \\cup {start_{vid}} \\cup {end_{vid}}`" -msgstr ":math:`V = source \\cup target \\cup {start_{vid}} \\cup {end_{vid}}`" - -msgid "the set of edges :math:`E`" -msgstr "エッジのセット:math:`E`" - -#, fuzzy -msgid "" -":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) " -"\\text{ when } cost >=0 \\} & \\quad \\text{if } reverse\\_cost = " -"\\varnothing \\\\ \\text{ } \\text{ } & \\quad \\text{ } \\\\ \\text{ } " -"\\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & \\quad " -"\\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) " -"\\text{ when } reverse\\_cost_i>=0 \\} & \\quad \\text{if } reverse\\_cost " -"\\neq \\varnothing \\\\ \\end{cases}`" -msgstr "" -":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) " -"\\text{ when } cost >=0 \\} & \\quad \\text{if } reverse\\_cost = " -"\\varnothing \\\\ \\text{ } \\text{ } & \\quad \\text{ } \\\\ \\text{ } " -"\\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & \\quad " -"\\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) " -"\\text{ when } reverse\\_cost_i>=0 \\} & \\quad \\text{if } reverse\\_cost " -"\\neq \\varnothing \\\\ \\end{cases}`" - -msgid "Undirected graph" -msgstr "導かれないグラフ" - -msgid "The weighted undirected graph, :math:`G_u(V,E)`, is definied by:" -msgstr "重みづけされた無向グラフ :math:'G_u(V,E)''は、次のように定義されます。" - -msgid ":math:`V = source \\cup target \\cup {start_v{vid}} \\cup {end_{vid}}`" -msgstr ":math:`V = source \\cup target \\cup {start_v{vid}} \\cup {end_{vid}}`" - -#, fuzzy -msgid "" -":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) " -"\\text{ when } cost >=0 \\} & \\quad \\text{ } \\\\ \\cup \\{(target_i, " -"source_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ if } " -"reverse\\_cost = \\varnothing \\\\ \\text{ } \\text{ } & \\text{ } \\\\ " -"\\text{ } \\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & " -"\\text{ } \\\\ \\cup \\{(target_i, source_i, cost_i) \\text{ when } cost >=0 " -"\\} & \\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) " -"\\text{ when } reverse\\_cost_i >=0)\\} & \\text{ } \\\\ \\cup \\{(source_i, " -"target_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i >=0)\\} & \\quad " -"\\text{ if } reverse\\_cost \\neq \\varnothing \\\\ \\end{cases}`" -msgstr "" -":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) " -"\\text{ when } cost >=0 \\} & \\quad \\text{ } \\\\ \\cup \\{(target_i, " -"source_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ if } " -"reverse\\_cost = \\varnothing \\\\ \\text{ } \\text{ } & \\text{ } \\\\ " -"\\text{ } \\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & " -"\\text{ } \\\\ \\cup \\{(target_i, source_i, cost_i) \\text{ when } cost >=0 " -"\\} & \\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) " -"\\text{ when } reverse\\_cost_i >=0)\\} & \\text{ } \\\\ \\cup \\{(source_i, " -"target_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i >=0)\\} & \\quad " -"\\text{ if } reverse\\_cost \\neq \\varnothing \\\\ \\end{cases}`" - -msgid "The problem" -msgstr "問題点" - -msgid "Given:" -msgstr "与えられるもの:" - -msgid ":math:`start_{vid} \\in V` a starting vertex" -msgstr "" - -msgid ":math:`end_{vid} \\in V` an ending vertex" -msgstr "" - -msgid "" -":math:`G(V,E) = \\begin{cases} G_d(V,E) & \\quad \\text{ if6 } directed = " -"true \\\\ G_u(V,E) & \\quad \\text{ if5 } directed = false \\\\ \\end{cases}`" -msgstr "" -":math:`G(V,E) = \\begin{cases} G_d(V,E) & \\quad \\text{ if6 } directed = " -"true \\\\ G_u(V,E) & \\quad \\text{ if5 } directed = false \\\\ \\end{cases}`" - -msgid "Then:" -msgstr "その次に:" - -msgid "" -":math:`\\boldsymbol{\\pi} = \\{(path\\_seq_i, node_i, edge_i, cost_i, " -"agg\\_cost_i)\\}`" -msgstr "" -":math:`\\boldsymbol{\\pi} = \\{(path\\_seq_i, node_i, edge_i, cost_i, " -"agg\\_cost_i)\\}`" - -msgid "where:" -msgstr "どこに:" - -msgid ":math:`path\\_seq_i = i`" -msgstr ":math:`path\\_seq_i = i`" - -msgid ":math:`path\\_seq_{| \\pi |} = | \\pi |`" -msgstr ":math:`path\\_seq_{| \\pi |} = | \\pi |`" - -msgid ":math:`node_i \\in V`" -msgstr ":math:`node_i \\in V`" - -msgid ":math:`node_1 = start_{vid}`" -msgstr ":math:`node_1 = start_{vid}`" - -msgid ":math:`node_{| \\pi |} = end_{vid}`" -msgstr ":math:`node_{| \\pi |} = end_{vid}`" - -msgid "" -":math:`\\forall i \\neq | \\pi |, \\quad (node_i, node_{i+1}, cost_i) \\in E`" -msgstr "" -":math:`\\forall i \\neq | \\pi |, \\quad (node_i, node_{i+1}, cost_i) \\in E`" - -msgid "" -":math:`edge_i = \\begin{cases} id_{(node_i, node_{i+1},cost_i)} &\\quad " -"\\text{when } i \\neq | \\pi | \\\\ -1 &\\quad \\text{when } i = | \\pi | \\" -"\\ \\end{cases}`" -msgstr "" -":math:`edge_i = \\begin{cases} id_{(node_i, node_{i+1},cost_i)} &\\quad " -"\\text{when } i \\neq | \\pi | \\\\ -1 &\\quad \\text{when } i = | \\pi | \\" -"\\ \\end{cases}`" - -msgid ":math:`cost_i = cost_{(node_i, node_{i+1})}`" -msgstr ":math:`cost_i = cost_{(node_i, node_{i+1})}`" - -msgid "" -":math:`agg\\_cost_i = \\begin{cases} 0 &\\quad \\text{when } i = 1 \\" -"\\ \\displaystyle\\sum_{k=1}^{i} cost_{(node_{k-1}, node_k)} &\\quad " -"\\text{when } i \\neq 1 \\\\ \\end{cases}`" -msgstr "" -":math:`agg\\_cost_i = \\begin{cases} 0 &\\quad \\text{when } i = 1 \\\\ " -"\\displaystyle\\sum_{k=1}^{i} cost_{(node_{k-1}, node_k)} &\\quad " -"\\text{when } i \\neq 1 \\\\ \\end{cases}`" - -msgid "" -"In other words: The algorithm returns a the shortest path between :math:" -"`start_{vid}` and :math:`end_{vid}`, if it exists, in terms of a sequence of " -"nodes and of edges," -msgstr "" - -msgid "" -":math:`path\\_seq` indicates the relative position in the path of the :math:" -"`node` or :math:`edge`." -msgstr "" -":math:`path\\_seq' は、:math:'node' または :math:'edge' の経路内の相対位置を" -"示しています。" - -msgid ":math:`cost` is the cost of the edge to be used to go to the next node." -msgstr "" -":math:`cost` は、次のノードに移動するために使用するエッジのコストです。" - -msgid "" -":math:`agg\\_cost` is the cost from the :math:`start_{vid}` up to the node." -msgstr "" -":math:'agg\\_cost' は、:math:'start_{vid}' からノードまでのコストです。" - -msgid "If there is no path, the resulting set is empty." -msgstr "経路がない場合、計算結果は空になります。" - -msgid "Driving Distance - Category" -msgstr "" - -msgid "" -":doc:`pgr_drivingDistance` - Driving Distance based on Dijkstra's algorithm" -msgstr "" - -msgid ":doc:`pgr_primDD` - Driving Distance based on Prim's algorithm" -msgstr "" - -msgid ":doc:`pgr_kruskalDD` - Driving Distance based on Kruskal's algorithm" -msgstr "" - -msgid "Post pocessing" -msgstr "" - -msgid ":doc:`pgr_alphaShape` - Alpha shape computation" -msgstr "" - -msgid ":doc:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints" -msgstr "" - -msgid "Calculate nodes that are within a distance." -msgstr "" - -msgid "" -"Extracts all the nodes that have costs less than or equal to the value " -"distance." -msgstr "" - -msgid "The edges extracted will conform to the corresponding spanning tree." -msgstr "" - -msgid "Edge :math:`(u, v)` will not be included when:" -msgstr "" - -msgid "The distance from the **root** to :math:`u` > limit distance." -msgstr "" - -msgid "The distance from the **root** to :math:`v` > limit distance." -msgstr "" - -msgid "" -"No new nodes are created on the graph, so when is within the limit and is " -"not within the limit, the edge is not included." -msgstr "" - -msgid "Edges SQL as described below." -msgstr "" - -msgid "**Root vid**" -msgstr "" - -msgid "**Root vids**" -msgstr "" - -msgid "``ARRAY[ANY-INTEGER]``" -msgstr "" - -msgid "**distance**" -msgstr "" - -msgid "Upper limit for the inclusion of a node in the result." -msgstr "" - -msgid "Returns set of |result-spantree|" -msgstr "" - -msgid ":math:`depth-1` is the depth of ``pred``" -msgstr "" - -msgid "``pred``" -msgstr "" - -msgid "Predecessor of ``node``." -msgstr "" - -msgid "When ``node`` = ``start_vid`` then has the value ``node``." -msgstr "" - -#, fuzzy -msgid "Identifier of the ``edge`` used to arrive from ``pred`` to ``node``." -msgstr "start_vid から end_vid まで行くのにかかるコスト" - -msgid "Experimental Functions" -msgstr "" - -msgid "Families" -msgstr "" - -msgid ":doc:`flow-family`" -msgstr "" - -msgid ":doc:`pgr_maxFlowMinCost` - Details of flow and cost on edges." -msgstr "" - -msgid ":doc:`pgr_maxFlowMinCost_Cost` - Only the Min Cost calculation." -msgstr "" - -msgid ":doc:`chinesePostmanProblem-family`" -msgstr "" - -msgid ":doc:`coloring-family`" -msgstr "" - -msgid ":doc:`transformation-family`" -msgstr "" - -msgid "" -":doc:`pgr_lineGraphFull` - Transformation algorithm for generating a Line " -"Graph out of each vertex in the input graph." -msgstr "" - -msgid ":doc:`traversal-family`" -msgstr "" - -msgid "" -":doc:`pgr_breadthFirstSearch` - Breath first search traversal of the graph." -msgstr "" - -msgid "" -":doc:`pgr_binaryBreadthFirstSearch` - Breath first search traversal of the " -"graph." -msgstr "" - -msgid ":doc:`components-family`" -msgstr "" - -msgid ":doc:`ordering-family`" -msgstr ":doc:`ordering-family`" - -msgid "" -":doc:`pgr_cuthillMckeeOrdering` - Return reverse Cuthill-McKee ordering of " -"an undirected graph." +":doc:`pgr_topologicalSort` - Linear ordering of the vertices for directed " +"acyclic graph." msgstr "" #, fuzzy @@ -4005,8 +3498,9 @@ msgstr "" msgid ":doc:`VRP-category`" msgstr "" -msgid "Unclassified" -msgstr "" +#, fuzzy +msgid "Shortest Path Category" +msgstr "BFS - カテゴリ" msgid ":doc:`pgr_bellmanFord`" msgstr "" @@ -4017,19 +3511,22 @@ msgstr "" msgid ":doc:`pgr_edwardMoore`" msgstr "" +msgid "Planar Family" +msgstr "" + msgid ":doc:`pgr_isPlanar`" msgstr "" -msgid ":doc:`pgr_stoerWagner`" +msgid "Miscellaneous Algorithms" msgstr "" -msgid ":doc:`pgr_topologicalSort`" +msgid ":doc:`pgr_lengauerTarjanDominatorTree`" msgstr "" -msgid ":doc:`pgr_transitiveClosure`" +msgid ":doc:`pgr_stoerWagner`" msgstr "" -msgid ":doc:`pgr_lengauerTarjanDominatorTree`" +msgid ":doc:`pgr_transitiveClosure`" msgstr "" msgid ":doc:`pgr_hawickCircuits`" @@ -4085,7 +3582,7 @@ msgid "" "returned." msgstr "" -msgid "There is no flow when source has the same vaule as target." +msgid "There is no flow when source has the same value as target." msgstr "" msgid "Any duplicated values in source or target are ignored." @@ -4375,6 +3872,11 @@ msgstr "" msgid ":doc:`pgr_kruskalDD`" msgstr "" +msgid "" +":doc:`pgr_degree` - Returns a set of vertices and corresponding count of " +"incident edges to the vertex." +msgstr "" + msgid ":doc:`prim-family`" msgstr "" @@ -4384,182 +3886,265 @@ msgstr "" msgid ":doc:`pgr_primDD`" msgstr "" -msgid ":doc:`reference`" +msgid ":doc:`reference`" +msgstr "" + +msgid ":doc:`pgr_version`" +msgstr "" + +msgid ":doc:`pgr_full_version`" +msgstr "" + +msgid ":doc:`topology-functions`" +msgstr "" + +msgid "" +"The following functions modify the database directly therefore the user must " +"have special permissions given by the administrators to use them." +msgstr "" + +msgid ":doc:`pgr_createTopology` - create a topology based on the geometry." +msgstr "" + +msgid "" +":doc:`pgr_createVerticesTable` - reconstruct the vertices table based on the " +"source and target information." +msgstr "" + +msgid "" +":doc:`pgr_analyzeGraph` - to analyze the edges and vertices of the edge " +"table." +msgstr "" + +msgid ":doc:`pgr_analyzeOneWay` - to analyze directionality of the edges." +msgstr "" + +msgid ":doc:`pgr_nodeNetwork` - to create nodes to a not noded edge table." +msgstr "" + +msgid "" +":doc:`pgr_extractVertices` - Extracts vertex information based on the edge " +"table information." +msgstr "" + +msgid ":doc:`pgr_trsp` - Turn Restriction Shortest Path (TRSP)" +msgstr "" + +msgid "Utilities family" +msgstr "" + +msgid ":doc:`pgr_findCloseEdges`" +msgstr "" + +msgid "Functions by categories" +msgstr "" + +msgid ":doc:`cost-category`" +msgstr "" + +msgid ":doc:`costMatrix-category`" +msgstr "" + +msgid ":doc:`drivingDistance-category`" +msgstr "" + +msgid ":doc:`KSP-category`" +msgstr "" + +#, fuzzy +msgid ":doc:`spanningTree-category`" +msgstr ":doc:`DFS-category`" + +msgid ":doc:`BFS-category`" +msgstr "" + +msgid ":doc:`DFS-category`" +msgstr ":doc:`DFS-category`" + +msgid "Available Functions but not official pgRouting functions" +msgstr "" + +msgid ":doc:`proposed`" +msgstr "" + +msgid ":doc:`experimental`" +msgstr "" + +msgid ":doc:`release_notes`" +msgstr "" + +msgid "pgRouting 4.0.0 Release Notes" +msgstr "" + +msgid "" +"To see all issues & pull requests closed by this release see the `Git closed " +"milestone for 4.0.0 `__" +msgstr "" + +msgid "Functions promoted to official" +msgstr "" + +msgid "pgr_trsp" +msgstr "" + +msgid "pgr_trspVia" msgstr "" -msgid ":doc:`pgr_version`" +msgid "pgr_trspVia_withPoints" msgstr "" -msgid ":doc:`pgr_full_version`" +msgid "pgr_trsp_withPoints" msgstr "" -msgid ":doc:`topology-functions`" +msgid "pgr_withPoints" msgstr "" -msgid "" -"The following functions modify the database directly therefore the user must " -"have special permissions given by the administrators to use them." +msgid "pgr_withPointsCost" msgstr "" -msgid ":doc:`pgr_createTopology` - create a topology based on the geometry." +msgid "pgr_withPointsCostMatrix" msgstr "" -msgid "" -":doc:`pgr_createVerticesTable` - reconstruct the vertices table based on the " -"source and target information." +msgid "pgr_withPointsDD" msgstr "" -msgid "" -":doc:`pgr_analyzeGraph` - to analyze the edges and vertices of the edge " -"table." +msgid "pgr_withPointsKSP" msgstr "" -msgid ":doc:`pgr_analyzeOneWay` - to analyze directionality of the edges." +msgid "pgr_withPointsVia" msgstr "" -msgid ":doc:`pgr_nodeNetwork` - to create nodes to a not noded edge table." +msgid "Signatures promoted to official" msgstr "" -msgid ":doc:`pgr_trsp` - Turn Restriction Shortest Path (TRSP)" +msgid "pgr_aStar(Combinations)" msgstr "" -msgid "Functions by categories" +msgid "pgr_aStarCost(Combinations)" msgstr "" -msgid ":doc:`cost-category`" +msgid "pgr_bdAstar(Combinations)" msgstr "" -msgid ":doc:`costMatrix-category`" +msgid "pgr_bdAstarCost(Combinations)" msgstr "" -msgid ":doc:`drivingDistance-category`" +msgid "pgr_bdDijkstra(Combinations)" msgstr "" -msgid ":doc:`KSP-category`" +msgid "pgr_bdDijkstraCost(Combinations)" msgstr "" -msgid ":doc:`spanningTree-family`" +msgid "pgr_dijkstra(Combinations)" msgstr "" -msgid ":doc:`BFS-category`" +msgid "pgr_dijkstraCost(Combinations)" msgstr "" -msgid ":doc:`DFS-category`" -msgstr ":doc:`DFS-category`" +#, fuzzy +msgid "pgr_KSP(All signatures)" +msgstr "機能" -msgid "Available Functions but not official pgRouting functions" +msgid "pgr_boykovKolmogorov(Combinations)" msgstr "" -msgid ":doc:`proposed`" +msgid "pgr_edmondsKarp(Combinations)" msgstr "" -msgid ":doc:`experimental`" +msgid "pgr_maxFlow(Combinations)" msgstr "" -msgid ":doc:`release_notes`" +msgid "pgr_pushRelabel(Combinations)" msgstr "" -msgid "pgRouting 3.7.0 Release Notes" +msgid "code enhancements:" msgstr "" -msgid "" -"To see all issues & pull requests closed by this release see the `Git closed " -"milestone for 3.7.0 `__" +msgid "Removal of unused C/C++ code" msgstr "" -msgid "Support" -msgstr "サポート" +msgid "Removal of SQL deprecated functions" +msgstr "" msgid "" -"`#2656 `__ Stop support of " -"PostgreSQL12 on pgrouting v3.7" +"pgr_trsp(text,integer,double precision,integer,double precision,boolean," +"boolean,text)" msgstr "" -msgid "Stopping support of PostgreSQL 12" +msgid "pgr_trsp(text,integer,integer,boolean,boolean,text)" msgstr "" -msgid "CI does not test for PostgreSQL 12" +msgid "" +"pgr_trspviaedges(text,integer[],double precision[],boolean,boolean,text)" msgstr "" -msgid "New experimental functions" +msgid "pgr_trspviavertices(text,anyarray,boolean,boolean,text)" msgstr "" -msgid "Metrics" +msgid "Removal of SQL deprecated internal functions" msgstr "" -msgid "pgr_betweennessCentrality" +msgid "_pgr_dijkstranear(text,anyarray,anyarray,bigint,boolean)" msgstr "" -msgid "Official functions changes" +msgid "_pgr_dijkstranear(text,anyarray,bigint,bigint,boolean)" msgstr "" -msgid "" -"`#2605 `__ Standarize " -"spanning tree functions output" +msgid "_pgr_dijkstranear(text,bigint,anyarray,bigint,boolean)" msgstr "" -msgid "Functions:" +msgid "_pgr_dijkstra(text,anyarray,anyarray,boolean,boolean,boolean,bigint)" msgstr "" -msgid "``pgr_kruskalDD``" +msgid "_pgr_dijkstra(text,text,boolean,boolean,boolean)" msgstr "" -msgid "``pgr_kruskalDFS``" +msgid "_pgr_drivingdistance(text,anyarray,double precision,boolean,boolean)" msgstr "" -msgid "``pgr_kruskalBFS``" +msgid "_pgr_kruskal(text,anyarray,text,bigint,double precision)" msgstr "" -msgid "``pgr_primDD``" +msgid "_pgr_prim(text,anyarray,text,bigint,double precision)" msgstr "" -msgid "``pgr_primDFS``" +msgid "" +"_pgr_trsp(text,integer,double precision,integer,double precision,boolean," +"boolean,text)" msgstr "" -msgid "``pgr_primBFS``" +msgid "_pgr_trsp(text,text,anyarray,anyarray,boolean)" msgstr "" -msgid "Standarizing output columns to |result-spantree|" +msgid "_pgr_trsp(text,text,anyarray,bigint,boolean)" msgstr "" -msgid "Added ``pred`` result columns." +msgid "_pgr_trsp(text,text,bigint,anyarray,boolean)" msgstr "" -msgid "Experimental promoted to proposed." +msgid "_pgr_trsp(text,text,bigint,bigint,boolean)" msgstr "" -msgid "" -"`#2635 `__ pgr_LineGraph " -"ignores directed flag and use negative values for identifiers." +msgid "_pgr_trspviavertices(text,integer[],boolean,boolean,text)" msgstr "" -msgid "``pgr_lineGraph``" +msgid "_pgr_withpointsvia(text,bigint[],double precision[],boolean)" msgstr "" -msgid "Promoted to **proposed** signature." +msgid "_trsp(text,text,anyarray,anyarray,boolean)" msgstr "" -#, fuzzy -msgid "Works for directed and undirected graphs." -msgstr "導かれないグラフ。" - -msgid "Code enhancement" +msgid "_v4trsp(text,text,anyarray,anyarray,boolean)" msgstr "" -msgid "" -"`#2599 `__ Driving " -"distance cleanup" +msgid "_v4trsp(text,text,text,boolean)" msgstr "" -msgid "" -"`#2607 `__ Read postgresql " -"data on C++" +msgid "Deprecation of internal C/C++ functions" msgstr "" -msgid "" -"`#2614 `__ Clang tidy does " -"not work" +msgid "Internal C/C++ functions in legacy" msgstr "" msgid "All releases" @@ -4568,9 +4153,6 @@ msgstr "" msgid "Kruskal - Family of functions" msgstr "" -msgid "Boost Graph Inside" -msgstr "" - msgid "" "Kruskal's algorithm is a greedy minimum spanning tree algorithm that in each " "cycle finds and adds the edge of the least possible weight that connects any " @@ -4604,13 +4186,6 @@ msgstr "" msgid "All deprecated functions will be removed on next mayor version 4.0.0" msgstr "" -#, fuzzy -msgid "Migration of functions" -msgstr "ダイクストラ関連機能" - -msgid "Migrating functions" -msgstr "" - msgid "Migration of ``pgr_aStar``" msgstr "" @@ -4764,7 +4339,7 @@ msgstr "" msgid "If needed add the new columns, for example:" msgstr "" -msgid "Migration of ``pgr_drivingdistance``" +msgid "Migration of ``pgr_drivingDistance``" msgstr "" msgid "" @@ -4784,10 +4359,10 @@ msgstr "" msgid "|result-spantree|" msgstr "" -msgid "``pgr_drivingdistance`` (Single vertex)" +msgid "pgr_drivingDistance(Single vertex)" msgstr "" -msgid "``pgr_drivingdistance`` (Multiple vertices)" +msgid "pgr_drivingDistance(Multiple vertices)" msgstr "" msgid "Output columns were |result-dij-dd|" @@ -4849,12 +4424,21 @@ msgstr "" msgid "|result-bfs|" msgstr "" +msgid "``pgr_kruskalDD``" +msgstr "" + msgid "Single vertex" msgstr "" msgid "Multiple vertices" msgstr "" +msgid "``pgr_kruskalDFS``" +msgstr "" + +msgid "``pgr_kruskalBFS``" +msgstr "" + msgid "Output columns were |result-bfs|" msgstr "" @@ -5011,6 +4595,15 @@ msgid "" "are being standardized." msgstr "" +msgid "``pgr_primDD``" +msgstr "" + +msgid "``pgr_primDFS``" +msgstr "" + +msgid "``pgr_primBFS``" +msgstr "" + msgid "Prim single vertex" msgstr "" @@ -5084,130 +4677,250 @@ msgstr "" msgid "directed" msgstr "導かれないグラフ" -msgid "true" +msgid "true" +msgstr "" + +msgid "driving_side" +msgstr "" + +msgid "'b'" +msgstr "" + +msgid "details" +msgstr "" + +msgid "false" +msgstr "" + +msgid "Driving side was named optional" +msgstr "" + +msgid "On directed graph ``b`` could be used as **driving side**" +msgstr "" + +msgid "On undirected graph ``r`` could be used as **driving side**" +msgstr "" + +msgid "Also ``l`` could be used as **driving side**" +msgstr "" + +#, fuzzy +msgid "After Migration" +msgstr "もっと詳しく知る" + +msgid "Be aware of the existence of the additional result Columns." +msgstr "" + +msgid "New output columns are |result-spantree|" +msgstr "" + +msgid "" +"**driving side** parameter is unnamed compulsory, and valid values differ " +"for directed and undirected graphs." +msgstr "" + +msgid "Does not have a default value." +msgstr "" + +msgid "In directed graph: valid values are [``r``, ``R``, ``l``, ``L``]" +msgstr "" + +msgid "In undirected graph: valid values are [``b``, ``B``]" +msgstr "" + +msgid "Using an invalid value throws an ``ERROR``." +msgstr "" + +msgid "" +"Using `this `__ example." +msgstr "" + +#, fuzzy +msgid "" +"``depth`` contains the **depth** from the ``start_vid`` vertex to the " +"``node``." +msgstr "" +":math:'agg\\_cost' は、:math:'start_{vid}' からノードまでのコストです。" + +msgid "" +"To migrate, use an unnamed valid value for **driving side** after the " +"**distance** parameter:" +msgstr "" + +msgid "To get results from previous versions:" +msgstr "" + +msgid "filter out the additional columns, for example;" +msgstr "" + +msgid "" +"When ``details => false`` to remove the points use ``WHERE node >= 0 OR cost " +"= 0``" +msgstr "" + +msgid "" +"Using `this `__ example." +msgstr "" + +msgid "Filter out the additional columns" +msgstr "" + +msgid "Migration of ``pgr_withPointsKSP``" +msgstr "" + +msgid "" +"Starting from `v3.6.0 `__ :" +"doc:`pgr_withPointsKSP` result columns are being standardized." +msgstr "" + +msgid "" +"And ``driving side`` parameter changed from named optional to unnamed " +"compulsory **driving side** and its validity differ for directed and " +"undirected graphs." +msgstr "" + +msgid "``pgr_withPointsKSP`` (`One to One`)" +msgstr "" + +msgid "Output columns were |old-pid-result|" +msgstr "" + +msgid "New output columns are |nksp-result|" +msgstr "" + +msgid "" +"Using `this `__ example." +msgstr "" + +msgid "" +"If needed filter out the additional columns, for example, to return the " +"original columns:" +msgstr "" + +msgid "Migration of ``pgr_trsp`` (Vertices)" +msgstr "" + +#, fuzzy +msgid "Signature:" +msgstr "機能" + +msgid "Deprecated" +msgstr "" + +msgid "`v3.4.0 `__" +msgstr "" + +msgid "Removed" +msgstr "" + +msgid "`v4.0.0 `__" +msgstr "" + +#, fuzzy +msgid ":doc:`pgr_dijkstra`" +msgstr ":doc:`pgr_kruskalBFS`" + +msgid ":doc:`pgr_trsp`" msgstr "" -msgid "driving_side" -msgstr "" +#, fuzzy +msgid "`Migration of restrictions`_" +msgstr "ダイクストラ関連機能" -msgid "'b'" +msgid "Use ``pgr_dijkstra`` when there are no restrictions." msgstr "" -msgid "details" +msgid "Use :doc:`pgr_dijkstra` instead." msgstr "" -msgid "false" +msgid "To get the original column names:" msgstr "" -msgid "Driving side was named optional" +msgid "``id1`` is the node" msgstr "" -msgid "On directed graph ``b`` could be used as **driving side**" +msgid "``id2`` is the edge" msgstr "" -msgid "On undirected graph ``r`` could be used as **driving side**" +msgid "Use ``pgr_trsp`` when there are restrictions." msgstr "" -msgid "Also ``l`` could be used as **driving side**" +msgid "Use :doc:`pgr_trsp` (One to One) instead." msgstr "" -#, fuzzy -msgid "After Migration" -msgstr "もっと詳しく知る" - -msgid "Be aware of the existence of the additional result Columns." +msgid "Migration of ``pgr_trsp`` (Edges)" msgstr "" -msgid "New output columns are |result-spantree|" +msgid ":doc:`pgr_withPoints`" msgstr "" -msgid "" -"**driving side** parameter is unnamed compulsory, and valid values differ " -"for directed and undirected graphs." +msgid ":doc:`pgr_trsp_withPoints`" msgstr "" -msgid "Does not have a default value." +msgid "Use ``pgr_withPoints`` when there are no restrictions." msgstr "" -msgid "In directed graph: valid values are [``r``, ``R``, ``l``, ``L``]" +msgid "Use :doc:`pgr_withPoints` (One to One) instead." msgstr "" -msgid "In undirected graph: valid values are [``b``, ``B``]" +msgid "Use ``pgr_trsp_withPoints`` when there are restrictions." msgstr "" -msgid "Using an invalid value throws an ``ERROR``." +msgid "Use :doc:`pgr_trsp_withPoints` instead." msgstr "" -msgid "" -"Using `this `__ example." +msgid "Migration of ``pgr_trspViaVertices``" msgstr "" -#, fuzzy -msgid "" -"``depth`` contains the **depth** from the ``start_vid`` vertex to the " -"``node``." +msgid ":doc:`pgr_dijkstraVia`" msgstr "" -":math:'agg\\_cost' は、:math:'start_{vid}' からノードまでのコストです。" -msgid "" -"To migrate, use an unnamed valid value for **driving side** after the " -"**distance** parameter:" +msgid ":doc:`pgr_trspVia`" msgstr "" -msgid "To get results from previous versions:" +msgid "Use ``pgr_dijkstraVia`` when there are no restrictions" msgstr "" -msgid "filter out the additional columns, for example;" +msgid "Use :doc:`pgr_dijkstraVia` instead." msgstr "" -msgid "" -"When ``details => false`` to remove the points use ``WHERE node >= 0 OR cost " -"= 0``" +msgid "``id1`` is the path identifier" msgstr "" -msgid "" -"Using `this `__ example." +msgid "``id2`` is the node" msgstr "" -msgid "Filter out the additional columns" +msgid "``id3`` is the edge" msgstr "" -msgid "Migration of ``pgr_withPointsKSP``" +msgid "Use ``pgr_trspVia`` when there are restrictions" msgstr "" -msgid "" -"Starting from `v3.6.0 `__ :" -"doc:`pgr_withPointsKSP` result columns are being standardized." +msgid "Use :doc:`pgr_trspVia` instead." msgstr "" -msgid "" -"And ``driving side`` parameter changed from named optional to unnamed " -"compulsory **driving side** and its validity differ for directed and " -"undirected graphs." +msgid "Migration of ``pgr_trspViaEdges``" msgstr "" -msgid "``pgr_withPointsKSP`` (`One to One`)" +msgid ":doc:`pgr_withPointsVia`" msgstr "" -msgid "Output columns were |old-pid-result|" +msgid ":doc:`pgr_trspVia_withPoints`" msgstr "" -msgid "New output columns are |nksp-result|" +msgid "Use ``pgr_withPointsVia`` when there are no restrictions" msgstr "" -msgid "" -"Using `this `__ example." +msgid "Use :doc:`pgr_withPointsVia` instead." msgstr "" -msgid "" -"If needed filter out the additional columns, for example, to return the " -"original columns:" +msgid "Use ``pgr_trspVia_withPoints`` when there are restrictions" msgstr "" -msgid "Migration of turn restrictions" +msgid "Use :doc:`pgr_trspVia_withPoints` instead." msgstr "" msgid "Migration of restrictions" @@ -5355,4641 +5068,4926 @@ msgstr "" msgid "The migrated table contents:" msgstr "" -msgid "Migration of ``pgr_trsp`` (Vertices)" +msgid ":doc:`withPoints-category`" +msgstr "" + +#, fuzzy +msgid "Ordering - Family of functions" +msgstr "ダイクストラ関連機能" + +msgid "pgRouting Concepts" +msgstr "" + +msgid "" +"This is a simple guide that go through some of the steps for getting started " +"with pgRouting. This guide covers:" +msgstr "" + +msgid "Graphs" +msgstr "" + +msgid "A graph is an ordered pair :math:`G = (V ,E)` where:" +msgstr "" + +msgid ":math:`V` is a set of vertices, also called nodes." +msgstr "" + +msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V \\}`" +msgstr "" + +msgid "There are different kinds of graphs:" +msgstr "" + +msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V\\}`" +msgstr "" + +msgid "Undirected simple graph" +msgstr "" + +msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V, u \\neq v\\}`" +msgstr "" + +msgid ":math:`E \\subseteq \\{( u, v ) \\mid (u , v) \\in (V X V) \\}`" +msgstr "" + +msgid "Directed simple graph" msgstr "" msgid "" -":doc:`pgr_trsp` signatures have changed and many issues have been fixed in " -"the new signatures. This section will show how to migrate from the old " -"signatures to the new replacement functions. This also affects the " -"restrictions." +":math:`E \\subseteq \\{( u, v ) \\mid (u , v) \\in (V X V), u \\neq v\\}`" +msgstr "" + +msgid "Graphs:" +msgstr "" + +msgid "Do not have geometries." +msgstr "" + +msgid "" +"Some graph theory problems require graphs to have weights, called **cost** " +"in pgRouting." +msgstr "" + +msgid "" +"In pgRouting there are several ways to represent a graph on the database:" msgstr "" -msgid "The integral type of the ``Edges SQL`` can only be ``INTEGER``." +msgid "With ``cost``" msgstr "" -msgid "The floating point type of the ``Edges SQL`` can only be ``FLOAT``." +msgid "(``id``, ``source``, ``target``, ``cost``)" msgstr "" -msgid "``directed`` flag is compulsory." +msgid "With ``cost`` and ``reverse_cost``" msgstr "" -msgid "Does not autodetect if ``reverse_cost`` column exist." +msgid "(``id``, ``source``, ``target``, ``cost``, ``reverse_cost``)" msgstr "" msgid "" -"User must be careful to match the existence of the column with the value of " -"``has_rcost`` parameter." +"Identifier of the edge. Requirement to use the database in a consistent. " +"manner." msgstr "" -msgid "The restrictions inner query is optional." +msgid "Identifier of a vertex." msgstr "" -msgid "The output column names are meaningless" +msgid "Weight of the edge (``source``, ``target``):" msgstr "" -msgid "Migrate by using:" +msgid "" +"When negative the edge (``source``, ``target``) do not exist on the graph." msgstr "" -msgid ":doc:`pgr_dijkstra` when there are no restrictions," +msgid "``cost`` must exist in the query." msgstr "" -msgid ":doc:`pgr_trsp` (One to One) when there are restrictions." +msgid "" +"When negative the edge (``target``, ``source``) do not exist on the graph." msgstr "" -msgid "Migrating ``pgr_trsp`` (Vertices) using ``pgr_dijkstra``" +msgid "" +"The decision of the graph to be **directed** or **undirected** is done when " +"executing a pgRouting algorithm." msgstr "" -msgid "The following query does not have restrictions." +msgid "Graph with ``cost``" msgstr "" -msgid "A message about deprecation is shown" +msgid "The weighted directed graph, :math:`G_d(V,E)`:" msgstr "" -msgid "Deprecated functions will be removed on the next mayor version 4.0.0" +msgid "Graph data is obtained with a query" msgstr "" -msgid "Use :doc:`pgr_dijkstra` instead." +msgid "``SELECT id, source, target, cost FROM edges``" msgstr "" -msgid "The types casting has been removed." +msgid "" +":math:`E = \\{(source_{id}, target_{id}, cost_{id}) \\text{ when } cost_{id} " +"\\ge 0 \\}`" msgstr "" -msgid ":doc:`pgr_dijkstra`:" +msgid "Edges where ``cost`` is non negative are part of the graph." msgstr "" -msgid "Autodetects if ``reverse_cost`` column is in the edges SQL." +msgid ":math:`V = \\{source_{id} \\cup target_{id}\\}`" msgstr "" -msgid "Accepts ``ANY-INTEGER`` on integral types" +msgid "All vertices in ``source`` and ``target`` are part of the graph." msgstr "" -msgid "Accepts ``ANY-NUMERICAL`` on floating point types" +msgid "" +"In a directed graph the edge :math:`(source_{id}, target_{id}, cost_{id})` " +"has directionality: :math:`source_{id} \\rightarrow target_{id}`" msgstr "" -msgid "``directed`` flag has a default value of ``true``." +msgid "For the following data:" msgstr "" -msgid "Use the same value that on the original query." +msgid "Edge :math:`2` (:math:`1 \\rightarrow 3`) is not part of the graph." msgstr "" -msgid "In this example it is ``true`` which is the default value." +msgid "The data is representing the following graph:" msgstr "" -msgid "The flag has been omitted and the default is been used." +msgid "" +"In an undirected graph the edge :math:`(source_{id}, target_{id}, " +"cost_{id})` does not have directionality: :math:`source_{id} \\frac{\\;\\;\\;" +"\\;\\;}{} target_{id}`" msgstr "" msgid "" -"When the need of using strictly the same (meaningless) names and types of " -"the function been migrated then:" +"In terms of a directed graph is like having two edges: :math:`source_{id} " +"\\leftrightarrow target_{id}`" msgstr "" -msgid "``id1`` is the node" +msgid "" +"Edge :math:`2` (:math:`1 \\frac{\\;\\;\\;\\;\\;}{} 3`) is not part of the " +"graph." msgstr "" -msgid "``id2`` is the edge" +msgid "Graph with ``cost`` and ``reverse_cost``" msgstr "" -msgid "Migrating ``pgr_trsp`` (Vertices) using ``pgr_trsp``" +msgid "``SELECT id, source, target, cost, reverse_cost FROM edges``" msgstr "" -#, fuzzy -msgid "The following query has restrictions." -msgstr "次のクエリを実行します。" +msgid "The set of edges :math:`E`:" +msgstr "" + +msgid "" +":math:`E = \\begin{split} \\begin{align} & {\\{(source_{id}, target_{id}, " +"cost_{id}) \\text{ when } cost_{id} >=0 \\}} \\\\ & \\cup \\\\ & " +"{\\{(target_{id}, source_{id}, reverse\\_cost_{id}) \\text{ when } " +"reverse\\_cost_{id} >=0 \\}} \\end{align} \\end{split}`" +msgstr "" + +msgid "" +"Edges :math:`(source \\rightarrow target)` where ``cost`` is non negative " +"are part of the graph." +msgstr "" + +msgid "" +"Edges :math:`(target \\rightarrow source)` where ``reverse_cost`` is non " +"negative are part of the graph." +msgstr "" + +msgid "The set of vertices :math:`V`:" +msgstr "ノードのセット :math:`V`:" + +msgid "In a directed graph both edges have directionality" +msgstr "" + +msgid "" +"edge :math:`(source_{id}, target_{id}, cost_{id})` has directionality: :math:" +"`source_{id} \\rightarrow target_{id}`" +msgstr "" + +msgid "" +"edge :math:`(target_{id}, source_{id}, reverse\\_cost_{id})` has " +"directionality: :math:`target_{id} \\rightarrow source_{id}`" +msgstr "" + +msgid "Edges not part of the graph:" +msgstr "" + +msgid ":math:`2` (:math:`1 \\rightarrow 3`)" +msgstr "" + +msgid ":math:`3` (:math:`3 \\rightarrow 2`)" +msgstr "" + +msgid "In a directed graph both edges do not have directionality" +msgstr "" + +msgid "" +"Edge :math:`(source_{id}, target_{id}, cost_{id})` is :math:`source_{id} " +"\\frac{\\;\\;\\;\\;\\;}{} target_{id}`" +msgstr "" + +msgid "" +"Edge :math:`(target_{id}, source_{id}, reverse\\_cost_{id})` is :math:" +"`target_{id} \\frac{\\;\\;\\;\\;\\;}{} source_{id}`" +msgstr "" + +msgid "In terms of a directed graph is like having four edges:" +msgstr "" -msgid "The restrictions are the last parameter of the function" +msgid ":math:`source_i \\leftrightarrow target_i`" +msgstr "" + +msgid ":math:`target_i \\leftrightarrow source_i`" msgstr "" -msgid "Using the old structure of restrictions" +msgid ":math:`2` (:math:`1 \\frac{\\;\\;\\;\\;\\;}{} 3`)" msgstr "" -msgid "Use :doc:`pgr_trsp` (One to One) instead." +msgid ":math:`3` (:math:`3 \\frac{\\;\\;\\;\\;\\;}{} 2`)" msgstr "" -msgid "The new structure of restrictions is been used." +msgid "Graphs without geometries" msgstr "" -msgid "It is the second parameter." +msgid "" +"Personal relationships, genealogy, file dependency problems can be solved " +"using pgRouting. Those problems, normally, do not come with geometries " +"associated with the graph." msgstr "" -msgid ":doc:`pgr_trsp`:" +msgid "Wiki example" msgstr "" -msgid "Migration of ``pgr_trsp`` (Edges)" +msgid "" +"Solve the example problem taken from `wikipedia `__):" msgstr "" -msgid "The integral types of the ``sql`` can only be ``INTEGER``." +msgid "Problem is to find the shortest path from :math:`1` to :math:`5`." msgstr "" -msgid "The floating point type of the ``sql`` can only be ``FLOAT``." +msgid "Is an undirected graph." msgstr "" -msgid "For these migration guide the following points will be used:" +msgid "" +"Although visually looks like to have geometries, the drawing is not to scale." msgstr "" -msgid ":doc:`pgr_withPoints` when there are no restrictions," +msgid "No geometries associated to the vertices or edges" msgstr "" -msgid ":doc:`pgr_trsp_withPoints` (One to One) when there are restrictions." +msgid "Has 6 vertices :math:`\\{1,2,3,4,5,6\\}`" msgstr "" -msgid "Migrating ``pgr_trsp`` (Edges) using ``pgr_withPoints``" +msgid "Has 9 edges:" msgstr "" -msgid "Use :doc:`pgr_withPoints` instead." +msgid "" +":math:`\\begin{split} \\begin{align} E = & \\{(1,2,7), (1,3,9), (1,6,14), \\" +"\\ & (2,3,10), (2,4,13), \\\\ & (3,4,11), (3,6,2), \\\\ & (4,5,6), \\\\ & " +"(5,6,9) \\} \\end{align} \\end{split}`" msgstr "" -msgid "Do not show details, as the deprecated function does not show details." +msgid "The graph can be represented in many ways for example:" msgstr "" -msgid ":doc:`pgr_withPoints`:" +msgid "Prepare the database" +msgstr "データベースの準備" + +msgid "" +"Create a database for the example, access the database and install " +"pgRouting: ::" msgstr "" -msgid "On the points query do not include the ``side`` column." +msgid "Create a table" msgstr "" msgid "" -"When the need of using strictly the same (meaningless) names and types, and " -"node values of the function been migrated then:" +"The basic elements needed to perform basic routing on an undirected graph " +"are:" msgstr "" -msgid "Migrating ``pgr_trsp`` (Edges) using ``pgr_trsp_withPoints``" +msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT" msgstr "" -msgid "Use :doc:`pgr_trsp_withPoints` instead." +msgid "Using this table design for this example:" msgstr "" -msgid ":doc:`pgr_trsp_withPoints`:" +msgid "Insert the data" msgstr "" -msgid "Migration of ``pgr_trspViaVertices``" +msgid "Find the shortest path" msgstr "" -msgid "The integral types of the ``Edges SQL`` can only be ``INTEGER``." +msgid "To solve this example :doc:`pgr_dijkstra` is used:" msgstr "" -msgid ":doc:`pgr_dijkstraVia` when there are no restrictions," +msgid "" +"To go from :math:`1` to :math:`5` the path goes thru the following " +"vertices: :math:`1 \\rightarrow 3 \\rightarrow 6 \\rightarrow 5`" msgstr "" -msgid ":doc:`pgr_trspVia` when there are restrictions." +msgid "Vertex information" msgstr "" -msgid "Migrating ``pgr_trspViaVertices`` using ``pgr_dijkstraVia``" +msgid "To obtain the vertices information, use :doc:`pgr_extractVertices`" msgstr "" -msgid "Use :doc:`pgr_dijkstraVia` instead." +msgid "Graphs with geometries" msgstr "" -msgid ":doc:`pgr_dijkstraVia`:" +msgid "Create a routing Database" msgstr "" -msgid "``id1`` is the path identifier" +msgid "" +"The first step is to create a database and load pgRouting in the database." msgstr "" -msgid "``id2`` is the node" +msgid "Typically create a database for each project." msgstr "" -msgid "``id3`` is the edge" +msgid "" +"Once having the database to work in, load your data and build the routing " +"application in that database." msgstr "" -msgid "Migrating ``pgr_trspViaVertices`` using ``pgr_trspVia``" +msgid "Load Data" msgstr "" -msgid "Use :doc:`pgr_trspVia` instead." +msgid "There are several ways to load your data into pgRouting." msgstr "" -msgid ":doc:`pgr_trspVia`:" +msgid "Manually creating a database." msgstr "" -msgid "Migration of ``pgr_trspViaEdges``" +msgid "`Graphs without geometries`_" msgstr "" -msgid "" -"And will travel thru the following Via points :math:" -"`4\\rightarrow3\\rightarrow6`" +msgid ":doc:`sampledata`: a small graph used in the documentation examples" msgstr "" -msgid ":doc:`pgr_withPointsVia` when there are no restrictions," +msgid "" +"Using `osm2pgrouting `__" msgstr "" -msgid ":doc:`pgr_trspVia_withPoints` when there are restrictions." +msgid "There are various open source tools that can help, like:" msgstr "" -msgid "Migrating ``pgr_trspViaEdges`` using ``pgr_withPointsVia``" +msgid "shp2pgsql" msgstr "" -msgid "Use :doc:`pgr_withPointsVia` instead." +msgid "postgresql shapefile loader" msgstr "" -msgid ":doc:`pgr_withPointsVia`:" +msgid "ogr2ogr" msgstr "" -msgid "Migrating ``pgr_trspViaEdges`` using ``pgr_trspVia_withPoints``" +msgid "vector data conversion utility" msgstr "" -msgid "Use :doc:`pgr_trspVia_withPoints` instead." +msgid "osm2pgsql" msgstr "" -msgid ":doc:`pgr_trspVia_withPoints`:" +msgid "load OSM data into postgresql" msgstr "" -msgid ":doc:`withPoints-category`" +msgid "" +"Please note that these tools will **not** import the data in a structure " +"compatible with pgRouting and when this happens the topology needs to be " +"adjusted." msgstr "" -#, fuzzy -msgid "Ordering - Family of functions" -msgstr "ダイクストラ関連機能" - -msgid "pgRouting Concepts" +msgid "Breakup a segments on each segment-segment intersection" msgstr "" msgid "" -"This is a simple guide that go through some of the steps for getting started " -"with pgRouting. This guide covers:" +"When missing, add columns and assign values to ``source``, ``target``, " +"``cost``, ``reverse_cost``." msgstr "" -msgid "Graphs" +msgid "Connect a disconnected graph." msgstr "" -msgid "A graph is an ordered pair :math:`G = (V ,E)` where:" +msgid "Create the complete graph topology" msgstr "" -msgid ":math:`V` is a set of vertices, also called nodes." +msgid "Create one or more graphs based on the application to be developed." msgstr "" -msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V \\}`" +msgid "Create a contracted graph for the high speed roads" msgstr "" -msgid "There are different kinds of graphs:" +msgid "Create graphs per state/country" msgstr "" -msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V\\}`" +msgid "In few words:" msgstr "" -msgid "Undirected simple graph" +msgid "Prepare the graph" msgstr "" -msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V, u \\neq v\\}`" +msgid "" +"What and how to prepare the graph, will depend on the application and/or on " +"the quality of the data and/or on how close the information is to have a " +"topology usable by pgRouting and/or some other factors not mentioned." msgstr "" -msgid ":math:`E \\subseteq \\{( u, v ) \\mid (u , v) \\in (V X V) \\}`" +msgid "" +"The steps to prepare the graph involve geometry operations using `PostGIS " +"`__ and some others involve graph operations like :doc:" +"`pgr_contraction` to contract a graph." msgstr "" -msgid "Directed simple graph" +msgid "" +"The `workshop `__ has a step by step " +"on how to prepare a graph using Open Street Map data, for a small " +"application." msgstr "" -msgid "" -":math:`E \\subseteq \\{( u, v ) \\mid (u , v) \\in (V X V), u \\neq v\\}`" +msgid "The use of indexes on the database design in general:" msgstr "" -msgid "Graphs:" +msgid "Have the geometries indexed." msgstr "" -msgid "Do not have geometries." +msgid "Have the identifiers columns indexed." msgstr "" msgid "" -"Some graph theory problems require graphs to have weights, called **cost** " -"in pgRouting." +"Please consult the `PostgreSQL `__ " +"documentation and the `PostGIS `__ documentation." +msgstr "" + +msgid "Build a routing topology" msgstr "" msgid "" -"In pgRouting there are several ways to represent a graph on the database:" +"The basic information to use the majority of the pgRouting functions ``id, " +"source, target, cost, [reverse_cost]`` is what in pgRouting is called the " +"routing topology." msgstr "" -msgid "With ``cost``" +msgid "" +"``reverse_cost`` is optional but strongly recommended to have in order to " +"reduce the size of the database due to the size of the geometry columns. " +"Having said that, in this documentation ``reverse_cost`` is used in this " +"documentation." msgstr "" -msgid "(``id``, ``source``, ``target``, ``cost``)" +msgid "" +"When the data comes with geometries and there is no routing topology, then " +"this step is needed." msgstr "" -msgid "With ``cost`` and ``reverse_cost``" +msgid "" +"All the start and end vertices of the geometries need an identifier that is " +"to be stored in a ``source`` and ``target`` columns of the table of the " +"data. Likewise, ``cost`` and ``reverse_cost`` need to have the value of " +"traversing the edge in both directions." msgstr "" -msgid "(``id``, ``source``, ``target``, ``cost``, ``reverse_cost``)" +msgid "" +"If the columns do not exist they need to be added to the table in question. " +"(see `ALTER TABLE `__)" msgstr "" msgid "" -"Identifier of the edge. Requirement to use the database in a consistent. " -"manner." +"The function :doc:`pgr_extractVertices` is used to create a vertices table " +"based on the edge identifier and the geometry of the edge of the graph." msgstr "" -msgid "Identifier of a vertex." +msgid "" +"Finally using the data stored on the vertices tables the ``source`` and " +"``target`` are filled up." msgstr "" -msgid "Weight of the edge (``source``, ``target``):" +msgid "See :doc:`sampledata` for an example for building a topology." msgstr "" msgid "" -"When negative the edge (``source``, ``target``) do not exist on the graph." +"Data coming from OSM and using `osm2pgrouting `__ as an import tool, comes with the routing topology. See an " +"example of using ``osm2pgrouting`` on the `workshop `__." msgstr "" -msgid "``cost`` must exist in the query." +msgid "Adjust costs" msgstr "" msgid "" -"When negative the edge (``target``, ``source``) do not exist on the graph." +"For this example the ``cost`` and ``reverse_cost`` values are going to be " +"the double of the length of the geometry." +msgstr "" + +msgid "Update costs to length of geometry" msgstr "" msgid "" -"The decision of the graph to be **directed** or **undirected** is done when " -"executing a pgRouting algorithm." +"Suppose that ``cost`` and ``reverse_cost`` columns in the sample data " +"represent:" msgstr "" -msgid "Graph with ``cost``" +msgid ":math:`1` when the edge exists in the graph" msgstr "" -msgid "The weighted directed graph, :math:`G_d(V,E)`:" +msgid ":math:`-1` when the edge does not exist in the graph" msgstr "" -msgid "Graph data is obtained with a query" +msgid "Using that information updating to the length of the geometries:" msgstr "" -msgid "``SELECT id, source, target, cost FROM edges``" +msgid "Which gives the following results:" msgstr "" msgid "" -":math:`E = \\{(source_{id}, target_{id}, cost_{id}) \\text{ when } cost_{id} " -"\\ge 0 \\}`" +"Note that to be able to follow the documentation examples, everything is " +"based on the original graph." msgstr "" -msgid "Edges where ``cost`` is non negative are part of the graph." +msgid "Returning to the original data:" msgstr "" -msgid ":math:`V = \\{source_{id} \\cup target_{id}\\}`" +msgid "Update costs based on codes" msgstr "" -msgid "All vertices in ``source`` and ``target`` are part of the graph." +msgid "Other datasets, can have a column with values like" msgstr "" -msgid "" -"In a directed graph the edge :math:`(source_{id}, target_{id}, cost_{id})` " -"has directionality: :math:`source_{id} \\rightarrow target_{id}`" +msgid "``FT`` vehicle flow on the direction of the geometry" msgstr "" -msgid "For the following data:" +msgid "``TF`` vehicle flow opposite of the direction of the geometry" msgstr "" -msgid "Edge :math:`2` (:math:`1 \\rightarrow 3`) is not part of the graph." +msgid "``B`` vehicle flow on both directions" msgstr "" -msgid "The data is representing the following graph:" +msgid "Preparing a code column for the example:" msgstr "" -msgid "" -"In an undirected graph the edge :math:`(source_{id}, target_{id}, " -"cost_{id})` does not have directionality: :math:`source_{id} \\frac{\\;\\;\\;" -"\\;\\;}{} target_{id}`" +msgid "Adjusting the costs based on the codes:" msgstr "" -msgid "" -"In terms of a directed graph is like having two edges: :math:`source_{id} " -"\\leftrightarrow target_{id}`" +msgid "Check the Routing Topology" msgstr "" -msgid "" -"Edge :math:`2` (:math:`1 \\frac{\\;\\;\\;\\;\\;}{} 3`) is not part of the " -"graph." +msgid "There are lots of possible problems in a graph." msgstr "" -msgid "Graph with ``cost`` and ``reverse_cost``" +msgid "The data used may not have been designed with routing in mind." msgstr "" -msgid "The weighted directed graph, :math:`G_d(V,E)`, is defined by:" +msgid "A graph has some very specific requirements." msgstr "" -msgid "``SELECT id, source, target, cost, reverse_cost FROM edges``" +msgid "The graph is disconnected." msgstr "" -msgid "The set of edges :math:`E`:" +msgid "There are unwanted intersections." msgstr "" -msgid "" -":math:`E = \\begin{split} \\begin{align} & {\\{(source_{id}, target_{id}, " -"cost_{id}) \\text{ when } cost_{id} >=0 \\}} \\\\ & \\cup \\\\ & " -"{\\{(target_{id}, source_{id}, reverse\\_cost_{id}) \\text{ when } " -"reverse\\_cost_{id} >=0 \\}} \\end{align} \\end{split}`" +msgid "The graph is too large and needs to be contracted." msgstr "" -msgid "" -"Edges :math:`(source \\rightarrow target)` where ``cost`` is non negative " -"are part of the graph." +msgid "A sub graph is needed for the application." msgstr "" msgid "" -"Edges :math:`(target \\rightarrow source)` where ``reverse_cost`` is non " -"negative are part of the graph." +"and many other problems that the pgRouting user, that is the application " +"developer might encounter." msgstr "" -msgid "The set of vertices :math:`V`:" -msgstr "ノードのセット :math:`V`:" +msgid "Crossing edges" +msgstr "" -msgid "In a directed graph both edges have directionality" +msgid "To get the crossing edges:" msgstr "" msgid "" -"edge :math:`(source_{id}, target_{id}, cost_{id})` has directionality: :math:" -"`source_{id} \\rightarrow target_{id}`" +"That information is correct, for example, when in terms of vehicles, is it a " +"tunnel or bridge crossing over another road." msgstr "" -msgid "" -"edge :math:`(target_{id}, source_{id}, reverse\\_cost_{id})` has " -"directionality: :math:`target_{id} \\rightarrow source_{id}`" +msgid "It might be incorrect, for example:" msgstr "" -msgid "Edges not part of the graph:" +msgid "" +"When it is actually an intersection of roads, where vehicles can make turns." msgstr "" -msgid ":math:`2` (:math:`1 \\rightarrow 3`)" +msgid "" +"When in terms of electrical lines, the electrical line is able to switch " +"roads even on a tunnel or bridge." msgstr "" -msgid ":math:`3` (:math:`3 \\rightarrow 2`)" +msgid "When it is incorrect, it needs fixing:" msgstr "" -msgid "In a directed graph both edges do not have directionality" +msgid "For vehicles and pedestrians" msgstr "" msgid "" -"Edge :math:`(source_{id}, target_{id}, cost_{id})` is :math:`source_{id} " -"\\frac{\\;\\;\\;\\;\\;}{} target_{id}`" +"If the data comes from OSM and was imported to the database using " +"``osm2pgrouting``, the fix needs to be done in the `OSM portal `__ and the data imported again." msgstr "" msgid "" -"Edge :math:`(target_{id}, source_{id}, reverse\\_cost_{id})` is :math:" -"`target_{id} \\frac{\\;\\;\\;\\;\\;}{} source_{id}`" +"In general when the data comes from a supplier that has the data prepared " +"for routing vehicles, and there is a problem, the data is to be fixed from " +"the supplier" msgstr "" -msgid "In terms of a directed graph is like having four edges:" +msgid "For very specific applications" msgstr "" -msgid ":math:`source_i \\leftrightarrow target_i`" +msgid "" +"The data is correct when from the point of view of routing vehicles or " +"pedestrians." msgstr "" -msgid ":math:`target_i \\leftrightarrow source_i`" +msgid "The data needs a local fix for the specific application." msgstr "" -msgid ":math:`2` (:math:`1 \\frac{\\;\\;\\;\\;\\;}{} 3`)" +msgid "" +"Once analyzed one by one the crossings, for the ones that need a local fix, " +"the edges need to be `split `__." msgstr "" -msgid ":math:`3` (:math:`3 \\frac{\\;\\;\\;\\;\\;}{} 2`)" +msgid "" +"The new edges need to be added to the edges table, the rest of the " +"attributes need to be updated in the new edges, the old edges need to be " +"removed and the routing topology needs to be updated." msgstr "" -msgid "Graphs without geometries" +msgid "Adding split edges" msgstr "" msgid "" -"Personal relationships, genealogy, file dependency problems can be solved " -"using pgRouting. Those problems, normally, do not come with geometries " -"associated with the graph." +"For each pair of crossing edges a process similar to this one must be " +"performed." msgstr "" -msgid "Wiki example" +msgid "" +"The columns inserted and the way are calculated are based on the " +"application. For example, if the edges have a trait **name**, then that " +"column is to be copied." +msgstr "" + +msgid "For pgRouting calculations" msgstr "" msgid "" -"Solve the example problem taken from `wikipedia `__):" +"**factor** based on the position of the intersection of the edges can be " +"used to adjust the ``cost`` and ``reverse_cost`` columns." msgstr "" -msgid "Problem is to find the shortest path from :math:`1` to :math:`5`." +msgid "" +"Capacity information, used in the :doc:`flow-family` functions does not need " +"to change when splitting edges." msgstr "" -msgid "Is an undirected graph." +msgid "Adding new vertices" msgstr "" msgid "" -"Although visually looks like to have geometries, the drawing is not to scale." +"After adding all the split edges required by the application, the newly " +"created vertices need to be added to the vertices table." msgstr "" -msgid "No geometries associated to the vertices or edges" +msgid "Updating edges topology" msgstr "" -msgid "Has 6 vertices :math:`\\{1,2,3,4,5,6\\}`" +msgid "Removing the surplus edges" msgstr "" -msgid "Has 9 edges:" +msgid "" +"Once all significant information needed by the application has been " +"transported to the new edges, then the crossing edges can be deleted." msgstr "" msgid "" -":math:`\\begin{split} \\begin{align} E = & \\{(1,2,7), (1,3,9), (1,6,14), \\" -"\\ & (2,3,10), (2,4,13), \\\\ & (3,4,11), (3,6,2), \\\\ & (4,5,6), \\\\ & " -"(5,6,9) \\} \\end{align} \\end{split}`" +"There are other options to do this task, like creating a view, or a " +"materialized view." msgstr "" -msgid "The graph can be represented in many ways for example:" +msgid "Updating vertices topology" msgstr "" -msgid "Prepare the database" -msgstr "データベースの準備" - -msgid "" -"Create a database for the example, access the database and install " -"pgRouting: ::" +msgid "To keep the graph consistent, the vertices topology needs to be updated" msgstr "" -msgid "Create a table" +msgid "Checking for crossing edges" msgstr "" -msgid "" -"The basic elements needed to perform basic routing on an undirected graph " -"are:" +msgid "There are no crossing edges on the graph." msgstr "" -msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT" +msgid "Disconnected graphs" msgstr "" -msgid "Using this table design for this example:" +msgid "To get the graph connectivity:" msgstr "" -msgid "Insert the data" +msgid "" +"In this example, the component :math:`2` consists of vertices :math:`\\{2, " +"4\\}` and both vertices are also part of the dead end result set." msgstr "" -msgid "Find the shortest path" +msgid "This graph needs to be connected." msgstr "" -msgid "To solve this example :doc:`pgr_dijkstra` is used:" +msgid "" +"With the original graph of this documentation, there would be 3 components " +"as the crossing edge in this graph is a different component." msgstr "" -msgid "" -"To go from :math:`1` to :math:`5` the path goes thru the following " -"vertices: :math:`1 \\rightarrow 3 \\rightarrow 6 \\rightarrow 5`" +msgid "Prepare storage for connection information" msgstr "" -msgid "Vertex information" +msgid "Save the vertices connection information" msgstr "" -msgid "To obtain the vertices information, use :doc:`pgr_extractVertices`" +msgid "Save the edges connection information" msgstr "" -msgid "Graphs with geometries" +msgid "Get the closest vertex" msgstr "" -msgid "Create a routing Database" +msgid "" +"Using :doc:`pgr_findCloseEdges` the closest vertex to component :math:`1` is " +"vertex :math:`4`. And the closest edge to vertex :math:`4` is edge :math:" +"`14`." msgstr "" msgid "" -"The first step is to create a database and load pgRouting in the database." +"The ``edge`` can be used to connect the components, using the ``fraction`` " +"information about the edge :math:`14` to split the connecting edge." msgstr "" -msgid "Typically create a database for each project." +msgid "Connecting components" msgstr "" -msgid "" -"Once having the database to work in, load your data and build the routing " -"application in that database." +msgid "There are three basic ways to connect the components" msgstr "" -msgid "Load Data" +msgid "From the vertex to the starting point of the edge" msgstr "" -msgid "There are several ways to load your data into pgRouting." +msgid "From the vertex to the ending point of the edge" msgstr "" -msgid "Manually creating a database." +msgid "From the vertex to the closest vertex on the edge" msgstr "" -msgid "`Graphs without geometries`_" +msgid "This solution requires the edge to be split." msgstr "" -msgid ":doc:`sampledata`: a small graph used in the documentation examples" +msgid "The following query shows the three ways to connect the components:" msgstr "" -msgid "" -"Using `osm2pgrouting `__" +msgid "Checking components" msgstr "" -msgid "There are various open source tools that can help, like:" +msgid "" +"Ignoring the edge that requires further work. The graph is now fully " +"connected as there is only one component." msgstr "" -msgid "shp2pgsql" +msgid "Contraction of a graph" msgstr "" -msgid "postgresql shapefile loader" +msgid "The graph can be reduced in size using :doc:`contraction-family`" msgstr "" -msgid "ogr2ogr" +msgid "" +"When to contract will depend on the size of the graph, processing times, " +"correctness of the data, on the final application, or any other factor not " +"mentioned." msgstr "" -msgid "vector data conversion utility" +msgid "" +"A fairly good method of finding out if contraction can be useful is because " +"of the number of dead ends and/or the number of linear edges." msgstr "" -msgid "osm2pgsql" +msgid "" +"A complete method on how to contract and how to use the contracted graph is " +"described on :doc:`contraction-family`" msgstr "" -msgid "load OSM data into postgresql" +msgid "Dead ends" msgstr "" -msgid "" -"Please note that these tools will **not** import the data in a structure " -"compatible with pgRouting and when this happens the topology needs to be " -"adjusted." +msgid "To get the dead ends:" msgstr "" -msgid "Breakup a segments on each segment-segment intersection" +msgid "A dead end happens when" msgstr "" msgid "" -"When missing, add columns and assign values to ``source``, ``target``, " -"``cost``, ``reverse_cost``." +"The vertex is the limit of a cul-de-sac, a no-through road or a no-exit road." msgstr "" -msgid "Connect a disconnected graph." +#, fuzzy +msgid "The vertex is on the limit of the imported graph." +msgstr "導かれないグラフ。" + +msgid "If a larger graph is imported then the vertex might not be a dead end" msgstr "" -msgid "Create the complete graph topology" +msgid "" +"Node :math:`4`, is a dead end on the query, even that it visually looks like " +"an end point of 3 edges." msgstr "" -msgid "Create one or more graphs based on the application to be developed." +msgid "Is node :math:`4` a dead end or not?" msgstr "" -msgid "Create a contracted graph for the high speed roads" +msgid "The answer to that question will depend on the application." msgstr "" -msgid "Create graphs per state/country" +msgid "Is there such a small curb:" msgstr "" -msgid "In few words:" +msgid "That does not allow a vehicle to use that visual intersection?" msgstr "" -msgid "Prepare the graph" +msgid "" +"Is the application for pedestrians and therefore the pedestrian can easily " +"walk on the small curb?" msgstr "" msgid "" -"What and how to prepare the graph, will depend on the application and/or on " -"the quality of the data and/or on how close the information is to have a " -"topology usable by pgRouting and/or some other factors not mentioned." +"Is the application for the electricity and the electrical lines than can " +"easily be extended on top of the small curb?" msgstr "" msgid "" -"The steps to prepare the graph involve geometry operations using `PostGIS " -"`__ and some others involve graph operations like :doc:" -"`pgr_contraction` to contract a graph." +"Is there a big cliff and from eagles view look like the dead end is close to " +"the segment?" +msgstr "" + +msgid "Depending on the answer, modification of the data might be needed." msgstr "" msgid "" -"The `workshop `__ has a step by step " -"on how to prepare a graph using Open Street Map data, for a small " -"application." +"When there are many dead ends, to speed up processing, the :doc:`contraction-" +"family` functions can be used to contract the graph." msgstr "" -msgid "The use of indexes on the database design in general:" +msgid "Linear edges" msgstr "" -msgid "Have the geometries indexed." +msgid "To get the linear edges:" msgstr "" -msgid "Have the identifiers columns indexed." +msgid "" +"These linear vertices are correct, for example, when those the vertices are " +"speed bumps, stop signals and the application is taking them into account." msgstr "" msgid "" -"Please consult the `PostgreSQL `__ " -"documentation and the `PostGIS `__ documentation." +"When there are many linear vertices, that need not to be taken into account, " +"to speed up the processing, the :doc:`contraction-family` functions can be " +"used to contract the problem." msgstr "" -msgid "Build a routing topology" +msgid "Function's structure" msgstr "" msgid "" -"The basic information to use the majority of the pgRouting functions ``id, " -"source, target, cost, [reverse_cost]`` is what in pgRouting is called the " -"routing topology." +"Once the graph preparation work has been done above, it is time to use a" msgstr "" -msgid "" -"``reverse_cost`` is optional but strongly recommended to have in order to " -"reduce the size of the database due to the size of the geometry columns. " -"Having said that, in this documentation ``reverse_cost`` is used in this " -"documentation." +msgid "The general form of a pgRouting function call is:" msgstr "" -msgid "" -"When the data comes with geometries and there is no routing topology, then " -"this step is needed." +msgid "\\ \\" +msgstr "" + +msgid "pgr_(`Inner queries`_, **parameters**, [ ``Optional parameters``)" msgstr "" msgid "" -"All the start and end vertices of the geometries need an identifier that is " -"to be stored in a ``source`` and ``target`` columns of the table of the " -"data. Likewise, ``cost`` and ``reverse_cost`` need to have the value of " -"traversing the edge in both directions." +"`Inner queries`_: Are compulsory parameters that are ``TEXT`` strings " +"containing SQL queries." msgstr "" msgid "" -"If the columns do not exist they need to be added to the table in question. " -"(see `ALTER TABLE `__)" +"**parameters**: Additional compulsory parameters needed by the function." msgstr "" msgid "" -"The function :doc:`pgr_extractVertices` is used to create a vertices table " -"based on the edge identifier and the geometry of the edge of the graph." +"``Optional parameters``: Are non compulsory **named** parameters that have a " +"default value when omitted." msgstr "" msgid "" -"Finally using the data stored on the vertices tables the ``source`` and " -"``target`` are filled up." +"The compulsory parameters are positional parameters, the optional parameters " +"are named parameters." msgstr "" -msgid "See :doc:`sampledata` for an example for building a topology." +msgid "For example, for this :doc:`pgr_dijkstra` signature:" msgstr "" +#, fuzzy msgid "" -"Data coming from OSM and using `osm2pgrouting `__ as an import tool, comes with the routing topology. See an " -"example of using ``osm2pgrouting`` on the `workshop `__." +"pgr_dijkstra(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" +msgstr "p" + +msgid "`Edges SQL`_:" msgstr "" -msgid "Adjust costs" +msgid "Is the first parameter." msgstr "" -msgid "" -"For this example the ``cost`` and ``reverse_cost`` values are going to be " -"the double of the length of the geometry." +msgid "It is compulsory." msgstr "" -msgid "Update costs to length of geometry" +msgid "It is an inner query." msgstr "" msgid "" -"Suppose that ``cost`` and ``reverse_cost`` columns in the sample data " -"represent:" +"It has no name, so **Edges SQL** gives an idea of what kind of inner query " +"needs to be used" msgstr "" -msgid ":math:`1` when the edge exists in the graph" +msgid "**start vid**:" msgstr "" -msgid ":math:`-1` when the edge does not exist in the graph" +msgid "Is the second parameter." msgstr "" -msgid "Using that information updating to the length of the geometries:" +msgid "" +"It has no name, so **start vid** gives an idea of what the second " +"parameter's value should contain." msgstr "" -msgid "Which gives the following results:" +msgid "Is the third parameter." msgstr "" msgid "" -"Note that to be able to follow the documentation examples, everything is " -"based on the original graph." +"It has no name, so **end vid** gives an idea of what the third parameter's " +"value should contain" msgstr "" -msgid "Returning to the original data:" +msgid "Is the fourth parameter." msgstr "" -msgid "Update costs based on codes" +msgid "It is optional." msgstr "" -msgid "Other datasets, can have a column with values like" +msgid "It has a name." msgstr "" -msgid "``FT`` vehicle flow on the direction of the geometry" +msgid "" +"The full description of the parameters are found on the `Parameters`_ " +"section of each function." msgstr "" -msgid "``TF`` vehicle flow opposite of the direction of the geometry" +msgid "Function's overloads" msgstr "" -msgid "``B`` vehicle flow on both directions" +msgid "A function might have different overloads. The most common are called:" msgstr "" -msgid "Preparing a code column for the example:" +msgid "`One to One`_" msgstr "" -msgid "Adjusting the costs based on the codes:" +msgid "`One to Many`_" msgstr "" -msgid "Check the Routing Topology" +msgid "`Many to One`_" msgstr "" -msgid "There are lots of possible problems in a graph." +msgid "`Many to Many`_" msgstr "" -msgid "The data used may not have been designed with routing in mind." +msgid "`Combinations`_" msgstr "" -msgid "A graph has some very specific requirements." +msgid "Depending on the overload the parameters types change." msgstr "" -msgid "The graph is disconnected." +msgid "**One**: **ANY-INTEGER**" msgstr "" -msgid "There are unwanted intersections." +msgid "**Many**: ``ARRAY`` [**ANY-INTEGER**]" msgstr "" -msgid "The graph is too large and needs to be contracted." +msgid "" +"Depending of the function the overloads may vary. But the concept of " +"parameter type change remains the same." msgstr "" -msgid "A sub graph is needed for the application." +msgid "One to One" msgstr "" -msgid "" -"and many other problems that the pgRouting user, that is the application " -"developer might encounter." +msgid "When routing from:" msgstr "" -msgid "Crossing edges" +msgid "From **one** starting vertex" msgstr "" -msgid "To get the crossing edges:" +msgid "to **one** ending vertex" msgstr "" -msgid "" -"That information is correct, for example, when in terms of vehicles, is it a " -"tunnel or bridge crossing over another road." +msgid "One to Many" msgstr "" -msgid "It might be incorrect, for example:" +msgid "to **many** ending vertices" msgstr "" -msgid "" -"When it is actually an intersection of roads, where vehicles can make turns." +msgid "Many to One" msgstr "" -msgid "" -"When in terms of electrical lines, the electrical line is able to switch " -"roads even on a tunnel or bridge." +msgid "From **many** starting vertices" msgstr "" -msgid "When it is incorrect, it needs fixing:" +msgid "Many to Many" msgstr "" -msgid "For vehicles and pedestrians" +msgid "Combinations" msgstr "" -msgid "" -"If the data comes from OSM and was imported to the database using " -"``osm2pgrouting``, the fix needs to be done in the `OSM portal `__ and the data imported again." +msgid "From **many** different starting vertices" msgstr "" -msgid "" -"In general when the data comes from a supplier that has the data prepared " -"for routing vehicles, and there is a problem, the data is to be fixed from " -"the supplier" +msgid "to **many** different ending vertices" msgstr "" -msgid "For very specific applications" +msgid "Every tuple specifies a pair of a start vertex and an end vertex" msgstr "" -msgid "" -"The data is correct when from the point of view of routing vehicles or " -"pedestrians." +msgid "Users can define the combinations as desired." msgstr "" -msgid "The data needs a local fix for the specific application." +msgid "Needs a `Combinations SQL`_" msgstr "" msgid "" -"Once analyzed one by one the crossings, for the ones that need a local fix, " -"the edges need to be `split `__." +"There are several kinds of valid inner queries and also the columns returned " +"are depending of the function. Which kind of inner query will depend on the " +"function's requirements. To simplify the variety of types, **ANY-INTEGER** " +"and **ANY-NUMERICAL** is used." msgstr "" -msgid "" -"The new edges need to be added to the edges table, the rest of the " -"attributes need to be updated in the new edges, the old edges need to be " -"removed and the routing topology needs to be updated." +msgid "Edges SQL for" msgstr "" -msgid "Adding split edges" +msgid ":doc:`withPoints-family`" msgstr "" -msgid "" -"For each pair of crossing edges a process similar to this one must be " -"performed." +msgid "Some uncategorised functions" msgstr "" -msgid "" -"The columns inserted and the way are calculated are based on the " -"application. For example, if the edges have a trait **name**, then that " -"column is to be copied." +msgid "General without ``id``" msgstr "" -msgid "For pgRouting calculations" +msgid "General with (X,Y)" msgstr "" msgid "" -"**factor** based on the position of the intersection of the edges can be " -"used to adjust the ``cost`` and ``reverse_cost`` columns." +"When negative: edge (``source``, ``target``) does not exist, therefore it's " +"not part of the graph." msgstr "" -msgid "" -"Capacity information, used in the :doc:`flow-family` functions does not need " -"to change when splitting edges." +msgid "Weight of the edge (``target``, ``source``)," msgstr "" -msgid "Adding new vertices" +msgid "``x1``" msgstr "" -msgid "" -"After adding all the split edges required by the application, the newly " -"created vertices need to be added to the vertices table." +msgid "X coordinate of ``source`` vertex." msgstr "" -msgid "Updating edges topology" +msgid "``y1``" msgstr "" -msgid "Removing the surplus edges" +msgid "Y coordinate of ``source`` vertex." msgstr "" -msgid "" -"Once all significant information needed by the application has been " -"transported to the new edges, then the crossing edges can be deleted." +msgid "``x2``" msgstr "" -msgid "" -"There are other options to do this task, like creating a view, or a " -"materialized view." +msgid "X coordinate of ``target`` vertex." msgstr "" -msgid "Updating vertices topology" +msgid "``y2``" msgstr "" -msgid "To keep the graph consistent, the vertices topology needs to be updated" +msgid "Y coordinate of ``target`` vertex." msgstr "" -msgid "Checking for crossing edges" +msgid "Flow" msgstr "" -msgid "There are no crossing edges on the graph." +msgid "Edges SQL for :doc:`flow-family`" msgstr "" -msgid "Disconnected graphs" +msgid "Edges SQL for the following functions of :doc:`flow-family`" msgstr "" -msgid "To get the graph connectivity:" +msgid "Used in combination signatures" msgstr "" -msgid "" -"In this example, the component :math:`2` consists of vertices :math:`\\{2, " -"4\\}` and both vertices are also part of the dead end result set." +msgid "Points SQL for" msgstr "" -msgid "This graph needs to be connected." +msgid "" +"The main parameter of the majority of the pgRouting functions is a query " +"that selects the edges of the graph." msgstr "" msgid "" -"With the original graph of this documentation, there would be 3 components " -"as the crossing edge in this graph is a different component." +"Depending on the family or category of a function it will have additional " +"parameters, some of them are compulsory and some are optional." msgstr "" -msgid "Prepare storage for connection information" +msgid "" +"The compulsory parameters are nameless and must be given in the required " +"order. The optional parameters are named parameters and will have a default " +"value." msgstr "" -msgid "Save the vertices connection information" +msgid "Parameters for the Via functions" msgstr "" -msgid "Save the edges connection information" +msgid "SQL query as described." msgstr "" -msgid "Get the closest vertex" +msgid "When ``true`` Graph is considered `Directed`" msgstr "" -msgid "" -"Using :doc:`pgr_findCloseEdges` the closest vertex to component :math:`1` is " -"vertex :math:`4`. And the closest edge to vertex :math:`4` is edge :math:" -"`14`." +msgid "When ``false`` the graph is considered as Undirected." msgstr "" -msgid "" -"The ``edge`` can be used to connect the components, using the ``fraction`` " -"information about the edge :math:`14` to split the connecting edge." +msgid "``strict``" msgstr "" -msgid "Connecting components" +msgid "``false``" msgstr "" -msgid "There are three basic ways to connect the components" +msgid "When ``true`` if a path is missing stops and returns **EMPTY SET**" msgstr "" -msgid "From the vertex to the starting point of the edge" +msgid "When ``false`` ignores missing paths returning all paths found" msgstr "" -msgid "From the vertex to the ending point of the edge" +msgid "``U_turn_on_edge``" msgstr "" -msgid "From the vertex to the closest vertex on the edge" +msgid "" +"When ``true`` departing from a visited vertex will not try to avoid using " +"the edge used to reach it. In other words, U turn using the edge with same " +"identifier is allowed." msgstr "" -msgid "This solution requires the edge to be split." +msgid "" +"When ``false`` when a departing from a visited vertex tries to avoid using " +"the edge used to reach it. In other words, U turn using the edge with same " +"identifier is used when no other path is found." msgstr "" -msgid "The following query shows the three ways to connect the components:" +msgid "For the TRSP functions" msgstr "" -msgid "Checking components" +msgid "Array of identifiers of destination vertices." msgstr "" msgid "" -"Ignoring the edge that requires further work. The graph is now fully " -"connected as there is only one component." +"There are several kinds of columns returned are depending of the function." msgstr "" -msgid "Contraction of a graph" -msgstr "" +#, fuzzy +msgid "Result columns for a path" +msgstr "結果として返却されるカラム" -msgid "The graph can be reduced in size using :doc:`contraction-family`" +msgid "Used in functions that return one path solution" msgstr "" msgid "" -"When to contract will depend on the size of the graph, processing times, " -"correctness of the data, on the final application, or any other factor not " -"mentioned." +"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost, " +"agg_cost)``" +msgstr "" + +msgid "``path_seq``" msgstr "" msgid "" -"A fairly good method of finding out if contraction can be useful is because " -"of the number of dead ends and/or the number of linear edges." +"Relative position in the path. Has value **1** for the beginning of a path." msgstr "" msgid "" -"A complete method on how to contract and how to use the contracted graph is " -"described on :doc:`contraction-family`" +"Identifier of the starting vertex. Returned when multiple starting vetrices " +"are in the query." msgstr "" -msgid "Dead ends" +msgid "" +"Identifier of the ending vertex. Returned when multiple ending vertices are " +"in the query." msgstr "" -msgid "To get the dead ends:" +msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``." msgstr "" msgid "" -"That information is correct, for example, when the dead end is on the limit " -"of the imported graph." +"Identifier of the edge used to go from ``node`` to the next node in the path " +"sequence. **-1** for the last node of the path." msgstr "" msgid "" -"Visually node :math:`4` looks to be as start/ending of 3 edges, but it is " -"not." +"Cost to traverse from ``node`` using ``edge`` to the next node in the path " +"sequence." msgstr "" -msgid "Is that correct?" +msgid "Used in functions the following:" msgstr "" -msgid "Is there such a small curb:" +msgid "" +"Returns set of ``(seq, path_seq [, start_pid] [, end_pid], node, edge, cost, " +"agg_cost)``" msgstr "" -msgid "That does not allow a vehicle to use that visual intersection?" +msgid "Relative position in the path." msgstr "" -msgid "" -"Is the application for pedestrians and therefore the pedestrian can easily " -"walk on the small curb?" +msgid "**1** For the first row of the path." msgstr "" -msgid "" -"Is the application for the electricity and the electrical lines than can " -"easily be extended on top of the small curb?" +msgid "``start_pid``" msgstr "" -msgid "" -"Is there a big cliff and from eagles view look like the dead end is close to " -"the segment?" +msgid "Identifier of a starting vertex/point of the path." msgstr "" -msgid "" -"When there are many dead ends, to speed up, the :doc:`contraction-family` " -"functions can be used to divide the problem." +msgid "When positive is the identifier of the starting vertex." msgstr "" -msgid "Linear edges" +msgid "When negative is the identifier of the starting point." msgstr "" -msgid "To get the linear edges:" +msgid "Returned on `Many to One`_ and `Many to Many`_" msgstr "" -msgid "" -"This information is correct, for example, when the application is taking " -"into account speed bumps, stop signals." +msgid "``end_pid``" msgstr "" -msgid "" -"When there are many linear edges, to speed up, the :doc:`contraction-family` " -"functions can be used to divide the problem." +msgid "Identifier of an ending vertex/point of the path." msgstr "" -msgid "Function's structure" +msgid "When positive is the identifier of the ending vertex." msgstr "" -msgid "" -"Once the graph preparation work has been done above, it is time to use a" +msgid "When negative is the identifier of the ending point." msgstr "" -msgid "The general form of a pgRouting function call is:" +msgid "Returned on `One to Many`_ and `Many to Many`_" msgstr "" -msgid "\\ \\" +msgid "Identifier of the node in the path from ``start_pid`` to ``end_pid``." msgstr "" -msgid "pgr_(`Inner queries`_, **parameters**, [ ``Optional parameters``)" +msgid "When positive is the identifier of the a vertex." msgstr "" -msgid "" -"`Inner queries`_: Are compulsory parameters that are ``TEXT`` strings " -"containing SQL queries." +msgid "When negative is the identifier of the a point." msgstr "" msgid "" -"**parameters**: Additional compulsory parameters needed by the function." +"Identifier of the edge used to go from ``node`` to the next node in the path " +"sequence." msgstr "" -msgid "" -"``Optional parameters``: Are non compulsory **named** parameters that have a " -"default value when omitted." +msgid "**-1** for the last row of the path." msgstr "" -msgid "" -"The compulsory parameters are positional parameters, the optional parameters " -"are named parameters." +msgid "**0** For the first row of the path." msgstr "" -msgid "For example, for this :doc:`pgr_dijkstra` signature:" +msgid ":doc:`pgr_dijkstraNear`" msgstr "" -#, fuzzy msgid "" -"pgr_dijkstra(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" -msgstr "p" +"Returns ``(seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)``" +msgstr "" -msgid "`Edges SQL`_:" +msgid "Identifier of the starting vertex of the current path." msgstr "" -msgid "Is the first parameter." +msgid "Identifier of the ending vertex of the current path." msgstr "" -msgid "It is compulsory." +msgid "Multiple paths" msgstr "" -msgid "It is an inner query." +msgid "Selective for multiple paths." +msgstr "" + +msgid "The columns depend on the function call." msgstr "" msgid "" -"It has no name, so **Edges SQL** gives an idea of what kind of inner query " -"needs to be used" +"Set of ``(seq, path_id, path_seq [, start_vid] [, end_vid], node, edge, " +"cost, agg_cost)``" msgstr "" -msgid "**start vid**:" +msgid "``path_id``" msgstr "" -msgid "Is the second parameter." +msgid "Path identifier." msgstr "" msgid "" -"It has no name, so **start vid** gives an idea of what the second " -"parameter's value should contain." +"Has value **1** for the first of a path from ``start_vid`` to ``end_vid``." msgstr "" -msgid "Is the third parameter." +msgid "Non selective for multiple paths" msgstr "" -msgid "" -"It has no name, so **end vid** gives an idea of what the third parameter's " -"value should contain" +msgid "Regardless of the call, al the columns are returned." msgstr "" -msgid "Is the fourth parameter." +msgid "" +"Returns set of ``(seq, path_id, path_seq, start_vid, end_vid, node, edge, " +"cost, agg_cost)``" msgstr "" -msgid "It is optional." +msgid "Result columns for cost functions" msgstr "" -msgid "It has a name." +msgid "Used in the following" msgstr "" msgid "" -"The full description of the parameters are found on the `Parameters`_ " -"section of each function." +"When start_vid or end_vid columns have negative values, the identifier is " +"for a Point." msgstr "" -msgid "Function's overloads" +msgid "Result columns for flow functions" msgstr "" -msgid "A function might have different overloads. The most common are called:" +msgid "Edges SQL for the following" msgstr "" -msgid "`One to One`_" +msgid "Result columns for spanning tree functions" msgstr "" -msgid "`One to Many`_" +#, fuzzy +msgid "Returns set of ``(edge, cost)``" +msgstr "``(seq, node, cost, agg_cost)`` の1セットを返却します" + +msgid "Cost to traverse the edge." msgstr "" -msgid "`Many to One`_" +msgid "Performance Tips" msgstr "" -msgid "`Many to Many`_" +msgid "For the Routing functions" msgstr "" -msgid "`Combinations`_" +msgid "" +"To get faster results bound the queries to an area of interest of routing." msgstr "" -msgid "Depending on the overload the parameters types change." +msgid "" +"In this example Use an inner query SQL that does not include some edges in " +"the routing function and is within the area of the results." msgstr "" -msgid "**One**: **ANY-INTEGER**" +msgid "Given this area:" msgstr "" -msgid "**Many**: ``ARRAY`` [**ANY-INTEGER**]" +msgid "Calculate a route:" msgstr "" -msgid "" -"Depending of the function the overloads may vary. But the concept of " -"parameter type change remains the same." +msgid "How to contribute" msgstr "" -msgid "One to One" +msgid "Wiki" msgstr "" -msgid "When routing from:" +msgid "" +"Edit an existing `pgRouting Wiki `__ page." msgstr "" -msgid "From **one** starting vertex" +msgid "Or create a new Wiki page" msgstr "" -msgid "to **one** ending vertex" +msgid "" +"Create a page on the `pgRouting Wiki `__" msgstr "" -msgid "One to Many" +msgid "Give the title an appropriate name" msgstr "" -msgid "to **many** ending vertices" +msgid "" +"`Example `__" msgstr "" -msgid "Many to One" +msgid "Adding Functionality to pgRouting" msgstr "" -msgid "From **many** starting vertices" +msgid "" +"Consult the `developer's documentation `__" msgstr "" -msgid "Many to Many" +msgid "Installation" +msgstr "インストール" + +msgid ":ref:`install-short`" msgstr "" -msgid "Combinations" +msgid ":ref:`install_get_sources`" msgstr "" -msgid "From **many** different starting vertices" +msgid ":ref:`install_enable_db`" msgstr "" -msgid "to **many** different ending vertices" +msgid ":ref:`install_dependencies`" msgstr "" -msgid "Every tuple specifies a pair of a start vertex and an end vertex" +msgid ":ref:`install_configuring`" msgstr "" -msgid "Users can define the combinations as desired." +msgid ":ref:`install_build`" msgstr "" -msgid "Needs a `Combinations SQL`_" +msgid ":ref:`install_testing`" msgstr "" msgid "" -"There are several kinds of valid inner queries and also the columns returned " -"are depending of the function. Which kind of inner query will depend on the " -"function's requirements. To simplify the variety of types, **ANY-INTEGER** " -"and **ANY-NUMERICAL** is used." +"Instructions for downloading and installing binaries for different operating " +"systems, additional notes and corrections not included in this documentation " +"can be found in `Installation wiki `__" msgstr "" -msgid "Edges SQL for" +msgid "" +"To use pgRouting PostGIS needs to be installed, please read the information " +"about installation in this `Install Guide `__" msgstr "" -msgid ":doc:`withPoints-family`" +msgid "Short Version" msgstr "" -msgid "Some uncategorised functions" +msgid "Extracting the tar ball" msgstr "" -msgid "General without ``id``" +msgid "To compile assuming you have all the dependencies in your search path:" msgstr "" -msgid "General with (X,Y)" +msgid "" +"Once pgRouting is installed, it needs to be enabled in each individual " +"database you want to use it in." +msgstr "" + +msgid "Get the sources" msgstr "" msgid "" -"When negative: edge (``source``, ``target``) does not exist, therefore it's " -"not part of the graph." +"The pgRouting latest release can be found in https://github.com/pgRouting/" +"pgrouting/releases/latest" msgstr "" -msgid "Weight of the edge (``target``, ``source``)," +msgid "To download this release:" msgstr "" -msgid "``x1``" +msgid "" +"Go to :ref:`install-short` for more instructions on extracting tar ball and " +"compiling pgRouting." msgstr "" -msgid "X coordinate of ``source`` vertex." +msgid "git" msgstr "" -msgid "``y1``" +msgid "To download the repository" msgstr "" -msgid "Y coordinate of ``source`` vertex." +msgid "" +"Go to :ref:`install-short` for more instructions on compiling pgRouting " +"(there is no tar ball involved while downloading pgRouting repository from " +"GitHub)." msgstr "" -msgid "``x2``" +msgid "Enabling and upgrading in the database" msgstr "" -msgid "X coordinate of ``target`` vertex." +msgid "Enabling the database" msgstr "" -msgid "``y2``" +msgid "" +"pgRouting is a PostgreSQL extension and depends on PostGIS to provide " +"functionalities to end user. Below given code demonstrates enabling PostGIS " +"and pgRouting in the database." msgstr "" -msgid "Y coordinate of ``target`` vertex." +msgid "" +"Checking PostGIS and pgRouting version after enabling them in the database." msgstr "" -msgid "Flow" +msgid "Upgrading the database" msgstr "" -msgid "Edges SQL for :doc:`flow-family`" +msgid "" +"To upgrade pgRouting in the database to version 4.0.0 use the following " +"command:" msgstr "" -msgid "Edges SQL for the following functions of :doc:`flow-family`" +msgid "" +"More information can be found in https://www.postgresql.org/docs/current/sql-" +"createextension.html" msgstr "" -msgid "Used in combination signatures" +msgid "Dependencies" msgstr "" -msgid "Points SQL for" +msgid "Compilation Dependencies" msgstr "" msgid "" -"The main parameter of the majority of the pgRouting functions is a query " -"that selects the edges of the graph." +"To be able to compile pgRouting, make sure that the following dependencies " +"are met:" msgstr "" -msgid "" -"Depending on the family or category of a function it will have additional " -"parameters, some of them are compulsory and some are optional." +msgid "C and C++0x compilers" msgstr "" msgid "" -"The compulsory parameters are nameless and must be given in the required " -"order. The optional parameters are named parameters and will have a default " -"value." +"Compiling with Boost 1.56 up to Boost 1.74 requires C++ Compiler with C++03 " +"or C++11 standard support" msgstr "" -msgid "Parameters for the Via functions" +msgid "" +"Compiling with Boost 1.75 requires C++ Compiler with C++14 standard support" msgstr "" -msgid ":doc:`pgr_dijkstraVia`" +msgid "Postgresql version = Supported versions by PostgreSQL" msgstr "" -msgid "SQL query as described." +msgid "The Boost Graph Library (BGL). Version >= 1.56" msgstr "" -msgid "When ``true`` Graph is considered `Directed`" +msgid "CMake >= 3.2" msgstr "" -msgid "When ``false`` the graph is considered as Undirected." +msgid "optional dependencies" msgstr "" -msgid "``strict``" +msgid "For user's documentation" msgstr "" -msgid "``false``" +msgid "Sphinx >= 1.1" msgstr "" -msgid "When ``true`` if a path is missing stops and returns **EMPTY SET**" +msgid "Latex" msgstr "" -msgid "When ``false`` ignores missing paths returning all paths found" +msgid "For developer's documentation" msgstr "" -msgid "``U_turn_on_edge``" +msgid "Doxygen >= 1.7" msgstr "" -msgid "" -"When ``true`` departing from a visited vertex will not try to avoid using " -"the edge used to reach it. In other words, U turn using the edge with same " -"identifier is allowed." +msgid "For testing" msgstr "" -msgid "" -"When ``false`` when a departing from a visited vertex tries to avoid using " -"the edge used to reach it. In other words, U turn using the edge with same " -"identifier is used when no other path is found." +msgid "pgtap" msgstr "" -msgid "For the TRSP functions" +msgid "pg_prove" msgstr "" -msgid ":doc:`pgr_trsp`" +msgid "For using:" msgstr "" -msgid "Array of identifiers of destination vertices." +msgid "PostGIS version >= 2.2" msgstr "" -msgid "" -"There are several kinds of columns returned are depending of the function." +msgid "Example: Installing dependencies on linux" msgstr "" -#, fuzzy -msgid "Result columns for a path" -msgstr "結果として返却されるカラム" - -msgid "Used in functions that return one path solution" +msgid "Installing the compilation dependencies" msgstr "" -msgid "" -"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost, " -"agg_cost)``" +msgid "Database dependencies" msgstr "" -msgid "``path_seq``" +msgid "Configuring PostgreSQL" msgstr "" -msgid "" -"Relative position in the path. Has value **1** for the beginning of a path." +msgid "Entering psql console" msgstr "" -msgid "" -"Identifier of the starting vertex. Returned when multiple starting vetrices " -"are in the query." +msgid "To exit psql console" msgstr "" msgid "" -"Identifier of the ending vertex. Returned when multiple ending vertices are " -"in the query." +"Entering psql console directly without switching roles can be done by the " +"following commands" msgstr "" -msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``." +msgid "Then use the above given method to exit out of the psql console" msgstr "" -msgid "" -"Identifier of the edge used to go from ``node`` to the next node in the path " -"sequence. **-1** for the last node of the path." +msgid "Checking PostgreSQL version" msgstr "" -msgid "" -"Cost to traverse from ``node`` using ``edge`` to the next node in the path " -"sequence." +msgid "or" msgstr "" -msgid "Used in functions the following:" +msgid "Enter the psql console using above given method and then enter" msgstr "" -msgid ":doc:`pgr_withPoints`" +msgid "Creating PostgreSQL role" msgstr "" msgid "" -"Returns set of ``(seq, path_seq [, start_pid] [, end_pid], node, edge, cost, " -"agg_cost)``" +"Default role provided by PostgreSQL is postgres. To create new roles you can " +"use the above provided commands. The prompt will ask the user to type name " +"of the role and then provide affirmation. Proceed with the steps and you " +"will succeed in creating PostgreSQL role successfully." msgstr "" -msgid "Relative position in the path." +msgid "" +"To add password to the role or change previously created password of the " +"role use the following commands" msgstr "" -msgid "**1** For the first row of the path." +msgid "" +"To get additional details on the flags associated with ``createuser`` below " +"given command can be used" msgstr "" -msgid "``start_pid``" +msgid "Creating Database in PostgreSQL" msgstr "" -msgid "Identifier of a starting vertex/point of the path." +msgid "Connecting to a PostgreSQL Database" msgstr "" -msgid "When positive is the identifier of the starting vertex." +msgid "Enter the psql console and type the following commands" msgstr "" -msgid "When negative is the identifier of the starting point." +msgid "Build dependencies" msgstr "" -msgid "Returned on `Many to One`_ and `Many to Many`_" +msgid "Optional dependencies" msgstr "" -msgid "``end_pid``" +msgid "For documentation and testing" msgstr "" -msgid "Identifier of an ending vertex/point of the path." +msgid "Configuring" msgstr "" -msgid "When positive is the identifier of the ending vertex." +msgid "pgRouting uses the `cmake` system to do the configuration." msgstr "" -msgid "When negative is the identifier of the ending point." +msgid "The build directory is different from the source directory" msgstr "" -msgid "Returned on `One to Many`_ and `Many to Many`_" +msgid "Create the build directory" msgstr "" -msgid "Identifier of the node in the path from ``start_pid`` to ``end_pid``." +msgid "Configurable variables" msgstr "" -msgid "When positive is the identifier of the a vertex." +msgid "To see the variables that can be configured" msgstr "" -msgid "When negative is the identifier of the a point." +msgid "Configuring The Documentation" msgstr "" msgid "" -"Identifier of the edge used to go from ``node`` to the next node in the path " -"sequence." +"Most of the effort of the documentation has been on the HTML files. Some " +"variables for building documentation:" msgstr "" -msgid "**-1** for the last row of the path." +msgid "Variable" msgstr "" -msgid "**0** For the first row of the path." +msgid "Comment" msgstr "" -msgid ":doc:`pgr_dijkstraNear`" +msgid "WITH_DOC" msgstr "" -msgid "" -"Returns ``(seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)``" +msgid "BOOL=OFF" msgstr "" -msgid "Identifier of the starting vertex of the current path." +msgid "Turn on/off building the documentation" msgstr "" -msgid "Identifier of the ending vertex of the current path." +msgid "BUILD_HTML" msgstr "" -msgid "Multiple paths" +msgid "BOOL=ON" msgstr "" -msgid "Selective for multiple paths." +msgid "If ON, turn on/off building HTML for user's documentation" msgstr "" -msgid "The columns depend on the function call." +msgid "BUILD_DOXY" msgstr "" -msgid "" -"Set of ``(seq, path_id, path_seq [, start_vid] [, end_vid], node, edge, " -"cost, agg_cost)``" +msgid "If ON, turn on/off building HTML for developer's documentation" msgstr "" -msgid "``path_id``" +msgid "BUILD_LATEX" msgstr "" -msgid "Path identifier." +msgid "If ON, turn on/off building PDF" msgstr "" -msgid "" -"Has value **1** for the first of a path from ``start_vid`` to ``end_vid``." +msgid "BUILD_MAN" msgstr "" -msgid "Non selective for multiple paths" +msgid "If ON, turn on/off building MAN pages" msgstr "" -msgid "Regardless of the call, al the columns are returned." +msgid "DOC_USE_BOOTSTRAP" msgstr "" -msgid "" -"Returns set of ``(seq, path_id, path_seq, start_vid, end_vid, node, edge, " -"cost, agg_cost)``" +msgid "If ON, use sphinx-bootstrap for HTML pages of the users documentation" msgstr "" -msgid "Result columns for cost functions" +msgid "Configuring cmake to create documentation before building pgRouting" msgstr "" -msgid "Used in the following" +msgid "Most of the effort of the documentation has been on the html files." msgstr "" -msgid "" -"When start_vid or end_vid columns have negative values, the identifier is " -"for a Point." +msgid "Building" msgstr "" -msgid "Result columns for flow functions" +msgid "Using ``make`` to build the code and the documentation" msgstr "" -msgid "Edges SQL for the following" +msgid "The following instructions start from *path/to/pgrouting/build*" msgstr "" -msgid "Result columns for spanning tree functions" +msgid "" +"We have tested on several platforms, For installing or reinstalling all the " +"steps are needed." msgstr "" -#, fuzzy -msgid "Returns set of ``(edge, cost)``" -msgstr "``(seq, node, cost, agg_cost)`` の1セットを返却します" - -msgid "Cost to traverse the edge." +msgid "The sql signatures are configured and build in the ``cmake`` command." msgstr "" -msgid "Performance Tips" +msgid "MinGW on Windows" msgstr "" -msgid "For the Routing functions" +msgid "Linux" msgstr "" -msgid "" -"To get faster results bound the queries to an area of interest of routing." +msgid "The following instructions start from *path/to/pgrouting*" msgstr "" msgid "" -"In this example Use an inner query SQL that does not include some edges in " -"the routing function and is within the area of the results." +"To remove the build when the configuration changes, use the following code:" msgstr "" -msgid "How to contribute" +msgid "and start the build process as mentioned previously." msgstr "" -msgid "Wiki" +msgid "Testing" msgstr "" -msgid "" -"Edit an existing `pgRouting Wiki `__ page." +msgid "Currently there is no :code:`make test` and testing is done as follows" msgstr "" -msgid "Or create a new Wiki page" +msgid "The following instructions start from *path/to/pgrouting/*" msgstr "" msgid "" -"Create a page on the `pgRouting Wiki `__" -msgstr "" - -msgid "Give the title an appropriate name" +"pgRouting is an extension of `PostGIS `__ and " +"`PostgreSQL `__ geospatial database and adds " +"routing and other network analysis functionality. A predecessor of pgRouting " +"– pgDijkstra, written by Sylvain Pasche from `Camptocamp `__, was later extended by Orkney and renamed to pgRouting. The project " +"is now supported and maintained by `Georepublic `__, `Paragon Corporation `__ and " +"a broad user community." msgstr "" msgid "" -"`Example `__" -msgstr "" - -msgid "Adding Functionaity to pgRouting" +"pgRouting is part of `OSGeo Community Projects `__ from the `OSGeo Foundation `__ and included on `OSGeoLive `__." msgstr "" -msgid "" -"Consult the `developer's documentation `__" -msgstr "" +msgid "Licensing" +msgstr "ライセンス" -msgid "Installation" -msgstr "インストール" +msgid "The following licenses can be found in pgRouting:" +msgstr "次のライセンスがpgRouting に適用されます。" -msgid ":ref:`install-short`" +msgid "**License**" msgstr "" -msgid ":ref:`install_get_sources`" +msgid "GNU General Public License v2.0 or later" msgstr "" -msgid ":ref:`install_enable_db`" +msgid "" +"Most features of pgRouting are available under `GNU General Public License " +"v2.0 or later `_." msgstr "" -msgid ":ref:`install_dependencies`" +msgid "Boost Software License - Version 1.0" msgstr "" -msgid ":ref:`install_configuring`" +msgid "" +"Some Boost extensions are available under `Boost Software License - Version " +"1.0 `_." msgstr "" -msgid ":ref:`install_build`" +msgid "MIT-X License" msgstr "" -msgid ":ref:`install_testing`" +msgid "" +"Some code contributed by iMaptools.com is available under MIT-X license." msgstr "" msgid "" -"Instructions for downloading and installing binaries for different operating " -"systems, additional notes and corrections not included in this documentation " -"can be found in `Installation wiki `__" +"The pgRouting Manual is licensed under a `Creative Commons Attribution-Share " +"Alike 3.0 License `_." msgstr "" msgid "" -"To use pgRouting PostGIS needs to be installed, please read the information " -"about installation in this `Install Guide `__" +"In general license information should be included in the header of each " +"source file." msgstr "" +"一般に、ライセンス情報は、各ソースファイルのヘッダーに含める必要があります。" -msgid "Short Version" -msgstr "" +msgid "Contributors" +msgstr "貢献者" -msgid "Extracting the tar ball" -msgstr "" +msgid "This Release Contributors" +msgstr "このリリースに対する貢献者" -msgid "To compile assuming you have all the dependencies in your search path:" +#, fuzzy +msgid "Individuals in this release v3.7.x (in alphabetical order)" +msgstr "個人(アルファベット順)" + +#, fuzzy +msgid "(Alphabetical order)" +msgstr "個人(アルファベット順)" + +msgid "Regina Obe, Vicky Vergara" msgstr "" msgid "" -"Once pgRouting is installed, it needs to be enabled in each individual " -"database you want to use it in." +"And all the people that give us a little of their time making comments, " +"finding issues, making pull requests etc. in any of our products: " +"osm2pgrouting, pgRouting, pgRoutingLayer, workshop." msgstr "" -msgid "Get the sources" +msgid "Corporate Sponsors in this release (in alphabetical order)" msgstr "" msgid "" -"The pgRouting latest release can be found in https://github.com/pgRouting/" -"pgrouting/releases/latest" +"These are corporate entities that have contributed developer time, hosting, " +"or direct monetary funding to the pgRouting project:" msgstr "" +"これらは、デベロッパーが開発に要する時間、ホスティング、また pgRoutingプロ" +"ジェクトへ直接資金を支援してくださっているスポンサー企業です。" -msgid "To download this release:" +msgid "`OSGeo `__" msgstr "" -msgid "" -"Go to :ref:`install-short` for more instructions on extracting tar ball and " -"compiling pgRouting." +msgid "`OSGeo UK `__" msgstr "" -msgid "git" +msgid "`Google Summer of Code `__" msgstr "" -msgid "To download the repository" +msgid "`Paragon Corporation `__" msgstr "" +msgid "Contributors Past & Present:" +msgstr "これまでの貢献者と現在の貢献者:" + +msgid "Individuals (in alphabetical order)" +msgstr "個人(アルファベット順)" + msgid "" -"Go to :ref:`install-short` for more instructions on compiling pgRouting " -"(there is no tar ball involved while downloading pgRouting repository from " -"GitHub)." +"Aasheesh Tiwari, Abhinav Jain, Aditya Pratap Singh, Adrien Berchet, Akio " +"Takubo, Andrea Nardelli, Anthony Tasca, Anton Patrushev, Aryan Gupta, Ashraf " +"Hossain, Ashish Kumar, Cayetano Benavent, Christian Gonzalez, Daniel Kastl, " +"Dave Potts, David Techer, Denis Rykov, Ema Miyawaki, Esteban Zimanyi, " +"Florian Thurkow, Frederic Junod, Gerald Fenoy, Gudesa Venkata Sai Akhil, " +"Hang Wu, Himanshu Raj, Imre Samu, Jay Mahadeokar, Jinfu Leng, Kai Behncke, " +"Kishore Kumar, Ko Nagase, Mahmoud Sakr, Manikata Kondeti, Mario Basa, Martin " +"Wiesenhaan, Maxim Dubinin, Maoguang Wang, Mohamed Bakli, Mohamed Zia, Mukul " +"Priya, Nitish Chauhan, Rajat Shinde, Razequl Islam, Regina Obe, Rohith " +"Reddy, Sarthak Agarwal, Shobhit Chaurasia, Sourabh Garg, Stephen Woodbridge, " +"Swapnil Joshi, Sylvain Housseman, Sylvain Pasche, Veenit Kumar, Vidhan Jain, " +"Virginia Vergara, Yige Huang" msgstr "" -msgid "Enabling and upgrading in the database" +msgid "Corporate Sponsors (in alphabetical order)" +msgstr "コーポレートスポンサー(アルファベット順)" + +msgid "Camptocamp" msgstr "" -msgid "Enabling the database" +msgid "CSIS (University of Tokyo)" msgstr "" -msgid "" -"pgRouting is a PostgreSQL extension and depends on PostGIS to provide " -"functionalities to end user. Below given code demonstrates enabling PostGIS " -"and pgRouting in the database." +msgid "Georepublic" msgstr "" -msgid "" -"Checking PostGIS and pgRouting version after enabling them in the database." +msgid "Google Summer of Code" msgstr "" -msgid "Upgrading the database" +msgid "iMaptools" msgstr "" -msgid "" -"To upgrade pgRouting in the database to version 3.7.0 use the following " -"command:" +msgid "Leopark" msgstr "" -msgid "" -"More information can be found in https://www.postgresql.org/docs/current/sql-" -"createextension.html" +msgid "Orkney" msgstr "" -msgid "Dependencies" +msgid "OSGeo" msgstr "" -msgid "Compilation Dependencies" +msgid "OSGeo UK" msgstr "" -msgid "" -"To be able to compile pgRouting, make sure that the following dependencies " -"are met:" +msgid "Paragon Corporation" msgstr "" -msgid "C and C++0x compilers" +msgid "Versaterm Inc." msgstr "" +msgid "More Information" +msgstr "もっと詳しく知る" + msgid "" -"Compiling with Boost 1.56 up to Boost 1.74 requires C++ Compiler with C++03 " -"or C++11 standard support" +"The latest software, documentation and news items are available at the " +"pgRouting web site https://pgrouting.org." msgstr "" +"最新のソフトウェア、ドキュメント、ニュースは、pgRoutingのウェブサイト " +"https://pgrouting.orgで入手できます。" msgid "" -"Compiling with Boost 1.75 requires C++ Compiler with C++14 standard support" +"PostgreSQL database server at the PostgreSQL main site https://www." +"postgresql.org." msgstr "" -msgid "Postgresql version = Supported versions by PostgreSQL" +msgid "PostGIS extension at the PostGIS project web site https://postgis.net." msgstr "" -msgid "The Boost Graph Library (BGL). Version >= 1.56" +msgid "Boost C++ source libraries at https://www.boost.org." msgstr "" -msgid "CMake >= 3.2" +msgid ":doc:`migration`" msgstr "" -msgid "optional dependencies" -msgstr "" +#, fuzzy +msgid "``pgr_KSP``" +msgstr "pgr_TSP" -msgid "For user's documentation" +msgid "``pgr_KSP`` — Yen's algorithm for K shortest paths using Dijkstra." msgstr "" -msgid "Sphinx >= 1.1" -msgstr "" +msgid "Availability" +msgstr "使用可能なバージョン" -msgid "Latex" -msgstr "" +#, fuzzy +msgid "Version 4.0.0" +msgstr "バージョン 2.0.0" -msgid "For developer's documentation" +msgid "All signatures promoted to official." msgstr "" -msgid "Doxygen >= 1.7" -msgstr "" +#, fuzzy +msgid "Version 3.6.0" +msgstr "バージョン 3.0.0" -msgid "For testing" +msgid "Result columns standarized to: |nksp-result|" msgstr "" -msgid "pgtap" +msgid "pgr_ksp(One to One)" msgstr "" -msgid "pg_prove" +msgid "Added ``start_vid`` and ``end_vid`` result columns." msgstr "" -msgid "For using:" +msgid "New proposed signatures:" msgstr "" -msgid "PostGIS version >= 2.2" +msgid "pgr_ksp(One to Many)" msgstr "" -msgid "Example: Installing dependencies on linux" +msgid "pgr_ksp(Many to One)" msgstr "" -msgid "Installing the compilation dependencies" +msgid "pgr_ksp(Many to Many)" msgstr "" -msgid "Database dependencies" +msgid "pgr_ksp(Combinations)" msgstr "" -msgid "Configuring PostgreSQL" +msgid "Version 2.1.0" msgstr "" -msgid "Entering psql console" -msgstr "" +msgid "Signature change" +msgstr "変更機能" -msgid "To exit psql console" +msgid "Old signature no longer supported" msgstr "" +msgid "Version 2.0.0" +msgstr "バージョン 2.0.0" + +#, fuzzy +msgid "Official function." +msgstr "**公式** 機能" + msgid "" -"Entering psql console directly without switching roles can be done by the " -"following commands" +"The K shortest path routing algorithm based on Yen's algorithm. \"K\" is the " +"number of shortest paths desired." msgstr "" -msgid "Then use the above given method to exit out of the psql console" +msgid "|Boost| Boost Graph Inside" msgstr "" -msgid "Checking PostgreSQL version" +msgid "Boost Graph Inside" msgstr "" -msgid "or" -msgstr "" +msgid "Signatures" +msgstr "機能" -msgid "Enter the psql console using above given method and then enter" -msgstr "" +msgid "Summary" +msgstr "概要" -msgid "Creating PostgreSQL role" +msgid "pgr_KSP(`Edges SQL`_, **start vid**, **end vid**, **K**, [**options**])" msgstr "" +#, fuzzy msgid "" -"Default role provided by PostgreSQL is postgres. To create new roles you can " -"use the above provided commands. The prompt will ask the user to type name " -"of the role and then provide affirmation. Proceed with the steps and you " -"will succeed in creating PostgreSQL role successfully." -msgstr "" +"pgr_KSP(`Edges SQL`_, **start vid**, **end vids**, **K**, [**options**])" +msgstr "p" +#, fuzzy msgid "" -"To add password to the role or change previously created password of the " -"role use the following commands" -msgstr "" +"pgr_KSP(`Edges SQL`_, **start vids**, **end vid**, **K**, [**options**])" +msgstr "p" +#, fuzzy msgid "" -"To get additional details on the flags associated with ``createuser`` below " -"given command can be used" -msgstr "" - -msgid "Creating Database in PostgreSQL" -msgstr "" +"pgr_KSP(`Edges SQL`_, **start vids**, **end vids**, **K**, [**options**])" +msgstr "p" -msgid "Connecting to a PostgreSQL Database" -msgstr "" +#, fuzzy +msgid "pgr_KSP(`Edges SQL`_, `Combinations SQL`_, **K**, [**options**])" +msgstr "pg" -msgid "Enter the psql console and type the following commands" +msgid "**options:** ``[directed, heap_paths]``" msgstr "" -msgid "Build dependencies" +msgid "Returns set of |nksp-result|" msgstr "" -msgid "Optional dependencies" +msgid "OR EMPTY SET" msgstr "" -msgid "For documentation and testing" -msgstr "" +msgid "Example" +msgstr "例" -msgid "Configuring" +msgid "Get 2 paths from :math:`6` to :math:`17` on a directed graph." msgstr "" -msgid "pgRouting uses the `cmake` system to do the configuration." +msgid "" +"Get 2 paths from vertex :math:`6` to vertices :math:`\\{10, 17\\}` on a " +"directed graph." msgstr "" -msgid "The build directory is different from the source directory" +msgid "" +"Get 2 paths from vertices :math:`\\{6, 1\\}` to vertex :math:`17` on a " +"directed graph." msgstr "" -msgid "Create the build directory" +msgid "" +"Get 2 paths vertices :math:`\\{6, 1\\}` to vertices :math:`\\{10, 17\\}` on " +"a directed graph." msgstr "" -msgid "Configurable variables" -msgstr "" +#, fuzzy +msgid "Using a combinations table on an directed graph" +msgstr "導かれないグラフ。" -msgid "To see the variables that can be configured" +msgid "The combinations table:" msgstr "" -msgid "Configuring The Documentation" +msgid "The query:" msgstr "" -msgid "" -"Most of the effort of the documentation has been on the HTML files. Some " -"variables for building documentation:" -msgstr "" +msgid "Identifier of the destination vertex." +msgstr "開始ノードの識別子。" -msgid "Variable" +msgid "**K**" msgstr "" -msgid "Comment" +msgid "Number of required paths." msgstr "" -msgid "WITH_DOC" +msgid "KSP Optional parameters" msgstr "" -msgid "BOOL=OFF" +msgid "``heap_paths``" msgstr "" -msgid "Turn on/off building the documentation" +msgid "When ``false`` Returns at most K paths." msgstr "" -msgid "BUILD_HTML" +msgid "When ``true`` all the calculated paths while processing are returned." msgstr "" -msgid "BOOL=ON" +msgid "" +"Roughly, when the shortest path has ``N`` edges, the heap will contain about " +"than ``N * K`` paths for small value of ``K`` and ``K > 5``." msgstr "" -msgid "If ON, turn on/off building HTML for user's documentation" +msgid "" +"Has value **1** for the first of a path from ``start_vid`` to ``end_vid``" msgstr "" -msgid "BUILD_DOXY" -msgstr "" +#, fuzzy +msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``" +msgstr "start_vid から end_vid まで行くのにかかるコスト" -msgid "If ON, turn on/off building HTML for developer's documentation" +msgid ":math:`0` for the last ``node`` of the path." msgstr "" -msgid "BUILD_LATEX" +msgid "Aggregate cost from **start vid** to ``node``." msgstr "" -msgid "If ON, turn on/off building PDF" -msgstr "" +msgid "Additional Examples" +msgstr "追加の具体例" -msgid "BUILD_MAN" +msgid "Get 2 paths from :math:`6` to :math:`17` on an undirected graph" msgstr "" -msgid "If ON, turn on/off building MAN pages" +msgid "Also get the paths in the heap." msgstr "" -msgid "DOC_USE_BOOTSTRAP" -msgstr "" +#, fuzzy +msgid "Get 2 paths using combinations table on an undirected graph" +msgstr "導かれないグラフ。" -msgid "If ON, use sphinx-bootstrap for HTML pages of the users documentation" +msgid "" +"Get 2 paths from vertices :math:`\\{6, 1\\}` to vertex :math:`17` on a " +"undirected graph." msgstr "" -msgid "Configuring cmake to create documentation before building pgRouting" +msgid "https://en.wikipedia.org/wiki/K_shortest_path_routing" msgstr "" -msgid "Most of the effort of the documentation has been on the html files." +msgid "``pgr_TSP``" msgstr "" -msgid "Building" +msgid "``pgr_TSP`` - Approximation using *metric* algorithm." msgstr "" -msgid "Using ``make`` to build the code and the documentation" +msgid "Availability:" msgstr "" -msgid "The following instructions start from *path/to/pgrouting/build*" +msgid "Version 3.2.1" msgstr "" msgid "" -"We have tested on several platforms, For installing or reinstalling all the " -"steps are needed." +"Metric Algorithm from `Boost library `__" msgstr "" -msgid "The sql signatures are configured and build in the ``cmake`` command." +msgid "Simulated Annealing Algorithm no longer supported" msgstr "" -msgid "MinGW on Windows" +msgid "" +"The Simulated Annealing Algorithm related parameters are ignored: " +"max_processing_time, tries_per_temperature, max_changes_per_temperature, " +"max_consecutive_non_changes, initial_temperature, final_temperature, " +"cooling_factor, randomize" msgstr "" -msgid "Linux" -msgstr "" +msgid "Version 2.3.0" +msgstr "バージョン 2.3.0" -msgid "The following instructions start from *path/to/pgrouting*" +msgid "" +"Can be Used with :doc:`costMatrix-category` functions preferably with " +"`directed => false`." msgstr "" -msgid "" -"To remove the build when the configuration changes, use the following code:" +msgid "With ``directed => false``" msgstr "" -msgid "and start the build process as mentioned previously." +msgid "Will generate a graph that:" msgstr "" -msgid "Testing" +msgid "is undirected" msgstr "" -msgid "Currently there is no :code:`make test` and testing is done as follows" +msgid "is fully connected (As long as the graph has one component)" msgstr "" -msgid "The following instructions start from *path/to/pgrouting/*" +msgid "all traveling costs on edges obey the triangle inequality." msgstr "" -msgid "" -"pgRouting is an extension of `PostGIS `__ and " -"`PostgreSQL `__ geospatial database and adds " -"routing and other network analysis functionality. A predecessor of pgRouting " -"– pgDijkstra, written by Sylvain Pasche from `Camptocamp `__, was later extended by Orkney and renamed to pgRouting. The project " -"is now supported and maintained by `Georepublic `__, `Paragon Corporation `__ and " -"a broad user community." +msgid "When ``start_vid = 0 OR end_vid = 0``" msgstr "" msgid "" -"pgRouting is part of `OSGeo Community Projects `__ from the `OSGeo Foundation `__ and included on `OSGeoLive `__." +"The solutions generated is garanteed to be *twice as long as the optimal " +"tour in the worst case*" msgstr "" -msgid "Licensing" -msgstr "ライセンス" - -msgid "The following licenses can be found in pgRouting:" -msgstr "次のライセンスがpgRouting に適用されます。" +msgid "When ``start_vid != 0 AND end_vid != 0 AND start_vid != end_vid``" +msgstr "" -msgid "**License**" +msgid "" +"It is **not garanteed** that the solution will be, in the worse case, twice " +"as long as the optimal tour, due to the fact that `end_vid` is forced to be " +"in a fixed position." msgstr "" -msgid "GNU General Public License v2.0 or later" +msgid "With ``directed => true``" msgstr "" msgid "" -"Most features of pgRouting are available under `GNU General Public License " -"v2.0 or later `_." +"It is **not garanteed** that the solution will be, in the worse case, twice " +"as long as the optimal tour" msgstr "" -msgid "Boost Software License - Version 1.0" +msgid "is directed" msgstr "" msgid "" -"Some Boost extensions are available under `Boost Software License - Version " -"1.0 `_." +"some (or all) traveling costs on edges might not obey the triangle " +"inequality." msgstr "" -msgid "MIT-X License" +msgid "" +"As an undirected graph is required, the directed graph is transformed as " +"follows:" msgstr "" msgid "" -"Some code contributed by iMaptools.com is available under MIT-X license." +"edges `(u, v)` and `(v, u)` is considered to be the same edge (denoted `(u, " +"v)`" msgstr "" -msgid "" -"The pgRouting Manual is licensed under a `Creative Commons Attribution-Share " -"Alike 3.0 License `_." +msgid "if ``agg_cost`` differs between one or more instances of edge `(u, v)`" msgstr "" msgid "" -"In general license information should be included in the header of each " -"source file." +"The minimum value of the ``agg_cost`` all instances of edge `(u, v)` is " +"going to be considered as the ``agg_cost`` of edge `(u, v)`" msgstr "" -"一般に、ライセンス情報は、各ソースファイルのヘッダーに含める必要があります。" -msgid "Contributors" -msgstr "貢献者" +msgid "" +"Some (or all) traveling costs on edges will still might not obey the " +"triangle inequality." +msgstr "" -msgid "This Release Contributors" -msgstr "このリリースに対する貢献者" +msgid "When the data is incomplete, but it is a connected graph:" +msgstr "" -#, fuzzy -msgid "Individuals in this release v3.7.x (in alphabetical order)" -msgstr "個人(アルファベット順)" +msgid "the missing values will be calculated with dijkstra algorithm." +msgstr "" -#, fuzzy -msgid "(Alphabetical order)" -msgstr "個人(アルファベット順)" +msgid "pgr_TSP(`Matrix SQL`_, ``[start_id, end_id]``)" +msgstr "" -msgid "Regina Obe, Vicky Vergara" +msgid "Returns set of |tsp-result|" msgstr "" -msgid "" -"And all the people that give us a little of their time making comments, " -"finding issues, making pull requests etc. in any of our products: " -"osm2pgrouting, pgRouting, pgRoutingLayer, workshop." +msgid "OR EMTPY SET" msgstr "" -msgid "Corporate Sponsors in this release (in alphabetical order)" +msgid "Using :doc:`pgr_dijkstraCostMatrix` to generate the matrix information" msgstr "" msgid "" -"These are corporate entities that have contributed developer time, hosting, " -"or direct monetary funding to the pgRouting project:" +"**Line 4** Vertices :math:`\\{2, 4, 13, 14\\}` are not included because they " +"are not connected." msgstr "" -"これらは、デベロッパーが開発に要する時間、ホスティング、また pgRoutingプロ" -"ジェクトへ直接資金を支援してくださっているスポンサー企業です。" -msgid "`OSGeo `__" +msgid "`Matrix SQL`_ as described below" msgstr "" -msgid "`OSGeo UK `__" +msgid "``ANY-INTEGER``" msgstr "" -msgid "`Google Summer of Code `__" +msgid "``ANY-NUMERICAL``" msgstr "" -msgid "`Paragon Corporation `__" -msgstr "" +msgid "Cost for going from start_vid to end_vid" +msgstr "start_vid から end_vid まで行くのにかかるコスト" -msgid "Contributors Past & Present:" -msgstr "これまでの貢献者と現在の貢献者:" +msgid "Returns SET OF ``(seq, node, cost, agg_cost)``" +msgstr "``(seq, node, cost, agg_cost)`` の1セットを返却します" -msgid "Individuals (in alphabetical order)" -msgstr "個人(アルファベット順)" +msgid "Row sequence." +msgstr "行番号。" + +msgid "**node**" +msgstr "**node**" + +msgid "Identifier of the node/coordinate/point." +msgstr "ノード/座標/ポイントの識別子。" msgid "" -"Aasheesh Tiwari, Abhinav Jain, Aditya Pratap Singh, Adrien Berchet, Akio " -"Takubo, Andrea Nardelli, Anthony Tasca, Anton Patrushev, Aryan Gupta, Ashraf " -"Hossain, Ashish Kumar, Cayetano Benavent, Christian Gonzalez, Daniel Kastl, " -"Dave Potts, David Techer, Denis Rykov, Ema Miyawaki, Esteban Zimanyi, " -"Florian Thurkow, Frederic Junod, Gerald Fenoy, Gudesa Venkata Sai Akhil, " -"Hang Wu, Himanshu Raj, Imre Samu, Jay Mahadeokar, Jinfu Leng, Kai Behncke, " -"Kishore Kumar, Ko Nagase, Mahmoud Sakr, Manikata Kondeti, Mario Basa, Martin " -"Wiesenhaan, Maxim Dubinin, Maoguang Wang, Mohamed Bakli, Mohamed Zia, Mukul " -"Priya, Nitish Chauhan, Rajat Shinde, Razequl Islam, Regina Obe, Rohith " -"Reddy, Sarthak Agarwal, Shobhit Chaurasia, Sourabh Garg, Stephen Woodbridge, " -"Swapnil Joshi, Sylvain Housseman, Sylvain Pasche, Veenit Kumar, Vidhan Jain, " -"Virginia Vergara, Yige Huang" +"Cost to traverse from the current ``node`` to the next ``node`` in the path " +"sequence." msgstr "" +"現在の ``ノード`` から次の ``ノード`` まで移動する際の経路にかかるコスト。" -msgid "Corporate Sponsors (in alphabetical order)" -msgstr "コーポレートスポンサー(アルファベット順)" +msgid "``0`` for the last row in the tour sequence." +msgstr "" -msgid "Camptocamp" +msgid "Aggregate cost from the ``node`` at ``seq = 1`` to the current node." +msgstr "``seq = 1`` の ``ノード`` から現在のノードまでの総コスト。" + +msgid "``0`` for the first row in the tour sequence." msgstr "" -msgid "CSIS (University of Tokyo)" +msgid "Start from vertex :math:`1`" msgstr "" -msgid "Georepublic" +msgid "**Line 6** ``start_vid => 1``" msgstr "" -msgid "Google Summer of Code" +msgid "Using points of interest to generate an asymetric matrix." msgstr "" -msgid "iMaptools" +msgid "To generate an asymmetric matrix:" msgstr "" -msgid "Leopark" +msgid "" +"**Line 4** The ``side`` information of ``pointsOfInterset`` is ignored by " +"not including it in the query" msgstr "" -msgid "Orkney" +msgid "**Line 6** Generating an asymetric matrix with ``directed => true``" msgstr "" -msgid "OSGeo" +msgid "" +":math:`min(agg\\_cost(u, v), agg\\_cost(v, u))` is going to be considered as " +"the ``agg_cost``" msgstr "" -msgid "OSGeo UK" +msgid "" +"The solution that can be larger than *twice as long as the optimal tour* " +"because:" +msgstr "" + +msgid "Triangle inequality might not be satisfied." msgstr "" -msgid "Paragon Corporation" +msgid "``start_id != 0 AND end_id != 0``" msgstr "" -msgid "Versaterm Inc." +msgid "Connected incomplete data" msgstr "" -msgid "More Information" -msgstr "もっと詳しく知る" - msgid "" -"The latest software, documentation and news items are available at the " -"pgRouting web site https://pgrouting.org." +"Using selected edges :math:`\\{2, 4, 5, 8, 9, 15\\}` the matrix is not " +"complete." msgstr "" -"最新のソフトウェア、ドキュメント、ニュースは、pgRoutingのウェブサイト " -"https://pgrouting.orgで入手できます。" msgid "" -"PostgreSQL database server at the PostgreSQL main site https://www." -"postgresql.org." +"Cost value for :math:`17 \\rightarrow 10` do not exist on the matrix, but " +"the value used is taken from :math:`10 \\rightarrow 17`." msgstr "" -msgid "PostGIS extension at the PostGIS project web site https://postgis.net." +msgid "``pgr_TSPeuclidean``" msgstr "" -msgid "Boost C++ source libraries at https://www.boost.org." +msgid "``pgr_TSPeuclidean`` - Approximation using *metric* algorithm." msgstr "" -msgid ":doc:`migration`" +msgid "" +"Using `Boost: metric TSP approx `__" msgstr "" -msgid "pgr_KSP" +msgid "" +"The Simulated Annealing Algorithm related parameters are ignored: " +"`max_processing_time`, `tries_per_temperature`, " +"`max_changes_per_temperature`, `max_consecutive_non_changes`, " +"`initial_temperature`, `final_temperature`, `cooling_factor`, `randomize`" msgstr "" -msgid "``pgr_KSP`` — Yen's algorithm for K shortest paths using Dijkstra." -msgstr "" +msgid "Version 3.0.0" +msgstr "バージョン 3.0.0" -msgid "Availability" -msgstr "使用可能なバージョン" +msgid "Name change from pgr_eucledianTSP" +msgstr "名称が pgr_eucledianTSP から変わりました" #, fuzzy -msgid "Version 3.6.0" -msgstr "バージョン 3.0.0" +msgid "New official function." +msgstr "新しい **公式** 機能" -msgid "Result columns standarized to: |nksp-result|" +msgid "" +"Any duplicated identifier will be ignored. The coordinates that will be kept" msgstr "" -msgid "``pgr_ksp`` (One to One)" +msgid "is arbitrarly." msgstr "" -msgid "Added ``start_vid`` and ``end_vid`` result columns." +msgid "" +"The coordinates are quite similar for the same identifier, for example ::" msgstr "" -msgid "New overload functions:" -msgstr "新しい **公式** 機能:" - -msgid "``pgr_ksp`` (One to Many)" +msgid "" +"The coordinates are quite different for the same identifier, for example ::" msgstr "" -msgid "``pgr_ksp`` (Many to One)" +msgid "pgr_TSPeuclidean(`Coordinates SQL`_, ``[start_id, end_id]``)" msgstr "" -msgid "``pgr_ksp`` (Many to Many)" +msgid "With default values" msgstr "" -msgid "``pgr_ksp`` (Combinations)" +msgid "`Coordinates SQL`_" msgstr "" -msgid "Version 2.1.0" +msgid "`Coordinates SQL`_ as described below" msgstr "" -msgid "Signature change" -msgstr "変更機能" - -msgid "Old signature no longer supported" +msgid "Coordinates SQL" msgstr "" -msgid "Version 2.0.0" -msgstr "バージョン 2.0.0" - -msgid "**Official** function" -msgstr "**公式** 機能" - -msgid "" -"The K shortest path routing algorithm based on Yen's algorithm. \"K\" is the " -"number of shortest paths desired." +msgid "``x``" msgstr "" -msgid "Signatures" -msgstr "機能" - -msgid "Summary" -msgstr "概要" +msgid "X value of the coordinate." +msgstr "座標のX値。" -msgid "pgr_KSP(`Edges SQL`_, **start vid**, **end vid**, **K**, [**options**])" +msgid "``y``" msgstr "" -#, fuzzy -msgid "" -"pgr_KSP(`Edges SQL`_, **start vid**, **end vids**, **K**, [**options**])" -msgstr "p" +msgid "Y value of the coordinate." +msgstr "座標のY値。" -#, fuzzy -msgid "" -"pgr_KSP(`Edges SQL`_, **start vids**, **end vid**, **K**, [**options**])" -msgstr "p" +msgid "Test 29 cities of Western Sahara" +msgstr "" -#, fuzzy msgid "" -"pgr_KSP(`Edges SQL`_, **start vids**, **end vids**, **K**, [**options**])" -msgstr "p" - -#, fuzzy -msgid "pgr_KSP(`Edges SQL`_, `Combinations SQL`_, **K**, [**options**])" -msgstr "pg" - -msgid "**options:** ``[directed, heap_paths]``" +"This example shows how to make performance tests using University of " +"Waterloo's `example data `__ using the 29 cities of `Western Sahara dataset `__" msgstr "" -msgid "Returns set of |nksp-result|" +msgid "Creating a table for the data and storing the data" msgstr "" -msgid "OR EMPTY SET" +msgid "Adding a geometry (for visual purposes)" msgstr "" -msgid "Example" -msgstr "例" - -msgid "Get 2 paths from :math:`6` to :math:`17` on a directed graph." +msgid "Total tour cost" msgstr "" msgid "" -"Get 2 paths from vertex :math:`6` to vertices :math:`\\{10, 17\\}` on a " -"directed graph." +"Getting a total cost of the tour, compare the value with the length of an " +"optimal tour is 27603, given on the dataset" msgstr "" -msgid "" -"Get 2 paths from vertices :math:`\\{6, 1\\}` to vertex :math:`17` on a " -"directed graph." +msgid "Getting a geometry of the tour" msgstr "" -msgid "" -"Get 2 paths vertices :math:`\\{6, 1\\}` to vertices :math:`\\{10, 17\\}` on " -"a directed graph." +msgid "Visual results" msgstr "" -#, fuzzy -msgid "Using a combinations table on an directed graph" -msgstr "導かれないグラフ。" - -msgid "The combinations table:" +msgid "" +"Visualy, The first image is the `optimal solution `__ and the second image is the solution " +"obtained with ``pgr_TSPeuclidean``." msgstr "" -msgid "The query:" +msgid "``pgr_aStar``" msgstr "" -msgid "Identifier of the destination vertex." -msgstr "開始ノードの識別子。" - -msgid "**K**" +msgid "``pgr_aStar`` — Shortest path using the A* algorithm." msgstr "" -msgid "Number of required paths." +msgid "Combinations signature promoted to official." msgstr "" -msgid "KSP Optional parameters" +msgid "Standarizing output columns to |short-generic-result|" msgstr "" -msgid "``heap_paths``" +msgid "pgr_aStar(One to One) added ``start_vid`` and ``end_vid`` columns." msgstr "" -msgid "When ``false`` Returns at most K paths." +msgid "pgr_aStar(One to Many) added ``end_vid`` column." msgstr "" -msgid "When ``true`` all the calculated paths while processing are returned." +msgid "pgr_aStar(Many to One) added ``start_vid`` column." msgstr "" -msgid "" -"Roughly, when the shortest path has ``N`` edges, the heap will contain about " -"than ``N * K`` paths for small value of ``K`` and ``K > 5``." +msgid "Version 3.2.0" msgstr "" -msgid "" -"Has value **1** for the first of a path from ``start_vid`` to ``end_vid``" +msgid "New proposed signature:" msgstr "" -#, fuzzy -msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``" -msgstr "start_vid から end_vid まで行くのにかかるコスト" - -msgid ":math:`0` for the last ``node`` of the path." +msgid "Function promoted to official." msgstr "" -msgid "Aggregate cost from **start vid** to ``node``." +msgid "Version 2.4.0" msgstr "" -msgid "Additional Examples" -msgstr "追加の具体例" +msgid "pgr_aStar(One to Many)" +msgstr "" -msgid "Get 2 paths from :math:`6` to :math:`17` on an undirected graph" +msgid "pgr_aStar(Many to One)" msgstr "" -msgid "Also get the paths in the heap." +msgid "pgr_aStar(Many to Many)" msgstr "" -#, fuzzy -msgid "Get 2 paths using combinations table on an undirected graph" -msgstr "導かれないグラフ。" +msgid "Signature change on pgr_aStar(One to One)" +msgstr "" msgid "" -"Get 2 paths from vertices :math:`\\{6, 1\\}` to vertex :math:`17` on a " -"undirected graph." +"The results are equivalent to the union of the results of the `pgr_aStar(` " +"`One to One`_ `)` on the:" msgstr "" -msgid "https://en.wikipedia.org/wiki/K_shortest_path_routing" +msgid "pgr_aStar(`Edges SQL`_, **start vid**, **end vid**, [**options**])" msgstr "" -msgid "``pgr_TSP``" +msgid "pgr_aStar(`Edges SQL`_, **start vid**, **end vids**, [**options**])" msgstr "" -msgid "``pgr_TSP`` - Aproximation using *metric* algorithm." +msgid "pgr_aStar(`Edges SQL`_, **start vids**, **end vid**, [**options**])" msgstr "" -msgid "Availability:" +msgid "pgr_aStar(`Edges SQL`_, **start vids**, **end vids**, [**options**])" msgstr "" -msgid "Version 3.2.1" +msgid "pgr_aStar(`Edges SQL`_, `Combinations SQL`_, [**options**])" msgstr "" -msgid "" -"Metric Algorithm from `Boost library `__" +msgid "**options:** ``[directed, heuristic, factor, epsilon]``" msgstr "" -msgid "Simulated Annealing Algorithm no longer supported" +msgid "Returns set of |short-generic-result|" msgstr "" -msgid "" -"The Simulated Annealing Algorithm related parameters are ignored: " -"max_processing_time, tries_per_temperature, max_changes_per_temperature, " -"max_consecutive_non_changes, initial_temperature, final_temperature, " -"cooling_factor, randomize" +msgid "Optional parameters are `named parameters` and have a default value." msgstr "" -msgid "Version 2.3.0" -msgstr "バージョン 2.3.0" - msgid "" -"Can be Used with :doc:`costMatrix-category` functions preferably with " -"`directed => false`." -msgstr "" - -msgid "With ``directed => false``" +"From vertex :math:`6` to vertex :math:`12` on a **directed** graph with " +"heuristic :math:`2`" msgstr "" -msgid "Will generate a graph that:" +msgid "" +"From vertex :math:`6` to vertices :math:`\\{10, 12\\}` on a **directed** " +"graph with heuristic :math:`3` and factor :math:`3.5`" msgstr "" -msgid "is undirected" +msgid "" +"From vertices :math:`\\{6, 8\\}` to vertex :math:`10` on an **undirected** " +"graph with heuristic :math:`4`" msgstr "" -msgid "is fully connected (As long as the graph has one component)" +msgid "" +"From vertices :math:`\\{6, 8\\}` to vertices :math:`\\{10, 12\\}` on a " +"**directed** graph with factor :math:`0.5`" msgstr "" -msgid "all traveling costs on edges obey the triangle inequality." +msgid "" +"Using a combinations table on a **directed** graph with factor :math:`0.5`." msgstr "" -msgid "When ``start_vid = 0 OR end_vid = 0``" +msgid "Example 1" msgstr "" -msgid "" -"The solutions generated is garanteed to be *twice as long as the optimal " -"tour in the worst case*" +msgid "Demonstration of repeated values are ignored, and result is sorted." msgstr "" -msgid "When ``start_vid != 0 AND end_vid != 0 AND start_vid != end_vid``" +msgid "Example 2" msgstr "" -msgid "" -"It is **not garanteed** that the solution will be, in the worse case, twice " -"as long as the optimal tour, due to the fact that `end_vid` is forced to be " -"in a fixed position." +msgid "Making **start vids** the same as **end vids**." msgstr "" -msgid "With ``directed => true``" +msgid "Example 3" msgstr "" -msgid "" -"It is **not garanteed** that the solution will be, in the worse case, twice " -"as long as the optimal tour" +msgid "Manually assigned vertex combinations." msgstr "" -msgid "is directed" +msgid "``pgr_aStarCost``" msgstr "" +#, fuzzy msgid "" -"some (or all) traveling costs on edges might not obey the triangle " -"inequality." -msgstr "" +"``pgr_aStarCost`` - Total cost of the shortest path using the A* algorithm." +msgstr ":doc:`pgr_dijkstraCost` - 最短経路の総コストを集計します。" -msgid "" -"As an undirected graph is required, the directed graph is transformed as " -"follows:" -msgstr "" +#, fuzzy +msgid "New proposed function." +msgstr "新しい **公式** 機能" msgid "" -"edges `(u, v)` and `(v, u)` is considered to be the same edge (denoted `(u, " -"v)`" -msgstr "" - -msgid "if ``agg_cost`` differs between one or more instances of edge `(u, v)`" +"The ``pgr_aStarCost`` function sumarizes of the cost of the shortest path " +"using the A* algorithm." msgstr "" msgid "" -"The minimum value of the ``agg_cost`` all instances of edge `(u, v)` is " -"going to be considered as the ``agg_cost`` of edge `(u, v)`" +"Let be the case the values returned are stored in a table, so the unique " +"index would be the pair: `(start_vid, end_vid)`" msgstr "" -msgid "" -"Some (or all) traveling costs on edges will still might not obey the " -"triangle inequality." +msgid "For undirected graphs, the results are symmetric." msgstr "" -msgid "When the data is incomplete, but it is a connected graph:" +msgid "The returned values are ordered in ascending order:" msgstr "" -msgid "the missing values will be calculated with dijkstra algorithm." +msgid "`start_vid` ascending" msgstr "" -msgid "pgr_TSP(`Matrix SQL`_, ``[start_id, end_id]``)" +msgid "`end_vid` ascending" msgstr "" -msgid "Returns set of |tsp-result|" +msgid "pgr_aStarCost(`Edges SQL`_, **start vid**, **end vid**, [**options**])" msgstr "" -msgid "OR EMTPY SET" +msgid "pgr_aStarCost(`Edges SQL`_, **start vid**, **end vids**, [**options**])" msgstr "" -msgid "Using :doc:`pgr_dijkstraCostMatrix` to generate the matrix information" +msgid "pgr_aStarCost(`Edges SQL`_, **start vids**, **end vid**, [**options**])" msgstr "" msgid "" -"**Line 4** Vertices :math:`\\{2, 4, 13, 14\\}` are not included because they " -"are not connected." +"pgr_aStarCost(`Edges SQL`_, **start vids**, **end vids**, [**options**])" msgstr "" -msgid "`Matrix SQL`_ as described below" +msgid "pgr_aStarCost(`Edges SQL`_, `Combinations SQL`_, [**options**])" msgstr "" -msgid "``ANY-INTEGER``" +msgid "Returns set of |matrix-result|" msgstr "" -msgid "``ANY-NUMERICAL``" +msgid "pgr_aStarCost(`Edges SQL`_, **start vids**, **end vids**, [options])" msgstr "" -msgid "Cost for going from start_vid to end_vid" -msgstr "start_vid から end_vid まで行くのにかかるコスト" - -msgid "Returns SET OF ``(seq, node, cost, agg_cost)``" -msgstr "``(seq, node, cost, agg_cost)`` の1セットを返却します" - -msgid "Row sequence." -msgstr "行番号。" - -msgid "**node**" -msgstr "**node**" - -msgid "Identifier of the node/coordinate/point." -msgstr "ノード/座標/ポイントの識別子。" +msgid "``pgr_aStarCostMatrix``" +msgstr "" msgid "" -"Cost to traverse from the current ``node`` to the next ``node`` in the path " -"sequence." +"``pgr_aStarCostMatrix`` - Calculates the a cost matrix using :doc:" +"`pgr_aStar`." msgstr "" -"現在の ``ノード`` から次の ``ノード`` まで移動する際の経路にかかるコスト。" -msgid "``0`` for the last row in the tour sequence." +msgid "Using internaly the :doc:`pgr_aStar` algorithm" msgstr "" -msgid "Aggregate cost from the ``node`` at ``seq = 1`` to the current node." -msgstr "``seq = 1`` の ``ノード`` から現在のノードまでの総コスト。" +msgid "Returns a cost matrix." +msgstr "" -msgid "``0`` for the first row in the tour sequence." +msgid "No ordering is performed" msgstr "" -msgid "Start from vertex :math:`1`" +msgid "let `v` and `u` are nodes on the graph:" msgstr "" -msgid "**Line 6** ``start_vid => 1``" +msgid "when there is no path from `v` to `u`:" msgstr "" -msgid "Using points of interest to generate an asymetric matrix." +msgid "cost from `v` to `u` is :math:`\\inf`" msgstr "" -msgid "To generate an asymmetric matrix:" +msgid "when :math:`v = u` then" msgstr "" -msgid "" -"**Line 4** The ``side`` information of ``pointsOfInterset`` is ignored by " -"not including it in the query" +msgid "cost from `v` to `u` is :math:`0`" msgstr "" -msgid "**Line 6** Generating an asymetric matrix with ``directed => true``" +msgid "When the graph is **undirected** the cost matrix is symmetric" msgstr "" -msgid "" -":math:`min(agg\\_cost(u, v), agg\\_cost(v, u))` is going to be considered as " -"the ``agg_cost``" +msgid "pgr_aStarCostMatrix(`Edges SQL`_, **start vids**, [**options**])" msgstr "" msgid "" -"The solution that can be larger than *twice as long as the optimal tour* " -"because:" +"Symmetric cost matrix for vertices :math:`\\{5, 6, 10, 15\\}` on an " +"**undirected** graph using heuristic :math:`2`" msgstr "" -msgid "Triangle inequality might not be satisfied." +msgid "Use with :doc:`pgr_TSP`" msgstr "" -msgid "``start_id != 0 AND end_id != 0``" +msgid "``pgr_alphaShape``" msgstr "" -msgid "Connected incomplete data" +msgid "``pgr_alphaShape`` — Polygon part of an alpha shape." msgstr "" -msgid "" -"Using selected edges :math:`\\{2, 4, 5, 8, 9, 15\\}` the matrix is not " -"complete." +msgid "Breaking change on signature" msgstr "" -msgid "" -"Cost value for :math:`17 \\rightarrow 10` do not exist on the matrix, but " -"the value used is taken from :math:`10 \\rightarrow 17`." +msgid "**Boost 1.54** & **Boost 1.55** are supported" msgstr "" -msgid "``pgr_TSPeuclidean``" +msgid "**Boost 1.56+** is preferable" msgstr "" -msgid "``pgr_TSPeuclidean`` - Aproximation using *metric* algorithm." +msgid "Boost Geometry is stable on Boost 1.56" msgstr "" -msgid "" -"The Simulated Annealing Algorithm related parameters are ignored: " -"`max_processing_time`, `tries_per_temperature`, " -"`max_changes_per_temperature`, `max_consecutive_non_changes`, " -"`initial_temperature`, `final_temperature`, `cooling_factor`, `randomize`" +msgid "Added alpha argument with default 0 (use optimal value)" msgstr "" -msgid "Version 3.0.0" -msgstr "バージョン 3.0.0" +msgid "Support to return multiple outer/inner ring" +msgstr "" -msgid "Name change from pgr_eucledianTSP" -msgstr "名称が pgr_eucledianTSP から変わりました" +msgid "Renamed from version 1.x" +msgstr "" -msgid "New **Official** function" -msgstr "新しい **公式** 機能" +msgid "Support" +msgstr "サポート" -msgid "" -"Any duplicated identifier will be ignored. The coordinates that will be kept" +msgid "Returns the polygon part of an alpha shape." msgstr "" -msgid "is arbitrarly." +msgid "Input is a *geometry* and returns a *geometry*" msgstr "" -msgid "" -"The coordinates are quite similar for the same identifier, for example ::" +msgid "Uses PostGis ST_DelaunyTriangles" msgstr "" msgid "" -"The coordinates are quite different for the same identifier, for example ::" +"Instead of using CGAL's definition of `alpha` it use the ``spoon_radius``" msgstr "" -msgid "pgr_TSPeuclidean(`Coordinates SQL`_, ``[start_id, end_id]``)" +msgid ":math:`spoon\\_radius = \\sqrt alpha`" msgstr "" -msgid "With default values" +msgid "" +"A Triangle area is considered part of the alpha shape when :math:" +"`circumcenter\\ radius < spoon\\_radius`" msgstr "" -msgid "`Coordinates SQL`_" +msgid "The ``alpha`` parameter is the **spoon radius**" msgstr "" -msgid "`Coordinates SQL`_ as described below" +msgid "" +"When the total number of points is less than 3, returns an EMPTY geometry" msgstr "" -msgid "Coordinates SQL" +msgid "pgr_alphaShape(**geometry**, [alpha])" msgstr "" -msgid "``x``" +msgid "RETURNS ``geometry``" msgstr "" -msgid "X value of the coordinate." -msgstr "座標のX値。" +msgid "" +"passing a geometry collection with spoon radius :math:`1.5` using the return " +"variable ``geom``" +msgstr "" -msgid "``y``" +msgid "**geometry**" msgstr "" -msgid "Y value of the coordinate." -msgstr "座標のY値。" +msgid "``geometry``" +msgstr "" -msgid "Test 29 cities of Western Sahara" +msgid "Geometry with at least :math:`3` points" msgstr "" -msgid "" -"This example shows how to make performance tests using University of " -"Waterloo's `example data `__ using the 29 cities of `Western Sahara dataset `__" +msgid "``alpha``" msgstr "" -msgid "Creating a table for the data and storing the data" +msgid "The radius of the spoon." msgstr "" -msgid "Adding a geometry (for visual purposes)" +msgid "Return Value" msgstr "" -msgid "Total tour cost" +msgid "Kind of geometry" msgstr "" -msgid "" -"Getting a total cost of the tour, compare the value with the length of an " -"optimal tour is 27603, given on the dataset" +msgid "GEOMETRY COLLECTION" msgstr "" -msgid "Getting a geometry of the tour" +msgid "A Geometry collection of Polygons" msgstr "" -msgid "Visual results" +msgid ":doc:`pgr_drivingDistance`" msgstr "" -msgid "" -"Visualy, The first image is the `optimal solution `__ and the second image is the solution " -"obtained with ``pgr_TSPeuclidean``." +msgid "`ST_ConcaveHull `__" msgstr "" -msgid ":doc:`sampledata` network." +msgid "``pgr_analyzeGraph``" msgstr "" -msgid "``pgr_aStar``" +msgid "``pgr_analyzeGraph`` — Analyzes the network topology." msgstr "" -msgid "``pgr_aStar`` — Shortest path using the A* algorithm." +msgid "The function returns:" msgstr "" -msgid "Standarizing output columns to |short-generic-result|" +msgid "``OK`` after the analysis has finished." msgstr "" -msgid "" -"``pgr_aStar`` (`One to One`_) added ``start_vid`` and ``end_vid`` columns." +msgid "``FAIL`` when the analysis was not completed due to an error." msgstr "" -msgid "``pgr_aStar`` (`One to Many`_) added ``end_vid`` column." +msgid "pgr_analyzeGraph(**edge_table**, **tolerance**, [**options**])" msgstr "" -msgid "``pgr_aStar`` (`Many to One`_) added ``start_vid`` column." +msgid "**options:** ``[the_geom, id, source, target, rows_where]``" msgstr "" -msgid "Version 3.2.0" +msgid "RETURNS ``VARCHAR``" msgstr "" -msgid "New **proposed** signature:" +msgid "Prerequisites" +msgstr "前提条件" + +msgid "" +"The edge table to be analyzed must contain a source column and a target " +"column filled with id's of the vertices of the segments and the " +"corresponding vertices table _vertices_pgr that stores the " +"vertices information." msgstr "" -msgid "``pgr_aStar`` (`Combinations`_)" +msgid "Use :doc:`pgr_createVerticesTable` to create the vertices table." msgstr "" -msgid "Version 2.4.0" +msgid "" +"Use :doc:`pgr_createTopology` to create the topology and the vertices table." msgstr "" -msgid "New **Proposed** signatures:" +msgid "The analyze graph function accepts the following parameters:" msgstr "" -msgid "``pgr_aStar`` (`One to Many`_)" +msgid "edge_table" msgstr "" -msgid "``pgr_aStar`` (`Many to One`_)" +msgid "``text`` Network table name. (may contain the schema name as well)" msgstr "" -msgid "``pgr_aStar`` (`Many to Many`_)" +msgid "tolerance" msgstr "" -msgid "Signature change on ``pgr_astar`` (`One to One`_)" +msgid "" +"``float8`` Snapping tolerance of disconnected edges. (in projection unit)" msgstr "" -msgid "**Official** ``pgr_aStar`` (`One to One`_)" +msgid "the_geom" msgstr "" msgid "" -"The results are equivalent to the union of the results of the `pgr_aStar(` " -"`One to One`_ `)` on the:" +"``text`` Geometry column name of the network table. Default value is " +"``the_geom``." msgstr "" -msgid "pgr_aStar(`Edges SQL`_, **start vid**, **end vid**, [**options**])" +msgid "id" msgstr "" -msgid "pgr_aStar(`Edges SQL`_, **start vid**, **end vids**, [**options**])" +msgid "" +"``text`` Primary key column name of the network table. Default value is " +"``id``." msgstr "" -msgid "pgr_aStar(`Edges SQL`_, **start vids**, **end vid**, [**options**])" +msgid "source" msgstr "" -msgid "pgr_aStar(`Edges SQL`_, **start vids**, **end vids**, [**options**])" +msgid "" +"``text`` Source column name of the network table. Default value is " +"``source``." msgstr "" -msgid "pgr_aStar(`Edges SQL`_, `Combinations SQL`_, [**options**])" +msgid "target" msgstr "" -msgid "**options:** ``[directed, heuristic, factor, epsilon]``" +msgid "" +"``text`` Target column name of the network table. Default value is " +"``target``." msgstr "" -msgid "Returns set of |short-generic-result|" +msgid "rows_where" msgstr "" -msgid "Optional parameters are `named parameters` and have a default value." +msgid "" +"``text`` Condition to select a subset or rows. Default value is ``true`` to " +"indicate all rows." msgstr "" -msgid "" -"From vertex :math:`6` to vertex :math:`12` on a **directed** graph with " -"heuristic :math:`2`" +msgid "Uses the vertices table: _vertices_pgr." msgstr "" -msgid "" -"From vertex :math:`6` to vertices :math:`\\{10, 12\\}` on a **directed** " -"graph with heuristic :math:`3` and factor :math:`3.5`" +msgid "Fills completely the ``cnt`` and ``chk`` columns of the vertices table." msgstr "" msgid "" -"From vertices :math:`\\{6, 8\\}` to vertex :math:`10` on an **undirected** " -"graph with heuristic :math:`4`" +"Returns the analysis of the section of the network defined by ``rows_where``" +msgstr "" + +msgid "The vertices table is not found." msgstr "" msgid "" -"From vertices :math:`\\{6, 8\\}` to vertices :math:`\\{10, 12\\}` on a " -"**directed** graph with factor :math:`0.5`" +"A required column of the Network table is not found or is not of the " +"appropriate type." msgstr "" -msgid "" -"Using a combinations table on a **directed** graph with factor :math:`0.5`." +msgid "The condition is not well formed." msgstr "" -msgid "Example 1" +msgid "The names of source , target or id are the same." msgstr "" -msgid "Demonstration of repeated values are ignored, and result is sorted." +msgid "The SRID of the geometry could not be determined." msgstr "" -msgid "Example 2" +msgid "The Vertices Table" msgstr "" -msgid "Making **start vids** the same as **end vids**." +msgid "" +"The vertices table can be created with :doc:`pgr_createVerticesTable " +"` or :doc:`pgr_createTopology `" msgstr "" -msgid "Example 3" +msgid "The structure of the vertices table is:" msgstr "" -msgid "Manually assigned vertex combinations." +msgid "``bigint`` Identifier of the vertex." msgstr "" -msgid "pgr_aStarCost" +msgid "cnt" msgstr "" -#, fuzzy msgid "" -"``pgr_aStarCost`` - Total cost of the shortest path using the A* algorithm." -msgstr ":doc:`pgr_dijkstraCost` - 最短経路の総コストを集計します。" +"``integer`` Number of vertices in the edge_table that reference this vertex." +msgstr "" -msgid "``pgr_aStarCost`` (`Combinations`_)" +msgid "chk" msgstr "" -msgid "New **proposed** function" +msgid "``integer`` Indicator that the vertex might have a problem." msgstr "" -msgid "" -"The ``pgr_aStarCost`` function sumarizes of the cost of the shortest path " -"using the A* algorithm." +msgid "ein" msgstr "" msgid "" -"Let be the case the values returned are stored in a table, so the unique " -"index would be the pair: `(start_vid, end_vid)`" +"``integer`` Number of vertices in the edge_table that reference this vertex " +"as incoming. See :doc:`pgr_analyzeOneWay `." msgstr "" -msgid "For undirected graphs, the results are symmetric." +msgid "eout" msgstr "" -msgid "The returned values are ordered in ascending order:" +msgid "" +"``integer`` Number of vertices in the edge_table that reference this vertex " +"as outgoing. See :doc:`pgr_analyzeOneWay `." msgstr "" -msgid "`start_vid` ascending" +msgid "``geometry`` Point geometry of the vertex." msgstr "" -msgid "`end_vid` ascending" +msgid "Usage when the edge table's columns MATCH the default values:" msgstr "" -msgid "pgr_aStarCost(`Edges SQL`_, **start vid**, **end vid**, [**options**])" +msgid "The simplest way to use pgr_analyzeGraph is:" msgstr "" -msgid "pgr_aStarCost(`Edges SQL`_, **start vid**, **end vids**, [**options**])" +msgid "Arguments are given in the order described in the parameters:" msgstr "" -msgid "pgr_aStarCost(`Edges SQL`_, **start vids**, **end vid**, [**options**])" +msgid "We get the same result as the simplest way to use the function." msgstr "" -msgid "" -"pgr_aStarCost(`Edges SQL`_, **start vids**, **end vids**, [**options**])" +msgid "An error would occur when" msgstr "" -msgid "pgr_aStarCost(`Edges SQL`_, `Combinations SQL`_, [**options**])" +msgid "the arguments are not given in the appropriate order:" msgstr "" -msgid "Returns set of |matrix-result|" +msgid "" +"In this example, the column ``id`` of the table ``mytable`` is passed to the " +"function as the geometry column, and the geometry column ``the_geom`` is " +"passed to the function as the id column." msgstr "" -msgid "pgr_aStarCost(`Edges SQL`_, **start vids**, **end vids**, [options])" +msgid "When using the named notation" msgstr "" -msgid "``pgr_aStarCostMatrix``" +msgid "The order of the parameters do not matter:" msgstr "" msgid "" -"``pgr_aStarCostMatrix`` - Calculates the a cost matrix using :doc:" -"`pgr_aStar`." +"Parameters defined with a default value can be omitted, as long as the value " +"matches the default:" msgstr "" -msgid "Using internaly the :doc:`pgr_aStar` algorithm" +msgid "Selecting rows using rows_where parameter" msgstr "" -msgid "Returns a cost matrix." +msgid "" +"Selecting rows based on the id. Displays the analysis a the section of the " +"network." msgstr "" -msgid "No ordering is performed" +msgid "" +"Selecting the rows where the geometry is near the geometry of row with " +"``id`` = 5" msgstr "" -msgid "let `v` and `u` are nodes on the graph:" +msgid "" +"Selecting the rows where the geometry is near the geometry of the row with " +"``gid`` =100 of the table ``othertable``." msgstr "" -msgid "when there is no path from `v` to `u`:" +msgid "Usage when the edge table's columns DO NOT MATCH the default values:" msgstr "" -msgid "cost from `v` to `u` is :math:`\\inf`" +msgid "For the following table" msgstr "" -msgid "when :math:`v = u` then" +msgid "Using positional notation:" msgstr "" -msgid "cost from `v` to `u` is :math:`0`" +msgid "" +"The arguments need to be given in the order described in the parameters:" msgstr "" -msgid "When the graph is **undirected** the cost matrix is symmetric" +msgid "" +"An error would occur when the arguments are not given in the appropriate " +"order: In this example, the column ``gid`` of the table ``mytable`` is " +"passed to the function as the geometry column, and the geometry column " +"``mygeom`` is passed to the function as the id column." msgstr "" -msgid "pgr_aStarCostMatrix(`Edges SQL`_, **start vids**, [**options**])" +msgid "" +"In this scenario omitting a parameter would create an error because the " +"default values for the column names do not match the column names of the " +"table." msgstr "" -msgid "" -"Symmetric cost matrix for vertices :math:`\\{5, 6, 10, 15\\}` on an " -"**undirected** graph using heuristic :math:`2`" +msgid "Selecting rows based on the id." msgstr "" -msgid "Use with :doc:`pgr_TSP`" +msgid "" +"Selecting the rows WHERE the geometry is near the geometry of row with " +"``id`` =5 ." msgstr "" -msgid "``pgr_alphaShape``" +msgid "" +"Selecting the rows WHERE the geometry is near the place='myhouse' of the " +"table ``othertable``. (note the use of quote_literal)" msgstr "" -msgid "``pgr_alphaShape`` — Polygon part of an alpha shape." +msgid ":doc:`pgr_analyzeOneWay`" msgstr "" -msgid "Breaking change on signature" +msgid ":doc:`pgr_createVerticesTable`" msgstr "" -msgid "**Boost 1.54** & **Boost 1.55** are supported" +msgid ":doc:`pgr_nodeNetwork` to create nodes to a not noded edge table." msgstr "" -msgid "**Boost 1.56+** is preferable" +msgid "``pgr_analyzeOneWay``" msgstr "" -msgid "Boost Geometry is stable on Boost 1.56" +msgid "" +"``pgr_analyzeOneWay`` — Analyzes oneway Sstreets and identifies flipped " +"segments." msgstr "" -msgid "Added alpha argument with default 0 (use optimal value)" +msgid "" +"This function analyzes oneway streets in a graph and identifies any flipped " +"segments." msgstr "" -msgid "Support to return multiple outer/inner ring" +msgid "" +"The analyses of one way segments is pretty simple but can be a powerful " +"tools to identifying some the potential problems created by setting the " +"direction of a segment the wrong way. A node is a `source` if it has edges " +"the exit from that node and no edges enter that node. Conversely, a node is " +"a `sink` if all edges enter the node but none exit that node. For a `source` " +"type node it is logically impossible to exist because no vehicle can exit " +"the node if no vehicle and enter the node. Likewise, if you had a `sink` " +"node you would have an infinite number of vehicle piling up on this node " +"because you can enter it but not leave it." msgstr "" -msgid "Renamed from version 1.x" +msgid "" +"So why do we care if the are not feasible? Well if the direction of an edge " +"was reversed by mistake we could generate exactly these conditions. Think " +"about a divided highway and on the north bound lane one segment got entered " +"wrong or maybe a sequence of multiple segments got entered wrong or maybe " +"this happened on a round-about. The result would be potentially a `source` " +"and/or a `sink` node." msgstr "" -msgid "Returns the polygon part of an alpha shape." +msgid "" +"So by counting the number of edges entering and exiting each node we can " +"identify both `source` and `sink` nodes so that you can look at those areas " +"of your network to make repairs and/or report the problem back to your data " +"vendor." msgstr "" -msgid "Input is a *geometry* and returns a *geometry*" +msgid "" +"pgr_analyzeOneWay(**geom_table**, **s_in_rules**, **s_out_rules**, " +"**t_in_rules**, **t_out_rules**, [**options**])" msgstr "" -msgid "Uses PostGis ST_DelaunyTriangles" +msgid "**options:** ``[oneway, source, target, two_way_if_null]``" msgstr "" -msgid "" -"Instead of using CGAL's definition of `alpha` it use the ``spoon_radius``" +msgid "RETURNS ``TEXT``" msgstr "" -msgid ":math:`spoon\\_radius = \\sqrt alpha`" +msgid "s_in_rules" msgstr "" -msgid "" -"A Triangle area is considered part of the alpha shape when :math:" -"`circumcenter\\ radius < spoon\\_radius`" +msgid "``text[]`` source node **in** rules" msgstr "" -msgid "The ``alpha`` parameter is the **spoon radius**" +msgid "s_out_rules" msgstr "" -msgid "" -"When the total number of points is less than 3, returns an EMPTY geometry" +msgid "``text[]`` source node **out** rules" msgstr "" -msgid "pgr_alphaShape(**geometry**, [alpha])" +msgid "t_in_rules" msgstr "" -msgid "RETURNS ``geometry``" +msgid "``text[]`` target node **in** rules" msgstr "" -msgid "" -"passing a geometry collection with spoon radius :math:`1.5` using the return " -"variable ``geom``" +msgid "t_out_rules" msgstr "" -msgid "**geometry**" +msgid "``text[]`` target node **out** rules" msgstr "" -msgid "``geometry``" +msgid "oneway" msgstr "" -msgid "Geometry with at least :math:`3` points" +msgid "" +"``text`` oneway column name name of the network table. Default value is " +"``oneway``." msgstr "" -msgid "``alpha``" +msgid "two_way_if_null" msgstr "" -msgid "The radius of the spoon." +msgid "" +"``boolean`` flag to treat oneway NULL values as bi-directional. Default " +"value is ``true``." msgstr "" -msgid "Return Value" +msgid "" +"It is strongly recommended to use the named notation. See :doc:" +"`pgr_createVerticesTable` or :doc:`pgr_createTopology` for examples." msgstr "" -msgid "Kind of geometry" +msgid "" +"Fills completely the ``ein`` and ``eout`` columns of the vertices table." msgstr "" -msgid "GEOMETRY COLLECTION" +msgid "The names of source , target or oneway are the same." msgstr "" -msgid "A Geometry collection of Polygons" +msgid "" +"The rules are defined as an array of text strings that if match the " +"``oneway`` value would be counted as ``true`` for the source or target " +"**in** or **out** condition." msgstr "" -msgid ":doc:`pgr_drivingDistance`" +msgid "" +"The vertices table can be created with :doc:`pgr_createVerticesTable` or :" +"doc:`pgr_createTopology`" msgstr "" -msgid "`ST_ConcaveHull `__" +msgid "" +"``integer`` Number of vertices in the edge_table that reference this vertex. " +"See :doc:`pgr_analyzeGgraph `." msgstr "" -msgid "pgr_analyzeGraph" +msgid "" +"``integer`` Indicator that the vertex might have a problem. See :doc:" +"`pgr_analyzeGraph `." msgstr "" -msgid "``pgr_analyzeGraph`` — Analyzes the network topology." +msgid "" +"``integer`` Number of vertices in the edge_table that reference this vertex " +"as incoming." msgstr "" -msgid "The function returns:" +msgid "" +"``integer`` Number of vertices in the edge_table that reference this vertex " +"as outgoing." msgstr "" -msgid "``OK`` after the analysis has finished." +msgid ":doc:`pgr_analyzeGraph`" msgstr "" -msgid "``FAIL`` when the analysis was not completed due to an error." +msgid "``pgr_articulationPoints``" msgstr "" -msgid "pgr_analyzeGraph(**edge_table**, **tolerance**, [**options**])" +msgid "" +"``pgr_articulationPoints`` - Return the articulation points of an undirected " +"graph." msgstr "" -msgid "**options:** ``[the_geom, id, source, target, rows_where]``" +msgid "Result columns change: ``seq`` is removed" msgstr "" -msgid "RETURNS ``VARCHAR``" +msgid "Version 2.5.0" msgstr "" -msgid "Prerequisites" -msgstr "前提条件" +#, fuzzy +msgid "New experimental function." +msgstr "新しい **公式** 機能" msgid "" -"The edge table to be analyzed must contain a source column and a target " -"column filled with id's of the vertices of the segments and the " -"corresponding vertices table _vertices_pgr that stores the " -"vertices information." +"Those vertices that belong to more than one biconnected component are called " +"articulation points or, equivalently, cut vertices. Articulation points are " +"vertices whose removal would increase the number of connected components in " +"the graph. This implementation can only be used with an undirected graph." +msgstr "" + +msgid "Works for **undirected** graphs." +msgstr "" + +msgid "``node`` ascending" msgstr "" -msgid "Use :doc:`pgr_createVerticesTable` to create the vertices table." +msgid "Running time: :math:`O(V + E)`" msgstr "" -msgid "" -"Use :doc:`pgr_createTopology` to create the topology and the vertices table." +msgid "pgr_articulationPoints(`Edges SQL`_)" msgstr "" -msgid "The analyze graph function accepts the following parameters:" +msgid "Returns set of |result-node|" msgstr "" -msgid "edge_table" +msgid "The articulation points of the graph" msgstr "" -msgid "``text`` Network table name. (may contain the schema name as well)" +msgid "Nodes in red are the articulation points." msgstr "" -msgid "tolerance" +msgid "" +"`Boost: Biconnected components & articulation points `__" msgstr "" msgid "" -"``float8`` Snapping tolerance of disconnected edges. (in projection unit)" +"wikipedia: `Biconnected component `__" msgstr "" -msgid "the_geom" +msgid "``pgr_bdAstar``" msgstr "" -msgid "" -"``text`` Geometry column name of the network table. Default value is " -"``the_geom``." +msgid "``pgr_bdAstar`` — Shortest path using the bidirectional A* algorithm." msgstr "" -msgid "id" +msgid "pgr_bdAstar(One to One) added ``start_vid`` and ``end_vid`` columns." msgstr "" -msgid "" -"``text`` Primary key column name of the network table. Default value is " -"``id``." +msgid "pgr_bdAstar(One to Many) added ``end_vid`` column." msgstr "" -msgid "source" +msgid "pgr_bdAstar(Many to One) added ``start_vid`` column." msgstr "" -msgid "" -"``text`` Source column name of the network table. Default value is " -"``source``." +msgid "pgr_bdAstar(One to Many)" msgstr "" -msgid "target" +msgid "pgr_bdAstar(Many to One)" msgstr "" -msgid "" -"``text`` Target column name of the network table. Default value is " -"``target``." +msgid "pgr_bdAstar(Many to Many)" msgstr "" -msgid "rows_where" +msgid "Signature change on pgr_bdAstar(One to One)" msgstr "" msgid "" -"``text`` Condition to select a subset or rows. Default value is ``true`` to " -"indicate all rows." +"The results are equivalent to the union of the results of the " +"pgr_bdAStar(One to One) on the:" msgstr "" -msgid "Uses the vertices table: _vertices_pgr." +msgid "pgr_bdAstar(`Edges SQL`_, **start vid**, **end vid**, [**options**])" msgstr "" -msgid "Fills completely the ``cnt`` and ``chk`` columns of the vertices table." +msgid "pgr_bdAstar(`Edges SQL`_, **start vid**, **end vids**, [**options**])" msgstr "" -msgid "" -"Returns the analysis of the section of the network defined by ``rows_where``" +msgid "pgr_bdAstar(`Edges SQL`_, **start vids**, **end vid**, [**options**])" +msgstr "p" + +msgid "pgr_bdAstar(`Edges SQL`_, **start vids**, **end vids**, [**options**])" msgstr "" -msgid "The vertices table is not found." +msgid "pgr_bdAstar(`Edges SQL`_, `Combinations SQL`_, [**options**])" msgstr "" -msgid "" -"A required column of the Network table is not found or is not of the " -"appropriate type." +msgid "``pgr_bdAstarCost``" msgstr "" -msgid "The condition is not well formed." +msgid "" +"``pgr_bdAstarCost`` - Total cost of the shortest path using the " +"bidirectional A* algorithm." msgstr "" -msgid "The names of source , target or id are the same." +msgid "" +"The ``pgr_bdAstarCost`` function sumarizes of the cost of the shortest path " +"using the bidirectional A* algorithm." msgstr "" -msgid "The SRID of the geometry could not be determined." +msgid "" +"pgr_bdAstarCost(`Edges SQL`_, **start vid**, **end vid**, [**options**])" msgstr "" -msgid "The Vertices Table" +msgid "" +"pgr_bdAstarCost(`Edges SQL`_, **start vid**, **end vids**, [**options**])" msgstr "" msgid "" -"The vertices table can be created with :doc:`pgr_createVerticesTable " -"` or :doc:`pgr_createTopology `" +"pgr_bdAstarCost(`Edges SQL`_, **start vids**, **end vid**, [**options**])" msgstr "" -msgid "The structure of the vertices table is:" +msgid "" +"pgr_bdAstarCost(`Edges SQL`_, **start vids**, **end vids**, [**options**])" msgstr "" -msgid "``bigint`` Identifier of the vertex." +msgid "pgr_bdAstarCost(`Edges SQL`_, `Combinations SQL`_, [**options**])" msgstr "" -msgid "cnt" +msgid "``pgr_bdAstarCostMatrix``" msgstr "" msgid "" -"``integer`` Number of vertices in the edge_table that reference this vertex." +"``pgr_bdAstarCostMatrix`` - Calculates the a cost matrix using :doc:" +"`pgr_aStar`." msgstr "" -msgid "chk" +msgid "Using internaly the :doc:`pgr_bdAstar` algorithm" msgstr "" -msgid "``integer`` Indicator that the vertex might have a problem." +msgid "pgr_bdAstarCostMatrix(`Edges SQL`_, **start vids**, [**options**])" msgstr "" -msgid "ein" +msgid "``pgr_bdDijkstra``" msgstr "" msgid "" -"``integer`` Number of vertices in the edge_table that reference this vertex " -"as incoming. See :doc:`pgr_analyzeOneWay `." +"``pgr_bdDijkstra`` — Returns the shortest path using Bidirectional Dijkstra " +"algorithm." msgstr "" -msgid "eout" +msgid "pgr_bdDijkstra(One to Many)" msgstr "" -msgid "" -"``integer`` Number of vertices in the edge_table that reference this vertex " -"as outgoing. See :doc:`pgr_analyzeOneWay `." +msgid "pgr_bdDijkstra(Many to One)" msgstr "" -msgid "``geometry`` Point geometry of the vertex." +msgid "pgr_bdDijkstra(Many to Many)" msgstr "" -msgid "Usage when the edge table's columns MATCH the default values:" +msgid "Signature change on pgr_bdDijsktra(One to One)" msgstr "" -msgid "The simplest way to use pgr_analyzeGraph is:" +msgid "" +"pgr_bdDijkstra(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" msgstr "" -msgid "Arguments are given in the order described in the parameters:" +msgid "" +"pgr_bdDijkstra(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" msgstr "" -msgid "We get the same result as the simplest way to use the function." +msgid "" +"pgr_bdDijkstra(`Edges SQL`_, **start vids**, **end vid**, [``directed``])" msgstr "" -msgid "An error would occur when" +msgid "" +"pgr_bdDijkstra(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" msgstr "" -msgid "the arguments are not given in the appropriate order:" +msgid "pgr_bdDijkstra(`Edges SQL`_, `Combinations SQL`_, [``directed``])" msgstr "" -msgid "" -"In this example, the column ``id`` of the table ``mytable`` is passed to the " -"function as the geometry column, and the geometry column ``the_geom`` is " -"passed to the function as the id column." +msgid "Returns set of |old-generic-result|" msgstr "" -msgid "When using the named notation" +msgid "Returns set of |result-1-1|" msgstr "" -msgid "The order of the parameters do not matter:" +msgid "From vertex :math:`6` to vertex :math:`10` on a **directed** graph" msgstr "" -msgid "" -"Parameters defined with a default value can be omitted, as long as the value " -"matches the default:" +msgid "Returns set of |result-1-m|" msgstr "" -msgid "Selecting rows using rows_where parameter" +msgid "" +"From vertex :math:`6` to vertices :math:`\\{10, 17\\}` on a **directed** " +"graph" msgstr "" -msgid "" -"Selecting rows based on the id. Displays the analysis a the section of the " -"network." +msgid "Returns set of |result-m-1|" msgstr "" msgid "" -"Selecting the rows where the geometry is near the geometry of row with " -"``id`` = 5" +"From vertices :math:`\\{6, 1\\}` to vertex :math:`17` on a **directed** graph" msgstr "" msgid "" -"Selecting the rows where the geometry is near the geometry of the row with " -"``gid`` =100 of the table ``othertable``." +"From vertices :math:`\\{6, 1\\}` to vertices :math:`\\{10, 17\\}` on an " +"**undirected** graph" msgstr "" -msgid "Usage when the edge table's columns DO NOT MATCH the default values:" +msgid "Using a combinations table on an **undirected** graph" msgstr "" -msgid "For the following table" +msgid "https://en.wikipedia.org/wiki/Bidirectional_search" msgstr "" -msgid "Using positional notation:" +msgid "``pgr_bdDijkstraCost``" msgstr "" msgid "" -"The arguments need to be given in the order described in the parameters:" +"``pgr_bdDijkstraCost`` — Returns the shortest path's cost using " +"Bidirectional Dijkstra algorithm." msgstr "" msgid "" -"An error would occur when the arguments are not given in the appropriate " -"order: In this example, the column ``gid`` of the table ``mytable`` is " -"passed to the function as the geometry column, and the geometry column " -"``mygeom`` is passed to the function as the id column." +"The ``pgr_bdDijkstraCost`` function sumarizes of the cost of the shortest " +"path using the bidirectional Dijkstra Algorithm." msgstr "" msgid "" -"In this scenario omitting a parameter would create an error because the " -"default values for the column names do not match the column names of the " -"table." +"pgr_bdDijkstraCost(`Edges SQL`_, **start vid**, **end vid** , [``directed``])" msgstr "" -msgid "Selecting rows based on the id." +msgid "" +"pgr_bdDijkstraCost(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" msgstr "" msgid "" -"Selecting the rows WHERE the geometry is near the geometry of row with " -"``id`` =5 ." +"pgr_bdDijkstraCost(`Edges SQL`_, **start vids**, **end vid** , " +"[``directed``])" msgstr "" msgid "" -"Selecting the rows WHERE the geometry is near the place='myhouse' of the " -"table ``othertable``. (note the use of quote_literal)" +"pgr_bdDijkstraCost(`Edges SQL`_, **start vids**, **end vids**, " +"[``directed``])" msgstr "" -msgid "The examples use the :doc:`sampledata` network." +msgid "pgr_bdDijkstraCost(`Edges SQL`_, `Combinations SQL`_, [ ``directed``])" msgstr "" -msgid ":doc:`pgr_analyzeOneWay`" +msgid "pgr_bdDijkstraCost(`Edges SQL`_, `Combinations SQL`_, [``directed``])" msgstr "" -msgid ":doc:`pgr_createVerticesTable`" +msgid "``pgr_bdDijkstraCostMatrix``" msgstr "" -msgid ":doc:`pgr_nodeNetwork` to create nodes to a not noded edge table." +msgid "" +"``pgr_bdDijkstraCostMatrix`` - Calculates a cost matrix using :doc:" +"`pgr_bdDijkstra`." msgstr "" -msgid "pgr_analyzeOneWay" +msgid "" +"Using bidirectional Dijkstra algorithm, calculate and return a cost matrix." msgstr "" -msgid "" -"``pgr_analyzeOneWay`` — Analyzes oneway Sstreets and identifies flipped " -"segments." +msgid "pgr_bdDijkstraCostMatrix(`Edges SQL`_, **start vids**, [``directed``])" msgstr "" msgid "" -"This function analyzes oneway streets in a graph and identifies any flipped " -"segments." +"Symmetric cost matrix for vertices :math:`\\{5, 6, 10, 15\\}` on an " +"**undirected** graph" msgstr "" -msgid "" -"The analyses of one way segments is pretty simple but can be a powerful " -"tools to identifying some the potential problems created by setting the " -"direction of a segment the wrong way. A node is a `source` if it has edges " -"the exit from that node and no edges enter that node. Conversely, a node is " -"a `sink` if all edges enter the node but none exit that node. For a `source` " -"type node it is logically impossible to exist because no vehicle can exit " -"the node if no vehicle and enter the node. Likewise, if you had a `sink` " -"node you would have an infinite number of vehicle piling up on this node " -"because you can enter it but not leave it." +msgid "Use with :doc:`pgr_TSP`." msgstr "" -msgid "" -"So why do we care if the are not feasible? Well if the direction of an edge " -"was reversed by mistake we could generate exactly these conditions. Think " -"about a divided highway and on the north bound lane one segment got entered " -"wrong or maybe a sequence of multiple segments got entered wrong or maybe " -"this happened on a round-about. The result would be potentially a `source` " -"and/or a `sink` node." +msgid "``pgr_bellmanFord - Experimental``" msgstr "" -msgid "" -"So by counting the number of edges entering and exiting each node we can " -"identify both `source` and `sink` nodes so that you can look at those areas " -"of your network to make repairs and/or report the problem back to your data " -"vendor." +msgid "``pgr_bellmanFord`` — Shortest path using Bellman-Ford algorithm." msgstr "" -msgid "" -"pgr_analyzeOneWay(**geom_table**, **s_in_rules**, **s_out_rules**, " -"**t_in_rules**, **t_out_rules**, [**options**])" +#, fuzzy +msgid "New experimental signature:" +msgstr "新しい **公式** 機能" + +msgid "pgr_bellmanFord(Combinations)" msgstr "" -msgid "**options:** ``[oneway, source, target, two_way_if_null]``" +msgid "" +"Bellman-Ford's algorithm, is named after Richard Bellman and Lester Ford, " +"who first published it in 1958 and 1956, respectively.It is a graph search " +"algorithm that computes shortest paths from a starting vertex " +"(``start_vid``) to an ending vertex (``end_vid``) in a graph where some of " +"the edge weights may be negative. Though it is more versatile, it is slower " +"than Dijkstra's algorithm.This implementation can be used with a directed " +"graph and an undirected graph." msgstr "" -msgid "RETURNS ``TEXT``" +msgid "" +"Process is valid for edges with both positive and negative edge weights." msgstr "" -msgid "s_in_rules" +msgid "" +"When the start vertex and the end vertex are the same, there is no path. The " +"agg_cost would be :math:`0`." msgstr "" -msgid "``text[]`` source node **in** rules" +msgid "" +"When the start vertex and the end vertex are different, and there exists a " +"path between them without having a *negative cycle*. The agg_cost would be " +"some finite value denoting the shortest distance between them." msgstr "" -msgid "s_out_rules" +msgid "" +"When the start vertex and the end vertex are different, and there exists a " +"path between them, but it contains a *negative cycle*. In such case, " +"agg_cost for those vertices keep on decreasing furthermore, Hence agg_cost " +"can’t be defined for them." msgstr "" -msgid "``text[]`` source node **out** rules" +msgid "" +"When the start vertex and the end vertex are different, and there is no " +"path. The agg_cost is :math:`\\infty`." msgstr "" -msgid "t_in_rules" +msgid "" +"For optimization purposes, any duplicated value in the `start_vids` or " +"`end_vids` are ignored." msgstr "" -msgid "``text[]`` target node **in** rules" +msgid "Running time: :math:`O(| start\\_vids | * ( V * E))`" msgstr "" -msgid "t_out_rules" +msgid "" +"pgr_bellmanFord(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" msgstr "" -msgid "``text[]`` target node **out** rules" +msgid "" +"pgr_bellmanFord(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" msgstr "" -msgid "oneway" +msgid "" +"pgr_bellmanFord(`Edges SQL`_, **start vids**, **end vid**, [``directed``])" msgstr "" msgid "" -"``text`` oneway column name name of the network table. Default value is " -"``oneway``." +"pgr_bellmanFord(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" msgstr "" -msgid "two_way_if_null" +msgid "pgr_bellmanFord(`Edges SQL`_, `Combinations SQL`_, [``directed``])" msgstr "" msgid "" -"``boolean`` flag to treat oneway NULL values as bi-directional. Default " -"value is ``true``." +"From vertex :math:`6` to vertices :math:`\\{ 10, 17\\}` on a **directed** " +"graph" msgstr "" -msgid "" -"It is strongly recommended to use the named notation. See :doc:" -"`pgr_createVerticesTable` or :doc:`pgr_createTopology` for examples." +msgid "Using a combinations table on an **undirected** graph." msgstr "" msgid "" -"Fills completely the ``ein`` and ``eout`` columns of the vertices table." +"`Boost: Bellman Ford `__" msgstr "" -msgid "The names of source , target or oneway are the same." +msgid "https://en.wikipedia.org/wiki/Bellman%E2%80%93Ford_algorithm" msgstr "" -msgid "" -"The rules are defined as an array of text strings that if match the " -"``oneway`` value would be counted as ``true`` for the source or target " -"**in** or **out** condition." -msgstr "" +#, fuzzy +msgid "``pgr_betweennessCentrality`` - Experimental" +msgstr "p" msgid "" -"The vertices table can be created with :doc:`pgr_createVerticesTable` or :" -"doc:`pgr_createTopology`" +"``pgr_betweennessCentrality`` - Calculates the relative betweenness " +"centrality using Brandes Algorithm" msgstr "" +#, fuzzy +msgid "Version 3.7.0" +msgstr "バージョン 3.0.0" + msgid "" -"``integer`` Number of vertices in the edge_table that reference this vertex. " -"See :doc:`pgr_analyzeGgraph `." +"The Brandes Algorithm takes advantage of the sparse graphs for evaluating " +"the betweenness centrality score of all vertices." msgstr "" msgid "" -"``integer`` Indicator that the vertex might have a problem. See :doc:" -"`pgr_analyzeGraph `." +"Betweenness centrality measures the extent to which a vertex lies on the " +"shortest paths between all other pairs of vertices. Vertices with a high " +"betweenness centrality score may have considerable influence in a network by " +"the virtue of their control over the shortest paths passing between them." msgstr "" msgid "" -"``integer`` Number of vertices in the edge_table that reference this vertex " -"as incoming." +"The removal of these vertices will affect the network by disrupting the it, " +"as most of the shortest paths between vertices pass through them." msgstr "" -msgid "" -"``integer`` Number of vertices in the edge_table that reference this vertex " -"as outgoing." +#, fuzzy +msgid "This implementation work for both directed and undirected graphs." +msgstr "導かれないグラフ。" + +msgid "Running time: :math:`\\Theta(VE)`" msgstr "" -msgid ":doc:`pgr_analyzeGraph`" +msgid "Running space: :math:`\\Theta(VE)`" msgstr "" -msgid "``pgr_articulationPoints``" +msgid "Throws when there are no edges in the graph" msgstr "" -msgid "" -"``pgr_articulationPoints`` - Return the articulation points of an undirected " -"graph." +#, fuzzy +msgid "pgr_betweennessCentrality(`Edges SQL`_, [``directed``])" +msgstr "p" + +#, fuzzy +msgid "Returns set of ``(vid, centrality)``" +msgstr "``(seq, node, cost, agg_cost)`` の1セットを返却します" + +msgid "For a directed graph with edges :math:`\\{1, 2, 3, 4\\}`." msgstr "" -msgid "Result columns change: ``seq`` is removed" +msgid "Explanation" msgstr "" -msgid "Version 2.5.0" +msgid "The betweenness centrality are between parenthesis." msgstr "" -msgid "New **experimental** function" +msgid "The leaf vertices have betweenness centrality :math:`0`." msgstr "" msgid "" -"Those vertices that belong to more than one biconnected component are called " -"articulation points or, equivalently, cut vertices. Articulation points are " -"vertices whose removal would increase the number of connected components in " -"the graph. This implementation can only be used with an undirected graph." +"Betweenness centrality of vertex :math:`6` is higher than of vertex :math:" +"`10`." msgstr "" -msgid "Works for **undirected** graphs." +msgid "Removing vertex :math:`6` will create three graph components." msgstr "" -msgid "``node`` ascending" +msgid "Removing vertex :math:`10` will create two graph components." msgstr "" -msgid "Running time: :math:`O(V + E)`" +msgid "``vid``" msgstr "" -msgid "pgr_articulationPoints(`Edges SQL`_)" +msgid "``centrality``" msgstr "" -msgid "Returns set of |result-node|" +msgid "" +"Relative betweenness centrality score of the vertex (will be in range [0,1])" msgstr "" -msgid "The articulation points of the graph" +msgid "" +"`Boost: betweenness centrality `_" msgstr "" -msgid "Nodes in red are the articulation points." +msgid "``pgr_biconnectedComponents``" msgstr "" msgid "" -"Boost: `Biconnected components & articulation points `__" +"``pgr_biconnectedComponents`` — Biconnected components of an undirected " +"graph." +msgstr "" + +#, fuzzy +msgid "Result columns change:" +msgstr "結果として返却されるカラム" + +msgid "``n_seq`` is removed" +msgstr "" + +msgid "``seq`` changed type to ``BIGINT``" msgstr "" msgid "" -"wikipedia: `Biconnected component `__" +"The biconnected components of an undirected graph are the maximal subsets of " +"vertices such that the removal of a vertex from particular component will " +"not disconnect the component. Unlike connected components, vertices may " +"belong to multiple biconnected components. Vertices can be present in " +"multiple biconnected components, but each edge can only be contained in a " +"single biconnected component." msgstr "" -msgid "``pgr_bdAstar``" +msgid "Components are described by edges." msgstr "" -msgid "``pgr_bdAstar`` — Shortest path using the bidirectional A* algorithm." +msgid "``component`` ascending." msgstr "" -msgid "" -"``pgr_bdAstar`` (`One to One`_) added ``start_vid`` and ``end_vid`` columns." +msgid "``edge`` ascending." msgstr "" -msgid "``pgr_bdAstar`` (`One to Many`_) added ``end_vid`` column." +msgid "pgr_biconnectedComponents(`Edges SQL`_)" msgstr "" -msgid "``pgr_bdAstar`` (`Many to One`_) added ``start_vid`` column." +msgid "Returns set of |result-component-E|" msgstr "" -msgid "``pgr_bdAstar`` (`Combinations`_)" +msgid "The biconnected components of the graph" msgstr "" -msgid "``pgr_bdAstar`` (`One to Many`_)" +msgid "``component``" msgstr "" -msgid "``pgr_bdAstar`` (`Many to One`_)" +msgid "Component identifier." msgstr "" -msgid "``pgr_bdAstar`` (`Many to Many`_)" +msgid "Has the value of the minimum edge identifier in the component." msgstr "" -msgid "Signature change on ``pgr_bdAstar`` (`One to One`_)" +msgid "Identifier of the edge that belongs to the ``component``." msgstr "" -msgid "**Official** ``pgr_bdAstar`` (`One to One`_)" +msgid "``pgr_binaryBreadthFirstSearch`` - Experimental" msgstr "" msgid "" -"The results are equivalent to the union of the results of the `pgr_bdAStar(` " -"`One to One`_ `)` on the:" +"``pgr_binaryBreadthFirstSearch`` — Returns the shortest path in a binary " +"graph." msgstr "" -msgid "pgr_bdAstar(`Edges SQL`_, **start vid**, **end vid**, [**options**])" +msgid "" +"Any graph whose edge-weights belongs to the set {0,X}, where 'X' is any non-" +"negative integer, is termed as a 'binary graph'." msgstr "" -msgid "pgr_bdAstar(`Edges SQL`_, **start vid**, **end vids**, [**options**])" +msgid "pgr_binaryBreadthFirstSearch(Combinations)" msgstr "" -msgid "pgr_bdAstar(`Edges SQL`_, **start vids**, **end vid**, [**options**])" -msgstr "p" +msgid "" +"It is well-known that the shortest paths between a single source and all " +"other vertices can be found using Breadth First Search in :math:`O(|E|)` in " +"an unweighted graph, i.e. the distance is the minimal number of edges that " +"you need to traverse from the source to another vertex. We can interpret " +"such a graph also as a weighted graph, where every edge has the weight :math:" +"`1`. If not alledges in graph have the same weight, that we need a more " +"general algorithm, like Dijkstra's Algorithm which runs in :math:`O(|E|log|" +"V|)` time." +msgstr "" -msgid "pgr_bdAstar(`Edges SQL`_, **start vids**, **end vids**, [**options**])" +msgid "" +"However if the weights are more constrained, we can use a faster algorithm. " +"This algorithm, termed as 'Binary Breadth First Search' as well as '0-1 " +"BFS', is a variation of the standard Breadth First Search problem to solve " +"the SSSP (single-source shortest path) problem in :math:`O(|E|)`, if the " +"weights of each edge belongs to the set {0,X}, where 'X' is any non-negative " +"real integer." msgstr "" -msgid "pgr_bdAstar(`Edges SQL`_, `Combinations SQL`_, [**options**])" +msgid "" +"Process is done only on 'binary graphs'. ('Binary Graph': Any graph whose " +"edge-weights belongs to the set {0,X}, where 'X' is any non-negative real " +"integer.)" msgstr "" -msgid "pgr_bdAstarCost" +msgid "Running time: :math:`O(| start\\_vids | * |E|)`" msgstr "" msgid "" -"``pgr_bdAstarCost`` - Total cost of the shortest path using the " -"bidirectional A* algorithm." +"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vid**, **end vid**, " +"[``directed``])" msgstr "" -msgid "``pgr_bdAstarCost`` (`Combinations`_)" +msgid "" +"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vid**, **end vids**, " +"[``directed``])" msgstr "" msgid "" -"The ``pgr_bdAstarCost`` function sumarizes of the cost of the shortest path " -"using the bidirectional A* algorithm." +"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vids**, **end vid**, " +"[``directed``])" msgstr "" msgid "" -"pgr_bdAstarCost(`Edges SQL`_, **start vid**, **end vid**, [**options**])" +"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vids**, **end vids**, " +"[``directed``])" msgstr "" msgid "" -"pgr_bdAstarCost(`Edges SQL`_, **start vid**, **end vids**, [**options**])" +"pgr_binaryBreadthFirstSearch(`Edges SQL`_, `Combinations SQL`_, " +"[``directed``])" msgstr "" msgid "" -"pgr_bdAstarCost(`Edges SQL`_, **start vids**, **end vid**, [**options**])" +"**Note:** Using the :doc:`sampledata` Network as all weights are same (i.e :" +"math:`1``)" msgstr "" msgid "" -"pgr_bdAstarCost(`Edges SQL`_, **start vids**, **end vids**, [**options**])" +"`Boost: Breadth First Search `__" msgstr "" -msgid "pgr_bdAstarCost(`Edges SQL`_, `Combinations SQL`_, [**options**])" +msgid "https://cp-algorithms.com/graph/01_bfs.html" msgstr "" -msgid "``pgr_bdAstarCostMatrix``" +msgid "" +"https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm#Specialized_variants" +msgstr "" + +msgid "``pgr_bipartite`` - Experimental" msgstr "" msgid "" -"``pgr_bdAstarCostMatrix`` - Calculates the a cost matrix using :doc:" -"`pgr_aStar`." +"``pgr_bipartite`` — Disjoint sets of vertices such that no two vertices " +"within the same set are adjacent." msgstr "" -msgid "Using internaly the :doc:`pgr_bdAstar` algorithm" +msgid "" +"A bipartite graph is a graph with two sets of vertices which are connected " +"to each other, but not within themselves. A bipartite graph is possible if " +"the graph coloring is possible using two colors such that vertices in a set " +"are colored with the same color." msgstr "" -msgid "pgr_bdAstarCostMatrix(`Edges SQL`_, **start vids**, [**options**])" +msgid "The algorithm works in undirected graph only." msgstr "" -msgid "``pgr_bdDijkstra``" +msgid "The returned values are not ordered." msgstr "" msgid "" -"``pgr_bdDijkstra`` — Returns the shortest path using Bidirectional Dijkstra " -"algorithm." +"The algorithm checks graph is bipartite or not. If it is bipartite then it " +"returns the node along with two colors `0` and `1` which represents two " +"different sets." msgstr "" -msgid "pgr_bdDijkstra(`Combinations`_)" +msgid "If graph is not bipartite then algorithm returns empty set." msgstr "" -msgid "New **Proposed** functions:" +msgid "pgr_bipartite(`Edges SQL`_)" msgstr "" -msgid "``pgr_bdDijkstra`` (`One to Many`_)" +msgid "Returns set of |result-node-color|" msgstr "" -msgid "``pgr_bdDijkstra`` (`Many to One`_)" +msgid "When the graph is bipartite" msgstr "" -msgid "``pgr_bdDijkstra`` (`Many to Many`_)" +msgid "Additional Example" msgstr "" -msgid "Signature change on ``pgr_bdDijsktra`` (`One to One`_)" +msgid "The odd length cyclic graph can not be bipartite." msgstr "" -msgid "**Official** ``pgr_bdDijkstra`` (`One to One`_)" +msgid "" +"The edge :math:`5 \\rightarrow 1` will make subgraph with vertices :math:" +"`\\{1, 3, 7, 6, 5\\}` an odd length cyclic graph, as the cycle has 5 " +"vertices." msgstr "" -msgid "" -"pgr_bdDijkstra(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" +msgid "Edges in blue represent odd length cycle subgraph." msgstr "" msgid "" -"pgr_bdDijkstra(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" +"`Boost: is_bipartite `__" msgstr "" msgid "" -"pgr_bdDijkstra(`Edges SQL`_, **start vids**, **end vid**, [``directed``])" +"`Wikipedia: bipartite graph `__" msgstr "" -msgid "" -"pgr_bdDijkstra(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" +msgid "``pgr_boykovKolmogorov``" msgstr "" -msgid "pgr_bdDijkstra(`Edges SQL`_, `Combinations SQL`_, [``directed``])" +msgid "" +"``pgr_boykovKolmogorov`` — Calculates the flow on the graph edges that " +"maximizes the flow from the sources to the targets using Boykov Kolmogorov " +"algorithm." msgstr "" -msgid "Returns set of |old-generic-result|" +msgid "Renamed from ``pgr_maxFlowBoykovKolmogorov``" msgstr "" -msgid "Returns set of |result-1-1|" +msgid "Function promoted to proposed." msgstr "" -msgid "From vertex :math:`6` to vertex :math:`10` on a **directed** graph" +msgid "Running time: Polynomial" msgstr "" -msgid "Returns set of |result-1-m|" +msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vid**, **end vid**)" msgstr "" -msgid "" -"From vertex :math:`6` to vertices :math:`\\{10, 17\\}` on a **directed** " -"graph" +msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vid**, **end vids**)" msgstr "" -msgid "Returns set of |result-m-1|" +msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vids**, **end vid**)" msgstr "" -msgid "" -"From vertices :math:`\\{6, 1\\}` to vertex :math:`17` on a **directed** graph" +msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vids**, **end vids**)" msgstr "" -msgid "" -"From vertices :math:`\\{6, 1\\}` to vertices :math:`\\{10, 17\\}` on an " -"**undirected** graph" +msgid "pgr_boykovKolmogorov(`Edges SQL`_, `Combinations SQL`_)" msgstr "" -msgid "Using a combinations table on an **undirected** graph" +msgid "Returns set of |result-flow|" msgstr "" -msgid "" -"https://www.cs.princeton.edu/courses/archive/spr06/cos423/Handouts/" -"EPP%20shortest%20path%20algorithms.pdf" +msgid "From vertex :math:`11` to vertex :math:`12`" msgstr "" -msgid "https://en.wikipedia.org/wiki/Bidirectional_search" +msgid "From vertex :math:`11` to vertices :math:`\\{5, 10, 12\\}`" msgstr "" -msgid "``pgr_bdDijkstraCost``" +msgid "From vertices :math:`\\{11, 3, 17\\}` to vertex :math:`12`" msgstr "" msgid "" -"``pgr_bdDijkstraCost`` — Returns the shortest path's cost using " -"Bidirectional Dijkstra algorithm." +"From vertices :math:`\\{11, 3, 17\\}` to vertices :math:`\\{5, 10, 12\\}`" msgstr "" -msgid "``pgr_bdDijkstraCost`` (`Combinations`_)" +msgid "" +"Using a combinations table, equivalent to calculating result from vertices :" +"math:`\\{5, 6\\}` to vertices :math:`\\{10, 15, 14\\}`." msgstr "" msgid "" -"The ``pgr_bdDijkstraCost`` function sumarizes of the cost of the shortest " -"path using the bidirectional Dijkstra Algorithm." +"`Boost: Boykov Kolmogorov max flow `__" msgstr "" -msgid "" -"pgr_bdDijkstraCost(`Edges SQL`_, **start vid**, **end vid** , [``directed``])" +msgid "``pgr_breadthFirstSearch`` - Experimental" msgstr "" msgid "" -"pgr_bdDijkstraCost(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" +"``pgr_breadthFirstSearch`` — Returns the traversal order(s) using Breadth " +"First Search algorithm." msgstr "" msgid "" -"pgr_bdDijkstraCost(`Edges SQL`_, **start vids**, **end vid** , " -"[``directed``])" +"Provides the Breadth First Search traversal order from a root vertex to a " +"particular depth." +msgstr "" + +msgid "The implementation will work on any type of graph." msgstr "" msgid "" -"pgr_bdDijkstraCost(`Edges SQL`_, **start vids**, **end vids**, " -"[``directed``])" +"Provides the Breadth First Search traversal order from a source node to a " +"target depth level." msgstr "" -msgid "pgr_bdDijkstraCost(`Edges SQL`_, `Combinations SQL`_, [ ``directed``])" +msgid "Running time: :math:`O(E + V)`" msgstr "" -msgid "pgr_bdDijkstraCost(`Edges SQL`_, `Combinations SQL`_, [``directed``])" +msgid "pgr_breadthFirstSearch(`Edges SQL`_, **root vid**, [**options**])" msgstr "" -msgid "``pgr_bdDijkstraCostMatrix``" +msgid "pgr_breadthFirstSearch(`Edges SQL`_, **root vids**, [**options**])" msgstr "" -msgid "" -"``pgr_bdDijkstraCostMatrix`` - Calculates a cost matrix using :doc:" -"`pgr_bdDijkstra`." +msgid "**options:** ``[max_depth, directed]``" msgstr "" -msgid "" -"Using bidirectional Dijkstra algorithm, calculate and return a cost matrix." +msgid "Returns set of |result-bfs|" msgstr "" -msgid "pgr_bdDijkstraCostMatrix(`Edges SQL`_, **start vids**, [``directed``])" +msgid "" +"From root vertex :math:`6` on a **directed** graph with edges in ascending " +"order of ``id``" msgstr "" msgid "" -"Symmetric cost matrix for vertices :math:`\\{5, 6, 10, 15\\}` on an " -"**undirected** graph" +"From root vertices :math:`\\{12, 6\\}` on an **undirected** graph with " +"**depth** :math:`<= 2` and edges in ascending order of ``id``" msgstr "" -msgid "Use with :doc:`pgr_TSP`." +msgid "DFS optional parameters" msgstr "" -msgid "``pgr_bellmanFord - Experimental``" +msgid "Same as `Single vertex`_ with edges in ascending order of ``id``." msgstr "" -msgid "``pgr_bellmanFord`` — Shortest path using Bellman-Ford algorithm." +msgid "Same as `Single vertex`_ with edges in descending order of ``id``." msgstr "" -msgid "New **experimental** signature:" +msgid "The resulting traversal is different." msgstr "" -msgid "``pgr_bellmanFord`` (`Combinations`_)" +msgid "" +"The left image shows the result with ascending order of ids and the right " +"image shows with descending order of the edge identifiers." msgstr "" -msgid "New **experimental** signatures:" +msgid "|ascending| |descending|" msgstr "" -msgid "``pgr_bellmanFord`` (`One to One`_)" +msgid "ascending" msgstr "" -msgid "``pgr_bellmanFord`` (`One to Many`_)" +msgid "descending" msgstr "" -msgid "``pgr_bellmanFord`` (`Many to One`_)" +msgid "" +"`Wikipedia: Breadth First Search algorithm `__" msgstr "" -msgid "``pgr_bellmanFord`` (`Many to Many`_)" +msgid "``pgr_bridges``" msgstr "" -msgid "" -"Bellman-Ford's algorithm, is named after Richard Bellman and Lester Ford, " -"who first published it in 1958 and 1956, respectively.It is a graph search " -"algorithm that computes shortest paths from a starting vertex " -"(``start_vid``) to an ending vertex (``end_vid``) in a graph where some of " -"the edge weights may be negative. Though it is more versatile, it is slower " -"than Dijkstra's algorithm.This implementation can be used with a directed " -"graph and an undirected graph." +msgid "``pgr_bridges`` - Return the bridges of an undirected graph." msgstr "" msgid "" -"Process is valid for edges with both positive and negative edge weights." +"A bridge is an edge of an undirected graph whose deletion increases its " +"number of connected components. This implementation can only be used with an " +"undirected graph." msgstr "" -msgid "" -"When the start vertex and the end vertex are the same, there is no path. The " -"agg_cost would be :math:`0`." +msgid "``edge`` ascending" msgstr "" -msgid "" -"When the start vertex and the end vertex are different, and there exists a " -"path between them without having a *negative cycle*. The agg_cost would be " -"some finite value denoting the shortest distance between them." +msgid "Running time: :math:`O(E * (V + E))`" msgstr "" -msgid "" -"When the start vertex and the end vertex are different, and there exists a " -"path between them, but it contains a *negative cycle*. In such case, " -"agg_cost for those vertices keep on decreasing furthermore, Hence agg_cost " -"can’t be defined for them." +msgid "pgr_bridges(`Edges SQL`_)" msgstr "" -msgid "" -"When the start vertex and the end vertex are different, and there is no " -"path. The agg_cost is :math:`\\infty`." +msgid "Returns set of |result-edge|" msgstr "" -msgid "" -"For optimization purposes, any duplicated value in the `start_vids` or " -"`end_vids` are ignored." +msgid "The bridges of the graph" msgstr "" -msgid "Running time: :math:`O(| start\\_vids | * ( V * E))`" +msgid "Identifier of the edge that is a bridge." msgstr "" -msgid "" -"pgr_bellmanFord(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" +msgid "https://en.wikipedia.org/wiki/Bridge_%28graph_theory%29" msgstr "" msgid "" -"pgr_bellmanFord(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" +"`Boost: Connected components `__" msgstr "" -msgid "" -"pgr_bellmanFord(`Edges SQL`_, **start vids**, **end vid**, [``directed``])" +msgid "``pgr_chinesePostman`` - Experimental" msgstr "" msgid "" -"pgr_bellmanFord(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" +"``pgr_chinesePostman`` — Calculates the shortest circuit path which contains " +"every edge in a directed graph and starts and ends on the same vertex." msgstr "" -msgid "pgr_bellmanFord(`Edges SQL`_, `Combinations SQL`_, [``directed``])" +msgid "Returns ``EMPTY SET`` on a disconnected graph" msgstr "" -msgid "" -"From vertex :math:`6` to vertices :math:`\\{ 10, 17\\}` on a **directed** " -"graph" +msgid "pgr_chinesePostman(`Edges SQL`_)" msgstr "" -msgid "Using a combinations table on an **undirected** graph." +msgid "Returns set of |result-1-1-no-seq|" msgstr "" -msgid "https://en.wikipedia.org/wiki/Bellman%E2%80%93Ford_algorithm" +msgid "Returns set of ``(seq, node, edge, cost, agg_cost)``" msgstr "" -msgid "``pgr_betweennessCentrality``" +msgid "Sequential value starting from ``1``" msgstr "" msgid "" -"``pgr_betweennessCentrality`` - Calculates the relative betweeness " -"centrality using Brandes Algorithm" +"Identifier of the edge used to go from ``node`` to the next node in the path " +"sequence. ``-1`` for the last node of the path." msgstr "" -#, fuzzy -msgid "Version 3.7.0" -msgstr "バージョン 3.0.0" - -msgid "New **experimental** function:" +msgid "Aggregate cost from ``start_v`` to ``node``." msgstr "" -msgid "" -"The Brandes Algorithm takes advantage of the sparse graphs for evaluating " -"the betweenness centrality score of all vertices." +msgid "``pgr_chinesePostmanCost`` - Experimental" msgstr "" msgid "" -"Betweenness centrality measures the extent to which a vertex lies on the " -"shortest paths between all other pairs of vertices. Vertices with a high " -"betweenness centrality score may have considerable influence in a network by " -"the virtue of their control over the shortest paths passing between them." +"``pgr_chinesePostmanCost`` — Calculates the minimum costs of a circuit path " +"which contains every edge in a directed graph and starts and ends on the " +"same vertex." msgstr "" -msgid "" -"The removal of these vertices will affect the network by disrupting the it, " -"as most of the shortest paths between vertices pass through them." +msgid "Return value when the graph if disconnected" msgstr "" -#, fuzzy -msgid "This implementation work for both directed and undirected graphs." -msgstr "導かれないグラフ。" - -msgid "Running time: :math:`\\Theta(VE)`" +msgid "pgr_chinesePostmanCost(`Edges SQL`_)" msgstr "" -msgid "Running space: :math:`\\Theta(VE)`" +msgid "RETURNS ``FLOAT``" msgstr "" -msgid "Throws when there are no edges in the graph" +msgid "``pgr_chinesepostmancost``" msgstr "" -#, fuzzy -msgid "pgr_betweennessCentrality(`Edges SQL`_, [``directed``])" -msgstr "p" +msgid "Minimum costs of a circuit path." +msgstr "" -#, fuzzy -msgid "Returns set of ``(vid, centrality)``" -msgstr "``(seq, node, cost, agg_cost)`` の1セットを返却します" +msgid "``pgr_connectedComponents``" +msgstr "" -msgid "For a directed graph with edges :math:`\\{1, 2, 3, 4\\}`." +msgid "" +"``pgr_connectedComponents`` — Connected components of an undirected graph " +"using a DFS-based approach." msgstr "" -msgid "Explanation" +msgid "" +"A connected component of an undirected graph is a set of vertices that are " +"all reachable from each other." msgstr "" -msgid "The betweenness centrality are between parenthesis." +msgid "Components are described by vertices" msgstr "" -msgid "The leaf vertices have betweenness centrality :math:`0`." +msgid "``component`` ascending" msgstr "" -msgid "" -"Betweenness centrality of vertex :math:`6` is higher than of vertex :math:" -"`10`." +msgid "pgr_connectedComponents(`Edges SQL`_)" msgstr "" -msgid "Removing vertex :math:`6` will create three graph components." +msgid "Returns set of |result-component-V|" msgstr "" -msgid "Removing vertex :math:`10` will create two graph components." +msgid "The connected components of the graph" msgstr "" -msgid "``vid``" +msgid "Has the value of the minimum node identifier in the component." msgstr "" -msgid "``centrality``" +msgid "Identifier of the vertex that belongs to the ``component``." msgstr "" -msgid "" -"Relative betweenness centrality score of the vertex (will be in range [0,1])" +msgid "Connecting disconnected components" msgstr "" msgid "" -"Boost's `betweenness_centrality `_" +"wikipedia: `Connected component `__" msgstr "" -#, fuzzy -msgid "Queries use the :doc:`sampledata` network." -msgstr "クエリは :doc:`sampledata` ネットワークを使用します。" - -msgid "``pgr_biconnectedComponents``" +msgid "``pgr_contraction``" msgstr "" msgid "" -"``pgr_biconnectedComponents`` — Biconnected components of an undirected " -"graph." +"``pgr_contraction`` — Performs graph contraction and returns the contracted " +"vertices and edges." msgstr "" #, fuzzy -msgid "Result columns change:" -msgstr "結果として返却されるカラム" +msgid "Version 3.8.0" +msgstr "バージョン 3.0.0" -msgid "``n_seq`` is removed" -msgstr "" +#, fuzzy +msgid "New signature:" +msgstr "機能" -msgid "``seq`` changed type to ``BIGINT``" +msgid "" +"Previously compulsory parameter **Contraction order** is now optional with " +"name ``methods``." msgstr "" +#, fuzzy +msgid "New name and order of optional parameters." +msgstr "オプションとなるパラメータ" + msgid "" -"The biconnected components of an undirected graph are the maximal subsets of " -"vertices such that the removal of a vertex from particular component will " -"not disconnect the component. Unlike connected components, vertices may " -"belong to multiple biconnected components. Vertices can be present in " -"multiple biconnected components, but each edge can only be contained in a " -"single biconnected component." +"Deprecated signature pgr_contraction(text,bigint[],integer,bigint[],boolean)" msgstr "" -msgid "Components are described by edges." +msgid "Name change from ``pgr_contractGraph``" msgstr "" -msgid "``component`` ascending." +msgid "Bug fixes" msgstr "" -msgid "``edge`` ascending." +msgid "" +"Contraction reduces the size of the graph by removing some of the vertices " +"and edges and, for example, might add edges that represent a sequence of " +"original edges decreasing the total time and space used in graph algorithms." msgstr "" -msgid "pgr_biconnectedComponents(`Edges SQL`_)" +#, fuzzy +msgid "Does not return the full contracted graph." +msgstr "次のクエリを実行します。" + +msgid "Only changes on the graph are returned." msgstr "" -msgid "Returns set of |result-component-E|" +msgid "The returned values include:" msgstr "" -msgid "The biconnected components of the graph" +msgid "The new edges generated by linear contraction." msgstr "" -msgid "``component``" +msgid "The modified vertices generated by dead end contraction." msgstr "" -msgid "Component identifier." +msgid "The returned values are ordered as follows:" msgstr "" -msgid "Has the value of the minimum edge identifier in the component." +msgid "column ``id`` ascending when its a modified vertex." msgstr "" -msgid "Identifier of the edge that belongs to the ``component``." +msgid "column ``id`` with negative numbers descending when its a new edge." msgstr "" msgid "" -"Boost: `Biconnected components `__" +"Currently there are two types of contraction methods included in this " +"function:" msgstr "" -msgid "``pgr_binaryBreadthFirstSearch`` - Experimental" +msgid "Dead End Contraction. See :doc:`pgr_contractionDeadEnd`." msgstr "" -msgid "" -"``pgr_binaryBreadthFirstSearch`` — Returns the shortest path in a binary " -"graph." +msgid "Linear Contraction. See :doc:`pgr_contractionLinear`." msgstr "" -msgid "" -"Any graph whose edge-weights belongs to the set {0,X}, where 'X' is any non-" -"negative integer, is termed as a 'binary graph'." +#, fuzzy +msgid "pgr_contraction(`Edges SQL`_, [**options**])" +msgstr "pg" + +msgid "**options:** ``[directed, methods, cycles, forbidden]``" msgstr "" -msgid "pgr_binaryBreadthFirstSearch(`Combinations`_)" +msgid "Returns set of |result-contract|" msgstr "" -msgid "pgr_binaryBreadthFirstSearch(`One to One`_)" +#, fuzzy +msgid "Dead end and linear contraction in that order on an undirected graph." +msgstr "導かれないグラフ。" + +msgid "Contraction optional parameters" msgstr "" -msgid "pgr_binaryBreadthFirstSearch(`One to Many`_)" +msgid "``methods``" msgstr "" -msgid "pgr_binaryBreadthFirstSearch(`Many to One`_)" +#, fuzzy +msgid "``INTEGER[]``" +msgstr "``INTEGER``" + +msgid "``ARRAY[1,2]``" msgstr "" -msgid "pgr_binaryBreadthFirstSearch(`Many to Many`_)" +msgid "Ordered contraction operations." msgstr "" -msgid "" -"It is well-known that the shortest paths between a single source and all " -"other vertices can be found using Breadth First Search in :math:`O(|E|)` in " -"an unweighted graph, i.e. the distance is the minimal number of edges that " -"you need to traverse from the source to another vertex. We can interpret " -"such a graph also as a weighted graph, where every edge has the weight :math:" -"`1`. If not alledges in graph have the same weight, that we need a more " -"general algorithm, like Dijkstra's Algorithm which runs in :math:`O(|E|log|" -"V|)` time." +msgid "1 = Dead end contraction" msgstr "" -msgid "" -"However if the weights are more constrained, we can use a faster algorithm. " -"This algorithm, termed as 'Binary Breadth First Search' as well as '0-1 " -"BFS', is a variation of the standard Breadth First Search problem to solve " -"the SSSP (single-source shortest path) problem in :math:`O(|E|)`, if the " -"weights of each edge belongs to the set {0,X}, where 'X' is any non-negative " -"real integer." +msgid "2 = Linear contraction" msgstr "" -msgid "" -"Process is done only on 'binary graphs'. ('Binary Graph': Any graph whose " -"edge-weights belongs to the set {0,X}, where 'X' is any non-negative real " -"integer.)" +msgid "``cycles``" msgstr "" -msgid "Running time: :math:`O(| start\\_vids | * |E|)`" +msgid ":math:`1`" msgstr "" -msgid "" -"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vid**, **end vid**, " -"[``directed``])" +msgid "Number of times the contraction methods will be performed." msgstr "" -msgid "" -"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vid**, **end vids**, " -"[``directed``])" +msgid "``forbidden``" msgstr "" -msgid "" -"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vids**, **end vid**, " -"[``directed``])" +msgid "``BIGINT[]``" msgstr "" -msgid "" -"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vids**, **end vids**, " -"[``directed``])" +#, fuzzy +msgid "``ARRAY[]::BIGINT[]``" +msgstr "``BIGINT``" + +msgid "Identifiers of vertices forbidden for contraction." msgstr "" -msgid "" -"pgr_binaryBreadthFirstSearch(`Edges SQL`_, `Combinations SQL`_, " -"[``directed``])" +msgid "The function returns a single row. The columns of the row are:" msgstr "" -msgid "" -"**Note:** Using the :doc:`sampledata` Network as all weights are same (i.e :" -"math:`1``)" +msgid "``type``" msgstr "" -msgid "https://cp-algorithms.com/graph/01_bfs.html" +msgid "Type of the row." msgstr "" -msgid "" -"https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm#Specialized_variants" +msgid "``v`` when the row is a vertex." msgstr "" -msgid "pgr_bipartite -Experimental" +msgid "Column ``id`` has a positive value." msgstr "" -msgid "" -"``pgr_bipartite`` — Disjoint sets of vertices such that no two vertices " -"within the same set are adjacent." +msgid "``e`` when the row is an edge." msgstr "" -msgid "New **experimental** signature" +msgid "Column ``id`` has a negative value." msgstr "" -msgid "" -"A bipartite graph is a graph with two sets of vertices which are connected " -"to each other, but not within themselves. A bipartite graph is possible if " -"the graph coloring is possible using two colors such that vertices in a set " -"are colored with the same color." +msgid "All numbers on this column are ``DISTINCT``" msgstr "" -msgid "The algorithm works in undirected graph only." +msgid "When ``type`` = **'v'**." msgstr "" -msgid "The returned values are not ordered." +msgid "Identifier of the modified vertex." msgstr "" -msgid "" -"The algorithm checks graph is bipartite or not. If it is bipartite then it " -"returns the node along with two colors `0` and `1` which represents two " -"different sets." +msgid "When ``type`` = **'e'**." msgstr "" -msgid "If graph is not bipartite then algorithm returns empty set." +msgid "Decreasing sequence starting from **-1**." msgstr "" -msgid "pgr_bipartite(`Edges SQL`_)" +msgid "" +"Representing a pseudo `id` as is not incorporated in the set of original " +"edges." msgstr "" -msgid "Returns set of |result-node-color|" +msgid "``contracted_vertices``" msgstr "" -msgid "When the graph is bipartite" +msgid "Array of contracted vertex identifiers." msgstr "" -msgid "Additional Example" +msgid "When ``type`` = **'v'**: :math:`-1`" msgstr "" -msgid "The odd length cyclic graph can not be bipartite." +msgid "" +"When ``type`` = **'e'**: Identifier of the source vertex of the current edge " +"(``source``, ``target``)." msgstr "" msgid "" -"The edge :math:`5 \\rightarrow 1` will make subgraph with vertices :math:" -"`\\{1, 3, 7, 6, 5\\}` an odd length cyclic graph, as the cycle has 5 " -"vertices." +"When ``type`` = **'e'**: Identifier of the target vertex of the current edge " +"(``source``, ``target``)." msgstr "" -msgid "Edges in blue represent odd length cycle subgraph." +msgid "" +"When ``type`` = **'e'**: Weight of the current edge (``source``, ``target``)." msgstr "" -msgid "``pgr_boykovKolmogorov``" +msgid "Only dead end contraction" msgstr "" -msgid "" -"``pgr_boykovKolmogorov`` — Calculates the flow on the graph edges that " -"maximizes the flow from the sources to the targets using Boykov Kolmogorov " -"algorithm." +msgid "Only linear contraction" msgstr "" -msgid "New **proposed** signature" +msgid "The cycle" msgstr "" -msgid "``pgr_boykovKolmogorov`` (`Combinations`_)" +msgid "" +"Contracting a graph can be done with more than one operation. The order of " +"the operations affect the resulting contracted graph, after applying one " +"operation, the set of vertices that can be contracted by another operation " +"changes." msgstr "" -msgid "Renamed from ``pgr_maxFlowBoykovKolmogorov``" +msgid "This implementation cycles ``cycles`` times through the ``methods`` ." msgstr "" -msgid "**Proposed** function" +msgid "Contracting sample data" msgstr "" -msgid "New **Experimental** function" +msgid "" +"In this section, building and using a contracted graph will be shown by " +"example." msgstr "" -msgid "Running time: Polynomial" +msgid "The :doc:`sampledata` for an undirected graph is used" msgstr "" -msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vid**, **end vid**)" +msgid "a dead end operation first followed by a linear operation." msgstr "" -msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vid**, **end vids**)" +msgid "Construction of the graph in the database" msgstr "" -msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vids**, **end vid**)" +msgid "The original graph:" msgstr "" -msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vids**, **end vids**)" +msgid "" +"The results do not represent the contracted graph. They represent the " +"changes that need to be done to the graph after applying the contraction " +"methods." msgstr "" -msgid "pgr_boykovKolmogorov(`Edges SQL`_, `Combinations SQL`_)" +msgid "" +"Observe that vertices, for example, :math:`6` do not appear in the results " +"because it was not affected by the contraction algorithm." msgstr "" -msgid "Returns set of |result-flow|" +msgid "After doing the dead end contraction operation:" msgstr "" -msgid "From vertex :math:`11` to vertex :math:`12`" +msgid "After doing the linear contraction operation to the graph above:" msgstr "" -msgid "From vertex :math:`11` to vertices :math:`\\{5, 10, 12\\}`" +msgid "The process to create the contraction graph on the database:" msgstr "" -msgid "From vertices :math:`\\{11, 3, 17\\}` to vertex :math:`12`" +msgid "Add additional columns" msgstr "" msgid "" -"From vertices :math:`\\{11, 3, 17\\}` to vertices :math:`\\{5, 10, 12\\}`" +"Adding extra columns to the edges and vertices tables. In this documentation " +"the following will be used:" msgstr "" -msgid "" -"Using a combinations table, equivalent to calculating result from vertices :" -"math:`\\{5, 6\\}` to vertices :math:`\\{10, 15, 14\\}`." +#, fuzzy +msgid "Column." +msgstr "カラム" + +msgid "The vertices set belonging to the vertex/edge" msgstr "" -msgid "https://www.boost.org/libs/graph/doc/boykov_kolmogorov_max_flow.html" +msgid "``is_contracted``" msgstr "" -msgid "``pgr_breadthFirstSearch`` - Experimental" +msgid "On the vertex table" msgstr "" msgid "" -"``pgr_breadthFirstSearch`` — Returns the traversal order(s) using Breadth " -"First Search algorithm." +"when ``true`` the vertex is contracted, its not part of the contracted graph." msgstr "" -msgid "``pgr_breadthFirstSearch`` (`Single Vertex`_)" +msgid "" +"when ``false`` the vertex is not contracted, its part of the contracted " +"graph." msgstr "" -msgid "``pgr_breadthFirstSearch`` (`Multiple Vertices`_)" +msgid "``is_new``" msgstr "" -msgid "" -"Provides the Breadth First Search traversal order from a root vertex to a " -"particular depth." +msgid "On the edge table" msgstr "" -msgid "The implementation will work on any type of graph." +msgid "" +"when ``true`` the edge was generated by the contraction algorithm. its part " +"of the contracted graph." msgstr "" msgid "" -"Provides the Breadth First Search traversal order from a source node to a " -"target depth level." +"when ``false`` the edge is an original edge, might be or not part of the " +"contracted graph." msgstr "" -msgid "Running time: :math:`O(E + V)`" +msgid "Store contraction information" msgstr "" -msgid "pgr_breadthFirstSearch(`Edges SQL`_, **root vid**, [**options**])" +msgid "Store the contraction results in a table." msgstr "" -msgid "pgr_breadthFirstSearch(`Edges SQL`_, **root vids**, [**options**])" +msgid "Update the edges and vertices tables" msgstr "" -msgid "**options:** ``[max_depth, directed]``" +msgid "" +"Use ``is_contracted`` column to indicate the vertices that are contracted." msgstr "" -msgid "Returns set of |result-bfs|" +msgid "" +"Fill ``contracted_vertices`` with the information from the results that " +"belong to the vertices." msgstr "" -msgid "" -"From root vertex :math:`6` on a **directed** graph with edges in ascending " -"order of ``id``" +msgid "Insert the new edges generated by pgr_contraction." msgstr "" -msgid "" -"From root vertices :math:`\\{12, 6\\}` on an **undirected** graph with " -"**depth** :math:`<= 2` and edges in ascending order of ``id``" +msgid "The contracted graph" msgstr "" -msgid "DFS optional parameters" +msgid "Vertices that belong to the contracted graph." msgstr "" -msgid "Same as `Single vertex`_ with edges in ascending order of ``id``." +msgid "Edges that belong to the contracted graph." msgstr "" -msgid "Same as `Single vertex`_ with edges in descending order of ``id``." +msgid "Visually:" msgstr "" -msgid "The resulting traversal is different." +msgid "Using the contracted graph" msgstr "" msgid "" -"The left image shows the result with ascending order of ids and the right " -"image shows with descending order of the edge identifiers." +"Depending on the final application the graph is to be prepared. In this " +"example the final application will be to calculate the cost from two " +"vertices in the original graph by using the contracted graph with " +"``pgr_dijkstraCost``" msgstr "" -msgid "|ascending| |descending|" +msgid "" +"There are three cases when calculating the shortest path between a given " +"source and target in a contracted graph:" msgstr "" -msgid "ascending" +msgid "Case 1: Both source and target belong to the contracted graph." msgstr "" -msgid "descending" +msgid "Case 2: Source and/or target belong to an edge subgraph." msgstr "" -msgid "" -"`Boost: Breadth First Search algorithm documentation `__" +msgid "Case 3: Source and/or target belong to a vertex." msgstr "" -msgid "" -"`Wikipedia: Breadth First Search algorithm `__" +msgid "The final application should consider all of those cases." msgstr "" -msgid "``pgr_bridges``" +msgid "Create a view (or table) of the contracted graph:" msgstr "" -msgid "``pgr_bridges`` - Return the bridges of an undirected graph." +msgid "Create the function that will use the contracted graph." msgstr "" msgid "" -"A bridge is an edge of an undirected graph whose deletion increases its " -"number of connected components. This implementation can only be used with an " -"undirected graph." +"Case 2: Source and/or target belong to an edge that has contracted vertices." msgstr "" -msgid "``edge`` ascending" +msgid "" +"Case 3: Source and/or target belong to a vertex that has been contracted." msgstr "" -msgid "Running time: :math:`O(E * (V + E))`" +msgid "``pgr_contractionDeadEnd`` - Proposed" msgstr "" -msgid "pgr_bridges(`Edges SQL`_)" +msgid "" +"``pgr_contractionDeadEnd`` — Performs graph contraction and returns the " +"contracted vertices and edges." msgstr "" -msgid "Returns set of |result-edge|" +msgid "A node is considered a dead end node when:" msgstr "" -msgid "The bridges of the graph" +msgid "On undirected graphs:" msgstr "" -msgid "Identifier of the edge that is a bridge." +msgid "The number of adjacent vertices is 1." msgstr "" -msgid "https://en.wikipedia.org/wiki/Bridge_%28graph_theory%29" +msgid "On directed graphs:" msgstr "" -msgid "**Supported versions**" +msgid "When there is only one adjacent vertex or" msgstr "" -msgid "``pgr_chinesePostman`` - Experimental" +msgid "" +"When all edges are incoming regardless of the number of adjacent vertices." msgstr "" -msgid "" -"``pgr_chinesePostman`` — Calculates the shortest circuit path which contains " -"every edge in a directed graph and starts and ends on the same vertex." +msgid "pgr_contractionDeadEnd(`Edges SQL`_, [**options**])" msgstr "" -msgid "Returns ``EMPTY SET`` on a disconnected graph" +msgid "**options:** ``[directed, forbidden_vertices]``" msgstr "" -msgid "pgr_chinesePostman(`Edges SQL`_)" +#, fuzzy +msgid "Dead end contraction on an undirected graph." +msgstr "導かれないグラフ。" + +msgid "The green nodes are dead end nodes." msgstr "" -msgid "Returns set of |result-1-1-no-seq|" +msgid "Node :math:`3` is a dead end node after node :math:`1` is contracted." msgstr "" -msgid "Returns set of ``(seq, node, edge, cost, agg_cost)``" +msgid "``forbidden_vertices``" msgstr "" -msgid "Sequential value starting from ``1``" +msgid "``ARRAY[`` |ANY-INTEGER| ``]``" msgstr "" -msgid "" -"Identifier of the edge used to go from ``node`` to the next node in the path " -"sequence. ``-1`` for the last node of the path." +msgid "**Empty**" msgstr "" -msgid "Aggregate cost from ``start_v`` to ``node``." +msgid "Value = ``e`` indicating the row is an edge." msgstr "" -msgid "``pgr_chinesePostmanCost`` - Experimental" +msgid "A pseudo `id` of the edge." msgstr "" -msgid "" -"``pgr_chinesePostmanCost`` — Calculates the minimum costs of a circuit path " -"which contains every edge in a directed graph and starts and ends on the " -"same vertex." +msgid "Identifier of the source vertex of the current edge." msgstr "" -msgid "Return value when the graph if disconnected" +msgid "Identifier of the target vertex of the current edge." msgstr "" -msgid "pgr_chinesePostmanCost(`Edges SQL`_)" +msgid "Weight of the current edge." msgstr "" -msgid "RETURNS ``FLOAT``" +msgid "Dead end vertex on undirected graph" msgstr "" -msgid "``pgr_chinesepostmancost``" +msgid "They have only one adjacent node." msgstr "" -msgid "Minimum costs of a circuit path." +msgid "Dead end vertex on directed graph" msgstr "" -msgid "pgr_connectedComponents" +msgid "The green nodes are dead end nodes" msgstr "" msgid "" -"``pgr_connectedComponents`` — Connected components of an undirected graph " -"using a DFS-based approach." +"The blue nodes have an unlimited number of incoming and/or outgoing edges." msgstr "" -msgid "" -"A connected component of an undirected graph is a set of vertices that are " -"all reachable from each other." +msgid "Node" msgstr "" -msgid "Components are described by vertices" +msgid "Adjacent nodes" msgstr "" -msgid "``component`` ascending" +msgid "Dead end" msgstr "" -msgid "pgr_connectedComponents(`Edges SQL`_)" +msgid "Reason" msgstr "" -msgid "Returns set of |result-component-V|" -msgstr "" +#, fuzzy +msgid ":math:`6`" +msgstr ":math:`9`" -msgid "The connected components of the graph" +#, fuzzy +msgid ":math:`\\{1\\}`" +msgstr ":math:`9`" + +#, fuzzy +msgid "Yes" +msgstr "はい" + +msgid "Has only one adjacent node." msgstr "" -msgid "Has the value of the minimum node identifier in the component." +#, fuzzy +msgid ":math:`7`" +msgstr ":math:`9`" + +#, fuzzy +msgid ":math:`\\{2\\}`" +msgstr ":math:`9`" + +#, fuzzy +msgid ":math:`8`" +msgstr ":math:`9`" + +#, fuzzy +msgid ":math:`\\{2, 3\\}`" +msgstr ":math:`9`" + +msgid "Has more than one adjacent node and all edges are incoming." msgstr "" -msgid "Identifier of the vertex that belongs to the ``component``." +#, fuzzy +msgid ":math:`\\{4\\}`" +msgstr ":math:`9`" + +#, fuzzy +msgid ":math:`10`" +msgstr ":math:`9`" + +#, fuzzy +msgid ":math:`\\{4, 5\\}`" +msgstr ":math:`9`" + +msgid "No" msgstr "" -msgid "Connecting disconnected components" +msgid "Has more than one adjacent node and all edges are outgoing." msgstr "" -msgid "" -"Boost: `Connected components `__" +#, fuzzy +msgid ":math:`1,2,3,4,5`" +msgstr ":math:`9`" + +msgid "Many adjacent nodes." msgstr "" msgid "" -"wikipedia: `Connected component `__" +"Has more than one adjacent node and some edges are incoming and some are " +"outgoing." msgstr "" -msgid "``pgr_contraction``" +msgid "" +"From above, nodes :math:`\\{6, 7, 9\\}` are dead ends because the total " +"number of adjacent vertices is one." msgstr "" msgid "" -"``pgr_contraction`` — Performs graph contraction and returns the contracted " -"vertices and edges." +"When there are more than one adjacent vertex, all edges need to be all " +"incoming edges otherwise it is not a dead end." msgstr "" -msgid "Name change from ``pgr_contractGraph``" +msgid "Step by step dead end contraction" msgstr "" -msgid "Bug fixes" +msgid "" +"The dead end contraction will stop until there are no more dead end nodes. " +"For example, from the following graph where :math:`3` is the dead end node:" msgstr "" msgid "" -"Contraction reduces the size of the graph by removing some of the vertices " -"and edges and, for example, might add edges that represent a sequence of " -"original edges decreasing the total time and space used in graph algorithms." +"After contracting :math:`3`, node :math:`2` is now a dead end node and is " +"contracted:" msgstr "" -msgid "Does not return the full contracted graph" +msgid "" +"After contracting :math:`2`, stop. Node :math:`1` has the information of " +"nodes that were contracted." msgstr "" -msgid "Only changes on the graph are returned" -msgstr "" +#, fuzzy +msgid "Creating the contracted graph" +msgstr "次のクエリを実行します。" -msgid "Currnetly there are two types of contraction methods" +msgid "Steps for the creation of the contracted graph" msgstr "" -msgid "Dead End Contraction" -msgstr "" +#, fuzzy +msgid "Add additional columns." +msgstr "追加の具体例" -msgid "Linear Contraction" +msgid "Save results into a table." msgstr "" -msgid "The returned values include" +msgid "The contracted vertices are not part of the contracted graph." msgstr "" -msgid "the added edges by linear contraction." +msgid "Using when departure and destination are in the contracted graph" msgstr "" -msgid "the modified vertices by dead end contraction." +msgid "Using when departure/destination is not in the contracted graph" msgstr "" -msgid "The returned values are ordered as follows:" +msgid "Using when departure and destination are not in the contracted graph" msgstr "" -msgid "column ``id`` ascending when type is ``v``" +msgid "``pgr_contractionLinear`` - Proposed" msgstr "" -msgid "column ``id`` descending when type is ``e``" +msgid "" +"``pgr_contractionLinear`` — Performs graph contraction and returns the " +"contracted vertices and edges." msgstr "" -msgid "The pgr_contraction function has the following signature:" -msgstr "" +#, fuzzy +msgid "pgr_contractionLinear(`Edges SQL`_, [**options**])" +msgstr "p" -msgid "pgr_contraction(`Edges SQL`_, **contraction order**, [**options**])" +msgid "**options:** ``[directed, max_cycles, forbidden_vertices]``" msgstr "" -msgid "**options:** ``[ max_cycles, forbidden_vertices, directed]``" +#, fuzzy +msgid "Linear contraction on an undirected graph." +msgstr "導かれないグラフ。" + +msgid "" +"The green nodes are linear nodes and will not be part of the contracted " +"graph." msgstr "" -msgid "Returns set of |result-contract|" +msgid "All edges adjacent will not be part of the contracted graph." msgstr "" -msgid "" -"Making a dead end and linear contraction in that order on an undirected " -"graph." +msgid "The red lines will be new edges of the contracted graph." msgstr "" msgid "**contraction Order**" msgstr "" -msgid "Ordered contraction operations." +msgid "" +"Number of times the contraction operations on ``contraction_order`` will be " +"performed." msgstr "" -msgid "1 = Dead end contraction" +msgid "A node connects two (or more) `linear` edges when" msgstr "" -msgid "2 = Linear contraction" +msgid "The number of adjacent vertices is 2." msgstr "" -msgid "Contraction optional parameters" +msgid "In case of a directed graph, a node is considered a `linear` node when" msgstr "" -msgid "``forbidden_vertices``" +msgid "Linearity is symmetrical." msgstr "" -msgid "**Empty**" +msgid "Linearity is not symmetrical" msgstr "" -msgid "Identifiers of vertices forbidden for contraction." +msgid "Graph where linearity is not symmetrical." msgstr "" -msgid ":math:`1`" +msgid "" +"When the graph is processed as a directed graph, linearity is not " +"symmetrical, therefore the graph can not be contracted." msgstr "" msgid "" -"Number of times the contraction operations on ``contraction_order`` will be " -"performed." +"When the same graph is processed as an undirected graph, linearity is " +"symmetrical, therefore the graph can be contracted." msgstr "" -msgid "The function returns a single row. The columns of the row are:" +msgid "The three edges can be replaced by one undirected edge" msgstr "" -msgid "``type``" +#, fuzzy +msgid "Edge :math:`1 - 3`." +msgstr "エッジのセット :math:`5`:" + +msgid "With cost: :math:`4`." msgstr "" -msgid "Type of the ``id``." +msgid "Contracted vertices in the edge: :math:`\\{2\\}`." msgstr "" -msgid "``v`` when the row is a vertex." +msgid "Linearity is symmetrical" msgstr "" -msgid "Column ``id`` has a positive value" +msgid "Graph where linearity is symmetrical." msgstr "" -msgid "``e`` when the row is an edge." +msgid "The four edges can be replaced by two directed edges." msgstr "" -msgid "Column ``id`` has a negative value" +#, fuzzy +msgid "Edge :math:`3 - 1`." +msgstr "エッジのセット :math:`5`:" + +msgid "With cost: :math:`6`." msgstr "" -msgid "All numbers on this column are ``DISTINCT``" +msgid "The four edges can be replaced by one undirected edge." msgstr "" -msgid "When ``type`` = **'v'**." +msgid "Step by step linear contraction" msgstr "" -msgid "Identifier of the modified vertex." +msgid "" +"The linear contraction will stop when there are no more linear edges. For " +"example from the following graph there are linear edges" msgstr "" -msgid "When ``type`` = **'e'**." +msgid "Contracting vertex :math:`3`," msgstr "" -msgid "Decreasing sequence starting from **-1**." +msgid "The vertex :math:`3` is removed from the graph" msgstr "" msgid "" -"Representing a pseudo `id` as is not incorporated in the set of original " -"edges." +"The edges :math:`2 \\rightarrow 3` and :math:`w \\rightarrow z` are removed " +"from the graph." msgstr "" -msgid "Array of contracted vertex identifiers." +msgid "" +"A new edge :math:`2 \\rightarrow 4` is inserted represented with red color." msgstr "" -msgid "When ``type`` = **'v'**: :math:`-1`" -msgstr "" +#, fuzzy +msgid "Contracting vertex :math:`2`:" +msgstr "エッジのセット :math:`5`:" -msgid "" -"When ``type`` = **'e'**: Identifier of the source vertex of the current edge " -"(``source``, ``target``)." +msgid "The vertex :math:`2` is removed from the graph" msgstr "" msgid "" -"When ``type`` = **'e'**: Identifier of the target vertex of the current edge " -"(``source``, ``target``)." +"The edges :math:`1 \\rightarrow 2` and :math:`2 \\rightarrow 3` are removed " +"from the graph." msgstr "" msgid "" -"When ``type`` = **'e'**: Weight of the current edge (``source``, ``target``)." +"A new edge :math:`1 \\rightarrow 3` is inserted represented with red color." msgstr "" -msgid "Only dead end contraction" +msgid "" +"Edge :math:`1 \\rightarrow 3` has the information of cost and the nodes that " +"were contracted." msgstr "" -msgid "Only linear contraction" -msgstr "" +#, fuzzy +msgid "Create the contracted graph." +msgstr "次のクエリを実行します。" -msgid "pgr_createTopology" +msgid "``pgr_createTopology``" msgstr "" msgid "" @@ -10192,10 +10190,7 @@ msgid "" "to the rest of the edges." msgstr "" -msgid "The example uses the :doc:`sampledata` network." -msgstr "" - -msgid "pgr_createVerticesTable" +msgid "``pgr_createVerticesTable``" msgstr "" msgid "" @@ -10413,7 +10408,7 @@ msgid "" "Cuthill%E2%80%93McKee_algorithm>`__" msgstr "" -msgid "pgr_dagShortestPath - Experimental" +msgid "``pgr_dagShortestPath`` - Experimental" msgstr "" msgid "" @@ -10495,86 +10490,192 @@ msgstr "結果として返却されるカラム" msgid "Making **start_vids** the same as **end_vids**" msgstr "" -msgid "https://en.wikipedia.org/wiki/Topological_sorting" +msgid "" +"`Boost: DAG shortest paths `__" msgstr "" -msgid "``pgr_degree`` -- Proposed" +msgid "https://en.wikipedia.org/wiki/Topological_sorting" msgstr "" +#, fuzzy +msgid "``pgr_degree``" +msgstr "pgr_TSP" + msgid "" "``pgr_degree`` — For each vertex in an undirected graph, return the count of " "edges incident to the vertex." msgstr "" -msgid "Calculates the degree of the vertices of an **undirected** graph" +msgid "Error messages adjustment." +msgstr "" + +msgid "New signature with only Edges SQL." +msgstr "" + +msgid "Calculates the degree of the vertices of an undirected graph" +msgstr "" + +msgid "" +"The degree (or valency) of a vertex of a graph is the number of edges that " +"are incident to the vertex." +msgstr "" + +msgid "A loop contributes 2 to a vertex's degree." +msgstr "" + +msgid "A vertex with degree 0 is called an isolated vertex." +msgstr "" + +msgid "Isolated vertex is not part of the result" +msgstr "" + +msgid "" +"Vertex not participating on the subgraph is considered and isolated vertex." +msgstr "" + +msgid "" +"There can be a ``dryrun`` execution and the code used to get the answer will " +"be shown in a PostgreSQL ``NOTICE``." +msgstr "" + +msgid "" +"The code can be used as base code for the particular application " +"requirements." msgstr "" +msgid "No ordering is performed." +msgstr "" + +#, fuzzy +msgid "pgr_degree(`Edges SQL`_ , [``dryrun``])" +msgstr "p" + msgid "pgr_degree(`Edges SQL`_ , `Vertex SQL`_, [``dryrun``])" msgstr "" msgid "RETURNS SETOF |result-degree|" msgstr "" +msgid "Edges" +msgstr "" + +#, fuzzy +msgid "example" +msgstr "例" + +msgid "Get the degree of the vertices defined on the edges table" +msgstr "" + +#, fuzzy +msgid "Edges and Vertices" +msgstr "索引とテーブル" + msgid "Extracting the vertex information" msgstr "" +msgid "``pgr_degree`` can use :doc:`pgr_extractVertices` embedded in the call." +msgstr "" + +msgid "" +"For decent size networks, it is best to prepare your vertices table before " +"hand and use it on ``pgr_degree`` calls. (See `Using a vertex table`_)" +msgstr "" + +msgid "Calculate the degree of the nodes:" +msgstr "" + +msgid "`Vertex SQL`_" +msgstr "" + +msgid "`Vertex SQL`_ as described below" +msgstr "" + +msgid "``dryrun``" +msgstr "" + +msgid "When true do not process and get in a NOTICE the resulting query." +msgstr "" + +msgid "For the `Edges and Vertices`_ signature:" +msgstr "" + +msgid "For the `Edges`_ signature:" +msgstr "" + +msgid "Vertex SQL" +msgstr "" + +msgid "``in_edges``" +msgstr "" + +msgid "" +"Array of identifiers of the edges that have the vertex ``id`` as *first end " +"point*." +msgstr "" + +msgid "When missing, ``out_edges`` must exist." +msgstr "" + +msgid "``out_edges``" +msgstr "" + msgid "" -"pgr_degree can utilize output from `pgr_extractVertices` or can have " -"`pgr_extractVertices` embedded in the call. For decent size networks, it is " -"best to prep your vertices table before hand and use that vertices table for " -"pgr_degree calls." +"Array of identifiers of the edges that have the vertex ``id`` as *second end " +"point*." +msgstr "" + +msgid "When missing, ``in_edges`` must exist." msgstr "" -msgid "`Vertex SQL`_" +msgid "Vertex identifier" msgstr "" -msgid "`Vertex SQL`_ as described below" +msgid "``degree``" msgstr "" -msgid "``dryrun``" +msgid "Number of edges that are incident to the vertex ``id``" msgstr "" -msgid "When true do not process and get in a NOTICE the resulting query." +msgid "Degree of a loop" msgstr "" -msgid "Vertex SQL" +msgid "Using the `Edges`_ signature." msgstr "" -msgid "``in_edges``" +msgid "Using the `Edges and Vertices`_ signature." msgstr "" -msgid "``BIGINT[]``" +msgid "Degree of a sub graph" msgstr "" -msgid "" -"Array of identifiers of the edges that have the vertex ``id`` as *first end " -"point*." +msgid "For the following is a subgraph of the :doc:`sampledata`:" msgstr "" -msgid "When missing, ``out_edges`` must exist." +msgid ":math:`E = \\{(1, 5 \\leftrightarrow 6), (1, 6 \\leftrightarrow 10)\\}`" msgstr "" -msgid "``out_edges``" +msgid ":math:`V = \\{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17\\}`" msgstr "" -msgid "" -"Array of identifiers of the edges that have the vertex ``id`` as *second end " -"point*." +msgid "The vertices not participating on the edge are considered isolated" msgstr "" -msgid "When missing, ``in_edges`` must exist." +msgid "their degree is 0 in the subgraph and" msgstr "" -msgid "Vertex identifier" +msgid "their degree is not shown in the output." msgstr "" -msgid "``degree``" +msgid "Using a vertex table" msgstr "" -msgid "Number of edges that are incident to the vertex ``id``" +msgid "" +"For decent size networks, it is best to prepare your vertices table before " +"hand and use it on ``pgr_degree`` calls." msgstr "" -msgid "Degree of a sub graph" +msgid "Extract the vertex information and save into a table:" msgstr "" msgid "Dry run execution" @@ -10590,36 +10691,41 @@ msgid "" "backend development needs." msgstr "" -msgid "Degree from an existing table" +msgid "Finding dead ends" msgstr "" msgid "" -"If you have a vertices table already built using ``pgr_extractVertices`` and " -"want the degree of the whole graph rather than a subset, you can forgo using " -"pgr_degree and work with the ``in_edges`` and ``out_edges`` columns directly." +"If there is a vertices table already built using ``pgr_extractVertices`` and " +"want the degree of the whole graph rather than a subset, it can be forgo " +"using ``pgr_degree`` and work with the ``in_edges`` and ``out_edges`` " +"columns directly." msgstr "" -msgid ":doc:`pgr_extractVertices`" +msgid "The degree of a dead end is 1." msgstr "" -msgid "``pgr_depthFirstSearch`` - Proposed" +msgid "Finding linear vertices" +msgstr "" + +msgid "The degree of a linear vertex is 2." msgstr "" msgid "" -"``pgr_depthFirstSearch`` — Returns a depth first search traversal of the " -"graph. The graph can be directed or undirected." +"If there is a vertices table already built using the ``pgr_extractVertices``" msgstr "" -msgid "Version 3.3.0" +msgid ":doc:`pgr_extractVertices`" msgstr "" -msgid "Promoted to **proposed** function" +msgid "``pgr_depthFirstSearch`` - Proposed" msgstr "" -msgid "``pgr_depthFirstSearch`` (`Single Vertex`_)" +msgid "" +"``pgr_depthFirstSearch`` — Returns a depth first search traversal of the " +"graph. The graph can be directed or undirected." msgstr "" -msgid "``pgr_depthFirstSearch`` (`Multiple Vertices`_)" +msgid "Version 3.3.0" msgstr "" msgid "" @@ -10675,13 +10781,13 @@ msgid "Same as `Single vertex`_ but with edges in descending order of ``id``." msgstr "" msgid "" -"`Boost: Depth First Search algorithm documentation `__" +"`Boost: Depth First Search `__" msgstr "" msgid "" -"`Boost: Undirected DFS algorithm documentation `__" +"`Boost: Undirected DFS `__" msgstr "" msgid "" @@ -10699,44 +10805,31 @@ msgstr "" msgid "Version 3.5.0" msgstr "バージョン 3.0.0" -msgid "" -"``pgr_dijkstra`` (`One to One`_) added ``start_vid`` and ``end_vid`` columns." +msgid "pgr_dijkstra(One to One) added ``start_vid`` and ``end_vid`` columns." msgstr "" -msgid "``pgr_dijkstra`` (`One to Many`_) added ``end_vid`` column." +msgid "pgr_dijkstra(One to Many) added ``end_vid`` column." msgstr "" -msgid "``pgr_dijkstra`` (`Many to One`_) added ``start_vid`` column." +msgid "pgr_dijkstra(Many to One) added ``start_vid`` column." msgstr "" msgid "Version 3.1.0" msgstr "" -msgid "``pgr_dijkstra`` (`Combinations`_)" -msgstr "" - -msgid "**Official** functions" -msgstr "" - msgid "Version 2.2.0" msgstr "" -msgid "New **proposed** functions:" -msgstr "" - -msgid "``pgr_dijkstra`` (`One to Many`_)" -msgstr "" - -msgid "``pgr_dijkstra`` (`Many to One`_)" +msgid "pgr_dijkstra(One to Many)" msgstr "" -msgid "``pgr_dijkstra`` (`Many to Many`_)" +msgid "pgr_dijkstra(Many to One)" msgstr "" -msgid "Signature change on ``pgr_dijkstra`` (`One to One`_)" +msgid "pgr_dijkstra(Many to Many)" msgstr "" -msgid "**Official** ``pgr_dijkstra`` (`One to One`_)" +msgid "Signature change on pgr_dijkstra(One to One)" msgstr "" #, fuzzy @@ -10925,6 +11018,11 @@ msgstr "" msgid "37) Using `Combinations`_" msgstr "" +msgid "" +"`Boost: Dijkstra shortest paths `__" +msgstr "" + msgid "https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm" msgstr "" @@ -10937,9 +11035,6 @@ msgid "" "algorithm." msgstr ":doc:`pgr_dijkstraCost` - 最短経路の総コストを集計します。" -msgid "``pgr_dijkstraCost`` (`Combinations`_)" -msgstr "" - #, fuzzy msgid "" "The ``pgr_dijkstraCost`` function sumarizes of the cost of the shortest path " @@ -11228,9 +11323,6 @@ msgstr "" msgid "When ``false``: ``cap`` limit per ``Start vid`` will be returned" msgstr "" -msgid "boost: https://www.boost.org/libs/graph/doc/table_of_contents.html" -msgstr "" - msgid "Wikipedia: https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm" msgstr "" @@ -11397,6 +11489,9 @@ msgid "" "``pgr_drivingDistance`` - Returns the driving distance from a start node." msgstr "" +msgid "Standarizing output columns to |result-spantree|" +msgstr "" + msgid "Added ``depth`` and ``start_vid`` result columns." msgstr "" @@ -11406,13 +11501,17 @@ msgstr "" msgid "Added ``depth`` and ``pred`` result columns." msgstr "" -msgid "Signature change pgr_drivingDistance(single vertex)" +#, fuzzy +msgid "Signature change:" +msgstr "変更機能" + +msgid "pgr_drivingDistance(single vertex)" msgstr "" -msgid "New **Official** pgr_drivingDistance(multiple vertices)" +msgid "New official signature:" msgstr "" -msgid "Official:: pgr_drivingDistance(single vertex)" +msgid "pgr_drivingDistance(multiple vertices)" msgstr "" msgid "" @@ -11468,7 +11567,7 @@ msgid "" "undirected graph" msgstr "" -msgid "pgr_edgeColoring - Experimental" +msgid "``pgr_edgeColoring`` - Experimental" msgstr "" msgid "" @@ -11542,6 +11641,15 @@ msgstr "" msgid "Graph coloring of pgRouting :doc:`sampledata`" msgstr "" +msgid "" +"`Boost: Edge Coloring `__" +msgstr "" + +msgid "" +"`Wikipedia: Graph coloring `__" +msgstr "" + msgid "``pgr_edgeDisjointPaths``" msgstr "" @@ -11550,9 +11658,6 @@ msgid "" "groups of vertices." msgstr "" -msgid "New **proposed** function:" -msgstr "" - msgid "pgr_edgeDisjointPaths(Combinations)" msgstr "" @@ -11634,9 +11739,6 @@ msgid "" "the flow from the sources to the targets using Edmonds Karp Algorithm." msgstr "" -msgid "``pgr_edmondsKarp`` (`Combinations`_)" -msgstr "" - msgid "Renamed from ``pgr_maxFlowEdmondsKarp``" msgstr "" @@ -11658,32 +11760,22 @@ msgstr "" msgid "pgr_edmondsKarp(`Edges SQL`_, `Combinations SQL`_)" msgstr "" -msgid "https://www.boost.org/libs/graph/doc/edmonds_karp_max_flow.html" +msgid "" +"`Boost: Edmonds Karp max flow `__" msgstr "" msgid "https://en.wikipedia.org/wiki/Edmonds%E2%80%93Karp_algorithm" msgstr "" -msgid "``pgr_edwardMoore - Experimental``" +msgid "``pgr_edwardMoore`` - Experimental" msgstr "" msgid "" "``pgr_edwardMoore`` — Returns the shortest path using Edward-Moore algorithm." msgstr "" -msgid "``pgr_edwardMoore`` (`Combinations`_)" -msgstr "" - -msgid "``pgr_edwardMoore`` (`One to One`_)" -msgstr "" - -msgid "``pgr_edwardMoore`` (`One to Many`_)" -msgstr "" - -msgid "``pgr_edwardMoore`` (`Many to One`_)" -msgstr "" - -msgid "``pgr_edwardMoore`` (`Many to Many`_)" +msgid "pgr_edwardMoore(Combinations)" msgstr "" msgid "" @@ -11745,15 +11837,12 @@ msgstr "" msgid "https://en.wikipedia.org/wiki/Shortest_Path_Faster_Algorithm" msgstr "" -msgid "pgr_extractVertices -- Proposed" +msgid "``pgr_extractVertices``" msgstr "" msgid "``pgr_extractVertices`` — Extracts the vertices information" msgstr "" -msgid "Classified as **proposed** function" -msgstr "" - msgid "" "This is an auxiliary function for extracting the vertex information of the " "set of edges of a graph." @@ -11852,13 +11941,7 @@ msgstr "" msgid "``pgr_findCloseEdges`` - Finds the close edges to a point geometry." msgstr "" -msgid "New **proposed** signatures:" -msgstr "" - -msgid "``pgr_findCloseEdges`` (`One point`_)" -msgstr "" - -msgid "``pgr_findCloseEdges`` (`Many points`_)" +msgid "``partial`` option is removed." msgstr "" msgid "" @@ -11875,7 +11958,7 @@ msgid "" "adjustments needed by the application." msgstr "" -msgid "``EMTPY SET`` is returned on dryrun executions" +msgid "``EMPTY SET`` is returned on dryrun executions" msgstr "" msgid "" @@ -11886,7 +11969,7 @@ msgid "" "pgr_findCloseEdges(`Edges SQL`_, **points**, **tolerance**, [**options**])" msgstr "" -msgid "**options:** ``[cap, partial, dryrun]``" +msgid "**options:** ``[cap, dryrun]``" msgstr "" msgid "Returns set of |result-find|" @@ -11895,52 +11978,16 @@ msgstr "" msgid "One point" msgstr "" -msgid "Default: ``cap => 1``" -msgstr "" - -msgid "Maximum one row answer." -msgstr "" - -msgid "Default: ``partial => true``" +msgid "Get two close edges to points of interest with :math:`pid = 5`" msgstr "" -msgid "With less calculations as possible." -msgstr "" - -msgid "Default: ``dryrun => false``" -msgstr "" - -msgid "Process query" -msgstr "" - -msgid "Returns" -msgstr "" - -msgid "values on ``edge_id``, ``fraction``, ``side`` columns." -msgstr "" - -msgid "``NULL`` on ``distance``, ``geom``, ``edge`` columns." +msgid "``cap => 2``" msgstr "" msgid "Many points" msgstr "" -msgid "" -"Find at most :math:`2` edges close to all vertices on the points of interest " -"table." -msgstr "" - -msgid "One answer per point, as small as possible." -msgstr "" - -msgid "" -"Columns ``edge_id``, ``fraction``, ``side`` and ``geom`` are returned with " -"values." -msgstr "" - -msgid "" -"``geom`` contains the original point geometry to assist on deterpartialing " -"to which point geometry the row belongs to." +msgid "For each points of interests, find the closest edge." msgstr "" msgid "**point**" @@ -11967,17 +12014,6 @@ msgstr "" msgid "Limit output rows" msgstr "" -msgid "``partial``" -msgstr "" - -msgid "" -"When ``true`` only columns needed for :doc:`withPoints-category` are " -"calculated." -msgstr "" - -msgid "When ``false`` all columns are calculated" -msgstr "" - msgid "When ``false`` calculations are performed." msgstr "" @@ -11992,270 +12028,104 @@ msgstr "" msgid "When :math:`cap = 1`, it is the closest edge." msgstr "" +#, fuzzy msgid "" -"Value in <0,1> that indicates the relative postition from the first end-" -"point of the edge." +"Value in <0,1> that indicates the relative position from the first end-point " +"of the edge." msgstr "" +":math:`path\\_seq' は、:math:'node' または :math:'edge' の経路内の相対位置を" +"示しています。" msgid "Value in ``[r, l]`` indicating if the point is:" msgstr "" -msgid "In the right ``r``." -msgstr "" - -msgid "In the left ``l``." +msgid "At the right ``r`` of the segment." msgstr "" msgid "When the point is on the line it is considered to be on the right." msgstr "" -msgid "``distance``" -msgstr "" - -msgid "Distance from point to edge." -msgstr "" - -msgid "``NULL`` when ``cap = 1`` on the `One point`_ signature" -msgstr "" - -msgid "``POINT`` geometry" -msgstr "" - -msgid "" -"`One Point`_: Contains the point on the edge that is ``fraction`` away from " -"the starting point of the edge." -msgstr "" - -msgid "`Many Points`_: Contains the corresponding **original point**" -msgstr "" - -msgid "" -"``LINESTRING`` geometry from the **original point** to the closest point of " -"the edge with identifier ``edge_id``" -msgstr "" - -msgid "One point results" -msgstr "" - -msgid "The green nodes is the **original point**" -msgstr "" - -msgid "" -"The geometry ``geom`` is a point on the :math:`sp \\rightarrow ep` edge." -msgstr "" - -msgid "" -"The geometry ``edge`` is a line that connects the **original point** with " -"``geom``" -msgstr "" - -msgid "Many point results" -msgstr "" - -msgid "The green nodes are the **original points**" -msgstr "" - -msgid "" -"The geometry ``geom``, marked as **g1** and **g2** are the **original " -"points**" -msgstr "" - -msgid "" -"The geometry ``edge``, marked as **edge1** and **edge2** is a line that " -"connects the **original point** with the closest point on the :math:`sp " -"\\rightarrow ep` edge." -msgstr "" - -msgid "One point examples" -msgstr "" - -msgid "At most two answers" -msgstr "" - -msgid "``cap => 2``" -msgstr "" - -msgid "Maximum two row answer." -msgstr "" - -msgid "Understanding the result" -msgstr "" - -msgid "``NULL`` on ``geom``, ``edge``" -msgstr "" - -msgid "``edge_id`` identifier of the edge close to the **original point**" -msgstr "" - -msgid "" -"Two edges are withing :math:`0.5` distance units from the **original " -"point**: :math:`{5, 8}`" -msgstr "" - -#, fuzzy -msgid "For edge :math:`5`:" -msgstr "エッジのセット :math:`5`:" - -msgid "" -"``fraction``: The closest point from the **original point** is at the :math:" -"`0.8` fraction of the edge :math:`5`." -msgstr "" - -msgid "" -"``side``: The **original point** is located to the left side of edge :math:" -"`5`." -msgstr "" - -msgid "" -"``distance``: The **original point** is located :math:`0.1` length units " -"from edge :math:`5`." -msgstr "" - -msgid "For edge :math:`8`:" -msgstr "エッジのセット :math:`8`:" - -msgid "" -"``fraction``: The closest point from the **original point** is at the :math:" -"`0.89..` fraction of the edge :math:`8`." -msgstr "" - -msgid "" -"``side``: The **original point** is located to the right side of edge :math:" -"`8`." -msgstr "" - -msgid "" -"``distance``: The **original point** is located :math:`0.19..` length units " -"from edge :math:`8`." -msgstr "" - -msgid "One answer, all columns" -msgstr "" - -msgid "``partial => false``" +msgid "At the left ``l`` of the segment." msgstr "" -msgid "Calculate all columns" +msgid "``distance``" msgstr "" -msgid "" -"``edge_id`` identifier of the edge **closest** to the **original point**" +msgid "Distance from the point to the edge." msgstr "" -msgid "" -"From all edges within :math:`0.5` distance units from the **original " -"point**: :math:`{5}` is the closest one." +msgid "Original ``POINT`` geometry." msgstr "" msgid "" -"``geom``: Contains the geometry of the closest point on edge :math:`5` from " -"the **original point**." +"``LINESTRING`` geometry that connects the original **point** to the closest " +"point of the edge with identifier ``edge_id``" msgstr "" -msgid "" -"``edge``: Contains the ``LINESTRING`` geometry of the **original point** to " -"the closest point on on edge :math:`5` ``geom``" +msgid "One point in an edge" msgstr "" -msgid "At most two answers with all columns" +msgid "The green node is the original point." msgstr "" -msgid "Understanding the result:" +msgid "``geom`` has the value of the original point." msgstr "" msgid "" -"``geom``: Contains the geometry of the closest point on edge :math:`8` from " -"the **original point**." +"The geometry ``edge`` is a line that connects the original point with the " +"edge :math:`sp \\rightarrow ep` edge." msgstr "" -msgid "" -"``edge``: Contains the ``LINESTRING`` geometry of the **original point** to " -"the closest point on on edge :math:`8` ``geom``" +msgid "The point is located at the left of the edge." msgstr "" msgid "One point dry run execution" msgstr "" -msgid "Returns ``EMPTY SET``." -msgstr "" - -msgid "``partial => true``" +msgid "Using the query from the previous example:" msgstr "" -msgid "Is ignored" -msgstr "" - -msgid "" -"Because it is a **dry run** excecution, the code for all calculations are " -"shown on the PostgreSQL ``NOTICE``." +msgid "Returns ``EMPTY SET``." msgstr "" msgid "``dryrun => true``" msgstr "" -msgid "Do not process query" -msgstr "" - -msgid "" -"Generate a PostgreSQL ``NOTICE`` with the code used to calculate all columns" -msgstr "" - -msgid "``cap`` and **original point** are used in the code" -msgstr "" - -msgid "Many points examples" -msgstr "" - -msgid "At most two answers per point" -msgstr "" - -msgid "``NULL`` on ``edge``" -msgstr "" - -msgid "" -"``edge_id`` identifier of the edge close to a **original point** (``geom``)" -msgstr "" - -msgid "" -"Two edges at most withing :math:`0.5` distance units from each of the " -"**original points**:" -msgstr "" - -msgid "For ``POINT(1.8 0.4)`` and ``POINT(0.3 1.8)`` only one edge was found." -msgstr "" - -msgid "For the rest of the points two edges were found." -msgstr "" - -msgid "For point ``POINT(2.9 1.8)``" +msgid "Generates a PostgreSQL ``NOTICE`` with the code used." msgstr "" msgid "" -"Edge :math:`5` is before :math:`8` therefore edge :math:`5` has the shortest " -"distance to ``POINT(2.9 1.8)``." -msgstr "" - -msgid "One answer per point, all columns" +"The generated code can be used as a starting base code for additional " +"requirements, like taking into consideration the SRID." msgstr "" -msgid "For the **original point** ``POINT(2.9 1.8)``" +msgid "Many points in an edge" msgstr "" -msgid "Edge :math:`5` is the closest edge to the **original point**" +msgid "The green nodes are the **original points**" msgstr "" msgid "" -"``geom``: Contains the geometry of the **original point** ``POINT(2.9 1.8)``" +"The geometry ``geom``, marked as **g1** and **g2** are the **original " +"points**" msgstr "" msgid "" -"``edge``: Contains the ``LINESTRING`` geometry of the **original point** " -"(``geom``) to the closest point on on edge." +"The geometry ``edge``, marked as **edge1** and **edge2** is a line that " +"connects the **original point** with the closest point on the :math:`sp " +"\\rightarrow ep` edge." msgstr "" msgid "Many points dry run execution" msgstr "" +msgid "Do not process query" +msgstr "" + +msgid "" +"Generate a PostgreSQL ``NOTICE`` with the code used to calculate all columns" +msgstr "" + msgid "Find at most two routes to a given point" msgstr "" @@ -12290,11 +12160,11 @@ msgstr "" msgid "A unique identifier." msgstr "" -msgid "" -"Identifier of the edge nearest edge that allows an arrival to the point." -msgstr "" +#, fuzzy +msgid "Identifier of the nearest segment." +msgstr "開始ノードの識別子。" -msgid "Is it on the left, right or both sides of the segment ``edge_id``" +msgid "Is it on the left, right or both sides of the segment ``edge_id``." msgstr "" msgid "Where in the segment is the point located." @@ -12303,13 +12173,35 @@ msgstr "" msgid "The geometry of the points." msgstr "" +msgid "The distance between ``geom`` and the segment ``edge_id``." +msgstr "" + +msgid "" +"A segment that connects the ``geom`` of the point to the closest point on " +"the segment ``edge_id``." +msgstr "" + msgid "``newPoint``" msgstr "" -msgid "The geometry of the points moved on top of the segment." +msgid "A point on segment ``edge_id`` that is the closest to ``geom``." +msgstr "" + +msgid "Points of interest fill up" +msgstr "" + +msgid "Inserting the points of interest." +msgstr "" + +msgid "Filling the rest of the table." +msgstr "" + +msgid "" +"Any other additional modification: In this manual, point :math:`6` can be " +"reached from both sides." msgstr "" -msgid "Points of interest fillup" +msgid "The points of interest:" msgstr "" msgid "``pgr_floydWarshall``" @@ -12338,9 +12230,6 @@ msgid "" "floyd_warshall_shortest.html>`_" msgstr "" -msgid "Queries uses the :doc:`sampledata` network." -msgstr "" - msgid "``pgr_full_version``" msgstr "" @@ -12348,9 +12237,6 @@ msgid "" "``pgr_full_version`` — Get the details of pgRouting version information." msgstr "" -msgid "New **official** function" -msgstr "" - msgid "Get complete details of pgRouting version information" msgstr "" @@ -12417,17 +12303,14 @@ msgstr "" msgid "Git hash of pgRouting build" msgstr "" -msgid "``pgr_hawickCircuits - Experimental``" +msgid "``pgr_hawickCircuits`` - Experimental" msgstr "" msgid "" -"``pgr_hawickCircuits`` — Returns the list of cirucits using hawick circuits " +"``pgr_hawickCircuits`` — Returns the list of ciruits using hawick circuits " "algorithm." msgstr "" -msgid "``pgr_hawickCircuits``" -msgstr "" - msgid "" "Hawick Circuit algorithm, is published in 2008 by Ken Hawick and Health A. " "James. This algorithm solves the problem of detecting and enumerating " @@ -12552,7 +12435,9 @@ msgid "" "blue represent :math:`K_5` subgraph." msgstr "" -msgid "https://www.boost.org/libs/graph/doc/boyer_myrvold.html" +msgid "" +"`Boost: Boyer Myrvold `__" msgstr "" msgid "``pgr_johnson``" @@ -12607,6 +12492,9 @@ msgid "" "breadth First Search ordering." msgstr "" +msgid "Added ``pred`` result columns." +msgstr "" + msgid "" "Visits and extracts the nodes information in Breath First Search ordering of " "the Minimum Spanning Tree created using Kruskal's algorithm." @@ -12682,7 +12570,7 @@ msgstr "" msgid "pgr_kruskalDFS(`Edges SQL`_, **root vids**, [``max_depth``])" msgstr "" -msgid "pgr_lengauerTarjanDominatorTree -Experimental" +msgid "``pgr_lengauerTarjanDominatorTree`` - Experimental" msgstr "" msgid "" @@ -12740,8 +12628,8 @@ msgid "Dominator tree of another component." msgstr "" msgid "" -"`Boost: Lengauer-Tarjan dominator tree algorithm `__" +"`Boost: Lengauer-Tarjan dominator `__" msgstr "" msgid "" @@ -12749,7 +12637,7 @@ msgid "" "Dominator_(graph_theory)>`__" msgstr "" -msgid "pgr_lineGraph - Proposed" +msgid "``pgr_lineGraph`` - Proposed" msgstr "" msgid "" @@ -12757,6 +12645,10 @@ msgid "" "based graph." msgstr "" +#, fuzzy +msgid "Works for directed and undirected graphs." +msgstr "導かれないグラフ。" + msgid "" "Given a graph :math:`G`, its line graph :math:`L(G)` is a graph such that:" msgstr "" @@ -12800,15 +12692,9 @@ msgstr "" msgid "Gives a local identifier for the edge" msgstr "" -msgid "Identifier of the source vertex of the current edge." -msgstr "" - msgid "When `negative`: the source is the reverse edge in the original graph." msgstr "" -msgid "Identifier of the target vertex of the current edge." -msgstr "" - msgid "When `negative`: the target is the reverse edge in the original graph." msgstr "" @@ -13023,8 +12909,7 @@ msgid "Full line graph of subgraph of edges :math:`\\{4, 7, 8, 10\\}`" msgstr "" msgid "" -"The examples of this section are based on the :doc:`sampledata` network. The " -"examples include the subgraph including edges 4, 7, 8, and 10 with " +"The examples include the subgraph including edges 4, 7, 8, and 10 with " "``reverse_cost``." msgstr "" @@ -13243,15 +13128,15 @@ msgstr "" msgid "Returns set of |result-component-make|" msgstr "" -msgid "" -"Query done on :doc:`sampledata` network gives the list of edges that are " -"needed to connect the graph." +msgid "List of edges that are needed to connect the graph." msgstr "" -msgid "https://www.boost.org/libs/graph/doc/make_connected.html" +msgid "" +"`Boost: make connected `__" msgstr "" -msgid "pgr_maxCardinalityMatch" +msgid "``pgr_maxCardinalityMatch``" msgstr "" msgid "" @@ -13259,13 +13144,16 @@ msgid "" "graph." msgstr "" +msgid "pgr_maxCardinalityMatch(text) returns only ``edge`` column." +msgstr "" + msgid "Deprecated signature" msgstr "" -msgid "``pgr_maxCardinalityMatch(text,boolean)``" +msgid "pgr_maxCardinalityMatch(text,boolean)" msgstr "" -msgid "``directed => false`` when used." +msgid "directed => ``false`` when used." msgstr "" msgid "Renamed from ``pgr_maximumCardinalityMatching``" @@ -13316,7 +13204,9 @@ msgstr "" msgid "Identifier of the edge in the original query." msgstr "" -msgid "https://www.boost.org/libs/graph/doc/maximum_matching.html" +msgid "" +"`Boost: maximum_matching `__" msgstr "" msgid "https://en.wikipedia.org/wiki/Matching_%28graph_theory%29" @@ -13333,12 +13223,6 @@ msgid "" "source(s) to the targets(s) using the Push Relabel algorithm." msgstr "" -msgid "``pgr_maxFlow`` (`Combinations`_)" -msgstr "" - -msgid "New **Proposed** function" -msgstr "" - msgid "Calculates the maximum flow from the sources to the targets." msgstr "" @@ -13346,6 +13230,9 @@ msgid "" "When the maximum flow is **0** then there is no flow and **0** is returned." msgstr "" +msgid "There is no flow when source has the same vaule as target." +msgstr "" + msgid "Uses the :doc:`pgr_pushRelabel ` algorithm." msgstr "" @@ -13373,7 +13260,9 @@ msgstr "" msgid "Maximum flow possible from the source(s) to the target(s)" msgstr "" -msgid "https://www.boost.org/libs/graph/doc/push_relabel_max_flow.html" +msgid "" +"`Boost: push relabel max flow `__" msgstr "" msgid "" @@ -13388,7 +13277,10 @@ msgid "" "of the maximum flow on a graph" msgstr "" -msgid "``pgr_maxFlowMinCost`` (`Combinations`_)" +msgid "pgr_maxFlowMinCost(Combinations)" +msgstr "" + +msgid "|boost| graph inside." msgstr "" msgid "**TODO** check which statement is true:" @@ -13432,11 +13324,6 @@ msgstr "" msgid "Returns set of |result-flow-mincost|" msgstr "" -msgid "" -"https://www.boost.org/libs/graph/doc/" -"successive_shortest_path_nonnegative_weights.html" -msgstr "" - msgid "``pgr_maxFlowMinCost_Cost`` - Experimental" msgstr "" @@ -13445,7 +13332,7 @@ msgid "" "maximum flow on a graph" msgstr "" -msgid "``pgr_maxFlowMinCost_Cost`` (`Combinations`_)" +msgid "pgr_maxFlowMinCost_Cost(Combinations)" msgstr "" msgid "**The cost value of all input edges must be nonnegative.**" @@ -13478,7 +13365,7 @@ msgstr "" msgid "Minimum Cost Maximum Flow possible from the source(s) to the target(s)" msgstr "" -msgid "pgr_nodeNetwork" +msgid "``pgr_nodeNetwork``" msgstr "" msgid "``pgr_nodeNetwork`` - Nodes an network edge table." @@ -13909,7 +13796,7 @@ msgid "" "projectweb/top/pdptw/li-lim-benchmark/" msgstr "" -msgid "There are 25 vehciles in the problem all with the same characteristics." +msgid "There are 25 vehicles in the problem all with the same characteristics." msgstr "" msgid "The original orders" @@ -13920,7 +13807,7 @@ msgid "" "order." msgstr "" -msgid "The original data needs to be converted to an appropiate table:" +msgid "The original data needs to be converted to an appropriate table:" msgstr "" msgid "The query" @@ -14019,9 +13906,6 @@ msgid "" "the flow from the sources to the targets using Push Relabel Algorithm." msgstr "" -msgid "``pgr_pushRelabel`` (`Combinations`_)" -msgstr "" - msgid "Renamed from ``pgr_maxFlowPushRelabel``" msgstr "" @@ -14040,7 +13924,7 @@ msgstr "" msgid "pgr_pushRelabel(`Edges SQL`_, `Combinations SQL`_)" msgstr "" -msgid "pgr_sequentialVertexColoring - Proposed" +msgid "``pgr_sequentialVertexColoring`` - Proposed" msgstr "" msgid "" @@ -14048,9 +13932,6 @@ msgid "" "undirected graph, using greedy approach." msgstr "" -msgid "Promoted to **proposed** signature" -msgstr "" - msgid "" "Sequential vertex coloring algorithm is a graph coloring algorithm in which " "color identifiers are assigned to the vertices of a graph in a sequential " @@ -14093,7 +13974,12 @@ msgstr "" msgid "pgr_sequentialVertexColoring(`Edges SQL`_)" msgstr "" -msgid "pgr_stoerWagner - Experimental" +msgid "" +"`Boost: Sequential Vertex Coloring `__" +msgstr "" + +msgid "``pgr_stoerWagner`` - Experimental" msgstr "" msgid "``pgr_stoerWagner`` — The min-cut of graph using stoerWagner algorithm." @@ -14178,6 +14064,11 @@ msgstr "" msgid "Using :doc:`pgr_connectedComponents`" msgstr "" +msgid "" +"`Boost: Stoer Wagner min cut `__" +msgstr "" + msgid "https://en.wikipedia.org/wiki/Stoer%E2%80%93Wagner_algorithm" msgstr "" @@ -14207,7 +14098,7 @@ msgid "The strong components of the graph" msgstr "" msgid "" -"Boost: `Strong components `__" msgstr "" @@ -14272,6 +14163,11 @@ msgstr "" msgid "Graph is not a DAG" msgstr "" +msgid "" +"`Boost: topological sort `__" +msgstr "" + msgid "``pgr_transitiveClosure`` - Experimental" msgstr "" @@ -14327,56 +14223,52 @@ msgstr "" msgid "Identifiers of the vertices that are reachable from vertex v." msgstr "" -msgid "https://en.wikipedia.org/wiki/Transitive_closure" +msgid "" +"`Boost: transitive closure `__" msgstr "" -msgid "pgr_trsp - Proposed" +msgid "https://en.wikipedia.org/wiki/Transitive_closure" msgstr "" -msgid "``pgr_trsp`` - routing vertices with restrictions." -msgstr "" +#, fuzzy +msgid "``pgr_trsp``" +msgstr "pgr_TSP" -msgid "New proposed signatures" +msgid "``pgr_trsp`` - routing vertices with restrictions." msgstr "" -msgid "``pgr_trsp`` (`One to One`_)" +msgid "pgr_trsp(One to One)" msgstr "" -msgid "``pgr_trsp`` (`One to Many`_)" +msgid "pgr_trsp(One to Many)" msgstr "" -msgid "``pgr_trsp`` (`Many to One`_)" +msgid "pgr_trsp(Many to One)" msgstr "" -msgid "``pgr_trsp`` (`Many to Many`_)" +msgid "pgr_trsp(Many to Many)" msgstr "" -msgid "``pgr_trsp`` (`Combinations`_)" +msgid "pgr_trsp(Combinations)" msgstr "" msgid "Deprecated signatures" msgstr "" -msgid "``pgr_trsp(text,integer,integer,boolean,boolean,text)``" -msgstr "" - -msgid "``pgr_trsp(text,integer,float,integer,float,boolean,boolean,text)``" -msgstr "" - -msgid "``pgr_trspViaVertices(text,anyarray,boolean,boolean,text)``" +msgid "pgr_trsp(text,integer,float,integer,float,boolean,boolean,text)" msgstr "" -msgid "" -"``pgr_trspviaedges(text,integer[],double precision[],boolean,boolean,text)``" +msgid "pgr_trspViaVertices(text,anyarray,boolean,boolean,text)" msgstr "" msgid "New prototypes" msgstr "" -msgid "``pgr_trspViaVertices``" +msgid "pgr_trspViaVertices" msgstr "" -msgid "``pgr_trspViaEdges``" +msgid "pgr_trspViaEdges" msgstr "" msgid "" @@ -14449,19 +14341,14 @@ msgid "" "`Deprecated documentation `_" msgstr "" -msgid "``pgr_trspVia`` - Proposed" -msgstr "" +#, fuzzy +msgid "``pgr_trspVia``" +msgstr "pgr_TSP" msgid "" "``pgr_trspVia`` Route that goes through a list of vertices with restrictions." msgstr "" -msgid "New proposed function:" -msgstr "" - -msgid "``pgr_trspVia`` (`One Via`_)" -msgstr "" - msgid "" "Given a list of vertices and a graph, this function is equivalent to finding " "the shortest path between :math:`vertex_i` and :math:`vertex_{i+1}` for all :" @@ -14539,7 +14426,7 @@ msgstr "" msgid ":doc:`via-category`" msgstr "" -msgid "``pgr_trspVia_withPoints`` - Proposed" +msgid "``pgr_trspVia_withPoints``" msgstr "" msgid "" @@ -14547,9 +14434,6 @@ msgid "" "or points with restrictions." msgstr "" -msgid "``pgr_trspVia_withPoints`` (`One Via`_)" -msgstr "" - msgid "" "Given a graph, a set of restriction on the graph edges, a set of points on " "the graphs edges and a list of vertices, this function is equivalent to " @@ -14709,30 +14593,12 @@ msgid "" "`pgr_trsp` algorithm. In this case a U turn is been done using the same edge." msgstr "" -msgid "pgr_trsp_withPoints - Proposed" +msgid "``pgr_trsp_withPoints``" msgstr "" msgid "``pgr_trsp_withPoints`` Routing Vertex/Point with restrictions." msgstr "" -msgid "New proposed signatures:" -msgstr "" - -msgid "``pgr_trsp_withPoints`` (`One to One`_)" -msgstr "" - -msgid "``pgr_trsp_withPoints`` (`One to Many`_)" -msgstr "" - -msgid "``pgr_trsp_withPoints`` (`Many to One`_)" -msgstr "" - -msgid "``pgr_trsp_withPoints`` (`Many to Many`_)" -msgstr "" - -msgid "``pgr_trsp_withPoints`` (`Combinations`_)" -msgstr "" - msgid "" "Modify the graph to include points defined by points_sql. Using Dijkstra " "algorithm, find the shortest path" @@ -14842,18 +14708,14 @@ msgid "" "`1` on an undirected graph, with details." msgstr "" -msgid "pgr_turnRestrictedPath - Experimental" +msgid "``pgr_turnRestrictedPath`` - Experimental" msgstr "" msgid "" -"``pgr_turnRestrictedPath`` Using Yen's algorithm Vertex -Vertex routing with " -"restrictions" +"``pgr_turnRestrictedPath`` Using Yen's algorithm Vertex - Vertex routing " +"with restrictions" msgstr "" -#, fuzzy -msgid "New experimental function" -msgstr "新しい **公式** 機能" - msgid "" "Using Yen's algorithm to obtain K shortest paths and analyze the paths to " "select the paths that do not use the restrictions" @@ -14925,7 +14787,7 @@ msgstr "" msgid "pgRouting Version for this documentation" msgstr "" -msgid "pgr_vrpOneDepot - Experimental" +msgid "``pgr_vrpOneDepot`` - Experimental" msgstr "" msgid "**No documentation available**" @@ -14934,8 +14796,9 @@ msgstr "" msgid "**TBD**" msgstr "" -msgid "``pgr_withPoints`` - Proposed" -msgstr "" +#, fuzzy +msgid "``pgr_withPoints``" +msgstr "pgr_TSP" msgid "" "``pgr_withPoints`` - Returns the shortest path in a graph with additional " @@ -15077,7 +14940,7 @@ msgstr "" msgid "Passes in front or visits with left side driving." msgstr "" -msgid "``pgr_withPointsCost`` - Proposed" +msgid "``pgr_withPointsCost``" msgstr "" msgid "" @@ -15221,7 +15084,7 @@ msgstr "" msgid "Does not matter driving side driving topology" msgstr "" -msgid "``pgr_withPointsCostMatrix`` - proposed" +msgid "``pgr_withPointsCostMatrix``" msgstr "" msgid "" @@ -15253,7 +15116,7 @@ msgid "" "locations on the graph of point `(2.9, 1.8)`." msgstr "" -msgid "``pgr_withPointsDD`` - Proposed" +msgid "``pgr_withPointsDD``" msgstr "" msgid "" @@ -15266,7 +15129,10 @@ msgid "" "unnamed compulsory **driving side**." msgstr "" -msgid "``pgr_withPointsDD`` (`Single vertex`)" +msgid "pgr_withPointsDD(Single vertex)" +msgstr "" + +msgid "pgr_withPointsDD(Multiple vertices)" msgstr "" msgid "Added ``depth``, ``pred`` and ``start_vid`` column." @@ -15284,13 +15150,12 @@ msgid "" msgstr "" msgid "" -"``pgr_withpointsdd(text,text,bigint,double precision,boolean,character," -"boolean)``" +"pgr_withpointsdd(text,text,bigint,double precision,boolean,character,boolean)" msgstr "" msgid "" -"``pgr_withpointsdd(text,text,anyarray,double precision,boolean,character," -"boolean,boolean)``" +"pgr_withpointsdd(text,text,anyarray,double precision,boolean,character," +"boolean,boolean)" msgstr "" msgid "" @@ -15401,8 +15266,9 @@ msgstr "" msgid ":doc:`pgr_alphaShape`" msgstr "" -msgid "pgr_withPointsKSP - Proposed" -msgstr "" +#, fuzzy +msgid "``pgr_withPointsKSP``" +msgstr "pgr_TSP" msgid "" "``pgr_withPointsKSP`` — Yen's algorithm for K shortest paths using Dijkstra." @@ -15411,27 +15277,23 @@ msgstr "" msgid "Standarizing output columns to |nksp-result|" msgstr "" -msgid "``pgr_withPointsKSP`` (One to One)" +msgid "pgr_withPointsKSP(One to One)" msgstr "" -#, fuzzy -msgid "New overload functions" -msgstr "新しい **公式** 機能" - -msgid "``pgr_withPointsKSP`` (One to Many)" +msgid "pgr_withPointsKSP(One to Many)" msgstr "" -msgid "``pgr_withPointsKSP`` (Many to One)" +msgid "pgr_withPointsKSP(Many to One)" msgstr "" -msgid "``pgr_withPointsKSP`` (Many to Many)" +msgid "pgr_withPointsKSP(Many to Many)" msgstr "" -msgid "``pgr_withPointsKSP`` (Combinations)" +msgid "pgr_withPointsKSP(Combinations)" msgstr "" msgid "" -"``pgr_withpointsksp(text,text,bigint,bigint,integer,boolean,boolean,char," +"pgr_withpointsksp(text,text,bigint,bigint,integer,boolean,boolean,char," "boolean)``" msgstr "" @@ -15553,7 +15415,7 @@ msgid "" "to point :math:`2` with heap paths and details." msgstr "" -msgid "``pgr_withPointsVia`` - Proposed" +msgid "``pgr_withPointsVia``" msgstr "" msgid "" @@ -15561,9 +15423,6 @@ msgid "" "points." msgstr "" -msgid "New **proposed** function ``pgr_withPointsVia`` (`One Via`_)" -msgstr "" - msgid "" "Given a graph, a set of points on the graphs edges and a list of vertices, " "this function is equivalent to finding the shortest path between :math:" @@ -15643,69 +15502,233 @@ msgstr "" msgid ":doc:`pgr_withPointsDD` - Driving distance." msgstr "" -msgid ":doc:`pgr_withPointsVia` - Via routing" +msgid ":doc:`pgr_withPointsVia` - Via routing" +msgstr "" + +msgid "" +":doc:`pgr_lineGraph` - Transformation algorithm for generating a Line Graph." +msgstr "" + +msgid ":doc:`withPoints-family` - Functions based on Dijkstra algorithm." +msgstr "" + +msgid "From the :doc:`TRSP-family`:" +msgstr "" + +#, fuzzy +msgid "Reference" +msgstr "参照" + +msgid "Release Notes" +msgstr "" + +msgid "" +"To see the full list of changes check the list of `Git commits `_ on Github." +msgstr "" + +msgid "Mayors" +msgstr "" + +msgid "pgRouting 4" +msgstr "" + +msgid "Minors 4.x" +msgstr "" + +msgid "pgRouting 4.0" +msgstr "" + +msgid "pgRouting 3" +msgstr "" + +msgid "Minors 3.x" +msgstr "" + +msgid "pgRouting 3.8" +msgstr "" + +msgid "pgRouting 3.8.0 Release Notes" +msgstr "" + +msgid "Promotion to official function of pgRouting." +msgstr "" + +msgid "pgr_extractVertices" +msgstr "" + +msgid "pgr_degree" +msgstr "" + +msgid "pgr_findCloseEdges" +msgstr "" + +msgid "Official functions changes" +msgstr "" + +msgid "" +"`#2786 `__: " +"pgr_contraction" +msgstr "" + +#, fuzzy +msgid "New proposed functions" +msgstr "新しい **公式** 機能" + +#, fuzzy +msgid "Contraction" +msgstr "序章" + +msgid "" +"`#2790 `__: " +"pgr_contractionDeadEnd" +msgstr "" + +msgid "" +"`#2791 `__: " +"pgr_contractionLinear" +msgstr "" + +msgid "pgRouting 3.7" +msgstr "" + +msgid "pgRouting 3.7.3 Release Notes" +msgstr "" + +msgid "" +"To see all issues & pull requests closed by this release see the `Git closed " +"milestone for 3.7.3 `__" +msgstr "" + +msgid "" +"`#2731 `__ Build Failure " +"on Ubuntu 22" +msgstr "" + +msgid "pgRouting 3.7.2 Release Notes" +msgstr "" + +msgid "" +"To see all issues & pull requests closed by this release see the `Git closed " +"milestone for 3.7.2 `__" +msgstr "" + +msgid "Build" +msgstr "" + +msgid "" +"`#2713 `__ cmake missing " +"some policies and min version" +msgstr "" + +msgid "Using OLD policies: CMP0148, CMP0144, CMP0167" +msgstr "" + +msgid "Minimum cmake version 3.12" +msgstr "" + +msgid "" +"`#2707 `__ Build failure " +"in pgRouting 3.7.1 on Alpine" +msgstr "" + +msgid "" +"`#2706 `__ winnie crashing " +"on pgr_betweennessCentrality" +msgstr "" + +msgid "pgRouting 3.7.1 Release Notes" +msgstr "" + +msgid "" +"To see all issues & pull requests closed by this release see the `Git closed " +"milestone for 3.7.1 `__" +msgstr "" + +msgid "" +"`#2680 `__ fails to " +"compile under mingw64 gcc 13.2" +msgstr "" + +msgid "" +"`#2689 `__ When point is a " +"vertex, the withPoints family do not return results." msgstr "" -msgid "These proposed functions do not modify the database." +msgid "C/C++ code enhancemet" msgstr "" -msgid "" -":doc:`pgr_degree` - Returns a set of vertices and corresponding count of " -"incidet edges to the vertex." +#, fuzzy +msgid "TRSP family" +msgstr ":doc:`TSP-family`" + +msgid "pgRouting 3.7.0 Release Notes" msgstr "" msgid "" -":doc:`pgr_extractVertices` - Extracts vertex information based on the edge " -"table information." +"To see all issues & pull requests closed by this release see the `Git closed " +"milestone for 3.7.0 `__" msgstr "" msgid "" -":doc:`pgr_lineGraph` - Transformation algorithm for generating a Line Graph." +"`#2656 `__ Stop support of " +"PostgreSQL12 on pgrouting v3.7" msgstr "" -msgid ":doc:`pgr_withPointsVia`" +msgid "Stopping support of PostgreSQL 12" msgstr "" -msgid ":doc:`pgr_trspVia`" +msgid "CI does not test for PostgreSQL 12" msgstr "" -msgid ":doc:`pgr_trspVia_withPoints`" +msgid "New experimental functions" msgstr "" -msgid ":doc:`withPoints-family` - Functions based on Dijkstra algorithm." +msgid "Metrics" msgstr "" -msgid "From the :doc:`TRSP-family`:" +msgid "pgr_betweennessCentrality" msgstr "" -msgid "Utilities" +msgid "" +"`#2605 `__ Standardize " +"spanning tree functions output" msgstr "" -msgid ":doc:`pgr_findCloseEdges`" +msgid "Functions:" msgstr "" -#, fuzzy -msgid "Reference" -msgstr "参照" - -msgid "Release Notes" +msgid "Experimental promoted to proposed." msgstr "" msgid "" -"To see the full list of changes check the list of `Git commits `_ on Github." +"`#2635 `__ pgr_LineGraph " +"ignores directed flag and use negative values for identifiers." msgstr "" -msgid "Mayors" +msgid "``pgr_lineGraph``" msgstr "" -msgid "pgRouting 3" +msgid "Code enhancement" msgstr "" -msgid "Minors 3.x" +msgid "" +"`#2599 `__ Driving " +"distance cleanup" msgstr "" -msgid "pgRouting 3.7" +msgid "" +"`#2607 `__ Read postgresql " +"data on C++" +msgstr "" + +msgid "" +"`#2614 `__ Clang tidy does " +"not work" msgstr "" msgid "pgRouting 3.6" @@ -15720,9 +15743,6 @@ msgid "" "utf8=%E2%9C%93&q=milestone%3A%22Release%203.6.3%22>`__" msgstr "" -msgid "Build" -msgstr "" - msgid "Explicit minimum requirements:" msgstr "" @@ -15825,43 +15845,26 @@ msgid "" msgstr "" msgid "" -"`#2516 `__ Standarize " +"`#2516 `__ Standardize " "output pgr_aStar" msgstr "" -msgid "" -"``pgr_aStar`` (`One to One`) added ``start_vid`` and ``end_vid`` columns." -msgstr "" - -msgid "``pgr_aStar`` (`One to Many`) added ``end_vid`` column." -msgstr "" - -msgid "``pgr_aStar`` (`Many to One`) added ``start_vid`` column." +msgid "Standardize output columns to |short-generic-result|" msgstr "" msgid "" -"`#2523 `__ Standarize " +"`#2523 `__ Standardize " "output pgr_bdAstar" msgstr "" msgid "" -"``pgr_bdAstar`` (`One to One`) added ``start_vid`` and ``end_vid`` columns." -msgstr "" - -msgid "``pgr_bdAstar`` (`One to Many`) added ``end_vid`` column." -msgstr "" - -msgid "``pgr_bdAstar`` (`Many to One`) added ``start_vid`` column." -msgstr "" - -msgid "" -"`#2547 `__ Standarize " +"`#2547 `__ Standardize " "output and modifying signature pgr_KSP" msgstr "" msgid "" -"`#2548 `__ Standarize " -"output pgr_drivingdistance" +"`#2548 `__ Standardize " +"output pgr_drivingDistance" msgstr "" #, fuzzy @@ -15869,12 +15872,12 @@ msgid "Proposed functions changes" msgstr "次期リリース予定の機能。" msgid "" -"`#2544 `__ Standarize " +"`#2544 `__ Standardize " "output and modifying signature pgr_withPointsDD" msgstr "" msgid "" -"`#2546 `__ Standarize " +"`#2546 `__ Standardize " "output and modifying signature pgr_withPointsKSP" msgstr "" @@ -15918,11 +15921,11 @@ msgid "" "history links." msgstr "" -msgid "..rubric:: SQL standarization" +msgid "..rubric:: Standardize SQL" msgstr "" msgid "" -"`#2555 `__ standarize " +"`#2555 `__ Standardize " "deprecated messages" msgstr "" @@ -15949,9 +15952,6 @@ msgstr "ドキュメントには改良が必要な場合があります。" msgid "Changes on the documentation to the following:" msgstr "" -msgid "pgr_degree" -msgstr "" - msgid "pgr_dijkstra" msgstr "" @@ -15969,7 +15969,7 @@ msgstr "" msgid "" "`#2565 `__ " -"pgr_pgr_lengauerTarjanDominatorTree triggers an assertion" +"pgr_lengauerTarjanDominatorTree triggers an assertion" msgstr "" msgid "SQL enhancements" @@ -16009,16 +16009,6 @@ msgstr "" msgid "Dijkstra" msgstr "" -msgid "" -"``pgr_dijkstra`` (`One to One`) added ``start_vid`` and ``end_vid`` columns." -msgstr "" - -msgid "``pgr_dijkstra`` (`One to Many`) added ``end_vid`` column." -msgstr "" - -msgid "``pgr_dijkstra`` (`Many to One`) added ``start_vid`` column." -msgstr "" - msgid "pgRouting 3.4" msgstr "" @@ -16075,13 +16065,14 @@ msgid "" "doesn't give all correct shortest path" msgstr "" -msgid "New proposed functions" -msgstr "" +#, fuzzy +msgid "New proposed functions." +msgstr "新しい **公式** 機能" msgid "With points" msgstr "" -msgid "``pgr_withPointsVia`` (One Via)" +msgid "pgr_withPointsVia(One Via)" msgstr "" msgid "Turn Restrictions" @@ -16090,82 +16081,67 @@ msgstr "" msgid "Via with turn restrictions" msgstr "" -msgid "``pgr_trspVia`` (One Via)" -msgstr "" - -msgid "``pgr_trspVia_withPoints`` (One Via)" -msgstr "" - -msgid "``pgr_trsp``" -msgstr "" - -msgid "``pgr_trsp`` (One to One)" -msgstr "" - -msgid "``pgr_trsp`` (One to Many)" +msgid "pgr_trspVia(One Via)" msgstr "" -msgid "``pgr_trsp`` (Many to One)" +msgid "pgr_trspVia_withPoints(One Via)" msgstr "" -msgid "``pgr_trsp`` (Many to Many)" +msgid "pgr_trsp_withPoints(One to One)" msgstr "" -msgid "``pgr_trsp`` (Combinations)" +msgid "pgr_trsp_withPoints(One to Many)" msgstr "" -msgid "``pgr_trsp_withPoints``" -msgstr "" - -msgid "``pgr_trsp_withPoints`` (One to One)" +msgid "pgr_trsp_withPoints(Many to One)" msgstr "" -msgid "``pgr_trsp_withPoints`` (One to Many)" +msgid "pgr_trsp_withPoints(Many to Many)" msgstr "" -msgid "``pgr_trsp_withPoints`` (Many to One)" +msgid "pgr_trsp_withPoints(Combinations)" msgstr "" -msgid "``pgr_trsp_withPoints`` (Many to Many)" +msgid "Topology" msgstr "" -msgid "``pgr_trsp_withPoints`` (Combinations)" +msgid "Utilities" msgstr "" -msgid "Topology" +msgid "pgr_findCloseEdges(One point)" msgstr "" -msgid "``pgr_degree``" +msgid "pgr_findCloseEdges(Many points)" msgstr "" -msgid "``pgr_findCloseEdges`` (One point)" +msgid "Ordering" msgstr "" -msgid "``pgr_findCloseEdges`` (Many points)" +msgid "pgr_cuthillMckeeOrdering" msgstr "" -msgid "Ordering" +msgid "Unclassified" msgstr "" -msgid "``pgr_cuthillMckeeOrdering``" +msgid "pgr_hawickCircuits" msgstr "" msgid "Flow functions" msgstr "" -msgid "``pgr_maxCardinalityMatch(text)``" +msgid "pgr_maxCardinalityMatch(text)" msgstr "" -msgid "Deprecating ``pgr_maxCardinalityMatch(text,boolean)``" +msgid "Deprecating: pgr_maxCardinalityMatch(text,boolean)" msgstr "" msgid "Deprecated Functions" msgstr "" -msgid "``pgr_trsp(text,integer,float8,integer,float8,boolean,boolean,text)``" +msgid "pgr_trsp(text,integer,float8,integer,float8,boolean,boolean,text)" msgstr "" -msgid "``pgr_trspViaEdges(text,integer[],float[],boolean,boolean,text)``" +msgid "pgr_trspViaEdges(text,integer[],float[],boolean,boolean,text)" msgstr "" msgid "pgRouting 3.3" @@ -16351,9 +16327,6 @@ msgstr "" msgid "pgr_sequentialVertexColoring" msgstr "" -msgid "pgr_extractVertices" -msgstr "" - msgid "Traversal" msgstr "" @@ -16427,12 +16400,6 @@ msgstr "" msgid "Removing support for Boost v1.53, v1.54 & v1.55" msgstr "" -msgid "pgr_bellmanFord(Combinations)" -msgstr "" - -msgid "pgr_binaryBreadthFirstSearch(Combinations)" -msgstr "" - msgid "pgr_bipartite" msgstr "" @@ -16442,9 +16409,6 @@ msgstr "" msgid "Dijkstra Near" msgstr "" -msgid "pgr_edwardMoore(Combinations)" -msgstr "" - msgid "pgr_isPlanar" msgstr "" @@ -16454,51 +16418,15 @@ msgstr "" msgid "pgr_makeConnected" msgstr "" -msgid "pgr_maxFlowMinCost(Combinations)" -msgstr "" - -msgid "pgr_maxFlowMinCost_Cost(Combinations)" -msgstr "" - msgid "Astar" msgstr "" -msgid "pgr_aStar(Combinations)" -msgstr "" - -msgid "pgr_aStarCost(Combinations)" -msgstr "" - msgid "Bidirectional Astar" msgstr "" -msgid "pgr_bdAstar(Combinations)" -msgstr "" - -msgid "pgr_bdAstarCost(Combinations)" -msgstr "" - msgid "Bidirectional Dijkstra" msgstr "" -msgid "pgr_bdDijkstra(Combinations)" -msgstr "" - -msgid "pgr_bdDijkstraCost(Combinations)" -msgstr "" - -msgid "pgr_boykovKolmogorov(Combinations)" -msgstr "" - -msgid "pgr_edmondsKarp(Combinations)" -msgstr "" - -msgid "pgr_maxFlow(Combinations)" -msgstr "" - -msgid "pgr_pushRelabel(Combinations)" -msgstr "" - msgid "pgRouting 3.1" msgstr "" @@ -16733,7 +16661,7 @@ msgid "" "information" msgstr "" -msgid "New functions" +msgid "New Functions" msgstr "" msgid "Kruskal family" @@ -16772,148 +16700,94 @@ msgstr "" msgid "aStar Family" msgstr "" -msgid "pgr_aStar(one to many)" -msgstr "" - -msgid "pgr_aStar(many to one)" -msgstr "" - -msgid "pgr_aStar(many to many)" -msgstr "" - -msgid "pgr_aStarCost(one to one)" -msgstr "" - -msgid "pgr_aStarCost(one to many)" -msgstr "" - -msgid "pgr_aStarCost(many to one)" -msgstr "" - -msgid "pgr_aStarCost(many to many)" +msgid "pgr_aStarCost(One to One)" msgstr "" -msgid "pgr_aStarCostMatrix(one to one)" +msgid "pgr_aStarCost(One to Many)" msgstr "" -msgid "pgr_aStarCostMatrix(one to many)" +msgid "pgr_aStarCost(Many to One)" msgstr "" -msgid "pgr_aStarCostMatrix(many to one)" +msgid "pgr_aStarCost(Many to Many)" msgstr "" -msgid "pgr_aStarCostMatrix(many to many)" +msgid "pgr_aStarCostMatrix" msgstr "" msgid "bdAstar Family" msgstr "" -msgid "pgr_bdAstar(one to many)" -msgstr "" - -msgid "pgr_bdAstar(many to one)" -msgstr "" - -msgid "pgr_bdAstar(many to many)" -msgstr "" - -msgid "pgr_bdAstarCost(one to one)" -msgstr "" - -msgid "pgr_bdAstarCost(one to many)" -msgstr "" - -msgid "pgr_bdAstarCost(many to one)" -msgstr "" - -msgid "pgr_bdAstarCost(many to many)" +msgid "pgr_bdAstarCost(One to One)" msgstr "" -msgid "pgr_bdAstarCostMatrix(one to one)" +msgid "pgr_bdAstarCost(One to Many)" msgstr "" -msgid "pgr_bdAstarCostMatrix(one to many)" +msgid "pgr_bdAstarCost(Many to One)" msgstr "" -msgid "pgr_bdAstarCostMatrix(many to one)" +msgid "pgr_bdAstarCost(Many to Many)" msgstr "" -msgid "pgr_bdAstarCostMatrix(many to many)" +msgid "pgr_bdAstarCostMatrix" msgstr "" msgid "bdDijkstra Family" msgstr "" -msgid "pgr_bdDijkstra(one to many)" -msgstr "" - -msgid "pgr_bdDijkstra(many to one)" -msgstr "" - -msgid "pgr_bdDijkstra(many to many)" -msgstr "" - -msgid "pgr_bdDijkstraCost(one to one)" -msgstr "" - -msgid "pgr_bdDijkstraCost(one to many)" -msgstr "" - -msgid "pgr_bdDijkstraCost(many to one)" -msgstr "" - -msgid "pgr_bdDijkstraCost(many to many)" +msgid "pgr_bdDijkstraCost(One to One)" msgstr "" -msgid "pgr_bdDijkstraCostMatrix(one to one)" +msgid "pgr_bdDijkstraCost(One to Many)" msgstr "" -msgid "pgr_bdDijkstraCostMatrix(one to many)" +msgid "pgr_bdDijkstraCost(Many to One)" msgstr "" -msgid "pgr_bdDijkstraCostMatrix(many to one)" +msgid "pgr_bdDijkstraCost(Many to Many)" msgstr "" -msgid "pgr_bdDijkstraCostMatrix(many to many)" +msgid "pgr_bdDijkstraCostMatrix" msgstr "" msgid "Flow Family" msgstr "" -msgid "pgr_pushRelabel(one to one)" +msgid "pgr_pushRelabel(One to One)" msgstr "" -msgid "pgr_pushRelabel(one to many)" +msgid "pgr_pushRelabel(One to Many)" msgstr "" -msgid "pgr_pushRelabel(many to one)" +msgid "pgr_pushRelabel(Many to One)" msgstr "" -msgid "pgr_pushRelabel(many to many)" +msgid "pgr_pushRelabel(Many to Many)" msgstr "" -msgid "pgr_edmondsKarp(one to one)" +msgid "pgr_edmondsKarp(One to One)" msgstr "" -msgid "pgr_edmondsKarp(one to many)" +msgid "pgr_edmondsKarp(One to Many)" msgstr "" -msgid "pgr_edmondsKarp(many to one)" +msgid "pgr_edmondsKarp(Many to One)" msgstr "" -msgid "pgr_edmondsKarp(many to many)" +msgid "pgr_edmondsKarp(Many to Many)" msgstr "" -msgid "pgr_boykovKolmogorov (one to one)" +msgid "pgr_boykovKolmogorov (One to One)" msgstr "" -msgid "pgr_boykovKolmogorov (one to many)" +msgid "pgr_boykovKolmogorov (One to Many)" msgstr "" -msgid "pgr_boykovKolmogorov (many to one)" +msgid "pgr_boykovKolmogorov (Many to One)" msgstr "" -msgid "pgr_boykovKolmogorov (many to many)" +msgid "pgr_boykovKolmogorov (Many to Many)" msgstr "" msgid "pgr_maxCardinalityMatching" @@ -16922,21 +16796,24 @@ msgstr "" msgid "pgr_maxFlow" msgstr "" -msgid "pgr_edgeDisjointPaths(one to one)" +msgid "pgr_edgeDisjointPaths(One to One)" msgstr "" -msgid "pgr_edgeDisjointPaths(one to many)" +msgid "pgr_edgeDisjointPaths(One to Many)" msgstr "" -msgid "pgr_edgeDisjointPaths(many to one)" +msgid "pgr_edgeDisjointPaths(Many to One)" msgstr "" -msgid "pgr_edgeDisjointPaths(many to many)" +msgid "pgr_edgeDisjointPaths(Many to Many)" msgstr "" msgid "Components family" msgstr "" +msgid "pgr_connectedComponents" +msgstr "" + msgid "pgr_strongComponents" msgstr "" @@ -17123,7 +17000,7 @@ msgstr "" msgid "pgr_johnson" msgstr "" -msgid "pgr_astar" +msgid "pgr_aStar" msgstr "" msgid "pgr_bdAstar" @@ -17144,6 +17021,9 @@ msgstr "" msgid "pgr_drivingDistance" msgstr "" +msgid "pgr_KSP" +msgstr "" + msgid "pgr_dijkstraVia (proposed)" msgstr "" @@ -17342,22 +17222,13 @@ msgstr "" msgid "Parameter names changed" msgstr "" -msgid "The many version results are the union of the one to one version" +msgid "The many version results are the union of the One to One version" msgstr "" msgid "New Signatures" msgstr "" -msgid "pgr_bdAstar(one to one)" -msgstr "" - -msgid "New Proposed functions" -msgstr "" - -msgid "pgr_bdAstarCostMatrix" -msgstr "" - -msgid "pgr_bdDijkstraCostMatrix" +msgid "pgr_bdAstar(One to One)" msgstr "" msgid "pgr_lineGraph" @@ -17440,31 +17311,7 @@ msgstr "" msgid "pgr_bdDijkstra" msgstr "" -msgid "New Proposed Signatures" -msgstr "" - -msgid "pgr_astar(one to many)" -msgstr "" - -msgid "pgr_astar(many to one)" -msgstr "" - -msgid "pgr_astar(many to many)" -msgstr "" - -msgid "pgr_astarCost(one to one)" -msgstr "" - -msgid "pgr_astarCost(one to many)" -msgstr "" - -msgid "pgr_astarCost(many to one)" -msgstr "" - -msgid "pgr_astarCost(many to many)" -msgstr "" - -msgid "pgr_astarCostMatrix" +msgid "Deprecated signatures." msgstr "" msgid "pgr_bddijkstra - use pgr_bdDijkstra instead" @@ -17536,52 +17383,43 @@ msgstr "" msgid "pgr_TSP" msgstr "pgr_TSP" -msgid "pgr_aStar" -msgstr "" - -msgid "New Functions" -msgstr "" - msgid "pgr_eucledianTSP" msgstr "" -msgid "pgr_withPointsCostMatrix" -msgstr "" - -msgid "pgr_maxFlowPushRelabel(one to one)" +msgid "pgr_maxFlowPushRelabel(One to One)" msgstr "" -msgid "pgr_maxFlowPushRelabel(one to many)" +msgid "pgr_maxFlowPushRelabel(One to Many)" msgstr "" -msgid "pgr_maxFlowPushRelabel(many to one)" +msgid "pgr_maxFlowPushRelabel(Many to One)" msgstr "" -msgid "pgr_maxFlowPushRelabel(many to many)" +msgid "pgr_maxFlowPushRelabel(Many to Many)" msgstr "" -msgid "pgr_maxFlowEdmondsKarp(one to one)" +msgid "pgr_maxFlowEdmondsKarp(One to One)" msgstr "" -msgid "pgr_maxFlowEdmondsKarp(one to many)" +msgid "pgr_maxFlowEdmondsKarp(One to Many)" msgstr "" -msgid "pgr_maxFlowEdmondsKarp(many to one)" +msgid "pgr_maxFlowEdmondsKarp(Many to One)" msgstr "" -msgid "pgr_maxFlowEdmondsKarp(many to many)" +msgid "pgr_maxFlowEdmondsKarp(Many to Many)" msgstr "" -msgid "pgr_maxFlowBoykovKolmogorov (one to one)" +msgid "pgr_maxFlowBoykovKolmogorov (One to One)" msgstr "" -msgid "pgr_maxFlowBoykovKolmogorov (one to many)" +msgid "pgr_maxFlowBoykovKolmogorov (One to Many)" msgstr "" -msgid "pgr_maxFlowBoykovKolmogorov (many to one)" +msgid "pgr_maxFlowBoykovKolmogorov (Many to One)" msgstr "" -msgid "pgr_maxFlowBoykovKolmogorov (many to many)" +msgid "pgr_maxFlowBoykovKolmogorov (Many to Many)" msgstr "" msgid "pgr_maximumCardinalityMatching" @@ -17593,7 +17431,7 @@ msgstr "" msgid "pgr_tsp - use pgr_TSP or pgr_eucledianTSP instead" msgstr "" -msgid "pgr_astar - use pgr_aStar instead" +msgid "pgr_aStar - use pgr_aStar instead" msgstr "" msgid "pgr_flip_edges" @@ -17680,6 +17518,9 @@ msgstr "" msgid "Improvements" msgstr "" +msgid "pgr_nodeNetwork" +msgstr "" + msgid "Adding a row_where and outall optional parameters" msgstr "" @@ -17692,44 +17533,44 @@ msgstr "" msgid "pgr_Johnson" msgstr "" -msgid "pgr_dijkstraCost(one to one)" +msgid "pgr_dijkstraCost(One to One)" msgstr "" -msgid "pgr_dijkstraCost(one to many)" +msgid "pgr_dijkstraCost(One to Many)" msgstr "" -msgid "pgr_dijkstraCost(many to one)" +msgid "pgr_dijkstraCost(Many to One)" msgstr "" -msgid "pgr_dijkstraCost(many to many)" +msgid "pgr_dijkstraCost(Many to Many)" msgstr "" #, fuzzy msgid "Proposed Functionality" msgstr "次期リリース予定の機能。" -msgid "pgr_withPoints(one to one)" +msgid "pgr_withPoints(One to One)" msgstr "" -msgid "pgr_withPoints(one to many)" +msgid "pgr_withPoints(One to Many)" msgstr "" -msgid "pgr_withPoints(many to one)" +msgid "pgr_withPoints(Many to One)" msgstr "" -msgid "pgr_withPoints(many to many)" +msgid "pgr_withPoints(Many to Many)" msgstr "" -msgid "pgr_withPointsCost(one to one)" +msgid "pgr_withPointsCost(One to One)" msgstr "" -msgid "pgr_withPointsCost(one to many)" +msgid "pgr_withPointsCost(One to Many)" msgstr "" -msgid "pgr_withPointsCost(many to one)" +msgid "pgr_withPointsCost(Many to One)" msgstr "" -msgid "pgr_withPointsCost(many to many)" +msgid "pgr_withPointsCost(Many to Many)" msgstr "" msgid "pgr_withPointsDD(single vertex)" @@ -17738,9 +17579,6 @@ msgstr "" msgid "pgr_withPointsDD(multiple vertices)" msgstr "" -msgid "pgr_withPointsKSP" -msgstr "" - msgid "pgr_dijkstraVia" msgstr "" @@ -17774,25 +17612,10 @@ msgid "" "q=is%3Aissue+milestone%3A%22Release+2.1.0%22+is%3Aclosed>`_ on Github." msgstr "" -msgid "pgr_dijkstra(one to many)" -msgstr "" - -msgid "pgr_dijkstra(many to one)" -msgstr "" - -msgid "pgr_dijkstra(many to many)" -msgstr "" - -msgid "pgr_drivingDistance(multiple vertices)" -msgstr "" - msgid "Refactored" msgstr "" -msgid "pgr_dijkstra(one to one)" -msgstr "" - -msgid "pgr_drivingDistance(single vertex)" +msgid "pgr_dijkstra(One to One)" msgstr "" msgid "" @@ -18131,8 +17954,8 @@ msgstr "サンプルデータ" msgid "" "The documentation provides very simple example queries based on a small " -"sample network that resembles a city. To be able to execute the mayority of " -"the examples queries, follow the instructions bellow." +"sample network that resembles a city. To be able to execute the majority of " +"the examples queries, follow the instructions below." msgstr "" msgid "Main graph" @@ -18146,7 +17969,8 @@ msgstr "" msgid "" "Information known at this point is the geometry of the edges, cost values, " -"cpacity values, category values and some locations that are not in the graph." +"capacity values, category values and some locations that are not in the " +"graph." msgstr "" msgid "" @@ -18154,14 +17978,11 @@ msgid "" "that everything else is calculated." msgstr "" -msgid "Edges" -msgstr "" - msgid "" "The database design for the documentation of pgRouting, keeps in the same " "row 2 segments, one in the direction of the geometry and the second in the " -"oposite direction. Therfore some information has the ``reverse_`` prefix " -"which corresponds to the segment on the oposite direction of the geometry." +"opposite direction. Therefore some information has the ``reverse_`` prefix " +"which corresponds to the segment on the opposite direction of the geometry." msgstr "" msgid "Identifier of the starting vertex of the geometry ``geom``." @@ -18192,7 +18013,7 @@ msgid ":math:`x` coordinate of the starting vertex of the geometry." msgstr "" msgid "" -"For convinience it is saved on the table but can be calculated as " +"For convenience it is saved on the table but can be calculated as " "``ST_X(ST_StartPoint(geom))``." msgstr "" @@ -18200,7 +18021,7 @@ msgid ":math:`y` coordinate of the ending vertex of the geometry." msgstr "" msgid "" -"For convinience it is saved on the table but can be calculated as " +"For convenience it is saved on the table but can be calculated as " "``ST_Y(ST_EndPoint(geom))``." msgstr "" @@ -18211,8 +18032,8 @@ msgid "Starting on PostgreSQL 12::" msgstr "" msgid "" -"Optionally indexes on different columns can be created. The recomendation is " -"to have" +"Optionally indexes on different columns can be created. The recommendation " +"is to have" msgstr "" msgid "``id`` indexed." @@ -18223,7 +18044,7 @@ msgid "" msgstr "" msgid "" -"``geom`` indexed to speed up gemetry processes that might be needed in the " +"``geom`` indexed to speed up geometry processes that might be needed in the " "front end." msgstr "" @@ -18292,7 +18113,7 @@ msgid "" msgstr "" msgid "" -"For convinence of this documentations, some combinations will be stored on a " +"For convenience of this documentation, some combinations will be stored on a " "table:" msgstr "" @@ -18502,8 +18323,8 @@ msgid "" msgstr "" msgid "" -"pgRouting suplies some functions to create a routing topology and to analyze " -"the topology." +"pgRouting supplies some functions to create a routing topology and to " +"analyze the topology." msgstr "" msgid "Additional functions to create a graph:" @@ -18524,7 +18345,7 @@ msgstr "" msgid "Traversal - Family of functions" msgstr "" -msgid "Aditionaly there are 2 categories under this family" +msgid "Additionally there are 2 categories under this family" msgstr "" msgid "Via - Category" @@ -18539,7 +18360,7 @@ msgid "" msgstr "" msgid "" -"In other words, find a continuos route that visits all the vertices in the " +"In other words, find a continuous route that visits all the vertices in the " "order given." msgstr "" @@ -18913,3 +18734,4 @@ msgstr "" msgid "pgr_withPointsvia is pgr_dijkstraVia **with points**" msgstr "" + diff --git a/locale/ko/LC_MESSAGES/index.po b/locale/ko/LC_MESSAGES/index.po index e2eb741f36..6391769b3f 100644 --- a/locale/ko/LC_MESSAGES/index.po +++ b/locale/ko/LC_MESSAGES/index.po @@ -1,11 +1,11 @@ # SOME DESCRIPTIVE TITLE. -# Copyright (C) pgRouting Contributors - Version v3.7.0 +# Copyright (C) pgRouting Contributors - Version v3.8 # This file is distributed under the same license as the pgRouting package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" -"Project-Id-Version: pgRouting v3.4.0-dev\n" +"Project-Id-Version: pgRouting v3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-06-25 12:55-0500\n" "PO-Revision-Date: 2022-11-15 15:30+0000\n" @@ -18,436 +18,3 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 4.14.1\n" - -#: ../../build/doc/index.rst:12 -msgid "**Supported versions:** `Latest `__ (`3.4 `__) `3.3 `__ `3.2 `__ `3.1 `__ `3.0 `__" -msgstr "" -"**지원되는 버전:** `최신 버전 `__ (`3.4 `__) `3.3 " -"`__ `3.2 `__ `3.1 `__ `3.0 `__" - -#: ../../build/doc/index.rst:19 -msgid "**Unsupported versions:** `2.6 `__ `2.5 `__ `2.4 `__ `2.3 `__ `2.2 `__ `2.1 `__ `2.0 `__" -msgstr "" -"**지원되지 않는 버전:** `2.6 `" -"__ `2.5 `__ `2.4 `__ `2.3 `__ `2.2 `__ `2.1 " -"`__ `2.0 `__" - -#: ../../build/doc/index.rst:30 -msgid "Table of Contents" -msgstr "목차" - -#: ../../build/doc/index.rst:32 -msgid "pgRouting extends the `PostGIS `__/`PostgreSQL `__ geospatial database to provide geospatial routing and other network analysis functionality." -msgstr "" -"pgRouting은 `PostGIS `__/`PostgreSQL `__ 지리공간 데이터베이스를 확장하여 기하공간 라우팅과 기타 " -"네트워크 분석 기능을 제공합니다." - -#: ../../build/doc/index.rst:36 -msgid "This is the manual for pgRouting |release|." -msgstr "이 문서는 pgRouting |release|를 위한 매뉴얼입니다." - -#: ../../build/doc/index.rst:None -msgid "Creative Commons Attribution-Share Alike 3.0 License" -msgstr "크리에이티브 커먼즈 저작자표시-동일조건변경허락 3.0 라이선스" - -#: ../../build/doc/index.rst:42 -msgid "The pgRouting Manual is licensed under a `Creative Commons Attribution-Share Alike 3.0 License `_. Feel free to use this material any way you like, but we ask that you attribute credit to the pgRouting Project and wherever possible, a link back to https://pgrouting.org. For other licenses used in pgRouting see the :ref:`license` page." -msgstr "" - -#: ../../build/doc/index.rst:50 -msgid "General" -msgstr "개요" - -#: ../../build/doc/index.rst:60 -msgid ":doc:`sampledata` that is used in the examples of this manual." -msgstr ":doc:`sampledata` 는 이 매뉴얼의 예제로 사용됩니다." - -#: ../../build/doc/index.rst:68 -msgid "Pgrouting Concepts" -msgstr "Pgrouting 개념" - -#: ../../build/doc/index.rst:77 -msgid ":doc:`routingFunctions`" -msgstr ":doc:`routingFunctions`" - -#: ../../build/doc/routingFunctions.rst:4 -msgid ":doc:`allpairs-family`" -msgstr ":doc:`allpairs-family`" - -#: ../../build/doc/allpairs-family.rst:3 -msgid ":doc:`pgr_floydWarshall` - Floyd-Warshall's algorithm." -msgstr ":doc:`pgr_floydWarshall` - 플로이드-워셜(Floyd-Warshall) 알고리즘." - -#: ../../build/doc/allpairs-family.rst:4 -msgid ":doc:`pgr_johnson` - Johnson's algorithm" -msgstr ":doc:`pgr_johnson` - 존슨(Johnson) 알고리즘" - -#: ../../build/doc/routingFunctions.rst:10 -msgid ":doc:`aStar-family`" -msgstr ":doc:`aStar-family`" - -#: ../../build/doc/aStar-family.rst:3 -msgid ":doc:`pgr_aStar` - A* algorithm for the shortest path." -msgstr ":doc:`pgr_aStar` - A* 최단 경로 알고리즘." - -#: ../../build/doc/aStar-family.rst:4 -msgid ":doc:`pgr_aStarCost` - Get the aggregate cost of the shortest paths." -msgstr ":doc:`pgr_aStarCost` - 최단 경로의 집계 비용 반환." - -#: ../../build/doc/aStar-family.rst:5 -msgid ":doc:`pgr_aStarCostMatrix` - Get the cost matrix of the shortest paths." -msgstr ":doc:`pgr_aStarCostMatrix` - 최단 경로의 비용 행렬 반환." - -#: ../../build/doc/routingFunctions.rst:17 -msgid ":doc:`bdAstar-family`" -msgstr ":doc:`bdAstar-family`" - -#: ../../build/doc/bdAstar-family.rst:3 -msgid ":doc:`pgr_bdAstar` - Bidirectional A* algorithm for obtaining paths." -msgstr ":doc:`pgr_bdAstar` - 경로를 얻기 위한 양방향 A* 알고리즘." - -#: ../../build/doc/bdAstar-family.rst:4 -msgid ":doc:`pgr_bdAstarCost` - Bidirectional A* algorithm to calculate the cost of the paths." -msgstr ":doc:`pgr_bdAstarCost` - 경로의 비용을 계산하기 위한 양방향 A* 알고리즘." - -#: ../../build/doc/bdAstar-family.rst:6 -msgid ":doc:`pgr_bdAstarCostMatrix` - Bidirectional A* algorithm to calculate a cost matrix of paths." -msgstr ":doc:`pgr_bdAstarCostMatrix` - 경로의 비용 행렬을 계산하기 위한 양방향 A* " -"알고리즘." - -#: ../../build/doc/routingFunctions.rst:23 -msgid ":doc:`bdDijkstra-family`" -msgstr ":doc:`bdDijkstra-family`" - -#: ../../build/doc/bdDijkstra-family.rst:3 -msgid ":doc:`pgr_bdDijkstra` - Bidirectional Dijkstra algorithm for the shortest paths." -msgstr ":doc:`pgr_bdDijkstra` - 최단 경로를 위한 양방향 다익스트라 알고리즘." - -#: ../../build/doc/bdDijkstra-family.rst:5 -msgid ":doc:`pgr_bdDijkstraCost` - Bidirectional Dijkstra to calculate the cost of the shortest paths" -msgstr ":doc:`pgr_bdDijkstraCost` - 최단 경로의 비용을 계산하기 위한 양방향 " -"다익스트라 알고리즘" - -#: ../../build/doc/bdDijkstra-family.rst:7 -msgid ":doc:`pgr_bdDijkstraCostMatrix` - Bidirectional Dijkstra algorithm to create a matrix of costs of the shortest paths." -msgstr ":doc:`pgr_bdDijkstraCostMatrix` - 최단 경로의 비용 행렬을 생성하기 위한 " -"양방향 다익스트라 알고리즘." - -#: ../../build/doc/routingFunctions.rst:29 -msgid ":doc:`components-family`" -msgstr ":doc:`components-family`" - -#: ../../build/doc/components-family.rst:3 -msgid ":doc:`pgr_connectedComponents` - Connected components of an undirected graph." -msgstr ":doc:`pgr_connectedComponents` - 무방향 그래프의 연결 요소." - -#: ../../build/doc/components-family.rst:4 -msgid ":doc:`pgr_strongComponents` - Strongly connected components of a directed graph." -msgstr ":doc:`pgr_strongComponents` - 방향 그래프의 강한 연결 요소." - -#: ../../build/doc/components-family.rst:6 -msgid ":doc:`pgr_biconnectedComponents` - Biconnected components of an undirected graph." -msgstr ":doc:`pgr_biconnectedComponents` - 무방향 그래프의 이중 연결성분." - -#: ../../build/doc/components-family.rst:8 -msgid ":doc:`pgr_articulationPoints` - Articulation points of an undirected graph." -msgstr ":doc:`pgr_articulationPoints` - 무방향 그래프의 단절점." - -#: ../../build/doc/components-family.rst:9 -msgid ":doc:`pgr_bridges` - Bridges of an undirected graph." -msgstr ":doc:`pgr_bridges` - 무방향 그래프의 브릿지." - -#: ../../build/doc/routingFunctions.rst:35 -msgid ":doc:`contraction-family`" -msgstr ":doc:`contraction-family`" - -#: ../../build/doc/contraction-family.rst:3 -msgid ":doc:`pgr_contraction`" -msgstr ":doc:`pgr_contraction`" - -#: ../../build/doc/routingFunctions.rst:41 -msgid ":doc:`dijkstra-family`" -msgstr ":doc:`dijkstra-family`" - -#: ../../build/doc/dijkstra-family.rst:3 -msgid ":doc:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths." -msgstr ":doc:`pgr_dijkstra` - 최단 경로를 위한 다익스트라 알고리즘." - -#: ../../build/doc/dijkstra-family.rst:4 -msgid ":doc:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths." -msgstr "" - -#: ../../build/doc/dijkstra-family.rst:5 -msgid ":doc:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix." -msgstr "" - -#: ../../build/doc/dijkstra-family.rst:6 -msgid ":doc:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament information." -msgstr "" - -#: ../../build/doc/dijkstra-family.rst:8 -msgid ":doc:`pgr_KSP` - Use Yen algorithm with pgr_dijkstra to get the K shortest paths." -msgstr ":doc:`pgr_KSP` - K 최단 경로를 얻기 위해 pgr_dijkstra로 Yen 알고리즘을 사용." - -#: ../../build/doc/routingFunctions.rst:47 -msgid ":doc:`flow-family`" -msgstr ":doc:`flow-family`" - -#: ../../build/doc/flow-family.rst:3 -msgid ":doc:`pgr_maxFlow` - Only the Max flow calculation using Push and Relabel algorithm." -msgstr "" - -#: ../../build/doc/flow-family.rst:5 -msgid ":doc:`pgr_boykovKolmogorov` - Boykov and Kolmogorov with details of flow on edges." -msgstr "" - -#: ../../build/doc/flow-family.rst:7 -msgid ":doc:`pgr_edmondsKarp` - Edmonds and Karp algorithm with details of flow on edges." -msgstr "" - -#: ../../build/doc/flow-family.rst:9 -msgid ":doc:`pgr_pushRelabel` - Push and relabel algorithm with details of flow on edges." -msgstr "" - -#: ../../build/doc/flow-family.rst:11 -msgid "Applications" -msgstr "" - -#: ../../build/doc/flow-family.rst:13 -msgid ":doc:`pgr_edgeDisjointPaths` - Calculates edge disjoint paths between two groups of vertices." -msgstr "" - -#: ../../build/doc/flow-family.rst:15 -msgid ":doc:`pgr_maxCardinalityMatch` - Calculates a maximum cardinality matching in a graph." -msgstr "" - -#: ../../build/doc/routingFunctions.rst:53 -#: ../../build/doc/spanningTree-family.rst:3 -msgid ":doc:`kruskal-family`" -msgstr ":doc:`kruskal-family`" - -#: ../../build/doc/kruskal-family.rst:3 -msgid ":doc:`pgr_kruskal`" -msgstr ":doc:`pgr_kruskal`" - -#: ../../build/doc/kruskal-family.rst:4 -#: ../../build/doc/BFS-category.rst:3 -msgid ":doc:`pgr_kruskalBFS`" -msgstr ":doc:`pgr_kruskalBFS`" - -#: ../../build/doc/kruskal-family.rst:5 -msgid ":doc:`pgr_kruskalDD`" -msgstr ":doc:`pgr_kruskalDD`" - -#: ../../build/doc/kruskal-family.rst:6 -#: ../../build/doc/DFS-category.rst:3 -msgid ":doc:`pgr_kruskalDFS`" -msgstr ":doc:`pgr_kruskalDFS`" - -#: ../../build/doc/routingFunctions.rst:59 -#: ../../build/doc/spanningTree-family.rst:4 -msgid ":doc:`prim-family`" -msgstr ":doc:`prim-family`" - -#: ../../build/doc/prim-family.rst:3 -msgid ":doc:`pgr_prim`" -msgstr ":doc:`pgr_prim`" - -#: ../../build/doc/prim-family.rst:4 -#: ../../build/doc/BFS-category.rst:4 -msgid ":doc:`pgr_primBFS`" -msgstr ":doc:`pgr_primBFS`" - -#: ../../build/doc/prim-family.rst:5 -msgid ":doc:`pgr_primDD`" -msgstr ":doc:`pgr_primDD`" - -#: ../../build/doc/prim-family.rst:6 -#: ../../build/doc/DFS-category.rst:4 -msgid ":doc:`pgr_primDFS`" -msgstr ":doc:`pgr_primDFS`" - -#: ../../build/doc/routingFunctions.rst:65 -msgid ":doc:`reference`" -msgstr ":doc:`reference`" - -#: ../../build/doc/reference.rst:3 -msgid ":doc:`pgr_version`" -msgstr ":doc:`pgr_version`" - -#: ../../build/doc/reference.rst:4 -msgid ":doc:`pgr_full_version`" -msgstr ":doc:`pgr_full_version`" - -#: ../../build/doc/routingFunctions.rst:71 -msgid ":doc:`topology-functions`" -msgstr ":doc:`topology-functions`" - -#: ../../build/doc/topology-functions.rst:3 -msgid "The following functions modify the database directly therefore the user must have special permissions given by the administrators to use them." -msgstr "다음 함수는 데이터베이스를 직접 수정하므로 사용하려면 관리자가 부여한 특별한 " -"권한이 있어야 합니다." - -#: ../../build/doc/topology-functions.rst:6 -msgid ":doc:`pgr_createTopology` - create a topology based on the geometry." -msgstr "" - -#: ../../build/doc/topology-functions.rst:7 -msgid ":doc:`pgr_createVerticesTable` - reconstruct the vertices table based on the source and target information." -msgstr "" - -#: ../../build/doc/topology-functions.rst:9 -msgid ":doc:`pgr_analyzeGraph` - to analyze the edges and vertices of the edge table." -msgstr "" - -#: ../../build/doc/topology-functions.rst:11 -msgid ":doc:`pgr_analyzeOneWay` - to analyze directionality of the edges." -msgstr "" - -#: ../../build/doc/topology-functions.rst:12 -msgid ":doc:`pgr_nodeNetwork` -to create nodes to a not noded edge table." -msgstr "" - -#: ../../build/doc/routingFunctions.rst:77 -msgid ":doc:`TSP-family`" -msgstr ":doc:`TSP-family`" - -#: ../../build/doc/TSP-family.rst:3 -msgid ":doc:`pgr_TSP` - When input is given as matrix cell information." -msgstr "" - -#: ../../build/doc/TSP-family.rst:4 -msgid ":doc:`pgr_TSPeuclidean` - When input are coordinates." -msgstr "" - -#: ../../build/doc/routingFunctions.rst:83 -msgid ":doc:`pgr_trsp` - Turn Restriction Shortest Path (TRSP)" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:87 -msgid "Functions by categories" -msgstr "카테고리별 함수" - -#: ../../build/doc/routingFunctions.rst:89 -msgid ":doc:`cost-category`" -msgstr ":doc:`cost-category`" - -#: ../../build/doc/cost-category.rst:3 -msgid ":doc:`pgr_aStarCost`" -msgstr ":doc:`pgr_aStarCost`" - -#: ../../build/doc/cost-category.rst:4 -msgid ":doc:`pgr_bdAstarCost`" -msgstr ":doc:`pgr_bdAstarCost`" - -#: ../../build/doc/cost-category.rst:5 -msgid ":doc:`pgr_dijkstraCost`" -msgstr ":doc:`pgr_dijkstraCost`" - -#: ../../build/doc/cost-category.rst:6 -msgid ":doc:`pgr_bdDijkstraCost`" -msgstr ":doc:`pgr_bdDijkstraCost`" - -#: ../../build/doc/cost-category.rst:7 -msgid ":doc:`pgr_dijkstraNearCost`" -msgstr ":doc:`pgr_dijkstraNearCost`" - -#: ../../build/doc/routingFunctions.rst:95 -msgid ":doc:`costMatrix-category`" -msgstr ":doc:`costMatrix-category`" - -#: ../../build/doc/costMatrix-category.rst:3 -msgid ":doc:`pgr_aStarCostMatrix`" -msgstr ":doc:`pgr_aStarCostMatrix`" - -#: ../../build/doc/costMatrix-category.rst:4 -msgid ":doc:`pgr_bdAstarCostMatrix`" -msgstr ":doc:`pgr_bdAstarCostMatrix`" - -#: ../../build/doc/costMatrix-category.rst:5 -#: ../../build/doc/costMatrix-category.rst:7 -msgid ":doc:`pgr_bdDijkstraCostMatrix`" -msgstr ":doc:`pgr_bdDijkstraCostMatrix`" - -#: ../../build/doc/costMatrix-category.rst:6 -msgid ":doc:`pgr_dijkstraCostMatrix`" -msgstr ":doc:`pgr_dijkstraCostMatrix`" - -#: ../../build/doc/routingFunctions.rst:102 -msgid ":doc:`drivingDistance-category`" -msgstr ":doc:`drivingDistance-category`" - -#: ../../build/doc/drivingDistance-category.rst:3 -msgid ":doc:`pgr_drivingDistance` - Driving Distance based on Dijkstra's algorithm" -msgstr "" - -#: ../../build/doc/drivingDistance-category.rst:4 -msgid ":doc:`pgr_primDD` - Driving Distance based on Prim's algorithm" -msgstr "" - -#: ../../build/doc/drivingDistance-category.rst:5 -msgid ":doc:`pgr_kruskalDD` - Driving Distance based on Kruskal's algorithm" -msgstr "" - -#: ../../build/doc/drivingDistance-category.rst:6 -msgid "Post pocessing" -msgstr "포스트 프로세싱" - -#: ../../build/doc/drivingDistance-category.rst:8 -msgid ":doc:`pgr_alphaShape` - Alpha shape computation" -msgstr ":doc:`pgr_alphaShape` - 알파 셰이프 계산" - -#: ../../build/doc/routingFunctions.rst:108 -msgid ":doc:`KSP-category`" -msgstr ":doc:`KSP-category`" - -#: ../../build/doc/KSP-category.rst:3 -msgid ":doc:`pgr_KSP` - Yen's algorithm based on pgr_dijkstra" -msgstr ":doc:`pgr_KSP` - pgr_dijkstra 기반의 Yen 알고리즘" - -#: ../../build/doc/routingFunctions.rst:114 -msgid ":doc:`spanningTree-family`" -msgstr ":doc:`spanningTree-family`" - -#: ../../build/doc/routingFunctions.rst:120 -msgid ":doc:`BFS-category`" -msgstr ":doc:`BFS-category`" - -#: ../../build/doc/routingFunctions.rst:126 -msgid ":doc:`DFS-category`" -msgstr ":doc:`DFS-category`" - -#: ../../build/doc/index.rst:91 -msgid "Available Functions but not official pgRouting functions" -msgstr "사용 가능하지만 공식적으로 지원하지 않는 pgRouting 함수" - -#: ../../build/doc/index.rst:93 -msgid ":doc:`proposed`" -msgstr ":doc:`proposed`" - -#: ../../build/doc/index.rst:94 -msgid ":doc:`experimental`" -msgstr ":doc:`experimental`" - -#: ../../build/doc/index.rst:105 -msgid ":doc:`release_notes`" -msgstr ":doc:`release_notes`" - -#: ../../build/doc/index.rst:119 -msgid "Indices and tables" -msgstr "색인과 표" - -#: ../../build/doc/index.rst:120 -msgid ":ref:`genindex`" -msgstr ":ref:`genindex`" - -#: ../../build/doc/index.rst:121 -msgid ":ref:`search`" -msgstr ":ref:`search`" diff --git a/locale/ko/LC_MESSAGES/pgrouting_doc_strings.po b/locale/ko/LC_MESSAGES/pgrouting_doc_strings.po index 4ff70c4dd3..e8afc5ffab 100644 --- a/locale/ko/LC_MESSAGES/pgrouting_doc_strings.po +++ b/locale/ko/LC_MESSAGES/pgrouting_doc_strings.po @@ -1,13 +1,13 @@ # SOME DESCRIPTIVE TITLE. -# Copyright (C) pgRouting Contributors - Version v3.7.0 +# Copyright (C) pgRouting Contributors - Version v3.8 # This file is distributed under the same license as the pgRouting package. # Regina Obe , 2022. # Hyung-Gyu Ryoo , 2022. msgid "" msgstr "" -"Project-Id-Version: pgRouting v3.4.0\n" +"Project-Id-Version: pgRouting v3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-17 00:50+0000\n" +"POT-Creation-Date: 2025-03-24 14:17+0000\n" "PO-Revision-Date: 2022-12-13 12:30+0000\n" "Last-Translator: Hyung-Gyu Ryoo \n" "Language-Team: Korean `__" +"`Boost: metric TSP approx `__" msgstr "" msgid "`University of Waterloo TSP `__" @@ -669,7 +663,7 @@ msgid "" "Traveling_salesman_problem>`__" msgstr "" -msgid "Vehicle Routing Functions - Category (Experimental)" +msgid "Vehicle Routing Functions - Category" msgstr "" msgid "Pickup and delivery problem" @@ -1618,8 +1612,8 @@ msgstr "" msgid "https://en.wikipedia.org/wiki/Vehicle_routing_problem" msgstr "" -msgid "The queries use the :doc:`sampledata` network." -msgstr "" +msgid ":doc:`sampledata`" +msgstr ":doc:`sampledata`" msgid "A* - Family of functions" msgstr "" @@ -1780,7 +1774,8 @@ msgstr "" msgid ":doc:`bdAstar-family`" msgstr ":doc:`bdAstar-family`" -msgid "https://www.boost.org/libs/graph/doc/astar_search.html" +msgid "" +"`Boost: A* search `__" msgstr "" msgid "https://en.wikipedia.org/wiki/A*_search_algorithm" @@ -2587,15 +2582,12 @@ msgid "" "ending vertex:" msgstr "" -msgid "It is expected to terminate faster than pgr_astar" +msgid "It is expected to terminate faster than pgr_aStar" msgstr "" msgid ":doc:`aStar-family`" msgstr ":doc:`aStar-family`" -msgid "Previous versions of this page" -msgstr "" - msgid "Bidirectional Dijkstra - Family of functions" msgstr "" @@ -2742,27 +2734,7 @@ msgid "Identifier of the color of the edge." msgstr "" msgid "" -"`Boost: Sequential Vertex Coloring algorithm documentation `__" -msgstr "" - -msgid "" -"`Wikipedia: Graph coloring `__" -msgstr "" - -msgid "" -"`Boost: is_bipartite `__" -msgstr "" - -msgid "" -"`Wikipedia: bipartite graph `__" -msgstr "" - -msgid "" -"`Boost: Edge Coloring Algorithm documentation `__" +"`Boost: `__" msgstr "" msgid "Components - Family of functions" @@ -2798,6 +2770,10 @@ msgstr "" msgid ":doc:`pgr_contraction`" msgstr ":doc:`pgr_contraction`" +#, fuzzy +msgid ":doc:`pgr_contractionDeadEnd`" +msgstr ":doc:`pgr_contraction`" + msgid "" "In large graphs, like the road graphs, or electric networks, graph " "contraction can be used to speed up some graph algorithms. Contraction " @@ -2828,1419 +2804,941 @@ msgid "" "times they are to be executed." msgstr "" -msgid "Contraction of the leaf nodes of the graph." +msgid "" +"https://www.cs.cmu.edu/afs/cs/academic/class/15210-f12/www/lectures/" +"lecture16.pdf" msgstr "" -msgid "Dead end" +msgid "https://algo2.iti.kit.edu/documents/routeplanning/geisberger_dipl.pdf" msgstr "" -msgid "A node is considered a **dead end** node when" +msgid "Cost - Category" msgstr "" -msgid "On undirected graphs:" -msgstr "" +msgid ":doc:`pgr_aStarCost`" +msgstr ":doc:`pgr_aStarCost`" -msgid "The number of adjacent vertices is 1." -msgstr "" +msgid ":doc:`pgr_bdAstarCost`" +msgstr ":doc:`pgr_bdAstarCost`" -msgid "On directed graphs:" -msgstr "" +msgid ":doc:`pgr_dijkstraCost`" +msgstr ":doc:`pgr_dijkstraCost`" -msgid "There are no outgoing edges and has at least one incoming edge." -msgstr "" +msgid ":doc:`pgr_bdDijkstraCost`" +msgstr ":doc:`pgr_bdDijkstraCost`" + +msgid ":doc:`pgr_dijkstraNearCost`" +msgstr ":doc:`pgr_dijkstraNearCost`" + +msgid ":doc:`pgr_withPointsCost`" +msgstr ":doc:`pgr_withPointsCost`" -msgid "There are no incoming edges and has at least one outgoing edge." +msgid "Each function works as part of the family it belongs to." msgstr "" msgid "" -"When the conditions are true then the `Operation: Dead End Contraction`_ can " -"be done." +"Returns the sum of the costs of the shortest path of each pair combination " +"of nodes requested." msgstr "" -msgid "Dead end vertex on undirected graph" +msgid "" +"Let be the case the values returned are stored in a table, so the unique " +"index would be the pair: ``(start_vid, end_vid)``." msgstr "" -msgid "The green nodes are `dead end`_ nodes" +msgid "" +"Depending on the function and its parameters, the results can be symmetric." msgstr "" -msgid "The blue nodes have an unlimited number of edges." +msgid "" +"The **aggregate cost** of :math:`(u, v)` is the same as for :math:`(v, u)`." msgstr "" -msgid "Node" +msgid "" +"Any duplicated value in the start or end vertex identifiers are ignored." msgstr "" -msgid "Adjecent nodes" +msgid "The returned values are ordered:" msgstr "" -msgid "Number of adjacent nodes" +msgid "``start_vid`` ascending" msgstr "" -msgid ":math:`a`" +msgid "``end_vid`` ascending" msgstr "" -msgid ":math:`\\{u\\}`" +msgid "Cost Matrix - Category" msgstr "" -msgid ":math:`b`" -msgstr "" +msgid ":doc:`pgr_aStarCostMatrix`" +msgstr ":doc:`pgr_aStarCostMatrix`" -msgid ":math:`\\{v\\}`" -msgstr "" +msgid ":doc:`pgr_dijkstraCostMatrix`" +msgstr ":doc:`pgr_dijkstraCostMatrix`" -msgid "Dead end vertex on directed graph" -msgstr "" +msgid ":doc:`pgr_bdAstarCostMatrix`" +msgstr ":doc:`pgr_bdAstarCostMatrix`" + +msgid ":doc:`pgr_bdDijkstraCostMatrix`" +msgstr ":doc:`pgr_bdDijkstraCostMatrix`" + +msgid ":doc:`pgr_withPointsCostMatrix`" +msgstr ":doc:`pgr_withPointsCostMatrix`" msgid "" -"The blue nodes have an unlimited number of incoming and/or outgoing edges." +":doc:`TSP-family` needs as input a symmetric cost matrix and no edge `(u, " +"v)` must value :math:`\\infty`." msgstr "" -msgid "Number of incoming edges" +msgid "" +"This collection of functions will return a cost matrix in form of a table." msgstr "" -msgid "Number of outgoing edges" +msgid "Can be used as input to :doc:`pgr_TSP`." msgstr "" -msgid ":math:`c`" +msgid "" +"Use directly when the resulting matrix is symmetric and there is no :math:" +"`\\infty` value." msgstr "" -msgid ":math:`\\{v, w\\}`" +msgid "It will be the users responsibility to make the matrix symmetric." msgstr "" -msgid "2" +msgid "By using geometric or harmonic average of the non symmetric values." msgstr "" -msgid ":math:`d`" +msgid "By using max or min the non symmetric values." msgstr "" -msgid ":math:`\\{x\\}`" +msgid "" +"By setting the upper triangle to be the mirror image of the lower triangle." msgstr "" -msgid ":math:`e`" +msgid "" +"By setting the lower triangle to be the mirror image of the upper triangle." msgstr "" -msgid ":math:`\\{x, y\\}`" +msgid "It is also the users responsibility to fix an :math:`\\infty` value." msgstr "" msgid "" -"From above, nodes :math:`\\{a, b, d\\}` are dead ends because the number of " -"adjacent vertices is 1. No further checks are needed for those nodes." +"Returns the sum of the costs of the shortest path for pair combination of " +"nodes in the graph." msgstr "" msgid "" -"On the following table, nodes :math:`\\{c, e\\}` because the even that the " -"number of adjacent vertices is not 1 for" +"When the starting vertex and ending vertex are the same, there is no path." msgstr "" -msgid "Operation: Dead End Contraction" +msgid "The aggregate cost in the non included values `(v, v)` is `0`." msgstr "" msgid "" -"The dead end contraction will stop until there are no more dead end nodes. " -"For example from the following graph where :math:`w` is the `dead end`_ node:" +"When the starting vertex and ending vertex are the different and there is no " +"path." msgstr "" msgid "" -"After contracting :math:`w`, node :math:`v` is now a `dead end`_ node and is " -"contracted:" +"The aggregate cost in the non included values `(u, v)` is :math:`\\infty`." msgstr "" -msgid "" -"After contracting :math:`v`, stop. Node :math:`u` has the information of " -"nodes that were contrcted." +msgid "Let be the case the values returned are stored in a table:" msgstr "" -msgid "Node :math:`u` has the information of nodes that were contracted." +msgid "The unique index would be the pair: ``(start_vid, end_vid)``." msgstr "" -msgid "In the algorithm, linear contraction is represented by 2." +msgid "The aggregate cost of `(u, v)` is the same as for `(v, u)`." msgstr "" -msgid "Linear" +msgid "Any duplicated value in the **start vids** are ignored." msgstr "" -msgid "" -"In case of an undirected graph, a node is considered a `linear` node when" +msgid "Used in:" msgstr "" -msgid "The number of adjacent vertices is 2." +msgid "`Edges SQL`_ as described below" msgstr "" -msgid "In case of a directed graph, a node is considered a `linear` node when" +msgid "**start vids**" msgstr "" -msgid "Linearity is symmetrical" +msgid "``ARRAY[BIGINT]``" msgstr "" -msgid "Linear vertex on undirected graph" +msgid "Array of identifiers of starting vertices." msgstr "" -msgid "The green nodes are `linear`_ nodes" +msgid "`Points SQL`_" msgstr "" -msgid "The blue nodes have an unlimited number of incoming and outgoing edges." +msgid "`Points SQL`_ as described below" msgstr "" -msgid "Undirected" +msgid "Points SQL" msgstr "" -msgid ":math:`v`" +msgid "``pid``" msgstr "" -msgid ":math:`\\{u, w\\}`" +msgid "**value**" msgstr "" -msgid "Linear vertex on directed graph" +msgid "Identifier of the point." msgstr "" -msgid "The white node is not linear because the linearity is not symetrical." +msgid "" +"Use with positive value, as internally will be converted to negative value" msgstr "" -msgid "It is possible to go :math:`y \\rightarrow c \\rightarrow z`" +msgid "If column is present, it can not be NULL." msgstr "" -msgid "It's not possible to go :math:`z \\rightarrow c \\rightarrow y`" +msgid "" +"If column is not present, a sequential negative **value** will be given " +"automatically." msgstr "" -msgid "Is symmetrical?" +msgid "Identifier of the \"closest\" edge to the point." msgstr "" -msgid ":math:`\\{u, v\\}`" +msgid "``fraction``" msgstr "" -msgid "yes" +msgid "" +"Value in <0,1> that indicates the relative postition from the first end " +"point of the edge." msgstr "" -msgid ":math:`\\{w, x\\}`" +msgid "``side``" msgstr "" -msgid ":math:`\\{y, z\\}`" +msgid "``CHAR``" msgstr "" -msgid "no" +msgid "``b``" msgstr "" -msgid "Operation: Linear Contraction" +msgid "Value in [``b``, ``r``, ``l``, ``NULL``] indicating if the point is:" msgstr "" -msgid "" -"The linear contraction will stop when there are no more linear nodes. For " -"example from the following graph where :math:`v` and :math:`w` are `linear`_ " -"nodes:" +msgid "In the right ``r``," msgstr "" -msgid "Contracting :math:`w`," +msgid "In the left ``l``," msgstr "" -msgid "The vertex :math:`w` is removed from the graph" +msgid "In both sides ``b``, ``NULL``" msgstr "" -msgid "" -"The edges :math:`v \\rightarrow w` and :math:`w \\rightarrow z` are removed " -"from the graph." -msgstr "" +msgid ":doc:`TSP-family`" +msgstr ":doc:`TSP-family`" -msgid "" -"A new edge :math:`v \\rightarrow z` is inserted represented with red color." +msgid "Dijkstra - Family of functions" msgstr "" -msgid "Contracting :math:`v`:" -msgstr "" +msgid ":doc:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths." +msgstr ":doc:`pgr_dijkstra` - 최단 경로를 위한 다익스트라 알고리즘." -msgid "The vertex :math:`v` is removed from the graph" +msgid ":doc:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths." msgstr "" msgid "" -"The edges :math:`u \\rightarrow v` and :math:`v \\rightarrow z` are removed " -"from the graph." +":doc:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix." msgstr "" msgid "" -"A new edge :math:`u \\rightarrow z` is inserted represented with red color." +":doc:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament " +"information." msgstr "" msgid "" -"Edge :math:`u \\rightarrow z` has the information of nodes that were " -"contracted." -msgstr "" - -msgid "The cycle" +":doc:`pgr_KSP` - Use Yen algorithm with pgr_dijkstra to get the K shortest " +"paths." msgstr "" +":doc:`pgr_KSP` - K 최단 경로를 얻기 위해 pgr_dijkstra로 Yen 알고리즘을 사용." -msgid "" -"Contracting a graph, can be done with more than one operation. The order of " -"the operations affect the resulting contracted graph, after applying one " -"operation, the set of vertices that can be contracted by another operation " -"changes." +msgid ":doc:`pgr_dijkstraVia` - Get a route of a sequence of vertices." msgstr "" -msgid "" -"This implementation, cycles ``max_cycles`` times through " -"``operations_order`` ." +msgid ":doc:`pgr_dijkstraNear` - Get the route to the nearest vertex." msgstr "" -msgid "Contracting sample data" +msgid ":doc:`pgr_dijkstraNearCost` - Get the cost to the nearest vertex." msgstr "" msgid "" -"In this section, building and using a contracted graph will be shown by " -"example." -msgstr "" - -msgid "The :doc:`sampledata` for an undirected graph is used" +"Dijkstra's algorithm, conceived by Dutch computer scientist Edsger Dijkstra " +"in 1956. It is a graph search algorithm that solves the shortest path " +"problem for a graph with non-negative edge path costs, producing a shortest " +"path from a starting vertex to an ending vertex. This implementation can be " +"used with a directed graph and an undirected graph." msgstr "" -msgid "a dead end operation first followed by a linear operation." +msgid "Running time: :math:`O(| start\\ vids | * (V \\log V + E))`" msgstr "" -msgid "Construction of the graph in the database" +msgid "The Dijkstra family functions are based on the Dijkstra algorithm." msgstr "" -msgid "Original Data" +msgid "`Combinations SQL`_" msgstr "" -msgid "" -"The following query shows the original data involved in the contraction " -"operation." +msgid "`Combinations SQL`_ as described below" msgstr "" -msgid "The original graph:" +msgid "**start vid**" msgstr "" -msgid "Contraction results" +msgid "Identifier of the starting vertex of the path." msgstr "" -msgid "" -"The results do not represent the contracted graph. They represent the " -"changes done to the graph after applying the contraction algorithm." +msgid "**end vid**" msgstr "" -msgid "" -"Observe that vertices, for example, :math:`6` do not appear in the results " -"because it was not affected by the contraction algorithm." +msgid "Identifier of the ending vertex of the path." msgstr "" -msgid "After doing the dead end contraction operation:" +msgid "**end vids**" msgstr "" -msgid "After doing the linear contraction operation to the graph above:" +msgid "Array of identifiers of ending vertices." msgstr "" -msgid "The process to create the contraction graph on the database:" +msgid "Combinations SQL" msgstr "" -msgid "Add additional columns" +msgid "Identifier of the departure vertex." msgstr "" -msgid "" -"Adding extra columns to the ``edge_table`` and ``edge_table_vertices_pgr`` " -"tables, where:" +msgid "Identifier of the arrival vertex." msgstr "" -msgid "``contracted_vertices``" +msgid "The problem definition (Advanced documentation)" msgstr "" -msgid "The vertices set belonging to the vertex/edge" +msgid "Given the following query:" msgstr "" -msgid "``is_contracted``" +msgid "pgr_dijkstra(:math:`sql, start_{vid}, end_{vid}, directed`)" msgstr "" -msgid "On the vertex table" +msgid "" +"where :math:`sql = \\{(id_i, source_i, target_i, cost_i, reverse\\_cost_i)\\}" +"`" msgstr "" -msgid "" -"when ``true`` the vertex is contracted, its not part of the contracted graph." +msgid "and" msgstr "" -msgid "" -"when ``false`` the vertex is not contracted, its part of the contracted " -"graph." +msgid ":math:`source = \\bigcup source_i`," msgstr "" -msgid "``is_new``" +msgid ":math:`target = \\bigcup target_i`," msgstr "" -msgid "On the edge table" +msgid "The graphs are defined as follows:" msgstr "" -msgid "" -"when ``true`` the edge was generated by the contraction algorithm. its part " -"of the contracted graph." +msgid "Directed graph" msgstr "" -msgid "" -"when ``false`` the edge is an original edge, might be or not part of the " -"contracted graph." +msgid "The weighted directed graph, :math:`G_d(V,E)`, is defined by:" msgstr "" -msgid "Store contraction information" +msgid "the set of vertices :math:`V`" msgstr "" -msgid "Store the `contraction results`_ in a table" +msgid ":math:`V = source \\cup target \\cup {start_{vid}} \\cup {end_{vid}}`" msgstr "" -msgid "The vertex table update" +msgid "the set of edges :math:`E`" msgstr "" msgid "" -"Use ``is_contracted`` column to indicate the vertices that are contracted." +":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) " +"\\text{ when } cost >=0 \\} & \\quad \\text{if } reverse\\_cost = " +"\\varnothing \\\\ \\text{ } \\text{ } & \\quad \\text{ } \\\\ \\text{ } " +"\\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & \\quad " +"\\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) " +"\\text{ when } reverse\\_cost_i>=0 \\} & \\quad \\text{if } reverse\\_cost " +"\\neq \\varnothing \\\\ \\end{cases}`" msgstr "" -msgid "" -"Fill ``contracted_vertices`` with the information from the results tha " -"belong to the vertices." +msgid "Undirected graph" msgstr "" -msgid "The modified vertices table:" +msgid "The weighted undirected graph, :math:`G_u(V,E)`, is defined by:" msgstr "" -msgid "The edge table update" +msgid ":math:`V = source \\cup target \\cup {start_v{vid}} \\cup {end_{vid}}`" msgstr "" -msgid "Insert the new edges generated by pgr_contraction." +msgid "" +":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) " +"\\text{ when } cost >=0 \\} & \\quad \\text{ } \\\\ \\cup \\{(target_i, " +"source_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ if } " +"reverse\\_cost = \\varnothing \\\\ \\text{ } \\text{ } & \\text{ } \\\\ " +"\\text{ } \\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & " +"\\text{ } \\\\ \\cup \\{(target_i, source_i, cost_i) \\text{ when } cost >=0 " +"\\} & \\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) " +"\\text{ when } reverse\\_cost_i >=0)\\} & \\text{ } \\\\ \\cup \\{(source_i, " +"target_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i >=0)\\} & \\quad " +"\\text{ if } reverse\\_cost \\neq \\varnothing \\\\ \\end{cases}`" msgstr "" -msgid "The modified ``edge_table``." +msgid "The problem" msgstr "" -msgid "The contracted graph" +msgid "Given:" msgstr "" -msgid "Vertices that belong to the contracted graph." +msgid ":math:`start_{vid} \\in V` a starting vertex" msgstr "" -msgid "Edges that belong to the contracted graph." +msgid ":math:`end_{vid} \\in V` an ending vertex" +msgstr "" + +msgid "" +":math:`G(V,E) = \\begin{cases} G_d(V,E) & \\quad \\text{ if6 } directed = " +"true \\\\ G_u(V,E) & \\quad \\text{ if5 } directed = false \\\\ \\end{cases}`" msgstr "" -msgid "Contracted graph" +msgid "Then:" msgstr "" -msgid "Using the contracted graph" +msgid "" +":math:`\\boldsymbol{\\pi} = \\{(path\\_seq_i, node_i, edge_i, cost_i, " +"agg\\_cost_i)\\}`" msgstr "" -msgid "Using the contracted graph with ``pgr_dijkstra``" +msgid "where:" msgstr "" -msgid "" -"There are three cases when calculating the shortest path between a given " -"source and target in a contracted graph:" +msgid ":math:`path\\_seq_i = i`" msgstr "" -msgid "Case 1: Both source and target belong to the contracted graph." +msgid ":math:`path\\_seq_{| \\pi |} = | \\pi |`" msgstr "" -msgid "Case 2: Source and/or target belong to an edge subgraph." +msgid ":math:`node_i \\in V`" msgstr "" -msgid "Case 3: Source and/or target belong to a vertex." +msgid ":math:`node_1 = start_{vid}`" msgstr "" -msgid "" -"Using the `Edges that belong to the contracted graph.`_ on lines 11 to 20." +msgid ":math:`node_{| \\pi |} = end_{vid}`" msgstr "" -msgid "Case 1" +msgid "" +":math:`\\forall i \\neq | \\pi |, \\quad (node_i, node_{i+1}, cost_i) \\in E`" msgstr "" msgid "" -"When both source and target belong to the contracted graph, a path is found." +":math:`edge_i = \\begin{cases} id_{(node_i, node_{i+1},cost_i)} &\\quad " +"\\text{when } i \\neq | \\pi | \\\\ -1 &\\quad \\text{when } i = | \\pi | \\" +"\\ \\end{cases}`" msgstr "" -msgid "Case 2" +msgid ":math:`cost_i = cost_{(node_i, node_{i+1})}`" msgstr "" msgid "" -"When source and/or target belong to an edge subgraph then a path is not " -"found." +":math:`agg\\_cost_i = \\begin{cases} 0 &\\quad \\text{when } i = 1 \\" +"\\ \\displaystyle\\sum_{k=1}^{i} cost_{(node_{k-1}, node_k)} &\\quad " +"\\text{when } i \\neq 1 \\\\ \\end{cases}`" msgstr "" msgid "" -"In this case, the contracted graph do not have an edge connecting with node :" -"math:`4`." +"In other words: The algorithm returns a the shortest path between :math:" +"`start_{vid}` and :math:`end_{vid}`, if it exists, in terms of a sequence of " +"nodes and of edges," msgstr "" -msgid "Case 3" +msgid "" +":math:`path\\_seq` indicates the relative position in the path of the :math:" +"`node` or :math:`edge`." msgstr "" -msgid "When source and/or target belong to a vertex then a path is not found." +msgid ":math:`cost` is the cost of the edge to be used to go to the next node." msgstr "" msgid "" -"In this case, the contracted graph do not have an edge connecting with node :" -"math:`7` and of node :math:`4` of the second case." +":math:`agg\\_cost` is the cost from the :math:`start_{vid}` up to the node." msgstr "" -msgid "Refining the above function to include nodes that belong to an edge." +msgid "If there is no path, the resulting set is empty." msgstr "" -msgid "The vertices that need to be expanded are calculated on lines 11 to 17." +msgid "Driving Distance - Category" msgstr "" msgid "" -"Adding to the contracted graph that additional section on lines 26 to 28." +":doc:`pgr_drivingDistance` - Driving Distance based on Dijkstra's algorithm" msgstr "" -msgid "" -"When source and/or target belong to an edge subgraph, now, a path is found." +msgid ":doc:`pgr_primDD` - Driving Distance based on Prim's algorithm" msgstr "" -msgid "The routing graph now has an edge connecting with node :math:`4`." +msgid ":doc:`pgr_kruskalDD` - Driving Distance based on Kruskal's algorithm" msgstr "" -msgid "" -"In this case, the contracted graph do not have an edge connecting with node :" -"math:`7`." +#, fuzzy +msgid "Post processing" +msgstr "포스트 프로세싱" + +msgid ":doc:`pgr_alphaShape` - Alpha shape computation" +msgstr ":doc:`pgr_alphaShape` - 알파 셰이프 계산" + +msgid ":doc:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints" msgstr "" -msgid "The vertices that need to be expanded are calculated on lines 19 to 24." +msgid "Calculate nodes that are within a distance." msgstr "" msgid "" -"Adding to the contracted graph that additional section on lines 38 to 40." +"Extracts all the nodes that have costs less than or equal to the value " +"distance." msgstr "" -msgid "" -"The code change do not affect this case so when source and/or target belong " -"to an edge subgraph, a path is still found." +msgid "The edges extracted will conform to the corresponding spanning tree." msgstr "" -msgid "When source and/or target belong to a vertex, now, a path is found." +msgid "Edge :math:`(u, v)` will not be included when:" msgstr "" -msgid "Now, the routing graph has an edge connecting with node :math:`7`." +msgid "The distance from the **root** to :math:`u` > limit distance." msgstr "" -msgid ":doc:`sampledata`" -msgstr ":doc:`sampledata`" +msgid "The distance from the **root** to :math:`v` > limit distance." +msgstr "" msgid "" -"https://www.cs.cmu.edu/afs/cs/academic/class/15210-f12/www/lectures/" -"lecture16.pdf" +"No new nodes are created on the graph, so when is within the limit and is " +"not within the limit, the edge is not included." msgstr "" -msgid "https://algo2.iti.kit.edu/documents/routeplanning/geisberger_dipl.pdf" +msgid "Edges SQL as described below." msgstr "" -msgid "Cost - Category" +msgid "**Root vid**" msgstr "" -msgid ":doc:`pgr_aStarCost`" -msgstr ":doc:`pgr_aStarCost`" - -msgid ":doc:`pgr_bdAstarCost`" -msgstr ":doc:`pgr_bdAstarCost`" - -msgid ":doc:`pgr_dijkstraCost`" -msgstr ":doc:`pgr_dijkstraCost`" - -msgid ":doc:`pgr_bdDijkstraCost`" -msgstr ":doc:`pgr_bdDijkstraCost`" - -msgid ":doc:`pgr_dijkstraNearCost`" -msgstr ":doc:`pgr_dijkstraNearCost`" - -msgid ":doc:`pgr_withPointsCost`" -msgstr ":doc:`pgr_withPointsCost`" - -msgid "Each function works as part of the family it belongs to." +msgid "**Root vids**" msgstr "" -msgid "" -"Returns the sum of the costs of the shortest path of each pair combination " -"of nodes requested." +msgid "``ARRAY[ANY-INTEGER]``" msgstr "" -msgid "" -"Let be the case the values returned are stored in a table, so the unique " -"index would be the pair: ``(start_vid, end_vid)``." +msgid "**distance**" msgstr "" -msgid "" -"Depending on the function and its parameters, the results can be symmetric." +msgid "Upper limit for the inclusion of a node in the result." msgstr "" -msgid "" -"The **aggregate cost** of :math:`(u, v)` is the same as for :math:`(v, u)`." +msgid "Returns set of |result-spantree|" msgstr "" -msgid "" -"Any duplicated value in the start or end vertex identifiers are ignored." +msgid ":math:`depth-1` is the depth of ``pred``" msgstr "" -msgid "The returned values are ordered:" +msgid "``pred``" msgstr "" -msgid "``start_vid`` ascending" +msgid "Predecessor of ``node``." msgstr "" -msgid "``end_vid`` ascending" +msgid "When ``node`` = ``start_vid`` then has the value ``node``." msgstr "" -msgid "Cost Matrix - Category" +msgid "Identifier of the ``edge`` used to arrive from ``pred`` to ``node``." msgstr "" -msgid ":doc:`pgr_aStarCostMatrix`" -msgstr ":doc:`pgr_aStarCostMatrix`" - -msgid ":doc:`pgr_dijkstraCostMatrix`" -msgstr ":doc:`pgr_dijkstraCostMatrix`" - -msgid ":doc:`pgr_bdAstarCostMatrix`" -msgstr ":doc:`pgr_bdAstarCostMatrix`" - -msgid ":doc:`pgr_bdDijkstraCostMatrix`" -msgstr ":doc:`pgr_bdDijkstraCostMatrix`" +msgid "Experimental Functions" +msgstr "" -msgid "proposed" +msgid "Families" msgstr "" -msgid ":doc:`pgr_withPointsCostMatrix`" -msgstr ":doc:`pgr_withPointsCostMatrix`" +msgid ":doc:`flow-family`" +msgstr ":doc:`flow-family`" -msgid "" -":doc:`TSP-family` needs as input a symmetric cost matrix and no edge `(u, " -"v)` must value :math:`\\infty`." +msgid ":doc:`pgr_maxFlowMinCost` - Details of flow and cost on edges." msgstr "" -msgid "" -"This collection of functions will return a cost matrix in form of a table." +msgid ":doc:`pgr_maxFlowMinCost_Cost` - Only the Min Cost calculation." msgstr "" -msgid "Can be used as input to :doc:`pgr_TSP`." -msgstr "" +msgid ":doc:`chinesePostmanProblem-family`" +msgstr ":doc:`chinesePostmanProblem-family`" -msgid "" -"Use directly when the resulting matrix is symmetric and there is no :math:" -"`\\infty` value." -msgstr "" +msgid ":doc:`coloring-family`" +msgstr ":doc:`coloring-family`" -msgid "It will be the users responsibility to make the matrix symmetric." -msgstr "" +msgid ":doc:`transformation-family`" +msgstr ":doc:`transformation-family`" -msgid "By using geometric or harmonic average of the non symmetric values." +msgid "" +":doc:`pgr_lineGraphFull` - Transformation algorithm for generating a Line " +"Graph out of each vertex in the input graph." msgstr "" -msgid "By using max or min the non symmetric values." -msgstr "" +msgid ":doc:`traversal-family`" +msgstr ":doc:`traversal-family`" msgid "" -"By setting the upper triangle to be the mirror image of the lower triangle." +":doc:`pgr_breadthFirstSearch` - Breath first search traversal of the graph." msgstr "" msgid "" -"By setting the lower triangle to be the mirror image of the upper triangle." +":doc:`pgr_binaryBreadthFirstSearch` - Breath first search traversal of the " +"graph." msgstr "" -msgid "It is also the users responsibility to fix an :math:`\\infty` value." -msgstr "" +msgid ":doc:`components-family`" +msgstr ":doc:`components-family`" + +msgid ":doc:`ordering-family`" +msgstr ":doc:`ordering-family`" msgid "" -"Returns the sum of the costs of the shortest path for pair combination of " -"nodes in the graph." +":doc:`pgr_cuthillMckeeOrdering` - Return reverse Cuthill-McKee ordering of " +"an undirected graph." msgstr "" msgid "" -"When the starting vertex and ending vertex are the same, there is no path." +":doc:`pgr_topologicalSort` - Linear ordering of the vertices for directed " +"acyclic graph." msgstr "" -msgid "The aggregate cost in the non included values `(v, v)` is `0`." -msgstr "" +#, fuzzy +msgid ":doc:`metrics-family`" +msgstr ":doc:`prim-family`" msgid "" -"When the starting vertex and ending vertex are the different and there is no " -"path." +":doc:`pgr_betweennessCentrality` - Calculates relative betweenness " +"centrality using Brandes Algorithm" msgstr "" -msgid "" -"The aggregate cost in the non included values `(u, v)` is :math:`\\infty`." -msgstr "" +msgid ":doc:`TRSP-family`" +msgstr ":doc:`TRSP-family`" -msgid "Let be the case the values returned are stored in a table:" +msgid "categories" msgstr "" -msgid "The unique index would be the pair: ``(start_vid, end_vid)``." -msgstr "" +msgid ":doc:`VRP-category`" +msgstr ":doc:`VRP-category`" -msgid "The aggregate cost of `(u, v)` is the same as for `(v, u)`." -msgstr "" +#, fuzzy +msgid "Shortest Path Category" +msgstr "BFS - 카테고리" -msgid "Any duplicated value in the **start vids** are ignored." -msgstr "" +msgid ":doc:`pgr_bellmanFord`" +msgstr ":doc:`pgr_bellmanFord`" -msgid "Used in:" -msgstr "" +msgid ":doc:`pgr_dagShortestPath`" +msgstr ":doc:`pgr_dagShortestPath`" -msgid "`Edges SQL`_ as described below" -msgstr "" +msgid ":doc:`pgr_edwardMoore`" +msgstr ":doc:`pgr_edwardMoore`" -msgid "**start vids**" +msgid "Planar Family" msgstr "" -msgid "``ARRAY[BIGINT]``" -msgstr "" +msgid ":doc:`pgr_isPlanar`" +msgstr ":doc:`pgr_isPlanar`" -msgid "Array of identifiers of starting vertices." +msgid "Miscellaneous Algorithms" msgstr "" -msgid "`Points SQL`_" -msgstr "" +msgid ":doc:`pgr_lengauerTarjanDominatorTree`" +msgstr ":doc:`pgr_lengauerTarjanDominatorTree`" -msgid "`Points SQL`_ as described below" -msgstr "" +msgid ":doc:`pgr_stoerWagner`" +msgstr ":doc:`pgr_stoerWagner`" -msgid "Points SQL" -msgstr "" +msgid ":doc:`pgr_transitiveClosure`" +msgstr ":doc:`pgr_transitiveClosure`" -msgid "``pid``" -msgstr "" +msgid ":doc:`pgr_hawickCircuits`" +msgstr ":doc:`pgr_hawickCircuits`" -msgid "**value**" +msgid "Flow - Family of functions" msgstr "" -msgid "Identifier of the point." +msgid "" +":doc:`pgr_maxFlow` - Only the Max flow calculation using Push and Relabel " +"algorithm." msgstr "" msgid "" -"Use with positive value, as internally will be converted to negative value" +":doc:`pgr_boykovKolmogorov` - Boykov and Kolmogorov with details of flow on " +"edges." msgstr "" -msgid "If column is present, it can not be NULL." +msgid "" +":doc:`pgr_edmondsKarp` - Edmonds and Karp algorithm with details of flow on " +"edges." msgstr "" msgid "" -"If column is not present, a sequential negative **value** will be given " -"automatically." +":doc:`pgr_pushRelabel` - Push and relabel algorithm with details of flow on " +"edges." msgstr "" -msgid "Identifier of the \"closest\" edge to the point." +msgid "Applications" msgstr "" -msgid "``fraction``" +msgid "" +":doc:`pgr_edgeDisjointPaths` - Calculates edge disjoint paths between two " +"groups of vertices." msgstr "" msgid "" -"Value in <0,1> that indicates the relative postition from the first end " -"point of the edge." +":doc:`pgr_maxCardinalityMatch` - Calculates a maximum cardinality matching " +"in a graph." msgstr "" -msgid "``side``" +msgid "Flow Functions General Information" msgstr "" -msgid "``CHAR``" +msgid "The graph is **directed**." msgstr "" -msgid "``b``" +msgid "Process is done only on edges with positive capacities." msgstr "" -msgid "Value in [``b``, ``r``, ``l``, ``NULL``] indicating if the point is:" +msgid "" +"When the maximum flow is 0 then there is no flow and **EMPTY SET** is " +"returned." msgstr "" -msgid "In the right ``r``," +msgid "There is no flow when source has the same value as target." msgstr "" -msgid "In the left ``l``," +msgid "Any duplicated values in source or target are ignored." msgstr "" -msgid "In both sides ``b``, ``NULL``" +msgid "Calculates the flow/residual capacity for each edge. In the output" msgstr "" -msgid ":doc:`TSP-family`" -msgstr ":doc:`TSP-family`" - -msgid "Dijkstra - Family of functions" +msgid "Edges with zero flow are omitted." msgstr "" -msgid ":doc:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths." -msgstr ":doc:`pgr_dijkstra` - 최단 경로를 위한 다익스트라 알고리즘." - -msgid ":doc:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths." +msgid "Creates" msgstr "" -msgid "" -":doc:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix." +msgid "a **super source** and edges from it to all the sources," msgstr "" -msgid "" -":doc:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament " -"information." +msgid "a **super target** and edges from it to all the targetss." msgstr "" msgid "" -":doc:`pgr_KSP` - Use Yen algorithm with pgr_dijkstra to get the K shortest " -"paths." -msgstr "" -":doc:`pgr_KSP` - K 최단 경로를 얻기 위해 pgr_dijkstra로 Yen 알고리즘을 사용." - -msgid ":doc:`pgr_dijkstraVia` - Get a route of a seuence of vertices." +"The maximum flow through the graph is guaranteed to be the value returned " +"by :doc:`pgr_maxFlow ` when executed with the same parameters " +"and can be calculated:" msgstr "" -msgid ":doc:`pgr_dijkstraNear` - Get the route to the nearest vertex." +msgid "By aggregation of the outgoing flow from the sources" msgstr "" -msgid ":doc:`pgr_dijkstraNearCost` - Get the cost to the nearest vertex." +msgid "By aggregation of the incoming flow to the targets" msgstr "" msgid "" -"Dijkstra's algorithm, conceived by Dutch computer scientist Edsger Dijkstra " -"in 1956. It is a graph search algorithm that solves the shortest path " -"problem for a graph with non-negative edge path costs, producing a shortest " -"path from a starting vertex to an ending vertex. This implementation can be " -"used with a directed graph and an undirected graph." +":doc:`pgr_maxFlow` is the maximum Flow and that maximum is guaranteed to be " +"the same on the functions :doc:`pgr_pushRelabel`, :doc:`pgr_edmondsKarp`, :" +"doc:`pgr_boykovKolmogorov`, but the actual flow through each edge may vary." msgstr "" -msgid "Running time: :math:`O(| start\\ vids | * (V \\log V + E))`" +msgid "Capacity edges" msgstr "" -msgid "The Dijkstra family functions are based on the Dijkstra algorithm." -msgstr "" +msgid ":doc:`pgr_pushRelabel`" +msgstr ":doc:`pgr_pushRelabel`" -msgid "`Combinations SQL`_" +msgid ":doc:`pgr_edmondsKarp`" +msgstr ":doc:`pgr_edmondsKarp`" + +msgid ":doc:`pgr_boykovKolmogorov`" +msgstr ":doc:`pgr_boykovKolmogorov`" + +msgid "``reverse_capacity``" msgstr "" -msgid "`Combinations SQL`_ as described below" +msgid "Capacity-Cost edges" msgstr "" -msgid "**start vid**" +msgid ":doc:`pgr_maxFlowMinCost`" +msgstr ":doc:`pgr_maxFlowMinCost`" + +msgid ":doc:`pgr_maxFlowMinCost_Cost`" +msgstr ":doc:`pgr_maxFlowMinCost_Cost`" + +msgid "Capacity of the edge (``source``, ``target``)" msgstr "" -msgid "Identifier of the starting vertex of the path." +msgid "Capacity of the edge (``target``, ``source``)" msgstr "" -msgid "**end vid**" +msgid "Weight of the edge (``source``, ``target``) if it exist" msgstr "" -msgid "Identifier of the ending vertex of the path." +msgid "Weight of the edge (``target``, ``source``) if it exist" msgstr "" -msgid "**end vids**" +msgid "Cost edges" msgstr "" -msgid "Array of identifiers of ending vertices." +msgid ":doc:`pgr_edgeDisjointPaths`" +msgstr ":doc:`pgr_edgeDisjointPaths`" + +msgid "Used in" msgstr "" -msgid "Combinations SQL" +msgid "**seq**" msgstr "" -msgid "Identifier of the departure vertex." +msgid "``INT``" msgstr "" -msgid "Identifier of the arrival vertex." +msgid "**edge**" msgstr "" -msgid "The problem definition (Advanced documentation)" +msgid "Identifier of the edge in the original query (edges_sql)." msgstr "" -msgid "Given the following query:" +msgid "**start_vid**" msgstr "" -msgid "pgr_dijkstra(:math:`sql, start_{vid}, end_{vid}, directed`)" +msgid "**end_vid**" msgstr "" -msgid "" -"where :math:`sql = \\{(id_i, source_i, target_i, cost_i, reverse\\_cost_i)\\}" -"`" +msgid "**flow**" msgstr "" -msgid "and" +msgid "Flow through the edge in the direction (``start_vid``, ``end_vid``)." msgstr "" -msgid ":math:`source = \\bigcup source_i`," +msgid "**residual_capacity**" msgstr "" -msgid ":math:`target = \\bigcup target_i`," +msgid "" +"Residual capacity of the edge in the direction (``start_vid``, ``end_vid``)." msgstr "" -msgid "The graphs are defined as follows:" +msgid "For :doc:`pgr_maxFlowMinCost`" msgstr "" -msgid "Directed graph" +msgid "**source**" msgstr "" -msgid "The weighted directed graph, :math:`G_d(V,E)`, is definied by:" +msgid "**target**" msgstr "" -msgid "the set of vertices :math:`V`" +msgid "Flow through the edge in the direction (source, target)." msgstr "" -msgid ":math:`V = source \\cup target \\cup {start_{vid}} \\cup {end_{vid}}`" +msgid "Residual capacity of the edge in the direction (source, target)." msgstr "" -msgid "the set of edges :math:`E`" +msgid "**cost**" msgstr "" msgid "" -":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) " -"\\text{ when } cost >=0 \\} & \\quad \\text{if } reverse\\_cost = " -"\\varnothing \\\\ \\text{ } \\text{ } & \\quad \\text{ } \\\\ \\text{ } " -"\\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & \\quad " -"\\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) " -"\\text{ when } reverse\\_cost_i>=0 \\} & \\quad \\text{if } reverse\\_cost " -"\\neq \\varnothing \\\\ \\end{cases}`" +"The cost of sending this flow through the edge in the direction (source, " +"target)." msgstr "" -msgid "Undirected graph" +msgid "**agg_cost**" msgstr "" -msgid "The weighted undirected graph, :math:`G_u(V,E)`, is definied by:" +msgid "The aggregate cost." msgstr "" -msgid ":math:`V = source \\cup target \\cup {start_v{vid}} \\cup {end_{vid}}`" +msgid "Advanced Documentation" msgstr "" msgid "" -":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) " -"\\text{ when } cost >=0 \\} & \\quad \\text{ } \\\\ \\cup \\{(target_i, " -"source_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ if } " -"reverse\\_cost = \\varnothing \\\\ \\text{ } \\text{ } & \\text{ } \\\\ " -"\\text{ } \\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & " -"\\text{ } \\\\ \\cup \\{(target_i, source_i, cost_i) \\text{ when } cost >=0 " -"\\} & \\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) " -"\\text{ when } reverse\\_cost_i >=0)\\} & \\text{ } \\\\ \\cup \\{(source_i, " -"target_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i >=0)\\} & \\quad " -"\\text{ if } reverse\\_cost \\neq \\varnothing \\\\ \\end{cases}`" +"A flow network is a directed graph where each edge has a capacity and a " +"flow. The flow through an edge must not exceed the capacity of the edge. " +"Additionally, the incoming and outgoing flow of a node must be equal except " +"for source which only has outgoing flow, and the destination(sink) which " +"only has incoming flow." msgstr "" -msgid "The problem" +msgid "" +"Maximum flow algorithms calculate the maximum flow through the graph and the " +"flow of each edge." msgstr "" -msgid "Given:" +msgid "" +"The maximum flow through the graph is guaranteed to be the same with all " +"implementations, but the actual flow through each edge may vary." msgstr "" -msgid ":math:`start_{vid} \\in V` a starting vertex" +msgid "pgr_maxFlow :math:`(edges\\_sql, source\\_vertex, sink\\_vertex)`" msgstr "" -msgid ":math:`end_{vid} \\in V` an ending vertex" +msgid "" +"where :math:`edges\\_sql = \\{(id_i, source_i, target_i, capacity_i, " +"reverse\\_capacity_i)\\}`" msgstr "" -msgid "" -":math:`G(V,E) = \\begin{cases} G_d(V,E) & \\quad \\text{ if6 } directed = " -"true \\\\ G_u(V,E) & \\quad \\text{ if5 } directed = false \\\\ \\end{cases}`" +msgid "Graph definition" msgstr "" -msgid "Then:" +msgid "The weighted directed graph, :math:`G(V,E)`, is defined as:" msgstr "" -msgid "" -":math:`\\boldsymbol{\\pi} = \\{(path\\_seq_i, node_i, edge_i, cost_i, " -"agg\\_cost_i)\\}`" +msgid "the set of vertices :math:`V`" msgstr "" -msgid "where:" +msgid "" +":math:`source\\_vertex \\cup sink\\_vertex \\bigcup source_i \\bigcup " +"target_i`" msgstr "" -msgid ":math:`path\\_seq_i = i`" +msgid "" +":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, capacity_i) " +"\\text{ when } capacity > 0 \\} & \\quad \\text{ if } reverse\\_capacity = " +"\\varnothing \\\\ \\text{ } & \\quad \\text{ } \\\\ \\{(source_i, target_i, " +"capacity_i) \\text{ when } capacity > 0 \\} & \\text{ } \\\\ \\cup " +"\\{(target_i, source_i, reverse\\_capacity_i) \\text{ when } " +"reverse\\_capacity_i > 0)\\} & \\quad \\text{ if } reverse\\_capacity \\neq " +"\\varnothing \\\\ \\end{cases}`" msgstr "" -msgid ":math:`path\\_seq_{| \\pi |} = | \\pi |`" +msgid "Maximum flow problem" msgstr "" -msgid ":math:`node_i \\in V`" +msgid ":math:`G(V,E)`" +msgstr ":math:`G(V,E)`" + +msgid ":math:`source\\_vertex \\in V` the source vertex" msgstr "" -msgid ":math:`node_1 = start_{vid}`" +msgid ":math:`sink\\_vertex \\in V` the sink vertex" msgstr "" -msgid ":math:`node_{| \\pi |} = end_{vid}`" +msgid ":math:`pgr\\_maxFlow(edges\\_sql, source, sink) = \\boldsymbol{\\Phi}`" msgstr "" msgid "" -":math:`\\forall i \\neq | \\pi |, \\quad (node_i, node_{i+1}, cost_i) \\in E`" +":math:`\\boldsymbol{\\Phi} = {(id_i, edge\\_id_i, source_i, target_i, " +"flow_i, residual\\_capacity_i)}`" msgstr "" msgid "" -":math:`edge_i = \\begin{cases} id_{(node_i, node_{i+1},cost_i)} &\\quad " -"\\text{when } i \\neq | \\pi | \\\\ -1 &\\quad \\text{when } i = | \\pi | \\" -"\\ \\end{cases}`" +":math:`\\boldsymbol{\\Phi}` is a subset of the original edges with their " +"residual capacity and flow. The maximum flow through the graph can be " +"obtained by aggregating on the source or sink and summing the flow from/to " +"it. In particular:" msgstr "" -msgid ":math:`cost_i = cost_{(node_i, node_{i+1})}`" -msgstr "" - -msgid "" -":math:`agg\\_cost_i = \\begin{cases} 0 &\\quad \\text{when } i = 1 \\" -"\\ \\displaystyle\\sum_{k=1}^{i} cost_{(node_{k-1}, node_k)} &\\quad " -"\\text{when } i \\neq 1 \\\\ \\end{cases}`" -msgstr "" - -msgid "" -"In other words: The algorithm returns a the shortest path between :math:" -"`start_{vid}` and :math:`end_{vid}`, if it exists, in terms of a sequence of " -"nodes and of edges," -msgstr "" - -msgid "" -":math:`path\\_seq` indicates the relative position in the path of the :math:" -"`node` or :math:`edge`." -msgstr "" - -msgid ":math:`cost` is the cost of the edge to be used to go to the next node." -msgstr "" - -msgid "" -":math:`agg\\_cost` is the cost from the :math:`start_{vid}` up to the node." -msgstr "" - -msgid "If there is no path, the resulting set is empty." -msgstr "" - -msgid "Driving Distance - Category" -msgstr "" - -msgid "" -":doc:`pgr_drivingDistance` - Driving Distance based on Dijkstra's algorithm" -msgstr "" - -msgid ":doc:`pgr_primDD` - Driving Distance based on Prim's algorithm" -msgstr "" - -msgid ":doc:`pgr_kruskalDD` - Driving Distance based on Kruskal's algorithm" -msgstr "" - -msgid "Post pocessing" -msgstr "포스트 프로세싱" - -msgid ":doc:`pgr_alphaShape` - Alpha shape computation" -msgstr ":doc:`pgr_alphaShape` - 알파 셰이프 계산" - -msgid ":doc:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints" -msgstr "" - -msgid "Calculate nodes that are within a distance." -msgstr "" - -msgid "" -"Extracts all the nodes that have costs less than or equal to the value " -"distance." -msgstr "" - -msgid "The edges extracted will conform to the corresponding spanning tree." -msgstr "" - -msgid "Edge :math:`(u, v)` will not be included when:" -msgstr "" - -msgid "The distance from the **root** to :math:`u` > limit distance." -msgstr "" - -msgid "The distance from the **root** to :math:`v` > limit distance." -msgstr "" - -msgid "" -"No new nodes are created on the graph, so when is within the limit and is " -"not within the limit, the edge is not included." -msgstr "" - -msgid "Edges SQL as described below." -msgstr "" - -msgid "**Root vid**" -msgstr "" - -msgid "**Root vids**" -msgstr "" - -msgid "``ARRAY[ANY-INTEGER]``" -msgstr "" - -msgid "**distance**" -msgstr "" - -msgid "Upper limit for the inclusion of a node in the result." -msgstr "" - -msgid "Returns set of |result-spantree|" -msgstr "" - -msgid ":math:`depth-1` is the depth of ``pred``" -msgstr "" - -msgid "``pred``" -msgstr "" - -msgid "Predecessor of ``node``." -msgstr "" - -msgid "When ``node`` = ``start_vid`` then has the value ``node``." -msgstr "" - -msgid "Identifier of the ``edge`` used to arrive from ``pred`` to ``node``." -msgstr "" - -msgid "Experimental Functions" -msgstr "" - -msgid "Families" -msgstr "" - -msgid ":doc:`flow-family`" -msgstr ":doc:`flow-family`" - -msgid ":doc:`pgr_maxFlowMinCost` - Details of flow and cost on edges." -msgstr "" - -msgid ":doc:`pgr_maxFlowMinCost_Cost` - Only the Min Cost calculation." -msgstr "" - -msgid ":doc:`chinesePostmanProblem-family`" -msgstr ":doc:`chinesePostmanProblem-family`" - -msgid ":doc:`coloring-family`" -msgstr ":doc:`coloring-family`" - -msgid ":doc:`transformation-family`" -msgstr ":doc:`transformation-family`" - -msgid "" -":doc:`pgr_lineGraphFull` - Transformation algorithm for generating a Line " -"Graph out of each vertex in the input graph." -msgstr "" - -msgid ":doc:`traversal-family`" -msgstr ":doc:`traversal-family`" - -msgid "" -":doc:`pgr_breadthFirstSearch` - Breath first search traversal of the graph." -msgstr "" - -msgid "" -":doc:`pgr_binaryBreadthFirstSearch` - Breath first search traversal of the " -"graph." -msgstr "" - -msgid ":doc:`components-family`" -msgstr ":doc:`components-family`" - -msgid ":doc:`ordering-family`" -msgstr ":doc:`ordering-family`" - -msgid "" -":doc:`pgr_cuthillMckeeOrdering` - Return reverse Cuthill-McKee ordering of " -"an undirected graph." -msgstr "" - -#, fuzzy -msgid ":doc:`metrics-family`" -msgstr ":doc:`prim-family`" - -msgid "" -":doc:`pgr_betweennessCentrality` - Calculates relative betweenness " -"centrality using Brandes Algorithm" -msgstr "" - -msgid ":doc:`TRSP-family`" -msgstr ":doc:`TRSP-family`" - -msgid "categories" -msgstr "" - -msgid ":doc:`VRP-category`" -msgstr ":doc:`VRP-category`" - -msgid "Unclassified" -msgstr "" - -msgid ":doc:`pgr_bellmanFord`" -msgstr ":doc:`pgr_bellmanFord`" - -msgid ":doc:`pgr_dagShortestPath`" -msgstr ":doc:`pgr_dagShortestPath`" - -msgid ":doc:`pgr_edwardMoore`" -msgstr ":doc:`pgr_edwardMoore`" - -msgid ":doc:`pgr_isPlanar`" -msgstr ":doc:`pgr_isPlanar`" - -msgid ":doc:`pgr_stoerWagner`" -msgstr ":doc:`pgr_stoerWagner`" - -msgid ":doc:`pgr_topologicalSort`" -msgstr ":doc:`pgr_topologicalSort`" - -msgid ":doc:`pgr_transitiveClosure`" -msgstr ":doc:`pgr_transitiveClosure`" - -msgid ":doc:`pgr_lengauerTarjanDominatorTree`" -msgstr ":doc:`pgr_lengauerTarjanDominatorTree`" - -msgid ":doc:`pgr_hawickCircuits`" -msgstr ":doc:`pgr_hawickCircuits`" - -msgid "Flow - Family of functions" -msgstr "" - -msgid "" -":doc:`pgr_maxFlow` - Only the Max flow calculation using Push and Relabel " -"algorithm." -msgstr "" - -msgid "" -":doc:`pgr_boykovKolmogorov` - Boykov and Kolmogorov with details of flow on " -"edges." -msgstr "" - -msgid "" -":doc:`pgr_edmondsKarp` - Edmonds and Karp algorithm with details of flow on " -"edges." -msgstr "" - -msgid "" -":doc:`pgr_pushRelabel` - Push and relabel algorithm with details of flow on " -"edges." -msgstr "" - -msgid "Applications" -msgstr "" - -msgid "" -":doc:`pgr_edgeDisjointPaths` - Calculates edge disjoint paths between two " -"groups of vertices." -msgstr "" - -msgid "" -":doc:`pgr_maxCardinalityMatch` - Calculates a maximum cardinality matching " -"in a graph." -msgstr "" - -msgid "Flow Functions General Information" -msgstr "" - -msgid "The graph is **directed**." -msgstr "" - -msgid "Process is done only on edges with positive capacities." -msgstr "" - -msgid "" -"When the maximum flow is 0 then there is no flow and **EMPTY SET** is " -"returned." -msgstr "" - -msgid "There is no flow when source has the same vaule as target." -msgstr "" - -msgid "Any duplicated values in source or target are ignored." -msgstr "" - -msgid "Calculates the flow/residual capacity for each edge. In the output" -msgstr "" - -msgid "Edges with zero flow are omitted." -msgstr "" - -msgid "Creates" -msgstr "" - -msgid "a **super source** and edges from it to all the sources," -msgstr "" - -msgid "a **super target** and edges from it to all the targetss." -msgstr "" - -msgid "" -"The maximum flow through the graph is guaranteed to be the value returned " -"by :doc:`pgr_maxFlow ` when executed with the same parameters " -"and can be calculated:" -msgstr "" - -msgid "By aggregation of the outgoing flow from the sources" -msgstr "" - -msgid "By aggregation of the incoming flow to the targets" -msgstr "" - -msgid "" -":doc:`pgr_maxFlow` is the maximum Flow and that maximum is guaranteed to be " -"the same on the functions :doc:`pgr_pushRelabel`, :doc:`pgr_edmondsKarp`, :" -"doc:`pgr_boykovKolmogorov`, but the actual flow through each edge may vary." -msgstr "" - -msgid "Capacity edges" -msgstr "" - -msgid ":doc:`pgr_pushRelabel`" -msgstr ":doc:`pgr_pushRelabel`" - -msgid ":doc:`pgr_edmondsKarp`" -msgstr ":doc:`pgr_edmondsKarp`" - -msgid ":doc:`pgr_boykovKolmogorov`" -msgstr ":doc:`pgr_boykovKolmogorov`" - -msgid "``reverse_capacity``" -msgstr "" - -msgid "Capacity-Cost edges" -msgstr "" - -msgid ":doc:`pgr_maxFlowMinCost`" -msgstr ":doc:`pgr_maxFlowMinCost`" - -msgid ":doc:`pgr_maxFlowMinCost_Cost`" -msgstr ":doc:`pgr_maxFlowMinCost_Cost`" - -msgid "Capacity of the edge (``source``, ``target``)" -msgstr "" - -msgid "Capacity of the edge (``target``, ``source``)" -msgstr "" - -msgid "Weight of the edge (``source``, ``target``) if it exist" -msgstr "" - -msgid "Weight of the edge (``target``, ``source``) if it exist" -msgstr "" - -msgid "Cost edges" -msgstr "" - -msgid ":doc:`pgr_edgeDisjointPaths`" -msgstr ":doc:`pgr_edgeDisjointPaths`" - -msgid "Used in" -msgstr "" - -msgid "**seq**" -msgstr "" - -msgid "``INT``" -msgstr "" - -msgid "**edge**" -msgstr "" - -msgid "Identifier of the edge in the original query (edges_sql)." -msgstr "" - -msgid "**start_vid**" -msgstr "" - -msgid "**end_vid**" -msgstr "" - -msgid "**flow**" -msgstr "" - -msgid "Flow through the edge in the direction (``start_vid``, ``end_vid``)." -msgstr "" - -msgid "**residual_capacity**" -msgstr "" - -msgid "" -"Residual capacity of the edge in the direction (``start_vid``, ``end_vid``)." -msgstr "" - -msgid "For :doc:`pgr_maxFlowMinCost`" -msgstr "" - -msgid "**source**" -msgstr "" - -msgid "**target**" -msgstr "" - -msgid "Flow through the edge in the direction (source, target)." -msgstr "" - -msgid "Residual capacity of the edge in the direction (source, target)." -msgstr "" - -msgid "**cost**" -msgstr "" - -msgid "" -"The cost of sending this flow through the edge in the direction (source, " -"target)." -msgstr "" - -msgid "**agg_cost**" -msgstr "" - -msgid "The aggregate cost." -msgstr "" - -msgid "Advanced Documentation" -msgstr "" - -msgid "" -"A flow network is a directed graph where each edge has a capacity and a " -"flow. The flow through an edge must not exceed the capacity of the edge. " -"Additionally, the incoming and outgoing flow of a node must be equal except " -"for source which only has outgoing flow, and the destination(sink) which " -"only has incoming flow." -msgstr "" - -msgid "" -"Maximum flow algorithms calculate the maximum flow through the graph and the " -"flow of each edge." -msgstr "" - -msgid "" -"The maximum flow through the graph is guaranteed to be the same with all " -"implementations, but the actual flow through each edge may vary." -msgstr "" - -msgid "pgr_maxFlow :math:`(edges\\_sql, source\\_vertex, sink\\_vertex)`" -msgstr "" - -msgid "" -"where :math:`edges\\_sql = \\{(id_i, source_i, target_i, capacity_i, " -"reverse\\_capacity_i)\\}`" -msgstr "" - -msgid "Graph definition" -msgstr "" - -msgid "The weighted directed graph, :math:`G(V,E)`, is defined as:" -msgstr "" - -msgid "the set of vertices :math:`V`" -msgstr "" - -msgid "" -":math:`source\\_vertex \\cup sink\\_vertex \\bigcup source_i \\bigcup " -"target_i`" -msgstr "" - -msgid "" -":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, capacity_i) " -"\\text{ when } capacity > 0 \\} & \\quad \\text{ if } reverse\\_capacity = " -"\\varnothing \\\\ \\text{ } & \\quad \\text{ } \\\\ \\{(source_i, target_i, " -"capacity_i) \\text{ when } capacity > 0 \\} & \\text{ } \\\\ \\cup " -"\\{(target_i, source_i, reverse\\_capacity_i) \\text{ when } " -"reverse\\_capacity_i > 0)\\} & \\quad \\text{ if } reverse\\_capacity \\neq " -"\\varnothing \\\\ \\end{cases}`" -msgstr "" - -msgid "Maximum flow problem" -msgstr "" - -msgid ":math:`G(V,E)`" -msgstr ":math:`G(V,E)`" - -msgid ":math:`source\\_vertex \\in V` the source vertex" -msgstr "" - -msgid ":math:`sink\\_vertex \\in V` the sink vertex" -msgstr "" - -msgid ":math:`pgr\\_maxFlow(edges\\_sql, source, sink) = \\boldsymbol{\\Phi}`" -msgstr "" - -msgid "" -":math:`\\boldsymbol{\\Phi} = {(id_i, edge\\_id_i, source_i, target_i, " -"flow_i, residual\\_capacity_i)}`" -msgstr "" - -msgid "" -":math:`\\boldsymbol{\\Phi}` is a subset of the original edges with their " -"residual capacity and flow. The maximum flow through the graph can be " -"obtained by aggregating on the source or sink and summing the flow from/to " -"it. In particular:" -msgstr "" - -msgid ":math:`id_i = i`" +msgid ":math:`id_i = i`" msgstr "" msgid ":math:`edge\\_id = id_i` in edges_sql" @@ -4309,6 +3807,11 @@ msgstr ":doc:`pgr_kruskal`" msgid ":doc:`pgr_kruskalDD`" msgstr ":doc:`pgr_kruskalDD`" +msgid "" +":doc:`pgr_degree` - Returns a set of vertices and corresponding count of " +"incident edges to the vertex." +msgstr "" + msgid ":doc:`prim-family`" msgstr ":doc:`prim-family`" @@ -4340,164 +3843,254 @@ msgstr "" msgid ":doc:`pgr_createTopology` - create a topology based on the geometry." msgstr "" -msgid "" -":doc:`pgr_createVerticesTable` - reconstruct the vertices table based on the " -"source and target information." +msgid "" +":doc:`pgr_createVerticesTable` - reconstruct the vertices table based on the " +"source and target information." +msgstr "" + +msgid "" +":doc:`pgr_analyzeGraph` - to analyze the edges and vertices of the edge " +"table." +msgstr "" + +msgid ":doc:`pgr_analyzeOneWay` - to analyze directionality of the edges." +msgstr "" + +msgid ":doc:`pgr_nodeNetwork` - to create nodes to a not noded edge table." +msgstr "" + +msgid "" +":doc:`pgr_extractVertices` - Extracts vertex information based on the edge " +"table information." +msgstr "" + +msgid ":doc:`pgr_trsp` - Turn Restriction Shortest Path (TRSP)" +msgstr "" + +msgid "Utilities family" +msgstr "" + +msgid ":doc:`pgr_findCloseEdges`" +msgstr ":doc:`pgr_findCloseEdges`" + +msgid "Functions by categories" +msgstr "카테고리별 함수" + +msgid ":doc:`cost-category`" +msgstr ":doc:`cost-category`" + +msgid ":doc:`costMatrix-category`" +msgstr ":doc:`costMatrix-category`" + +msgid ":doc:`drivingDistance-category`" +msgstr ":doc:`drivingDistance-category`" + +msgid ":doc:`KSP-category`" +msgstr ":doc:`KSP-category`" + +#, fuzzy +msgid ":doc:`spanningTree-category`" +msgstr ":doc:`spanningTree-family`" + +msgid ":doc:`BFS-category`" +msgstr ":doc:`BFS-category`" + +msgid ":doc:`DFS-category`" +msgstr ":doc:`DFS-category`" + +msgid "Available Functions but not official pgRouting functions" +msgstr "사용 가능하지만 공식적으로 지원하지 않는 pgRouting 함수" + +msgid ":doc:`proposed`" +msgstr ":doc:`proposed`" + +msgid ":doc:`experimental`" +msgstr ":doc:`experimental`" + +msgid ":doc:`release_notes`" +msgstr ":doc:`release_notes`" + +msgid "pgRouting 4.0.0 Release Notes" +msgstr "" + +msgid "" +"To see all issues & pull requests closed by this release see the `Git closed " +"milestone for 4.0.0 `__" +msgstr "" + +msgid "Functions promoted to official" +msgstr "" + +#, fuzzy +msgid "pgr_trsp" +msgstr ":doc:`pgr_trsp`" + +#, fuzzy +msgid "pgr_trspVia" +msgstr ":doc:`pgr_trsp`" + +#, fuzzy +msgid "pgr_trspVia_withPoints" +msgstr ":doc:`pgr_trspVia_withPoints`" + +#, fuzzy +msgid "pgr_trsp_withPoints" +msgstr ":doc:`pgr_trspVia_withPoints`" + +#, fuzzy +msgid "pgr_withPoints" +msgstr ":doc:`pgr_withPoints`" + +#, fuzzy +msgid "pgr_withPointsCost" +msgstr ":doc:`pgr_withPointsCost`" + +msgid "pgr_withPointsCostMatrix" +msgstr "" + +#, fuzzy +msgid "pgr_withPointsDD" +msgstr ":doc:`pgr_withPoints`" + +msgid "pgr_withPointsKSP" msgstr "" -msgid "" -":doc:`pgr_analyzeGraph` - to analyze the edges and vertices of the edge " -"table." +#, fuzzy +msgid "pgr_withPointsVia" +msgstr ":doc:`pgr_withPointsVia`" + +msgid "Signatures promoted to official" msgstr "" -msgid ":doc:`pgr_analyzeOneWay` - to analyze directionality of the edges." +msgid "pgr_aStar(Combinations)" msgstr "" -msgid ":doc:`pgr_nodeNetwork` - to create nodes to a not noded edge table." +msgid "pgr_aStarCost(Combinations)" msgstr "" -msgid ":doc:`pgr_trsp` - Turn Restriction Shortest Path (TRSP)" +msgid "pgr_bdAstar(Combinations)" msgstr "" -msgid "Functions by categories" -msgstr "카테고리별 함수" +msgid "pgr_bdAstarCost(Combinations)" +msgstr "" -msgid ":doc:`cost-category`" -msgstr ":doc:`cost-category`" +msgid "pgr_bdDijkstra(Combinations)" +msgstr "" -msgid ":doc:`costMatrix-category`" -msgstr ":doc:`costMatrix-category`" +msgid "pgr_bdDijkstraCost(Combinations)" +msgstr "" -msgid ":doc:`drivingDistance-category`" -msgstr ":doc:`drivingDistance-category`" +#, fuzzy +msgid "pgr_dijkstra(Combinations)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid ":doc:`KSP-category`" -msgstr ":doc:`KSP-category`" +#, fuzzy +msgid "pgr_dijkstraCost(Combinations)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid ":doc:`spanningTree-family`" -msgstr ":doc:`spanningTree-family`" +msgid "pgr_KSP(All signatures)" +msgstr "" -msgid ":doc:`BFS-category`" -msgstr ":doc:`BFS-category`" +msgid "pgr_boykovKolmogorov(Combinations)" +msgstr "" -msgid ":doc:`DFS-category`" -msgstr ":doc:`DFS-category`" +msgid "pgr_edmondsKarp(Combinations)" +msgstr "" -msgid "Available Functions but not official pgRouting functions" -msgstr "사용 가능하지만 공식적으로 지원하지 않는 pgRouting 함수" +msgid "pgr_maxFlow(Combinations)" +msgstr "" -msgid ":doc:`proposed`" -msgstr ":doc:`proposed`" +msgid "pgr_pushRelabel(Combinations)" +msgstr "" -msgid ":doc:`experimental`" -msgstr ":doc:`experimental`" +msgid "code enhancements:" +msgstr "" -msgid ":doc:`release_notes`" -msgstr ":doc:`release_notes`" +msgid "Removal of unused C/C++ code" +msgstr "" -msgid "pgRouting 3.7.0 Release Notes" +msgid "Removal of SQL deprecated functions" msgstr "" msgid "" -"To see all issues & pull requests closed by this release see the `Git closed " -"milestone for 3.7.0 `__" +"pgr_trsp(text,integer,double precision,integer,double precision,boolean," +"boolean,text)" msgstr "" -msgid "Support" +msgid "pgr_trsp(text,integer,integer,boolean,boolean,text)" msgstr "" msgid "" -"`#2656 `__ Stop support of " -"PostgreSQL12 on pgrouting v3.7" +"pgr_trspviaedges(text,integer[],double precision[],boolean,boolean,text)" msgstr "" -#, fuzzy -msgid "Stopping support of PostgreSQL 12" -msgstr "PostgreSQL 설정" - -msgid "CI does not test for PostgreSQL 12" +msgid "pgr_trspviavertices(text,anyarray,boolean,boolean,text)" msgstr "" -msgid "New experimental functions" +msgid "Removal of SQL deprecated internal functions" msgstr "" -msgid "Metrics" +msgid "_pgr_dijkstranear(text,anyarray,anyarray,bigint,boolean)" msgstr "" -msgid "pgr_betweennessCentrality" +msgid "_pgr_dijkstranear(text,anyarray,bigint,bigint,boolean)" msgstr "" -msgid "Official functions changes" +msgid "_pgr_dijkstranear(text,bigint,anyarray,bigint,boolean)" msgstr "" -msgid "" -"`#2605 `__ Standarize " -"spanning tree functions output" +msgid "_pgr_dijkstra(text,anyarray,anyarray,boolean,boolean,boolean,bigint)" msgstr "" -msgid "Functions:" +msgid "_pgr_dijkstra(text,text,boolean,boolean,boolean)" msgstr "" -msgid "``pgr_kruskalDD``" +msgid "_pgr_drivingdistance(text,anyarray,double precision,boolean,boolean)" msgstr "" -msgid "``pgr_kruskalDFS``" +msgid "_pgr_kruskal(text,anyarray,text,bigint,double precision)" msgstr "" -msgid "``pgr_kruskalBFS``" +msgid "_pgr_prim(text,anyarray,text,bigint,double precision)" msgstr "" -msgid "``pgr_primDD``" +msgid "" +"_pgr_trsp(text,integer,double precision,integer,double precision,boolean," +"boolean,text)" msgstr "" -msgid "``pgr_primDFS``" +msgid "_pgr_trsp(text,text,anyarray,anyarray,boolean)" msgstr "" -msgid "``pgr_primBFS``" +msgid "_pgr_trsp(text,text,anyarray,bigint,boolean)" msgstr "" -msgid "Standarizing output columns to |result-spantree|" +msgid "_pgr_trsp(text,text,bigint,anyarray,boolean)" msgstr "" -msgid "Added ``pred`` result columns." +msgid "_pgr_trsp(text,text,bigint,bigint,boolean)" msgstr "" -msgid "Experimental promoted to proposed." +msgid "_pgr_trspviavertices(text,integer[],boolean,boolean,text)" msgstr "" -msgid "" -"`#2635 `__ pgr_LineGraph " -"ignores directed flag and use negative values for identifiers." +msgid "_pgr_withpointsvia(text,bigint[],double precision[],boolean)" msgstr "" -#, fuzzy -msgid "``pgr_lineGraph``" -msgstr ":doc:`pgr_analyzeGraph`" - -msgid "Promoted to **proposed** signature." +msgid "_trsp(text,text,anyarray,anyarray,boolean)" msgstr "" -#, fuzzy -msgid "Works for directed and undirected graphs." -msgstr ":doc:`pgr_bridges` - 무방향 그래프의 브릿지." - -msgid "Code enhancement" +msgid "_v4trsp(text,text,anyarray,anyarray,boolean)" msgstr "" -msgid "" -"`#2599 `__ Driving " -"distance cleanup" +msgid "_v4trsp(text,text,text,boolean)" msgstr "" -msgid "" -"`#2607 `__ Read postgresql " -"data on C++" +msgid "Deprecation of internal C/C++ functions" msgstr "" -msgid "" -"`#2614 `__ Clang tidy does " -"not work" +msgid "Internal C/C++ functions in legacy" msgstr "" msgid "All releases" @@ -4506,9 +4099,6 @@ msgstr "" msgid "Kruskal - Family of functions" msgstr "" -msgid "Boost Graph Inside" -msgstr "" - msgid "" "Kruskal's algorithm is a greedy minimum spanning tree algorithm that in each " "cycle finds and adds the edge of the least possible weight that connects any " @@ -4542,14 +4132,6 @@ msgstr "" msgid "All deprecated functions will be removed on next mayor version 4.0.0" msgstr "" -#, fuzzy -msgid "Migration of functions" -msgstr ":doc:`pgr_withPoints`" - -#, fuzzy -msgid "Migrating functions" -msgstr ":doc:`routingFunctions`" - msgid "Migration of ``pgr_aStar``" msgstr "" @@ -4703,7 +4285,7 @@ msgid "If needed add the new columns, for example:" msgstr "" #, fuzzy -msgid "Migration of ``pgr_drivingdistance``" +msgid "Migration of ``pgr_drivingDistance``" msgstr ":doc:`pgr_withPoints`" msgid "" @@ -4724,11 +4306,12 @@ msgid "|result-spantree|" msgstr "" #, fuzzy -msgid "``pgr_drivingdistance`` (Single vertex)" +msgid "pgr_drivingDistance(Single vertex)" msgstr ":doc:`pgr_drivingDistance`" -msgid "``pgr_drivingdistance`` (Multiple vertices)" -msgstr "" +#, fuzzy +msgid "pgr_drivingDistance(Multiple vertices)" +msgstr ":doc:`pgr_drivingDistance`" msgid "Output columns were |result-dij-dd|" msgstr "" @@ -4787,12 +4370,21 @@ msgstr "" msgid "|result-bfs|" msgstr "" +msgid "``pgr_kruskalDD``" +msgstr "" + msgid "Single vertex" msgstr "" msgid "Multiple vertices" msgstr "" +msgid "``pgr_kruskalDFS``" +msgstr "" + +msgid "``pgr_kruskalBFS``" +msgstr "" + msgid "Output columns were |result-bfs|" msgstr "" @@ -4948,6 +4540,15 @@ msgid "" "are being standardized." msgstr "" +msgid "``pgr_primDD``" +msgstr "" + +msgid "``pgr_primDFS``" +msgstr "" + +msgid "``pgr_primBFS``" +msgstr "" + msgid "Prim single vertex" msgstr "" @@ -5103,49 +4704,170 @@ msgid "" "= 0``" msgstr "" -msgid "" -"Using `this `__ example." +msgid "" +"Using `this `__ example." +msgstr "" + +msgid "Filter out the additional columns" +msgstr "" + +#, fuzzy +msgid "Migration of ``pgr_withPointsKSP``" +msgstr ":doc:`pgr_withPoints`" + +msgid "" +"Starting from `v3.6.0 `__ :" +"doc:`pgr_withPointsKSP` result columns are being standardized." +msgstr "" + +msgid "" +"And ``driving side`` parameter changed from named optional to unnamed " +"compulsory **driving side** and its validity differ for directed and " +"undirected graphs." +msgstr "" + +msgid "``pgr_withPointsKSP`` (`One to One`)" +msgstr "" + +msgid "Output columns were |old-pid-result|" +msgstr "" + +msgid "New output columns are |nksp-result|" +msgstr "" + +msgid "" +"Using `this `__ example." +msgstr "" + +msgid "" +"If needed filter out the additional columns, for example, to return the " +"original columns:" +msgstr "" + +msgid "Migration of ``pgr_trsp`` (Vertices)" +msgstr "" + +msgid "Signature:" +msgstr "" + +msgid "Deprecated" +msgstr "" + +msgid "`v3.4.0 `__" +msgstr "" + +msgid "Removed" +msgstr "" + +msgid "`v4.0.0 `__" +msgstr "" + +#, fuzzy +msgid ":doc:`pgr_dijkstra`" +msgstr ":doc:`pgr_dijkstraVia`" + +msgid ":doc:`pgr_trsp`" +msgstr ":doc:`pgr_trsp`" + +#, fuzzy +msgid "`Migration of restrictions`_" +msgstr ":doc:`pgr_withPoints`" + +msgid "Use ``pgr_dijkstra`` when there are no restrictions." +msgstr "" + +msgid "Use :doc:`pgr_dijkstra` instead." +msgstr "" + +msgid "To get the original column names:" +msgstr "" + +msgid "``id1`` is the node" +msgstr "" + +msgid "``id2`` is the edge" +msgstr "" + +msgid "Use ``pgr_trsp`` when there are restrictions." +msgstr "" + +msgid "Use :doc:`pgr_trsp` (One to One) instead." +msgstr "" + +msgid "Migration of ``pgr_trsp`` (Edges)" +msgstr "" + +msgid ":doc:`pgr_withPoints`" +msgstr ":doc:`pgr_withPoints`" + +#, fuzzy +msgid ":doc:`pgr_trsp_withPoints`" +msgstr ":doc:`pgr_trspVia_withPoints`" + +msgid "Use ``pgr_withPoints`` when there are no restrictions." +msgstr "" + +#, fuzzy +msgid "Use :doc:`pgr_withPoints` (One to One) instead." +msgstr ":doc:`pgr_withPointsCostMatrix`" + +msgid "Use ``pgr_trsp_withPoints`` when there are restrictions." +msgstr "" + +msgid "Use :doc:`pgr_trsp_withPoints` instead." +msgstr "" + +msgid "Migration of ``pgr_trspViaVertices``" +msgstr "" + +msgid ":doc:`pgr_dijkstraVia`" +msgstr ":doc:`pgr_dijkstraVia`" + +msgid ":doc:`pgr_trspVia`" +msgstr ":doc:`pgr_trspVia`" + +msgid "Use ``pgr_dijkstraVia`` when there are no restrictions" +msgstr "" + +msgid "Use :doc:`pgr_dijkstraVia` instead." msgstr "" -msgid "Filter out the additional columns" +msgid "``id1`` is the path identifier" msgstr "" -#, fuzzy -msgid "Migration of ``pgr_withPointsKSP``" -msgstr ":doc:`pgr_withPoints`" +msgid "``id2`` is the node" +msgstr "" -msgid "" -"Starting from `v3.6.0 `__ :" -"doc:`pgr_withPointsKSP` result columns are being standardized." +msgid "``id3`` is the edge" msgstr "" -msgid "" -"And ``driving side`` parameter changed from named optional to unnamed " -"compulsory **driving side** and its validity differ for directed and " -"undirected graphs." +msgid "Use ``pgr_trspVia`` when there are restrictions" msgstr "" -msgid "``pgr_withPointsKSP`` (`One to One`)" +msgid "Use :doc:`pgr_trspVia` instead." msgstr "" -msgid "Output columns were |old-pid-result|" +msgid "Migration of ``pgr_trspViaEdges``" msgstr "" -msgid "New output columns are |nksp-result|" +msgid ":doc:`pgr_withPointsVia`" +msgstr ":doc:`pgr_withPointsVia`" + +msgid ":doc:`pgr_trspVia_withPoints`" +msgstr ":doc:`pgr_trspVia_withPoints`" + +msgid "Use ``pgr_withPointsVia`` when there are no restrictions" msgstr "" -msgid "" -"Using `this `__ example." +msgid "Use :doc:`pgr_withPointsVia` instead." msgstr "" -msgid "" -"If needed filter out the additional columns, for example, to return the " -"original columns:" +msgid "Use ``pgr_trspVia_withPoints`` when there are restrictions" msgstr "" -msgid "Migration of turn restrictions" +msgid "Use :doc:`pgr_trspVia_withPoints` instead." msgstr "" msgid "Migration of restrictions" @@ -5293,4626 +5015,4899 @@ msgstr "" msgid "The migrated table contents:" msgstr "" -msgid "Migration of ``pgr_trsp`` (Vertices)" +msgid ":doc:`withPoints-category`" +msgstr ":doc:`withPoints-category`" + +msgid "Ordering - Family of functions" +msgstr "" + +msgid "pgRouting Concepts" msgstr "" msgid "" -":doc:`pgr_trsp` signatures have changed and many issues have been fixed in " -"the new signatures. This section will show how to migrate from the old " -"signatures to the new replacement functions. This also affects the " -"restrictions." +"This is a simple guide that go through some of the steps for getting started " +"with pgRouting. This guide covers:" +msgstr "" + +msgid "Graphs" +msgstr "" + +msgid "A graph is an ordered pair :math:`G = (V ,E)` where:" +msgstr "" + +msgid ":math:`V` is a set of vertices, also called nodes." +msgstr "" + +msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V \\}`" +msgstr "" + +msgid "There are different kinds of graphs:" +msgstr "" + +msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V\\}`" msgstr "" -msgid "The integral type of the ``Edges SQL`` can only be ``INTEGER``." +msgid "Undirected simple graph" msgstr "" -msgid "The floating point type of the ``Edges SQL`` can only be ``FLOAT``." +msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V, u \\neq v\\}`" msgstr "" -msgid "``directed`` flag is compulsory." +msgid ":math:`E \\subseteq \\{( u, v ) \\mid (u , v) \\in (V X V) \\}`" msgstr "" -msgid "Does not autodetect if ``reverse_cost`` column exist." +msgid "Directed simple graph" msgstr "" msgid "" -"User must be careful to match the existence of the column with the value of " -"``has_rcost`` parameter." +":math:`E \\subseteq \\{( u, v ) \\mid (u , v) \\in (V X V), u \\neq v\\}`" msgstr "" -msgid "The restrictions inner query is optional." +msgid "Graphs:" msgstr "" -msgid "The output column names are meaningless" +msgid "Do not have geometries." msgstr "" -msgid "Migrate by using:" +msgid "" +"Some graph theory problems require graphs to have weights, called **cost** " +"in pgRouting." msgstr "" -msgid ":doc:`pgr_dijkstra` when there are no restrictions," +msgid "" +"In pgRouting there are several ways to represent a graph on the database:" msgstr "" -msgid ":doc:`pgr_trsp` (One to One) when there are restrictions." +msgid "With ``cost``" msgstr "" -msgid "Migrating ``pgr_trsp`` (Vertices) using ``pgr_dijkstra``" +msgid "(``id``, ``source``, ``target``, ``cost``)" msgstr "" -msgid "The following query does not have restrictions." +msgid "With ``cost`` and ``reverse_cost``" msgstr "" -msgid "A message about deprecation is shown" +msgid "(``id``, ``source``, ``target``, ``cost``, ``reverse_cost``)" msgstr "" -msgid "Deprecated functions will be removed on the next mayor version 4.0.0" +msgid "" +"Identifier of the edge. Requirement to use the database in a consistent. " +"manner." msgstr "" -msgid "Use :doc:`pgr_dijkstra` instead." +msgid "Identifier of a vertex." msgstr "" -msgid "The types casting has been removed." +msgid "Weight of the edge (``source``, ``target``):" msgstr "" -msgid ":doc:`pgr_dijkstra`:" +msgid "" +"When negative the edge (``source``, ``target``) do not exist on the graph." msgstr "" -msgid "Autodetects if ``reverse_cost`` column is in the edges SQL." +msgid "``cost`` must exist in the query." msgstr "" -msgid "Accepts ``ANY-INTEGER`` on integral types" +msgid "" +"When negative the edge (``target``, ``source``) do not exist on the graph." msgstr "" -msgid "Accepts ``ANY-NUMERICAL`` on floating point types" +msgid "" +"The decision of the graph to be **directed** or **undirected** is done when " +"executing a pgRouting algorithm." msgstr "" -msgid "``directed`` flag has a default value of ``true``." +msgid "Graph with ``cost``" msgstr "" -msgid "Use the same value that on the original query." +msgid "The weighted directed graph, :math:`G_d(V,E)`:" msgstr "" -msgid "In this example it is ``true`` which is the default value." +msgid "Graph data is obtained with a query" msgstr "" -msgid "The flag has been omitted and the default is been used." +msgid "``SELECT id, source, target, cost FROM edges``" msgstr "" msgid "" -"When the need of using strictly the same (meaningless) names and types of " -"the function been migrated then:" +":math:`E = \\{(source_{id}, target_{id}, cost_{id}) \\text{ when } cost_{id} " +"\\ge 0 \\}`" msgstr "" -msgid "``id1`` is the node" +msgid "Edges where ``cost`` is non negative are part of the graph." msgstr "" -msgid "``id2`` is the edge" +msgid ":math:`V = \\{source_{id} \\cup target_{id}\\}`" +msgstr "" + +msgid "All vertices in ``source`` and ``target`` are part of the graph." msgstr "" -msgid "Migrating ``pgr_trsp`` (Vertices) using ``pgr_trsp``" +msgid "" +"In a directed graph the edge :math:`(source_{id}, target_{id}, cost_{id})` " +"has directionality: :math:`source_{id} \\rightarrow target_{id}`" msgstr "" -msgid "The following query has restrictions." +msgid "For the following data:" msgstr "" -msgid "The restrictions are the last parameter of the function" +msgid "Edge :math:`2` (:math:`1 \\rightarrow 3`) is not part of the graph." msgstr "" -msgid "Using the old structure of restrictions" +msgid "The data is representing the following graph:" msgstr "" -msgid "Use :doc:`pgr_trsp` (One to One) instead." +msgid "" +"In an undirected graph the edge :math:`(source_{id}, target_{id}, " +"cost_{id})` does not have directionality: :math:`source_{id} \\frac{\\;\\;\\;" +"\\;\\;}{} target_{id}`" msgstr "" -msgid "The new structure of restrictions is been used." +msgid "" +"In terms of a directed graph is like having two edges: :math:`source_{id} " +"\\leftrightarrow target_{id}`" msgstr "" -msgid "It is the second parameter." +msgid "" +"Edge :math:`2` (:math:`1 \\frac{\\;\\;\\;\\;\\;}{} 3`) is not part of the " +"graph." msgstr "" -msgid ":doc:`pgr_trsp`:" +msgid "Graph with ``cost`` and ``reverse_cost``" msgstr "" -msgid "Migration of ``pgr_trsp`` (Edges)" +msgid "``SELECT id, source, target, cost, reverse_cost FROM edges``" +msgstr "" + +msgid "The set of edges :math:`E`:" +msgstr "" + +msgid "" +":math:`E = \\begin{split} \\begin{align} & {\\{(source_{id}, target_{id}, " +"cost_{id}) \\text{ when } cost_{id} >=0 \\}} \\\\ & \\cup \\\\ & " +"{\\{(target_{id}, source_{id}, reverse\\_cost_{id}) \\text{ when } " +"reverse\\_cost_{id} >=0 \\}} \\end{align} \\end{split}`" +msgstr "" + +msgid "" +"Edges :math:`(source \\rightarrow target)` where ``cost`` is non negative " +"are part of the graph." +msgstr "" + +msgid "" +"Edges :math:`(target \\rightarrow source)` where ``reverse_cost`` is non " +"negative are part of the graph." +msgstr "" + +msgid "The set of vertices :math:`V`:" +msgstr "" + +msgid "In a directed graph both edges have directionality" +msgstr "" + +msgid "" +"edge :math:`(source_{id}, target_{id}, cost_{id})` has directionality: :math:" +"`source_{id} \\rightarrow target_{id}`" +msgstr "" + +msgid "" +"edge :math:`(target_{id}, source_{id}, reverse\\_cost_{id})` has " +"directionality: :math:`target_{id} \\rightarrow source_{id}`" +msgstr "" + +msgid "Edges not part of the graph:" +msgstr "" + +msgid ":math:`2` (:math:`1 \\rightarrow 3`)" +msgstr "" + +msgid ":math:`3` (:math:`3 \\rightarrow 2`)" +msgstr "" + +msgid "In a directed graph both edges do not have directionality" +msgstr "" + +msgid "" +"Edge :math:`(source_{id}, target_{id}, cost_{id})` is :math:`source_{id} " +"\\frac{\\;\\;\\;\\;\\;}{} target_{id}`" +msgstr "" + +msgid "" +"Edge :math:`(target_{id}, source_{id}, reverse\\_cost_{id})` is :math:" +"`target_{id} \\frac{\\;\\;\\;\\;\\;}{} source_{id}`" +msgstr "" + +msgid "In terms of a directed graph is like having four edges:" +msgstr "" + +msgid ":math:`source_i \\leftrightarrow target_i`" +msgstr "" + +msgid ":math:`target_i \\leftrightarrow source_i`" +msgstr "" + +msgid ":math:`2` (:math:`1 \\frac{\\;\\;\\;\\;\\;}{} 3`)" +msgstr "" + +msgid ":math:`3` (:math:`3 \\frac{\\;\\;\\;\\;\\;}{} 2`)" +msgstr "" + +msgid "Graphs without geometries" +msgstr "" + +msgid "" +"Personal relationships, genealogy, file dependency problems can be solved " +"using pgRouting. Those problems, normally, do not come with geometries " +"associated with the graph." +msgstr "" + +msgid "Wiki example" +msgstr "" + +msgid "" +"Solve the example problem taken from `wikipedia `__):" +msgstr "" + +msgid "Problem is to find the shortest path from :math:`1` to :math:`5`." +msgstr "" + +msgid "Is an undirected graph." +msgstr "" + +msgid "" +"Although visually looks like to have geometries, the drawing is not to scale." +msgstr "" + +msgid "No geometries associated to the vertices or edges" +msgstr "" + +msgid "Has 6 vertices :math:`\\{1,2,3,4,5,6\\}`" +msgstr "" + +msgid "Has 9 edges:" +msgstr "" + +msgid "" +":math:`\\begin{split} \\begin{align} E = & \\{(1,2,7), (1,3,9), (1,6,14), \\" +"\\ & (2,3,10), (2,4,13), \\\\ & (3,4,11), (3,6,2), \\\\ & (4,5,6), \\\\ & " +"(5,6,9) \\} \\end{align} \\end{split}`" msgstr "" -msgid "The integral types of the ``sql`` can only be ``INTEGER``." +msgid "The graph can be represented in many ways for example:" msgstr "" -msgid "The floating point type of the ``sql`` can only be ``FLOAT``." +msgid "Prepare the database" msgstr "" -msgid "For these migration guide the following points will be used:" +msgid "" +"Create a database for the example, access the database and install " +"pgRouting: ::" msgstr "" -msgid ":doc:`pgr_withPoints` when there are no restrictions," +msgid "Create a table" msgstr "" -msgid ":doc:`pgr_trsp_withPoints` (One to One) when there are restrictions." +msgid "" +"The basic elements needed to perform basic routing on an undirected graph " +"are:" msgstr "" -msgid "Migrating ``pgr_trsp`` (Edges) using ``pgr_withPoints``" +msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT" msgstr "" -msgid "Use :doc:`pgr_withPoints` instead." +msgid "Using this table design for this example:" msgstr "" -msgid "Do not show details, as the deprecated function does not show details." +msgid "Insert the data" msgstr "" -msgid ":doc:`pgr_withPoints`:" +msgid "Find the shortest path" msgstr "" -msgid "On the points query do not include the ``side`` column." +msgid "To solve this example :doc:`pgr_dijkstra` is used:" msgstr "" msgid "" -"When the need of using strictly the same (meaningless) names and types, and " -"node values of the function been migrated then:" +"To go from :math:`1` to :math:`5` the path goes thru the following " +"vertices: :math:`1 \\rightarrow 3 \\rightarrow 6 \\rightarrow 5`" msgstr "" -msgid "Migrating ``pgr_trsp`` (Edges) using ``pgr_trsp_withPoints``" +msgid "Vertex information" msgstr "" -msgid "Use :doc:`pgr_trsp_withPoints` instead." +msgid "To obtain the vertices information, use :doc:`pgr_extractVertices`" msgstr "" -msgid ":doc:`pgr_trsp_withPoints`:" +msgid "Graphs with geometries" msgstr "" -msgid "Migration of ``pgr_trspViaVertices``" +msgid "Create a routing Database" msgstr "" -msgid "The integral types of the ``Edges SQL`` can only be ``INTEGER``." +msgid "" +"The first step is to create a database and load pgRouting in the database." msgstr "" -msgid ":doc:`pgr_dijkstraVia` when there are no restrictions," +msgid "Typically create a database for each project." msgstr "" -msgid ":doc:`pgr_trspVia` when there are restrictions." +msgid "" +"Once having the database to work in, load your data and build the routing " +"application in that database." msgstr "" -msgid "Migrating ``pgr_trspViaVertices`` using ``pgr_dijkstraVia``" +msgid "Load Data" msgstr "" -msgid "Use :doc:`pgr_dijkstraVia` instead." +msgid "There are several ways to load your data into pgRouting." msgstr "" -msgid ":doc:`pgr_dijkstraVia`:" +msgid "Manually creating a database." msgstr "" -msgid "``id1`` is the path identifier" +msgid "`Graphs without geometries`_" msgstr "" -msgid "``id2`` is the node" +#, fuzzy +msgid ":doc:`sampledata`: a small graph used in the documentation examples" +msgstr ":doc:`sampledata` 는 이 매뉴얼의 예제로 사용됩니다." + +msgid "" +"Using `osm2pgrouting `__" msgstr "" -msgid "``id3`` is the edge" +msgid "There are various open source tools that can help, like:" msgstr "" -msgid "Migrating ``pgr_trspViaVertices`` using ``pgr_trspVia``" +msgid "shp2pgsql" msgstr "" -msgid "Use :doc:`pgr_trspVia` instead." +msgid "postgresql shapefile loader" msgstr "" -msgid ":doc:`pgr_trspVia`:" +msgid "ogr2ogr" msgstr "" -msgid "Migration of ``pgr_trspViaEdges``" +msgid "vector data conversion utility" msgstr "" -msgid "" -"And will travel thru the following Via points :math:" -"`4\\rightarrow3\\rightarrow6`" +msgid "osm2pgsql" msgstr "" -msgid ":doc:`pgr_withPointsVia` when there are no restrictions," +msgid "load OSM data into postgresql" msgstr "" -msgid ":doc:`pgr_trspVia_withPoints` when there are restrictions." +msgid "" +"Please note that these tools will **not** import the data in a structure " +"compatible with pgRouting and when this happens the topology needs to be " +"adjusted." msgstr "" -msgid "Migrating ``pgr_trspViaEdges`` using ``pgr_withPointsVia``" +msgid "Breakup a segments on each segment-segment intersection" msgstr "" -msgid "Use :doc:`pgr_withPointsVia` instead." +msgid "" +"When missing, add columns and assign values to ``source``, ``target``, " +"``cost``, ``reverse_cost``." msgstr "" -msgid ":doc:`pgr_withPointsVia`:" +msgid "Connect a disconnected graph." msgstr "" -msgid "Migrating ``pgr_trspViaEdges`` using ``pgr_trspVia_withPoints``" +msgid "Create the complete graph topology" msgstr "" -msgid "Use :doc:`pgr_trspVia_withPoints` instead." +msgid "Create one or more graphs based on the application to be developed." msgstr "" -msgid ":doc:`pgr_trspVia_withPoints`:" +msgid "Create a contracted graph for the high speed roads" msgstr "" -msgid ":doc:`withPoints-category`" -msgstr ":doc:`withPoints-category`" +msgid "Create graphs per state/country" +msgstr "" -msgid "Ordering - Family of functions" +msgid "In few words:" msgstr "" -msgid "pgRouting Concepts" +msgid "Prepare the graph" msgstr "" msgid "" -"This is a simple guide that go through some of the steps for getting started " -"with pgRouting. This guide covers:" +"What and how to prepare the graph, will depend on the application and/or on " +"the quality of the data and/or on how close the information is to have a " +"topology usable by pgRouting and/or some other factors not mentioned." msgstr "" -msgid "Graphs" +msgid "" +"The steps to prepare the graph involve geometry operations using `PostGIS " +"`__ and some others involve graph operations like :doc:" +"`pgr_contraction` to contract a graph." msgstr "" -msgid "A graph is an ordered pair :math:`G = (V ,E)` where:" +msgid "" +"The `workshop `__ has a step by step " +"on how to prepare a graph using Open Street Map data, for a small " +"application." msgstr "" -msgid ":math:`V` is a set of vertices, also called nodes." +msgid "The use of indexes on the database design in general:" msgstr "" -msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V \\}`" +msgid "Have the geometries indexed." msgstr "" -msgid "There are different kinds of graphs:" +msgid "Have the identifiers columns indexed." msgstr "" -msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V\\}`" +msgid "" +"Please consult the `PostgreSQL `__ " +"documentation and the `PostGIS `__ documentation." msgstr "" -msgid "Undirected simple graph" +msgid "Build a routing topology" msgstr "" -msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V, u \\neq v\\}`" +msgid "" +"The basic information to use the majority of the pgRouting functions ``id, " +"source, target, cost, [reverse_cost]`` is what in pgRouting is called the " +"routing topology." msgstr "" -msgid ":math:`E \\subseteq \\{( u, v ) \\mid (u , v) \\in (V X V) \\}`" +msgid "" +"``reverse_cost`` is optional but strongly recommended to have in order to " +"reduce the size of the database due to the size of the geometry columns. " +"Having said that, in this documentation ``reverse_cost`` is used in this " +"documentation." msgstr "" -msgid "Directed simple graph" +msgid "" +"When the data comes with geometries and there is no routing topology, then " +"this step is needed." msgstr "" msgid "" -":math:`E \\subseteq \\{( u, v ) \\mid (u , v) \\in (V X V), u \\neq v\\}`" +"All the start and end vertices of the geometries need an identifier that is " +"to be stored in a ``source`` and ``target`` columns of the table of the " +"data. Likewise, ``cost`` and ``reverse_cost`` need to have the value of " +"traversing the edge in both directions." msgstr "" -msgid "Graphs:" +msgid "" +"If the columns do not exist they need to be added to the table in question. " +"(see `ALTER TABLE `__)" msgstr "" -msgid "Do not have geometries." +msgid "" +"The function :doc:`pgr_extractVertices` is used to create a vertices table " +"based on the edge identifier and the geometry of the edge of the graph." msgstr "" msgid "" -"Some graph theory problems require graphs to have weights, called **cost** " -"in pgRouting." +"Finally using the data stored on the vertices tables the ``source`` and " +"``target`` are filled up." msgstr "" -msgid "" -"In pgRouting there are several ways to represent a graph on the database:" +msgid "See :doc:`sampledata` for an example for building a topology." msgstr "" -msgid "With ``cost``" +msgid "" +"Data coming from OSM and using `osm2pgrouting `__ as an import tool, comes with the routing topology. See an " +"example of using ``osm2pgrouting`` on the `workshop `__." msgstr "" -msgid "(``id``, ``source``, ``target``, ``cost``)" +msgid "Adjust costs" msgstr "" -msgid "With ``cost`` and ``reverse_cost``" +msgid "" +"For this example the ``cost`` and ``reverse_cost`` values are going to be " +"the double of the length of the geometry." msgstr "" -msgid "(``id``, ``source``, ``target``, ``cost``, ``reverse_cost``)" +msgid "Update costs to length of geometry" msgstr "" msgid "" -"Identifier of the edge. Requirement to use the database in a consistent. " -"manner." +"Suppose that ``cost`` and ``reverse_cost`` columns in the sample data " +"represent:" msgstr "" -msgid "Identifier of a vertex." +msgid ":math:`1` when the edge exists in the graph" msgstr "" -msgid "Weight of the edge (``source``, ``target``):" +msgid ":math:`-1` when the edge does not exist in the graph" msgstr "" -msgid "" -"When negative the edge (``source``, ``target``) do not exist on the graph." +msgid "Using that information updating to the length of the geometries:" msgstr "" -msgid "``cost`` must exist in the query." +msgid "Which gives the following results:" msgstr "" msgid "" -"When negative the edge (``target``, ``source``) do not exist on the graph." +"Note that to be able to follow the documentation examples, everything is " +"based on the original graph." msgstr "" -msgid "" -"The decision of the graph to be **directed** or **undirected** is done when " -"executing a pgRouting algorithm." +msgid "Returning to the original data:" msgstr "" -msgid "Graph with ``cost``" +msgid "Update costs based on codes" msgstr "" -msgid "The weighted directed graph, :math:`G_d(V,E)`:" +msgid "Other datasets, can have a column with values like" msgstr "" -msgid "Graph data is obtained with a query" +msgid "``FT`` vehicle flow on the direction of the geometry" msgstr "" -msgid "``SELECT id, source, target, cost FROM edges``" +msgid "``TF`` vehicle flow opposite of the direction of the geometry" msgstr "" -msgid "" -":math:`E = \\{(source_{id}, target_{id}, cost_{id}) \\text{ when } cost_{id} " -"\\ge 0 \\}`" +msgid "``B`` vehicle flow on both directions" msgstr "" -msgid "Edges where ``cost`` is non negative are part of the graph." +msgid "Preparing a code column for the example:" msgstr "" -msgid ":math:`V = \\{source_{id} \\cup target_{id}\\}`" +msgid "Adjusting the costs based on the codes:" msgstr "" -msgid "All vertices in ``source`` and ``target`` are part of the graph." +msgid "Check the Routing Topology" msgstr "" -msgid "" -"In a directed graph the edge :math:`(source_{id}, target_{id}, cost_{id})` " -"has directionality: :math:`source_{id} \\rightarrow target_{id}`" +msgid "There are lots of possible problems in a graph." msgstr "" -msgid "For the following data:" +msgid "The data used may not have been designed with routing in mind." msgstr "" -msgid "Edge :math:`2` (:math:`1 \\rightarrow 3`) is not part of the graph." +msgid "A graph has some very specific requirements." msgstr "" -msgid "The data is representing the following graph:" +msgid "The graph is disconnected." msgstr "" -msgid "" -"In an undirected graph the edge :math:`(source_{id}, target_{id}, " -"cost_{id})` does not have directionality: :math:`source_{id} \\frac{\\;\\;\\;" -"\\;\\;}{} target_{id}`" +msgid "There are unwanted intersections." msgstr "" -msgid "" -"In terms of a directed graph is like having two edges: :math:`source_{id} " -"\\leftrightarrow target_{id}`" +msgid "The graph is too large and needs to be contracted." msgstr "" -msgid "" -"Edge :math:`2` (:math:`1 \\frac{\\;\\;\\;\\;\\;}{} 3`) is not part of the " -"graph." +msgid "A sub graph is needed for the application." msgstr "" -msgid "Graph with ``cost`` and ``reverse_cost``" +msgid "" +"and many other problems that the pgRouting user, that is the application " +"developer might encounter." msgstr "" -msgid "The weighted directed graph, :math:`G_d(V,E)`, is defined by:" +msgid "Crossing edges" msgstr "" -msgid "``SELECT id, source, target, cost, reverse_cost FROM edges``" +msgid "To get the crossing edges:" msgstr "" -msgid "The set of edges :math:`E`:" +msgid "" +"That information is correct, for example, when in terms of vehicles, is it a " +"tunnel or bridge crossing over another road." msgstr "" -msgid "" -":math:`E = \\begin{split} \\begin{align} & {\\{(source_{id}, target_{id}, " -"cost_{id}) \\text{ when } cost_{id} >=0 \\}} \\\\ & \\cup \\\\ & " -"{\\{(target_{id}, source_{id}, reverse\\_cost_{id}) \\text{ when } " -"reverse\\_cost_{id} >=0 \\}} \\end{align} \\end{split}`" +msgid "It might be incorrect, for example:" msgstr "" msgid "" -"Edges :math:`(source \\rightarrow target)` where ``cost`` is non negative " -"are part of the graph." +"When it is actually an intersection of roads, where vehicles can make turns." msgstr "" msgid "" -"Edges :math:`(target \\rightarrow source)` where ``reverse_cost`` is non " -"negative are part of the graph." +"When in terms of electrical lines, the electrical line is able to switch " +"roads even on a tunnel or bridge." msgstr "" -msgid "The set of vertices :math:`V`:" +msgid "When it is incorrect, it needs fixing:" msgstr "" -msgid "In a directed graph both edges have directionality" +msgid "For vehicles and pedestrians" msgstr "" msgid "" -"edge :math:`(source_{id}, target_{id}, cost_{id})` has directionality: :math:" -"`source_{id} \\rightarrow target_{id}`" +"If the data comes from OSM and was imported to the database using " +"``osm2pgrouting``, the fix needs to be done in the `OSM portal `__ and the data imported again." msgstr "" msgid "" -"edge :math:`(target_{id}, source_{id}, reverse\\_cost_{id})` has " -"directionality: :math:`target_{id} \\rightarrow source_{id}`" -msgstr "" - -msgid "Edges not part of the graph:" -msgstr "" - -msgid ":math:`2` (:math:`1 \\rightarrow 3`)" +"In general when the data comes from a supplier that has the data prepared " +"for routing vehicles, and there is a problem, the data is to be fixed from " +"the supplier" msgstr "" -msgid ":math:`3` (:math:`3 \\rightarrow 2`)" +msgid "For very specific applications" msgstr "" -msgid "In a directed graph both edges do not have directionality" +msgid "" +"The data is correct when from the point of view of routing vehicles or " +"pedestrians." msgstr "" -msgid "" -"Edge :math:`(source_{id}, target_{id}, cost_{id})` is :math:`source_{id} " -"\\frac{\\;\\;\\;\\;\\;}{} target_{id}`" +msgid "The data needs a local fix for the specific application." msgstr "" msgid "" -"Edge :math:`(target_{id}, source_{id}, reverse\\_cost_{id})` is :math:" -"`target_{id} \\frac{\\;\\;\\;\\;\\;}{} source_{id}`" +"Once analyzed one by one the crossings, for the ones that need a local fix, " +"the edges need to be `split `__." msgstr "" -msgid "In terms of a directed graph is like having four edges:" +msgid "" +"The new edges need to be added to the edges table, the rest of the " +"attributes need to be updated in the new edges, the old edges need to be " +"removed and the routing topology needs to be updated." msgstr "" -msgid ":math:`source_i \\leftrightarrow target_i`" +msgid "Adding split edges" msgstr "" -msgid ":math:`target_i \\leftrightarrow source_i`" +msgid "" +"For each pair of crossing edges a process similar to this one must be " +"performed." msgstr "" -msgid ":math:`2` (:math:`1 \\frac{\\;\\;\\;\\;\\;}{} 3`)" +msgid "" +"The columns inserted and the way are calculated are based on the " +"application. For example, if the edges have a trait **name**, then that " +"column is to be copied." msgstr "" -msgid ":math:`3` (:math:`3 \\frac{\\;\\;\\;\\;\\;}{} 2`)" +msgid "For pgRouting calculations" msgstr "" -msgid "Graphs without geometries" +msgid "" +"**factor** based on the position of the intersection of the edges can be " +"used to adjust the ``cost`` and ``reverse_cost`` columns." msgstr "" msgid "" -"Personal relationships, genealogy, file dependency problems can be solved " -"using pgRouting. Those problems, normally, do not come with geometries " -"associated with the graph." +"Capacity information, used in the :doc:`flow-family` functions does not need " +"to change when splitting edges." msgstr "" -msgid "Wiki example" +msgid "Adding new vertices" msgstr "" msgid "" -"Solve the example problem taken from `wikipedia `__):" +"After adding all the split edges required by the application, the newly " +"created vertices need to be added to the vertices table." msgstr "" -msgid "Problem is to find the shortest path from :math:`1` to :math:`5`." +msgid "Updating edges topology" msgstr "" -msgid "Is an undirected graph." +msgid "Removing the surplus edges" msgstr "" msgid "" -"Although visually looks like to have geometries, the drawing is not to scale." +"Once all significant information needed by the application has been " +"transported to the new edges, then the crossing edges can be deleted." msgstr "" -msgid "No geometries associated to the vertices or edges" +msgid "" +"There are other options to do this task, like creating a view, or a " +"materialized view." msgstr "" -msgid "Has 6 vertices :math:`\\{1,2,3,4,5,6\\}`" +msgid "Updating vertices topology" msgstr "" -msgid "Has 9 edges:" +msgid "To keep the graph consistent, the vertices topology needs to be updated" msgstr "" -msgid "" -":math:`\\begin{split} \\begin{align} E = & \\{(1,2,7), (1,3,9), (1,6,14), \\" -"\\ & (2,3,10), (2,4,13), \\\\ & (3,4,11), (3,6,2), \\\\ & (4,5,6), \\\\ & " -"(5,6,9) \\} \\end{align} \\end{split}`" +msgid "Checking for crossing edges" msgstr "" -msgid "The graph can be represented in many ways for example:" +msgid "There are no crossing edges on the graph." msgstr "" -msgid "Prepare the database" +msgid "Disconnected graphs" +msgstr "" + +msgid "To get the graph connectivity:" msgstr "" msgid "" -"Create a database for the example, access the database and install " -"pgRouting: ::" +"In this example, the component :math:`2` consists of vertices :math:`\\{2, " +"4\\}` and both vertices are also part of the dead end result set." msgstr "" -msgid "Create a table" +msgid "This graph needs to be connected." msgstr "" msgid "" -"The basic elements needed to perform basic routing on an undirected graph " -"are:" +"With the original graph of this documentation, there would be 3 components " +"as the crossing edge in this graph is a different component." msgstr "" -msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT" +msgid "Prepare storage for connection information" msgstr "" -msgid "Using this table design for this example:" +msgid "Save the vertices connection information" msgstr "" -msgid "Insert the data" +msgid "Save the edges connection information" msgstr "" -msgid "Find the shortest path" +msgid "Get the closest vertex" msgstr "" -msgid "To solve this example :doc:`pgr_dijkstra` is used:" +msgid "" +"Using :doc:`pgr_findCloseEdges` the closest vertex to component :math:`1` is " +"vertex :math:`4`. And the closest edge to vertex :math:`4` is edge :math:" +"`14`." msgstr "" msgid "" -"To go from :math:`1` to :math:`5` the path goes thru the following " -"vertices: :math:`1 \\rightarrow 3 \\rightarrow 6 \\rightarrow 5`" +"The ``edge`` can be used to connect the components, using the ``fraction`` " +"information about the edge :math:`14` to split the connecting edge." msgstr "" -msgid "Vertex information" +msgid "Connecting components" msgstr "" -msgid "To obtain the vertices information, use :doc:`pgr_extractVertices`" +msgid "There are three basic ways to connect the components" msgstr "" -msgid "Graphs with geometries" +msgid "From the vertex to the starting point of the edge" msgstr "" -msgid "Create a routing Database" +msgid "From the vertex to the ending point of the edge" msgstr "" -msgid "" -"The first step is to create a database and load pgRouting in the database." +msgid "From the vertex to the closest vertex on the edge" msgstr "" -msgid "Typically create a database for each project." +msgid "This solution requires the edge to be split." msgstr "" -msgid "" -"Once having the database to work in, load your data and build the routing " -"application in that database." +msgid "The following query shows the three ways to connect the components:" msgstr "" -msgid "Load Data" +msgid "Checking components" msgstr "" -msgid "There are several ways to load your data into pgRouting." +msgid "" +"Ignoring the edge that requires further work. The graph is now fully " +"connected as there is only one component." msgstr "" -msgid "Manually creating a database." +msgid "Contraction of a graph" msgstr "" -msgid "`Graphs without geometries`_" +msgid "The graph can be reduced in size using :doc:`contraction-family`" msgstr "" -#, fuzzy -msgid ":doc:`sampledata`: a small graph used in the documentation examples" -msgstr ":doc:`sampledata` 는 이 매뉴얼의 예제로 사용됩니다." - msgid "" -"Using `osm2pgrouting `__" -msgstr "" - -msgid "There are various open source tools that can help, like:" -msgstr "" - -msgid "shp2pgsql" +"When to contract will depend on the size of the graph, processing times, " +"correctness of the data, on the final application, or any other factor not " +"mentioned." msgstr "" -msgid "postgresql shapefile loader" +msgid "" +"A fairly good method of finding out if contraction can be useful is because " +"of the number of dead ends and/or the number of linear edges." msgstr "" -msgid "ogr2ogr" +msgid "" +"A complete method on how to contract and how to use the contracted graph is " +"described on :doc:`contraction-family`" msgstr "" -msgid "vector data conversion utility" +msgid "Dead ends" msgstr "" -msgid "osm2pgsql" +msgid "To get the dead ends:" msgstr "" -msgid "load OSM data into postgresql" +msgid "A dead end happens when" msgstr "" msgid "" -"Please note that these tools will **not** import the data in a structure " -"compatible with pgRouting and when this happens the topology needs to be " -"adjusted." +"The vertex is the limit of a cul-de-sac, a no-through road or a no-exit road." msgstr "" -msgid "Breakup a segments on each segment-segment intersection" +msgid "The vertex is on the limit of the imported graph." msgstr "" -msgid "" -"When missing, add columns and assign values to ``source``, ``target``, " -"``cost``, ``reverse_cost``." +msgid "If a larger graph is imported then the vertex might not be a dead end" msgstr "" -msgid "Connect a disconnected graph." +msgid "" +"Node :math:`4`, is a dead end on the query, even that it visually looks like " +"an end point of 3 edges." msgstr "" -msgid "Create the complete graph topology" +msgid "Is node :math:`4` a dead end or not?" msgstr "" -msgid "Create one or more graphs based on the application to be developed." +msgid "The answer to that question will depend on the application." msgstr "" -msgid "Create a contracted graph for the high speed roads" +msgid "Is there such a small curb:" msgstr "" -msgid "Create graphs per state/country" +msgid "That does not allow a vehicle to use that visual intersection?" msgstr "" -msgid "In few words:" +msgid "" +"Is the application for pedestrians and therefore the pedestrian can easily " +"walk on the small curb?" msgstr "" -msgid "Prepare the graph" +msgid "" +"Is the application for the electricity and the electrical lines than can " +"easily be extended on top of the small curb?" msgstr "" msgid "" -"What and how to prepare the graph, will depend on the application and/or on " -"the quality of the data and/or on how close the information is to have a " -"topology usable by pgRouting and/or some other factors not mentioned." +"Is there a big cliff and from eagles view look like the dead end is close to " +"the segment?" msgstr "" -msgid "" -"The steps to prepare the graph involve geometry operations using `PostGIS " -"`__ and some others involve graph operations like :doc:" -"`pgr_contraction` to contract a graph." +msgid "Depending on the answer, modification of the data might be needed." msgstr "" msgid "" -"The `workshop `__ has a step by step " -"on how to prepare a graph using Open Street Map data, for a small " -"application." +"When there are many dead ends, to speed up processing, the :doc:`contraction-" +"family` functions can be used to contract the graph." msgstr "" -msgid "The use of indexes on the database design in general:" +msgid "Linear edges" msgstr "" -msgid "Have the geometries indexed." +msgid "To get the linear edges:" msgstr "" -msgid "Have the identifiers columns indexed." +msgid "" +"These linear vertices are correct, for example, when those the vertices are " +"speed bumps, stop signals and the application is taking them into account." msgstr "" msgid "" -"Please consult the `PostgreSQL `__ " -"documentation and the `PostGIS `__ documentation." +"When there are many linear vertices, that need not to be taken into account, " +"to speed up the processing, the :doc:`contraction-family` functions can be " +"used to contract the problem." msgstr "" -msgid "Build a routing topology" +msgid "Function's structure" msgstr "" msgid "" -"The basic information to use the majority of the pgRouting functions ``id, " -"source, target, cost, [reverse_cost]`` is what in pgRouting is called the " -"routing topology." +"Once the graph preparation work has been done above, it is time to use a" msgstr "" -msgid "" -"``reverse_cost`` is optional but strongly recommended to have in order to " -"reduce the size of the database due to the size of the geometry columns. " -"Having said that, in this documentation ``reverse_cost`` is used in this " -"documentation." +msgid "The general form of a pgRouting function call is:" msgstr "" -msgid "" -"When the data comes with geometries and there is no routing topology, then " -"this step is needed." +msgid "\\ \\" msgstr "" -msgid "" -"All the start and end vertices of the geometries need an identifier that is " -"to be stored in a ``source`` and ``target`` columns of the table of the " -"data. Likewise, ``cost`` and ``reverse_cost`` need to have the value of " -"traversing the edge in both directions." +msgid "pgr_(`Inner queries`_, **parameters**, [ ``Optional parameters``)" msgstr "" msgid "" -"If the columns do not exist they need to be added to the table in question. " -"(see `ALTER TABLE `__)" +"`Inner queries`_: Are compulsory parameters that are ``TEXT`` strings " +"containing SQL queries." msgstr "" msgid "" -"The function :doc:`pgr_extractVertices` is used to create a vertices table " -"based on the edge identifier and the geometry of the edge of the graph." +"**parameters**: Additional compulsory parameters needed by the function." msgstr "" msgid "" -"Finally using the data stored on the vertices tables the ``source`` and " -"``target`` are filled up." -msgstr "" - -msgid "See :doc:`sampledata` for an example for building a topology." +"``Optional parameters``: Are non compulsory **named** parameters that have a " +"default value when omitted." msgstr "" msgid "" -"Data coming from OSM and using `osm2pgrouting `__ as an import tool, comes with the routing topology. See an " -"example of using ``osm2pgrouting`` on the `workshop `__." +"The compulsory parameters are positional parameters, the optional parameters " +"are named parameters." msgstr "" -msgid "Adjust costs" +msgid "For example, for this :doc:`pgr_dijkstra` signature:" msgstr "" msgid "" -"For this example the ``cost`` and ``reverse_cost`` values are going to be " -"the double of the length of the geometry." +"pgr_dijkstra(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" msgstr "" -msgid "Update costs to length of geometry" +msgid "`Edges SQL`_:" msgstr "" -msgid "" -"Suppose that ``cost`` and ``reverse_cost`` columns in the sample data " -"represent:" +msgid "Is the first parameter." msgstr "" -msgid ":math:`1` when the edge exists in the graph" +msgid "It is compulsory." msgstr "" -msgid ":math:`-1` when the edge does not exist in the graph" +msgid "It is an inner query." msgstr "" -msgid "Using that information updating to the length of the geometries:" +msgid "" +"It has no name, so **Edges SQL** gives an idea of what kind of inner query " +"needs to be used" msgstr "" -msgid "Which gives the following results:" +msgid "**start vid**:" +msgstr "" + +msgid "Is the second parameter." msgstr "" msgid "" -"Note that to be able to follow the documentation examples, everything is " -"based on the original graph." +"It has no name, so **start vid** gives an idea of what the second " +"parameter's value should contain." msgstr "" -msgid "Returning to the original data:" +msgid "Is the third parameter." msgstr "" -msgid "Update costs based on codes" +msgid "" +"It has no name, so **end vid** gives an idea of what the third parameter's " +"value should contain" msgstr "" -msgid "Other datasets, can have a column with values like" +msgid "Is the fourth parameter." msgstr "" -msgid "``FT`` vehicle flow on the direction of the geometry" +msgid "It is optional." msgstr "" -msgid "``TF`` vehicle flow opposite of the direction of the geometry" +msgid "It has a name." msgstr "" -msgid "``B`` vehicle flow on both directions" +msgid "" +"The full description of the parameters are found on the `Parameters`_ " +"section of each function." msgstr "" -msgid "Preparing a code column for the example:" +msgid "Function's overloads" msgstr "" -msgid "Adjusting the costs based on the codes:" +msgid "A function might have different overloads. The most common are called:" msgstr "" -msgid "Check the Routing Topology" +msgid "`One to One`_" msgstr "" -msgid "There are lots of possible problems in a graph." +msgid "`One to Many`_" msgstr "" -msgid "The data used may not have been designed with routing in mind." +msgid "`Many to One`_" msgstr "" -msgid "A graph has some very specific requirements." +msgid "`Many to Many`_" msgstr "" -msgid "The graph is disconnected." +msgid "`Combinations`_" msgstr "" -msgid "There are unwanted intersections." +msgid "Depending on the overload the parameters types change." msgstr "" -msgid "The graph is too large and needs to be contracted." +msgid "**One**: **ANY-INTEGER**" msgstr "" -msgid "A sub graph is needed for the application." +msgid "**Many**: ``ARRAY`` [**ANY-INTEGER**]" msgstr "" msgid "" -"and many other problems that the pgRouting user, that is the application " -"developer might encounter." +"Depending of the function the overloads may vary. But the concept of " +"parameter type change remains the same." msgstr "" -msgid "Crossing edges" +msgid "One to One" msgstr "" -msgid "To get the crossing edges:" +msgid "When routing from:" msgstr "" -msgid "" -"That information is correct, for example, when in terms of vehicles, is it a " -"tunnel or bridge crossing over another road." +msgid "From **one** starting vertex" msgstr "" -msgid "It might be incorrect, for example:" +msgid "to **one** ending vertex" msgstr "" -msgid "" -"When it is actually an intersection of roads, where vehicles can make turns." +msgid "One to Many" msgstr "" -msgid "" -"When in terms of electrical lines, the electrical line is able to switch " -"roads even on a tunnel or bridge." +msgid "to **many** ending vertices" msgstr "" -msgid "When it is incorrect, it needs fixing:" +msgid "Many to One" msgstr "" -msgid "For vehicles and pedestrians" +msgid "From **many** starting vertices" msgstr "" -msgid "" -"If the data comes from OSM and was imported to the database using " -"``osm2pgrouting``, the fix needs to be done in the `OSM portal `__ and the data imported again." +msgid "Many to Many" msgstr "" -msgid "" -"In general when the data comes from a supplier that has the data prepared " -"for routing vehicles, and there is a problem, the data is to be fixed from " -"the supplier" +msgid "Combinations" msgstr "" -msgid "For very specific applications" +msgid "From **many** different starting vertices" msgstr "" -msgid "" -"The data is correct when from the point of view of routing vehicles or " -"pedestrians." +msgid "to **many** different ending vertices" msgstr "" -msgid "The data needs a local fix for the specific application." +msgid "Every tuple specifies a pair of a start vertex and an end vertex" msgstr "" -msgid "" -"Once analyzed one by one the crossings, for the ones that need a local fix, " -"the edges need to be `split `__." +msgid "Users can define the combinations as desired." +msgstr "" + +msgid "Needs a `Combinations SQL`_" msgstr "" msgid "" -"The new edges need to be added to the edges table, the rest of the " -"attributes need to be updated in the new edges, the old edges need to be " -"removed and the routing topology needs to be updated." +"There are several kinds of valid inner queries and also the columns returned " +"are depending of the function. Which kind of inner query will depend on the " +"function's requirements. To simplify the variety of types, **ANY-INTEGER** " +"and **ANY-NUMERICAL** is used." msgstr "" -msgid "Adding split edges" +msgid "Edges SQL for" msgstr "" -msgid "" -"For each pair of crossing edges a process similar to this one must be " -"performed." +msgid ":doc:`withPoints-family`" +msgstr ":doc:`withPoints-family`" + +msgid "Some uncategorised functions" msgstr "" -msgid "" -"The columns inserted and the way are calculated are based on the " -"application. For example, if the edges have a trait **name**, then that " -"column is to be copied." +msgid "General without ``id``" msgstr "" -msgid "For pgRouting calculations" +msgid "General with (X,Y)" msgstr "" msgid "" -"**factor** based on the position of the intersection of the edges can be " -"used to adjust the ``cost`` and ``reverse_cost`` columns." +"When negative: edge (``source``, ``target``) does not exist, therefore it's " +"not part of the graph." msgstr "" -msgid "" -"Capacity information, used in the :doc:`flow-family` functions does not need " -"to change when splitting edges." +msgid "Weight of the edge (``target``, ``source``)," msgstr "" -msgid "Adding new vertices" +msgid "``x1``" msgstr "" -msgid "" -"After adding all the split edges required by the application, the newly " -"created vertices need to be added to the vertices table." +msgid "X coordinate of ``source`` vertex." msgstr "" -msgid "Updating edges topology" +msgid "``y1``" msgstr "" -msgid "Removing the surplus edges" +msgid "Y coordinate of ``source`` vertex." msgstr "" -msgid "" -"Once all significant information needed by the application has been " -"transported to the new edges, then the crossing edges can be deleted." +msgid "``x2``" msgstr "" -msgid "" -"There are other options to do this task, like creating a view, or a " -"materialized view." +msgid "X coordinate of ``target`` vertex." msgstr "" -msgid "Updating vertices topology" +msgid "``y2``" msgstr "" -msgid "To keep the graph consistent, the vertices topology needs to be updated" +msgid "Y coordinate of ``target`` vertex." msgstr "" -msgid "Checking for crossing edges" +msgid "Flow" msgstr "" -msgid "There are no crossing edges on the graph." +msgid "Edges SQL for :doc:`flow-family`" msgstr "" -msgid "Disconnected graphs" +msgid "Edges SQL for the following functions of :doc:`flow-family`" msgstr "" -msgid "To get the graph connectivity:" +msgid "Used in combination signatures" msgstr "" -msgid "" -"In this example, the component :math:`2` consists of vertices :math:`\\{2, " -"4\\}` and both vertices are also part of the dead end result set." +msgid "Points SQL for" msgstr "" -msgid "This graph needs to be connected." +msgid "" +"The main parameter of the majority of the pgRouting functions is a query " +"that selects the edges of the graph." msgstr "" msgid "" -"With the original graph of this documentation, there would be 3 components " -"as the crossing edge in this graph is a different component." +"Depending on the family or category of a function it will have additional " +"parameters, some of them are compulsory and some are optional." msgstr "" -msgid "Prepare storage for connection information" +msgid "" +"The compulsory parameters are nameless and must be given in the required " +"order. The optional parameters are named parameters and will have a default " +"value." msgstr "" -msgid "Save the vertices connection information" +msgid "Parameters for the Via functions" msgstr "" -msgid "Save the edges connection information" +msgid "SQL query as described." msgstr "" -msgid "Get the closest vertex" +msgid "When ``true`` Graph is considered `Directed`" msgstr "" -msgid "" -"Using :doc:`pgr_findCloseEdges` the closest vertex to component :math:`1` is " -"vertex :math:`4`. And the closest edge to vertex :math:`4` is edge :math:" -"`14`." +msgid "When ``false`` the graph is considered as Undirected." msgstr "" -msgid "" -"The ``edge`` can be used to connect the components, using the ``fraction`` " -"information about the edge :math:`14` to split the connecting edge." +msgid "``strict``" msgstr "" -msgid "Connecting components" +msgid "``false``" msgstr "" -msgid "There are three basic ways to connect the components" +msgid "When ``true`` if a path is missing stops and returns **EMPTY SET**" msgstr "" -msgid "From the vertex to the starting point of the edge" +msgid "When ``false`` ignores missing paths returning all paths found" msgstr "" -msgid "From the vertex to the ending point of the edge" +msgid "``U_turn_on_edge``" msgstr "" -msgid "From the vertex to the closest vertex on the edge" +msgid "" +"When ``true`` departing from a visited vertex will not try to avoid using " +"the edge used to reach it. In other words, U turn using the edge with same " +"identifier is allowed." msgstr "" -msgid "This solution requires the edge to be split." +msgid "" +"When ``false`` when a departing from a visited vertex tries to avoid using " +"the edge used to reach it. In other words, U turn using the edge with same " +"identifier is used when no other path is found." msgstr "" -msgid "The following query shows the three ways to connect the components:" +msgid "For the TRSP functions" msgstr "" -msgid "Checking components" +msgid "Array of identifiers of destination vertices." msgstr "" msgid "" -"Ignoring the edge that requires further work. The graph is now fully " -"connected as there is only one component." +"There are several kinds of columns returned are depending of the function." msgstr "" -msgid "Contraction of a graph" -msgstr "" +#, fuzzy +msgid "Result columns for a path" +msgstr "결과 컬럼" -msgid "The graph can be reduced in size using :doc:`contraction-family`" +msgid "Used in functions that return one path solution" msgstr "" msgid "" -"When to contract will depend on the size of the graph, processing times, " -"correctness of the data, on the final application, or any other factor not " -"mentioned." +"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost, " +"agg_cost)``" msgstr "" -msgid "" -"A fairly good method of finding out if contraction can be useful is because " -"of the number of dead ends and/or the number of linear edges." +msgid "``path_seq``" msgstr "" msgid "" -"A complete method on how to contract and how to use the contracted graph is " -"described on :doc:`contraction-family`" +"Relative position in the path. Has value **1** for the beginning of a path." msgstr "" -msgid "Dead ends" +msgid "" +"Identifier of the starting vertex. Returned when multiple starting vetrices " +"are in the query." msgstr "" -msgid "To get the dead ends:" +msgid "" +"Identifier of the ending vertex. Returned when multiple ending vertices are " +"in the query." msgstr "" -msgid "" -"That information is correct, for example, when the dead end is on the limit " -"of the imported graph." +msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``." msgstr "" msgid "" -"Visually node :math:`4` looks to be as start/ending of 3 edges, but it is " -"not." +"Identifier of the edge used to go from ``node`` to the next node in the path " +"sequence. **-1** for the last node of the path." msgstr "" -msgid "Is that correct?" +msgid "" +"Cost to traverse from ``node`` using ``edge`` to the next node in the path " +"sequence." msgstr "" -msgid "Is there such a small curb:" +msgid "Used in functions the following:" msgstr "" -msgid "That does not allow a vehicle to use that visual intersection?" +msgid "" +"Returns set of ``(seq, path_seq [, start_pid] [, end_pid], node, edge, cost, " +"agg_cost)``" msgstr "" -msgid "" -"Is the application for pedestrians and therefore the pedestrian can easily " -"walk on the small curb?" +msgid "Relative position in the path." msgstr "" -msgid "" -"Is the application for the electricity and the electrical lines than can " -"easily be extended on top of the small curb?" +msgid "**1** For the first row of the path." msgstr "" -msgid "" -"Is there a big cliff and from eagles view look like the dead end is close to " -"the segment?" +msgid "``start_pid``" msgstr "" -msgid "" -"When there are many dead ends, to speed up, the :doc:`contraction-family` " -"functions can be used to divide the problem." +msgid "Identifier of a starting vertex/point of the path." msgstr "" -msgid "Linear edges" +msgid "When positive is the identifier of the starting vertex." msgstr "" -msgid "To get the linear edges:" +msgid "When negative is the identifier of the starting point." msgstr "" -msgid "" -"This information is correct, for example, when the application is taking " -"into account speed bumps, stop signals." +msgid "Returned on `Many to One`_ and `Many to Many`_" msgstr "" -msgid "" -"When there are many linear edges, to speed up, the :doc:`contraction-family` " -"functions can be used to divide the problem." +msgid "``end_pid``" msgstr "" -msgid "Function's structure" +msgid "Identifier of an ending vertex/point of the path." msgstr "" -msgid "" -"Once the graph preparation work has been done above, it is time to use a" +msgid "When positive is the identifier of the ending vertex." msgstr "" -msgid "The general form of a pgRouting function call is:" +msgid "When negative is the identifier of the ending point." msgstr "" -msgid "\\ \\" +msgid "Returned on `One to Many`_ and `Many to Many`_" msgstr "" -msgid "pgr_(`Inner queries`_, **parameters**, [ ``Optional parameters``)" +msgid "Identifier of the node in the path from ``start_pid`` to ``end_pid``." msgstr "" -msgid "" -"`Inner queries`_: Are compulsory parameters that are ``TEXT`` strings " -"containing SQL queries." +msgid "When positive is the identifier of the a vertex." msgstr "" -msgid "" -"**parameters**: Additional compulsory parameters needed by the function." +msgid "When negative is the identifier of the a point." msgstr "" msgid "" -"``Optional parameters``: Are non compulsory **named** parameters that have a " -"default value when omitted." +"Identifier of the edge used to go from ``node`` to the next node in the path " +"sequence." msgstr "" -msgid "" -"The compulsory parameters are positional parameters, the optional parameters " -"are named parameters." +msgid "**-1** for the last row of the path." msgstr "" -msgid "For example, for this :doc:`pgr_dijkstra` signature:" +msgid "**0** For the first row of the path." msgstr "" +msgid ":doc:`pgr_dijkstraNear`" +msgstr ":doc:`pgr_dijkstraNear`" + msgid "" -"pgr_dijkstra(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" +"Returns ``(seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)``" msgstr "" -msgid "`Edges SQL`_:" +msgid "Identifier of the starting vertex of the current path." msgstr "" -msgid "Is the first parameter." +msgid "Identifier of the ending vertex of the current path." msgstr "" -msgid "It is compulsory." +msgid "Multiple paths" msgstr "" -msgid "It is an inner query." +msgid "Selective for multiple paths." +msgstr "" + +msgid "The columns depend on the function call." msgstr "" msgid "" -"It has no name, so **Edges SQL** gives an idea of what kind of inner query " -"needs to be used" +"Set of ``(seq, path_id, path_seq [, start_vid] [, end_vid], node, edge, " +"cost, agg_cost)``" msgstr "" -msgid "**start vid**:" +msgid "``path_id``" msgstr "" -msgid "Is the second parameter." +msgid "Path identifier." msgstr "" msgid "" -"It has no name, so **start vid** gives an idea of what the second " -"parameter's value should contain." +"Has value **1** for the first of a path from ``start_vid`` to ``end_vid``." msgstr "" -msgid "Is the third parameter." +msgid "Non selective for multiple paths" msgstr "" -msgid "" -"It has no name, so **end vid** gives an idea of what the third parameter's " -"value should contain" +msgid "Regardless of the call, al the columns are returned." msgstr "" -msgid "Is the fourth parameter." +msgid "" +"Returns set of ``(seq, path_id, path_seq, start_vid, end_vid, node, edge, " +"cost, agg_cost)``" msgstr "" -msgid "It is optional." +msgid "Result columns for cost functions" msgstr "" -msgid "It has a name." +msgid "Used in the following" msgstr "" msgid "" -"The full description of the parameters are found on the `Parameters`_ " -"section of each function." +"When start_vid or end_vid columns have negative values, the identifier is " +"for a Point." msgstr "" -msgid "Function's overloads" +msgid "Result columns for flow functions" msgstr "" -msgid "A function might have different overloads. The most common are called:" +msgid "Edges SQL for the following" msgstr "" -msgid "`One to One`_" +msgid "Result columns for spanning tree functions" msgstr "" -msgid "`One to Many`_" +msgid "Returns set of ``(edge, cost)``" msgstr "" -msgid "`Many to One`_" +msgid "Cost to traverse the edge." msgstr "" -msgid "`Many to Many`_" +msgid "Performance Tips" msgstr "" -msgid "`Combinations`_" +msgid "For the Routing functions" msgstr "" -msgid "Depending on the overload the parameters types change." +msgid "" +"To get faster results bound the queries to an area of interest of routing." msgstr "" -msgid "**One**: **ANY-INTEGER**" +msgid "" +"In this example Use an inner query SQL that does not include some edges in " +"the routing function and is within the area of the results." msgstr "" -msgid "**Many**: ``ARRAY`` [**ANY-INTEGER**]" +msgid "Given this area:" msgstr "" -msgid "" -"Depending of the function the overloads may vary. But the concept of " -"parameter type change remains the same." +msgid "Calculate a route:" msgstr "" -msgid "One to One" +msgid "How to contribute" msgstr "" -msgid "When routing from:" +msgid "Wiki" msgstr "" -msgid "From **one** starting vertex" +msgid "" +"Edit an existing `pgRouting Wiki `__ page." msgstr "" -msgid "to **one** ending vertex" +msgid "Or create a new Wiki page" msgstr "" -msgid "One to Many" +msgid "" +"Create a page on the `pgRouting Wiki `__" msgstr "" -msgid "to **many** ending vertices" +msgid "Give the title an appropriate name" msgstr "" -msgid "Many to One" +msgid "" +"`Example `__" msgstr "" -msgid "From **many** starting vertices" +msgid "Adding Functionality to pgRouting" msgstr "" -msgid "Many to Many" +msgid "" +"Consult the `developer's documentation `__" msgstr "" -msgid "Combinations" -msgstr "" +msgid "Installation" +msgstr "설치" -msgid "From **many** different starting vertices" -msgstr "" +msgid ":ref:`install-short`" +msgstr ":ref:`install-short`" -msgid "to **many** different ending vertices" -msgstr "" +msgid ":ref:`install_get_sources`" +msgstr ":ref:`install_get_sources`" -msgid "Every tuple specifies a pair of a start vertex and an end vertex" -msgstr "" +msgid ":ref:`install_enable_db`" +msgstr ":ref:`install_enable_db`" -msgid "Users can define the combinations as desired." -msgstr "" +msgid ":ref:`install_dependencies`" +msgstr ":ref:`install_dependencies`" -msgid "Needs a `Combinations SQL`_" -msgstr "" +msgid ":ref:`install_configuring`" +msgstr ":ref:`install_configuring`" + +msgid ":ref:`install_build`" +msgstr ":ref:`install_build`" + +msgid ":ref:`install_testing`" +msgstr ":ref:`install_testing`" msgid "" -"There are several kinds of valid inner queries and also the columns returned " -"are depending of the function. Which kind of inner query will depend on the " -"function's requirements. To simplify the variety of types, **ANY-INTEGER** " -"and **ANY-NUMERICAL** is used." +"Instructions for downloading and installing binaries for different operating " +"systems, additional notes and corrections not included in this documentation " +"can be found in `Installation wiki `__" msgstr "" -msgid "Edges SQL for" +msgid "" +"To use pgRouting PostGIS needs to be installed, please read the information " +"about installation in this `Install Guide `__" msgstr "" -msgid ":doc:`withPoints-family`" -msgstr ":doc:`withPoints-family`" +msgid "Short Version" +msgstr "짧은 버전" -msgid "Some uncategorised functions" -msgstr "" +msgid "Extracting the tar ball" +msgstr "tar ball 압축 해제" -msgid "General without ``id``" +msgid "To compile assuming you have all the dependencies in your search path:" msgstr "" -msgid "General with (X,Y)" +msgid "" +"Once pgRouting is installed, it needs to be enabled in each individual " +"database you want to use it in." msgstr "" +msgid "Get the sources" +msgstr "소스 가져오기" + msgid "" -"When negative: edge (``source``, ``target``) does not exist, therefore it's " -"not part of the graph." +"The pgRouting latest release can be found in https://github.com/pgRouting/" +"pgrouting/releases/latest" msgstr "" -msgid "Weight of the edge (``target``, ``source``)," +msgid "To download this release:" msgstr "" -msgid "``x1``" +msgid "" +"Go to :ref:`install-short` for more instructions on extracting tar ball and " +"compiling pgRouting." msgstr "" -msgid "X coordinate of ``source`` vertex." -msgstr "" +msgid "git" +msgstr "git" -msgid "``y1``" +msgid "To download the repository" msgstr "" -msgid "Y coordinate of ``source`` vertex." +msgid "" +"Go to :ref:`install-short` for more instructions on compiling pgRouting " +"(there is no tar ball involved while downloading pgRouting repository from " +"GitHub)." msgstr "" -msgid "``x2``" -msgstr "" +msgid "Enabling and upgrading in the database" +msgstr "데이터베이스에서 활성화 및 업그레이드 하기" -msgid "X coordinate of ``target`` vertex." -msgstr "" +msgid "Enabling the database" +msgstr "데이터베이스 활성화" -msgid "``y2``" +msgid "" +"pgRouting is a PostgreSQL extension and depends on PostGIS to provide " +"functionalities to end user. Below given code demonstrates enabling PostGIS " +"and pgRouting in the database." msgstr "" -msgid "Y coordinate of ``target`` vertex." +msgid "" +"Checking PostGIS and pgRouting version after enabling them in the database." msgstr "" -msgid "Flow" -msgstr "" +msgid "Upgrading the database" +msgstr "데이터베이스 업그레이드" -msgid "Edges SQL for :doc:`flow-family`" +msgid "" +"To upgrade pgRouting in the database to version 4.0.0 use the following " +"command:" msgstr "" -msgid "Edges SQL for the following functions of :doc:`flow-family`" +msgid "" +"More information can be found in https://www.postgresql.org/docs/current/sql-" +"createextension.html" msgstr "" -msgid "Used in combination signatures" -msgstr "" +msgid "Dependencies" +msgstr "종속성" + +msgid "Compilation Dependencies" +msgstr "컴파일 종속성" + +msgid "" +"To be able to compile pgRouting, make sure that the following dependencies " +"are met:" +msgstr "pgRouting을 컴파일 하기 위해, 다음 종속성이 충족되는지 확인하세요:" -msgid "Points SQL for" -msgstr "" +msgid "C and C++0x compilers" +msgstr "C 와 C++0x 컴파일러" msgid "" -"The main parameter of the majority of the pgRouting functions is a query " -"that selects the edges of the graph." +"Compiling with Boost 1.56 up to Boost 1.74 requires C++ Compiler with C++03 " +"or C++11 standard support" msgstr "" msgid "" -"Depending on the family or category of a function it will have additional " -"parameters, some of them are compulsory and some are optional." +"Compiling with Boost 1.75 requires C++ Compiler with C++14 standard support" msgstr "" -msgid "" -"The compulsory parameters are nameless and must be given in the required " -"order. The optional parameters are named parameters and will have a default " -"value." -msgstr "" +msgid "Postgresql version = Supported versions by PostgreSQL" +msgstr "Postgresql 버전 = PostgreSQL의 지원되는 버전" -msgid "Parameters for the Via functions" -msgstr "" +msgid "The Boost Graph Library (BGL). Version >= 1.56" +msgstr "The Boost Graph Library (BGL). Version >= 1.56" -msgid ":doc:`pgr_dijkstraVia`" -msgstr ":doc:`pgr_dijkstraVia`" +msgid "CMake >= 3.2" +msgstr "CMake >= 3.2" -msgid "SQL query as described." +msgid "optional dependencies" +msgstr "추가 선택적 종속성" + +msgid "For user's documentation" msgstr "" -msgid "When ``true`` Graph is considered `Directed`" +msgid "Sphinx >= 1.1" +msgstr "Sphinx >= 1.1" + +msgid "Latex" msgstr "" -msgid "When ``false`` the graph is considered as Undirected." +msgid "For developer's documentation" msgstr "" -msgid "``strict``" +msgid "Doxygen >= 1.7" msgstr "" -msgid "``false``" +msgid "For testing" msgstr "" -msgid "When ``true`` if a path is missing stops and returns **EMPTY SET**" +msgid "pgtap" msgstr "" -msgid "When ``false`` ignores missing paths returning all paths found" +msgid "pg_prove" msgstr "" -msgid "``U_turn_on_edge``" +msgid "For using:" msgstr "" -msgid "" -"When ``true`` departing from a visited vertex will not try to avoid using " -"the edge used to reach it. In other words, U turn using the edge with same " -"identifier is allowed." +msgid "PostGIS version >= 2.2" msgstr "" -msgid "" -"When ``false`` when a departing from a visited vertex tries to avoid using " -"the edge used to reach it. In other words, U turn using the edge with same " -"identifier is used when no other path is found." +msgid "Example: Installing dependencies on linux" msgstr "" -msgid "For the TRSP functions" +msgid "Installing the compilation dependencies" msgstr "" -msgid ":doc:`pgr_trsp`" -msgstr ":doc:`pgr_trsp`" +msgid "Database dependencies" +msgstr "데이터베이스 종속성" -msgid "Array of identifiers of destination vertices." -msgstr "" +msgid "Configuring PostgreSQL" +msgstr "PostgreSQL 설정" -msgid "" -"There are several kinds of columns returned are depending of the function." +msgid "Entering psql console" msgstr "" -#, fuzzy -msgid "Result columns for a path" -msgstr "결과 컬럼" - -msgid "Used in functions that return one path solution" +msgid "To exit psql console" msgstr "" msgid "" -"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost, " -"agg_cost)``" +"Entering psql console directly without switching roles can be done by the " +"following commands" msgstr "" -msgid "``path_seq``" +msgid "Then use the above given method to exit out of the psql console" msgstr "" -msgid "" -"Relative position in the path. Has value **1** for the beginning of a path." +msgid "Checking PostgreSQL version" msgstr "" -msgid "" -"Identifier of the starting vertex. Returned when multiple starting vetrices " -"are in the query." +msgid "or" msgstr "" -msgid "" -"Identifier of the ending vertex. Returned when multiple ending vertices are " -"in the query." +msgid "Enter the psql console using above given method and then enter" msgstr "" -msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``." +msgid "Creating PostgreSQL role" msgstr "" msgid "" -"Identifier of the edge used to go from ``node`` to the next node in the path " -"sequence. **-1** for the last node of the path." +"Default role provided by PostgreSQL is postgres. To create new roles you can " +"use the above provided commands. The prompt will ask the user to type name " +"of the role and then provide affirmation. Proceed with the steps and you " +"will succeed in creating PostgreSQL role successfully." msgstr "" msgid "" -"Cost to traverse from ``node`` using ``edge`` to the next node in the path " -"sequence." -msgstr "" - -msgid "Used in functions the following:" +"To add password to the role or change previously created password of the " +"role use the following commands" msgstr "" -msgid ":doc:`pgr_withPoints`" -msgstr ":doc:`pgr_withPoints`" - msgid "" -"Returns set of ``(seq, path_seq [, start_pid] [, end_pid], node, edge, cost, " -"agg_cost)``" +"To get additional details on the flags associated with ``createuser`` below " +"given command can be used" msgstr "" -msgid "Relative position in the path." +msgid "Creating Database in PostgreSQL" msgstr "" -msgid "**1** For the first row of the path." +msgid "Connecting to a PostgreSQL Database" msgstr "" -msgid "``start_pid``" +msgid "Enter the psql console and type the following commands" msgstr "" -msgid "Identifier of a starting vertex/point of the path." -msgstr "" +msgid "Build dependencies" +msgstr "빌드 종속성" -msgid "When positive is the identifier of the starting vertex." -msgstr "" +msgid "Optional dependencies" +msgstr "선택적 종속성" -msgid "When negative is the identifier of the starting point." +msgid "For documentation and testing" msgstr "" -msgid "Returned on `Many to One`_ and `Many to Many`_" -msgstr "" +msgid "Configuring" +msgstr "구성" -msgid "``end_pid``" +msgid "pgRouting uses the `cmake` system to do the configuration." msgstr "" -msgid "Identifier of an ending vertex/point of the path." +msgid "The build directory is different from the source directory" msgstr "" -msgid "When positive is the identifier of the ending vertex." +msgid "Create the build directory" msgstr "" -msgid "When negative is the identifier of the ending point." +msgid "Configurable variables" msgstr "" -msgid "Returned on `One to Many`_ and `Many to Many`_" +msgid "To see the variables that can be configured" msgstr "" -msgid "Identifier of the node in the path from ``start_pid`` to ``end_pid``." +msgid "Configuring The Documentation" msgstr "" -msgid "When positive is the identifier of the a vertex." +msgid "" +"Most of the effort of the documentation has been on the HTML files. Some " +"variables for building documentation:" msgstr "" -msgid "When negative is the identifier of the a point." -msgstr "" +msgid "Variable" +msgstr "변수" -msgid "" -"Identifier of the edge used to go from ``node`` to the next node in the path " -"sequence." -msgstr "" +msgid "Comment" +msgstr "설명" -msgid "**-1** for the last row of the path." +msgid "WITH_DOC" msgstr "" -msgid "**0** For the first row of the path." +msgid "BOOL=OFF" msgstr "" -msgid ":doc:`pgr_dijkstraNear`" -msgstr ":doc:`pgr_dijkstraNear`" +msgid "Turn on/off building the documentation" +msgstr "" -msgid "" -"Returns ``(seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)``" +msgid "BUILD_HTML" msgstr "" -msgid "Identifier of the starting vertex of the current path." +msgid "BOOL=ON" msgstr "" -msgid "Identifier of the ending vertex of the current path." +msgid "If ON, turn on/off building HTML for user's documentation" msgstr "" -msgid "Multiple paths" +msgid "BUILD_DOXY" msgstr "" -msgid "Selective for multiple paths." +msgid "If ON, turn on/off building HTML for developer's documentation" msgstr "" -msgid "The columns depend on the function call." +msgid "BUILD_LATEX" msgstr "" -msgid "" -"Set of ``(seq, path_id, path_seq [, start_vid] [, end_vid], node, edge, " -"cost, agg_cost)``" +msgid "If ON, turn on/off building PDF" msgstr "" -msgid "``path_id``" +msgid "BUILD_MAN" msgstr "" -msgid "Path identifier." +msgid "If ON, turn on/off building MAN pages" msgstr "" -msgid "" -"Has value **1** for the first of a path from ``start_vid`` to ``end_vid``." +msgid "DOC_USE_BOOTSTRAP" msgstr "" -msgid "Non selective for multiple paths" +msgid "If ON, use sphinx-bootstrap for HTML pages of the users documentation" msgstr "" -msgid "Regardless of the call, al the columns are returned." +msgid "Configuring cmake to create documentation before building pgRouting" msgstr "" -msgid "" -"Returns set of ``(seq, path_id, path_seq, start_vid, end_vid, node, edge, " -"cost, agg_cost)``" +msgid "Most of the effort of the documentation has been on the html files." msgstr "" -msgid "Result columns for cost functions" +msgid "Building" +msgstr "빌드" + +msgid "Using ``make`` to build the code and the documentation" msgstr "" -msgid "Used in the following" +msgid "The following instructions start from *path/to/pgrouting/build*" msgstr "" msgid "" -"When start_vid or end_vid columns have negative values, the identifier is " -"for a Point." +"We have tested on several platforms, For installing or reinstalling all the " +"steps are needed." msgstr "" -msgid "Result columns for flow functions" +msgid "The sql signatures are configured and build in the ``cmake`` command." msgstr "" -msgid "Edges SQL for the following" -msgstr "" +msgid "MinGW on Windows" +msgstr "윈도우의 MinGW" -msgid "Result columns for spanning tree functions" +msgid "Linux" +msgstr "리눅스" + +msgid "The following instructions start from *path/to/pgrouting*" msgstr "" -msgid "Returns set of ``(edge, cost)``" +msgid "" +"To remove the build when the configuration changes, use the following code:" msgstr "" -msgid "Cost to traverse the edge." +msgid "and start the build process as mentioned previously." msgstr "" -msgid "Performance Tips" +msgid "Testing" +msgstr "테스트" + +msgid "Currently there is no :code:`make test` and testing is done as follows" msgstr "" -msgid "For the Routing functions" +msgid "The following instructions start from *path/to/pgrouting/*" msgstr "" msgid "" -"To get faster results bound the queries to an area of interest of routing." +"pgRouting is an extension of `PostGIS `__ and " +"`PostgreSQL `__ geospatial database and adds " +"routing and other network analysis functionality. A predecessor of pgRouting " +"– pgDijkstra, written by Sylvain Pasche from `Camptocamp `__, was later extended by Orkney and renamed to pgRouting. The project " +"is now supported and maintained by `Georepublic `__, `Paragon Corporation `__ and " +"a broad user community." msgstr "" msgid "" -"In this example Use an inner query SQL that does not include some edges in " -"the routing function and is within the area of the results." +"pgRouting is part of `OSGeo Community Projects `__ from the `OSGeo Foundation `__ and included on `OSGeoLive `__." msgstr "" -msgid "How to contribute" +msgid "Licensing" +msgstr "라이선스" + +msgid "The following licenses can be found in pgRouting:" msgstr "" -msgid "Wiki" +msgid "**License**" +msgstr "**라이선스**" + +msgid "GNU General Public License v2.0 or later" msgstr "" msgid "" -"Edit an existing `pgRouting Wiki `__ page." +"Most features of pgRouting are available under `GNU General Public License " +"v2.0 or later `_." msgstr "" -msgid "Or create a new Wiki page" +msgid "Boost Software License - Version 1.0" msgstr "" msgid "" -"Create a page on the `pgRouting Wiki `__" +"Some Boost extensions are available under `Boost Software License - Version " +"1.0 `_." msgstr "" -msgid "Give the title an appropriate name" +msgid "MIT-X License" msgstr "" msgid "" -"`Example `__" +"Some code contributed by iMaptools.com is available under MIT-X license." msgstr "" -msgid "Adding Functionaity to pgRouting" +msgid "" +"The pgRouting Manual is licensed under a `Creative Commons Attribution-Share " +"Alike 3.0 License `_." msgstr "" msgid "" -"Consult the `developer's documentation `__" +"In general license information should be included in the header of each " +"source file." msgstr "" -msgid "Installation" -msgstr "설치" - -msgid ":ref:`install-short`" -msgstr ":ref:`install-short`" - -msgid ":ref:`install_get_sources`" -msgstr ":ref:`install_get_sources`" - -msgid ":ref:`install_enable_db`" -msgstr ":ref:`install_enable_db`" +msgid "Contributors" +msgstr "" -msgid ":ref:`install_dependencies`" -msgstr ":ref:`install_dependencies`" +msgid "This Release Contributors" +msgstr "" -msgid ":ref:`install_configuring`" -msgstr ":ref:`install_configuring`" +msgid "Individuals in this release v3.7.x (in alphabetical order)" +msgstr "" -msgid ":ref:`install_build`" -msgstr ":ref:`install_build`" +msgid "(Alphabetical order)" +msgstr "" -msgid ":ref:`install_testing`" -msgstr ":ref:`install_testing`" +msgid "Regina Obe, Vicky Vergara" +msgstr "" msgid "" -"Instructions for downloading and installing binaries for different operating " -"systems, additional notes and corrections not included in this documentation " -"can be found in `Installation wiki `__" +"And all the people that give us a little of their time making comments, " +"finding issues, making pull requests etc. in any of our products: " +"osm2pgrouting, pgRouting, pgRoutingLayer, workshop." msgstr "" -msgid "" -"To use pgRouting PostGIS needs to be installed, please read the information " -"about installation in this `Install Guide `__" +msgid "Corporate Sponsors in this release (in alphabetical order)" msgstr "" -msgid "Short Version" -msgstr "짧은 버전" +msgid "" +"These are corporate entities that have contributed developer time, hosting, " +"or direct monetary funding to the pgRouting project:" +msgstr "" -msgid "Extracting the tar ball" -msgstr "tar ball 압축 해제" +msgid "`OSGeo `__" +msgstr "" -msgid "To compile assuming you have all the dependencies in your search path:" +msgid "`OSGeo UK `__" msgstr "" -msgid "" -"Once pgRouting is installed, it needs to be enabled in each individual " -"database you want to use it in." +msgid "`Google Summer of Code `__" msgstr "" -msgid "Get the sources" -msgstr "소스 가져오기" +msgid "`Paragon Corporation `__" +msgstr "" -msgid "" -"The pgRouting latest release can be found in https://github.com/pgRouting/" -"pgrouting/releases/latest" +msgid "Contributors Past & Present:" msgstr "" -msgid "To download this release:" +msgid "Individuals (in alphabetical order)" msgstr "" msgid "" -"Go to :ref:`install-short` for more instructions on extracting tar ball and " -"compiling pgRouting." +"Aasheesh Tiwari, Abhinav Jain, Aditya Pratap Singh, Adrien Berchet, Akio " +"Takubo, Andrea Nardelli, Anthony Tasca, Anton Patrushev, Aryan Gupta, Ashraf " +"Hossain, Ashish Kumar, Cayetano Benavent, Christian Gonzalez, Daniel Kastl, " +"Dave Potts, David Techer, Denis Rykov, Ema Miyawaki, Esteban Zimanyi, " +"Florian Thurkow, Frederic Junod, Gerald Fenoy, Gudesa Venkata Sai Akhil, " +"Hang Wu, Himanshu Raj, Imre Samu, Jay Mahadeokar, Jinfu Leng, Kai Behncke, " +"Kishore Kumar, Ko Nagase, Mahmoud Sakr, Manikata Kondeti, Mario Basa, Martin " +"Wiesenhaan, Maxim Dubinin, Maoguang Wang, Mohamed Bakli, Mohamed Zia, Mukul " +"Priya, Nitish Chauhan, Rajat Shinde, Razequl Islam, Regina Obe, Rohith " +"Reddy, Sarthak Agarwal, Shobhit Chaurasia, Sourabh Garg, Stephen Woodbridge, " +"Swapnil Joshi, Sylvain Housseman, Sylvain Pasche, Veenit Kumar, Vidhan Jain, " +"Virginia Vergara, Yige Huang" msgstr "" -msgid "git" -msgstr "git" - -msgid "To download the repository" +msgid "Corporate Sponsors (in alphabetical order)" msgstr "" -msgid "" -"Go to :ref:`install-short` for more instructions on compiling pgRouting " -"(there is no tar ball involved while downloading pgRouting repository from " -"GitHub)." +msgid "Camptocamp" msgstr "" -msgid "Enabling and upgrading in the database" -msgstr "데이터베이스에서 활성화 및 업그레이드 하기" +msgid "CSIS (University of Tokyo)" +msgstr "" -msgid "Enabling the database" -msgstr "데이터베이스 활성화" +msgid "Georepublic" +msgstr "" -msgid "" -"pgRouting is a PostgreSQL extension and depends on PostGIS to provide " -"functionalities to end user. Below given code demonstrates enabling PostGIS " -"and pgRouting in the database." +msgid "Google Summer of Code" msgstr "" -msgid "" -"Checking PostGIS and pgRouting version after enabling them in the database." +msgid "iMaptools" msgstr "" -msgid "Upgrading the database" -msgstr "데이터베이스 업그레이드" +msgid "Leopark" +msgstr "" -msgid "" -"To upgrade pgRouting in the database to version 3.7.0 use the following " -"command:" +msgid "Orkney" msgstr "" -msgid "" -"More information can be found in https://www.postgresql.org/docs/current/sql-" -"createextension.html" +msgid "OSGeo" msgstr "" -msgid "Dependencies" -msgstr "종속성" +msgid "OSGeo UK" +msgstr "" -msgid "Compilation Dependencies" -msgstr "컴파일 종속성" +msgid "Paragon Corporation" +msgstr "" -msgid "" -"To be able to compile pgRouting, make sure that the following dependencies " -"are met:" -msgstr "pgRouting을 컴파일 하기 위해, 다음 종속성이 충족되는지 확인하세요:" +msgid "Versaterm Inc." +msgstr "" -msgid "C and C++0x compilers" -msgstr "C 와 C++0x 컴파일러" +msgid "More Information" +msgstr "" msgid "" -"Compiling with Boost 1.56 up to Boost 1.74 requires C++ Compiler with C++03 " -"or C++11 standard support" +"The latest software, documentation and news items are available at the " +"pgRouting web site https://pgrouting.org." msgstr "" msgid "" -"Compiling with Boost 1.75 requires C++ Compiler with C++14 standard support" +"PostgreSQL database server at the PostgreSQL main site https://www." +"postgresql.org." msgstr "" -msgid "Postgresql version = Supported versions by PostgreSQL" -msgstr "Postgresql 버전 = PostgreSQL의 지원되는 버전" +msgid "PostGIS extension at the PostGIS project web site https://postgis.net." +msgstr "" -msgid "The Boost Graph Library (BGL). Version >= 1.56" -msgstr "The Boost Graph Library (BGL). Version >= 1.56" +msgid "Boost C++ source libraries at https://www.boost.org." +msgstr "" -msgid "CMake >= 3.2" -msgstr "CMake >= 3.2" +msgid ":doc:`migration`" +msgstr ":doc:`migration`" -msgid "optional dependencies" -msgstr "추가 선택적 종속성" +#, fuzzy +msgid "``pgr_KSP``" +msgstr ":doc:`pgr_withPoints`" -msgid "For user's documentation" +msgid "``pgr_KSP`` — Yen's algorithm for K shortest paths using Dijkstra." msgstr "" -msgid "Sphinx >= 1.1" -msgstr "Sphinx >= 1.1" - -msgid "Latex" +msgid "Availability" msgstr "" -msgid "For developer's documentation" +msgid "Version 4.0.0" msgstr "" -msgid "Doxygen >= 1.7" +msgid "All signatures promoted to official." msgstr "" -msgid "For testing" +msgid "Version 3.6.0" msgstr "" -msgid "pgtap" +msgid "Result columns standarized to: |nksp-result|" msgstr "" -msgid "pg_prove" -msgstr "" +#, fuzzy +msgid "pgr_ksp(One to One)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "For using:" +msgid "Added ``start_vid`` and ``end_vid`` result columns." msgstr "" -msgid "PostGIS version >= 2.2" +msgid "New proposed signatures:" msgstr "" -msgid "Example: Installing dependencies on linux" -msgstr "" +#, fuzzy +msgid "pgr_ksp(One to Many)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "Installing the compilation dependencies" +#, fuzzy +msgid "pgr_ksp(Many to One)" +msgstr ":doc:`pgr_withPointsCostMatrix`" + +#, fuzzy +msgid "pgr_ksp(Many to Many)" +msgstr ":doc:`pgr_withPointsCostMatrix`" + +#, fuzzy +msgid "pgr_ksp(Combinations)" +msgstr ":doc:`pgr_withPointsCostMatrix`" + +msgid "Version 2.1.0" msgstr "" -msgid "Database dependencies" -msgstr "데이터베이스 종속성" +msgid "Signature change" +msgstr "" -msgid "Configuring PostgreSQL" -msgstr "PostgreSQL 설정" +msgid "Old signature no longer supported" +msgstr "" -msgid "Entering psql console" +msgid "Version 2.0.0" msgstr "" -msgid "To exit psql console" +msgid "Official function." msgstr "" msgid "" -"Entering psql console directly without switching roles can be done by the " -"following commands" +"The K shortest path routing algorithm based on Yen's algorithm. \"K\" is the " +"number of shortest paths desired." msgstr "" -msgid "Then use the above given method to exit out of the psql console" +msgid "|Boost| Boost Graph Inside" msgstr "" -msgid "Checking PostgreSQL version" +msgid "Boost Graph Inside" msgstr "" -msgid "or" +msgid "Signatures" msgstr "" -msgid "Enter the psql console using above given method and then enter" +msgid "Summary" msgstr "" -msgid "Creating PostgreSQL role" +msgid "pgr_KSP(`Edges SQL`_, **start vid**, **end vid**, **K**, [**options**])" msgstr "" msgid "" -"Default role provided by PostgreSQL is postgres. To create new roles you can " -"use the above provided commands. The prompt will ask the user to type name " -"of the role and then provide affirmation. Proceed with the steps and you " -"will succeed in creating PostgreSQL role successfully." +"pgr_KSP(`Edges SQL`_, **start vid**, **end vids**, **K**, [**options**])" msgstr "" msgid "" -"To add password to the role or change previously created password of the " -"role use the following commands" +"pgr_KSP(`Edges SQL`_, **start vids**, **end vid**, **K**, [**options**])" msgstr "" msgid "" -"To get additional details on the flags associated with ``createuser`` below " -"given command can be used" +"pgr_KSP(`Edges SQL`_, **start vids**, **end vids**, **K**, [**options**])" msgstr "" -msgid "Creating Database in PostgreSQL" +msgid "pgr_KSP(`Edges SQL`_, `Combinations SQL`_, **K**, [**options**])" msgstr "" -msgid "Connecting to a PostgreSQL Database" +msgid "**options:** ``[directed, heap_paths]``" msgstr "" -msgid "Enter the psql console and type the following commands" +msgid "Returns set of |nksp-result|" msgstr "" -msgid "Build dependencies" -msgstr "빌드 종속성" - -msgid "Optional dependencies" -msgstr "선택적 종속성" +msgid "OR EMPTY SET" +msgstr "" -msgid "For documentation and testing" +msgid "Example" msgstr "" -msgid "Configuring" -msgstr "구성" +msgid "Get 2 paths from :math:`6` to :math:`17` on a directed graph." +msgstr "" -msgid "pgRouting uses the `cmake` system to do the configuration." +msgid "" +"Get 2 paths from vertex :math:`6` to vertices :math:`\\{10, 17\\}` on a " +"directed graph." msgstr "" -msgid "The build directory is different from the source directory" +msgid "" +"Get 2 paths from vertices :math:`\\{6, 1\\}` to vertex :math:`17` on a " +"directed graph." msgstr "" -msgid "Create the build directory" +msgid "" +"Get 2 paths vertices :math:`\\{6, 1\\}` to vertices :math:`\\{10, 17\\}` on " +"a directed graph." msgstr "" -msgid "Configurable variables" +msgid "Using a combinations table on an directed graph" msgstr "" -msgid "To see the variables that can be configured" +msgid "The combinations table:" msgstr "" -msgid "Configuring The Documentation" +msgid "The query:" msgstr "" -msgid "" -"Most of the effort of the documentation has been on the HTML files. Some " -"variables for building documentation:" +msgid "Identifier of the destination vertex." msgstr "" -msgid "Variable" -msgstr "변수" +msgid "**K**" +msgstr "" -msgid "Comment" -msgstr "설명" +msgid "Number of required paths." +msgstr "" -msgid "WITH_DOC" +msgid "KSP Optional parameters" msgstr "" -msgid "BOOL=OFF" +msgid "``heap_paths``" msgstr "" -msgid "Turn on/off building the documentation" +msgid "When ``false`` Returns at most K paths." msgstr "" -msgid "BUILD_HTML" +msgid "When ``true`` all the calculated paths while processing are returned." msgstr "" -msgid "BOOL=ON" +msgid "" +"Roughly, when the shortest path has ``N`` edges, the heap will contain about " +"than ``N * K`` paths for small value of ``K`` and ``K > 5``." msgstr "" -msgid "If ON, turn on/off building HTML for user's documentation" +msgid "" +"Has value **1** for the first of a path from ``start_vid`` to ``end_vid``" msgstr "" -msgid "BUILD_DOXY" +msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``" msgstr "" -msgid "If ON, turn on/off building HTML for developer's documentation" +msgid ":math:`0` for the last ``node`` of the path." msgstr "" -msgid "BUILD_LATEX" +msgid "Aggregate cost from **start vid** to ``node``." msgstr "" -msgid "If ON, turn on/off building PDF" +msgid "Additional Examples" msgstr "" -msgid "BUILD_MAN" +msgid "Get 2 paths from :math:`6` to :math:`17` on an undirected graph" msgstr "" -msgid "If ON, turn on/off building MAN pages" +msgid "Also get the paths in the heap." msgstr "" -msgid "DOC_USE_BOOTSTRAP" +msgid "Get 2 paths using combinations table on an undirected graph" msgstr "" -msgid "If ON, use sphinx-bootstrap for HTML pages of the users documentation" +msgid "" +"Get 2 paths from vertices :math:`\\{6, 1\\}` to vertex :math:`17` on a " +"undirected graph." msgstr "" -msgid "Configuring cmake to create documentation before building pgRouting" +msgid "https://en.wikipedia.org/wiki/K_shortest_path_routing" msgstr "" -msgid "Most of the effort of the documentation has been on the html files." +msgid "``pgr_TSP``" msgstr "" -msgid "Building" -msgstr "빌드" +msgid "``pgr_TSP`` - Approximation using *metric* algorithm." +msgstr "" -msgid "Using ``make`` to build the code and the documentation" +msgid "Availability:" msgstr "" -msgid "The following instructions start from *path/to/pgrouting/build*" +msgid "Version 3.2.1" msgstr "" msgid "" -"We have tested on several platforms, For installing or reinstalling all the " -"steps are needed." +"Metric Algorithm from `Boost library `__" msgstr "" -msgid "The sql signatures are configured and build in the ``cmake`` command." +msgid "Simulated Annealing Algorithm no longer supported" msgstr "" -msgid "MinGW on Windows" -msgstr "윈도우의 MinGW" - -msgid "Linux" -msgstr "리눅스" +msgid "" +"The Simulated Annealing Algorithm related parameters are ignored: " +"max_processing_time, tries_per_temperature, max_changes_per_temperature, " +"max_consecutive_non_changes, initial_temperature, final_temperature, " +"cooling_factor, randomize" +msgstr "" -msgid "The following instructions start from *path/to/pgrouting*" +msgid "Version 2.3.0" msgstr "" msgid "" -"To remove the build when the configuration changes, use the following code:" +"Can be Used with :doc:`costMatrix-category` functions preferably with " +"`directed => false`." msgstr "" -msgid "and start the build process as mentioned previously." +msgid "With ``directed => false``" msgstr "" -msgid "Testing" -msgstr "테스트" - -msgid "Currently there is no :code:`make test` and testing is done as follows" +msgid "Will generate a graph that:" msgstr "" -msgid "The following instructions start from *path/to/pgrouting/*" +msgid "is undirected" msgstr "" -msgid "" -"pgRouting is an extension of `PostGIS `__ and " -"`PostgreSQL `__ geospatial database and adds " -"routing and other network analysis functionality. A predecessor of pgRouting " -"– pgDijkstra, written by Sylvain Pasche from `Camptocamp `__, was later extended by Orkney and renamed to pgRouting. The project " -"is now supported and maintained by `Georepublic `__, `Paragon Corporation `__ and " -"a broad user community." +msgid "is fully connected (As long as the graph has one component)" msgstr "" -msgid "" -"pgRouting is part of `OSGeo Community Projects `__ from the `OSGeo Foundation `__ and included on `OSGeoLive `__." +msgid "all traveling costs on edges obey the triangle inequality." msgstr "" -msgid "Licensing" -msgstr "라이선스" - -msgid "The following licenses can be found in pgRouting:" +msgid "When ``start_vid = 0 OR end_vid = 0``" msgstr "" -msgid "**License**" -msgstr "**라이선스**" +msgid "" +"The solutions generated is garanteed to be *twice as long as the optimal " +"tour in the worst case*" +msgstr "" -msgid "GNU General Public License v2.0 or later" +msgid "When ``start_vid != 0 AND end_vid != 0 AND start_vid != end_vid``" msgstr "" msgid "" -"Most features of pgRouting are available under `GNU General Public License " -"v2.0 or later `_." +"It is **not garanteed** that the solution will be, in the worse case, twice " +"as long as the optimal tour, due to the fact that `end_vid` is forced to be " +"in a fixed position." msgstr "" -msgid "Boost Software License - Version 1.0" +msgid "With ``directed => true``" msgstr "" msgid "" -"Some Boost extensions are available under `Boost Software License - Version " -"1.0 `_." +"It is **not garanteed** that the solution will be, in the worse case, twice " +"as long as the optimal tour" msgstr "" -msgid "MIT-X License" +msgid "is directed" msgstr "" msgid "" -"Some code contributed by iMaptools.com is available under MIT-X license." +"some (or all) traveling costs on edges might not obey the triangle " +"inequality." msgstr "" msgid "" -"The pgRouting Manual is licensed under a `Creative Commons Attribution-Share " -"Alike 3.0 License `_." +"As an undirected graph is required, the directed graph is transformed as " +"follows:" msgstr "" msgid "" -"In general license information should be included in the header of each " -"source file." +"edges `(u, v)` and `(v, u)` is considered to be the same edge (denoted `(u, " +"v)`" msgstr "" -msgid "Contributors" +msgid "if ``agg_cost`` differs between one or more instances of edge `(u, v)`" msgstr "" -msgid "This Release Contributors" +msgid "" +"The minimum value of the ``agg_cost`` all instances of edge `(u, v)` is " +"going to be considered as the ``agg_cost`` of edge `(u, v)`" msgstr "" -msgid "Individuals in this release v3.7.x (in alphabetical order)" +msgid "" +"Some (or all) traveling costs on edges will still might not obey the " +"triangle inequality." msgstr "" -msgid "(Alphabetical order)" +msgid "When the data is incomplete, but it is a connected graph:" msgstr "" -msgid "Regina Obe, Vicky Vergara" +msgid "the missing values will be calculated with dijkstra algorithm." msgstr "" -msgid "" -"And all the people that give us a little of their time making comments, " -"finding issues, making pull requests etc. in any of our products: " -"osm2pgrouting, pgRouting, pgRoutingLayer, workshop." +msgid "pgr_TSP(`Matrix SQL`_, ``[start_id, end_id]``)" msgstr "" -msgid "Corporate Sponsors in this release (in alphabetical order)" +msgid "Returns set of |tsp-result|" msgstr "" -msgid "" -"These are corporate entities that have contributed developer time, hosting, " -"or direct monetary funding to the pgRouting project:" +msgid "OR EMTPY SET" msgstr "" -msgid "`OSGeo `__" +msgid "Using :doc:`pgr_dijkstraCostMatrix` to generate the matrix information" msgstr "" -msgid "`OSGeo UK `__" +msgid "" +"**Line 4** Vertices :math:`\\{2, 4, 13, 14\\}` are not included because they " +"are not connected." msgstr "" -msgid "`Google Summer of Code `__" +msgid "`Matrix SQL`_ as described below" msgstr "" -msgid "`Paragon Corporation `__" +msgid "``ANY-INTEGER``" msgstr "" -msgid "Contributors Past & Present:" +msgid "``ANY-NUMERICAL``" msgstr "" -msgid "Individuals (in alphabetical order)" +msgid "Cost for going from start_vid to end_vid" msgstr "" -msgid "" -"Aasheesh Tiwari, Abhinav Jain, Aditya Pratap Singh, Adrien Berchet, Akio " -"Takubo, Andrea Nardelli, Anthony Tasca, Anton Patrushev, Aryan Gupta, Ashraf " -"Hossain, Ashish Kumar, Cayetano Benavent, Christian Gonzalez, Daniel Kastl, " -"Dave Potts, David Techer, Denis Rykov, Ema Miyawaki, Esteban Zimanyi, " -"Florian Thurkow, Frederic Junod, Gerald Fenoy, Gudesa Venkata Sai Akhil, " -"Hang Wu, Himanshu Raj, Imre Samu, Jay Mahadeokar, Jinfu Leng, Kai Behncke, " -"Kishore Kumar, Ko Nagase, Mahmoud Sakr, Manikata Kondeti, Mario Basa, Martin " -"Wiesenhaan, Maxim Dubinin, Maoguang Wang, Mohamed Bakli, Mohamed Zia, Mukul " -"Priya, Nitish Chauhan, Rajat Shinde, Razequl Islam, Regina Obe, Rohith " -"Reddy, Sarthak Agarwal, Shobhit Chaurasia, Sourabh Garg, Stephen Woodbridge, " -"Swapnil Joshi, Sylvain Housseman, Sylvain Pasche, Veenit Kumar, Vidhan Jain, " -"Virginia Vergara, Yige Huang" +msgid "Returns SET OF ``(seq, node, cost, agg_cost)``" msgstr "" -msgid "Corporate Sponsors (in alphabetical order)" +msgid "Row sequence." msgstr "" -msgid "Camptocamp" +msgid "**node**" msgstr "" -msgid "CSIS (University of Tokyo)" +msgid "Identifier of the node/coordinate/point." msgstr "" -msgid "Georepublic" +msgid "" +"Cost to traverse from the current ``node`` to the next ``node`` in the path " +"sequence." msgstr "" -msgid "Google Summer of Code" +msgid "``0`` for the last row in the tour sequence." msgstr "" -msgid "iMaptools" +msgid "Aggregate cost from the ``node`` at ``seq = 1`` to the current node." msgstr "" -msgid "Leopark" +msgid "``0`` for the first row in the tour sequence." msgstr "" -msgid "Orkney" +msgid "Start from vertex :math:`1`" msgstr "" -msgid "OSGeo" +msgid "**Line 6** ``start_vid => 1``" msgstr "" -msgid "OSGeo UK" +msgid "Using points of interest to generate an asymetric matrix." msgstr "" -msgid "Paragon Corporation" +msgid "To generate an asymmetric matrix:" msgstr "" -msgid "Versaterm Inc." +msgid "" +"**Line 4** The ``side`` information of ``pointsOfInterset`` is ignored by " +"not including it in the query" msgstr "" -msgid "More Information" +msgid "**Line 6** Generating an asymetric matrix with ``directed => true``" msgstr "" msgid "" -"The latest software, documentation and news items are available at the " -"pgRouting web site https://pgrouting.org." +":math:`min(agg\\_cost(u, v), agg\\_cost(v, u))` is going to be considered as " +"the ``agg_cost``" msgstr "" msgid "" -"PostgreSQL database server at the PostgreSQL main site https://www." -"postgresql.org." +"The solution that can be larger than *twice as long as the optimal tour* " +"because:" msgstr "" -msgid "PostGIS extension at the PostGIS project web site https://postgis.net." +msgid "Triangle inequality might not be satisfied." msgstr "" -msgid "Boost C++ source libraries at https://www.boost.org." +msgid "``start_id != 0 AND end_id != 0``" msgstr "" -msgid ":doc:`migration`" -msgstr ":doc:`migration`" - -msgid "pgr_KSP" +msgid "Connected incomplete data" msgstr "" -msgid "``pgr_KSP`` — Yen's algorithm for K shortest paths using Dijkstra." +msgid "" +"Using selected edges :math:`\\{2, 4, 5, 8, 9, 15\\}` the matrix is not " +"complete." msgstr "" -msgid "Availability" +msgid "" +"Cost value for :math:`17 \\rightarrow 10` do not exist on the matrix, but " +"the value used is taken from :math:`10 \\rightarrow 17`." msgstr "" -msgid "Version 3.6.0" +msgid "``pgr_TSPeuclidean``" msgstr "" -msgid "Result columns standarized to: |nksp-result|" +msgid "``pgr_TSPeuclidean`` - Approximation using *metric* algorithm." msgstr "" -#, fuzzy -msgid "``pgr_ksp`` (One to One)" -msgstr ":doc:`pgr_withPointsCostMatrix`" - -msgid "Added ``start_vid`` and ``end_vid`` result columns." +msgid "" +"Using `Boost: metric TSP approx `__" msgstr "" -msgid "New overload functions:" +msgid "" +"The Simulated Annealing Algorithm related parameters are ignored: " +"`max_processing_time`, `tries_per_temperature`, " +"`max_changes_per_temperature`, `max_consecutive_non_changes`, " +"`initial_temperature`, `final_temperature`, `cooling_factor`, `randomize`" msgstr "" -#, fuzzy -msgid "``pgr_ksp`` (One to Many)" -msgstr ":doc:`pgr_withPointsCostMatrix`" - -#, fuzzy -msgid "``pgr_ksp`` (Many to One)" -msgstr ":doc:`pgr_withPointsCostMatrix`" - -#, fuzzy -msgid "``pgr_ksp`` (Many to Many)" -msgstr ":doc:`pgr_withPointsCostMatrix`" - -#, fuzzy -msgid "``pgr_ksp`` (Combinations)" -msgstr ":doc:`pgr_withPointsCostMatrix`" +msgid "Version 3.0.0" +msgstr "" -msgid "Version 2.1.0" +msgid "Name change from pgr_eucledianTSP" msgstr "" -msgid "Signature change" +msgid "New official function." msgstr "" -msgid "Old signature no longer supported" +msgid "" +"Any duplicated identifier will be ignored. The coordinates that will be kept" msgstr "" -msgid "Version 2.0.0" +msgid "is arbitrarly." msgstr "" -msgid "**Official** function" +msgid "" +"The coordinates are quite similar for the same identifier, for example ::" msgstr "" msgid "" -"The K shortest path routing algorithm based on Yen's algorithm. \"K\" is the " -"number of shortest paths desired." +"The coordinates are quite different for the same identifier, for example ::" msgstr "" -msgid "Signatures" +msgid "pgr_TSPeuclidean(`Coordinates SQL`_, ``[start_id, end_id]``)" msgstr "" -msgid "Summary" +msgid "With default values" msgstr "" -msgid "pgr_KSP(`Edges SQL`_, **start vid**, **end vid**, **K**, [**options**])" +msgid "`Coordinates SQL`_" msgstr "" -msgid "" -"pgr_KSP(`Edges SQL`_, **start vid**, **end vids**, **K**, [**options**])" +msgid "`Coordinates SQL`_ as described below" msgstr "" -msgid "" -"pgr_KSP(`Edges SQL`_, **start vids**, **end vid**, **K**, [**options**])" +msgid "Coordinates SQL" msgstr "" -msgid "" -"pgr_KSP(`Edges SQL`_, **start vids**, **end vids**, **K**, [**options**])" +msgid "``x``" msgstr "" -msgid "pgr_KSP(`Edges SQL`_, `Combinations SQL`_, **K**, [**options**])" +msgid "X value of the coordinate." msgstr "" -msgid "**options:** ``[directed, heap_paths]``" +msgid "``y``" msgstr "" -msgid "Returns set of |nksp-result|" +msgid "Y value of the coordinate." msgstr "" -msgid "OR EMPTY SET" +msgid "Test 29 cities of Western Sahara" msgstr "" -msgid "Example" +msgid "" +"This example shows how to make performance tests using University of " +"Waterloo's `example data `__ using the 29 cities of `Western Sahara dataset `__" msgstr "" -msgid "Get 2 paths from :math:`6` to :math:`17` on a directed graph." +msgid "Creating a table for the data and storing the data" msgstr "" -msgid "" -"Get 2 paths from vertex :math:`6` to vertices :math:`\\{10, 17\\}` on a " -"directed graph." +msgid "Adding a geometry (for visual purposes)" msgstr "" -msgid "" -"Get 2 paths from vertices :math:`\\{6, 1\\}` to vertex :math:`17` on a " -"directed graph." +msgid "Total tour cost" msgstr "" msgid "" -"Get 2 paths vertices :math:`\\{6, 1\\}` to vertices :math:`\\{10, 17\\}` on " -"a directed graph." +"Getting a total cost of the tour, compare the value with the length of an " +"optimal tour is 27603, given on the dataset" msgstr "" -msgid "Using a combinations table on an directed graph" +msgid "Getting a geometry of the tour" msgstr "" -msgid "The combinations table:" +msgid "Visual results" msgstr "" -msgid "The query:" +msgid "" +"Visualy, The first image is the `optimal solution `__ and the second image is the solution " +"obtained with ``pgr_TSPeuclidean``." msgstr "" -msgid "Identifier of the destination vertex." +msgid "``pgr_aStar``" msgstr "" -msgid "**K**" +msgid "``pgr_aStar`` — Shortest path using the A* algorithm." msgstr "" -msgid "Number of required paths." +msgid "Combinations signature promoted to official." msgstr "" -msgid "KSP Optional parameters" +msgid "Standarizing output columns to |short-generic-result|" msgstr "" -msgid "``heap_paths``" +msgid "pgr_aStar(One to One) added ``start_vid`` and ``end_vid`` columns." msgstr "" -msgid "When ``false`` Returns at most K paths." +msgid "pgr_aStar(One to Many) added ``end_vid`` column." msgstr "" -msgid "When ``true`` all the calculated paths while processing are returned." +msgid "pgr_aStar(Many to One) added ``start_vid`` column." msgstr "" -msgid "" -"Roughly, when the shortest path has ``N`` edges, the heap will contain about " -"than ``N * K`` paths for small value of ``K`` and ``K > 5``." +msgid "Version 3.2.0" msgstr "" -msgid "" -"Has value **1** for the first of a path from ``start_vid`` to ``end_vid``" +msgid "New proposed signature:" msgstr "" -msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``" +msgid "Function promoted to official." msgstr "" -msgid ":math:`0` for the last ``node`` of the path." +msgid "Version 2.4.0" msgstr "" -msgid "Aggregate cost from **start vid** to ``node``." -msgstr "" +#, fuzzy +msgid "pgr_aStar(One to Many)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "Additional Examples" +#, fuzzy +msgid "pgr_aStar(Many to One)" +msgstr ":doc:`pgr_withPointsCostMatrix`" + +#, fuzzy +msgid "pgr_aStar(Many to Many)" +msgstr ":doc:`pgr_withPointsCostMatrix`" + +msgid "Signature change on pgr_aStar(One to One)" msgstr "" -msgid "Get 2 paths from :math:`6` to :math:`17` on an undirected graph" +msgid "" +"The results are equivalent to the union of the results of the `pgr_aStar(` " +"`One to One`_ `)` on the:" msgstr "" -msgid "Also get the paths in the heap." +msgid "pgr_aStar(`Edges SQL`_, **start vid**, **end vid**, [**options**])" msgstr "" -msgid "Get 2 paths using combinations table on an undirected graph" +msgid "pgr_aStar(`Edges SQL`_, **start vid**, **end vids**, [**options**])" msgstr "" -msgid "" -"Get 2 paths from vertices :math:`\\{6, 1\\}` to vertex :math:`17` on a " -"undirected graph." +msgid "pgr_aStar(`Edges SQL`_, **start vids**, **end vid**, [**options**])" msgstr "" -msgid "https://en.wikipedia.org/wiki/K_shortest_path_routing" +msgid "pgr_aStar(`Edges SQL`_, **start vids**, **end vids**, [**options**])" msgstr "" -msgid "``pgr_TSP``" +msgid "pgr_aStar(`Edges SQL`_, `Combinations SQL`_, [**options**])" msgstr "" -msgid "``pgr_TSP`` - Aproximation using *metric* algorithm." +msgid "**options:** ``[directed, heuristic, factor, epsilon]``" msgstr "" -msgid "Availability:" +msgid "Returns set of |short-generic-result|" msgstr "" -msgid "Version 3.2.1" +msgid "Optional parameters are `named parameters` and have a default value." msgstr "" msgid "" -"Metric Algorithm from `Boost library `__" +"From vertex :math:`6` to vertex :math:`12` on a **directed** graph with " +"heuristic :math:`2`" msgstr "" -msgid "Simulated Annealing Algorithm no longer supported" +msgid "" +"From vertex :math:`6` to vertices :math:`\\{10, 12\\}` on a **directed** " +"graph with heuristic :math:`3` and factor :math:`3.5`" msgstr "" msgid "" -"The Simulated Annealing Algorithm related parameters are ignored: " -"max_processing_time, tries_per_temperature, max_changes_per_temperature, " -"max_consecutive_non_changes, initial_temperature, final_temperature, " -"cooling_factor, randomize" +"From vertices :math:`\\{6, 8\\}` to vertex :math:`10` on an **undirected** " +"graph with heuristic :math:`4`" msgstr "" -msgid "Version 2.3.0" +msgid "" +"From vertices :math:`\\{6, 8\\}` to vertices :math:`\\{10, 12\\}` on a " +"**directed** graph with factor :math:`0.5`" msgstr "" msgid "" -"Can be Used with :doc:`costMatrix-category` functions preferably with " -"`directed => false`." +"Using a combinations table on a **directed** graph with factor :math:`0.5`." msgstr "" -msgid "With ``directed => false``" +msgid "Example 1" msgstr "" -msgid "Will generate a graph that:" +msgid "Demonstration of repeated values are ignored, and result is sorted." msgstr "" -msgid "is undirected" +msgid "Example 2" msgstr "" -msgid "is fully connected (As long as the graph has one component)" +msgid "Making **start vids** the same as **end vids**." msgstr "" -msgid "all traveling costs on edges obey the triangle inequality." +msgid "Example 3" msgstr "" -msgid "When ``start_vid = 0 OR end_vid = 0``" +msgid "Manually assigned vertex combinations." msgstr "" +#, fuzzy +msgid "``pgr_aStarCost``" +msgstr ":doc:`pgr_aStarCost`" + +#, fuzzy msgid "" -"The solutions generated is garanteed to be *twice as long as the optimal " -"tour in the worst case*" -msgstr "" +"``pgr_aStarCost`` - Total cost of the shortest path using the A* algorithm." +msgstr ":doc:`pgr_aStarCost` - 최단 경로의 집계 비용 반환." -msgid "When ``start_vid != 0 AND end_vid != 0 AND start_vid != end_vid``" -msgstr "" +#, fuzzy +msgid "New proposed function." +msgstr ":doc:`routingFunctions`" +#, fuzzy msgid "" -"It is **not garanteed** that the solution will be, in the worse case, twice " -"as long as the optimal tour, due to the fact that `end_vid` is forced to be " -"in a fixed position." -msgstr "" +"The ``pgr_aStarCost`` function sumarizes of the cost of the shortest path " +"using the A* algorithm." +msgstr ":doc:`pgr_aStarCost` - 최단 경로의 집계 비용 반환." -msgid "With ``directed => true``" +msgid "" +"Let be the case the values returned are stored in a table, so the unique " +"index would be the pair: `(start_vid, end_vid)`" msgstr "" -msgid "" -"It is **not garanteed** that the solution will be, in the worse case, twice " -"as long as the optimal tour" +msgid "For undirected graphs, the results are symmetric." msgstr "" -msgid "is directed" +msgid "The returned values are ordered in ascending order:" msgstr "" -msgid "" -"some (or all) traveling costs on edges might not obey the triangle " -"inequality." +msgid "`start_vid` ascending" msgstr "" -msgid "" -"As an undirected graph is required, the directed graph is transformed as " -"follows:" +msgid "`end_vid` ascending" msgstr "" -msgid "" -"edges `(u, v)` and `(v, u)` is considered to be the same edge (denoted `(u, " -"v)`" +msgid "pgr_aStarCost(`Edges SQL`_, **start vid**, **end vid**, [**options**])" msgstr "" -msgid "if ``agg_cost`` differs between one or more instances of edge `(u, v)`" +msgid "pgr_aStarCost(`Edges SQL`_, **start vid**, **end vids**, [**options**])" msgstr "" -msgid "" -"The minimum value of the ``agg_cost`` all instances of edge `(u, v)` is " -"going to be considered as the ``agg_cost`` of edge `(u, v)`" +msgid "pgr_aStarCost(`Edges SQL`_, **start vids**, **end vid**, [**options**])" msgstr "" msgid "" -"Some (or all) traveling costs on edges will still might not obey the " -"triangle inequality." +"pgr_aStarCost(`Edges SQL`_, **start vids**, **end vids**, [**options**])" msgstr "" -msgid "When the data is incomplete, but it is a connected graph:" +msgid "pgr_aStarCost(`Edges SQL`_, `Combinations SQL`_, [**options**])" msgstr "" -msgid "the missing values will be calculated with dijkstra algorithm." +msgid "Returns set of |matrix-result|" msgstr "" -msgid "pgr_TSP(`Matrix SQL`_, ``[start_id, end_id]``)" +msgid "pgr_aStarCost(`Edges SQL`_, **start vids**, **end vids**, [options])" msgstr "" -msgid "Returns set of |tsp-result|" +msgid "``pgr_aStarCostMatrix``" msgstr "" -msgid "OR EMTPY SET" +msgid "" +"``pgr_aStarCostMatrix`` - Calculates the a cost matrix using :doc:" +"`pgr_aStar`." msgstr "" -msgid "Using :doc:`pgr_dijkstraCostMatrix` to generate the matrix information" +msgid "Using internaly the :doc:`pgr_aStar` algorithm" msgstr "" -msgid "" -"**Line 4** Vertices :math:`\\{2, 4, 13, 14\\}` are not included because they " -"are not connected." +msgid "Returns a cost matrix." msgstr "" -msgid "`Matrix SQL`_ as described below" +msgid "No ordering is performed" msgstr "" -msgid "``ANY-INTEGER``" +msgid "let `v` and `u` are nodes on the graph:" msgstr "" -msgid "``ANY-NUMERICAL``" +msgid "when there is no path from `v` to `u`:" msgstr "" -msgid "Cost for going from start_vid to end_vid" +msgid "cost from `v` to `u` is :math:`\\inf`" msgstr "" -msgid "Returns SET OF ``(seq, node, cost, agg_cost)``" +msgid "when :math:`v = u` then" msgstr "" -msgid "Row sequence." +msgid "cost from `v` to `u` is :math:`0`" msgstr "" -msgid "**node**" +msgid "When the graph is **undirected** the cost matrix is symmetric" msgstr "" -msgid "Identifier of the node/coordinate/point." +msgid "pgr_aStarCostMatrix(`Edges SQL`_, **start vids**, [**options**])" msgstr "" msgid "" -"Cost to traverse from the current ``node`` to the next ``node`` in the path " -"sequence." +"Symmetric cost matrix for vertices :math:`\\{5, 6, 10, 15\\}` on an " +"**undirected** graph using heuristic :math:`2`" msgstr "" -msgid "``0`` for the last row in the tour sequence." +msgid "Use with :doc:`pgr_TSP`" msgstr "" -msgid "Aggregate cost from the ``node`` at ``seq = 1`` to the current node." +msgid "``pgr_alphaShape``" msgstr "" -msgid "``0`` for the first row in the tour sequence." +msgid "``pgr_alphaShape`` — Polygon part of an alpha shape." msgstr "" -msgid "Start from vertex :math:`1`" +msgid "Breaking change on signature" msgstr "" -msgid "**Line 6** ``start_vid => 1``" +msgid "**Boost 1.54** & **Boost 1.55** are supported" msgstr "" -msgid "Using points of interest to generate an asymetric matrix." +msgid "**Boost 1.56+** is preferable" msgstr "" -msgid "To generate an asymmetric matrix:" +msgid "Boost Geometry is stable on Boost 1.56" msgstr "" -msgid "" -"**Line 4** The ``side`` information of ``pointsOfInterset`` is ignored by " -"not including it in the query" +msgid "Added alpha argument with default 0 (use optimal value)" msgstr "" -msgid "**Line 6** Generating an asymetric matrix with ``directed => true``" +msgid "Support to return multiple outer/inner ring" msgstr "" -msgid "" -":math:`min(agg\\_cost(u, v), agg\\_cost(v, u))` is going to be considered as " -"the ``agg_cost``" +msgid "Renamed from version 1.x" msgstr "" -msgid "" -"The solution that can be larger than *twice as long as the optimal tour* " -"because:" +msgid "Support" msgstr "" -msgid "Triangle inequality might not be satisfied." +msgid "Returns the polygon part of an alpha shape." msgstr "" -msgid "``start_id != 0 AND end_id != 0``" +msgid "Input is a *geometry* and returns a *geometry*" msgstr "" -msgid "Connected incomplete data" +msgid "Uses PostGis ST_DelaunyTriangles" msgstr "" msgid "" -"Using selected edges :math:`\\{2, 4, 5, 8, 9, 15\\}` the matrix is not " -"complete." +"Instead of using CGAL's definition of `alpha` it use the ``spoon_radius``" msgstr "" -msgid "" -"Cost value for :math:`17 \\rightarrow 10` do not exist on the matrix, but " -"the value used is taken from :math:`10 \\rightarrow 17`." +msgid ":math:`spoon\\_radius = \\sqrt alpha`" msgstr "" -msgid "``pgr_TSPeuclidean``" +msgid "" +"A Triangle area is considered part of the alpha shape when :math:" +"`circumcenter\\ radius < spoon\\_radius`" msgstr "" -msgid "``pgr_TSPeuclidean`` - Aproximation using *metric* algorithm." +msgid "The ``alpha`` parameter is the **spoon radius**" msgstr "" msgid "" -"The Simulated Annealing Algorithm related parameters are ignored: " -"`max_processing_time`, `tries_per_temperature`, " -"`max_changes_per_temperature`, `max_consecutive_non_changes`, " -"`initial_temperature`, `final_temperature`, `cooling_factor`, `randomize`" +"When the total number of points is less than 3, returns an EMPTY geometry" msgstr "" -msgid "Version 3.0.0" +msgid "pgr_alphaShape(**geometry**, [alpha])" msgstr "" -msgid "Name change from pgr_eucledianTSP" +msgid "RETURNS ``geometry``" msgstr "" -msgid "New **Official** function" +msgid "" +"passing a geometry collection with spoon radius :math:`1.5` using the return " +"variable ``geom``" msgstr "" -msgid "" -"Any duplicated identifier will be ignored. The coordinates that will be kept" +msgid "**geometry**" msgstr "" -msgid "is arbitrarly." +msgid "``geometry``" msgstr "" -msgid "" -"The coordinates are quite similar for the same identifier, for example ::" +msgid "Geometry with at least :math:`3` points" msgstr "" -msgid "" -"The coordinates are quite different for the same identifier, for example ::" +msgid "``alpha``" msgstr "" -msgid "pgr_TSPeuclidean(`Coordinates SQL`_, ``[start_id, end_id]``)" +msgid "The radius of the spoon." msgstr "" -msgid "With default values" +msgid "Return Value" msgstr "" -msgid "`Coordinates SQL`_" +msgid "Kind of geometry" msgstr "" -msgid "`Coordinates SQL`_ as described below" +msgid "GEOMETRY COLLECTION" msgstr "" -msgid "Coordinates SQL" +msgid "A Geometry collection of Polygons" msgstr "" -msgid "``x``" +msgid ":doc:`pgr_drivingDistance`" +msgstr ":doc:`pgr_drivingDistance`" + +msgid "`ST_ConcaveHull `__" msgstr "" -msgid "X value of the coordinate." +#, fuzzy +msgid "``pgr_analyzeGraph``" +msgstr ":doc:`pgr_analyzeGraph`" + +msgid "``pgr_analyzeGraph`` — Analyzes the network topology." msgstr "" -msgid "``y``" +msgid "The function returns:" msgstr "" -msgid "Y value of the coordinate." +msgid "``OK`` after the analysis has finished." msgstr "" -msgid "Test 29 cities of Western Sahara" +msgid "``FAIL`` when the analysis was not completed due to an error." msgstr "" -msgid "" -"This example shows how to make performance tests using University of " -"Waterloo's `example data `__ using the 29 cities of `Western Sahara dataset `__" +msgid "pgr_analyzeGraph(**edge_table**, **tolerance**, [**options**])" msgstr "" -msgid "Creating a table for the data and storing the data" +msgid "**options:** ``[the_geom, id, source, target, rows_where]``" msgstr "" -msgid "Adding a geometry (for visual purposes)" +msgid "RETURNS ``VARCHAR``" msgstr "" -msgid "Total tour cost" +msgid "Prerequisites" msgstr "" msgid "" -"Getting a total cost of the tour, compare the value with the length of an " -"optimal tour is 27603, given on the dataset" +"The edge table to be analyzed must contain a source column and a target " +"column filled with id's of the vertices of the segments and the " +"corresponding vertices table _vertices_pgr that stores the " +"vertices information." msgstr "" -msgid "Getting a geometry of the tour" +msgid "Use :doc:`pgr_createVerticesTable` to create the vertices table." msgstr "" -msgid "Visual results" +msgid "" +"Use :doc:`pgr_createTopology` to create the topology and the vertices table." msgstr "" -msgid "" -"Visualy, The first image is the `optimal solution `__ and the second image is the solution " -"obtained with ``pgr_TSPeuclidean``." +msgid "The analyze graph function accepts the following parameters:" msgstr "" -msgid ":doc:`sampledata` network." +msgid "edge_table" msgstr "" -msgid "``pgr_aStar``" +msgid "``text`` Network table name. (may contain the schema name as well)" msgstr "" -msgid "``pgr_aStar`` — Shortest path using the A* algorithm." +msgid "tolerance" msgstr "" -msgid "Standarizing output columns to |short-generic-result|" +msgid "" +"``float8`` Snapping tolerance of disconnected edges. (in projection unit)" +msgstr "" + +msgid "the_geom" msgstr "" msgid "" -"``pgr_aStar`` (`One to One`_) added ``start_vid`` and ``end_vid`` columns." +"``text`` Geometry column name of the network table. Default value is " +"``the_geom``." msgstr "" -msgid "``pgr_aStar`` (`One to Many`_) added ``end_vid`` column." +msgid "id" msgstr "" -msgid "``pgr_aStar`` (`Many to One`_) added ``start_vid`` column." +msgid "" +"``text`` Primary key column name of the network table. Default value is " +"``id``." msgstr "" -msgid "Version 3.2.0" +msgid "source" msgstr "" -msgid "New **proposed** signature:" +msgid "" +"``text`` Source column name of the network table. Default value is " +"``source``." msgstr "" -msgid "``pgr_aStar`` (`Combinations`_)" +msgid "target" msgstr "" -msgid "Version 2.4.0" +msgid "" +"``text`` Target column name of the network table. Default value is " +"``target``." msgstr "" -msgid "New **Proposed** signatures:" +msgid "rows_where" msgstr "" -msgid "``pgr_aStar`` (`One to Many`_)" +msgid "" +"``text`` Condition to select a subset or rows. Default value is ``true`` to " +"indicate all rows." msgstr "" -msgid "``pgr_aStar`` (`Many to One`_)" +msgid "Uses the vertices table: _vertices_pgr." msgstr "" -msgid "``pgr_aStar`` (`Many to Many`_)" +msgid "Fills completely the ``cnt`` and ``chk`` columns of the vertices table." msgstr "" -msgid "Signature change on ``pgr_astar`` (`One to One`_)" +msgid "" +"Returns the analysis of the section of the network defined by ``rows_where``" msgstr "" -msgid "**Official** ``pgr_aStar`` (`One to One`_)" +msgid "The vertices table is not found." msgstr "" msgid "" -"The results are equivalent to the union of the results of the `pgr_aStar(` " -"`One to One`_ `)` on the:" +"A required column of the Network table is not found or is not of the " +"appropriate type." msgstr "" -msgid "pgr_aStar(`Edges SQL`_, **start vid**, **end vid**, [**options**])" +msgid "The condition is not well formed." msgstr "" -msgid "pgr_aStar(`Edges SQL`_, **start vid**, **end vids**, [**options**])" +msgid "The names of source , target or id are the same." msgstr "" -msgid "pgr_aStar(`Edges SQL`_, **start vids**, **end vid**, [**options**])" +msgid "The SRID of the geometry could not be determined." msgstr "" -msgid "pgr_aStar(`Edges SQL`_, **start vids**, **end vids**, [**options**])" +msgid "The Vertices Table" msgstr "" -msgid "pgr_aStar(`Edges SQL`_, `Combinations SQL`_, [**options**])" +msgid "" +"The vertices table can be created with :doc:`pgr_createVerticesTable " +"` or :doc:`pgr_createTopology `" msgstr "" -msgid "**options:** ``[directed, heuristic, factor, epsilon]``" +msgid "The structure of the vertices table is:" msgstr "" -msgid "Returns set of |short-generic-result|" +msgid "``bigint`` Identifier of the vertex." msgstr "" -msgid "Optional parameters are `named parameters` and have a default value." +msgid "cnt" msgstr "" msgid "" -"From vertex :math:`6` to vertex :math:`12` on a **directed** graph with " -"heuristic :math:`2`" +"``integer`` Number of vertices in the edge_table that reference this vertex." msgstr "" -msgid "" -"From vertex :math:`6` to vertices :math:`\\{10, 12\\}` on a **directed** " -"graph with heuristic :math:`3` and factor :math:`3.5`" +msgid "chk" msgstr "" -msgid "" -"From vertices :math:`\\{6, 8\\}` to vertex :math:`10` on an **undirected** " -"graph with heuristic :math:`4`" +msgid "``integer`` Indicator that the vertex might have a problem." +msgstr "" + +msgid "ein" msgstr "" msgid "" -"From vertices :math:`\\{6, 8\\}` to vertices :math:`\\{10, 12\\}` on a " -"**directed** graph with factor :math:`0.5`" +"``integer`` Number of vertices in the edge_table that reference this vertex " +"as incoming. See :doc:`pgr_analyzeOneWay `." +msgstr "" + +msgid "eout" msgstr "" msgid "" -"Using a combinations table on a **directed** graph with factor :math:`0.5`." +"``integer`` Number of vertices in the edge_table that reference this vertex " +"as outgoing. See :doc:`pgr_analyzeOneWay `." msgstr "" -msgid "Example 1" +msgid "``geometry`` Point geometry of the vertex." msgstr "" -msgid "Demonstration of repeated values are ignored, and result is sorted." +msgid "Usage when the edge table's columns MATCH the default values:" msgstr "" -msgid "Example 2" +msgid "The simplest way to use pgr_analyzeGraph is:" msgstr "" -msgid "Making **start vids** the same as **end vids**." +msgid "Arguments are given in the order described in the parameters:" msgstr "" -msgid "Example 3" +msgid "We get the same result as the simplest way to use the function." msgstr "" -msgid "Manually assigned vertex combinations." +msgid "An error would occur when" msgstr "" -msgid "pgr_aStarCost" +msgid "the arguments are not given in the appropriate order:" msgstr "" -#, fuzzy msgid "" -"``pgr_aStarCost`` - Total cost of the shortest path using the A* algorithm." -msgstr ":doc:`pgr_aStarCost` - 최단 경로의 집계 비용 반환." - -msgid "``pgr_aStarCost`` (`Combinations`_)" +"In this example, the column ``id`` of the table ``mytable`` is passed to the " +"function as the geometry column, and the geometry column ``the_geom`` is " +"passed to the function as the id column." msgstr "" -msgid "New **proposed** function" +msgid "When using the named notation" msgstr "" -#, fuzzy -msgid "" -"The ``pgr_aStarCost`` function sumarizes of the cost of the shortest path " -"using the A* algorithm." -msgstr ":doc:`pgr_aStarCost` - 최단 경로의 집계 비용 반환." +msgid "The order of the parameters do not matter:" +msgstr "" msgid "" -"Let be the case the values returned are stored in a table, so the unique " -"index would be the pair: `(start_vid, end_vid)`" +"Parameters defined with a default value can be omitted, as long as the value " +"matches the default:" msgstr "" -msgid "For undirected graphs, the results are symmetric." +msgid "Selecting rows using rows_where parameter" msgstr "" -msgid "The returned values are ordered in ascending order:" +msgid "" +"Selecting rows based on the id. Displays the analysis a the section of the " +"network." msgstr "" -msgid "`start_vid` ascending" +msgid "" +"Selecting the rows where the geometry is near the geometry of row with " +"``id`` = 5" msgstr "" -msgid "`end_vid` ascending" +msgid "" +"Selecting the rows where the geometry is near the geometry of the row with " +"``gid`` =100 of the table ``othertable``." msgstr "" -msgid "pgr_aStarCost(`Edges SQL`_, **start vid**, **end vid**, [**options**])" +msgid "Usage when the edge table's columns DO NOT MATCH the default values:" msgstr "" -msgid "pgr_aStarCost(`Edges SQL`_, **start vid**, **end vids**, [**options**])" +msgid "For the following table" msgstr "" -msgid "pgr_aStarCost(`Edges SQL`_, **start vids**, **end vid**, [**options**])" +msgid "Using positional notation:" msgstr "" msgid "" -"pgr_aStarCost(`Edges SQL`_, **start vids**, **end vids**, [**options**])" +"The arguments need to be given in the order described in the parameters:" msgstr "" -msgid "pgr_aStarCost(`Edges SQL`_, `Combinations SQL`_, [**options**])" +msgid "" +"An error would occur when the arguments are not given in the appropriate " +"order: In this example, the column ``gid`` of the table ``mytable`` is " +"passed to the function as the geometry column, and the geometry column " +"``mygeom`` is passed to the function as the id column." msgstr "" -msgid "Returns set of |matrix-result|" +msgid "" +"In this scenario omitting a parameter would create an error because the " +"default values for the column names do not match the column names of the " +"table." msgstr "" -msgid "pgr_aStarCost(`Edges SQL`_, **start vids**, **end vids**, [options])" +msgid "Selecting rows based on the id." msgstr "" -msgid "``pgr_aStarCostMatrix``" +msgid "" +"Selecting the rows WHERE the geometry is near the geometry of row with " +"``id`` =5 ." msgstr "" msgid "" -"``pgr_aStarCostMatrix`` - Calculates the a cost matrix using :doc:" -"`pgr_aStar`." +"Selecting the rows WHERE the geometry is near the place='myhouse' of the " +"table ``othertable``. (note the use of quote_literal)" msgstr "" -msgid "Using internaly the :doc:`pgr_aStar` algorithm" +msgid ":doc:`pgr_analyzeOneWay`" +msgstr ":doc:`pgr_analyzeOneWay`" + +msgid ":doc:`pgr_createVerticesTable`" +msgstr ":doc:`pgr_createVerticesTable`" + +msgid ":doc:`pgr_nodeNetwork` to create nodes to a not noded edge table." msgstr "" -msgid "Returns a cost matrix." +#, fuzzy +msgid "``pgr_analyzeOneWay``" +msgstr ":doc:`pgr_analyzeOneWay`" + +msgid "" +"``pgr_analyzeOneWay`` — Analyzes oneway Sstreets and identifies flipped " +"segments." msgstr "" -msgid "No ordering is performed" +msgid "" +"This function analyzes oneway streets in a graph and identifies any flipped " +"segments." msgstr "" -msgid "let `v` and `u` are nodes on the graph:" +msgid "" +"The analyses of one way segments is pretty simple but can be a powerful " +"tools to identifying some the potential problems created by setting the " +"direction of a segment the wrong way. A node is a `source` if it has edges " +"the exit from that node and no edges enter that node. Conversely, a node is " +"a `sink` if all edges enter the node but none exit that node. For a `source` " +"type node it is logically impossible to exist because no vehicle can exit " +"the node if no vehicle and enter the node. Likewise, if you had a `sink` " +"node you would have an infinite number of vehicle piling up on this node " +"because you can enter it but not leave it." msgstr "" -msgid "when there is no path from `v` to `u`:" +msgid "" +"So why do we care if the are not feasible? Well if the direction of an edge " +"was reversed by mistake we could generate exactly these conditions. Think " +"about a divided highway and on the north bound lane one segment got entered " +"wrong or maybe a sequence of multiple segments got entered wrong or maybe " +"this happened on a round-about. The result would be potentially a `source` " +"and/or a `sink` node." msgstr "" -msgid "cost from `v` to `u` is :math:`\\inf`" +msgid "" +"So by counting the number of edges entering and exiting each node we can " +"identify both `source` and `sink` nodes so that you can look at those areas " +"of your network to make repairs and/or report the problem back to your data " +"vendor." msgstr "" -msgid "when :math:`v = u` then" +msgid "" +"pgr_analyzeOneWay(**geom_table**, **s_in_rules**, **s_out_rules**, " +"**t_in_rules**, **t_out_rules**, [**options**])" msgstr "" -msgid "cost from `v` to `u` is :math:`0`" +msgid "**options:** ``[oneway, source, target, two_way_if_null]``" msgstr "" -msgid "When the graph is **undirected** the cost matrix is symmetric" +msgid "RETURNS ``TEXT``" msgstr "" -msgid "pgr_aStarCostMatrix(`Edges SQL`_, **start vids**, [**options**])" +msgid "s_in_rules" msgstr "" -msgid "" -"Symmetric cost matrix for vertices :math:`\\{5, 6, 10, 15\\}` on an " -"**undirected** graph using heuristic :math:`2`" +msgid "``text[]`` source node **in** rules" msgstr "" -msgid "Use with :doc:`pgr_TSP`" +msgid "s_out_rules" msgstr "" -msgid "``pgr_alphaShape``" +msgid "``text[]`` source node **out** rules" msgstr "" -msgid "``pgr_alphaShape`` — Polygon part of an alpha shape." +msgid "t_in_rules" msgstr "" -msgid "Breaking change on signature" +msgid "``text[]`` target node **in** rules" msgstr "" -msgid "**Boost 1.54** & **Boost 1.55** are supported" +msgid "t_out_rules" msgstr "" -msgid "**Boost 1.56+** is preferable" +msgid "``text[]`` target node **out** rules" msgstr "" -msgid "Boost Geometry is stable on Boost 1.56" +msgid "oneway" msgstr "" -msgid "Added alpha argument with default 0 (use optimal value)" +msgid "" +"``text`` oneway column name name of the network table. Default value is " +"``oneway``." msgstr "" -msgid "Support to return multiple outer/inner ring" +msgid "two_way_if_null" msgstr "" -msgid "Renamed from version 1.x" +msgid "" +"``boolean`` flag to treat oneway NULL values as bi-directional. Default " +"value is ``true``." msgstr "" -msgid "Returns the polygon part of an alpha shape." +msgid "" +"It is strongly recommended to use the named notation. See :doc:" +"`pgr_createVerticesTable` or :doc:`pgr_createTopology` for examples." msgstr "" -msgid "Input is a *geometry* and returns a *geometry*" +msgid "" +"Fills completely the ``ein`` and ``eout`` columns of the vertices table." msgstr "" -msgid "Uses PostGis ST_DelaunyTriangles" +msgid "The names of source , target or oneway are the same." msgstr "" msgid "" -"Instead of using CGAL's definition of `alpha` it use the ``spoon_radius``" +"The rules are defined as an array of text strings that if match the " +"``oneway`` value would be counted as ``true`` for the source or target " +"**in** or **out** condition." msgstr "" -msgid ":math:`spoon\\_radius = \\sqrt alpha`" +msgid "" +"The vertices table can be created with :doc:`pgr_createVerticesTable` or :" +"doc:`pgr_createTopology`" msgstr "" msgid "" -"A Triangle area is considered part of the alpha shape when :math:" -"`circumcenter\\ radius < spoon\\_radius`" +"``integer`` Number of vertices in the edge_table that reference this vertex. " +"See :doc:`pgr_analyzeGgraph `." msgstr "" -msgid "The ``alpha`` parameter is the **spoon radius**" +msgid "" +"``integer`` Indicator that the vertex might have a problem. See :doc:" +"`pgr_analyzeGraph `." msgstr "" msgid "" -"When the total number of points is less than 3, returns an EMPTY geometry" +"``integer`` Number of vertices in the edge_table that reference this vertex " +"as incoming." msgstr "" -msgid "pgr_alphaShape(**geometry**, [alpha])" +msgid "" +"``integer`` Number of vertices in the edge_table that reference this vertex " +"as outgoing." msgstr "" -msgid "RETURNS ``geometry``" +msgid ":doc:`pgr_analyzeGraph`" +msgstr ":doc:`pgr_analyzeGraph`" + +msgid "``pgr_articulationPoints``" msgstr "" msgid "" -"passing a geometry collection with spoon radius :math:`1.5` using the return " -"variable ``geom``" +"``pgr_articulationPoints`` - Return the articulation points of an undirected " +"graph." msgstr "" -msgid "**geometry**" +msgid "Result columns change: ``seq`` is removed" msgstr "" -msgid "``geometry``" +msgid "Version 2.5.0" msgstr "" -msgid "Geometry with at least :math:`3` points" +msgid "New experimental function." msgstr "" -msgid "``alpha``" +msgid "" +"Those vertices that belong to more than one biconnected component are called " +"articulation points or, equivalently, cut vertices. Articulation points are " +"vertices whose removal would increase the number of connected components in " +"the graph. This implementation can only be used with an undirected graph." msgstr "" -msgid "The radius of the spoon." +msgid "Works for **undirected** graphs." msgstr "" -msgid "Return Value" +msgid "``node`` ascending" msgstr "" -msgid "Kind of geometry" +msgid "Running time: :math:`O(V + E)`" msgstr "" -msgid "GEOMETRY COLLECTION" +msgid "pgr_articulationPoints(`Edges SQL`_)" msgstr "" -msgid "A Geometry collection of Polygons" +msgid "Returns set of |result-node|" msgstr "" -msgid ":doc:`pgr_drivingDistance`" -msgstr ":doc:`pgr_drivingDistance`" - -msgid "`ST_ConcaveHull `__" +msgid "The articulation points of the graph" msgstr "" -msgid "pgr_analyzeGraph" +msgid "Nodes in red are the articulation points." msgstr "" -msgid "``pgr_analyzeGraph`` — Analyzes the network topology." +msgid "" +"`Boost: Biconnected components & articulation points `__" msgstr "" -msgid "The function returns:" +msgid "" +"wikipedia: `Biconnected component `__" msgstr "" -msgid "``OK`` after the analysis has finished." +msgid "``pgr_bdAstar``" msgstr "" -msgid "``FAIL`` when the analysis was not completed due to an error." +msgid "``pgr_bdAstar`` — Shortest path using the bidirectional A* algorithm." msgstr "" -msgid "pgr_analyzeGraph(**edge_table**, **tolerance**, [**options**])" +msgid "pgr_bdAstar(One to One) added ``start_vid`` and ``end_vid`` columns." msgstr "" -msgid "**options:** ``[the_geom, id, source, target, rows_where]``" +msgid "pgr_bdAstar(One to Many) added ``end_vid`` column." msgstr "" -msgid "RETURNS ``VARCHAR``" +msgid "pgr_bdAstar(Many to One) added ``start_vid`` column." msgstr "" -msgid "Prerequisites" +#, fuzzy +msgid "pgr_bdAstar(One to Many)" +msgstr ":doc:`pgr_withPointsCostMatrix`" + +#, fuzzy +msgid "pgr_bdAstar(Many to One)" +msgstr ":doc:`pgr_withPointsCostMatrix`" + +#, fuzzy +msgid "pgr_bdAstar(Many to Many)" +msgstr ":doc:`pgr_withPointsCostMatrix`" + +msgid "Signature change on pgr_bdAstar(One to One)" msgstr "" msgid "" -"The edge table to be analyzed must contain a source column and a target " -"column filled with id's of the vertices of the segments and the " -"corresponding vertices table _vertices_pgr that stores the " -"vertices information." +"The results are equivalent to the union of the results of the " +"pgr_bdAStar(One to One) on the:" msgstr "" -msgid "Use :doc:`pgr_createVerticesTable` to create the vertices table." +msgid "pgr_bdAstar(`Edges SQL`_, **start vid**, **end vid**, [**options**])" msgstr "" -msgid "" -"Use :doc:`pgr_createTopology` to create the topology and the vertices table." +msgid "pgr_bdAstar(`Edges SQL`_, **start vid**, **end vids**, [**options**])" msgstr "" -msgid "The analyze graph function accepts the following parameters:" +msgid "pgr_bdAstar(`Edges SQL`_, **start vids**, **end vid**, [**options**])" msgstr "" -msgid "edge_table" +msgid "pgr_bdAstar(`Edges SQL`_, **start vids**, **end vids**, [**options**])" +msgstr "" + +msgid "pgr_bdAstar(`Edges SQL`_, `Combinations SQL`_, [**options**])" msgstr "" -msgid "``text`` Network table name. (may contain the schema name as well)" +#, fuzzy +msgid "``pgr_bdAstarCost``" +msgstr ":doc:`pgr_bdAstarCost`" + +msgid "" +"``pgr_bdAstarCost`` - Total cost of the shortest path using the " +"bidirectional A* algorithm." msgstr "" -msgid "tolerance" +msgid "" +"The ``pgr_bdAstarCost`` function sumarizes of the cost of the shortest path " +"using the bidirectional A* algorithm." msgstr "" msgid "" -"``float8`` Snapping tolerance of disconnected edges. (in projection unit)" +"pgr_bdAstarCost(`Edges SQL`_, **start vid**, **end vid**, [**options**])" msgstr "" -msgid "the_geom" +msgid "" +"pgr_bdAstarCost(`Edges SQL`_, **start vid**, **end vids**, [**options**])" msgstr "" msgid "" -"``text`` Geometry column name of the network table. Default value is " -"``the_geom``." +"pgr_bdAstarCost(`Edges SQL`_, **start vids**, **end vid**, [**options**])" msgstr "" -msgid "id" +msgid "" +"pgr_bdAstarCost(`Edges SQL`_, **start vids**, **end vids**, [**options**])" msgstr "" -msgid "" -"``text`` Primary key column name of the network table. Default value is " -"``id``." +msgid "pgr_bdAstarCost(`Edges SQL`_, `Combinations SQL`_, [**options**])" msgstr "" -msgid "source" +msgid "``pgr_bdAstarCostMatrix``" msgstr "" msgid "" -"``text`` Source column name of the network table. Default value is " -"``source``." +"``pgr_bdAstarCostMatrix`` - Calculates the a cost matrix using :doc:" +"`pgr_aStar`." msgstr "" -msgid "target" +msgid "Using internaly the :doc:`pgr_bdAstar` algorithm" msgstr "" -msgid "" -"``text`` Target column name of the network table. Default value is " -"``target``." +msgid "pgr_bdAstarCostMatrix(`Edges SQL`_, **start vids**, [**options**])" msgstr "" -msgid "rows_where" +msgid "``pgr_bdDijkstra``" msgstr "" +#, fuzzy msgid "" -"``text`` Condition to select a subset or rows. Default value is ``true`` to " -"indicate all rows." -msgstr "" +"``pgr_bdDijkstra`` — Returns the shortest path using Bidirectional Dijkstra " +"algorithm." +msgstr ":doc:`pgr_bdDijkstra` - 최단 경로를 위한 양방향 다익스트라 알고리즘." -msgid "Uses the vertices table: _vertices_pgr." +#, fuzzy +msgid "pgr_bdDijkstra(One to Many)" +msgstr ":doc:`pgr_withPointsCostMatrix`" + +#, fuzzy +msgid "pgr_bdDijkstra(Many to One)" +msgstr ":doc:`pgr_withPointsCostMatrix`" + +#, fuzzy +msgid "pgr_bdDijkstra(Many to Many)" +msgstr ":doc:`pgr_withPointsCostMatrix`" + +msgid "Signature change on pgr_bdDijsktra(One to One)" msgstr "" -msgid "Fills completely the ``cnt`` and ``chk`` columns of the vertices table." +msgid "" +"pgr_bdDijkstra(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" msgstr "" msgid "" -"Returns the analysis of the section of the network defined by ``rows_where``" +"pgr_bdDijkstra(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" msgstr "" -msgid "The vertices table is not found." +msgid "" +"pgr_bdDijkstra(`Edges SQL`_, **start vids**, **end vid**, [``directed``])" msgstr "" msgid "" -"A required column of the Network table is not found or is not of the " -"appropriate type." +"pgr_bdDijkstra(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" msgstr "" -msgid "The condition is not well formed." +msgid "pgr_bdDijkstra(`Edges SQL`_, `Combinations SQL`_, [``directed``])" msgstr "" -msgid "The names of source , target or id are the same." +msgid "Returns set of |old-generic-result|" msgstr "" -msgid "The SRID of the geometry could not be determined." +msgid "Returns set of |result-1-1|" msgstr "" -msgid "The Vertices Table" +msgid "From vertex :math:`6` to vertex :math:`10` on a **directed** graph" msgstr "" -msgid "" -"The vertices table can be created with :doc:`pgr_createVerticesTable " -"` or :doc:`pgr_createTopology `" +msgid "Returns set of |result-1-m|" msgstr "" -msgid "The structure of the vertices table is:" +msgid "" +"From vertex :math:`6` to vertices :math:`\\{10, 17\\}` on a **directed** " +"graph" msgstr "" -msgid "``bigint`` Identifier of the vertex." +msgid "Returns set of |result-m-1|" msgstr "" -msgid "cnt" +msgid "" +"From vertices :math:`\\{6, 1\\}` to vertex :math:`17` on a **directed** graph" msgstr "" msgid "" -"``integer`` Number of vertices in the edge_table that reference this vertex." +"From vertices :math:`\\{6, 1\\}` to vertices :math:`\\{10, 17\\}` on an " +"**undirected** graph" msgstr "" -msgid "chk" +msgid "Using a combinations table on an **undirected** graph" msgstr "" -msgid "``integer`` Indicator that the vertex might have a problem." +msgid "https://en.wikipedia.org/wiki/Bidirectional_search" msgstr "" -msgid "ein" +msgid "``pgr_bdDijkstraCost``" msgstr "" msgid "" -"``integer`` Number of vertices in the edge_table that reference this vertex " -"as incoming. See :doc:`pgr_analyzeOneWay `." +"``pgr_bdDijkstraCost`` — Returns the shortest path's cost using " +"Bidirectional Dijkstra algorithm." msgstr "" -msgid "eout" +msgid "" +"The ``pgr_bdDijkstraCost`` function sumarizes of the cost of the shortest " +"path using the bidirectional Dijkstra Algorithm." msgstr "" msgid "" -"``integer`` Number of vertices in the edge_table that reference this vertex " -"as outgoing. See :doc:`pgr_analyzeOneWay `." +"pgr_bdDijkstraCost(`Edges SQL`_, **start vid**, **end vid** , [``directed``])" msgstr "" -msgid "``geometry`` Point geometry of the vertex." +msgid "" +"pgr_bdDijkstraCost(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" msgstr "" -msgid "Usage when the edge table's columns MATCH the default values:" +msgid "" +"pgr_bdDijkstraCost(`Edges SQL`_, **start vids**, **end vid** , " +"[``directed``])" msgstr "" -msgid "The simplest way to use pgr_analyzeGraph is:" +msgid "" +"pgr_bdDijkstraCost(`Edges SQL`_, **start vids**, **end vids**, " +"[``directed``])" msgstr "" -msgid "Arguments are given in the order described in the parameters:" +msgid "pgr_bdDijkstraCost(`Edges SQL`_, `Combinations SQL`_, [ ``directed``])" msgstr "" -msgid "We get the same result as the simplest way to use the function." +msgid "pgr_bdDijkstraCost(`Edges SQL`_, `Combinations SQL`_, [``directed``])" msgstr "" -msgid "An error would occur when" +msgid "``pgr_bdDijkstraCostMatrix``" msgstr "" -msgid "the arguments are not given in the appropriate order:" +msgid "" +"``pgr_bdDijkstraCostMatrix`` - Calculates a cost matrix using :doc:" +"`pgr_bdDijkstra`." msgstr "" msgid "" -"In this example, the column ``id`` of the table ``mytable`` is passed to the " -"function as the geometry column, and the geometry column ``the_geom`` is " -"passed to the function as the id column." +"Using bidirectional Dijkstra algorithm, calculate and return a cost matrix." msgstr "" -msgid "When using the named notation" +msgid "pgr_bdDijkstraCostMatrix(`Edges SQL`_, **start vids**, [``directed``])" msgstr "" -msgid "The order of the parameters do not matter:" +msgid "" +"Symmetric cost matrix for vertices :math:`\\{5, 6, 10, 15\\}` on an " +"**undirected** graph" msgstr "" -msgid "" -"Parameters defined with a default value can be omitted, as long as the value " -"matches the default:" +msgid "Use with :doc:`pgr_TSP`." msgstr "" -msgid "Selecting rows using rows_where parameter" +msgid "``pgr_bellmanFord - Experimental``" msgstr "" -msgid "" -"Selecting rows based on the id. Displays the analysis a the section of the " -"network." +msgid "``pgr_bellmanFord`` — Shortest path using Bellman-Ford algorithm." msgstr "" -msgid "" -"Selecting the rows where the geometry is near the geometry of row with " -"``id`` = 5" +msgid "New experimental signature:" +msgstr "" + +msgid "pgr_bellmanFord(Combinations)" msgstr "" msgid "" -"Selecting the rows where the geometry is near the geometry of the row with " -"``gid`` =100 of the table ``othertable``." +"Bellman-Ford's algorithm, is named after Richard Bellman and Lester Ford, " +"who first published it in 1958 and 1956, respectively.It is a graph search " +"algorithm that computes shortest paths from a starting vertex " +"(``start_vid``) to an ending vertex (``end_vid``) in a graph where some of " +"the edge weights may be negative. Though it is more versatile, it is slower " +"than Dijkstra's algorithm.This implementation can be used with a directed " +"graph and an undirected graph." msgstr "" -msgid "Usage when the edge table's columns DO NOT MATCH the default values:" +msgid "" +"Process is valid for edges with both positive and negative edge weights." msgstr "" -msgid "For the following table" +msgid "" +"When the start vertex and the end vertex are the same, there is no path. The " +"agg_cost would be :math:`0`." msgstr "" -msgid "Using positional notation:" +msgid "" +"When the start vertex and the end vertex are different, and there exists a " +"path between them without having a *negative cycle*. The agg_cost would be " +"some finite value denoting the shortest distance between them." msgstr "" msgid "" -"The arguments need to be given in the order described in the parameters:" +"When the start vertex and the end vertex are different, and there exists a " +"path between them, but it contains a *negative cycle*. In such case, " +"agg_cost for those vertices keep on decreasing furthermore, Hence agg_cost " +"can’t be defined for them." msgstr "" msgid "" -"An error would occur when the arguments are not given in the appropriate " -"order: In this example, the column ``gid`` of the table ``mytable`` is " -"passed to the function as the geometry column, and the geometry column " -"``mygeom`` is passed to the function as the id column." +"When the start vertex and the end vertex are different, and there is no " +"path. The agg_cost is :math:`\\infty`." msgstr "" msgid "" -"In this scenario omitting a parameter would create an error because the " -"default values for the column names do not match the column names of the " -"table." +"For optimization purposes, any duplicated value in the `start_vids` or " +"`end_vids` are ignored." msgstr "" -msgid "Selecting rows based on the id." +msgid "Running time: :math:`O(| start\\_vids | * ( V * E))`" msgstr "" msgid "" -"Selecting the rows WHERE the geometry is near the geometry of row with " -"``id`` =5 ." +"pgr_bellmanFord(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" msgstr "" msgid "" -"Selecting the rows WHERE the geometry is near the place='myhouse' of the " -"table ``othertable``. (note the use of quote_literal)" +"pgr_bellmanFord(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" msgstr "" -msgid "The examples use the :doc:`sampledata` network." +msgid "" +"pgr_bellmanFord(`Edges SQL`_, **start vids**, **end vid**, [``directed``])" msgstr "" -msgid ":doc:`pgr_analyzeOneWay`" -msgstr ":doc:`pgr_analyzeOneWay`" - -msgid ":doc:`pgr_createVerticesTable`" -msgstr ":doc:`pgr_createVerticesTable`" - -msgid ":doc:`pgr_nodeNetwork` to create nodes to a not noded edge table." +msgid "" +"pgr_bellmanFord(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" msgstr "" -msgid "pgr_analyzeOneWay" +msgid "pgr_bellmanFord(`Edges SQL`_, `Combinations SQL`_, [``directed``])" msgstr "" msgid "" -"``pgr_analyzeOneWay`` — Analyzes oneway Sstreets and identifies flipped " -"segments." +"From vertex :math:`6` to vertices :math:`\\{ 10, 17\\}` on a **directed** " +"graph" msgstr "" -msgid "" -"This function analyzes oneway streets in a graph and identifies any flipped " -"segments." +msgid "Using a combinations table on an **undirected** graph." msgstr "" msgid "" -"The analyses of one way segments is pretty simple but can be a powerful " -"tools to identifying some the potential problems created by setting the " -"direction of a segment the wrong way. A node is a `source` if it has edges " -"the exit from that node and no edges enter that node. Conversely, a node is " -"a `sink` if all edges enter the node but none exit that node. For a `source` " -"type node it is logically impossible to exist because no vehicle can exit " -"the node if no vehicle and enter the node. Likewise, if you had a `sink` " -"node you would have an infinite number of vehicle piling up on this node " -"because you can enter it but not leave it." +"`Boost: Bellman Ford `__" msgstr "" -msgid "" -"So why do we care if the are not feasible? Well if the direction of an edge " -"was reversed by mistake we could generate exactly these conditions. Think " -"about a divided highway and on the north bound lane one segment got entered " -"wrong or maybe a sequence of multiple segments got entered wrong or maybe " -"this happened on a round-about. The result would be potentially a `source` " -"and/or a `sink` node." +msgid "https://en.wikipedia.org/wiki/Bellman%E2%80%93Ford_algorithm" msgstr "" -msgid "" -"So by counting the number of edges entering and exiting each node we can " -"identify both `source` and `sink` nodes so that you can look at those areas " -"of your network to make repairs and/or report the problem back to your data " -"vendor." +msgid "``pgr_betweennessCentrality`` - Experimental" msgstr "" msgid "" -"pgr_analyzeOneWay(**geom_table**, **s_in_rules**, **s_out_rules**, " -"**t_in_rules**, **t_out_rules**, [**options**])" -msgstr "" - -msgid "**options:** ``[oneway, source, target, two_way_if_null]``" +"``pgr_betweennessCentrality`` - Calculates the relative betweenness " +"centrality using Brandes Algorithm" msgstr "" -msgid "RETURNS ``TEXT``" +msgid "Version 3.7.0" msgstr "" -msgid "s_in_rules" +msgid "" +"The Brandes Algorithm takes advantage of the sparse graphs for evaluating " +"the betweenness centrality score of all vertices." msgstr "" -msgid "``text[]`` source node **in** rules" +msgid "" +"Betweenness centrality measures the extent to which a vertex lies on the " +"shortest paths between all other pairs of vertices. Vertices with a high " +"betweenness centrality score may have considerable influence in a network by " +"the virtue of their control over the shortest paths passing between them." msgstr "" -msgid "s_out_rules" +msgid "" +"The removal of these vertices will affect the network by disrupting the it, " +"as most of the shortest paths between vertices pass through them." msgstr "" -msgid "``text[]`` source node **out** rules" -msgstr "" +#, fuzzy +msgid "This implementation work for both directed and undirected graphs." +msgstr ":doc:`pgr_bridges` - 무방향 그래프의 브릿지." -msgid "t_in_rules" +msgid "Running time: :math:`\\Theta(VE)`" msgstr "" -msgid "``text[]`` target node **in** rules" +msgid "Running space: :math:`\\Theta(VE)`" msgstr "" -msgid "t_out_rules" +msgid "Throws when there are no edges in the graph" msgstr "" -msgid "``text[]`` target node **out** rules" +msgid "pgr_betweennessCentrality(`Edges SQL`_, [``directed``])" msgstr "" -msgid "oneway" +msgid "Returns set of ``(vid, centrality)``" msgstr "" -msgid "" -"``text`` oneway column name name of the network table. Default value is " -"``oneway``." +msgid "For a directed graph with edges :math:`\\{1, 2, 3, 4\\}`." msgstr "" -msgid "two_way_if_null" +msgid "Explanation" msgstr "" -msgid "" -"``boolean`` flag to treat oneway NULL values as bi-directional. Default " -"value is ``true``." +msgid "The betweenness centrality are between parenthesis." msgstr "" -msgid "" -"It is strongly recommended to use the named notation. See :doc:" -"`pgr_createVerticesTable` or :doc:`pgr_createTopology` for examples." +msgid "The leaf vertices have betweenness centrality :math:`0`." msgstr "" msgid "" -"Fills completely the ``ein`` and ``eout`` columns of the vertices table." -msgstr "" - -msgid "The names of source , target or oneway are the same." +"Betweenness centrality of vertex :math:`6` is higher than of vertex :math:" +"`10`." msgstr "" -msgid "" -"The rules are defined as an array of text strings that if match the " -"``oneway`` value would be counted as ``true`` for the source or target " -"**in** or **out** condition." +msgid "Removing vertex :math:`6` will create three graph components." msgstr "" -msgid "" -"The vertices table can be created with :doc:`pgr_createVerticesTable` or :" -"doc:`pgr_createTopology`" +msgid "Removing vertex :math:`10` will create two graph components." msgstr "" -msgid "" -"``integer`` Number of vertices in the edge_table that reference this vertex. " -"See :doc:`pgr_analyzeGgraph `." +msgid "``vid``" msgstr "" -msgid "" -"``integer`` Indicator that the vertex might have a problem. See :doc:" -"`pgr_analyzeGraph `." +msgid "``centrality``" msgstr "" msgid "" -"``integer`` Number of vertices in the edge_table that reference this vertex " -"as incoming." +"Relative betweenness centrality score of the vertex (will be in range [0,1])" msgstr "" msgid "" -"``integer`` Number of vertices in the edge_table that reference this vertex " -"as outgoing." +"`Boost: betweenness centrality `_" msgstr "" -msgid ":doc:`pgr_analyzeGraph`" -msgstr ":doc:`pgr_analyzeGraph`" - -msgid "``pgr_articulationPoints``" +msgid "``pgr_biconnectedComponents``" msgstr "" msgid "" -"``pgr_articulationPoints`` - Return the articulation points of an undirected " +"``pgr_biconnectedComponents`` — Biconnected components of an undirected " "graph." msgstr "" -msgid "Result columns change: ``seq`` is removed" -msgstr "" +#, fuzzy +msgid "Result columns change:" +msgstr "결과 컬럼" -msgid "Version 2.5.0" +msgid "``n_seq`` is removed" msgstr "" -msgid "New **experimental** function" +msgid "``seq`` changed type to ``BIGINT``" msgstr "" msgid "" -"Those vertices that belong to more than one biconnected component are called " -"articulation points or, equivalently, cut vertices. Articulation points are " -"vertices whose removal would increase the number of connected components in " -"the graph. This implementation can only be used with an undirected graph." +"The biconnected components of an undirected graph are the maximal subsets of " +"vertices such that the removal of a vertex from particular component will " +"not disconnect the component. Unlike connected components, vertices may " +"belong to multiple biconnected components. Vertices can be present in " +"multiple biconnected components, but each edge can only be contained in a " +"single biconnected component." msgstr "" -msgid "Works for **undirected** graphs." +msgid "Components are described by edges." msgstr "" -msgid "``node`` ascending" +msgid "``component`` ascending." msgstr "" -msgid "Running time: :math:`O(V + E)`" +msgid "``edge`` ascending." msgstr "" -msgid "pgr_articulationPoints(`Edges SQL`_)" +msgid "pgr_biconnectedComponents(`Edges SQL`_)" msgstr "" -msgid "Returns set of |result-node|" +msgid "Returns set of |result-component-E|" msgstr "" -msgid "The articulation points of the graph" +msgid "The biconnected components of the graph" msgstr "" -msgid "Nodes in red are the articulation points." +msgid "``component``" msgstr "" -msgid "" -"Boost: `Biconnected components & articulation points `__" +msgid "Component identifier." msgstr "" -msgid "" -"wikipedia: `Biconnected component `__" +msgid "Has the value of the minimum edge identifier in the component." msgstr "" -msgid "``pgr_bdAstar``" +msgid "Identifier of the edge that belongs to the ``component``." msgstr "" -msgid "``pgr_bdAstar`` — Shortest path using the bidirectional A* algorithm." +msgid "``pgr_binaryBreadthFirstSearch`` - Experimental" msgstr "" msgid "" -"``pgr_bdAstar`` (`One to One`_) added ``start_vid`` and ``end_vid`` columns." -msgstr "" - -msgid "``pgr_bdAstar`` (`One to Many`_) added ``end_vid`` column." +"``pgr_binaryBreadthFirstSearch`` — Returns the shortest path in a binary " +"graph." msgstr "" -msgid "``pgr_bdAstar`` (`Many to One`_) added ``start_vid`` column." +msgid "" +"Any graph whose edge-weights belongs to the set {0,X}, where 'X' is any non-" +"negative integer, is termed as a 'binary graph'." msgstr "" -msgid "``pgr_bdAstar`` (`Combinations`_)" +msgid "pgr_binaryBreadthFirstSearch(Combinations)" msgstr "" -msgid "``pgr_bdAstar`` (`One to Many`_)" +msgid "" +"It is well-known that the shortest paths between a single source and all " +"other vertices can be found using Breadth First Search in :math:`O(|E|)` in " +"an unweighted graph, i.e. the distance is the minimal number of edges that " +"you need to traverse from the source to another vertex. We can interpret " +"such a graph also as a weighted graph, where every edge has the weight :math:" +"`1`. If not alledges in graph have the same weight, that we need a more " +"general algorithm, like Dijkstra's Algorithm which runs in :math:`O(|E|log|" +"V|)` time." msgstr "" -msgid "``pgr_bdAstar`` (`Many to One`_)" +msgid "" +"However if the weights are more constrained, we can use a faster algorithm. " +"This algorithm, termed as 'Binary Breadth First Search' as well as '0-1 " +"BFS', is a variation of the standard Breadth First Search problem to solve " +"the SSSP (single-source shortest path) problem in :math:`O(|E|)`, if the " +"weights of each edge belongs to the set {0,X}, where 'X' is any non-negative " +"real integer." msgstr "" -msgid "``pgr_bdAstar`` (`Many to Many`_)" +msgid "" +"Process is done only on 'binary graphs'. ('Binary Graph': Any graph whose " +"edge-weights belongs to the set {0,X}, where 'X' is any non-negative real " +"integer.)" msgstr "" -msgid "Signature change on ``pgr_bdAstar`` (`One to One`_)" +msgid "Running time: :math:`O(| start\\_vids | * |E|)`" msgstr "" -msgid "**Official** ``pgr_bdAstar`` (`One to One`_)" +msgid "" +"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vid**, **end vid**, " +"[``directed``])" msgstr "" msgid "" -"The results are equivalent to the union of the results of the `pgr_bdAStar(` " -"`One to One`_ `)` on the:" +"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vid**, **end vids**, " +"[``directed``])" msgstr "" -msgid "pgr_bdAstar(`Edges SQL`_, **start vid**, **end vid**, [**options**])" +msgid "" +"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vids**, **end vid**, " +"[``directed``])" msgstr "" -msgid "pgr_bdAstar(`Edges SQL`_, **start vid**, **end vids**, [**options**])" +msgid "" +"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vids**, **end vids**, " +"[``directed``])" msgstr "" -msgid "pgr_bdAstar(`Edges SQL`_, **start vids**, **end vid**, [**options**])" +msgid "" +"pgr_binaryBreadthFirstSearch(`Edges SQL`_, `Combinations SQL`_, " +"[``directed``])" msgstr "" -msgid "pgr_bdAstar(`Edges SQL`_, **start vids**, **end vids**, [**options**])" +msgid "" +"**Note:** Using the :doc:`sampledata` Network as all weights are same (i.e :" +"math:`1``)" msgstr "" -msgid "pgr_bdAstar(`Edges SQL`_, `Combinations SQL`_, [**options**])" +msgid "" +"`Boost: Breadth First Search `__" msgstr "" -msgid "pgr_bdAstarCost" +msgid "https://cp-algorithms.com/graph/01_bfs.html" msgstr "" msgid "" -"``pgr_bdAstarCost`` - Total cost of the shortest path using the " -"bidirectional A* algorithm." +"https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm#Specialized_variants" msgstr "" -msgid "``pgr_bdAstarCost`` (`Combinations`_)" +msgid "``pgr_bipartite`` - Experimental" msgstr "" msgid "" -"The ``pgr_bdAstarCost`` function sumarizes of the cost of the shortest path " -"using the bidirectional A* algorithm." +"``pgr_bipartite`` — Disjoint sets of vertices such that no two vertices " +"within the same set are adjacent." msgstr "" msgid "" -"pgr_bdAstarCost(`Edges SQL`_, **start vid**, **end vid**, [**options**])" +"A bipartite graph is a graph with two sets of vertices which are connected " +"to each other, but not within themselves. A bipartite graph is possible if " +"the graph coloring is possible using two colors such that vertices in a set " +"are colored with the same color." msgstr "" -msgid "" -"pgr_bdAstarCost(`Edges SQL`_, **start vid**, **end vids**, [**options**])" +msgid "The algorithm works in undirected graph only." msgstr "" -msgid "" -"pgr_bdAstarCost(`Edges SQL`_, **start vids**, **end vid**, [**options**])" +msgid "The returned values are not ordered." msgstr "" msgid "" -"pgr_bdAstarCost(`Edges SQL`_, **start vids**, **end vids**, [**options**])" +"The algorithm checks graph is bipartite or not. If it is bipartite then it " +"returns the node along with two colors `0` and `1` which represents two " +"different sets." msgstr "" -msgid "pgr_bdAstarCost(`Edges SQL`_, `Combinations SQL`_, [**options**])" +msgid "If graph is not bipartite then algorithm returns empty set." msgstr "" -msgid "``pgr_bdAstarCostMatrix``" +msgid "pgr_bipartite(`Edges SQL`_)" msgstr "" -msgid "" -"``pgr_bdAstarCostMatrix`` - Calculates the a cost matrix using :doc:" -"`pgr_aStar`." +msgid "Returns set of |result-node-color|" msgstr "" -msgid "Using internaly the :doc:`pgr_bdAstar` algorithm" +msgid "When the graph is bipartite" msgstr "" -msgid "pgr_bdAstarCostMatrix(`Edges SQL`_, **start vids**, [**options**])" +msgid "Additional Example" msgstr "" -msgid "``pgr_bdDijkstra``" +msgid "The odd length cyclic graph can not be bipartite." msgstr "" -#, fuzzy msgid "" -"``pgr_bdDijkstra`` — Returns the shortest path using Bidirectional Dijkstra " -"algorithm." -msgstr ":doc:`pgr_bdDijkstra` - 최단 경로를 위한 양방향 다익스트라 알고리즘." +"The edge :math:`5 \\rightarrow 1` will make subgraph with vertices :math:" +"`\\{1, 3, 7, 6, 5\\}` an odd length cyclic graph, as the cycle has 5 " +"vertices." +msgstr "" + +msgid "Edges in blue represent odd length cycle subgraph." +msgstr "" -msgid "pgr_bdDijkstra(`Combinations`_)" +msgid "" +"`Boost: is_bipartite `__" msgstr "" -msgid "New **Proposed** functions:" +msgid "" +"`Wikipedia: bipartite graph `__" msgstr "" -msgid "``pgr_bdDijkstra`` (`One to Many`_)" +msgid "``pgr_boykovKolmogorov``" msgstr "" -msgid "``pgr_bdDijkstra`` (`Many to One`_)" +msgid "" +"``pgr_boykovKolmogorov`` — Calculates the flow on the graph edges that " +"maximizes the flow from the sources to the targets using Boykov Kolmogorov " +"algorithm." msgstr "" -msgid "``pgr_bdDijkstra`` (`Many to Many`_)" +msgid "Renamed from ``pgr_maxFlowBoykovKolmogorov``" msgstr "" -msgid "Signature change on ``pgr_bdDijsktra`` (`One to One`_)" +msgid "Function promoted to proposed." msgstr "" -msgid "**Official** ``pgr_bdDijkstra`` (`One to One`_)" +msgid "Running time: Polynomial" msgstr "" -msgid "" -"pgr_bdDijkstra(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" +msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vid**, **end vid**)" msgstr "" -msgid "" -"pgr_bdDijkstra(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" +msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vid**, **end vids**)" msgstr "" -msgid "" -"pgr_bdDijkstra(`Edges SQL`_, **start vids**, **end vid**, [``directed``])" +msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vids**, **end vid**)" msgstr "" -msgid "" -"pgr_bdDijkstra(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" +msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vids**, **end vids**)" msgstr "" -msgid "pgr_bdDijkstra(`Edges SQL`_, `Combinations SQL`_, [``directed``])" +msgid "pgr_boykovKolmogorov(`Edges SQL`_, `Combinations SQL`_)" msgstr "" -msgid "Returns set of |old-generic-result|" +msgid "Returns set of |result-flow|" msgstr "" -msgid "Returns set of |result-1-1|" +msgid "From vertex :math:`11` to vertex :math:`12`" msgstr "" -msgid "From vertex :math:`6` to vertex :math:`10` on a **directed** graph" +msgid "From vertex :math:`11` to vertices :math:`\\{5, 10, 12\\}`" msgstr "" -msgid "Returns set of |result-1-m|" +msgid "From vertices :math:`\\{11, 3, 17\\}` to vertex :math:`12`" msgstr "" msgid "" -"From vertex :math:`6` to vertices :math:`\\{10, 17\\}` on a **directed** " -"graph" +"From vertices :math:`\\{11, 3, 17\\}` to vertices :math:`\\{5, 10, 12\\}`" msgstr "" -msgid "Returns set of |result-m-1|" +msgid "" +"Using a combinations table, equivalent to calculating result from vertices :" +"math:`\\{5, 6\\}` to vertices :math:`\\{10, 15, 14\\}`." msgstr "" msgid "" -"From vertices :math:`\\{6, 1\\}` to vertex :math:`17` on a **directed** graph" +"`Boost: Boykov Kolmogorov max flow `__" msgstr "" -msgid "" -"From vertices :math:`\\{6, 1\\}` to vertices :math:`\\{10, 17\\}` on an " -"**undirected** graph" +msgid "``pgr_breadthFirstSearch`` - Experimental" msgstr "" -msgid "Using a combinations table on an **undirected** graph" +msgid "" +"``pgr_breadthFirstSearch`` — Returns the traversal order(s) using Breadth " +"First Search algorithm." msgstr "" msgid "" -"https://www.cs.princeton.edu/courses/archive/spr06/cos423/Handouts/" -"EPP%20shortest%20path%20algorithms.pdf" +"Provides the Breadth First Search traversal order from a root vertex to a " +"particular depth." msgstr "" -msgid "https://en.wikipedia.org/wiki/Bidirectional_search" +msgid "The implementation will work on any type of graph." msgstr "" -msgid "``pgr_bdDijkstraCost``" +msgid "" +"Provides the Breadth First Search traversal order from a source node to a " +"target depth level." msgstr "" -msgid "" -"``pgr_bdDijkstraCost`` — Returns the shortest path's cost using " -"Bidirectional Dijkstra algorithm." +msgid "Running time: :math:`O(E + V)`" msgstr "" -msgid "``pgr_bdDijkstraCost`` (`Combinations`_)" +msgid "pgr_breadthFirstSearch(`Edges SQL`_, **root vid**, [**options**])" msgstr "" -msgid "" -"The ``pgr_bdDijkstraCost`` function sumarizes of the cost of the shortest " -"path using the bidirectional Dijkstra Algorithm." +msgid "pgr_breadthFirstSearch(`Edges SQL`_, **root vids**, [**options**])" msgstr "" -msgid "" -"pgr_bdDijkstraCost(`Edges SQL`_, **start vid**, **end vid** , [``directed``])" +msgid "**options:** ``[max_depth, directed]``" msgstr "" -msgid "" -"pgr_bdDijkstraCost(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" +msgid "Returns set of |result-bfs|" msgstr "" msgid "" -"pgr_bdDijkstraCost(`Edges SQL`_, **start vids**, **end vid** , " -"[``directed``])" +"From root vertex :math:`6` on a **directed** graph with edges in ascending " +"order of ``id``" msgstr "" msgid "" -"pgr_bdDijkstraCost(`Edges SQL`_, **start vids**, **end vids**, " -"[``directed``])" +"From root vertices :math:`\\{12, 6\\}` on an **undirected** graph with " +"**depth** :math:`<= 2` and edges in ascending order of ``id``" msgstr "" -msgid "pgr_bdDijkstraCost(`Edges SQL`_, `Combinations SQL`_, [ ``directed``])" +msgid "DFS optional parameters" msgstr "" -msgid "pgr_bdDijkstraCost(`Edges SQL`_, `Combinations SQL`_, [``directed``])" +msgid "Same as `Single vertex`_ with edges in ascending order of ``id``." msgstr "" -msgid "``pgr_bdDijkstraCostMatrix``" +msgid "Same as `Single vertex`_ with edges in descending order of ``id``." msgstr "" -msgid "" -"``pgr_bdDijkstraCostMatrix`` - Calculates a cost matrix using :doc:" -"`pgr_bdDijkstra`." +msgid "The resulting traversal is different." msgstr "" msgid "" -"Using bidirectional Dijkstra algorithm, calculate and return a cost matrix." +"The left image shows the result with ascending order of ids and the right " +"image shows with descending order of the edge identifiers." msgstr "" -msgid "pgr_bdDijkstraCostMatrix(`Edges SQL`_, **start vids**, [``directed``])" +msgid "|ascending| |descending|" msgstr "" -msgid "" -"Symmetric cost matrix for vertices :math:`\\{5, 6, 10, 15\\}` on an " -"**undirected** graph" +msgid "ascending" msgstr "" -msgid "Use with :doc:`pgr_TSP`." +msgid "descending" msgstr "" -msgid "``pgr_bellmanFord - Experimental``" +msgid "" +"`Wikipedia: Breadth First Search algorithm `__" msgstr "" -msgid "``pgr_bellmanFord`` — Shortest path using Bellman-Ford algorithm." +msgid "``pgr_bridges``" msgstr "" -msgid "New **experimental** signature:" +msgid "``pgr_bridges`` - Return the bridges of an undirected graph." msgstr "" -msgid "``pgr_bellmanFord`` (`Combinations`_)" +msgid "" +"A bridge is an edge of an undirected graph whose deletion increases its " +"number of connected components. This implementation can only be used with an " +"undirected graph." msgstr "" -msgid "New **experimental** signatures:" +msgid "``edge`` ascending" msgstr "" -msgid "``pgr_bellmanFord`` (`One to One`_)" +msgid "Running time: :math:`O(E * (V + E))`" msgstr "" -msgid "``pgr_bellmanFord`` (`One to Many`_)" +msgid "pgr_bridges(`Edges SQL`_)" msgstr "" -msgid "``pgr_bellmanFord`` (`Many to One`_)" +msgid "Returns set of |result-edge|" msgstr "" -msgid "``pgr_bellmanFord`` (`Many to Many`_)" +msgid "The bridges of the graph" msgstr "" -msgid "" -"Bellman-Ford's algorithm, is named after Richard Bellman and Lester Ford, " -"who first published it in 1958 and 1956, respectively.It is a graph search " -"algorithm that computes shortest paths from a starting vertex " -"(``start_vid``) to an ending vertex (``end_vid``) in a graph where some of " -"the edge weights may be negative. Though it is more versatile, it is slower " -"than Dijkstra's algorithm.This implementation can be used with a directed " -"graph and an undirected graph." +msgid "Identifier of the edge that is a bridge." msgstr "" -msgid "" -"Process is valid for edges with both positive and negative edge weights." +msgid "https://en.wikipedia.org/wiki/Bridge_%28graph_theory%29" msgstr "" msgid "" -"When the start vertex and the end vertex are the same, there is no path. The " -"agg_cost would be :math:`0`." +"`Boost: Connected components `__" msgstr "" -msgid "" -"When the start vertex and the end vertex are different, and there exists a " -"path between them without having a *negative cycle*. The agg_cost would be " -"some finite value denoting the shortest distance between them." +msgid "``pgr_chinesePostman`` - Experimental" msgstr "" msgid "" -"When the start vertex and the end vertex are different, and there exists a " -"path between them, but it contains a *negative cycle*. In such case, " -"agg_cost for those vertices keep on decreasing furthermore, Hence agg_cost " -"can’t be defined for them." +"``pgr_chinesePostman`` — Calculates the shortest circuit path which contains " +"every edge in a directed graph and starts and ends on the same vertex." msgstr "" -msgid "" -"When the start vertex and the end vertex are different, and there is no " -"path. The agg_cost is :math:`\\infty`." +msgid "Returns ``EMPTY SET`` on a disconnected graph" msgstr "" -msgid "" -"For optimization purposes, any duplicated value in the `start_vids` or " -"`end_vids` are ignored." +msgid "pgr_chinesePostman(`Edges SQL`_)" msgstr "" -msgid "Running time: :math:`O(| start\\_vids | * ( V * E))`" +msgid "Returns set of |result-1-1-no-seq|" msgstr "" -msgid "" -"pgr_bellmanFord(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" +msgid "Returns set of ``(seq, node, edge, cost, agg_cost)``" msgstr "" -msgid "" -"pgr_bellmanFord(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" +msgid "Sequential value starting from ``1``" msgstr "" msgid "" -"pgr_bellmanFord(`Edges SQL`_, **start vids**, **end vid**, [``directed``])" +"Identifier of the edge used to go from ``node`` to the next node in the path " +"sequence. ``-1`` for the last node of the path." msgstr "" -msgid "" -"pgr_bellmanFord(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" +msgid "Aggregate cost from ``start_v`` to ``node``." msgstr "" -msgid "pgr_bellmanFord(`Edges SQL`_, `Combinations SQL`_, [``directed``])" +msgid "``pgr_chinesePostmanCost`` - Experimental" msgstr "" msgid "" -"From vertex :math:`6` to vertices :math:`\\{ 10, 17\\}` on a **directed** " -"graph" +"``pgr_chinesePostmanCost`` — Calculates the minimum costs of a circuit path " +"which contains every edge in a directed graph and starts and ends on the " +"same vertex." msgstr "" -msgid "Using a combinations table on an **undirected** graph." +msgid "Return value when the graph if disconnected" msgstr "" -msgid "https://en.wikipedia.org/wiki/Bellman%E2%80%93Ford_algorithm" +msgid "pgr_chinesePostmanCost(`Edges SQL`_)" msgstr "" -msgid "``pgr_betweennessCentrality``" +msgid "RETURNS ``FLOAT``" msgstr "" -msgid "" -"``pgr_betweennessCentrality`` - Calculates the relative betweeness " -"centrality using Brandes Algorithm" +msgid "``pgr_chinesepostmancost``" msgstr "" -msgid "Version 3.7.0" +msgid "Minimum costs of a circuit path." msgstr "" -msgid "New **experimental** function:" +msgid "``pgr_connectedComponents``" msgstr "" msgid "" -"The Brandes Algorithm takes advantage of the sparse graphs for evaluating " -"the betweenness centrality score of all vertices." +"``pgr_connectedComponents`` — Connected components of an undirected graph " +"using a DFS-based approach." msgstr "" msgid "" -"Betweenness centrality measures the extent to which a vertex lies on the " -"shortest paths between all other pairs of vertices. Vertices with a high " -"betweenness centrality score may have considerable influence in a network by " -"the virtue of their control over the shortest paths passing between them." +"A connected component of an undirected graph is a set of vertices that are " +"all reachable from each other." msgstr "" -msgid "" -"The removal of these vertices will affect the network by disrupting the it, " -"as most of the shortest paths between vertices pass through them." +msgid "Components are described by vertices" msgstr "" -#, fuzzy -msgid "This implementation work for both directed and undirected graphs." -msgstr ":doc:`pgr_bridges` - 무방향 그래프의 브릿지." - -msgid "Running time: :math:`\\Theta(VE)`" +msgid "``component`` ascending" msgstr "" -msgid "Running space: :math:`\\Theta(VE)`" +msgid "pgr_connectedComponents(`Edges SQL`_)" msgstr "" -msgid "Throws when there are no edges in the graph" +msgid "Returns set of |result-component-V|" msgstr "" -msgid "pgr_betweennessCentrality(`Edges SQL`_, [``directed``])" +msgid "The connected components of the graph" msgstr "" -msgid "Returns set of ``(vid, centrality)``" +msgid "Has the value of the minimum node identifier in the component." msgstr "" -msgid "For a directed graph with edges :math:`\\{1, 2, 3, 4\\}`." +msgid "Identifier of the vertex that belongs to the ``component``." msgstr "" -msgid "Explanation" +msgid "Connecting disconnected components" msgstr "" -msgid "The betweenness centrality are between parenthesis." +msgid "" +"wikipedia: `Connected component `__" msgstr "" -msgid "The leaf vertices have betweenness centrality :math:`0`." +msgid "``pgr_contraction``" msgstr "" msgid "" -"Betweenness centrality of vertex :math:`6` is higher than of vertex :math:" -"`10`." +"``pgr_contraction`` — Performs graph contraction and returns the contracted " +"vertices and edges." msgstr "" -msgid "Removing vertex :math:`6` will create three graph components." +msgid "Version 3.8.0" msgstr "" -msgid "Removing vertex :math:`10` will create two graph components." +msgid "New signature:" msgstr "" -msgid "``vid``" +msgid "" +"Previously compulsory parameter **Contraction order** is now optional with " +"name ``methods``." msgstr "" -msgid "``centrality``" +msgid "New name and order of optional parameters." msgstr "" msgid "" -"Relative betweenness centrality score of the vertex (will be in range [0,1])" +"Deprecated signature pgr_contraction(text,bigint[],integer,bigint[],boolean)" msgstr "" -msgid "" -"Boost's `betweenness_centrality `_" +msgid "Name change from ``pgr_contractGraph``" msgstr "" -msgid "Queries use the :doc:`sampledata` network." +msgid "Bug fixes" msgstr "" -msgid "``pgr_biconnectedComponents``" +msgid "" +"Contraction reduces the size of the graph by removing some of the vertices " +"and edges and, for example, might add edges that represent a sequence of " +"original edges decreasing the total time and space used in graph algorithms." msgstr "" -msgid "" -"``pgr_biconnectedComponents`` — Biconnected components of an undirected " -"graph." +msgid "Does not return the full contracted graph." msgstr "" -#, fuzzy -msgid "Result columns change:" -msgstr "결과 컬럼" +msgid "Only changes on the graph are returned." +msgstr "" -msgid "``n_seq`` is removed" +msgid "The returned values include:" msgstr "" -msgid "``seq`` changed type to ``BIGINT``" +msgid "The new edges generated by linear contraction." msgstr "" -msgid "" -"The biconnected components of an undirected graph are the maximal subsets of " -"vertices such that the removal of a vertex from particular component will " -"not disconnect the component. Unlike connected components, vertices may " -"belong to multiple biconnected components. Vertices can be present in " -"multiple biconnected components, but each edge can only be contained in a " -"single biconnected component." +msgid "The modified vertices generated by dead end contraction." msgstr "" -msgid "Components are described by edges." +msgid "The returned values are ordered as follows:" msgstr "" -msgid "``component`` ascending." +msgid "column ``id`` ascending when its a modified vertex." msgstr "" -msgid "``edge`` ascending." +msgid "column ``id`` with negative numbers descending when its a new edge." msgstr "" -msgid "pgr_biconnectedComponents(`Edges SQL`_)" +msgid "" +"Currently there are two types of contraction methods included in this " +"function:" msgstr "" -msgid "Returns set of |result-component-E|" +msgid "Dead End Contraction. See :doc:`pgr_contractionDeadEnd`." msgstr "" -msgid "The biconnected components of the graph" +msgid "Linear Contraction. See :doc:`pgr_contractionLinear`." msgstr "" -msgid "``component``" +msgid "pgr_contraction(`Edges SQL`_, [**options**])" msgstr "" -msgid "Component identifier." +msgid "**options:** ``[directed, methods, cycles, forbidden]``" msgstr "" -msgid "Has the value of the minimum edge identifier in the component." +msgid "Returns set of |result-contract|" msgstr "" -msgid "Identifier of the edge that belongs to the ``component``." +msgid "Dead end and linear contraction in that order on an undirected graph." msgstr "" -msgid "" -"Boost: `Biconnected components `__" +msgid "Contraction optional parameters" msgstr "" -msgid "``pgr_binaryBreadthFirstSearch`` - Experimental" +msgid "``methods``" msgstr "" -msgid "" -"``pgr_binaryBreadthFirstSearch`` — Returns the shortest path in a binary " -"graph." +msgid "``INTEGER[]``" msgstr "" -msgid "" -"Any graph whose edge-weights belongs to the set {0,X}, where 'X' is any non-" -"negative integer, is termed as a 'binary graph'." +msgid "``ARRAY[1,2]``" msgstr "" -msgid "pgr_binaryBreadthFirstSearch(`Combinations`_)" +msgid "Ordered contraction operations." msgstr "" -msgid "pgr_binaryBreadthFirstSearch(`One to One`_)" +msgid "1 = Dead end contraction" msgstr "" -msgid "pgr_binaryBreadthFirstSearch(`One to Many`_)" +msgid "2 = Linear contraction" msgstr "" -msgid "pgr_binaryBreadthFirstSearch(`Many to One`_)" +msgid "``cycles``" msgstr "" -msgid "pgr_binaryBreadthFirstSearch(`Many to Many`_)" +msgid ":math:`1`" msgstr "" -msgid "" -"It is well-known that the shortest paths between a single source and all " -"other vertices can be found using Breadth First Search in :math:`O(|E|)` in " -"an unweighted graph, i.e. the distance is the minimal number of edges that " -"you need to traverse from the source to another vertex. We can interpret " -"such a graph also as a weighted graph, where every edge has the weight :math:" -"`1`. If not alledges in graph have the same weight, that we need a more " -"general algorithm, like Dijkstra's Algorithm which runs in :math:`O(|E|log|" -"V|)` time." +msgid "Number of times the contraction methods will be performed." msgstr "" -msgid "" -"However if the weights are more constrained, we can use a faster algorithm. " -"This algorithm, termed as 'Binary Breadth First Search' as well as '0-1 " -"BFS', is a variation of the standard Breadth First Search problem to solve " -"the SSSP (single-source shortest path) problem in :math:`O(|E|)`, if the " -"weights of each edge belongs to the set {0,X}, where 'X' is any non-negative " -"real integer." +msgid "``forbidden``" msgstr "" -msgid "" -"Process is done only on 'binary graphs'. ('Binary Graph': Any graph whose " -"edge-weights belongs to the set {0,X}, where 'X' is any non-negative real " -"integer.)" +msgid "``BIGINT[]``" msgstr "" -msgid "Running time: :math:`O(| start\\_vids | * |E|)`" +msgid "``ARRAY[]::BIGINT[]``" msgstr "" -msgid "" -"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vid**, **end vid**, " -"[``directed``])" +msgid "Identifiers of vertices forbidden for contraction." msgstr "" -msgid "" -"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vid**, **end vids**, " -"[``directed``])" +msgid "The function returns a single row. The columns of the row are:" msgstr "" -msgid "" -"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vids**, **end vid**, " -"[``directed``])" +msgid "``type``" msgstr "" -msgid "" -"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vids**, **end vids**, " -"[``directed``])" +msgid "Type of the row." msgstr "" -msgid "" -"pgr_binaryBreadthFirstSearch(`Edges SQL`_, `Combinations SQL`_, " -"[``directed``])" +msgid "``v`` when the row is a vertex." msgstr "" -msgid "" -"**Note:** Using the :doc:`sampledata` Network as all weights are same (i.e :" -"math:`1``)" +msgid "Column ``id`` has a positive value." msgstr "" -msgid "https://cp-algorithms.com/graph/01_bfs.html" +msgid "``e`` when the row is an edge." msgstr "" -msgid "" -"https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm#Specialized_variants" +msgid "Column ``id`` has a negative value." msgstr "" -msgid "pgr_bipartite -Experimental" +msgid "All numbers on this column are ``DISTINCT``" msgstr "" -msgid "" -"``pgr_bipartite`` — Disjoint sets of vertices such that no two vertices " -"within the same set are adjacent." +msgid "When ``type`` = **'v'**." +msgstr "" + +msgid "Identifier of the modified vertex." msgstr "" -msgid "New **experimental** signature" +msgid "When ``type`` = **'e'**." +msgstr "" + +msgid "Decreasing sequence starting from **-1**." msgstr "" msgid "" -"A bipartite graph is a graph with two sets of vertices which are connected " -"to each other, but not within themselves. A bipartite graph is possible if " -"the graph coloring is possible using two colors such that vertices in a set " -"are colored with the same color." +"Representing a pseudo `id` as is not incorporated in the set of original " +"edges." msgstr "" -msgid "The algorithm works in undirected graph only." +msgid "``contracted_vertices``" msgstr "" -msgid "The returned values are not ordered." +msgid "Array of contracted vertex identifiers." msgstr "" -msgid "" -"The algorithm checks graph is bipartite or not. If it is bipartite then it " -"returns the node along with two colors `0` and `1` which represents two " -"different sets." +msgid "When ``type`` = **'v'**: :math:`-1`" msgstr "" -msgid "If graph is not bipartite then algorithm returns empty set." +msgid "" +"When ``type`` = **'e'**: Identifier of the source vertex of the current edge " +"(``source``, ``target``)." msgstr "" -msgid "pgr_bipartite(`Edges SQL`_)" +msgid "" +"When ``type`` = **'e'**: Identifier of the target vertex of the current edge " +"(``source``, ``target``)." msgstr "" -msgid "Returns set of |result-node-color|" +msgid "" +"When ``type`` = **'e'**: Weight of the current edge (``source``, ``target``)." msgstr "" -msgid "When the graph is bipartite" +msgid "Only dead end contraction" msgstr "" -msgid "Additional Example" +msgid "Only linear contraction" msgstr "" -msgid "The odd length cyclic graph can not be bipartite." +msgid "The cycle" msgstr "" msgid "" -"The edge :math:`5 \\rightarrow 1` will make subgraph with vertices :math:" -"`\\{1, 3, 7, 6, 5\\}` an odd length cyclic graph, as the cycle has 5 " -"vertices." +"Contracting a graph can be done with more than one operation. The order of " +"the operations affect the resulting contracted graph, after applying one " +"operation, the set of vertices that can be contracted by another operation " +"changes." msgstr "" -msgid "Edges in blue represent odd length cycle subgraph." +msgid "This implementation cycles ``cycles`` times through the ``methods`` ." msgstr "" -msgid "``pgr_boykovKolmogorov``" +msgid "Contracting sample data" msgstr "" msgid "" -"``pgr_boykovKolmogorov`` — Calculates the flow on the graph edges that " -"maximizes the flow from the sources to the targets using Boykov Kolmogorov " -"algorithm." +"In this section, building and using a contracted graph will be shown by " +"example." msgstr "" -msgid "New **proposed** signature" +msgid "The :doc:`sampledata` for an undirected graph is used" msgstr "" -msgid "``pgr_boykovKolmogorov`` (`Combinations`_)" +msgid "a dead end operation first followed by a linear operation." msgstr "" -msgid "Renamed from ``pgr_maxFlowBoykovKolmogorov``" +msgid "Construction of the graph in the database" msgstr "" -msgid "**Proposed** function" +msgid "The original graph:" msgstr "" -msgid "New **Experimental** function" +msgid "" +"The results do not represent the contracted graph. They represent the " +"changes that need to be done to the graph after applying the contraction " +"methods." msgstr "" -msgid "Running time: Polynomial" +msgid "" +"Observe that vertices, for example, :math:`6` do not appear in the results " +"because it was not affected by the contraction algorithm." msgstr "" -msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vid**, **end vid**)" +msgid "After doing the dead end contraction operation:" msgstr "" -msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vid**, **end vids**)" +msgid "After doing the linear contraction operation to the graph above:" msgstr "" -msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vids**, **end vid**)" +msgid "The process to create the contraction graph on the database:" msgstr "" -msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vids**, **end vids**)" +msgid "Add additional columns" msgstr "" -msgid "pgr_boykovKolmogorov(`Edges SQL`_, `Combinations SQL`_)" +msgid "" +"Adding extra columns to the edges and vertices tables. In this documentation " +"the following will be used:" msgstr "" -msgid "Returns set of |result-flow|" +msgid "Column." msgstr "" -msgid "From vertex :math:`11` to vertex :math:`12`" +msgid "The vertices set belonging to the vertex/edge" msgstr "" -msgid "From vertex :math:`11` to vertices :math:`\\{5, 10, 12\\}`" +msgid "``is_contracted``" msgstr "" -msgid "From vertices :math:`\\{11, 3, 17\\}` to vertex :math:`12`" +msgid "On the vertex table" msgstr "" msgid "" -"From vertices :math:`\\{11, 3, 17\\}` to vertices :math:`\\{5, 10, 12\\}`" +"when ``true`` the vertex is contracted, its not part of the contracted graph." msgstr "" msgid "" -"Using a combinations table, equivalent to calculating result from vertices :" -"math:`\\{5, 6\\}` to vertices :math:`\\{10, 15, 14\\}`." +"when ``false`` the vertex is not contracted, its part of the contracted " +"graph." msgstr "" -msgid "https://www.boost.org/libs/graph/doc/boykov_kolmogorov_max_flow.html" +msgid "``is_new``" msgstr "" -msgid "``pgr_breadthFirstSearch`` - Experimental" +msgid "On the edge table" msgstr "" msgid "" -"``pgr_breadthFirstSearch`` — Returns the traversal order(s) using Breadth " -"First Search algorithm." +"when ``true`` the edge was generated by the contraction algorithm. its part " +"of the contracted graph." msgstr "" -msgid "``pgr_breadthFirstSearch`` (`Single Vertex`_)" +msgid "" +"when ``false`` the edge is an original edge, might be or not part of the " +"contracted graph." msgstr "" -msgid "``pgr_breadthFirstSearch`` (`Multiple Vertices`_)" +msgid "Store contraction information" msgstr "" -msgid "" -"Provides the Breadth First Search traversal order from a root vertex to a " -"particular depth." +msgid "Store the contraction results in a table." msgstr "" -msgid "The implementation will work on any type of graph." +msgid "Update the edges and vertices tables" msgstr "" msgid "" -"Provides the Breadth First Search traversal order from a source node to a " -"target depth level." +"Use ``is_contracted`` column to indicate the vertices that are contracted." msgstr "" -msgid "Running time: :math:`O(E + V)`" +msgid "" +"Fill ``contracted_vertices`` with the information from the results that " +"belong to the vertices." msgstr "" -msgid "pgr_breadthFirstSearch(`Edges SQL`_, **root vid**, [**options**])" +msgid "Insert the new edges generated by pgr_contraction." msgstr "" -msgid "pgr_breadthFirstSearch(`Edges SQL`_, **root vids**, [**options**])" +msgid "The contracted graph" msgstr "" -msgid "**options:** ``[max_depth, directed]``" +msgid "Vertices that belong to the contracted graph." msgstr "" -msgid "Returns set of |result-bfs|" +msgid "Edges that belong to the contracted graph." msgstr "" -msgid "" -"From root vertex :math:`6` on a **directed** graph with edges in ascending " -"order of ``id``" +msgid "Visually:" +msgstr "" + +msgid "Using the contracted graph" msgstr "" msgid "" -"From root vertices :math:`\\{12, 6\\}` on an **undirected** graph with " -"**depth** :math:`<= 2` and edges in ascending order of ``id``" +"Depending on the final application the graph is to be prepared. In this " +"example the final application will be to calculate the cost from two " +"vertices in the original graph by using the contracted graph with " +"``pgr_dijkstraCost``" msgstr "" -msgid "DFS optional parameters" +msgid "" +"There are three cases when calculating the shortest path between a given " +"source and target in a contracted graph:" msgstr "" -msgid "Same as `Single vertex`_ with edges in ascending order of ``id``." +msgid "Case 1: Both source and target belong to the contracted graph." msgstr "" -msgid "Same as `Single vertex`_ with edges in descending order of ``id``." +msgid "Case 2: Source and/or target belong to an edge subgraph." msgstr "" -msgid "The resulting traversal is different." +msgid "Case 3: Source and/or target belong to a vertex." msgstr "" -msgid "" -"The left image shows the result with ascending order of ids and the right " -"image shows with descending order of the edge identifiers." +msgid "The final application should consider all of those cases." msgstr "" -msgid "|ascending| |descending|" +msgid "Create a view (or table) of the contracted graph:" msgstr "" -msgid "ascending" +msgid "Create the function that will use the contracted graph." msgstr "" -msgid "descending" +msgid "" +"Case 2: Source and/or target belong to an edge that has contracted vertices." msgstr "" msgid "" -"`Boost: Breadth First Search algorithm documentation `__" +"Case 3: Source and/or target belong to a vertex that has been contracted." msgstr "" +#, fuzzy +msgid "``pgr_contractionDeadEnd`` - Proposed" +msgstr ":doc:`pgr_extractVertices`" + msgid "" -"`Wikipedia: Breadth First Search algorithm `__" +"``pgr_contractionDeadEnd`` — Performs graph contraction and returns the " +"contracted vertices and edges." msgstr "" -msgid "``pgr_bridges``" +msgid "A node is considered a dead end node when:" msgstr "" -msgid "``pgr_bridges`` - Return the bridges of an undirected graph." +msgid "On undirected graphs:" msgstr "" -msgid "" -"A bridge is an edge of an undirected graph whose deletion increases its " -"number of connected components. This implementation can only be used with an " -"undirected graph." +msgid "The number of adjacent vertices is 1." msgstr "" -msgid "``edge`` ascending" +msgid "On directed graphs:" msgstr "" -msgid "Running time: :math:`O(E * (V + E))`" +msgid "When there is only one adjacent vertex or" msgstr "" -msgid "pgr_bridges(`Edges SQL`_)" +msgid "" +"When all edges are incoming regardless of the number of adjacent vertices." msgstr "" -msgid "Returns set of |result-edge|" +msgid "pgr_contractionDeadEnd(`Edges SQL`_, [**options**])" msgstr "" -msgid "The bridges of the graph" +msgid "**options:** ``[directed, forbidden_vertices]``" msgstr "" -msgid "Identifier of the edge that is a bridge." +#, fuzzy +msgid "Dead end contraction on an undirected graph." +msgstr ":doc:`pgr_bridges` - 무방향 그래프의 브릿지." + +msgid "The green nodes are dead end nodes." msgstr "" -msgid "https://en.wikipedia.org/wiki/Bridge_%28graph_theory%29" +msgid "Node :math:`3` is a dead end node after node :math:`1` is contracted." msgstr "" -#, fuzzy -msgid "**Supported versions**" -msgstr "짧은 버전" +msgid "``forbidden_vertices``" +msgstr "" -msgid "``pgr_chinesePostman`` - Experimental" +msgid "``ARRAY[`` |ANY-INTEGER| ``]``" msgstr "" -msgid "" -"``pgr_chinesePostman`` — Calculates the shortest circuit path which contains " -"every edge in a directed graph and starts and ends on the same vertex." +msgid "**Empty**" msgstr "" -msgid "Returns ``EMPTY SET`` on a disconnected graph" +msgid "Value = ``e`` indicating the row is an edge." msgstr "" -msgid "pgr_chinesePostman(`Edges SQL`_)" +msgid "A pseudo `id` of the edge." msgstr "" -msgid "Returns set of |result-1-1-no-seq|" +msgid "Identifier of the source vertex of the current edge." msgstr "" -msgid "Returns set of ``(seq, node, edge, cost, agg_cost)``" +msgid "Identifier of the target vertex of the current edge." msgstr "" -msgid "Sequential value starting from ``1``" +msgid "Weight of the current edge." msgstr "" -msgid "" -"Identifier of the edge used to go from ``node`` to the next node in the path " -"sequence. ``-1`` for the last node of the path." +msgid "Dead end vertex on undirected graph" msgstr "" -msgid "Aggregate cost from ``start_v`` to ``node``." +msgid "They have only one adjacent node." msgstr "" -msgid "``pgr_chinesePostmanCost`` - Experimental" +msgid "Dead end vertex on directed graph" +msgstr "" + +msgid "The green nodes are dead end nodes" msgstr "" msgid "" -"``pgr_chinesePostmanCost`` — Calculates the minimum costs of a circuit path " -"which contains every edge in a directed graph and starts and ends on the " -"same vertex." +"The blue nodes have an unlimited number of incoming and/or outgoing edges." msgstr "" -msgid "Return value when the graph if disconnected" +msgid "Node" msgstr "" -msgid "pgr_chinesePostmanCost(`Edges SQL`_)" +msgid "Adjacent nodes" msgstr "" -msgid "RETURNS ``FLOAT``" +msgid "Dead end" msgstr "" -msgid "``pgr_chinesepostmancost``" +msgid "Reason" msgstr "" -msgid "Minimum costs of a circuit path." +#, fuzzy +msgid ":math:`6`" +msgstr ":math:`G(V,E)`" + +msgid ":math:`\\{1\\}`" msgstr "" -msgid "pgr_connectedComponents" +msgid "Yes" msgstr "" -msgid "" -"``pgr_connectedComponents`` — Connected components of an undirected graph " -"using a DFS-based approach." +msgid "Has only one adjacent node." +msgstr "" + +#, fuzzy +msgid ":math:`7`" +msgstr ":math:`G(V,E)`" + +msgid ":math:`\\{2\\}`" msgstr "" -msgid "" -"A connected component of an undirected graph is a set of vertices that are " -"all reachable from each other." +#, fuzzy +msgid ":math:`8`" +msgstr ":math:`G(V,E)`" + +#, fuzzy +msgid ":math:`\\{2, 3\\}`" +msgstr ":math:`G(V,E)`" + +msgid "Has more than one adjacent node and all edges are incoming." msgstr "" -msgid "Components are described by vertices" +msgid ":math:`\\{4\\}`" msgstr "" -msgid "``component`` ascending" -msgstr "" +#, fuzzy +msgid ":math:`10`" +msgstr ":math:`G(V,E)`" -msgid "pgr_connectedComponents(`Edges SQL`_)" -msgstr "" +#, fuzzy +msgid ":math:`\\{4, 5\\}`" +msgstr ":math:`G(V,E)`" -msgid "Returns set of |result-component-V|" +msgid "No" msgstr "" -msgid "The connected components of the graph" +msgid "Has more than one adjacent node and all edges are outgoing." msgstr "" -msgid "Has the value of the minimum node identifier in the component." +msgid ":math:`1,2,3,4,5`" msgstr "" -msgid "Identifier of the vertex that belongs to the ``component``." +msgid "Many adjacent nodes." msgstr "" -msgid "Connecting disconnected components" +msgid "" +"Has more than one adjacent node and some edges are incoming and some are " +"outgoing." msgstr "" msgid "" -"Boost: `Connected components `__" +"From above, nodes :math:`\\{6, 7, 9\\}` are dead ends because the total " +"number of adjacent vertices is one." msgstr "" msgid "" -"wikipedia: `Connected component `__" +"When there are more than one adjacent vertex, all edges need to be all " +"incoming edges otherwise it is not a dead end." msgstr "" -msgid "``pgr_contraction``" +msgid "Step by step dead end contraction" msgstr "" msgid "" -"``pgr_contraction`` — Performs graph contraction and returns the contracted " -"vertices and edges." -msgstr "" - -msgid "Name change from ``pgr_contractGraph``" +"The dead end contraction will stop until there are no more dead end nodes. " +"For example, from the following graph where :math:`3` is the dead end node:" msgstr "" -msgid "Bug fixes" +msgid "" +"After contracting :math:`3`, node :math:`2` is now a dead end node and is " +"contracted:" msgstr "" msgid "" -"Contraction reduces the size of the graph by removing some of the vertices " -"and edges and, for example, might add edges that represent a sequence of " -"original edges decreasing the total time and space used in graph algorithms." +"After contracting :math:`2`, stop. Node :math:`1` has the information of " +"nodes that were contracted." msgstr "" -msgid "Does not return the full contracted graph" +msgid "Creating the contracted graph" msgstr "" -msgid "Only changes on the graph are returned" +msgid "Steps for the creation of the contracted graph" msgstr "" -msgid "Currnetly there are two types of contraction methods" +msgid "Add additional columns." msgstr "" -msgid "Dead End Contraction" +msgid "Save results into a table." msgstr "" -msgid "Linear Contraction" +msgid "The contracted vertices are not part of the contracted graph." msgstr "" -msgid "The returned values include" +msgid "Using when departure and destination are in the contracted graph" msgstr "" -msgid "the added edges by linear contraction." +msgid "Using when departure/destination is not in the contracted graph" msgstr "" -msgid "the modified vertices by dead end contraction." +msgid "Using when departure and destination are not in the contracted graph" msgstr "" -msgid "The returned values are ordered as follows:" +#, fuzzy +msgid "``pgr_contractionLinear`` - Proposed" +msgstr ":doc:`pgr_extractVertices`" + +msgid "" +"``pgr_contractionLinear`` — Performs graph contraction and returns the " +"contracted vertices and edges." msgstr "" -msgid "column ``id`` ascending when type is ``v``" +msgid "pgr_contractionLinear(`Edges SQL`_, [**options**])" msgstr "" -msgid "column ``id`` descending when type is ``e``" +msgid "**options:** ``[directed, max_cycles, forbidden_vertices]``" msgstr "" -msgid "The pgr_contraction function has the following signature:" +#, fuzzy +msgid "Linear contraction on an undirected graph." +msgstr ":doc:`pgr_bridges` - 무방향 그래프의 브릿지." + +msgid "" +"The green nodes are linear nodes and will not be part of the contracted " +"graph." msgstr "" -msgid "pgr_contraction(`Edges SQL`_, **contraction order**, [**options**])" +msgid "All edges adjacent will not be part of the contracted graph." msgstr "" -msgid "**options:** ``[ max_cycles, forbidden_vertices, directed]``" +msgid "The red lines will be new edges of the contracted graph." msgstr "" -msgid "Returns set of |result-contract|" +msgid "**contraction Order**" msgstr "" msgid "" -"Making a dead end and linear contraction in that order on an undirected " -"graph." +"Number of times the contraction operations on ``contraction_order`` will be " +"performed." msgstr "" -msgid "**contraction Order**" +msgid "A node connects two (or more) `linear` edges when" msgstr "" -msgid "Ordered contraction operations." +msgid "The number of adjacent vertices is 2." msgstr "" -msgid "1 = Dead end contraction" +msgid "In case of a directed graph, a node is considered a `linear` node when" msgstr "" -msgid "2 = Linear contraction" +msgid "Linearity is symmetrical." msgstr "" -msgid "Contraction optional parameters" +msgid "Linearity is not symmetrical" msgstr "" -msgid "``forbidden_vertices``" +msgid "Graph where linearity is not symmetrical." msgstr "" -msgid "**Empty**" +msgid "" +"When the graph is processed as a directed graph, linearity is not " +"symmetrical, therefore the graph can not be contracted." msgstr "" -msgid "Identifiers of vertices forbidden for contraction." +msgid "" +"When the same graph is processed as an undirected graph, linearity is " +"symmetrical, therefore the graph can be contracted." msgstr "" -msgid ":math:`1`" +msgid "The three edges can be replaced by one undirected edge" msgstr "" -msgid "" -"Number of times the contraction operations on ``contraction_order`` will be " -"performed." +msgid "Edge :math:`1 - 3`." msgstr "" -msgid "The function returns a single row. The columns of the row are:" +msgid "With cost: :math:`4`." msgstr "" -msgid "``type``" +msgid "Contracted vertices in the edge: :math:`\\{2\\}`." msgstr "" -msgid "Type of the ``id``." +msgid "Linearity is symmetrical" msgstr "" -msgid "``v`` when the row is a vertex." +msgid "Graph where linearity is symmetrical." msgstr "" -msgid "Column ``id`` has a positive value" +msgid "The four edges can be replaced by two directed edges." msgstr "" -msgid "``e`` when the row is an edge." +msgid "Edge :math:`3 - 1`." msgstr "" -msgid "Column ``id`` has a negative value" +msgid "With cost: :math:`6`." msgstr "" -msgid "All numbers on this column are ``DISTINCT``" +msgid "The four edges can be replaced by one undirected edge." msgstr "" -msgid "When ``type`` = **'v'**." +msgid "Step by step linear contraction" msgstr "" -msgid "Identifier of the modified vertex." +msgid "" +"The linear contraction will stop when there are no more linear edges. For " +"example from the following graph there are linear edges" msgstr "" -msgid "When ``type`` = **'e'**." +msgid "Contracting vertex :math:`3`," msgstr "" -msgid "Decreasing sequence starting from **-1**." +msgid "The vertex :math:`3` is removed from the graph" msgstr "" msgid "" -"Representing a pseudo `id` as is not incorporated in the set of original " -"edges." +"The edges :math:`2 \\rightarrow 3` and :math:`w \\rightarrow z` are removed " +"from the graph." msgstr "" -msgid "Array of contracted vertex identifiers." +msgid "" +"A new edge :math:`2 \\rightarrow 4` is inserted represented with red color." msgstr "" -msgid "When ``type`` = **'v'**: :math:`-1`" +msgid "Contracting vertex :math:`2`:" msgstr "" -msgid "" -"When ``type`` = **'e'**: Identifier of the source vertex of the current edge " -"(``source``, ``target``)." +msgid "The vertex :math:`2` is removed from the graph" msgstr "" msgid "" -"When ``type`` = **'e'**: Identifier of the target vertex of the current edge " -"(``source``, ``target``)." +"The edges :math:`1 \\rightarrow 2` and :math:`2 \\rightarrow 3` are removed " +"from the graph." msgstr "" msgid "" -"When ``type`` = **'e'**: Weight of the current edge (``source``, ``target``)." +"A new edge :math:`1 \\rightarrow 3` is inserted represented with red color." msgstr "" -msgid "Only dead end contraction" +msgid "" +"Edge :math:`1 \\rightarrow 3` has the information of cost and the nodes that " +"were contracted." msgstr "" -msgid "Only linear contraction" +msgid "Create the contracted graph." msgstr "" -msgid "pgr_createTopology" +msgid "``pgr_createTopology``" msgstr "" msgid "" @@ -10115,11 +10110,9 @@ msgid "" "to the rest of the edges." msgstr "" -msgid "The example uses the :doc:`sampledata` network." -msgstr "" - -msgid "pgr_createVerticesTable" -msgstr "" +#, fuzzy +msgid "``pgr_createVerticesTable``" +msgstr ":doc:`pgr_createVerticesTable`" msgid "" "``pgr_createVerticesTable`` — Reconstructs the vertices table based on the " @@ -10334,8 +10327,9 @@ msgid "" "Cuthill%E2%80%93McKee_algorithm>`__" msgstr "" -msgid "pgr_dagShortestPath - Experimental" -msgstr "" +#, fuzzy +msgid "``pgr_dagShortestPath`` - Experimental" +msgstr ":doc:`pgr_dagShortestPath`" msgid "" "``pgr_dagShortestPath`` — Returns the shortest path for weighted directed " @@ -10414,18 +10408,64 @@ msgstr "결과 컬럼" msgid "Making **start_vids** the same as **end_vids**" msgstr "" -msgid "https://en.wikipedia.org/wiki/Topological_sorting" +msgid "" +"`Boost: DAG shortest paths `__" msgstr "" -msgid "``pgr_degree`` -- Proposed" +msgid "https://en.wikipedia.org/wiki/Topological_sorting" msgstr "" +#, fuzzy +msgid "``pgr_degree``" +msgstr ":doc:`pgr_analyzeGraph`" + msgid "" "``pgr_degree`` — For each vertex in an undirected graph, return the count of " "edges incident to the vertex." msgstr "" -msgid "Calculates the degree of the vertices of an **undirected** graph" +msgid "Error messages adjustment." +msgstr "" + +msgid "New signature with only Edges SQL." +msgstr "" + +msgid "Calculates the degree of the vertices of an undirected graph" +msgstr "" + +msgid "" +"The degree (or valency) of a vertex of a graph is the number of edges that " +"are incident to the vertex." +msgstr "" + +msgid "A loop contributes 2 to a vertex's degree." +msgstr "" + +msgid "A vertex with degree 0 is called an isolated vertex." +msgstr "" + +msgid "Isolated vertex is not part of the result" +msgstr "" + +msgid "" +"Vertex not participating on the subgraph is considered and isolated vertex." +msgstr "" + +msgid "" +"There can be a ``dryrun`` execution and the code used to get the answer will " +"be shown in a PostgreSQL ``NOTICE``." +msgstr "" + +msgid "" +"The code can be used as base code for the particular application " +"requirements." +msgstr "" + +msgid "No ordering is performed." +msgstr "" + +msgid "pgr_degree(`Edges SQL`_ , [``dryrun``])" msgstr "" msgid "pgr_degree(`Edges SQL`_ , `Vertex SQL`_, [``dryrun``])" @@ -10434,14 +10474,31 @@ msgstr "" msgid "RETURNS SETOF |result-degree|" msgstr "" +msgid "Edges" +msgstr "" + +msgid "example" +msgstr "" + +msgid "Get the degree of the vertices defined on the edges table" +msgstr "" + +#, fuzzy +msgid "Edges and Vertices" +msgstr "색인과 표" + msgid "Extracting the vertex information" msgstr "" +msgid "``pgr_degree`` can use :doc:`pgr_extractVertices` embedded in the call." +msgstr "" + msgid "" -"pgr_degree can utilize output from `pgr_extractVertices` or can have " -"`pgr_extractVertices` embedded in the call. For decent size networks, it is " -"best to prep your vertices table before hand and use that vertices table for " -"pgr_degree calls." +"For decent size networks, it is best to prepare your vertices table before " +"hand and use it on ``pgr_degree`` calls. (See `Using a vertex table`_)" +msgstr "" + +msgid "Calculate the degree of the nodes:" msgstr "" msgid "`Vertex SQL`_" @@ -10456,13 +10513,16 @@ msgstr "" msgid "When true do not process and get in a NOTICE the resulting query." msgstr "" -msgid "Vertex SQL" +msgid "For the `Edges and Vertices`_ signature:" msgstr "" -msgid "``in_edges``" +msgid "For the `Edges`_ signature:" msgstr "" -msgid "``BIGINT[]``" +msgid "Vertex SQL" +msgstr "" + +msgid "``in_edges``" msgstr "" msgid "" @@ -10493,9 +10553,47 @@ msgstr "" msgid "Number of edges that are incident to the vertex ``id``" msgstr "" +msgid "Degree of a loop" +msgstr "" + +msgid "Using the `Edges`_ signature." +msgstr "" + +msgid "Using the `Edges and Vertices`_ signature." +msgstr "" + msgid "Degree of a sub graph" msgstr "" +msgid "For the following is a subgraph of the :doc:`sampledata`:" +msgstr "" + +msgid ":math:`E = \\{(1, 5 \\leftrightarrow 6), (1, 6 \\leftrightarrow 10)\\}`" +msgstr "" + +msgid ":math:`V = \\{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17\\}`" +msgstr "" + +msgid "The vertices not participating on the edge are considered isolated" +msgstr "" + +msgid "their degree is 0 in the subgraph and" +msgstr "" + +msgid "their degree is not shown in the output." +msgstr "" + +msgid "Using a vertex table" +msgstr "" + +msgid "" +"For decent size networks, it is best to prepare your vertices table before " +"hand and use it on ``pgr_degree`` calls." +msgstr "" + +msgid "Extract the vertex information and save into a table:" +msgstr "" + msgid "Dry run execution" msgstr "" @@ -10509,13 +10607,28 @@ msgid "" "backend development needs." msgstr "" -msgid "Degree from an existing table" +msgid "Finding dead ends" +msgstr "" + +msgid "" +"If there is a vertices table already built using ``pgr_extractVertices`` and " +"want the degree of the whole graph rather than a subset, it can be forgo " +"using ``pgr_degree`` and work with the ``in_edges`` and ``out_edges`` " +"columns directly." +msgstr "" + +msgid "The degree of a dead end is 1." +msgstr "" + +#, fuzzy +msgid "Finding linear vertices" +msgstr ":doc:`pgr_withPointsCostMatrix`" + +msgid "The degree of a linear vertex is 2." msgstr "" msgid "" -"If you have a vertices table already built using ``pgr_extractVertices`` and " -"want the degree of the whole graph rather than a subset, you can forgo using " -"pgr_degree and work with the ``in_edges`` and ``out_edges`` columns directly." +"If there is a vertices table already built using the ``pgr_extractVertices``" msgstr "" msgid ":doc:`pgr_extractVertices`" @@ -10532,15 +10645,6 @@ msgstr "" msgid "Version 3.3.0" msgstr "" -msgid "Promoted to **proposed** function" -msgstr "" - -msgid "``pgr_depthFirstSearch`` (`Single Vertex`_)" -msgstr "" - -msgid "``pgr_depthFirstSearch`` (`Multiple Vertices`_)" -msgstr "" - msgid "" "Depth First Search algorithm is a traversal algorithm which starts from a " "root vertex, goes as deep as possible, and backtracks once a vertex is " @@ -10594,13 +10698,13 @@ msgid "Same as `Single vertex`_ but with edges in descending order of ``id``." msgstr "" msgid "" -"`Boost: Depth First Search algorithm documentation `__" +"`Boost: Depth First Search `__" msgstr "" msgid "" -"`Boost: Undirected DFS algorithm documentation `__" +"`Boost: Undirected DFS `__" msgstr "" msgid "" @@ -10617,44 +10721,34 @@ msgstr "" msgid "Version 3.5.0" msgstr "" -msgid "" -"``pgr_dijkstra`` (`One to One`_) added ``start_vid`` and ``end_vid`` columns." +msgid "pgr_dijkstra(One to One) added ``start_vid`` and ``end_vid`` columns." msgstr "" -msgid "``pgr_dijkstra`` (`One to Many`_) added ``end_vid`` column." +msgid "pgr_dijkstra(One to Many) added ``end_vid`` column." msgstr "" -msgid "``pgr_dijkstra`` (`Many to One`_) added ``start_vid`` column." +msgid "pgr_dijkstra(Many to One) added ``start_vid`` column." msgstr "" msgid "Version 3.1.0" msgstr "" -msgid "``pgr_dijkstra`` (`Combinations`_)" -msgstr "" - -msgid "**Official** functions" -msgstr "" - msgid "Version 2.2.0" msgstr "" -msgid "New **proposed** functions:" -msgstr "" - -msgid "``pgr_dijkstra`` (`One to Many`_)" -msgstr "" - -msgid "``pgr_dijkstra`` (`Many to One`_)" -msgstr "" +#, fuzzy +msgid "pgr_dijkstra(One to Many)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "``pgr_dijkstra`` (`Many to Many`_)" -msgstr "" +#, fuzzy +msgid "pgr_dijkstra(Many to One)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "Signature change on ``pgr_dijkstra`` (`One to One`_)" -msgstr "" +#, fuzzy +msgid "pgr_dijkstra(Many to Many)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "**Official** ``pgr_dijkstra`` (`One to One`_)" +msgid "Signature change on pgr_dijkstra(One to One)" msgstr "" msgid "pgr_dijkstra(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" @@ -10840,6 +10934,11 @@ msgstr "" msgid "37) Using `Combinations`_" msgstr "" +msgid "" +"`Boost: Dijkstra shortest paths `__" +msgstr "" + msgid "https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm" msgstr "" @@ -10852,9 +10951,6 @@ msgid "" "algorithm." msgstr ":doc:`pgr_aStarCost` - 최단 경로의 집계 비용 반환." -msgid "``pgr_dijkstraCost`` (`Combinations`_)" -msgstr "" - #, fuzzy msgid "" "The ``pgr_dijkstraCost`` function sumarizes of the cost of the shortest path " @@ -11143,9 +11239,6 @@ msgstr "" msgid "When ``false``: ``cap`` limit per ``Start vid`` will be returned" msgstr "" -msgid "boost: https://www.boost.org/libs/graph/doc/table_of_contents.html" -msgstr "" - msgid "Wikipedia: https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm" msgstr "" @@ -11312,6 +11405,9 @@ msgid "" "``pgr_drivingDistance`` - Returns the driving distance from a start node." msgstr "" +msgid "Standarizing output columns to |result-spantree|" +msgstr "" + msgid "Added ``depth`` and ``start_vid`` result columns." msgstr "" @@ -11321,13 +11417,16 @@ msgstr "" msgid "Added ``depth`` and ``pred`` result columns." msgstr "" -msgid "Signature change pgr_drivingDistance(single vertex)" +msgid "Signature change:" +msgstr "" + +msgid "pgr_drivingDistance(single vertex)" msgstr "" -msgid "New **Official** pgr_drivingDistance(multiple vertices)" +msgid "New official signature:" msgstr "" -msgid "Official:: pgr_drivingDistance(single vertex)" +msgid "pgr_drivingDistance(multiple vertices)" msgstr "" msgid "" @@ -11382,7 +11481,7 @@ msgid "" "undirected graph" msgstr "" -msgid "pgr_edgeColoring - Experimental" +msgid "``pgr_edgeColoring`` - Experimental" msgstr "" msgid "" @@ -11456,6 +11555,15 @@ msgstr "" msgid "Graph coloring of pgRouting :doc:`sampledata`" msgstr "" +msgid "" +"`Boost: Edge Coloring `__" +msgstr "" + +msgid "" +"`Wikipedia: Graph coloring `__" +msgstr "" + msgid "``pgr_edgeDisjointPaths``" msgstr "" @@ -11464,9 +11572,6 @@ msgid "" "groups of vertices." msgstr "" -msgid "New **proposed** function:" -msgstr "" - msgid "pgr_edgeDisjointPaths(Combinations)" msgstr "" @@ -11548,9 +11653,6 @@ msgid "" "the flow from the sources to the targets using Edmonds Karp Algorithm." msgstr "" -msgid "``pgr_edmondsKarp`` (`Combinations`_)" -msgstr "" - msgid "Renamed from ``pgr_maxFlowEdmondsKarp``" msgstr "" @@ -11566,38 +11668,29 @@ msgstr "" msgid "pgr_edmondsKarp(`Edges SQL`_, **start vids**, **end vid**)" msgstr "" -msgid "pgr_edmondsKarp(`Edges SQL`_, **start vids**, **end vids**)" -msgstr "" - -msgid "pgr_edmondsKarp(`Edges SQL`_, `Combinations SQL`_)" -msgstr "" - -msgid "https://www.boost.org/libs/graph/doc/edmonds_karp_max_flow.html" -msgstr "" - -msgid "https://en.wikipedia.org/wiki/Edmonds%E2%80%93Karp_algorithm" -msgstr "" - -msgid "``pgr_edwardMoore - Experimental``" -msgstr "" - -msgid "" -"``pgr_edwardMoore`` — Returns the shortest path using Edward-Moore algorithm." +msgid "pgr_edmondsKarp(`Edges SQL`_, **start vids**, **end vids**)" msgstr "" -msgid "``pgr_edwardMoore`` (`Combinations`_)" +msgid "pgr_edmondsKarp(`Edges SQL`_, `Combinations SQL`_)" msgstr "" -msgid "``pgr_edwardMoore`` (`One to One`_)" +msgid "" +"`Boost: Edmonds Karp max flow `__" msgstr "" -msgid "``pgr_edwardMoore`` (`One to Many`_)" +msgid "https://en.wikipedia.org/wiki/Edmonds%E2%80%93Karp_algorithm" msgstr "" -msgid "``pgr_edwardMoore`` (`Many to One`_)" +#, fuzzy +msgid "``pgr_edwardMoore`` - Experimental" +msgstr ":doc:`pgr_edwardMoore`" + +msgid "" +"``pgr_edwardMoore`` — Returns the shortest path using Edward-Moore algorithm." msgstr "" -msgid "``pgr_edwardMoore`` (`Many to Many`_)" +msgid "pgr_edwardMoore(Combinations)" msgstr "" msgid "" @@ -11659,15 +11752,13 @@ msgstr "" msgid "https://en.wikipedia.org/wiki/Shortest_Path_Faster_Algorithm" msgstr "" -msgid "pgr_extractVertices -- Proposed" -msgstr "" +#, fuzzy +msgid "``pgr_extractVertices``" +msgstr ":doc:`pgr_extractVertices`" msgid "``pgr_extractVertices`` — Extracts the vertices information" msgstr "" -msgid "Classified as **proposed** function" -msgstr "" - msgid "" "This is an auxiliary function for extracting the vertex information of the " "set of edges of a graph." @@ -11760,19 +11851,14 @@ msgid "" "= true``." msgstr "" +#, fuzzy msgid "``pgr_findCloseEdges``" -msgstr "" +msgstr ":doc:`pgr_findCloseEdges`" msgid "``pgr_findCloseEdges`` - Finds the close edges to a point geometry." msgstr "" -msgid "New **proposed** signatures:" -msgstr "" - -msgid "``pgr_findCloseEdges`` (`One point`_)" -msgstr "" - -msgid "``pgr_findCloseEdges`` (`Many points`_)" +msgid "``partial`` option is removed." msgstr "" msgid "" @@ -11789,7 +11875,7 @@ msgid "" "adjustments needed by the application." msgstr "" -msgid "``EMTPY SET`` is returned on dryrun executions" +msgid "``EMPTY SET`` is returned on dryrun executions" msgstr "" msgid "" @@ -11800,7 +11886,7 @@ msgid "" "pgr_findCloseEdges(`Edges SQL`_, **points**, **tolerance**, [**options**])" msgstr "" -msgid "**options:** ``[cap, partial, dryrun]``" +msgid "**options:** ``[cap, dryrun]``" msgstr "" msgid "Returns set of |result-find|" @@ -11809,52 +11895,16 @@ msgstr "" msgid "One point" msgstr "" -msgid "Default: ``cap => 1``" -msgstr "" - -msgid "Maximum one row answer." -msgstr "" - -msgid "Default: ``partial => true``" -msgstr "" - -msgid "With less calculations as possible." -msgstr "" - -msgid "Default: ``dryrun => false``" -msgstr "" - -msgid "Process query" +msgid "Get two close edges to points of interest with :math:`pid = 5`" msgstr "" -msgid "Returns" -msgstr "" - -msgid "values on ``edge_id``, ``fraction``, ``side`` columns." -msgstr "" - -msgid "``NULL`` on ``distance``, ``geom``, ``edge`` columns." +msgid "``cap => 2``" msgstr "" msgid "Many points" msgstr "" -msgid "" -"Find at most :math:`2` edges close to all vertices on the points of interest " -"table." -msgstr "" - -msgid "One answer per point, as small as possible." -msgstr "" - -msgid "" -"Columns ``edge_id``, ``fraction``, ``side`` and ``geom`` are returned with " -"values." -msgstr "" - -msgid "" -"``geom`` contains the original point geometry to assist on deterpartialing " -"to which point geometry the row belongs to." +msgid "For each points of interests, find the closest edge." msgstr "" msgid "**point**" @@ -11881,17 +11931,6 @@ msgstr "" msgid "Limit output rows" msgstr "" -msgid "``partial``" -msgstr "" - -msgid "" -"When ``true`` only columns needed for :doc:`withPoints-category` are " -"calculated." -msgstr "" - -msgid "When ``false`` all columns are calculated" -msgstr "" - msgid "When ``false`` calculations are performed." msgstr "" @@ -11907,266 +11946,98 @@ msgid "When :math:`cap = 1`, it is the closest edge." msgstr "" msgid "" -"Value in <0,1> that indicates the relative postition from the first end-" -"point of the edge." +"Value in <0,1> that indicates the relative position from the first end-point " +"of the edge." msgstr "" msgid "Value in ``[r, l]`` indicating if the point is:" msgstr "" -msgid "In the right ``r``." -msgstr "" - -msgid "In the left ``l``." +msgid "At the right ``r`` of the segment." msgstr "" msgid "When the point is on the line it is considered to be on the right." msgstr "" -msgid "``distance``" -msgstr "" - -msgid "Distance from point to edge." -msgstr "" - -msgid "``NULL`` when ``cap = 1`` on the `One point`_ signature" -msgstr "" - -msgid "``POINT`` geometry" -msgstr "" - -msgid "" -"`One Point`_: Contains the point on the edge that is ``fraction`` away from " -"the starting point of the edge." -msgstr "" - -msgid "`Many Points`_: Contains the corresponding **original point**" -msgstr "" - -msgid "" -"``LINESTRING`` geometry from the **original point** to the closest point of " -"the edge with identifier ``edge_id``" -msgstr "" - -msgid "One point results" -msgstr "" - -msgid "The green nodes is the **original point**" -msgstr "" - -msgid "" -"The geometry ``geom`` is a point on the :math:`sp \\rightarrow ep` edge." -msgstr "" - -msgid "" -"The geometry ``edge`` is a line that connects the **original point** with " -"``geom``" -msgstr "" - -msgid "Many point results" -msgstr "" - -msgid "The green nodes are the **original points**" -msgstr "" - -msgid "" -"The geometry ``geom``, marked as **g1** and **g2** are the **original " -"points**" -msgstr "" - -msgid "" -"The geometry ``edge``, marked as **edge1** and **edge2** is a line that " -"connects the **original point** with the closest point on the :math:`sp " -"\\rightarrow ep` edge." -msgstr "" - -msgid "One point examples" -msgstr "" - -msgid "At most two answers" -msgstr "" - -msgid "``cap => 2``" -msgstr "" - -msgid "Maximum two row answer." -msgstr "" - -msgid "Understanding the result" -msgstr "" - -msgid "``NULL`` on ``geom``, ``edge``" -msgstr "" - -msgid "``edge_id`` identifier of the edge close to the **original point**" -msgstr "" - -msgid "" -"Two edges are withing :math:`0.5` distance units from the **original " -"point**: :math:`{5, 8}`" -msgstr "" - -msgid "For edge :math:`5`:" -msgstr "" - -msgid "" -"``fraction``: The closest point from the **original point** is at the :math:" -"`0.8` fraction of the edge :math:`5`." -msgstr "" - -msgid "" -"``side``: The **original point** is located to the left side of edge :math:" -"`5`." -msgstr "" - -msgid "" -"``distance``: The **original point** is located :math:`0.1` length units " -"from edge :math:`5`." -msgstr "" - -msgid "For edge :math:`8`:" -msgstr "" - -msgid "" -"``fraction``: The closest point from the **original point** is at the :math:" -"`0.89..` fraction of the edge :math:`8`." -msgstr "" - -msgid "" -"``side``: The **original point** is located to the right side of edge :math:" -"`8`." -msgstr "" - -msgid "" -"``distance``: The **original point** is located :math:`0.19..` length units " -"from edge :math:`8`." -msgstr "" - -msgid "One answer, all columns" -msgstr "" - -msgid "``partial => false``" +msgid "At the left ``l`` of the segment." msgstr "" -msgid "Calculate all columns" +msgid "``distance``" msgstr "" -msgid "" -"``edge_id`` identifier of the edge **closest** to the **original point**" +msgid "Distance from the point to the edge." msgstr "" -msgid "" -"From all edges within :math:`0.5` distance units from the **original " -"point**: :math:`{5}` is the closest one." +msgid "Original ``POINT`` geometry." msgstr "" msgid "" -"``geom``: Contains the geometry of the closest point on edge :math:`5` from " -"the **original point**." +"``LINESTRING`` geometry that connects the original **point** to the closest " +"point of the edge with identifier ``edge_id``" msgstr "" -msgid "" -"``edge``: Contains the ``LINESTRING`` geometry of the **original point** to " -"the closest point on on edge :math:`5` ``geom``" +msgid "One point in an edge" msgstr "" -msgid "At most two answers with all columns" +msgid "The green node is the original point." msgstr "" -msgid "Understanding the result:" +msgid "``geom`` has the value of the original point." msgstr "" msgid "" -"``geom``: Contains the geometry of the closest point on edge :math:`8` from " -"the **original point**." +"The geometry ``edge`` is a line that connects the original point with the " +"edge :math:`sp \\rightarrow ep` edge." msgstr "" -msgid "" -"``edge``: Contains the ``LINESTRING`` geometry of the **original point** to " -"the closest point on on edge :math:`8` ``geom``" +msgid "The point is located at the left of the edge." msgstr "" msgid "One point dry run execution" msgstr "" -msgid "Returns ``EMPTY SET``." -msgstr "" - -msgid "``partial => true``" -msgstr "" - -msgid "Is ignored" +msgid "Using the query from the previous example:" msgstr "" -msgid "" -"Because it is a **dry run** excecution, the code for all calculations are " -"shown on the PostgreSQL ``NOTICE``." +msgid "Returns ``EMPTY SET``." msgstr "" msgid "``dryrun => true``" msgstr "" -msgid "Do not process query" +msgid "Generates a PostgreSQL ``NOTICE`` with the code used." msgstr "" msgid "" -"Generate a PostgreSQL ``NOTICE`` with the code used to calculate all columns" -msgstr "" - -msgid "``cap`` and **original point** are used in the code" -msgstr "" - -msgid "Many points examples" -msgstr "" - -msgid "At most two answers per point" +"The generated code can be used as a starting base code for additional " +"requirements, like taking into consideration the SRID." msgstr "" -msgid "``NULL`` on ``edge``" +msgid "Many points in an edge" msgstr "" -msgid "" -"``edge_id`` identifier of the edge close to a **original point** (``geom``)" +msgid "The green nodes are the **original points**" msgstr "" msgid "" -"Two edges at most withing :math:`0.5` distance units from each of the " -"**original points**:" -msgstr "" - -msgid "For ``POINT(1.8 0.4)`` and ``POINT(0.3 1.8)`` only one edge was found." -msgstr "" - -msgid "For the rest of the points two edges were found." -msgstr "" - -msgid "For point ``POINT(2.9 1.8)``" +"The geometry ``geom``, marked as **g1** and **g2** are the **original " +"points**" msgstr "" msgid "" -"Edge :math:`5` is before :math:`8` therefore edge :math:`5` has the shortest " -"distance to ``POINT(2.9 1.8)``." -msgstr "" - -msgid "One answer per point, all columns" -msgstr "" - -msgid "For the **original point** ``POINT(2.9 1.8)``" +"The geometry ``edge``, marked as **edge1** and **edge2** is a line that " +"connects the **original point** with the closest point on the :math:`sp " +"\\rightarrow ep` edge." msgstr "" -msgid "Edge :math:`5` is the closest edge to the **original point**" +msgid "Many points dry run execution" msgstr "" -msgid "" -"``geom``: Contains the geometry of the **original point** ``POINT(2.9 1.8)``" +msgid "Do not process query" msgstr "" msgid "" -"``edge``: Contains the ``LINESTRING`` geometry of the **original point** " -"(``geom``) to the closest point on on edge." -msgstr "" - -msgid "Many points dry run execution" +"Generate a PostgreSQL ``NOTICE`` with the code used to calculate all columns" msgstr "" msgid "Find at most two routes to a given point" @@ -12203,11 +12074,10 @@ msgstr "" msgid "A unique identifier." msgstr "" -msgid "" -"Identifier of the edge nearest edge that allows an arrival to the point." +msgid "Identifier of the nearest segment." msgstr "" -msgid "Is it on the left, right or both sides of the segment ``edge_id``" +msgid "Is it on the left, right or both sides of the segment ``edge_id``." msgstr "" msgid "Where in the segment is the point located." @@ -12216,13 +12086,35 @@ msgstr "" msgid "The geometry of the points." msgstr "" +msgid "The distance between ``geom`` and the segment ``edge_id``." +msgstr "" + +msgid "" +"A segment that connects the ``geom`` of the point to the closest point on " +"the segment ``edge_id``." +msgstr "" + msgid "``newPoint``" msgstr "" -msgid "The geometry of the points moved on top of the segment." +msgid "A point on segment ``edge_id`` that is the closest to ``geom``." +msgstr "" + +msgid "Points of interest fill up" +msgstr "" + +msgid "Inserting the points of interest." +msgstr "" + +msgid "Filling the rest of the table." +msgstr "" + +msgid "" +"Any other additional modification: In this manual, point :math:`6` can be " +"reached from both sides." msgstr "" -msgid "Points of interest fillup" +msgid "The points of interest:" msgstr "" msgid "``pgr_floydWarshall``" @@ -12251,9 +12143,6 @@ msgid "" "floyd_warshall_shortest.html>`_" msgstr "" -msgid "Queries uses the :doc:`sampledata` network." -msgstr "" - msgid "``pgr_full_version``" msgstr "" @@ -12261,9 +12150,6 @@ msgid "" "``pgr_full_version`` — Get the details of pgRouting version information." msgstr "" -msgid "New **official** function" -msgstr "" - msgid "Get complete details of pgRouting version information" msgstr "" @@ -12330,16 +12216,15 @@ msgstr "" msgid "Git hash of pgRouting build" msgstr "" -msgid "``pgr_hawickCircuits - Experimental``" -msgstr "" +#, fuzzy +msgid "``pgr_hawickCircuits`` - Experimental" +msgstr ":doc:`pgr_hawickCircuits`" +#, fuzzy msgid "" -"``pgr_hawickCircuits`` — Returns the list of cirucits using hawick circuits " +"``pgr_hawickCircuits`` — Returns the list of ciruits using hawick circuits " "algorithm." -msgstr "" - -msgid "``pgr_hawickCircuits``" -msgstr "" +msgstr ":doc:`pgr_bdDijkstra` - 최단 경로를 위한 양방향 다익스트라 알고리즘." msgid "" "Hawick Circuit algorithm, is published in 2008 by Ken Hawick and Health A. " @@ -12463,7 +12348,9 @@ msgid "" "blue represent :math:`K_5` subgraph." msgstr "" -msgid "https://www.boost.org/libs/graph/doc/boyer_myrvold.html" +msgid "" +"`Boost: Boyer Myrvold `__" msgstr "" msgid "``pgr_johnson``" @@ -12518,6 +12405,9 @@ msgid "" "breadth First Search ordering." msgstr "" +msgid "Added ``pred`` result columns." +msgstr "" + msgid "" "Visits and extracts the nodes information in Breath First Search ordering of " "the Minimum Spanning Tree created using Kruskal's algorithm." @@ -12593,8 +12483,9 @@ msgstr "" msgid "pgr_kruskalDFS(`Edges SQL`_, **root vids**, [``max_depth``])" msgstr "" -msgid "pgr_lengauerTarjanDominatorTree -Experimental" -msgstr "" +#, fuzzy +msgid "``pgr_lengauerTarjanDominatorTree`` - Experimental" +msgstr ":doc:`pgr_lengauerTarjanDominatorTree`" msgid "" "``pgr_lengauerTarjanDominatorTree`` — Returns the immediate dominator of all " @@ -12651,8 +12542,8 @@ msgid "Dominator tree of another component." msgstr "" msgid "" -"`Boost: Lengauer-Tarjan dominator tree algorithm `__" +"`Boost: Lengauer-Tarjan dominator `__" msgstr "" msgid "" @@ -12660,14 +12551,19 @@ msgid "" "Dominator_(graph_theory)>`__" msgstr "" -msgid "pgr_lineGraph - Proposed" -msgstr "" +#, fuzzy +msgid "``pgr_lineGraph`` - Proposed" +msgstr ":doc:`pgr_analyzeGraph`" msgid "" "``pgr_lineGraph`` — Transforms the given graph into its corresponding edge-" "based graph." msgstr "" +#, fuzzy +msgid "Works for directed and undirected graphs." +msgstr ":doc:`pgr_bridges` - 무방향 그래프의 브릿지." + msgid "" "Given a graph :math:`G`, its line graph :math:`L(G)` is a graph such that:" msgstr "" @@ -12711,15 +12607,9 @@ msgstr "" msgid "Gives a local identifier for the edge" msgstr "" -msgid "Identifier of the source vertex of the current edge." -msgstr "" - msgid "When `negative`: the source is the reverse edge in the original graph." msgstr "" -msgid "Identifier of the target vertex of the current edge." -msgstr "" - msgid "When `negative`: the target is the reverse edge in the original graph." msgstr "" @@ -12929,8 +12819,7 @@ msgid "Full line graph of subgraph of edges :math:`\\{4, 7, 8, 10\\}`" msgstr "" msgid "" -"The examples of this section are based on the :doc:`sampledata` network. The " -"examples include the subgraph including edges 4, 7, 8, and 10 with " +"The examples include the subgraph including edges 4, 7, 8, and 10 with " "``reverse_cost``." msgstr "" @@ -13149,15 +13038,15 @@ msgstr "" msgid "Returns set of |result-component-make|" msgstr "" -msgid "" -"Query done on :doc:`sampledata` network gives the list of edges that are " -"needed to connect the graph." +msgid "List of edges that are needed to connect the graph." msgstr "" -msgid "https://www.boost.org/libs/graph/doc/make_connected.html" +msgid "" +"`Boost: make connected `__" msgstr "" -msgid "pgr_maxCardinalityMatch" +msgid "``pgr_maxCardinalityMatch``" msgstr "" msgid "" @@ -13165,13 +13054,16 @@ msgid "" "graph." msgstr "" +msgid "pgr_maxCardinalityMatch(text) returns only ``edge`` column." +msgstr "" + msgid "Deprecated signature" msgstr "" -msgid "``pgr_maxCardinalityMatch(text,boolean)``" +msgid "pgr_maxCardinalityMatch(text,boolean)" msgstr "" -msgid "``directed => false`` when used." +msgid "directed => ``false`` when used." msgstr "" msgid "Renamed from ``pgr_maximumCardinalityMatching``" @@ -13222,7 +13114,9 @@ msgstr "" msgid "Identifier of the edge in the original query." msgstr "" -msgid "https://www.boost.org/libs/graph/doc/maximum_matching.html" +msgid "" +"`Boost: maximum_matching `__" msgstr "" msgid "https://en.wikipedia.org/wiki/Matching_%28graph_theory%29" @@ -13239,12 +13133,6 @@ msgid "" "source(s) to the targets(s) using the Push Relabel algorithm." msgstr "" -msgid "``pgr_maxFlow`` (`Combinations`_)" -msgstr "" - -msgid "New **Proposed** function" -msgstr "" - msgid "Calculates the maximum flow from the sources to the targets." msgstr "" @@ -13252,6 +13140,9 @@ msgid "" "When the maximum flow is **0** then there is no flow and **0** is returned." msgstr "" +msgid "There is no flow when source has the same vaule as target." +msgstr "" + msgid "Uses the :doc:`pgr_pushRelabel ` algorithm." msgstr "" @@ -13279,7 +13170,9 @@ msgstr "" msgid "Maximum flow possible from the source(s) to the target(s)" msgstr "" -msgid "https://www.boost.org/libs/graph/doc/push_relabel_max_flow.html" +msgid "" +"`Boost: push relabel max flow `__" msgstr "" msgid "" @@ -13294,7 +13187,10 @@ msgid "" "of the maximum flow on a graph" msgstr "" -msgid "``pgr_maxFlowMinCost`` (`Combinations`_)" +msgid "pgr_maxFlowMinCost(Combinations)" +msgstr "" + +msgid "|boost| graph inside." msgstr "" msgid "**TODO** check which statement is true:" @@ -13335,12 +13231,7 @@ msgstr "" msgid "pgr_maxFlowMinCost(`Edges SQL`_, `Combinations SQL`_)" msgstr "" -msgid "Returns set of |result-flow-mincost|" -msgstr "" - -msgid "" -"https://www.boost.org/libs/graph/doc/" -"successive_shortest_path_nonnegative_weights.html" +msgid "Returns set of |result-flow-mincost|" msgstr "" msgid "``pgr_maxFlowMinCost_Cost`` - Experimental" @@ -13351,7 +13242,7 @@ msgid "" "maximum flow on a graph" msgstr "" -msgid "``pgr_maxFlowMinCost_Cost`` (`Combinations`_)" +msgid "pgr_maxFlowMinCost_Cost(Combinations)" msgstr "" msgid "**The cost value of all input edges must be nonnegative.**" @@ -13384,8 +13275,9 @@ msgstr "" msgid "Minimum Cost Maximum Flow possible from the source(s) to the target(s)" msgstr "" -msgid "pgr_nodeNetwork" -msgstr "" +#, fuzzy +msgid "``pgr_nodeNetwork``" +msgstr ":doc:`pgr_analyzeGraph`" msgid "``pgr_nodeNetwork`` - Nodes an network edge table." msgstr "" @@ -13812,7 +13704,7 @@ msgid "" "projectweb/top/pdptw/li-lim-benchmark/" msgstr "" -msgid "There are 25 vehciles in the problem all with the same characteristics." +msgid "There are 25 vehicles in the problem all with the same characteristics." msgstr "" msgid "The original orders" @@ -13823,7 +13715,7 @@ msgid "" "order." msgstr "" -msgid "The original data needs to be converted to an appropiate table:" +msgid "The original data needs to be converted to an appropriate table:" msgstr "" msgid "The query" @@ -13922,9 +13814,6 @@ msgid "" "the flow from the sources to the targets using Push Relabel Algorithm." msgstr "" -msgid "``pgr_pushRelabel`` (`Combinations`_)" -msgstr "" - msgid "Renamed from ``pgr_maxFlowPushRelabel``" msgstr "" @@ -13943,7 +13832,7 @@ msgstr "" msgid "pgr_pushRelabel(`Edges SQL`_, `Combinations SQL`_)" msgstr "" -msgid "pgr_sequentialVertexColoring - Proposed" +msgid "``pgr_sequentialVertexColoring`` - Proposed" msgstr "" msgid "" @@ -13951,9 +13840,6 @@ msgid "" "undirected graph, using greedy approach." msgstr "" -msgid "Promoted to **proposed** signature" -msgstr "" - msgid "" "Sequential vertex coloring algorithm is a graph coloring algorithm in which " "color identifiers are assigned to the vertices of a graph in a sequential " @@ -13996,9 +13882,15 @@ msgstr "" msgid "pgr_sequentialVertexColoring(`Edges SQL`_)" msgstr "" -msgid "pgr_stoerWagner - Experimental" +msgid "" +"`Boost: Sequential Vertex Coloring `__" msgstr "" +#, fuzzy +msgid "``pgr_stoerWagner`` - Experimental" +msgstr ":doc:`pgr_stoerWagner`" + msgid "``pgr_stoerWagner`` — The min-cut of graph using stoerWagner algorithm." msgstr "" @@ -14080,6 +13972,11 @@ msgstr "" msgid "Using :doc:`pgr_connectedComponents`" msgstr "" +msgid "" +"`Boost: Stoer Wagner min cut `__" +msgstr "" + msgid "https://en.wikipedia.org/wiki/Stoer%E2%80%93Wagner_algorithm" msgstr "" @@ -14109,7 +14006,7 @@ msgid "The strong components of the graph" msgstr "" msgid "" -"Boost: `Strong components `__" msgstr "" @@ -14174,6 +14071,11 @@ msgstr "" msgid "Graph is not a DAG" msgstr "" +msgid "" +"`Boost: topological sort `__" +msgstr "" + msgid "``pgr_transitiveClosure`` - Experimental" msgstr "" @@ -14229,57 +14131,60 @@ msgstr "" msgid "Identifiers of the vertices that are reachable from vertex v." msgstr "" -msgid "https://en.wikipedia.org/wiki/Transitive_closure" +msgid "" +"`Boost: transitive closure `__" msgstr "" -msgid "pgr_trsp - Proposed" +msgid "https://en.wikipedia.org/wiki/Transitive_closure" msgstr "" -msgid "``pgr_trsp`` - routing vertices with restrictions." -msgstr "" +#, fuzzy +msgid "``pgr_trsp``" +msgstr ":doc:`pgr_trsp`" -msgid "New proposed signatures" +msgid "``pgr_trsp`` - routing vertices with restrictions." msgstr "" -msgid "``pgr_trsp`` (`One to One`_)" -msgstr "" +#, fuzzy +msgid "pgr_trsp(One to One)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "``pgr_trsp`` (`One to Many`_)" -msgstr "" +#, fuzzy +msgid "pgr_trsp(One to Many)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "``pgr_trsp`` (`Many to One`_)" -msgstr "" +#, fuzzy +msgid "pgr_trsp(Many to One)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "``pgr_trsp`` (`Many to Many`_)" -msgstr "" +#, fuzzy +msgid "pgr_trsp(Many to Many)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "``pgr_trsp`` (`Combinations`_)" -msgstr "" +#, fuzzy +msgid "pgr_trsp(Combinations)" +msgstr ":doc:`pgr_withPointsCostMatrix`" msgid "Deprecated signatures" msgstr "" -msgid "``pgr_trsp(text,integer,integer,boolean,boolean,text)``" -msgstr "" - -msgid "``pgr_trsp(text,integer,float,integer,float,boolean,boolean,text)``" -msgstr "" - -msgid "``pgr_trspViaVertices(text,anyarray,boolean,boolean,text)``" +msgid "pgr_trsp(text,integer,float,integer,float,boolean,boolean,text)" msgstr "" -msgid "" -"``pgr_trspviaedges(text,integer[],double precision[],boolean,boolean,text)``" +msgid "pgr_trspViaVertices(text,anyarray,boolean,boolean,text)" msgstr "" msgid "New prototypes" msgstr "" -msgid "``pgr_trspViaVertices``" -msgstr "" +#, fuzzy +msgid "pgr_trspViaVertices" +msgstr ":doc:`pgr_extractVertices`" -msgid "``pgr_trspViaEdges``" -msgstr "" +#, fuzzy +msgid "pgr_trspViaEdges" +msgstr ":doc:`pgr_trspVia`" msgid "" "Turn restricted shortest path (TRSP) is an algorithm that receives turn " @@ -14351,19 +14256,14 @@ msgid "" "`Deprecated documentation `_" msgstr "" -msgid "``pgr_trspVia`` - Proposed" -msgstr "" +#, fuzzy +msgid "``pgr_trspVia``" +msgstr ":doc:`pgr_trspVia`" msgid "" "``pgr_trspVia`` Route that goes through a list of vertices with restrictions." msgstr "" -msgid "New proposed function:" -msgstr "" - -msgid "``pgr_trspVia`` (`One Via`_)" -msgstr "" - msgid "" "Given a list of vertices and a graph, this function is equivalent to finding " "the shortest path between :math:`vertex_i` and :math:`vertex_{i+1}` for all :" @@ -14441,17 +14341,15 @@ msgstr "" msgid ":doc:`via-category`" msgstr ":doc:`via-category`" -msgid "``pgr_trspVia_withPoints`` - Proposed" -msgstr "" +#, fuzzy +msgid "``pgr_trspVia_withPoints``" +msgstr ":doc:`pgr_trspVia_withPoints`" msgid "" "``pgr_trspVia_withPoints`` - Route that goes through a list of vertices and/" "or points with restrictions." msgstr "" -msgid "``pgr_trspVia_withPoints`` (`One Via`_)" -msgstr "" - msgid "" "Given a graph, a set of restriction on the graph edges, a set of points on " "the graphs edges and a list of vertices, this function is equivalent to " @@ -14611,30 +14509,12 @@ msgid "" "`pgr_trsp` algorithm. In this case a U turn is been done using the same edge." msgstr "" -msgid "pgr_trsp_withPoints - Proposed" +msgid "``pgr_trsp_withPoints``" msgstr "" msgid "``pgr_trsp_withPoints`` Routing Vertex/Point with restrictions." msgstr "" -msgid "New proposed signatures:" -msgstr "" - -msgid "``pgr_trsp_withPoints`` (`One to One`_)" -msgstr "" - -msgid "``pgr_trsp_withPoints`` (`One to Many`_)" -msgstr "" - -msgid "``pgr_trsp_withPoints`` (`Many to One`_)" -msgstr "" - -msgid "``pgr_trsp_withPoints`` (`Many to Many`_)" -msgstr "" - -msgid "``pgr_trsp_withPoints`` (`Combinations`_)" -msgstr "" - msgid "" "Modify the graph to include points defined by points_sql. Using Dijkstra " "algorithm, find the shortest path" @@ -14743,15 +14623,12 @@ msgid "" "`1` on an undirected graph, with details." msgstr "" -msgid "pgr_turnRestrictedPath - Experimental" +msgid "``pgr_turnRestrictedPath`` - Experimental" msgstr "" msgid "" -"``pgr_turnRestrictedPath`` Using Yen's algorithm Vertex -Vertex routing with " -"restrictions" -msgstr "" - -msgid "New experimental function" +"``pgr_turnRestrictedPath`` Using Yen's algorithm Vertex - Vertex routing " +"with restrictions" msgstr "" msgid "" @@ -14825,7 +14702,7 @@ msgstr "" msgid "pgRouting Version for this documentation" msgstr "" -msgid "pgr_vrpOneDepot - Experimental" +msgid "``pgr_vrpOneDepot`` - Experimental" msgstr "" msgid "**No documentation available**" @@ -14834,8 +14711,9 @@ msgstr "" msgid "**TBD**" msgstr "" -msgid "``pgr_withPoints`` - Proposed" -msgstr "" +#, fuzzy +msgid "``pgr_withPoints``" +msgstr ":doc:`pgr_withPoints`" msgid "" "``pgr_withPoints`` - Returns the shortest path in a graph with additional " @@ -14977,8 +14855,9 @@ msgstr "" msgid "Passes in front or visits with left side driving." msgstr "" -msgid "``pgr_withPointsCost`` - Proposed" -msgstr "" +#, fuzzy +msgid "``pgr_withPointsCost``" +msgstr ":doc:`pgr_withPointsCost`" msgid "" "``pgr_withPointsCost`` - Calculates the shortest path and returns only the " @@ -15121,8 +15000,9 @@ msgstr "" msgid "Does not matter driving side driving topology" msgstr "" -msgid "``pgr_withPointsCostMatrix`` - proposed" -msgstr "" +#, fuzzy +msgid "``pgr_withPointsCostMatrix``" +msgstr ":doc:`pgr_withPointsCostMatrix`" msgid "" "``pgr_withPointsCostMatrix`` - Calculates a cost matrix using :doc:" @@ -15153,8 +15033,9 @@ msgid "" "locations on the graph of point `(2.9, 1.8)`." msgstr "" -msgid "``pgr_withPointsDD`` - Proposed" -msgstr "" +#, fuzzy +msgid "``pgr_withPointsDD``" +msgstr ":doc:`pgr_withPoints`" msgid "" "``pgr_withPointsDD`` - Returns the driving **distance** from a starting " @@ -15166,8 +15047,13 @@ msgid "" "unnamed compulsory **driving side**." msgstr "" -msgid "``pgr_withPointsDD`` (`Single vertex`)" -msgstr "" +#, fuzzy +msgid "pgr_withPointsDD(Single vertex)" +msgstr ":doc:`pgr_withPointsCostMatrix`" + +#, fuzzy +msgid "pgr_withPointsDD(Multiple vertices)" +msgstr ":doc:`pgr_withPointsCostMatrix`" msgid "Added ``depth``, ``pred`` and ``start_vid`` column." msgstr "" @@ -15184,13 +15070,12 @@ msgid "" msgstr "" msgid "" -"``pgr_withpointsdd(text,text,bigint,double precision,boolean,character," -"boolean)``" +"pgr_withpointsdd(text,text,bigint,double precision,boolean,character,boolean)" msgstr "" msgid "" -"``pgr_withpointsdd(text,text,anyarray,double precision,boolean,character," -"boolean,boolean)``" +"pgr_withpointsdd(text,text,anyarray,double precision,boolean,character," +"boolean,boolean)" msgstr "" msgid "" @@ -15297,8 +15182,9 @@ msgstr "" msgid ":doc:`pgr_alphaShape`" msgstr ":doc:`pgr_alphaShape`" -msgid "pgr_withPointsKSP - Proposed" -msgstr "" +#, fuzzy +msgid "``pgr_withPointsKSP``" +msgstr ":doc:`pgr_withPointsCostMatrix`" msgid "" "``pgr_withPointsKSP`` — Yen's algorithm for K shortest paths using Dijkstra." @@ -15308,30 +15194,27 @@ msgid "Standarizing output columns to |nksp-result|" msgstr "" #, fuzzy -msgid "``pgr_withPointsKSP`` (One to One)" +msgid "pgr_withPointsKSP(One to One)" msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "New overload functions" -msgstr "" - #, fuzzy -msgid "``pgr_withPointsKSP`` (One to Many)" +msgid "pgr_withPointsKSP(One to Many)" msgstr ":doc:`pgr_withPointsCostMatrix`" #, fuzzy -msgid "``pgr_withPointsKSP`` (Many to One)" +msgid "pgr_withPointsKSP(Many to One)" msgstr ":doc:`pgr_withPointsCostMatrix`" #, fuzzy -msgid "``pgr_withPointsKSP`` (Many to Many)" +msgid "pgr_withPointsKSP(Many to Many)" msgstr ":doc:`pgr_withPointsCostMatrix`" #, fuzzy -msgid "``pgr_withPointsKSP`` (Combinations)" +msgid "pgr_withPointsKSP(Combinations)" msgstr ":doc:`pgr_withPointsCostMatrix`" msgid "" -"``pgr_withpointsksp(text,text,bigint,bigint,integer,boolean,boolean,char," +"pgr_withpointsksp(text,text,bigint,bigint,integer,boolean,boolean,char," "boolean)``" msgstr "" @@ -15439,166 +15322,331 @@ msgid "" "to point :math:`3` with details." msgstr "" -msgid "Right driving side" +msgid "Right driving side" +msgstr "" + +msgid "" +"Get :math:`2` paths using right side driving topology from, point :math:`1` " +"to point :math:`2` with heap paths and details." +msgstr "" + +#, fuzzy +msgid "``pgr_withPointsVia``" +msgstr ":doc:`pgr_withPointsVia`" + +msgid "" +"``pgr_withPointsVia`` - Route that goes through a list of vertices and/or " +"points." +msgstr "" + +msgid "" +"Given a graph, a set of points on the graphs edges and a list of vertices, " +"this function is equivalent to finding the shortest path between :math:" +"`vertex_i` and :math:`vertex_{i+1}` (where :math:`vertex` can be a vertex or " +"a point on the graph) for all :math:`i < size\\_of(via\\;vertices)`." +msgstr "" + +msgid "" +"pgr_withPointsVia(`Edges SQL`_, `Points SQL`_, **via vertices**, " +"[**options**])" +msgstr "" + +msgid "" +"Find the route that visits the vertices :math:`\\{ -6, 15, -1\\}` in that " +"order on a **directed** graph." +msgstr "" + +msgid "Use :doc:`pgr_findCloseEdges` in the `Points SQL`_" +msgstr "" + +msgid "" +"All this examples are about the route that visits the vertices :math:`\\{-1, " +"7, -3, 16, 15\\}` in that order on a **directed** graph." +msgstr "" + +msgid "Prim - Family of functions" +msgstr "" + +msgid "" +"The prim algorithm was developed in 1930 by Czech mathematician Vojtěch " +"Jarník. It is a greedy algorithm that finds a minimum spanning tree for a " +"weighted undirected graph. This means it finds a subset of the edges that " +"forms a tree that includes every vertex, where the total weight of all the " +"edges in the tree is minimized. The algorithm operates by building this tree " +"one vertex at a time, from an arbitrary starting vertex, at each step adding " +"the cheapest possible connection from the tree to another vertex." +msgstr "" + +msgid "" +"This algorithms find the minimum spanning forest in a possibly disconnected " +"graph; in contrast, the most basic form of Prim's algorithm only finds " +"minimum spanning trees in connected graphs. However, running Prim's " +"algorithm separately for each connected component of the graph, then it is " +"called minimum spanning forest." +msgstr "" + +msgid "" +"From boost Graph: \"The algorithm as implemented in Boost.Graph does not " +"produce correct results on graphs with parallel edges.\"" +msgstr "" + +msgid "" +"Boost: `Prim's algorithm `__" +msgstr "" + +msgid "" +"Wikipedia: `Prim's algorithm `__" +msgstr "" + +msgid "Proposed Functions" +msgstr "" + +msgid ":doc:`pgr_withPoints` - Route from/to points anywhere on the graph." +msgstr "" + +msgid ":doc:`pgr_withPointsCost` - Costs of the shortest paths." +msgstr "" + +msgid ":doc:`pgr_withPointsCostMatrix` - Costs of the shortest paths." +msgstr "" + +msgid ":doc:`pgr_withPointsKSP` - K shortest paths." +msgstr "" + +msgid ":doc:`pgr_withPointsDD` - Driving distance." +msgstr "" + +msgid ":doc:`pgr_withPointsVia` - Via routing" +msgstr "" + +msgid "" +":doc:`pgr_lineGraph` - Transformation algorithm for generating a Line Graph." +msgstr "" + +msgid ":doc:`withPoints-family` - Functions based on Dijkstra algorithm." +msgstr "" + +msgid "From the :doc:`TRSP-family`:" +msgstr "" + +msgid "Reference" +msgstr "" + +msgid "Release Notes" +msgstr "" + +msgid "" +"To see the full list of changes check the list of `Git commits `_ on Github." +msgstr "" + +msgid "Mayors" +msgstr "" + +msgid "pgRouting 4" +msgstr "" + +msgid "Minors 4.x" +msgstr "" + +msgid "pgRouting 4.0" +msgstr "" + +msgid "pgRouting 3" +msgstr "" + +msgid "Minors 3.x" +msgstr "" + +msgid "pgRouting 3.8" +msgstr "" + +msgid "pgRouting 3.8.0 Release Notes" +msgstr "" + +msgid "Promotion to official function of pgRouting." +msgstr "" + +msgid "pgr_extractVertices" +msgstr "" + +msgid "pgr_degree" +msgstr "" + +#, fuzzy +msgid "pgr_findCloseEdges" +msgstr ":doc:`pgr_findCloseEdges`" + +msgid "Official functions changes" msgstr "" msgid "" -"Get :math:`2` paths using right side driving topology from, point :math:`1` " -"to point :math:`2` with heap paths and details." +"`#2786 `__: " +"pgr_contraction" msgstr "" -msgid "``pgr_withPointsVia`` - Proposed" +#, fuzzy +msgid "New proposed functions" +msgstr ":doc:`routingFunctions`" + +#, fuzzy +msgid "Contraction" +msgstr "소개" + +msgid "" +"`#2790 `__: " +"pgr_contractionDeadEnd" msgstr "" msgid "" -"``pgr_withPointsVia`` - Route that goes through a list of vertices and/or " -"points." +"`#2791 `__: " +"pgr_contractionLinear" msgstr "" -msgid "New **proposed** function ``pgr_withPointsVia`` (`One Via`_)" +msgid "pgRouting 3.7" msgstr "" -msgid "" -"Given a graph, a set of points on the graphs edges and a list of vertices, " -"this function is equivalent to finding the shortest path between :math:" -"`vertex_i` and :math:`vertex_{i+1}` (where :math:`vertex` can be a vertex or " -"a point on the graph) for all :math:`i < size\\_of(via\\;vertices)`." +msgid "pgRouting 3.7.3 Release Notes" msgstr "" msgid "" -"pgr_withPointsVia(`Edges SQL`_, `Points SQL`_, **via vertices**, " -"[**options**])" +"To see all issues & pull requests closed by this release see the `Git closed " +"milestone for 3.7.3 `__" msgstr "" msgid "" -"Find the route that visits the vertices :math:`\\{ -6, 15, -1\\}` in that " -"order on a **directed** graph." +"`#2731 `__ Build Failure " +"on Ubuntu 22" msgstr "" -msgid "Use :doc:`pgr_findCloseEdges` in the `Points SQL`_" +msgid "pgRouting 3.7.2 Release Notes" msgstr "" msgid "" -"All this examples are about the route that visits the vertices :math:`\\{-1, " -"7, -3, 16, 15\\}` in that order on a **directed** graph." +"To see all issues & pull requests closed by this release see the `Git closed " +"milestone for 3.7.2 `__" msgstr "" -msgid "Prim - Family of functions" +msgid "Build" msgstr "" msgid "" -"The prim algorithm was developed in 1930 by Czech mathematician Vojtěch " -"Jarník. It is a greedy algorithm that finds a minimum spanning tree for a " -"weighted undirected graph. This means it finds a subset of the edges that " -"forms a tree that includes every vertex, where the total weight of all the " -"edges in the tree is minimized. The algorithm operates by building this tree " -"one vertex at a time, from an arbitrary starting vertex, at each step adding " -"the cheapest possible connection from the tree to another vertex." +"`#2713 `__ cmake missing " +"some policies and min version" msgstr "" -msgid "" -"This algorithms find the minimum spanning forest in a possibly disconnected " -"graph; in contrast, the most basic form of Prim's algorithm only finds " -"minimum spanning trees in connected graphs. However, running Prim's " -"algorithm separately for each connected component of the graph, then it is " -"called minimum spanning forest." +msgid "Using OLD policies: CMP0148, CMP0144, CMP0167" msgstr "" -msgid "" -"From boost Graph: \"The algorithm as implemented in Boost.Graph does not " -"produce correct results on graphs with parallel edges.\"" +msgid "Minimum cmake version 3.12" msgstr "" msgid "" -"Boost: `Prim's algorithm `__" +"`#2707 `__ Build failure " +"in pgRouting 3.7.1 on Alpine" msgstr "" msgid "" -"Wikipedia: `Prim's algorithm `__" -msgstr "" - -msgid "Proposed Functions" -msgstr "" - -msgid ":doc:`pgr_withPoints` - Route from/to points anywhere on the graph." +"`#2706 `__ winnie crashing " +"on pgr_betweennessCentrality" msgstr "" -msgid ":doc:`pgr_withPointsCost` - Costs of the shortest paths." +msgid "pgRouting 3.7.1 Release Notes" msgstr "" -msgid ":doc:`pgr_withPointsCostMatrix` - Costs of the shortest paths." +msgid "" +"To see all issues & pull requests closed by this release see the `Git closed " +"milestone for 3.7.1 `__" msgstr "" -msgid ":doc:`pgr_withPointsKSP` - K shortest paths." +msgid "" +"`#2680 `__ fails to " +"compile under mingw64 gcc 13.2" msgstr "" -msgid ":doc:`pgr_withPointsDD` - Driving distance." +msgid "" +"`#2689 `__ When point is a " +"vertex, the withPoints family do not return results." msgstr "" -msgid ":doc:`pgr_withPointsVia` - Via routing" +msgid "C/C++ code enhancemet" msgstr "" -msgid "These proposed functions do not modify the database." -msgstr "" +#, fuzzy +msgid "TRSP family" +msgstr ":doc:`TRSP-family`" -msgid "" -":doc:`pgr_degree` - Returns a set of vertices and corresponding count of " -"incidet edges to the vertex." +msgid "pgRouting 3.7.0 Release Notes" msgstr "" msgid "" -":doc:`pgr_extractVertices` - Extracts vertex information based on the edge " -"table information." +"To see all issues & pull requests closed by this release see the `Git closed " +"milestone for 3.7.0 `__" msgstr "" msgid "" -":doc:`pgr_lineGraph` - Transformation algorithm for generating a Line Graph." +"`#2656 `__ Stop support of " +"PostgreSQL12 on pgrouting v3.7" msgstr "" -msgid ":doc:`pgr_withPointsVia`" -msgstr ":doc:`pgr_withPointsVia`" - -msgid ":doc:`pgr_trspVia`" -msgstr ":doc:`pgr_trspVia`" +#, fuzzy +msgid "Stopping support of PostgreSQL 12" +msgstr "PostgreSQL 설정" -msgid ":doc:`pgr_trspVia_withPoints`" -msgstr ":doc:`pgr_trspVia_withPoints`" +msgid "CI does not test for PostgreSQL 12" +msgstr "" -msgid ":doc:`withPoints-family` - Functions based on Dijkstra algorithm." +msgid "New experimental functions" msgstr "" -msgid "From the :doc:`TRSP-family`:" +msgid "Metrics" msgstr "" -msgid "Utilities" +msgid "pgr_betweennessCentrality" msgstr "" -msgid ":doc:`pgr_findCloseEdges`" -msgstr ":doc:`pgr_findCloseEdges`" +msgid "" +"`#2605 `__ Standardize " +"spanning tree functions output" +msgstr "" -msgid "Reference" +msgid "Functions:" msgstr "" -msgid "Release Notes" +msgid "Experimental promoted to proposed." msgstr "" msgid "" -"To see the full list of changes check the list of `Git commits `_ on Github." +"`#2635 `__ pgr_LineGraph " +"ignores directed flag and use negative values for identifiers." msgstr "" -msgid "Mayors" +#, fuzzy +msgid "``pgr_lineGraph``" +msgstr ":doc:`pgr_analyzeGraph`" + +msgid "Code enhancement" msgstr "" -msgid "pgRouting 3" +msgid "" +"`#2599 `__ Driving " +"distance cleanup" msgstr "" -msgid "Minors 3.x" +msgid "" +"`#2607 `__ Read postgresql " +"data on C++" msgstr "" -msgid "pgRouting 3.7" +msgid "" +"`#2614 `__ Clang tidy does " +"not work" msgstr "" msgid "pgRouting 3.6" @@ -15613,9 +15661,6 @@ msgid "" "utf8=%E2%9C%93&q=milestone%3A%22Release%203.6.3%22>`__" msgstr "" -msgid "Build" -msgstr "" - msgid "Explicit minimum requirements:" msgstr "" @@ -15719,55 +15764,38 @@ msgid "" msgstr "" msgid "" -"`#2516 `__ Standarize " +"`#2516 `__ Standardize " "output pgr_aStar" msgstr "" -msgid "" -"``pgr_aStar`` (`One to One`) added ``start_vid`` and ``end_vid`` columns." -msgstr "" - -msgid "``pgr_aStar`` (`One to Many`) added ``end_vid`` column." -msgstr "" - -msgid "``pgr_aStar`` (`Many to One`) added ``start_vid`` column." +msgid "Standardize output columns to |short-generic-result|" msgstr "" msgid "" -"`#2523 `__ Standarize " +"`#2523 `__ Standardize " "output pgr_bdAstar" msgstr "" msgid "" -"``pgr_bdAstar`` (`One to One`) added ``start_vid`` and ``end_vid`` columns." -msgstr "" - -msgid "``pgr_bdAstar`` (`One to Many`) added ``end_vid`` column." -msgstr "" - -msgid "``pgr_bdAstar`` (`Many to One`) added ``start_vid`` column." -msgstr "" - -msgid "" -"`#2547 `__ Standarize " +"`#2547 `__ Standardize " "output and modifying signature pgr_KSP" msgstr "" msgid "" -"`#2548 `__ Standarize " -"output pgr_drivingdistance" +"`#2548 `__ Standardize " +"output pgr_drivingDistance" msgstr "" msgid "Proposed functions changes" msgstr "" msgid "" -"`#2544 `__ Standarize " +"`#2544 `__ Standardize " "output and modifying signature pgr_withPointsDD" msgstr "" msgid "" -"`#2546 `__ Standarize " +"`#2546 `__ Standardize " "output and modifying signature pgr_withPointsKSP" msgstr "" @@ -15811,11 +15839,11 @@ msgid "" "history links." msgstr "" -msgid "..rubric:: SQL standarization" +msgid "..rubric:: Standardize SQL" msgstr "" msgid "" -"`#2555 `__ standarize " +"`#2555 `__ Standardize " "deprecated messages" msgstr "" @@ -15841,9 +15869,6 @@ msgstr "" msgid "Changes on the documentation to the following:" msgstr "" -msgid "pgr_degree" -msgstr "" - msgid "pgr_dijkstra" msgstr "" @@ -15861,7 +15886,7 @@ msgstr "" msgid "" "`#2565 `__ " -"pgr_pgr_lengauerTarjanDominatorTree triggers an assertion" +"pgr_lengauerTarjanDominatorTree triggers an assertion" msgstr "" msgid "SQL enhancements" @@ -15902,16 +15927,6 @@ msgstr "" msgid "Dijkstra" msgstr "" -msgid "" -"``pgr_dijkstra`` (`One to One`) added ``start_vid`` and ``end_vid`` columns." -msgstr "" - -msgid "``pgr_dijkstra`` (`One to Many`) added ``end_vid`` column." -msgstr "" - -msgid "``pgr_dijkstra`` (`Many to One`) added ``start_vid`` column." -msgstr "" - msgid "pgRouting 3.4" msgstr "" @@ -15968,14 +15983,16 @@ msgid "" "doesn't give all correct shortest path" msgstr "" -msgid "New proposed functions" -msgstr "" +#, fuzzy +msgid "New proposed functions." +msgstr ":doc:`routingFunctions`" msgid "With points" msgstr "" -msgid "``pgr_withPointsVia`` (One Via)" -msgstr "" +#, fuzzy +msgid "pgr_withPointsVia(One Via)" +msgstr ":doc:`pgr_withPointsCostMatrix`" msgid "Turn Restrictions" msgstr "" @@ -15983,82 +16000,76 @@ msgstr "" msgid "Via with turn restrictions" msgstr "" -msgid "``pgr_trspVia`` (One Via)" -msgstr "" - -msgid "``pgr_trspVia_withPoints`` (One Via)" -msgstr "" - -msgid "``pgr_trsp``" -msgstr "" - -msgid "``pgr_trsp`` (One to One)" +msgid "pgr_trspVia(One Via)" msgstr "" -msgid "``pgr_trsp`` (One to Many)" -msgstr "" - -msgid "``pgr_trsp`` (Many to One)" -msgstr "" - -msgid "``pgr_trsp`` (Many to Many)" -msgstr "" +#, fuzzy +msgid "pgr_trspVia_withPoints(One Via)" +msgstr ":doc:`pgr_trspVia_withPoints`" -msgid "``pgr_trsp`` (Combinations)" -msgstr "" +#, fuzzy +msgid "pgr_trsp_withPoints(One to One)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "``pgr_trsp_withPoints``" -msgstr "" +#, fuzzy +msgid "pgr_trsp_withPoints(One to Many)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "``pgr_trsp_withPoints`` (One to One)" -msgstr "" +#, fuzzy +msgid "pgr_trsp_withPoints(Many to One)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "``pgr_trsp_withPoints`` (One to Many)" -msgstr "" +#, fuzzy +msgid "pgr_trsp_withPoints(Many to Many)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "``pgr_trsp_withPoints`` (Many to One)" -msgstr "" +#, fuzzy +msgid "pgr_trsp_withPoints(Combinations)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "``pgr_trsp_withPoints`` (Many to Many)" +msgid "Topology" msgstr "" -msgid "``pgr_trsp_withPoints`` (Combinations)" +msgid "Utilities" msgstr "" -msgid "Topology" -msgstr "" +#, fuzzy +msgid "pgr_findCloseEdges(One point)" +msgstr ":doc:`pgr_findCloseEdges`" -msgid "``pgr_degree``" -msgstr "" +#, fuzzy +msgid "pgr_findCloseEdges(Many points)" +msgstr ":doc:`pgr_findCloseEdges`" -msgid "``pgr_findCloseEdges`` (One point)" +msgid "Ordering" msgstr "" -msgid "``pgr_findCloseEdges`` (Many points)" +msgid "pgr_cuthillMckeeOrdering" msgstr "" -msgid "Ordering" +msgid "Unclassified" msgstr "" -msgid "``pgr_cuthillMckeeOrdering``" -msgstr "" +#, fuzzy +msgid "pgr_hawickCircuits" +msgstr ":doc:`pgr_hawickCircuits`" msgid "Flow functions" msgstr "" -msgid "``pgr_maxCardinalityMatch(text)``" +msgid "pgr_maxCardinalityMatch(text)" msgstr "" -msgid "Deprecating ``pgr_maxCardinalityMatch(text,boolean)``" +msgid "Deprecating: pgr_maxCardinalityMatch(text,boolean)" msgstr "" msgid "Deprecated Functions" msgstr "" -msgid "``pgr_trsp(text,integer,float8,integer,float8,boolean,boolean,text)``" +msgid "pgr_trsp(text,integer,float8,integer,float8,boolean,boolean,text)" msgstr "" -msgid "``pgr_trspViaEdges(text,integer[],float[],boolean,boolean,text)``" +msgid "pgr_trspViaEdges(text,integer[],float[],boolean,boolean,text)" msgstr "" msgid "pgRouting 3.3" @@ -16244,9 +16255,6 @@ msgstr "" msgid "pgr_sequentialVertexColoring" msgstr "" -msgid "pgr_extractVertices" -msgstr "" - msgid "Traversal" msgstr "" @@ -16320,12 +16328,6 @@ msgstr "" msgid "Removing support for Boost v1.53, v1.54 & v1.55" msgstr "" -msgid "pgr_bellmanFord(Combinations)" -msgstr "" - -msgid "pgr_binaryBreadthFirstSearch(Combinations)" -msgstr "" - msgid "pgr_bipartite" msgstr "" @@ -16335,9 +16337,6 @@ msgstr "" msgid "Dijkstra Near" msgstr "" -msgid "pgr_edwardMoore(Combinations)" -msgstr "" - msgid "pgr_isPlanar" msgstr "" @@ -16347,49 +16346,13 @@ msgstr "" msgid "pgr_makeConnected" msgstr "" -msgid "pgr_maxFlowMinCost(Combinations)" -msgstr "" - -msgid "pgr_maxFlowMinCost_Cost(Combinations)" -msgstr "" - msgid "Astar" msgstr "" -msgid "pgr_aStar(Combinations)" -msgstr "" - -msgid "pgr_aStarCost(Combinations)" -msgstr "" - -msgid "Bidirectional Astar" -msgstr "" - -msgid "pgr_bdAstar(Combinations)" -msgstr "" - -msgid "pgr_bdAstarCost(Combinations)" -msgstr "" - -msgid "Bidirectional Dijkstra" -msgstr "" - -msgid "pgr_bdDijkstra(Combinations)" -msgstr "" - -msgid "pgr_bdDijkstraCost(Combinations)" -msgstr "" - -msgid "pgr_boykovKolmogorov(Combinations)" -msgstr "" - -msgid "pgr_edmondsKarp(Combinations)" -msgstr "" - -msgid "pgr_maxFlow(Combinations)" +msgid "Bidirectional Astar" msgstr "" -msgid "pgr_pushRelabel(Combinations)" +msgid "Bidirectional Dijkstra" msgstr "" msgid "pgRouting 3.1" @@ -16626,7 +16589,7 @@ msgid "" "information" msgstr "" -msgid "New functions" +msgid "New Functions" msgstr "" msgid "Kruskal family" @@ -16665,149 +16628,120 @@ msgstr "" msgid "aStar Family" msgstr "" -msgid "pgr_aStar(one to many)" -msgstr "" - -msgid "pgr_aStar(many to one)" -msgstr "" - -msgid "pgr_aStar(many to many)" -msgstr "" - -msgid "pgr_aStarCost(one to one)" -msgstr "" - -msgid "pgr_aStarCost(one to many)" -msgstr "" - -msgid "pgr_aStarCost(many to one)" -msgstr "" - -msgid "pgr_aStarCost(many to many)" -msgstr "" +#, fuzzy +msgid "pgr_aStarCost(One to One)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "pgr_aStarCostMatrix(one to one)" -msgstr "" +#, fuzzy +msgid "pgr_aStarCost(One to Many)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "pgr_aStarCostMatrix(one to many)" -msgstr "" +#, fuzzy +msgid "pgr_aStarCost(Many to One)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "pgr_aStarCostMatrix(many to one)" -msgstr "" +#, fuzzy +msgid "pgr_aStarCost(Many to Many)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "pgr_aStarCostMatrix(many to many)" -msgstr "" +#, fuzzy +msgid "pgr_aStarCostMatrix" +msgstr ":doc:`pgr_aStarCostMatrix`" msgid "bdAstar Family" msgstr "" -msgid "pgr_bdAstar(one to many)" -msgstr "" - -msgid "pgr_bdAstar(many to one)" -msgstr "" - -msgid "pgr_bdAstar(many to many)" -msgstr "" - -msgid "pgr_bdAstarCost(one to one)" -msgstr "" - -msgid "pgr_bdAstarCost(one to many)" -msgstr "" - -msgid "pgr_bdAstarCost(many to one)" -msgstr "" - -msgid "pgr_bdAstarCost(many to many)" -msgstr "" +#, fuzzy +msgid "pgr_bdAstarCost(One to One)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "pgr_bdAstarCostMatrix(one to one)" -msgstr "" +#, fuzzy +msgid "pgr_bdAstarCost(One to Many)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "pgr_bdAstarCostMatrix(one to many)" -msgstr "" +#, fuzzy +msgid "pgr_bdAstarCost(Many to One)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "pgr_bdAstarCostMatrix(many to one)" -msgstr "" +#, fuzzy +msgid "pgr_bdAstarCost(Many to Many)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "pgr_bdAstarCostMatrix(many to many)" +msgid "pgr_bdAstarCostMatrix" msgstr "" msgid "bdDijkstra Family" msgstr "" -msgid "pgr_bdDijkstra(one to many)" -msgstr "" - -msgid "pgr_bdDijkstra(many to one)" -msgstr "" - -msgid "pgr_bdDijkstra(many to many)" -msgstr "" - -msgid "pgr_bdDijkstraCost(one to one)" -msgstr "" - -msgid "pgr_bdDijkstraCost(one to many)" -msgstr "" - -msgid "pgr_bdDijkstraCost(many to one)" -msgstr "" - -msgid "pgr_bdDijkstraCost(many to many)" -msgstr "" +#, fuzzy +msgid "pgr_bdDijkstraCost(One to One)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "pgr_bdDijkstraCostMatrix(one to one)" -msgstr "" +#, fuzzy +msgid "pgr_bdDijkstraCost(One to Many)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "pgr_bdDijkstraCostMatrix(one to many)" -msgstr "" +#, fuzzy +msgid "pgr_bdDijkstraCost(Many to One)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "pgr_bdDijkstraCostMatrix(many to one)" -msgstr "" +#, fuzzy +msgid "pgr_bdDijkstraCost(Many to Many)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "pgr_bdDijkstraCostMatrix(many to many)" +msgid "pgr_bdDijkstraCostMatrix" msgstr "" msgid "Flow Family" msgstr "" -msgid "pgr_pushRelabel(one to one)" -msgstr "" +#, fuzzy +msgid "pgr_pushRelabel(One to One)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "pgr_pushRelabel(one to many)" -msgstr "" +#, fuzzy +msgid "pgr_pushRelabel(One to Many)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "pgr_pushRelabel(many to one)" -msgstr "" +#, fuzzy +msgid "pgr_pushRelabel(Many to One)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "pgr_pushRelabel(many to many)" -msgstr "" +#, fuzzy +msgid "pgr_pushRelabel(Many to Many)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "pgr_edmondsKarp(one to one)" -msgstr "" +#, fuzzy +msgid "pgr_edmondsKarp(One to One)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "pgr_edmondsKarp(one to many)" -msgstr "" +#, fuzzy +msgid "pgr_edmondsKarp(One to Many)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "pgr_edmondsKarp(many to one)" -msgstr "" +#, fuzzy +msgid "pgr_edmondsKarp(Many to One)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "pgr_edmondsKarp(many to many)" -msgstr "" +#, fuzzy +msgid "pgr_edmondsKarp(Many to Many)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "pgr_boykovKolmogorov (one to one)" -msgstr "" +#, fuzzy +msgid "pgr_boykovKolmogorov (One to One)" +msgstr ":doc:`pgr_boykovKolmogorov`" -msgid "pgr_boykovKolmogorov (one to many)" -msgstr "" +#, fuzzy +msgid "pgr_boykovKolmogorov (One to Many)" +msgstr ":doc:`pgr_boykovKolmogorov`" -msgid "pgr_boykovKolmogorov (many to one)" -msgstr "" +#, fuzzy +msgid "pgr_boykovKolmogorov (Many to One)" +msgstr ":doc:`pgr_boykovKolmogorov`" -msgid "pgr_boykovKolmogorov (many to many)" -msgstr "" +#, fuzzy +msgid "pgr_boykovKolmogorov (Many to Many)" +msgstr ":doc:`pgr_withPointsCostMatrix`" msgid "pgr_maxCardinalityMatching" msgstr "" @@ -16815,21 +16749,28 @@ msgstr "" msgid "pgr_maxFlow" msgstr "" -msgid "pgr_edgeDisjointPaths(one to one)" -msgstr "" +#, fuzzy +msgid "pgr_edgeDisjointPaths(One to One)" +msgstr ":doc:`pgr_edgeDisjointPaths`" -msgid "pgr_edgeDisjointPaths(one to many)" -msgstr "" +#, fuzzy +msgid "pgr_edgeDisjointPaths(One to Many)" +msgstr ":doc:`pgr_edgeDisjointPaths`" -msgid "pgr_edgeDisjointPaths(many to one)" -msgstr "" +#, fuzzy +msgid "pgr_edgeDisjointPaths(Many to One)" +msgstr ":doc:`pgr_edgeDisjointPaths`" -msgid "pgr_edgeDisjointPaths(many to many)" -msgstr "" +#, fuzzy +msgid "pgr_edgeDisjointPaths(Many to Many)" +msgstr ":doc:`pgr_edgeDisjointPaths`" msgid "Components family" msgstr "" +msgid "pgr_connectedComponents" +msgstr "" + msgid "pgr_strongComponents" msgstr "" @@ -17016,7 +16957,7 @@ msgstr "" msgid "pgr_johnson" msgstr "" -msgid "pgr_astar" +msgid "pgr_aStar" msgstr "" msgid "pgr_bdAstar" @@ -17037,6 +16978,9 @@ msgstr "" msgid "pgr_drivingDistance" msgstr "" +msgid "pgr_KSP" +msgstr "" + msgid "pgr_dijkstraVia (proposed)" msgstr "" @@ -17235,23 +17179,15 @@ msgstr "" msgid "Parameter names changed" msgstr "" -msgid "The many version results are the union of the one to one version" +msgid "The many version results are the union of the One to One version" msgstr "" msgid "New Signatures" msgstr "" -msgid "pgr_bdAstar(one to one)" -msgstr "" - -msgid "New Proposed functions" -msgstr "" - -msgid "pgr_bdAstarCostMatrix" -msgstr "" - -msgid "pgr_bdDijkstraCostMatrix" -msgstr "" +#, fuzzy +msgid "pgr_bdAstar(One to One)" +msgstr ":doc:`pgr_withPointsCostMatrix`" msgid "pgr_lineGraph" msgstr "" @@ -17333,31 +17269,7 @@ msgstr "" msgid "pgr_bdDijkstra" msgstr "" -msgid "New Proposed Signatures" -msgstr "" - -msgid "pgr_astar(one to many)" -msgstr "" - -msgid "pgr_astar(many to one)" -msgstr "" - -msgid "pgr_astar(many to many)" -msgstr "" - -msgid "pgr_astarCost(one to one)" -msgstr "" - -msgid "pgr_astarCost(one to many)" -msgstr "" - -msgid "pgr_astarCost(many to one)" -msgstr "" - -msgid "pgr_astarCost(many to many)" -msgstr "" - -msgid "pgr_astarCostMatrix" +msgid "Deprecated signatures." msgstr "" msgid "pgr_bddijkstra - use pgr_bdDijkstra instead" @@ -17429,52 +17341,50 @@ msgstr "" msgid "pgr_TSP" msgstr "" -msgid "pgr_aStar" -msgstr "" - -msgid "New Functions" -msgstr "" - msgid "pgr_eucledianTSP" msgstr "" -msgid "pgr_withPointsCostMatrix" -msgstr "" - -msgid "pgr_maxFlowPushRelabel(one to one)" +msgid "pgr_maxFlowPushRelabel(One to One)" msgstr "" -msgid "pgr_maxFlowPushRelabel(one to many)" -msgstr "" +#, fuzzy +msgid "pgr_maxFlowPushRelabel(One to Many)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "pgr_maxFlowPushRelabel(many to one)" -msgstr "" +#, fuzzy +msgid "pgr_maxFlowPushRelabel(Many to One)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "pgr_maxFlowPushRelabel(many to many)" -msgstr "" +#, fuzzy +msgid "pgr_maxFlowPushRelabel(Many to Many)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "pgr_maxFlowEdmondsKarp(one to one)" -msgstr "" +#, fuzzy +msgid "pgr_maxFlowEdmondsKarp(One to One)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "pgr_maxFlowEdmondsKarp(one to many)" -msgstr "" +#, fuzzy +msgid "pgr_maxFlowEdmondsKarp(One to Many)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "pgr_maxFlowEdmondsKarp(many to one)" -msgstr "" +#, fuzzy +msgid "pgr_maxFlowEdmondsKarp(Many to One)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "pgr_maxFlowEdmondsKarp(many to many)" -msgstr "" +#, fuzzy +msgid "pgr_maxFlowEdmondsKarp(Many to Many)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "pgr_maxFlowBoykovKolmogorov (one to one)" +msgid "pgr_maxFlowBoykovKolmogorov (One to One)" msgstr "" -msgid "pgr_maxFlowBoykovKolmogorov (one to many)" +msgid "pgr_maxFlowBoykovKolmogorov (One to Many)" msgstr "" -msgid "pgr_maxFlowBoykovKolmogorov (many to one)" +msgid "pgr_maxFlowBoykovKolmogorov (Many to One)" msgstr "" -msgid "pgr_maxFlowBoykovKolmogorov (many to many)" +msgid "pgr_maxFlowBoykovKolmogorov (Many to Many)" msgstr "" msgid "pgr_maximumCardinalityMatching" @@ -17486,7 +17396,7 @@ msgstr "" msgid "pgr_tsp - use pgr_TSP or pgr_eucledianTSP instead" msgstr "" -msgid "pgr_astar - use pgr_aStar instead" +msgid "pgr_aStar - use pgr_aStar instead" msgstr "" msgid "pgr_flip_edges" @@ -17573,6 +17483,9 @@ msgstr "" msgid "Improvements" msgstr "" +msgid "pgr_nodeNetwork" +msgstr "" + msgid "Adding a row_where and outall optional parameters" msgstr "" @@ -17585,44 +17498,56 @@ msgstr "" msgid "pgr_Johnson" msgstr "" -msgid "pgr_dijkstraCost(one to one)" -msgstr "" +#, fuzzy +msgid "pgr_dijkstraCost(One to One)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "pgr_dijkstraCost(one to many)" -msgstr "" +#, fuzzy +msgid "pgr_dijkstraCost(One to Many)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "pgr_dijkstraCost(many to one)" -msgstr "" +#, fuzzy +msgid "pgr_dijkstraCost(Many to One)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "pgr_dijkstraCost(many to many)" -msgstr "" +#, fuzzy +msgid "pgr_dijkstraCost(Many to Many)" +msgstr ":doc:`pgr_withPointsCostMatrix`" msgid "Proposed Functionality" msgstr "" -msgid "pgr_withPoints(one to one)" -msgstr "" +#, fuzzy +msgid "pgr_withPoints(One to One)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "pgr_withPoints(one to many)" -msgstr "" +#, fuzzy +msgid "pgr_withPoints(One to Many)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "pgr_withPoints(many to one)" -msgstr "" +#, fuzzy +msgid "pgr_withPoints(Many to One)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "pgr_withPoints(many to many)" -msgstr "" +#, fuzzy +msgid "pgr_withPoints(Many to Many)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "pgr_withPointsCost(one to one)" -msgstr "" +#, fuzzy +msgid "pgr_withPointsCost(One to One)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "pgr_withPointsCost(one to many)" -msgstr "" +#, fuzzy +msgid "pgr_withPointsCost(One to Many)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "pgr_withPointsCost(many to one)" -msgstr "" +#, fuzzy +msgid "pgr_withPointsCost(Many to One)" +msgstr ":doc:`pgr_withPointsCostMatrix`" -msgid "pgr_withPointsCost(many to many)" -msgstr "" +#, fuzzy +msgid "pgr_withPointsCost(Many to Many)" +msgstr ":doc:`pgr_withPointsCostMatrix`" msgid "pgr_withPointsDD(single vertex)" msgstr "" @@ -17630,9 +17555,6 @@ msgstr "" msgid "pgr_withPointsDD(multiple vertices)" msgstr "" -msgid "pgr_withPointsKSP" -msgstr "" - msgid "pgr_dijkstraVia" msgstr "" @@ -17666,26 +17588,12 @@ msgid "" "q=is%3Aissue+milestone%3A%22Release+2.1.0%22+is%3Aclosed>`_ on Github." msgstr "" -msgid "pgr_dijkstra(one to many)" -msgstr "" - -msgid "pgr_dijkstra(many to one)" -msgstr "" - -msgid "pgr_dijkstra(many to many)" -msgstr "" - -msgid "pgr_drivingDistance(multiple vertices)" -msgstr "" - msgid "Refactored" msgstr "" -msgid "pgr_dijkstra(one to one)" -msgstr "" - -msgid "pgr_drivingDistance(single vertex)" -msgstr "" +#, fuzzy +msgid "pgr_dijkstra(One to One)" +msgstr ":doc:`pgr_withPointsCostMatrix`" msgid "" "pgr_alphaShape function now can generate better (multi)polygon with holes " @@ -18023,8 +17931,8 @@ msgstr "" msgid "" "The documentation provides very simple example queries based on a small " -"sample network that resembles a city. To be able to execute the mayority of " -"the examples queries, follow the instructions bellow." +"sample network that resembles a city. To be able to execute the majority of " +"the examples queries, follow the instructions below." msgstr "" msgid "Main graph" @@ -18038,7 +17946,8 @@ msgstr "" msgid "" "Information known at this point is the geometry of the edges, cost values, " -"cpacity values, category values and some locations that are not in the graph." +"capacity values, category values and some locations that are not in the " +"graph." msgstr "" msgid "" @@ -18046,14 +17955,11 @@ msgid "" "that everything else is calculated." msgstr "" -msgid "Edges" -msgstr "" - msgid "" "The database design for the documentation of pgRouting, keeps in the same " "row 2 segments, one in the direction of the geometry and the second in the " -"oposite direction. Therfore some information has the ``reverse_`` prefix " -"which corresponds to the segment on the oposite direction of the geometry." +"opposite direction. Therefore some information has the ``reverse_`` prefix " +"which corresponds to the segment on the opposite direction of the geometry." msgstr "" msgid "Identifier of the starting vertex of the geometry ``geom``." @@ -18084,7 +17990,7 @@ msgid ":math:`x` coordinate of the starting vertex of the geometry." msgstr "" msgid "" -"For convinience it is saved on the table but can be calculated as " +"For convenience it is saved on the table but can be calculated as " "``ST_X(ST_StartPoint(geom))``." msgstr "" @@ -18092,7 +17998,7 @@ msgid ":math:`y` coordinate of the ending vertex of the geometry." msgstr "" msgid "" -"For convinience it is saved on the table but can be calculated as " +"For convenience it is saved on the table but can be calculated as " "``ST_Y(ST_EndPoint(geom))``." msgstr "" @@ -18104,8 +18010,8 @@ msgid "Starting on PostgreSQL 12::" msgstr "PostgreSQL 설정" msgid "" -"Optionally indexes on different columns can be created. The recomendation is " -"to have" +"Optionally indexes on different columns can be created. The recommendation " +"is to have" msgstr "" msgid "``id`` indexed." @@ -18116,7 +18022,7 @@ msgid "" msgstr "" msgid "" -"``geom`` indexed to speed up gemetry processes that might be needed in the " +"``geom`` indexed to speed up geometry processes that might be needed in the " "front end." msgstr "" @@ -18185,7 +18091,7 @@ msgid "" msgstr "" msgid "" -"For convinence of this documentations, some combinations will be stored on a " +"For convenience of this documentation, some combinations will be stored on a " "table:" msgstr "" @@ -18395,8 +18301,8 @@ msgid "" msgstr "" msgid "" -"pgRouting suplies some functions to create a routing topology and to analyze " -"the topology." +"pgRouting supplies some functions to create a routing topology and to " +"analyze the topology." msgstr "" msgid "Additional functions to create a graph:" @@ -18417,7 +18323,7 @@ msgstr "" msgid "Traversal - Family of functions" msgstr "" -msgid "Aditionaly there are 2 categories under this family" +msgid "Additionally there are 2 categories under this family" msgstr "" msgid "Via - Category" @@ -18432,7 +18338,7 @@ msgid "" msgstr "" msgid "" -"In other words, find a continuos route that visits all the vertices in the " +"In other words, find a continuous route that visits all the vertices in the " "order given." msgstr "" @@ -18803,3 +18709,5 @@ msgstr "" msgid "pgr_withPointsvia is pgr_dijkstraVia **with points**" msgstr "" + +#, fuzzy diff --git a/locale/pot/index.pot b/locale/pot/index.pot index 1dc6d3e329..541b7454b4 100644 --- a/locale/pot/index.pot +++ b/locale/pot/index.pot @@ -1,12 +1,12 @@ # SOME DESCRIPTIVE TITLE. -# Copyright (C) pgRouting Contributors - Version v3.7.0 +# Copyright (C) pgRouting Contributors - Version v3.8 # This file is distributed under the same license as the pgRouting package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" -"Project-Id-Version: pgRouting v3.4.0-dev\n" +"Project-Id-Version: pgRouting v3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-06-25 12:55-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" @@ -15,418 +15,3 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" - -#: ../../build/doc/index.rst:12 -msgid "**Supported versions:** `Latest `__ (`3.4 `__) `3.3 `__ `3.2 `__ `3.1 `__ `3.0 `__" -msgstr "" - -#: ../../build/doc/index.rst:19 -msgid "**Unsupported versions:** `2.6 `__ `2.5 `__ `2.4 `__ `2.3 `__ `2.2 `__ `2.1 `__ `2.0 `__" -msgstr "" - -#: ../../build/doc/index.rst:30 -msgid "Table of Contents" -msgstr "" - -#: ../../build/doc/index.rst:32 -msgid "pgRouting extends the `PostGIS `__/`PostgreSQL `__ geospatial database to provide geospatial routing and other network analysis functionality." -msgstr "" - -#: ../../build/doc/index.rst:36 -msgid "This is the manual for pgRouting |release|." -msgstr "" - -#: ../../build/doc/index.rst:None -msgid "Creative Commons Attribution-Share Alike 3.0 License" -msgstr "" - -#: ../../build/doc/index.rst:42 -msgid "The pgRouting Manual is licensed under a `Creative Commons Attribution-Share Alike 3.0 License `_. Feel free to use this material any way you like, but we ask that you attribute credit to the pgRouting Project and wherever possible, a link back to https://pgrouting.org. For other licenses used in pgRouting see the :ref:`license` page." -msgstr "" - -#: ../../build/doc/index.rst:50 -msgid "General" -msgstr "" - -#: ../../build/doc/index.rst:60 -msgid ":doc:`sampledata` that is used in the examples of this manual." -msgstr "" - -#: ../../build/doc/index.rst:68 -msgid "Pgrouting Concepts" -msgstr "" - -#: ../../build/doc/index.rst:77 -msgid ":doc:`routingFunctions`" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:4 -msgid ":doc:`allpairs-family`" -msgstr "" - -#: ../../build/doc/allpairs-family.rst:3 -msgid ":doc:`pgr_floydWarshall` - Floyd-Warshall's algorithm." -msgstr "" - -#: ../../build/doc/allpairs-family.rst:4 -msgid ":doc:`pgr_johnson` - Johnson's algorithm" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:10 -msgid ":doc:`aStar-family`" -msgstr "" - -#: ../../build/doc/aStar-family.rst:3 -msgid ":doc:`pgr_aStar` - A* algorithm for the shortest path." -msgstr "" - -#: ../../build/doc/aStar-family.rst:4 -msgid ":doc:`pgr_aStarCost` - Get the aggregate cost of the shortest paths." -msgstr "" - -#: ../../build/doc/aStar-family.rst:5 -msgid ":doc:`pgr_aStarCostMatrix` - Get the cost matrix of the shortest paths." -msgstr "" - -#: ../../build/doc/routingFunctions.rst:17 -msgid ":doc:`bdAstar-family`" -msgstr "" - -#: ../../build/doc/bdAstar-family.rst:3 -msgid ":doc:`pgr_bdAstar` - Bidirectional A* algorithm for obtaining paths." -msgstr "" - -#: ../../build/doc/bdAstar-family.rst:4 -msgid ":doc:`pgr_bdAstarCost` - Bidirectional A* algorithm to calculate the cost of the paths." -msgstr "" - -#: ../../build/doc/bdAstar-family.rst:6 -msgid ":doc:`pgr_bdAstarCostMatrix` - Bidirectional A* algorithm to calculate a cost matrix of paths." -msgstr "" - -#: ../../build/doc/routingFunctions.rst:23 -msgid ":doc:`bdDijkstra-family`" -msgstr "" - -#: ../../build/doc/bdDijkstra-family.rst:3 -msgid ":doc:`pgr_bdDijkstra` - Bidirectional Dijkstra algorithm for the shortest paths." -msgstr "" - -#: ../../build/doc/bdDijkstra-family.rst:5 -msgid ":doc:`pgr_bdDijkstraCost` - Bidirectional Dijkstra to calculate the cost of the shortest paths" -msgstr "" - -#: ../../build/doc/bdDijkstra-family.rst:7 -msgid ":doc:`pgr_bdDijkstraCostMatrix` - Bidirectional Dijkstra algorithm to create a matrix of costs of the shortest paths." -msgstr "" - -#: ../../build/doc/routingFunctions.rst:29 -msgid ":doc:`components-family`" -msgstr "" - -#: ../../build/doc/components-family.rst:3 -msgid ":doc:`pgr_connectedComponents` - Connected components of an undirected graph." -msgstr "" - -#: ../../build/doc/components-family.rst:4 -msgid ":doc:`pgr_strongComponents` - Strongly connected components of a directed graph." -msgstr "" - -#: ../../build/doc/components-family.rst:6 -msgid ":doc:`pgr_biconnectedComponents` - Biconnected components of an undirected graph." -msgstr "" - -#: ../../build/doc/components-family.rst:8 -msgid ":doc:`pgr_articulationPoints` - Articulation points of an undirected graph." -msgstr "" - -#: ../../build/doc/components-family.rst:9 -msgid ":doc:`pgr_bridges` - Bridges of an undirected graph." -msgstr "" - -#: ../../build/doc/routingFunctions.rst:35 -msgid ":doc:`contraction-family`" -msgstr "" - -#: ../../build/doc/contraction-family.rst:3 -msgid ":doc:`pgr_contraction`" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:41 -msgid ":doc:`dijkstra-family`" -msgstr "" - -#: ../../build/doc/dijkstra-family.rst:3 -msgid ":doc:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths." -msgstr "" - -#: ../../build/doc/dijkstra-family.rst:4 -msgid ":doc:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths." -msgstr "" - -#: ../../build/doc/dijkstra-family.rst:5 -msgid ":doc:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix." -msgstr "" - -#: ../../build/doc/dijkstra-family.rst:6 -msgid ":doc:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament information." -msgstr "" - -#: ../../build/doc/dijkstra-family.rst:8 -msgid ":doc:`pgr_KSP` - Use Yen algorithm with pgr_dijkstra to get the K shortest paths." -msgstr "" - -#: ../../build/doc/routingFunctions.rst:47 -msgid ":doc:`flow-family`" -msgstr "" - -#: ../../build/doc/flow-family.rst:3 -msgid ":doc:`pgr_maxFlow` - Only the Max flow calculation using Push and Relabel algorithm." -msgstr "" - -#: ../../build/doc/flow-family.rst:5 -msgid ":doc:`pgr_boykovKolmogorov` - Boykov and Kolmogorov with details of flow on edges." -msgstr "" - -#: ../../build/doc/flow-family.rst:7 -msgid ":doc:`pgr_edmondsKarp` - Edmonds and Karp algorithm with details of flow on edges." -msgstr "" - -#: ../../build/doc/flow-family.rst:9 -msgid ":doc:`pgr_pushRelabel` - Push and relabel algorithm with details of flow on edges." -msgstr "" - -#: ../../build/doc/flow-family.rst:11 -msgid "Applications" -msgstr "" - -#: ../../build/doc/flow-family.rst:13 -msgid ":doc:`pgr_edgeDisjointPaths` - Calculates edge disjoint paths between two groups of vertices." -msgstr "" - -#: ../../build/doc/flow-family.rst:15 -msgid ":doc:`pgr_maxCardinalityMatch` - Calculates a maximum cardinality matching in a graph." -msgstr "" - -#: ../../build/doc/routingFunctions.rst:53 -#: ../../build/doc/spanningTree-family.rst:3 -msgid ":doc:`kruskal-family`" -msgstr "" - -#: ../../build/doc/kruskal-family.rst:3 -msgid ":doc:`pgr_kruskal`" -msgstr "" - -#: ../../build/doc/kruskal-family.rst:4 -#: ../../build/doc/BFS-category.rst:3 -msgid ":doc:`pgr_kruskalBFS`" -msgstr "" - -#: ../../build/doc/kruskal-family.rst:5 -msgid ":doc:`pgr_kruskalDD`" -msgstr "" - -#: ../../build/doc/kruskal-family.rst:6 -#: ../../build/doc/DFS-category.rst:3 -msgid ":doc:`pgr_kruskalDFS`" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:59 -#: ../../build/doc/spanningTree-family.rst:4 -msgid ":doc:`prim-family`" -msgstr "" - -#: ../../build/doc/prim-family.rst:3 -msgid ":doc:`pgr_prim`" -msgstr "" - -#: ../../build/doc/prim-family.rst:4 -#: ../../build/doc/BFS-category.rst:4 -msgid ":doc:`pgr_primBFS`" -msgstr "" - -#: ../../build/doc/prim-family.rst:5 -msgid ":doc:`pgr_primDD`" -msgstr "" - -#: ../../build/doc/prim-family.rst:6 -#: ../../build/doc/DFS-category.rst:4 -msgid ":doc:`pgr_primDFS`" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:65 -msgid ":doc:`reference`" -msgstr "" - -#: ../../build/doc/reference.rst:3 -msgid ":doc:`pgr_version`" -msgstr "" - -#: ../../build/doc/reference.rst:4 -msgid ":doc:`pgr_full_version`" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:71 -msgid ":doc:`topology-functions`" -msgstr "" - -#: ../../build/doc/topology-functions.rst:3 -msgid "The following functions modify the database directly therefore the user must have special permissions given by the administrators to use them." -msgstr "" - -#: ../../build/doc/topology-functions.rst:6 -msgid ":doc:`pgr_createTopology` - create a topology based on the geometry." -msgstr "" - -#: ../../build/doc/topology-functions.rst:7 -msgid ":doc:`pgr_createVerticesTable` - reconstruct the vertices table based on the source and target information." -msgstr "" - -#: ../../build/doc/topology-functions.rst:9 -msgid ":doc:`pgr_analyzeGraph` - to analyze the edges and vertices of the edge table." -msgstr "" - -#: ../../build/doc/topology-functions.rst:11 -msgid ":doc:`pgr_analyzeOneWay` - to analyze directionality of the edges." -msgstr "" - -#: ../../build/doc/topology-functions.rst:12 -msgid ":doc:`pgr_nodeNetwork` - to create nodes to a not noded edge table." -msgstr "" - -#: ../../build/doc/routingFunctions.rst:77 -msgid ":doc:`TSP-family`" -msgstr "" - -#: ../../build/doc/TSP-family.rst:3 -msgid ":doc:`pgr_TSP` - When input is given as matrix cell information." -msgstr "" - -#: ../../build/doc/TSP-family.rst:4 -msgid ":doc:`pgr_TSPeuclidean` - When input are coordinates." -msgstr "" - -#: ../../build/doc/routingFunctions.rst:83 -msgid ":doc:`pgr_trsp` - Turn Restriction Shortest Path (TRSP)" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:87 -msgid "Functions by categories" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:89 -msgid ":doc:`cost-category`" -msgstr "" - -#: ../../build/doc/cost-category.rst:3 -msgid ":doc:`pgr_aStarCost`" -msgstr "" - -#: ../../build/doc/cost-category.rst:4 -msgid ":doc:`pgr_bdAstarCost`" -msgstr "" - -#: ../../build/doc/cost-category.rst:5 -msgid ":doc:`pgr_dijkstraCost`" -msgstr "" - -#: ../../build/doc/cost-category.rst:6 -msgid ":doc:`pgr_bdDijkstraCost`" -msgstr "" - -#: ../../build/doc/cost-category.rst:7 -msgid ":doc:`pgr_dijkstraNearCost`" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:95 -msgid ":doc:`costMatrix-category`" -msgstr "" - -#: ../../build/doc/costMatrix-category.rst:3 -msgid ":doc:`pgr_aStarCostMatrix`" -msgstr "" - -#: ../../build/doc/costMatrix-category.rst:4 -msgid ":doc:`pgr_bdAstarCostMatrix`" -msgstr "" - -#: ../../build/doc/costMatrix-category.rst:5 -#: ../../build/doc/costMatrix-category.rst:7 -msgid ":doc:`pgr_bdDijkstraCostMatrix`" -msgstr "" - -#: ../../build/doc/costMatrix-category.rst:6 -msgid ":doc:`pgr_dijkstraCostMatrix`" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:102 -msgid ":doc:`drivingDistance-category`" -msgstr "" - -#: ../../build/doc/drivingDistance-category.rst:3 -msgid ":doc:`pgr_drivingDistance` - Driving Distance based on Dijkstra's algorithm" -msgstr "" - -#: ../../build/doc/drivingDistance-category.rst:4 -msgid ":doc:`pgr_primDD` - Driving Distance based on Prim's algorithm" -msgstr "" - -#: ../../build/doc/drivingDistance-category.rst:5 -msgid ":doc:`pgr_kruskalDD` - Driving Distance based on Kruskal's algorithm" -msgstr "" - -#: ../../build/doc/drivingDistance-category.rst:6 -msgid "Post pocessing" -msgstr "" - -#: ../../build/doc/drivingDistance-category.rst:8 -msgid ":doc:`pgr_alphaShape` - Alpha shape computation" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:108 -msgid ":doc:`KSP-category`" -msgstr "" - -#: ../../build/doc/KSP-category.rst:3 -msgid ":doc:`pgr_KSP` - Yen's algorithm based on pgr_dijkstra" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:114 -msgid ":doc:`spanningTree-family`" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:120 -msgid ":doc:`BFS-category`" -msgstr "" - -#: ../../build/doc/routingFunctions.rst:126 -msgid ":doc:`DFS-category`" -msgstr "" - -#: ../../build/doc/index.rst:91 -msgid "Available Functions but not official pgRouting functions" -msgstr "" - -#: ../../build/doc/index.rst:93 -msgid ":doc:`proposed`" -msgstr "" - -#: ../../build/doc/index.rst:94 -msgid ":doc:`experimental`" -msgstr "" - -#: ../../build/doc/index.rst:105 -msgid ":doc:`release_notes`" -msgstr "" - -#: ../../build/doc/index.rst:119 -msgid "Indices and tables" -msgstr "" - -#: ../../build/doc/index.rst:120 -msgid ":ref:`genindex`" -msgstr "" - -#: ../../build/doc/index.rst:121 -msgid ":ref:`search`" -msgstr "" diff --git a/locale/pot/pgrouting_doc_strings.pot b/locale/pot/pgrouting_doc_strings.pot index c62a4180f2..90ef35cff4 100644 --- a/locale/pot/pgrouting_doc_strings.pot +++ b/locale/pot/pgrouting_doc_strings.pot @@ -1,14 +1,14 @@ # SOME DESCRIPTIVE TITLE. -# Copyright (C) pgRouting Contributors - Version v3.7.0 +# Copyright (C) pgRouting Contributors - Version v4.0 # This file is distributed under the same license as the pgRouting package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" -"Project-Id-Version: pgRouting v3.7.0\n" +"Project-Id-Version: pgRouting v4.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-17 00:50+0000\n" +"POT-Creation-Date: 2025-04-04 16:45+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -280,9 +280,6 @@ msgstr "" msgid ":doc:`pgr_primDFS`" msgstr "" -msgid "Proposed" -msgstr "" - msgid "Proposed functions for next mayor release." msgstr "" @@ -346,9 +343,6 @@ msgstr "" msgid "Read the :doc:`migration` about how to migrate from the deprecated TRSP functionality to the new signatures or replacement functions." msgstr "" -msgid "Experimental" -msgstr "" - msgid "Possible server crash" msgstr "" @@ -391,7 +385,7 @@ msgstr "" msgid "Documentation examples might need to be automatically generated." msgstr "" -msgid "Might need a lot of feedback from the comunity." +msgid "Might need a lot of feedback from the community." msgstr "" msgid "Might depend on a proposed function of pgRouting" @@ -595,7 +589,7 @@ msgstr "" msgid "References" msgstr "" -msgid "`Boost's metric appro's metric approximation `__" +msgid "`Boost: metric TSP approx `__" msgstr "" msgid "`University of Waterloo TSP `__" @@ -604,7 +598,7 @@ msgstr "" msgid "`Wikipedia: Traveling Salesman Problem `__" msgstr "" -msgid "Vehicle Routing Functions - Category (Experimental)" +msgid "Vehicle Routing Functions - Category" msgstr "" msgid "Pickup and delivery problem" @@ -1486,7 +1480,7 @@ msgstr "" msgid "https://en.wikipedia.org/wiki/Vehicle_routing_problem" msgstr "" -msgid "The queries use the :doc:`sampledata` network." +msgid ":doc:`sampledata`" msgstr "" msgid "A* - Family of functions" @@ -1636,7 +1630,7 @@ msgstr "" msgid ":doc:`bdAstar-family`" msgstr "" -msgid "https://www.boost.org/libs/graph/doc/astar_search.html" +msgid "`Boost: A* search `__" msgstr "" msgid "https://en.wikipedia.org/wiki/A*_search_algorithm" @@ -2410,15 +2404,12 @@ msgstr "" msgid "For large graphs where there is a path bewtween the starting vertex and ending vertex:" msgstr "" -msgid "It is expected to terminate faster than pgr_astar" +msgid "It is expected to terminate faster than pgr_aStar" msgstr "" msgid ":doc:`aStar-family`" msgstr "" -msgid "Previous versions of this page" -msgstr "" - msgid "Bidirectional Dijkstra - Family of functions" msgstr "" @@ -2533,19 +2524,7 @@ msgstr "" msgid "Identifier of the color of the edge." msgstr "" -msgid "`Boost: Sequential Vertex Coloring algorithm documentation `__" -msgstr "" - -msgid "`Wikipedia: Graph coloring `__" -msgstr "" - -msgid "`Boost: is_bipartite `__" -msgstr "" - -msgid "`Wikipedia: bipartite graph `__" -msgstr "" - -msgid "`Boost: Edge Coloring Algorithm documentation `__" +msgid "`Boost: `__" msgstr "" msgid "Components - Family of functions" @@ -2575,6 +2554,9 @@ msgstr "" msgid ":doc:`pgr_contraction`" msgstr "" +msgid ":doc:`pgr_contractionDeadEnd`" +msgstr "" + msgid "In large graphs, like the road graphs, or electric networks, graph contraction can be used to speed up some graph algorithms. Contraction reduces the size of the graph by removing some of the vertices and edges and, for example, might add edges that represent a sequence of original edges decreasing the total time and space used in graph algorithms." msgstr "" @@ -2596,5977 +2578,5968 @@ msgstr "" msgid "Decide the order of the contraction algorithms and set the maximum number of times they are to be executed." msgstr "" -msgid "Contraction of the leaf nodes of the graph." +msgid "https://www.cs.cmu.edu/afs/cs/academic/class/15210-f12/www/lectures/lecture16.pdf" msgstr "" -msgid "Dead end" +msgid "https://algo2.iti.kit.edu/documents/routeplanning/geisberger_dipl.pdf" msgstr "" -msgid "A node is considered a **dead end** node when" +msgid "Cost - Category" msgstr "" -msgid "On undirected graphs:" +msgid ":doc:`pgr_aStarCost`" msgstr "" -msgid "The number of adjacent vertices is 1." +msgid ":doc:`pgr_bdAstarCost`" msgstr "" -msgid "On directed graphs:" +msgid ":doc:`pgr_dijkstraCost`" msgstr "" -msgid "There are no outgoing edges and has at least one incoming edge." +msgid ":doc:`pgr_bdDijkstraCost`" msgstr "" -msgid "There are no incoming edges and has at least one outgoing edge." +msgid ":doc:`pgr_dijkstraNearCost`" msgstr "" -msgid "When the conditions are true then the `Operation: Dead End Contraction`_ can be done." +msgid ":doc:`pgr_withPointsCost`" msgstr "" -msgid "Dead end vertex on undirected graph" +msgid "Each function works as part of the family it belongs to." msgstr "" -msgid "The green nodes are `dead end`_ nodes" +msgid "Returns the sum of the costs of the shortest path of each pair combination of nodes requested." msgstr "" -msgid "The blue nodes have an unlimited number of edges." +msgid "Let be the case the values returned are stored in a table, so the unique index would be the pair: ``(start_vid, end_vid)``." msgstr "" -msgid "Node" +msgid "Depending on the function and its parameters, the results can be symmetric." msgstr "" -msgid "Adjecent nodes" +msgid "The **aggregate cost** of :math:`(u, v)` is the same as for :math:`(v, u)`." msgstr "" -msgid "Number of adjacent nodes" +msgid "Any duplicated value in the start or end vertex identifiers are ignored." msgstr "" -msgid ":math:`a`" +msgid "The returned values are ordered:" msgstr "" -msgid ":math:`\\{u\\}`" +msgid "``start_vid`` ascending" msgstr "" -msgid ":math:`b`" +msgid "``end_vid`` ascending" msgstr "" -msgid ":math:`\\{v\\}`" +msgid "Cost Matrix - Category" msgstr "" -msgid "Dead end vertex on directed graph" +msgid ":doc:`pgr_aStarCostMatrix`" msgstr "" -msgid "The blue nodes have an unlimited number of incoming and/or outgoing edges." +msgid ":doc:`pgr_dijkstraCostMatrix`" msgstr "" -msgid "Number of incoming edges" +msgid ":doc:`pgr_bdAstarCostMatrix`" msgstr "" -msgid "Number of outgoing edges" +msgid ":doc:`pgr_bdDijkstraCostMatrix`" msgstr "" -msgid ":math:`c`" +msgid ":doc:`pgr_withPointsCostMatrix`" msgstr "" -msgid ":math:`\\{v, w\\}`" +msgid ":doc:`TSP-family` needs as input a symmetric cost matrix and no edge `(u, v)` must value :math:`\\infty`." msgstr "" -msgid "2" +msgid "This collection of functions will return a cost matrix in form of a table." msgstr "" -msgid ":math:`d`" +msgid "Can be used as input to :doc:`pgr_TSP`." msgstr "" -msgid ":math:`\\{x\\}`" +msgid "Use directly when the resulting matrix is symmetric and there is no :math:`\\infty` value." msgstr "" -msgid ":math:`e`" +msgid "It will be the users responsibility to make the matrix symmetric." msgstr "" -msgid ":math:`\\{x, y\\}`" +msgid "By using geometric or harmonic average of the non symmetric values." msgstr "" -msgid "From above, nodes :math:`\\{a, b, d\\}` are dead ends because the number of adjacent vertices is 1. No further checks are needed for those nodes." +msgid "By using max or min the non symmetric values." msgstr "" -msgid "On the following table, nodes :math:`\\{c, e\\}` because the even that the number of adjacent vertices is not 1 for" +msgid "By setting the upper triangle to be the mirror image of the lower triangle." msgstr "" -msgid "Operation: Dead End Contraction" +msgid "By setting the lower triangle to be the mirror image of the upper triangle." msgstr "" -msgid "The dead end contraction will stop until there are no more dead end nodes. For example from the following graph where :math:`w` is the `dead end`_ node:" +msgid "It is also the users responsibility to fix an :math:`\\infty` value." msgstr "" -msgid "After contracting :math:`w`, node :math:`v` is now a `dead end`_ node and is contracted:" +msgid "Returns the sum of the costs of the shortest path for pair combination of nodes in the graph." msgstr "" -msgid "After contracting :math:`v`, stop. Node :math:`u` has the information of nodes that were contrcted." +msgid "When the starting vertex and ending vertex are the same, there is no path." msgstr "" -msgid "Node :math:`u` has the information of nodes that were contracted." +msgid "The aggregate cost in the non included values `(v, v)` is `0`." msgstr "" -msgid "In the algorithm, linear contraction is represented by 2." +msgid "When the starting vertex and ending vertex are the different and there is no path." msgstr "" -msgid "Linear" +msgid "The aggregate cost in the non included values `(u, v)` is :math:`\\infty`." msgstr "" -msgid "In case of an undirected graph, a node is considered a `linear` node when" +msgid "Let be the case the values returned are stored in a table:" msgstr "" -msgid "The number of adjacent vertices is 2." +msgid "The unique index would be the pair: ``(start_vid, end_vid)``." msgstr "" -msgid "In case of a directed graph, a node is considered a `linear` node when" +msgid "The aggregate cost of `(u, v)` is the same as for `(v, u)`." msgstr "" -msgid "Linearity is symmetrical" +msgid "Any duplicated value in the **start vids** are ignored." msgstr "" -msgid "Linear vertex on undirected graph" +msgid "Used in:" msgstr "" -msgid "The green nodes are `linear`_ nodes" +msgid "`Edges SQL`_ as described below" msgstr "" -msgid "The blue nodes have an unlimited number of incoming and outgoing edges." +msgid "**start vids**" msgstr "" -msgid "Undirected" +msgid "``ARRAY[BIGINT]``" msgstr "" -msgid ":math:`v`" +msgid "Array of identifiers of starting vertices." msgstr "" -msgid ":math:`\\{u, w\\}`" +msgid "`Points SQL`_" msgstr "" -msgid "Linear vertex on directed graph" +msgid "`Points SQL`_ as described below" msgstr "" -msgid "The white node is not linear because the linearity is not symetrical." +msgid "Points SQL" msgstr "" -msgid "It is possible to go :math:`y \\rightarrow c \\rightarrow z`" +msgid "``pid``" msgstr "" -msgid "It's not possible to go :math:`z \\rightarrow c \\rightarrow y`" +msgid "**value**" msgstr "" -msgid "Is symmetrical?" +msgid "Identifier of the point." msgstr "" -msgid ":math:`\\{u, v\\}`" +msgid "Use with positive value, as internally will be converted to negative value" msgstr "" -msgid "yes" +msgid "If column is present, it can not be NULL." msgstr "" -msgid ":math:`\\{w, x\\}`" +msgid "If column is not present, a sequential negative **value** will be given automatically." msgstr "" -msgid ":math:`\\{y, z\\}`" +msgid "Identifier of the \"closest\" edge to the point." msgstr "" -msgid "no" +msgid "``fraction``" msgstr "" -msgid "Operation: Linear Contraction" +msgid "Value in <0,1> that indicates the relative postition from the first end point of the edge." msgstr "" -msgid "The linear contraction will stop when there are no more linear nodes. For example from the following graph where :math:`v` and :math:`w` are `linear`_ nodes:" +msgid "``side``" msgstr "" -msgid "Contracting :math:`w`," +msgid "``CHAR``" msgstr "" -msgid "The vertex :math:`w` is removed from the graph" +msgid "``b``" msgstr "" -msgid "The edges :math:`v \\rightarrow w` and :math:`w \\rightarrow z` are removed from the graph." +msgid "Value in [``b``, ``r``, ``l``, ``NULL``] indicating if the point is:" msgstr "" -msgid "A new edge :math:`v \\rightarrow z` is inserted represented with red color." +msgid "In the right ``r``," msgstr "" -msgid "Contracting :math:`v`:" +msgid "In the left ``l``," msgstr "" -msgid "The vertex :math:`v` is removed from the graph" +msgid "In both sides ``b``, ``NULL``" msgstr "" -msgid "The edges :math:`u \\rightarrow v` and :math:`v \\rightarrow z` are removed from the graph." +msgid ":doc:`TSP-family`" msgstr "" -msgid "A new edge :math:`u \\rightarrow z` is inserted represented with red color." +msgid "Dijkstra - Family of functions" msgstr "" -msgid "Edge :math:`u \\rightarrow z` has the information of nodes that were contracted." +msgid ":doc:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths." msgstr "" -msgid "The cycle" +msgid ":doc:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths." msgstr "" -msgid "Contracting a graph, can be done with more than one operation. The order of the operations affect the resulting contracted graph, after applying one operation, the set of vertices that can be contracted by another operation changes." +msgid ":doc:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix." msgstr "" -msgid "This implementation, cycles ``max_cycles`` times through ``operations_order`` ." +msgid ":doc:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament information." msgstr "" -msgid "Contracting sample data" +msgid ":doc:`pgr_KSP` - Use Yen algorithm with pgr_dijkstra to get the K shortest paths." msgstr "" -msgid "In this section, building and using a contracted graph will be shown by example." +msgid ":doc:`pgr_dijkstraVia` - Get a route of a sequence of vertices." msgstr "" -msgid "The :doc:`sampledata` for an undirected graph is used" +msgid ":doc:`pgr_dijkstraNear` - Get the route to the nearest vertex." msgstr "" -msgid "a dead end operation first followed by a linear operation." +msgid ":doc:`pgr_dijkstraNearCost` - Get the cost to the nearest vertex." msgstr "" -msgid "Construction of the graph in the database" +msgid "Dijkstra's algorithm, conceived by Dutch computer scientist Edsger Dijkstra in 1956. It is a graph search algorithm that solves the shortest path problem for a graph with non-negative edge path costs, producing a shortest path from a starting vertex to an ending vertex. This implementation can be used with a directed graph and an undirected graph." msgstr "" -msgid "Original Data" +msgid "Running time: :math:`O(| start\\ vids | * (V \\log V + E))`" msgstr "" -msgid "The following query shows the original data involved in the contraction operation." +msgid "The Dijkstra family functions are based on the Dijkstra algorithm." msgstr "" -msgid "The original graph:" +msgid "`Combinations SQL`_" msgstr "" -msgid "Contraction results" +msgid "`Combinations SQL`_ as described below" msgstr "" -msgid "The results do not represent the contracted graph. They represent the changes done to the graph after applying the contraction algorithm." +msgid "**start vid**" msgstr "" -msgid "Observe that vertices, for example, :math:`6` do not appear in the results because it was not affected by the contraction algorithm." +msgid "Identifier of the starting vertex of the path." msgstr "" -msgid "After doing the dead end contraction operation:" +msgid "**end vid**" msgstr "" -msgid "After doing the linear contraction operation to the graph above:" +msgid "Identifier of the ending vertex of the path." msgstr "" -msgid "The process to create the contraction graph on the database:" +msgid "**end vids**" msgstr "" -msgid "Add additional columns" +msgid "Array of identifiers of ending vertices." msgstr "" -msgid "Adding extra columns to the ``edge_table`` and ``edge_table_vertices_pgr`` tables, where:" +msgid "Combinations SQL" msgstr "" -msgid "``contracted_vertices``" +msgid "Identifier of the departure vertex." msgstr "" -msgid "The vertices set belonging to the vertex/edge" +msgid "Identifier of the arrival vertex." msgstr "" -msgid "``is_contracted``" +msgid "The problem definition (Advanced documentation)" msgstr "" -msgid "On the vertex table" +msgid "Given the following query:" msgstr "" -msgid "when ``true`` the vertex is contracted, its not part of the contracted graph." +msgid "pgr_dijkstra(:math:`sql, start_{vid}, end_{vid}, directed`)" msgstr "" -msgid "when ``false`` the vertex is not contracted, its part of the contracted graph." +msgid "where :math:`sql = \\{(id_i, source_i, target_i, cost_i, reverse\\_cost_i)\\}`" msgstr "" -msgid "``is_new``" +msgid "and" msgstr "" -msgid "On the edge table" +msgid ":math:`source = \\bigcup source_i`," msgstr "" -msgid "when ``true`` the edge was generated by the contraction algorithm. its part of the contracted graph." +msgid ":math:`target = \\bigcup target_i`," msgstr "" -msgid "when ``false`` the edge is an original edge, might be or not part of the contracted graph." +msgid "The graphs are defined as follows:" msgstr "" -msgid "Store contraction information" +msgid "Directed graph" msgstr "" -msgid "Store the `contraction results`_ in a table" +msgid "The weighted directed graph, :math:`G_d(V,E)`, is defined by:" msgstr "" -msgid "The vertex table update" +msgid "the set of vertices :math:`V`" msgstr "" -msgid "Use ``is_contracted`` column to indicate the vertices that are contracted." +msgid ":math:`V = source \\cup target \\cup {start_{vid}} \\cup {end_{vid}}`" msgstr "" -msgid "Fill ``contracted_vertices`` with the information from the results tha belong to the vertices." +msgid "the set of edges :math:`E`" msgstr "" -msgid "The modified vertices table:" +msgid ":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{if } reverse\\_cost = \\varnothing \\\\ \\text{ } \\text{ } & \\quad \\text{ } \\\\ \\text{ } \\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i>=0 \\} & \\quad \\text{if } reverse\\_cost \\neq \\varnothing \\\\ \\end{cases}`" msgstr "" -msgid "The edge table update" +msgid "Undirected graph" msgstr "" -msgid "Insert the new edges generated by pgr_contraction." +msgid "The weighted undirected graph, :math:`G_u(V,E)`, is defined by:" msgstr "" -msgid "The modified ``edge_table``." +msgid ":math:`V = source \\cup target \\cup {start_v{vid}} \\cup {end_{vid}}`" msgstr "" -msgid "The contracted graph" +msgid ":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ } \\\\ \\cup \\{(target_i, source_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ if } reverse\\_cost = \\varnothing \\\\ \\text{ } \\text{ } & \\text{ } \\\\ \\text{ } \\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & \\text{ } \\\\ \\cup \\{(target_i, source_i, cost_i) \\text{ when } cost >=0 \\} & \\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i >=0)\\} & \\text{ } \\\\ \\cup \\{(source_i, target_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i >=0)\\} & \\quad \\text{ if } reverse\\_cost \\neq \\varnothing \\\\ \\end{cases}`" msgstr "" -msgid "Vertices that belong to the contracted graph." +msgid "The problem" msgstr "" -msgid "Edges that belong to the contracted graph." +msgid "Given:" msgstr "" -msgid "Contracted graph" +msgid ":math:`start_{vid} \\in V` a starting vertex" msgstr "" -msgid "Using the contracted graph" +msgid ":math:`end_{vid} \\in V` an ending vertex" msgstr "" -msgid "Using the contracted graph with ``pgr_dijkstra``" +msgid ":math:`G(V,E) = \\begin{cases} G_d(V,E) & \\quad \\text{ if6 } directed = true \\\\ G_u(V,E) & \\quad \\text{ if5 } directed = false \\\\ \\end{cases}`" msgstr "" -msgid "There are three cases when calculating the shortest path between a given source and target in a contracted graph:" +msgid "Then:" msgstr "" -msgid "Case 1: Both source and target belong to the contracted graph." +msgid ":math:`\\boldsymbol{\\pi} = \\{(path\\_seq_i, node_i, edge_i, cost_i, agg\\_cost_i)\\}`" msgstr "" -msgid "Case 2: Source and/or target belong to an edge subgraph." +msgid "where:" msgstr "" -msgid "Case 3: Source and/or target belong to a vertex." +msgid ":math:`path\\_seq_i = i`" msgstr "" -msgid "Using the `Edges that belong to the contracted graph.`_ on lines 11 to 20." +msgid ":math:`path\\_seq_{| \\pi |} = | \\pi |`" msgstr "" -msgid "Case 1" +msgid ":math:`node_i \\in V`" msgstr "" -msgid "When both source and target belong to the contracted graph, a path is found." +msgid ":math:`node_1 = start_{vid}`" msgstr "" -msgid "Case 2" +msgid ":math:`node_{| \\pi |} = end_{vid}`" msgstr "" -msgid "When source and/or target belong to an edge subgraph then a path is not found." +msgid ":math:`\\forall i \\neq | \\pi |, \\quad (node_i, node_{i+1}, cost_i) \\in E`" msgstr "" -msgid "In this case, the contracted graph do not have an edge connecting with node :math:`4`." +msgid ":math:`edge_i = \\begin{cases} id_{(node_i, node_{i+1},cost_i)} &\\quad \\text{when } i \\neq | \\pi | \\\\ -1 &\\quad \\text{when } i = | \\pi | \\\\ \\end{cases}`" msgstr "" -msgid "Case 3" +msgid ":math:`cost_i = cost_{(node_i, node_{i+1})}`" msgstr "" -msgid "When source and/or target belong to a vertex then a path is not found." +msgid ":math:`agg\\_cost_i = \\begin{cases} 0 &\\quad \\text{when } i = 1 \\\\ \\displaystyle\\sum_{k=1}^{i} cost_{(node_{k-1}, node_k)} &\\quad \\text{when } i \\neq 1 \\\\ \\end{cases}`" msgstr "" -msgid "In this case, the contracted graph do not have an edge connecting with node :math:`7` and of node :math:`4` of the second case." +msgid "In other words: The algorithm returns a the shortest path between :math:`start_{vid}` and :math:`end_{vid}`, if it exists, in terms of a sequence of nodes and of edges," msgstr "" -msgid "Refining the above function to include nodes that belong to an edge." +msgid ":math:`path\\_seq` indicates the relative position in the path of the :math:`node` or :math:`edge`." msgstr "" -msgid "The vertices that need to be expanded are calculated on lines 11 to 17." +msgid ":math:`cost` is the cost of the edge to be used to go to the next node." msgstr "" -msgid "Adding to the contracted graph that additional section on lines 26 to 28." +msgid ":math:`agg\\_cost` is the cost from the :math:`start_{vid}` up to the node." msgstr "" -msgid "When source and/or target belong to an edge subgraph, now, a path is found." +msgid "If there is no path, the resulting set is empty." msgstr "" -msgid "The routing graph now has an edge connecting with node :math:`4`." +msgid "Driving Distance - Category" msgstr "" -msgid "In this case, the contracted graph do not have an edge connecting with node :math:`7`." +msgid ":doc:`pgr_drivingDistance` - Driving Distance based on Dijkstra's algorithm" msgstr "" -msgid "The vertices that need to be expanded are calculated on lines 19 to 24." +msgid ":doc:`pgr_primDD` - Driving Distance based on Prim's algorithm" msgstr "" -msgid "Adding to the contracted graph that additional section on lines 38 to 40." +msgid ":doc:`pgr_kruskalDD` - Driving Distance based on Kruskal's algorithm" msgstr "" -msgid "The code change do not affect this case so when source and/or target belong to an edge subgraph, a path is still found." +msgid "Post processing" msgstr "" -msgid "When source and/or target belong to a vertex, now, a path is found." +msgid ":doc:`pgr_alphaShape` - Alpha shape computation" msgstr "" -msgid "Now, the routing graph has an edge connecting with node :math:`7`." +msgid ":doc:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints" msgstr "" -msgid ":doc:`sampledata`" +msgid "Calculate nodes that are within a distance." msgstr "" -msgid "https://www.cs.cmu.edu/afs/cs/academic/class/15210-f12/www/lectures/lecture16.pdf" +msgid "Extracts all the nodes that have costs less than or equal to the value distance." msgstr "" -msgid "https://algo2.iti.kit.edu/documents/routeplanning/geisberger_dipl.pdf" +msgid "The edges extracted will conform to the corresponding spanning tree." msgstr "" -msgid "Cost - Category" +msgid "Edge :math:`(u, v)` will not be included when:" msgstr "" -msgid ":doc:`pgr_aStarCost`" +msgid "The distance from the **root** to :math:`u` > limit distance." msgstr "" -msgid ":doc:`pgr_bdAstarCost`" +msgid "The distance from the **root** to :math:`v` > limit distance." msgstr "" -msgid ":doc:`pgr_dijkstraCost`" +msgid "No new nodes are created on the graph, so when is within the limit and is not within the limit, the edge is not included." msgstr "" -msgid ":doc:`pgr_bdDijkstraCost`" +msgid "Edges SQL as described below." msgstr "" -msgid ":doc:`pgr_dijkstraNearCost`" +msgid "**Root vid**" msgstr "" -msgid ":doc:`pgr_withPointsCost`" +msgid "**Root vids**" msgstr "" -msgid "Each function works as part of the family it belongs to." +msgid "``ARRAY[ANY-INTEGER]``" msgstr "" -msgid "Returns the sum of the costs of the shortest path of each pair combination of nodes requested." +msgid "**distance**" msgstr "" -msgid "Let be the case the values returned are stored in a table, so the unique index would be the pair: ``(start_vid, end_vid)``." +msgid "Upper limit for the inclusion of a node in the result." msgstr "" -msgid "Depending on the function and its parameters, the results can be symmetric." +msgid "Returns set of |result-spantree|" msgstr "" -msgid "The **aggregate cost** of :math:`(u, v)` is the same as for :math:`(v, u)`." +msgid ":math:`depth-1` is the depth of ``pred``" msgstr "" -msgid "Any duplicated value in the start or end vertex identifiers are ignored." +msgid "``pred``" msgstr "" -msgid "The returned values are ordered:" +msgid "Predecessor of ``node``." msgstr "" -msgid "``start_vid`` ascending" +msgid "When ``node`` = ``start_vid`` then has the value ``node``." msgstr "" -msgid "``end_vid`` ascending" +msgid "Identifier of the ``edge`` used to arrive from ``pred`` to ``node``." msgstr "" -msgid "Cost Matrix - Category" +msgid "Experimental Functions" msgstr "" -msgid ":doc:`pgr_aStarCostMatrix`" +msgid "Families" msgstr "" -msgid ":doc:`pgr_dijkstraCostMatrix`" +msgid ":doc:`flow-family`" msgstr "" -msgid ":doc:`pgr_bdAstarCostMatrix`" +msgid ":doc:`pgr_maxFlowMinCost` - Details of flow and cost on edges." msgstr "" -msgid ":doc:`pgr_bdDijkstraCostMatrix`" +msgid ":doc:`pgr_maxFlowMinCost_Cost` - Only the Min Cost calculation." msgstr "" -msgid "proposed" +msgid ":doc:`chinesePostmanProblem-family`" msgstr "" -msgid ":doc:`pgr_withPointsCostMatrix`" +msgid ":doc:`coloring-family`" msgstr "" -msgid ":doc:`TSP-family` needs as input a symmetric cost matrix and no edge `(u, v)` must value :math:`\\infty`." +msgid ":doc:`transformation-family`" msgstr "" -msgid "This collection of functions will return a cost matrix in form of a table." +msgid ":doc:`pgr_lineGraphFull` - Transformation algorithm for generating a Line Graph out of each vertex in the input graph." msgstr "" -msgid "Can be used as input to :doc:`pgr_TSP`." +msgid ":doc:`traversal-family`" msgstr "" -msgid "Use directly when the resulting matrix is symmetric and there is no :math:`\\infty` value." -msgstr "" - -msgid "It will be the users responsibility to make the matrix symmetric." -msgstr "" - -msgid "By using geometric or harmonic average of the non symmetric values." -msgstr "" - -msgid "By using max or min the non symmetric values." +msgid ":doc:`pgr_breadthFirstSearch` - Breath first search traversal of the graph." msgstr "" -msgid "By setting the upper triangle to be the mirror image of the lower triangle." +msgid ":doc:`pgr_binaryBreadthFirstSearch` - Breath first search traversal of the graph." msgstr "" -msgid "By setting the lower triangle to be the mirror image of the upper triangle." +msgid ":doc:`components-family`" msgstr "" -msgid "It is also the users responsibility to fix an :math:`\\infty` value." +msgid ":doc:`ordering-family`" msgstr "" -msgid "Returns the sum of the costs of the shortest path for pair combination of nodes in the graph." +msgid ":doc:`pgr_cuthillMckeeOrdering` - Return reverse Cuthill-McKee ordering of an undirected graph." msgstr "" -msgid "When the starting vertex and ending vertex are the same, there is no path." +msgid ":doc:`pgr_topologicalSort` - Linear ordering of the vertices for directed acyclic graph." msgstr "" -msgid "The aggregate cost in the non included values `(v, v)` is `0`." +msgid ":doc:`metrics-family`" msgstr "" -msgid "When the starting vertex and ending vertex are the different and there is no path." +msgid ":doc:`pgr_betweennessCentrality` - Calculates relative betweenness centrality using Brandes Algorithm" msgstr "" -msgid "The aggregate cost in the non included values `(u, v)` is :math:`\\infty`." +msgid ":doc:`TRSP-family`" msgstr "" -msgid "Let be the case the values returned are stored in a table:" +msgid "categories" msgstr "" -msgid "The unique index would be the pair: ``(start_vid, end_vid)``." +msgid ":doc:`VRP-category`" msgstr "" -msgid "The aggregate cost of `(u, v)` is the same as for `(v, u)`." +msgid "Shortest Path Category" msgstr "" -msgid "Any duplicated value in the **start vids** are ignored." +msgid ":doc:`pgr_bellmanFord`" msgstr "" -msgid "Used in:" +msgid ":doc:`pgr_dagShortestPath`" msgstr "" -msgid "`Edges SQL`_ as described below" +msgid ":doc:`pgr_edwardMoore`" msgstr "" -msgid "**start vids**" +msgid "Planar Family" msgstr "" -msgid "``ARRAY[BIGINT]``" +msgid ":doc:`pgr_isPlanar`" msgstr "" -msgid "Array of identifiers of starting vertices." +msgid "Miscellaneous Algorithms" msgstr "" -msgid "`Points SQL`_" +msgid ":doc:`pgr_lengauerTarjanDominatorTree`" msgstr "" -msgid "`Points SQL`_ as described below" +msgid ":doc:`pgr_stoerWagner`" msgstr "" -msgid "Points SQL" +msgid ":doc:`pgr_transitiveClosure`" msgstr "" -msgid "``pid``" +msgid ":doc:`pgr_hawickCircuits`" msgstr "" -msgid "**value**" +msgid "Flow - Family of functions" msgstr "" -msgid "Identifier of the point." +msgid ":doc:`pgr_maxFlow` - Only the Max flow calculation using Push and Relabel algorithm." msgstr "" -msgid "Use with positive value, as internally will be converted to negative value" +msgid ":doc:`pgr_boykovKolmogorov` - Boykov and Kolmogorov with details of flow on edges." msgstr "" -msgid "If column is present, it can not be NULL." +msgid ":doc:`pgr_edmondsKarp` - Edmonds and Karp algorithm with details of flow on edges." msgstr "" -msgid "If column is not present, a sequential negative **value** will be given automatically." +msgid ":doc:`pgr_pushRelabel` - Push and relabel algorithm with details of flow on edges." msgstr "" -msgid "Identifier of the \"closest\" edge to the point." +msgid "Applications" msgstr "" -msgid "``fraction``" +msgid ":doc:`pgr_edgeDisjointPaths` - Calculates edge disjoint paths between two groups of vertices." msgstr "" -msgid "Value in <0,1> that indicates the relative postition from the first end point of the edge." +msgid ":doc:`pgr_maxCardinalityMatch` - Calculates a maximum cardinality matching in a graph." msgstr "" -msgid "``side``" +msgid "Flow Functions General Information" msgstr "" -msgid "``CHAR``" +msgid "The graph is **directed**." msgstr "" -msgid "``b``" +msgid "Process is done only on edges with positive capacities." msgstr "" -msgid "Value in [``b``, ``r``, ``l``, ``NULL``] indicating if the point is:" +msgid "When the maximum flow is 0 then there is no flow and **EMPTY SET** is returned." msgstr "" -msgid "In the right ``r``," +msgid "There is no flow when source has the same value as target." msgstr "" -msgid "In the left ``l``," +msgid "Any duplicated values in source or target are ignored." msgstr "" -msgid "In both sides ``b``, ``NULL``" +msgid "Calculates the flow/residual capacity for each edge. In the output" msgstr "" -msgid ":doc:`TSP-family`" +msgid "Edges with zero flow are omitted." msgstr "" -msgid "Dijkstra - Family of functions" +msgid "Creates" msgstr "" -msgid ":doc:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths." +msgid "a **super source** and edges from it to all the sources," msgstr "" -msgid ":doc:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths." +msgid "a **super target** and edges from it to all the targetss." msgstr "" -msgid ":doc:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix." +msgid "The maximum flow through the graph is guaranteed to be the value returned by :doc:`pgr_maxFlow ` when executed with the same parameters and can be calculated:" msgstr "" -msgid ":doc:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament information." +msgid "By aggregation of the outgoing flow from the sources" msgstr "" -msgid ":doc:`pgr_KSP` - Use Yen algorithm with pgr_dijkstra to get the K shortest paths." +msgid "By aggregation of the incoming flow to the targets" msgstr "" -msgid ":doc:`pgr_dijkstraVia` - Get a route of a seuence of vertices." +msgid ":doc:`pgr_maxFlow` is the maximum Flow and that maximum is guaranteed to be the same on the functions :doc:`pgr_pushRelabel`, :doc:`pgr_edmondsKarp`, :doc:`pgr_boykovKolmogorov`, but the actual flow through each edge may vary." msgstr "" -msgid ":doc:`pgr_dijkstraNear` - Get the route to the nearest vertex." +msgid "Capacity edges" msgstr "" -msgid ":doc:`pgr_dijkstraNearCost` - Get the cost to the nearest vertex." +msgid ":doc:`pgr_pushRelabel`" msgstr "" -msgid "Dijkstra's algorithm, conceived by Dutch computer scientist Edsger Dijkstra in 1956. It is a graph search algorithm that solves the shortest path problem for a graph with non-negative edge path costs, producing a shortest path from a starting vertex to an ending vertex. This implementation can be used with a directed graph and an undirected graph." +msgid ":doc:`pgr_edmondsKarp`" msgstr "" -msgid "Running time: :math:`O(| start\\ vids | * (V \\log V + E))`" +msgid ":doc:`pgr_boykovKolmogorov`" msgstr "" -msgid "The Dijkstra family functions are based on the Dijkstra algorithm." +msgid "``reverse_capacity``" msgstr "" -msgid "`Combinations SQL`_" +msgid "Capacity-Cost edges" msgstr "" -msgid "`Combinations SQL`_ as described below" +msgid ":doc:`pgr_maxFlowMinCost`" msgstr "" -msgid "**start vid**" +msgid ":doc:`pgr_maxFlowMinCost_Cost`" msgstr "" -msgid "Identifier of the starting vertex of the path." +msgid "Capacity of the edge (``source``, ``target``)" msgstr "" -msgid "**end vid**" +msgid "Capacity of the edge (``target``, ``source``)" msgstr "" -msgid "Identifier of the ending vertex of the path." +msgid "Weight of the edge (``source``, ``target``) if it exist" msgstr "" -msgid "**end vids**" +msgid "Weight of the edge (``target``, ``source``) if it exist" msgstr "" -msgid "Array of identifiers of ending vertices." +msgid "Cost edges" msgstr "" -msgid "Combinations SQL" +msgid ":doc:`pgr_edgeDisjointPaths`" msgstr "" -msgid "Identifier of the departure vertex." +msgid "Used in" msgstr "" -msgid "Identifier of the arrival vertex." +msgid "**seq**" msgstr "" -msgid "The problem definition (Advanced documentation)" +msgid "``INT``" msgstr "" -msgid "Given the following query:" +msgid "**edge**" msgstr "" -msgid "pgr_dijkstra(:math:`sql, start_{vid}, end_{vid}, directed`)" +msgid "Identifier of the edge in the original query (edges_sql)." msgstr "" -msgid "where :math:`sql = \\{(id_i, source_i, target_i, cost_i, reverse\\_cost_i)\\}`" +msgid "**start_vid**" msgstr "" -msgid "and" +msgid "**end_vid**" msgstr "" -msgid ":math:`source = \\bigcup source_i`," +msgid "**flow**" msgstr "" -msgid ":math:`target = \\bigcup target_i`," +msgid "Flow through the edge in the direction (``start_vid``, ``end_vid``)." msgstr "" -msgid "The graphs are defined as follows:" +msgid "**residual_capacity**" msgstr "" -msgid "Directed graph" +msgid "Residual capacity of the edge in the direction (``start_vid``, ``end_vid``)." msgstr "" -msgid "The weighted directed graph, :math:`G_d(V,E)`, is definied by:" +msgid "For :doc:`pgr_maxFlowMinCost`" msgstr "" -msgid "the set of vertices :math:`V`" +msgid "**source**" msgstr "" -msgid ":math:`V = source \\cup target \\cup {start_{vid}} \\cup {end_{vid}}`" +msgid "**target**" msgstr "" -msgid "the set of edges :math:`E`" +msgid "Flow through the edge in the direction (source, target)." msgstr "" -msgid ":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{if } reverse\\_cost = \\varnothing \\\\ \\text{ } \\text{ } & \\quad \\text{ } \\\\ \\text{ } \\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i>=0 \\} & \\quad \\text{if } reverse\\_cost \\neq \\varnothing \\\\ \\end{cases}`" +msgid "Residual capacity of the edge in the direction (source, target)." msgstr "" -msgid "Undirected graph" +msgid "**cost**" msgstr "" -msgid "The weighted undirected graph, :math:`G_u(V,E)`, is definied by:" +msgid "The cost of sending this flow through the edge in the direction (source, target)." msgstr "" -msgid ":math:`V = source \\cup target \\cup {start_v{vid}} \\cup {end_{vid}}`" +msgid "**agg_cost**" msgstr "" -msgid ":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ } \\\\ \\cup \\{(target_i, source_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ if } reverse\\_cost = \\varnothing \\\\ \\text{ } \\text{ } & \\text{ } \\\\ \\text{ } \\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & \\text{ } \\\\ \\cup \\{(target_i, source_i, cost_i) \\text{ when } cost >=0 \\} & \\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i >=0)\\} & \\text{ } \\\\ \\cup \\{(source_i, target_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i >=0)\\} & \\quad \\text{ if } reverse\\_cost \\neq \\varnothing \\\\ \\end{cases}`" +msgid "The aggregate cost." msgstr "" -msgid "The problem" +msgid "Advanced Documentation" msgstr "" -msgid "Given:" +msgid "A flow network is a directed graph where each edge has a capacity and a flow. The flow through an edge must not exceed the capacity of the edge. Additionally, the incoming and outgoing flow of a node must be equal except for source which only has outgoing flow, and the destination(sink) which only has incoming flow." msgstr "" -msgid ":math:`start_{vid} \\in V` a starting vertex" +msgid "Maximum flow algorithms calculate the maximum flow through the graph and the flow of each edge." msgstr "" -msgid ":math:`end_{vid} \\in V` an ending vertex" +msgid "The maximum flow through the graph is guaranteed to be the same with all implementations, but the actual flow through each edge may vary." msgstr "" -msgid ":math:`G(V,E) = \\begin{cases} G_d(V,E) & \\quad \\text{ if6 } directed = true \\\\ G_u(V,E) & \\quad \\text{ if5 } directed = false \\\\ \\end{cases}`" +msgid "pgr_maxFlow :math:`(edges\\_sql, source\\_vertex, sink\\_vertex)`" msgstr "" -msgid "Then:" +msgid "where :math:`edges\\_sql = \\{(id_i, source_i, target_i, capacity_i, reverse\\_capacity_i)\\}`" msgstr "" -msgid ":math:`\\boldsymbol{\\pi} = \\{(path\\_seq_i, node_i, edge_i, cost_i, agg\\_cost_i)\\}`" +msgid "Graph definition" msgstr "" -msgid "where:" +msgid "The weighted directed graph, :math:`G(V,E)`, is defined as:" msgstr "" -msgid ":math:`path\\_seq_i = i`" +msgid "the set of vertices :math:`V`" msgstr "" -msgid ":math:`path\\_seq_{| \\pi |} = | \\pi |`" +msgid ":math:`source\\_vertex \\cup sink\\_vertex \\bigcup source_i \\bigcup target_i`" msgstr "" -msgid ":math:`node_i \\in V`" +msgid ":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, capacity_i) \\text{ when } capacity > 0 \\} & \\quad \\text{ if } reverse\\_capacity = \\varnothing \\\\ \\text{ } & \\quad \\text{ } \\\\ \\{(source_i, target_i, capacity_i) \\text{ when } capacity > 0 \\} & \\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_capacity_i) \\text{ when } reverse\\_capacity_i > 0)\\} & \\quad \\text{ if } reverse\\_capacity \\neq \\varnothing \\\\ \\end{cases}`" msgstr "" -msgid ":math:`node_1 = start_{vid}`" +msgid "Maximum flow problem" msgstr "" -msgid ":math:`node_{| \\pi |} = end_{vid}`" +msgid ":math:`G(V,E)`" msgstr "" -msgid ":math:`\\forall i \\neq | \\pi |, \\quad (node_i, node_{i+1}, cost_i) \\in E`" +msgid ":math:`source\\_vertex \\in V` the source vertex" msgstr "" -msgid ":math:`edge_i = \\begin{cases} id_{(node_i, node_{i+1},cost_i)} &\\quad \\text{when } i \\neq | \\pi | \\\\ -1 &\\quad \\text{when } i = | \\pi | \\\\ \\end{cases}`" +msgid ":math:`sink\\_vertex \\in V` the sink vertex" msgstr "" -msgid ":math:`cost_i = cost_{(node_i, node_{i+1})}`" +msgid ":math:`pgr\\_maxFlow(edges\\_sql, source, sink) = \\boldsymbol{\\Phi}`" msgstr "" -msgid ":math:`agg\\_cost_i = \\begin{cases} 0 &\\quad \\text{when } i = 1 \\\\ \\displaystyle\\sum_{k=1}^{i} cost_{(node_{k-1}, node_k)} &\\quad \\text{when } i \\neq 1 \\\\ \\end{cases}`" +msgid ":math:`\\boldsymbol{\\Phi} = {(id_i, edge\\_id_i, source_i, target_i, flow_i, residual\\_capacity_i)}`" msgstr "" -msgid "In other words: The algorithm returns a the shortest path between :math:`start_{vid}` and :math:`end_{vid}`, if it exists, in terms of a sequence of nodes and of edges," +msgid ":math:`\\boldsymbol{\\Phi}` is a subset of the original edges with their residual capacity and flow. The maximum flow through the graph can be obtained by aggregating on the source or sink and summing the flow from/to it. In particular:" msgstr "" -msgid ":math:`path\\_seq` indicates the relative position in the path of the :math:`node` or :math:`edge`." +msgid ":math:`id_i = i`" msgstr "" -msgid ":math:`cost` is the cost of the edge to be used to go to the next node." +msgid ":math:`edge\\_id = id_i` in edges_sql" msgstr "" -msgid ":math:`agg\\_cost` is the cost from the :math:`start_{vid}` up to the node." +msgid ":math:`residual\\_capacity_i = capacity_i - flow_i`" msgstr "" -msgid "If there is no path, the resulting set is empty." +msgid "https://en.wikipedia.org/wiki/Maximum_flow_problem" msgstr "" -msgid "Driving Distance - Category" +msgid "pgRouting extends the `PostGIS `__/`PostgreSQL `__ geospatial database to provide geospatial routing and other network analysis functionality." msgstr "" -msgid ":doc:`pgr_drivingDistance` - Driving Distance based on Dijkstra's algorithm" +msgid "This is the manual for pgRouting |release|." msgstr "" -msgid ":doc:`pgr_primDD` - Driving Distance based on Prim's algorithm" +msgid "Creative Commons Attribution-Share Alike 3.0 License" msgstr "" -msgid ":doc:`pgr_kruskalDD` - Driving Distance based on Kruskal's algorithm" +msgid "The pgRouting Manual is licensed under a `Creative Commons Attribution-Share Alike 3.0 License `_. Feel free to use this material any way you like, but we ask that you attribute credit to the pgRouting Project and wherever possible, a link back to https://pgrouting.org. For other licenses used in pgRouting see the :ref:`license` page." msgstr "" -msgid "Post pocessing" +msgid "General" msgstr "" -msgid ":doc:`pgr_alphaShape` - Alpha shape computation" +msgid ":doc:`sampledata` that is used in the examples of this manual." msgstr "" -msgid ":doc:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints" +msgid "Pgrouting Concepts" msgstr "" -msgid "Calculate nodes that are within a distance." +msgid ":doc:`routingFunctions`" msgstr "" -msgid "Extracts all the nodes that have costs less than or equal to the value distance." +msgid ":doc:`allpairs-family`" msgstr "" -msgid "The edges extracted will conform to the corresponding spanning tree." +msgid ":doc:`bdDijkstra-family`" msgstr "" -msgid "Edge :math:`(u, v)` will not be included when:" +msgid ":doc:`contraction-family`" msgstr "" -msgid "The distance from the **root** to :math:`u` > limit distance." +msgid ":doc:`dijkstra-family`" msgstr "" -msgid "The distance from the **root** to :math:`v` > limit distance." +msgid ":doc:`kruskal-family`" msgstr "" -msgid "No new nodes are created on the graph, so when is within the limit and is not within the limit, the edge is not included." +msgid ":doc:`pgr_kruskal`" msgstr "" -msgid "Edges SQL as described below." +msgid ":doc:`pgr_kruskalDD`" msgstr "" -msgid "**Root vid**" +msgid ":doc:`pgr_degree` - Returns a set of vertices and corresponding count of incident edges to the vertex." msgstr "" -msgid "**Root vids**" +msgid ":doc:`prim-family`" msgstr "" -msgid "``ARRAY[ANY-INTEGER]``" +msgid ":doc:`pgr_prim`" msgstr "" -msgid "**distance**" +msgid ":doc:`pgr_primDD`" msgstr "" -msgid "Upper limit for the inclusion of a node in the result." +msgid ":doc:`reference`" msgstr "" -msgid "Returns set of |result-spantree|" +msgid ":doc:`pgr_version`" msgstr "" -msgid ":math:`depth-1` is the depth of ``pred``" +msgid ":doc:`pgr_full_version`" msgstr "" -msgid "``pred``" +msgid ":doc:`topology-functions`" msgstr "" -msgid "Predecessor of ``node``." +msgid "The following functions modify the database directly therefore the user must have special permissions given by the administrators to use them." msgstr "" -msgid "When ``node`` = ``start_vid`` then has the value ``node``." +msgid ":doc:`pgr_createTopology` - create a topology based on the geometry." msgstr "" -msgid "Identifier of the ``edge`` used to arrive from ``pred`` to ``node``." +msgid ":doc:`pgr_createVerticesTable` - reconstruct the vertices table based on the source and target information." msgstr "" -msgid "Experimental Functions" +msgid ":doc:`pgr_analyzeGraph` - to analyze the edges and vertices of the edge table." msgstr "" -msgid "Families" +msgid ":doc:`pgr_analyzeOneWay` - to analyze directionality of the edges." msgstr "" -msgid ":doc:`flow-family`" +msgid ":doc:`pgr_nodeNetwork` - to create nodes to a not noded edge table." msgstr "" -msgid ":doc:`pgr_maxFlowMinCost` - Details of flow and cost on edges." +msgid ":doc:`pgr_extractVertices` - Extracts vertex information based on the edge table information." msgstr "" -msgid ":doc:`pgr_maxFlowMinCost_Cost` - Only the Min Cost calculation." +msgid ":doc:`pgr_trsp` - Turn Restriction Shortest Path (TRSP)" msgstr "" -msgid ":doc:`chinesePostmanProblem-family`" +msgid "Utilities family" msgstr "" -msgid ":doc:`coloring-family`" +msgid ":doc:`pgr_findCloseEdges`" msgstr "" -msgid ":doc:`transformation-family`" +msgid "Functions by categories" msgstr "" -msgid ":doc:`pgr_lineGraphFull` - Transformation algorithm for generating a Line Graph out of each vertex in the input graph." +msgid ":doc:`cost-category`" msgstr "" -msgid ":doc:`traversal-family`" +msgid ":doc:`costMatrix-category`" msgstr "" -msgid ":doc:`pgr_breadthFirstSearch` - Breath first search traversal of the graph." +msgid ":doc:`drivingDistance-category`" msgstr "" -msgid ":doc:`pgr_binaryBreadthFirstSearch` - Breath first search traversal of the graph." +msgid ":doc:`KSP-category`" msgstr "" -msgid ":doc:`components-family`" +msgid ":doc:`spanningTree-category`" msgstr "" -msgid ":doc:`ordering-family`" +msgid ":doc:`BFS-category`" msgstr "" -msgid ":doc:`pgr_cuthillMckeeOrdering` - Return reverse Cuthill-McKee ordering of an undirected graph." +msgid ":doc:`DFS-category`" msgstr "" -msgid ":doc:`metrics-family`" +msgid "Available Functions but not official pgRouting functions" msgstr "" -msgid ":doc:`pgr_betweennessCentrality` - Calculates relative betweenness centrality using Brandes Algorithm" +msgid ":doc:`proposed`" msgstr "" -msgid ":doc:`TRSP-family`" +msgid ":doc:`experimental`" msgstr "" -msgid "categories" +msgid ":doc:`release_notes`" msgstr "" -msgid ":doc:`VRP-category`" +msgid "pgRouting 4.0.0 Release Notes" msgstr "" -msgid "Unclassified" +msgid "To see all issues & pull requests closed by this release see the `Git closed milestone for 4.0.0 `__" msgstr "" -msgid ":doc:`pgr_bellmanFord`" +msgid "Functions promoted to official" msgstr "" -msgid ":doc:`pgr_dagShortestPath`" +msgid "pgr_trsp" msgstr "" -msgid ":doc:`pgr_edwardMoore`" +msgid "pgr_trspVia" msgstr "" -msgid ":doc:`pgr_isPlanar`" +msgid "pgr_trspVia_withPoints" msgstr "" -msgid ":doc:`pgr_stoerWagner`" +msgid "pgr_trsp_withPoints" msgstr "" -msgid ":doc:`pgr_topologicalSort`" +msgid "pgr_withPoints" msgstr "" -msgid ":doc:`pgr_transitiveClosure`" +msgid "pgr_withPointsCost" msgstr "" -msgid ":doc:`pgr_lengauerTarjanDominatorTree`" +msgid "pgr_withPointsCostMatrix" msgstr "" -msgid ":doc:`pgr_hawickCircuits`" +msgid "pgr_withPointsDD" msgstr "" -msgid "Flow - Family of functions" +msgid "pgr_withPointsKSP" msgstr "" -msgid ":doc:`pgr_maxFlow` - Only the Max flow calculation using Push and Relabel algorithm." +msgid "pgr_withPointsVia" msgstr "" -msgid ":doc:`pgr_boykovKolmogorov` - Boykov and Kolmogorov with details of flow on edges." +msgid "Signatures promoted to official" msgstr "" -msgid ":doc:`pgr_edmondsKarp` - Edmonds and Karp algorithm with details of flow on edges." +msgid "pgr_aStar(Combinations)" msgstr "" -msgid ":doc:`pgr_pushRelabel` - Push and relabel algorithm with details of flow on edges." +msgid "pgr_aStarCost(Combinations)" msgstr "" -msgid "Applications" +msgid "pgr_bdAstar(Combinations)" msgstr "" -msgid ":doc:`pgr_edgeDisjointPaths` - Calculates edge disjoint paths between two groups of vertices." +msgid "pgr_bdAstarCost(Combinations)" msgstr "" -msgid ":doc:`pgr_maxCardinalityMatch` - Calculates a maximum cardinality matching in a graph." +msgid "pgr_bdDijkstra(Combinations)" msgstr "" -msgid "Flow Functions General Information" +msgid "pgr_bdDijkstraCost(Combinations)" msgstr "" -msgid "The graph is **directed**." +msgid "pgr_dijkstra(Combinations)" msgstr "" -msgid "Process is done only on edges with positive capacities." +msgid "pgr_dijkstraCost(Combinations)" msgstr "" -msgid "When the maximum flow is 0 then there is no flow and **EMPTY SET** is returned." +msgid "pgr_KSP(All signatures)" msgstr "" -msgid "There is no flow when source has the same vaule as target." +msgid "pgr_boykovKolmogorov(Combinations)" msgstr "" -msgid "Any duplicated values in source or target are ignored." +msgid "pgr_edmondsKarp(Combinations)" msgstr "" -msgid "Calculates the flow/residual capacity for each edge. In the output" +msgid "pgr_maxFlow(Combinations)" msgstr "" -msgid "Edges with zero flow are omitted." +msgid "pgr_pushRelabel(Combinations)" msgstr "" -msgid "Creates" +msgid "code enhancements:" msgstr "" -msgid "a **super source** and edges from it to all the sources," +msgid "Removal of unused C/C++ code" msgstr "" -msgid "a **super target** and edges from it to all the targetss." +msgid "Removal of SQL deprecated functions" msgstr "" -msgid "The maximum flow through the graph is guaranteed to be the value returned by :doc:`pgr_maxFlow ` when executed with the same parameters and can be calculated:" +msgid "pgr_trsp(text,integer,double precision,integer,double precision,boolean,boolean,text)" msgstr "" -msgid "By aggregation of the outgoing flow from the sources" +msgid "pgr_trsp(text,integer,integer,boolean,boolean,text)" msgstr "" -msgid "By aggregation of the incoming flow to the targets" +msgid "pgr_trspviaedges(text,integer[],double precision[],boolean,boolean,text)" msgstr "" -msgid ":doc:`pgr_maxFlow` is the maximum Flow and that maximum is guaranteed to be the same on the functions :doc:`pgr_pushRelabel`, :doc:`pgr_edmondsKarp`, :doc:`pgr_boykovKolmogorov`, but the actual flow through each edge may vary." +msgid "pgr_trspviavertices(text,anyarray,boolean,boolean,text)" msgstr "" -msgid "Capacity edges" +msgid "Removal of SQL deprecated internal functions" msgstr "" -msgid ":doc:`pgr_pushRelabel`" +msgid "_pgr_dijkstranear(text,anyarray,anyarray,bigint,boolean)" msgstr "" -msgid ":doc:`pgr_edmondsKarp`" +msgid "_pgr_dijkstranear(text,anyarray,bigint,bigint,boolean)" msgstr "" -msgid ":doc:`pgr_boykovKolmogorov`" +msgid "_pgr_dijkstranear(text,bigint,anyarray,bigint,boolean)" msgstr "" -msgid "``reverse_capacity``" +msgid "_pgr_dijkstra(text,anyarray,anyarray,boolean,boolean,boolean,bigint)" msgstr "" -msgid "Capacity-Cost edges" +msgid "_pgr_dijkstra(text,text,boolean,boolean,boolean)" msgstr "" -msgid ":doc:`pgr_maxFlowMinCost`" +msgid "_pgr_drivingdistance(text,anyarray,double precision,boolean,boolean)" msgstr "" -msgid ":doc:`pgr_maxFlowMinCost_Cost`" +msgid "_pgr_kruskal(text,anyarray,text,bigint,double precision)" msgstr "" -msgid "Capacity of the edge (``source``, ``target``)" +msgid "_pgr_prim(text,anyarray,text,bigint,double precision)" msgstr "" -msgid "Capacity of the edge (``target``, ``source``)" +msgid "_pgr_trsp(text,integer,double precision,integer,double precision,boolean,boolean,text)" msgstr "" -msgid "Weight of the edge (``source``, ``target``) if it exist" +msgid "_pgr_trsp(text,text,anyarray,anyarray,boolean)" msgstr "" -msgid "Weight of the edge (``target``, ``source``) if it exist" +msgid "_pgr_trsp(text,text,anyarray,bigint,boolean)" msgstr "" -msgid "Cost edges" +msgid "_pgr_trsp(text,text,bigint,anyarray,boolean)" msgstr "" -msgid ":doc:`pgr_edgeDisjointPaths`" +msgid "_pgr_trsp(text,text,bigint,bigint,boolean)" msgstr "" -msgid "Used in" +msgid "_pgr_trspviavertices(text,integer[],boolean,boolean,text)" msgstr "" -msgid "**seq**" +msgid "_pgr_withpointsvia(text,bigint[],double precision[],boolean)" msgstr "" -msgid "``INT``" +msgid "_trsp(text,text,anyarray,anyarray,boolean)" msgstr "" -msgid "**edge**" +msgid "_v4trsp(text,text,anyarray,anyarray,boolean)" msgstr "" -msgid "Identifier of the edge in the original query (edges_sql)." +msgid "_v4trsp(text,text,text,boolean)" msgstr "" -msgid "**start_vid**" +msgid "Deprecation of internal C/C++ functions" msgstr "" -msgid "**end_vid**" +msgid "Internal C/C++ functions in legacy" msgstr "" -msgid "**flow**" +msgid "All releases" msgstr "" -msgid "Flow through the edge in the direction (``start_vid``, ``end_vid``)." +msgid "Kruskal - Family of functions" msgstr "" -msgid "**residual_capacity**" +msgid "Kruskal's algorithm is a greedy minimum spanning tree algorithm that in each cycle finds and adds the edge of the least possible weight that connects any two trees in the forest." msgstr "" -msgid "Residual capacity of the edge in the direction (``start_vid``, ``end_vid``)." +msgid "**The main Characteristics are:**" msgstr "" -msgid "For :doc:`pgr_maxFlowMinCost`" +msgid "The total weight of all the edges in the tree or forest is minimized." msgstr "" -msgid "**source**" +msgid "Kruskal's running time: :math:`O(E * log E)`" msgstr "" -msgid "**target**" +msgid "Metrics - Family of functions" msgstr "" -msgid "Flow through the edge in the direction (source, target)." +msgid "Migration guide" msgstr "" -msgid "Residual capacity of the edge in the direction (source, target)." +msgid "Several functions are having changes on the signatures, and/or have been replaced by new functions." msgstr "" -msgid "**cost**" +msgid "Results can be different because of the changes." msgstr "" -msgid "The cost of sending this flow through the edge in the direction (source, target)." +msgid "All deprecated functions will be removed on next mayor version 4.0.0" msgstr "" -msgid "**agg_cost**" +msgid "Migration of ``pgr_aStar``" msgstr "" -msgid "The aggregate cost." +msgid "Starting from `v3.6.0 `__" msgstr "" -msgid "Advanced Documentation" +msgid "Signatures to be migrated:" msgstr "" -msgid "A flow network is a directed graph where each edge has a capacity and a flow. The flow through an edge must not exceed the capacity of the edge. Additionally, the incoming and outgoing flow of a node must be equal except for source which only has outgoing flow, and the destination(sink) which only has incoming flow." +msgid "``pgr_aStar`` (`One to One`)" msgstr "" -msgid "Maximum flow algorithms calculate the maximum flow through the graph and the flow of each edge." +msgid "``pgr_aStar`` (`One to Many`)" msgstr "" -msgid "The maximum flow through the graph is guaranteed to be the same with all implementations, but the actual flow through each edge may vary." +msgid "``pgr_aStar`` (`Many to One`)" msgstr "" -msgid "pgr_maxFlow :math:`(edges\\_sql, source\\_vertex, sink\\_vertex)`" +msgid "Before Migration" msgstr "" -msgid "where :math:`edges\\_sql = \\{(id_i, source_i, target_i, capacity_i, reverse\\_capacity_i)\\}`" +msgid "Output columns were |old-generic-result|" msgstr "" -msgid "Graph definition" +msgid "Depending on the overload used, the columns ``start_vid`` and ``end_vid`` might be missing:" msgstr "" -msgid "The weighted directed graph, :math:`G(V,E)`, is defined as:" +msgid "``pgr_aStar`` (`One to One`) does not have ``start_vid`` and ``end_vid``." msgstr "" -msgid "the set of vertices :math:`V`" +msgid "``pgr_aStar`` (`One to Many`) does not have ``start_vid``." msgstr "" -msgid ":math:`source\\_vertex \\cup sink\\_vertex \\bigcup source_i \\bigcup target_i`" +msgid "``pgr_aStar`` (`Many to One`) does not have ``end_vid``." msgstr "" -msgid ":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, capacity_i) \\text{ when } capacity > 0 \\} & \\quad \\text{ if } reverse\\_capacity = \\varnothing \\\\ \\text{ } & \\quad \\text{ } \\\\ \\{(source_i, target_i, capacity_i) \\text{ when } capacity > 0 \\} & \\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_capacity_i) \\text{ when } reverse\\_capacity_i > 0)\\} & \\quad \\text{ if } reverse\\_capacity \\neq \\varnothing \\\\ \\end{cases}`" +msgid "Migration" msgstr "" -msgid "Maximum flow problem" +msgid "Be aware of the existence of the additional columns." msgstr "" -msgid ":math:`G(V,E)`" +msgid "In ``pgr_aStar`` (`One to One`)" msgstr "" -msgid ":math:`source\\_vertex \\in V` the source vertex" +msgid "``start_vid`` contains the **start vid** parameter value." msgstr "" -msgid ":math:`sink\\_vertex \\in V` the sink vertex" +msgid "``end_vid`` contains the **end vid** parameter value." msgstr "" -msgid ":math:`pgr\\_maxFlow(edges\\_sql, source, sink) = \\boldsymbol{\\Phi}`" +msgid "In ``pgr_aStar`` (`One to Many`)" msgstr "" -msgid ":math:`\\boldsymbol{\\Phi} = {(id_i, edge\\_id_i, source_i, target_i, flow_i, residual\\_capacity_i)}`" +msgid "In ``pgr_aStar`` (`Many to One`)" msgstr "" -msgid ":math:`\\boldsymbol{\\Phi}` is a subset of the original edges with their residual capacity and flow. The maximum flow through the graph can be obtained by aggregating on the source or sink and summing the flow from/to it. In particular:" +msgid "If needed filter out the added columns, for example:" msgstr "" -msgid ":math:`id_i = i`" +msgid "If needed add the new columns, similar to the following example where ``pgr_dijkstra`` is used, and the function had to be modified to be able to return the new columns:" msgstr "" -msgid ":math:`edge\\_id = id_i` in edges_sql" +msgid "In `v3.0 `__ the function ``my_dijkstra`` uses ``pgr_dijkstra``." msgstr "" -msgid ":math:`residual\\_capacity_i = capacity_i - flow_i`" +msgid "Starting from `v3.5 `__ the function ``my_dijkstra`` returns the new additional columns of ``pgr_dijkstra``." msgstr "" -msgid "https://en.wikipedia.org/wiki/Maximum_flow_problem" +msgid "Migration of ``pgr_bdAstar``" msgstr "" -msgid "pgRouting extends the `PostGIS `__/`PostgreSQL `__ geospatial database to provide geospatial routing and other network analysis functionality." +msgid "``pgr_bdAstar`` (`One to One`)" msgstr "" -msgid "This is the manual for pgRouting |release|." +msgid "``pgr_bdAstar`` (`One to Many`)" msgstr "" -msgid "Creative Commons Attribution-Share Alike 3.0 License" +msgid "``pgr_bdAstar`` (`Many to One`)" msgstr "" -msgid "The pgRouting Manual is licensed under a `Creative Commons Attribution-Share Alike 3.0 License `_. Feel free to use this material any way you like, but we ask that you attribute credit to the pgRouting Project and wherever possible, a link back to https://pgrouting.org. For other licenses used in pgRouting see the :ref:`license` page." +msgid "``pgr_bdAstar`` (`One to One`) does not have ``start_vid`` and ``end_vid``." msgstr "" -msgid "General" +msgid "``pgr_bdAstar`` (`One to Many`) does not have ``start_vid``." msgstr "" -msgid ":doc:`sampledata` that is used in the examples of this manual." +msgid "``pgr_bdAstar`` (`Many to One`) does not have ``end_vid``." msgstr "" -msgid "Pgrouting Concepts" +msgid "In ``pgr_bdAstar`` (`One to One`)" msgstr "" -msgid ":doc:`routingFunctions`" +msgid "In ``pgr_bdAstar`` (`One to Many`)" msgstr "" -msgid ":doc:`allpairs-family`" +msgid "In ``pgr_bdAstar`` (`Many to One`)" msgstr "" -msgid ":doc:`bdDijkstra-family`" +msgid "Migration of ``pgr_dijkstra``" msgstr "" -msgid ":doc:`contraction-family`" +msgid "Starting from `v3.5.0 `__" msgstr "" -msgid ":doc:`dijkstra-family`" +msgid "``pgr_dijkstra`` (`One to One`)" msgstr "" -msgid ":doc:`kruskal-family`" +msgid "``pgr_dijkstra`` (`One to Many`)" msgstr "" -msgid ":doc:`pgr_kruskal`" +msgid "``pgr_dijkstra`` (`Many to One`)" msgstr "" -msgid ":doc:`pgr_kruskalDD`" +msgid "``pgr_dijkstra`` (`One to One`) does not have ``start_vid`` and ``end_vid``." msgstr "" -msgid ":doc:`prim-family`" +msgid "``pgr_dijkstra`` (`One to Many`) does not have ``start_vid``." msgstr "" -msgid ":doc:`pgr_prim`" +msgid "``pgr_dijkstra`` (`Many to One`) does not have ``end_vid``." msgstr "" -msgid ":doc:`pgr_primDD`" +msgid "In ``pgr_dijkstra`` (`One to One`)" msgstr "" -msgid ":doc:`reference`" +msgid "In ``pgr_dijkstra`` (`One to Many`)" msgstr "" -msgid ":doc:`pgr_version`" +msgid "In ``pgr_dijkstra`` (`Many to One`)" msgstr "" -msgid ":doc:`pgr_full_version`" +msgid "If needed add the new columns, for example:" msgstr "" -msgid ":doc:`topology-functions`" +msgid "Migration of ``pgr_drivingDistance``" msgstr "" -msgid "The following functions modify the database directly therefore the user must have special permissions given by the administrators to use them." +msgid "Starting from `v3.6.0 `__ :doc:`pgr_drivingDistance` result columns are being standardized." msgstr "" -msgid ":doc:`pgr_createTopology` - create a topology based on the geometry." +msgid "from" msgstr "" -msgid ":doc:`pgr_createVerticesTable` - reconstruct the vertices table based on the source and target information." +msgid "|result-dij-dd|" msgstr "" -msgid ":doc:`pgr_analyzeGraph` - to analyze the edges and vertices of the edge table." +msgid "to" msgstr "" -msgid ":doc:`pgr_analyzeOneWay` - to analyze directionality of the edges." +msgid "|result-spantree|" msgstr "" -msgid ":doc:`pgr_nodeNetwork` - to create nodes to a not noded edge table." +msgid "pgr_drivingDistance(Single vertex)" msgstr "" -msgid ":doc:`pgr_trsp` - Turn Restriction Shortest Path (TRSP)" +msgid "pgr_drivingDistance(Multiple vertices)" msgstr "" -msgid "Functions by categories" +msgid "Output columns were |result-dij-dd|" msgstr "" -msgid ":doc:`cost-category`" +msgid "Does not have ``start_vid`` and ``depth`` result columns." msgstr "" -msgid ":doc:`costMatrix-category`" +msgid "Has ``from_v`` instead of ``start_vid`` result column." msgstr "" -msgid ":doc:`drivingDistance-category`" +msgid "does not have ``depth`` result column." msgstr "" -msgid ":doc:`KSP-category`" +msgid "Be aware of the existence and name change of the result columns." msgstr "" -msgid ":doc:`spanningTree-family`" +msgid "Using `this `__ example." msgstr "" -msgid ":doc:`BFS-category`" +msgid "``depth`` contains the depth of the ``node``." msgstr "" -msgid ":doc:`DFS-category`" +msgid "``pred`` contains the predecessor of the ``node``." msgstr "" -msgid "Available Functions but not official pgRouting functions" +msgid "If needed filter out the added columns, for example, to return the original columns" msgstr "" -msgid ":doc:`proposed`" +msgid "Using `this `__ example." msgstr "" -msgid ":doc:`experimental`" +msgid "The ``from_v`` result column name changes to ``start_vid``." msgstr "" -msgid ":doc:`release_notes`" +msgid "If needed filter out and rename columns, for example, to return the original columns:" msgstr "" -msgid "pgRouting 3.7.0 Release Notes" +msgid "Migration of ``pgr_kruskalDD`` / ``pgr_kruskalBFS`` / ``pgr_kruskalDFS``" msgstr "" -msgid "To see all issues & pull requests closed by this release see the `Git closed milestone for 3.7.0 `__" +msgid "Starting from `v3.7.0 `__ :doc:`pgr_kruskalDD`, :doc:`pgr_kruskalBFS` and :doc:`pgr_kruskalDFS` result columns are being standardized." msgstr "" -msgid "Support" +msgid "|result-bfs|" msgstr "" -msgid "`#2656 `__ Stop support of PostgreSQL12 on pgrouting v3.7" +msgid "``pgr_kruskalDD``" msgstr "" -msgid "Stopping support of PostgreSQL 12" +msgid "Single vertex" msgstr "" -msgid "CI does not test for PostgreSQL 12" +msgid "Multiple vertices" msgstr "" -msgid "New experimental functions" +msgid "``pgr_kruskalDFS``" msgstr "" -msgid "Metrics" +msgid "``pgr_kruskalBFS``" msgstr "" -msgid "pgr_betweennessCentrality" +msgid "Output columns were |result-bfs|" msgstr "" -msgid "Official functions changes" +msgid "Single vertex and Multiple vertices" msgstr "" -msgid "`#2605 `__ Standarize spanning tree functions output" +msgid "Do not have ``pred`` result column." msgstr "" -msgid "Functions:" +msgid "Be aware of the existence of `pred` result columns." msgstr "" -msgid "``pgr_kruskalDD``" +msgid "If needed filter out the added columns" msgstr "" -msgid "``pgr_kruskalDFS``" +msgid "Kruskal single vertex" msgstr "" -msgid "``pgr_kruskalBFS``" +msgid "Using ``pgr_KruskalDD`` as example. Migration is similar to al the affected functions." msgstr "" -msgid "``pgr_primDD``" +msgid "Comparing with `this `__ example." msgstr "" -msgid "``pgr_primDFS``" +msgid "Now column ``pred`` exists and contains the predecessor of the ``node``." msgstr "" -msgid "``pgr_primBFS``" +msgid "Kruskal multiple vertices" msgstr "" -msgid "Standarizing output columns to |result-spantree|" +msgid "Comparing with `this `__ example." msgstr "" -msgid "Added ``pred`` result columns." +msgid "Migration of ``pgr_KSP``" msgstr "" -msgid "Experimental promoted to proposed." +msgid "Starting from `v3.6.0 `__ :doc:`pgr_KSP` result columns are being standardized." msgstr "" -msgid "`#2635 `__ pgr_LineGraph ignores directed flag and use negative values for identifiers." +msgid "|ksp-result|" msgstr "" -msgid "``pgr_lineGraph``" +msgid "|nksp-result|" msgstr "" -msgid "Promoted to **proposed** signature." +msgid "``pgr_KSP`` (One to One)" msgstr "" -msgid "Works for directed and undirected graphs." +msgid "Output columns were |ksp-result|" msgstr "" -msgid "Code enhancement" +msgid "the columns ``start_vid`` and ``end_vid`` do not exist." msgstr "" -msgid "`#2599 `__ Driving distance cleanup" +msgid "``pgr_KSP`` (One to One) does not have ``start_vid`` and ``end_vid``." msgstr "" -msgid "`#2607 `__ Read postgresql data on C++" +msgid "Using `this `__ example." msgstr "" -msgid "`#2614 `__ Clang tidy does not work" +msgid "If needed filter out the added columns, for example, to return the original columns:" msgstr "" -msgid "All releases" +msgid "Migration of ``pgr_maxCardinalityMatch``" msgstr "" -msgid "Kruskal - Family of functions" +msgid ":doc:`pgr_maxCardinalityMatch` works only for undirected graphs, therefore the ``directed`` flag has been removed." msgstr "" -msgid "Boost Graph Inside" +msgid "Starting from `v3.4.0 `__" msgstr "" -msgid "Kruskal's algorithm is a greedy minimum spanning tree algorithm that in each cycle finds and adds the edge of the least possible weight that connects any two trees in the forest." +msgid "Signature to be migrated:" msgstr "" -msgid "**The main Characteristics are:**" +msgid "Migration is needed, because:" msgstr "" -msgid "The total weight of all the edges in the tree or forest is minimized." +msgid "Use ``cost`` and ``reverse_cost`` on the inner query" msgstr "" -msgid "Kruskal's running time: :math:`O(E * log E)`" +msgid "Results are ordered" msgstr "" -msgid "Metrics - Family of functions" +msgid "Works for undirected graphs." msgstr "" -msgid "Migration guide" +msgid "New signature" msgstr "" -msgid "Several functions are having changes on the signatures, and/or have been replaced by new functions." +msgid "``pgr_maxCardinalityMatch(text)`` returns only ``edge`` column." msgstr "" -msgid "Results can be different because of the changes." +msgid "The optional flag ``directed`` is removed." msgstr "" -msgid "All deprecated functions will be removed on next mayor version 4.0.0" +msgid "Before migration" msgstr "" -msgid "Migration of functions" +msgid "Columns used are ``going`` and ``coming`` to represent the existence of an edge." msgstr "" -msgid "Migrating functions" +msgid "Flag ``directed`` was used to indicate if it was for a **directed** or **undirected** graph." msgstr "" -msgid "Migration of ``pgr_aStar``" +msgid "The flag ``directed`` is ignored." msgstr "" -msgid "Starting from `v3.6.0 `__" +msgid "Regardless of it's value it gives the result considering the graph as **undirected**." msgstr "" -msgid "Signatures to be migrated:" +msgid "Use the columns ``cost`` and ``reverse_cost`` to represent the existence of an edge." msgstr "" -msgid "``pgr_aStar`` (`One to One`)" +msgid "Do not use the flag ``directed``." msgstr "" -msgid "``pgr_aStar`` (`One to Many`)" +msgid "In the query returns only ``edge`` column." msgstr "" -msgid "``pgr_aStar`` (`Many to One`)" +msgid "Migration of ``pgr_primDD`` / ``pgr_primBFS`` / ``pgr_primDFS``" msgstr "" -msgid "Before Migration" +msgid "Starting from `v3.7.0 `__ :doc:`pgr_primDD`, :doc:`pgr_primBFS` and :doc:`pgr_primDFS` result columns are being standardized." msgstr "" -msgid "Output columns were |old-generic-result|" +msgid "``pgr_primDD``" msgstr "" -msgid "Depending on the overload used, the columns ``start_vid`` and ``end_vid`` might be missing:" +msgid "``pgr_primDFS``" msgstr "" -msgid "``pgr_aStar`` (`One to One`) does not have ``start_vid`` and ``end_vid``." +msgid "``pgr_primBFS``" msgstr "" -msgid "``pgr_aStar`` (`One to Many`) does not have ``start_vid``." +msgid "Prim single vertex" msgstr "" -msgid "``pgr_aStar`` (`Many to One`) does not have ``end_vid``." +msgid "Using ``pgr_primDD`` as example. Migration is similar to al the affected functions." msgstr "" -msgid "Migration" +msgid "Comparing with `this `__ example." msgstr "" -msgid "Be aware of the existence of the additional columns." +msgid "Prim multiple vertices" msgstr "" -msgid "In ``pgr_aStar`` (`One to One`)" +msgid "Comparing with `this `__ example." msgstr "" -msgid "``start_vid`` contains the **start vid** parameter value." +msgid "Migration of ``pgr_withPointsDD``" msgstr "" -msgid "``end_vid`` contains the **end vid** parameter value." +msgid "Starting from `v3.6.0 `__ :doc:`pgr_withPointsDD` result columns are being standardized." msgstr "" -msgid "In ``pgr_aStar`` (`One to Many`)" +msgid "|result-generic-no-seq|" msgstr "" -msgid "In ``pgr_aStar`` (`Many to One`)" +msgid "And ``driving_side`` parameter changed from named optional to unnamed compulsory **driving side** and its validity differ for directed and undirected graphs." msgstr "" -msgid "If needed filter out the added columns, for example:" +msgid "``pgr_withPointsDD`` (Single vertex)" msgstr "" -msgid "If needed add the new columns, similar to the following example where ``pgr_dijkstra`` is used, and the function had to be modified to be able to return the new columns:" +msgid "``pgr_withPointsDD`` (Multiple vertices)" msgstr "" -msgid "In `v3.0 `__ the function ``my_dijkstra`` uses ``pgr_dijkstra``." +msgid "Output columns were |result-1-1-no-seq|" msgstr "" -msgid "Starting from `v3.5 `__ the function ``my_dijkstra`` returns the new additional columns of ``pgr_dijkstra``." +msgid "Does not have ``start_vid``, ``pred`` and ``depth`` result columns." msgstr "" -msgid "Migration of ``pgr_bdAstar``" +msgid "``driving_side`` parameter was named optional now it is compulsory unnamed." msgstr "" -msgid "``pgr_bdAstar`` (`One to One`)" +msgid "``pgr_withPointsDD`` (`Multiple vertices`)" msgstr "" -msgid "``pgr_bdAstar`` (`One to Many`)" +msgid "Output columns were |result-m-1-no-seq|" msgstr "" -msgid "``pgr_bdAstar`` (`Many to One`)" +msgid "Does not have ``depth`` and ``pred`` result columns." msgstr "" -msgid "``pgr_bdAstar`` (`One to One`) does not have ``start_vid`` and ``end_vid``." +msgid "Driving side was optional" msgstr "" -msgid "``pgr_bdAstar`` (`One to Many`) does not have ``start_vid``." +msgid "The default values on this query are:" msgstr "" -msgid "``pgr_bdAstar`` (`Many to One`) does not have ``end_vid``." +msgid "directed" msgstr "" -msgid "In ``pgr_bdAstar`` (`One to One`)" +msgid "true" msgstr "" -msgid "In ``pgr_bdAstar`` (`One to Many`)" +msgid "driving_side" msgstr "" -msgid "In ``pgr_bdAstar`` (`Many to One`)" +msgid "'b'" msgstr "" -msgid "Migration of ``pgr_dijkstra``" +msgid "details" msgstr "" -msgid "Starting from `v3.5.0 `__" +msgid "false" msgstr "" -msgid "``pgr_dijkstra`` (`One to One`)" +msgid "Driving side was named optional" msgstr "" -msgid "``pgr_dijkstra`` (`One to Many`)" +msgid "On directed graph ``b`` could be used as **driving side**" msgstr "" -msgid "``pgr_dijkstra`` (`Many to One`)" +msgid "On undirected graph ``r`` could be used as **driving side**" msgstr "" -msgid "``pgr_dijkstra`` (`One to One`) does not have ``start_vid`` and ``end_vid``." +msgid "Also ``l`` could be used as **driving side**" msgstr "" -msgid "``pgr_dijkstra`` (`One to Many`) does not have ``start_vid``." +msgid "After Migration" msgstr "" -msgid "``pgr_dijkstra`` (`Many to One`) does not have ``end_vid``." +msgid "Be aware of the existence of the additional result Columns." msgstr "" -msgid "In ``pgr_dijkstra`` (`One to One`)" +msgid "New output columns are |result-spantree|" msgstr "" -msgid "In ``pgr_dijkstra`` (`One to Many`)" +msgid "**driving side** parameter is unnamed compulsory, and valid values differ for directed and undirected graphs." msgstr "" -msgid "In ``pgr_dijkstra`` (`Many to One`)" +msgid "Does not have a default value." msgstr "" -msgid "If needed add the new columns, for example:" +msgid "In directed graph: valid values are [``r``, ``R``, ``l``, ``L``]" msgstr "" -msgid "Migration of ``pgr_drivingdistance``" +msgid "In undirected graph: valid values are [``b``, ``B``]" msgstr "" -msgid "Starting from `v3.6.0 `__ :doc:`pgr_drivingDistance` result columns are being standardized." +msgid "Using an invalid value throws an ``ERROR``." msgstr "" -msgid "from" +msgid "Using `this `__ example." msgstr "" -msgid "|result-dij-dd|" +msgid "``depth`` contains the **depth** from the ``start_vid`` vertex to the ``node``." msgstr "" -msgid "to" +msgid "To migrate, use an unnamed valid value for **driving side** after the **distance** parameter:" msgstr "" -msgid "|result-spantree|" +msgid "To get results from previous versions:" msgstr "" -msgid "``pgr_drivingdistance`` (Single vertex)" +msgid "filter out the additional columns, for example;" msgstr "" -msgid "``pgr_drivingdistance`` (Multiple vertices)" +msgid "When ``details => false`` to remove the points use ``WHERE node >= 0 OR cost = 0``" msgstr "" -msgid "Output columns were |result-dij-dd|" +msgid "Using `this `__ example." msgstr "" -msgid "Does not have ``start_vid`` and ``depth`` result columns." +msgid "Filter out the additional columns" msgstr "" -msgid "Has ``from_v`` instead of ``start_vid`` result column." +msgid "Migration of ``pgr_withPointsKSP``" msgstr "" -msgid "does not have ``depth`` result column." +msgid "Starting from `v3.6.0 `__ :doc:`pgr_withPointsKSP` result columns are being standardized." msgstr "" -msgid "Be aware of the existence and name change of the result columns." +msgid "And ``driving side`` parameter changed from named optional to unnamed compulsory **driving side** and its validity differ for directed and undirected graphs." msgstr "" -msgid "Using `this `__ example." +msgid "``pgr_withPointsKSP`` (`One to One`)" msgstr "" -msgid "``depth`` contains the depth of the ``node``." +msgid "Output columns were |old-pid-result|" msgstr "" -msgid "``pred`` contains the predecessor of the ``node``." +msgid "New output columns are |nksp-result|" msgstr "" -msgid "If needed filter out the added columns, for example, to return the original columns" +msgid "Using `this `__ example." msgstr "" -msgid "Using `this `__ example." +msgid "If needed filter out the additional columns, for example, to return the original columns:" msgstr "" -msgid "The ``from_v`` result column name changes to ``start_vid``." +msgid "Migration of ``pgr_trsp`` (Vertices)" msgstr "" -msgid "If needed filter out and rename columns, for example, to return the original columns:" +msgid "Signature:" msgstr "" -msgid "Migration of ``pgr_kruskalDD`` / ``pgr_kruskalBFS`` / ``pgr_kruskalDFS``" +msgid "Deprecated" msgstr "" -msgid "Starting from `v3.7.0 `__ :doc:`pgr_kruskalDD`, :doc:`pgr_kruskalBFS` and :doc:`pgr_kruskalDFS` result columns are being standardized." +msgid "`v3.4.0 `__" msgstr "" -msgid "|result-bfs|" +msgid "Removed" msgstr "" -msgid "Single vertex" +msgid "`v4.0.0 `__" msgstr "" -msgid "Multiple vertices" +msgid ":doc:`pgr_dijkstra`" msgstr "" -msgid "Output columns were |result-bfs|" +msgid ":doc:`pgr_trsp`" msgstr "" -msgid "Single vertex and Multiple vertices" +msgid "`Migration of restrictions`_" msgstr "" -msgid "Do not have ``pred`` result column." +msgid "Use ``pgr_dijkstra`` when there are no restrictions." msgstr "" -msgid "Be aware of the existence of `pred` result columns." +msgid "Use :doc:`pgr_dijkstra` instead." msgstr "" -msgid "If needed filter out the added columns" +msgid "To get the original column names:" msgstr "" -msgid "Kruskal single vertex" +msgid "``id1`` is the node" msgstr "" -msgid "Using ``pgr_KruskalDD`` as example. Migration is similar to al the affected functions." +msgid "``id2`` is the edge" msgstr "" -msgid "Comparing with `this `__ example." +msgid "Use ``pgr_trsp`` when there are restrictions." msgstr "" -msgid "Now column ``pred`` exists and contains the predecessor of the ``node``." +msgid "Use :doc:`pgr_trsp` (One to One) instead." msgstr "" -msgid "Kruskal multiple vertices" +msgid "Migration of ``pgr_trsp`` (Edges)" msgstr "" -msgid "Comparing with `this `__ example." +msgid ":doc:`pgr_withPoints`" msgstr "" -msgid "Migration of ``pgr_KSP``" +msgid ":doc:`pgr_trsp_withPoints`" msgstr "" -msgid "Starting from `v3.6.0 `__ :doc:`pgr_KSP` result columns are being standardized." +msgid "Use ``pgr_withPoints`` when there are no restrictions." msgstr "" -msgid "|ksp-result|" +msgid "Use :doc:`pgr_withPoints` (One to One) instead." msgstr "" -msgid "|nksp-result|" +msgid "Use ``pgr_trsp_withPoints`` when there are restrictions." msgstr "" -msgid "``pgr_KSP`` (One to One)" +msgid "Use :doc:`pgr_trsp_withPoints` instead." msgstr "" -msgid "Output columns were |ksp-result|" +msgid "Migration of ``pgr_trspViaVertices``" msgstr "" -msgid "the columns ``start_vid`` and ``end_vid`` do not exist." +msgid ":doc:`pgr_dijkstraVia`" msgstr "" -msgid "``pgr_KSP`` (One to One) does not have ``start_vid`` and ``end_vid``." +msgid ":doc:`pgr_trspVia`" msgstr "" -msgid "Using `this `__ example." +msgid "Use ``pgr_dijkstraVia`` when there are no restrictions" msgstr "" -msgid "If needed filter out the added columns, for example, to return the original columns:" +msgid "Use :doc:`pgr_dijkstraVia` instead." msgstr "" -msgid "Migration of ``pgr_maxCardinalityMatch``" +msgid "``id1`` is the path identifier" msgstr "" -msgid ":doc:`pgr_maxCardinalityMatch` works only for undirected graphs, therefore the ``directed`` flag has been removed." +msgid "``id2`` is the node" msgstr "" -msgid "Starting from `v3.4.0 `__" +msgid "``id3`` is the edge" msgstr "" -msgid "Signature to be migrated:" +msgid "Use ``pgr_trspVia`` when there are restrictions" msgstr "" -msgid "Migration is needed, because:" +msgid "Use :doc:`pgr_trspVia` instead." msgstr "" -msgid "Use ``cost`` and ``reverse_cost`` on the inner query" +msgid "Migration of ``pgr_trspViaEdges``" msgstr "" -msgid "Results are ordered" +msgid ":doc:`pgr_withPointsVia`" msgstr "" -msgid "Works for undirected graphs." +msgid ":doc:`pgr_trspVia_withPoints`" msgstr "" -msgid "New signature" +msgid "Use ``pgr_withPointsVia`` when there are no restrictions" msgstr "" -msgid "``pgr_maxCardinalityMatch(text)`` returns only ``edge`` column." +msgid "Use :doc:`pgr_withPointsVia` instead." msgstr "" -msgid "The optional flag ``directed`` is removed." +msgid "Use ``pgr_trspVia_withPoints`` when there are restrictions" msgstr "" -msgid "Before migration" +msgid "Use :doc:`pgr_trspVia_withPoints` instead." msgstr "" -msgid "Columns used are ``going`` and ``coming`` to represent the existence of an edge." +msgid "Migration of restrictions" msgstr "" -msgid "Flag ``directed`` was used to indicate if it was for a **directed** or **undirected** graph." +msgid "The structure of the restrictions have changed:" msgstr "" -msgid "The flag ``directed`` is ignored." +msgid "Old restrictions structure" msgstr "" -msgid "Regardless of it's value it gives the result considering the graph as **undirected**." +msgid "On the deprecated signatures:" msgstr "" -msgid "Use the columns ``cost`` and ``reverse_cost`` to represent the existence of an edge." +msgid "Column ``rid`` is ignored" msgstr "" -msgid "Do not use the flag ``directed``." +msgid "``via_path``" msgstr "" -msgid "In the query returns only ``edge`` column." +msgid "Must be in reverse order." msgstr "" -msgid "Migration of ``pgr_primDD`` / ``pgr_primBFS`` / ``pgr_primDFS``" +msgid "Is of type ``TEXT``." msgstr "" -msgid "Starting from `v3.7.0 `__ :doc:`pgr_primDD`, :doc:`pgr_primBFS` and :doc:`pgr_primDFS` result columns are being standardized." +msgid "When more than one via edge must be separated with ``,``." msgstr "" -msgid "Prim single vertex" +msgid "``target_id``" msgstr "" -msgid "Using ``pgr_primDD`` as example. Migration is similar to al the affected functions." +msgid "Is the last edge of the forbidden path." msgstr "" -msgid "Comparing with `this `__ example." +msgid "Is of type ``INTEGER``." msgstr "" -msgid "Prim multiple vertices" +msgid "``to_cost``" msgstr "" -msgid "Comparing with `this `__ example." +msgid "Is of type ``FLOAT``." msgstr "" -msgid "Migration of ``pgr_withPointsDD``" +msgid "Creation of the old restrictions table" msgstr "" -msgid "Starting from `v3.6.0 `__ :doc:`pgr_withPointsDD` result columns are being standardized." +msgid "Old restrictions fill up" msgstr "" -msgid "|result-generic-no-seq|" +msgid "Old restrictions contents" msgstr "" -msgid "And ``driving_side`` parameter changed from named optional to unnamed compulsory **driving side** and its validity differ for directed and undirected graphs." +msgid "The restriction with ``rid = 2`` is representing :math:`3 \\rightarrow 5 \\rightarrow9`" msgstr "" -msgid "``pgr_withPointsDD`` (Single vertex)" +msgid ":math:`3\\rightarrow5`" msgstr "" -msgid "``pgr_withPointsDD`` (Multiple vertices)" +msgid "is on column ``via_path`` in reverse order" msgstr "" -msgid "Output columns were |result-1-1-no-seq|" +msgid "is of type ``TEXT``" msgstr "" -msgid "Does not have ``start_vid``, ``pred`` and ``depth`` result columns." +msgid ":math:`9`" msgstr "" -msgid "``driving_side`` parameter was named optional now it is compulsory unnamed." +msgid "is on column ``target_id``" msgstr "" -msgid "``pgr_withPointsDD`` (`Multiple vertices`)" +msgid "is of type ``INTEGER``" msgstr "" -msgid "Output columns were |result-m-1-no-seq|" +msgid "New restrictions structure" msgstr "" -msgid "Does not have ``depth`` and ``pred`` result columns." +msgid "Column ``id`` is ignored" msgstr "" -msgid "Driving side was optional" +msgid "Column ``path``" msgstr "" -msgid "The default values on this query are:" +msgid "Is of type ``ARRAY[ANY-INTEGER]``." msgstr "" -msgid "directed" +msgid "Contains all the edges involved on the restriction." msgstr "" -msgid "true" +msgid "The array has the ordered edges of the restriction." msgstr "" -msgid "driving_side" +msgid "Column ``cost``" msgstr "" -msgid "'b'" +msgid "Is of type ``ANY-NUMERICAL``" msgstr "" -msgid "details" +msgid "The creation of the restrictions table" msgstr "" -msgid "false" +msgid "Adding the restrictions" msgstr "" -msgid "Driving side was named optional" +msgid "Restrictions data" msgstr "" -msgid "On directed graph ``b`` could be used as **driving side**" +msgid "The restriction with ``rid = 2`` represents the path :math:`3 \\rightarrow5 \\rightarrow9`." msgstr "" -msgid "On undirected graph ``r`` could be used as **driving side**" +msgid "By inspection the path is clear." msgstr "" -msgid "Also ``l`` could be used as **driving side**" +msgid "To transform the old restrictions table to the new restrictions structure," msgstr "" -msgid "After Migration" +msgid "Create a new table with the new restrictions structure." msgstr "" -msgid "Be aware of the existence of the additional result Columns." +msgid "In this migration guide ``new_restrictions`` is been used." msgstr "" -msgid "New output columns are |result-spantree|" +msgid "For this migration pgRouting supplies an auxiliary function for reversal of an array ``_pgr_array_reverse`` needed for the migration." msgstr "" -msgid "**driving side** parameter is unnamed compulsory, and valid values differ for directed and undirected graphs." +msgid "``_pgr_array_reverse``:" msgstr "" -msgid "Does not have a default value." +msgid "Was created temporally for this migration" msgstr "" -msgid "In directed graph: valid values are [``r``, ``R``, ``l``, ``L``]" +msgid "Is not documented." msgstr "" -msgid "In undirected graph: valid values are [``b``, ``B``]" +msgid "Will be removed on the next mayor version 4.0.0" msgstr "" -msgid "Using an invalid value throws an ``ERROR``." +msgid "The migrated table contents:" msgstr "" -msgid "Using `this `__ example." +msgid ":doc:`withPoints-category`" msgstr "" -msgid "``depth`` contains the **depth** from the ``start_vid`` vertex to the ``node``." +msgid "Ordering - Family of functions" msgstr "" -msgid "To migrate, use an unnamed valid value for **driving side** after the **distance** parameter:" +msgid "pgRouting Concepts" msgstr "" -msgid "To get results from previous versions:" +msgid "This is a simple guide that go through some of the steps for getting started with pgRouting. This guide covers:" msgstr "" -msgid "filter out the additional columns, for example;" +msgid "Graphs" msgstr "" -msgid "When ``details => false`` to remove the points use ``WHERE node >= 0 OR cost = 0``" +msgid "A graph is an ordered pair :math:`G = (V ,E)` where:" msgstr "" -msgid "Using `this `__ example." +msgid ":math:`V` is a set of vertices, also called nodes." msgstr "" -msgid "Filter out the additional columns" +msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V \\}`" msgstr "" -msgid "Migration of ``pgr_withPointsKSP``" +msgid "There are different kinds of graphs:" msgstr "" -msgid "Starting from `v3.6.0 `__ :doc:`pgr_withPointsKSP` result columns are being standardized." +msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V\\}`" msgstr "" -msgid "And ``driving side`` parameter changed from named optional to unnamed compulsory **driving side** and its validity differ for directed and undirected graphs." +msgid "Undirected simple graph" msgstr "" -msgid "``pgr_withPointsKSP`` (`One to One`)" +msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V, u \\neq v\\}`" msgstr "" -msgid "Output columns were |old-pid-result|" +msgid ":math:`E \\subseteq \\{( u, v ) \\mid (u , v) \\in (V X V) \\}`" msgstr "" -msgid "New output columns are |nksp-result|" +msgid "Directed simple graph" msgstr "" -msgid "Using `this `__ example." +msgid ":math:`E \\subseteq \\{( u, v ) \\mid (u , v) \\in (V X V), u \\neq v\\}`" msgstr "" -msgid "If needed filter out the additional columns, for example, to return the original columns:" +msgid "Graphs:" msgstr "" -msgid "Migration of turn restrictions" +msgid "Do not have geometries." msgstr "" -msgid "Migration of restrictions" +msgid "Some graph theory problems require graphs to have weights, called **cost** in pgRouting." msgstr "" -msgid "The structure of the restrictions have changed:" +msgid "In pgRouting there are several ways to represent a graph on the database:" msgstr "" -msgid "Old restrictions structure" +msgid "With ``cost``" msgstr "" -msgid "On the deprecated signatures:" +msgid "(``id``, ``source``, ``target``, ``cost``)" msgstr "" -msgid "Column ``rid`` is ignored" +msgid "With ``cost`` and ``reverse_cost``" msgstr "" -msgid "``via_path``" +msgid "(``id``, ``source``, ``target``, ``cost``, ``reverse_cost``)" msgstr "" -msgid "Must be in reverse order." +msgid "Identifier of the edge. Requirement to use the database in a consistent. manner." msgstr "" -msgid "Is of type ``TEXT``." +msgid "Identifier of a vertex." msgstr "" -msgid "When more than one via edge must be separated with ``,``." +msgid "Weight of the edge (``source``, ``target``):" msgstr "" -msgid "``target_id``" +msgid "When negative the edge (``source``, ``target``) do not exist on the graph." msgstr "" -msgid "Is the last edge of the forbidden path." +msgid "``cost`` must exist in the query." msgstr "" -msgid "Is of type ``INTEGER``." +msgid "When negative the edge (``target``, ``source``) do not exist on the graph." msgstr "" -msgid "``to_cost``" +msgid "The decision of the graph to be **directed** or **undirected** is done when executing a pgRouting algorithm." msgstr "" -msgid "Is of type ``FLOAT``." +msgid "Graph with ``cost``" msgstr "" -msgid "Creation of the old restrictions table" +msgid "The weighted directed graph, :math:`G_d(V,E)`:" msgstr "" -msgid "Old restrictions fill up" +msgid "Graph data is obtained with a query" msgstr "" -msgid "Old restrictions contents" +msgid "``SELECT id, source, target, cost FROM edges``" msgstr "" -msgid "The restriction with ``rid = 2`` is representing :math:`3 \\rightarrow 5 \\rightarrow9`" +msgid ":math:`E = \\{(source_{id}, target_{id}, cost_{id}) \\text{ when } cost_{id} \\ge 0 \\}`" msgstr "" -msgid ":math:`3\\rightarrow5`" +msgid "Edges where ``cost`` is non negative are part of the graph." msgstr "" -msgid "is on column ``via_path`` in reverse order" +msgid ":math:`V = \\{source_{id} \\cup target_{id}\\}`" msgstr "" -msgid "is of type ``TEXT``" +msgid "All vertices in ``source`` and ``target`` are part of the graph." msgstr "" -msgid ":math:`9`" +msgid "In a directed graph the edge :math:`(source_{id}, target_{id}, cost_{id})` has directionality: :math:`source_{id} \\rightarrow target_{id}`" msgstr "" -msgid "is on column ``target_id``" +msgid "For the following data:" msgstr "" -msgid "is of type ``INTEGER``" +msgid "Edge :math:`2` (:math:`1 \\rightarrow 3`) is not part of the graph." msgstr "" -msgid "New restrictions structure" +msgid "The data is representing the following graph:" msgstr "" -msgid "Column ``id`` is ignored" +msgid "In an undirected graph the edge :math:`(source_{id}, target_{id}, cost_{id})` does not have directionality: :math:`source_{id} \\frac{\\;\\;\\;\\;\\;}{} target_{id}`" msgstr "" -msgid "Column ``path``" +msgid "In terms of a directed graph is like having two edges: :math:`source_{id} \\leftrightarrow target_{id}`" msgstr "" -msgid "Is of type ``ARRAY[ANY-INTEGER]``." +msgid "Edge :math:`2` (:math:`1 \\frac{\\;\\;\\;\\;\\;}{} 3`) is not part of the graph." msgstr "" -msgid "Contains all the edges involved on the restriction." +msgid "Graph with ``cost`` and ``reverse_cost``" msgstr "" -msgid "The array has the ordered edges of the restriction." +msgid "``SELECT id, source, target, cost, reverse_cost FROM edges``" msgstr "" -msgid "Column ``cost``" +msgid "The set of edges :math:`E`:" msgstr "" -msgid "Is of type ``ANY-NUMERICAL``" +msgid ":math:`E = \\begin{split} \\begin{align} & {\\{(source_{id}, target_{id}, cost_{id}) \\text{ when } cost_{id} >=0 \\}} \\\\ & \\cup \\\\ & {\\{(target_{id}, source_{id}, reverse\\_cost_{id}) \\text{ when } reverse\\_cost_{id} >=0 \\}} \\end{align} \\end{split}`" msgstr "" -msgid "The creation of the restrictions table" +msgid "Edges :math:`(source \\rightarrow target)` where ``cost`` is non negative are part of the graph." msgstr "" -msgid "Adding the restrictions" +msgid "Edges :math:`(target \\rightarrow source)` where ``reverse_cost`` is non negative are part of the graph." msgstr "" -msgid "Restrictions data" +msgid "The set of vertices :math:`V`:" msgstr "" -msgid "The restriction with ``rid = 2`` represents the path :math:`3 \\rightarrow5 \\rightarrow9`." +msgid "In a directed graph both edges have directionality" msgstr "" -msgid "By inspection the path is clear." +msgid "edge :math:`(source_{id}, target_{id}, cost_{id})` has directionality: :math:`source_{id} \\rightarrow target_{id}`" msgstr "" -msgid "To transform the old restrictions table to the new restrictions structure," +msgid "edge :math:`(target_{id}, source_{id}, reverse\\_cost_{id})` has directionality: :math:`target_{id} \\rightarrow source_{id}`" msgstr "" -msgid "Create a new table with the new restrictions structure." +msgid "Edges not part of the graph:" msgstr "" -msgid "In this migration guide ``new_restrictions`` is been used." +msgid ":math:`2` (:math:`1 \\rightarrow 3`)" msgstr "" -msgid "For this migration pgRouting supplies an auxiliary function for reversal of an array ``_pgr_array_reverse`` needed for the migration." +msgid ":math:`3` (:math:`3 \\rightarrow 2`)" msgstr "" -msgid "``_pgr_array_reverse``:" +msgid "In a directed graph both edges do not have directionality" msgstr "" -msgid "Was created temporally for this migration" +msgid "Edge :math:`(source_{id}, target_{id}, cost_{id})` is :math:`source_{id} \\frac{\\;\\;\\;\\;\\;}{} target_{id}`" msgstr "" -msgid "Is not documented." +msgid "Edge :math:`(target_{id}, source_{id}, reverse\\_cost_{id})` is :math:`target_{id} \\frac{\\;\\;\\;\\;\\;}{} source_{id}`" msgstr "" -msgid "Will be removed on the next mayor version 4.0.0" +msgid "In terms of a directed graph is like having four edges:" msgstr "" -msgid "The migrated table contents:" +msgid ":math:`source_i \\leftrightarrow target_i`" msgstr "" -msgid "Migration of ``pgr_trsp`` (Vertices)" +msgid ":math:`target_i \\leftrightarrow source_i`" msgstr "" -msgid ":doc:`pgr_trsp` signatures have changed and many issues have been fixed in the new signatures. This section will show how to migrate from the old signatures to the new replacement functions. This also affects the restrictions." +msgid ":math:`2` (:math:`1 \\frac{\\;\\;\\;\\;\\;}{} 3`)" msgstr "" -msgid "The integral type of the ``Edges SQL`` can only be ``INTEGER``." +msgid ":math:`3` (:math:`3 \\frac{\\;\\;\\;\\;\\;}{} 2`)" msgstr "" -msgid "The floating point type of the ``Edges SQL`` can only be ``FLOAT``." +msgid "Graphs without geometries" msgstr "" -msgid "``directed`` flag is compulsory." +msgid "Personal relationships, genealogy, file dependency problems can be solved using pgRouting. Those problems, normally, do not come with geometries associated with the graph." msgstr "" -msgid "Does not autodetect if ``reverse_cost`` column exist." +msgid "Wiki example" msgstr "" -msgid "User must be careful to match the existence of the column with the value of ``has_rcost`` parameter." +msgid "Solve the example problem taken from `wikipedia `__):" msgstr "" -msgid "The restrictions inner query is optional." +msgid "Problem is to find the shortest path from :math:`1` to :math:`5`." msgstr "" -msgid "The output column names are meaningless" +msgid "Is an undirected graph." msgstr "" -msgid "Migrate by using:" +msgid "Although visually looks like to have geometries, the drawing is not to scale." msgstr "" -msgid ":doc:`pgr_dijkstra` when there are no restrictions," +msgid "No geometries associated to the vertices or edges" msgstr "" -msgid ":doc:`pgr_trsp` (One to One) when there are restrictions." +msgid "Has 6 vertices :math:`\\{1,2,3,4,5,6\\}`" msgstr "" -msgid "Migrating ``pgr_trsp`` (Vertices) using ``pgr_dijkstra``" +msgid "Has 9 edges:" msgstr "" -msgid "The following query does not have restrictions." +msgid ":math:`\\begin{split} \\begin{align} E = & \\{(1,2,7), (1,3,9), (1,6,14), \\\\ & (2,3,10), (2,4,13), \\\\ & (3,4,11), (3,6,2), \\\\ & (4,5,6), \\\\ & (5,6,9) \\} \\end{align} \\end{split}`" msgstr "" -msgid "A message about deprecation is shown" +msgid "The graph can be represented in many ways for example:" msgstr "" -msgid "Deprecated functions will be removed on the next mayor version 4.0.0" +msgid "Prepare the database" msgstr "" -msgid "Use :doc:`pgr_dijkstra` instead." +msgid "Create a database for the example, access the database and install pgRouting: ::" msgstr "" -msgid "The types casting has been removed." +msgid "Create a table" msgstr "" -msgid ":doc:`pgr_dijkstra`:" +msgid "The basic elements needed to perform basic routing on an undirected graph are:" msgstr "" -msgid "Autodetects if ``reverse_cost`` column is in the edges SQL." +msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT" msgstr "" -msgid "Accepts ``ANY-INTEGER`` on integral types" +msgid "Using this table design for this example:" msgstr "" -msgid "Accepts ``ANY-NUMERICAL`` on floating point types" +msgid "Insert the data" msgstr "" -msgid "``directed`` flag has a default value of ``true``." +msgid "Find the shortest path" msgstr "" -msgid "Use the same value that on the original query." +msgid "To solve this example :doc:`pgr_dijkstra` is used:" msgstr "" -msgid "In this example it is ``true`` which is the default value." +msgid "To go from :math:`1` to :math:`5` the path goes thru the following vertices: :math:`1 \\rightarrow 3 \\rightarrow 6 \\rightarrow 5`" msgstr "" -msgid "The flag has been omitted and the default is been used." +msgid "Vertex information" msgstr "" -msgid "When the need of using strictly the same (meaningless) names and types of the function been migrated then:" +msgid "To obtain the vertices information, use :doc:`pgr_extractVertices`" msgstr "" -msgid "``id1`` is the node" +msgid "Graphs with geometries" msgstr "" -msgid "``id2`` is the edge" +msgid "Create a routing Database" msgstr "" -msgid "Migrating ``pgr_trsp`` (Vertices) using ``pgr_trsp``" +msgid "The first step is to create a database and load pgRouting in the database." msgstr "" -msgid "The following query has restrictions." +msgid "Typically create a database for each project." msgstr "" -msgid "The restrictions are the last parameter of the function" +msgid "Once having the database to work in, load your data and build the routing application in that database." msgstr "" -msgid "Using the old structure of restrictions" +msgid "Load Data" msgstr "" -msgid "Use :doc:`pgr_trsp` (One to One) instead." +msgid "There are several ways to load your data into pgRouting." msgstr "" -msgid "The new structure of restrictions is been used." +msgid "Manually creating a database." msgstr "" -msgid "It is the second parameter." +msgid "`Graphs without geometries`_" msgstr "" -msgid ":doc:`pgr_trsp`:" +msgid ":doc:`sampledata`: a small graph used in the documentation examples" msgstr "" -msgid "Migration of ``pgr_trsp`` (Edges)" +msgid "Using `osm2pgrouting `__" msgstr "" -msgid "The integral types of the ``sql`` can only be ``INTEGER``." +msgid "There are various open source tools that can help, like:" msgstr "" -msgid "The floating point type of the ``sql`` can only be ``FLOAT``." +msgid "shp2pgsql" msgstr "" -msgid "For these migration guide the following points will be used:" +msgid "postgresql shapefile loader" msgstr "" -msgid ":doc:`pgr_withPoints` when there are no restrictions," +msgid "ogr2ogr" msgstr "" -msgid ":doc:`pgr_trsp_withPoints` (One to One) when there are restrictions." +msgid "vector data conversion utility" msgstr "" -msgid "Migrating ``pgr_trsp`` (Edges) using ``pgr_withPoints``" +msgid "osm2pgsql" msgstr "" -msgid "Use :doc:`pgr_withPoints` instead." +msgid "load OSM data into postgresql" msgstr "" -msgid "Do not show details, as the deprecated function does not show details." +msgid "Please note that these tools will **not** import the data in a structure compatible with pgRouting and when this happens the topology needs to be adjusted." msgstr "" -msgid ":doc:`pgr_withPoints`:" +msgid "Breakup a segments on each segment-segment intersection" msgstr "" -msgid "On the points query do not include the ``side`` column." +msgid "When missing, add columns and assign values to ``source``, ``target``, ``cost``, ``reverse_cost``." msgstr "" -msgid "When the need of using strictly the same (meaningless) names and types, and node values of the function been migrated then:" +msgid "Connect a disconnected graph." msgstr "" -msgid "Migrating ``pgr_trsp`` (Edges) using ``pgr_trsp_withPoints``" +msgid "Create the complete graph topology" msgstr "" -msgid "Use :doc:`pgr_trsp_withPoints` instead." +msgid "Create one or more graphs based on the application to be developed." msgstr "" -msgid ":doc:`pgr_trsp_withPoints`:" +msgid "Create a contracted graph for the high speed roads" msgstr "" -msgid "Migration of ``pgr_trspViaVertices``" +msgid "Create graphs per state/country" msgstr "" -msgid "The integral types of the ``Edges SQL`` can only be ``INTEGER``." +msgid "In few words:" msgstr "" -msgid ":doc:`pgr_dijkstraVia` when there are no restrictions," +msgid "Prepare the graph" msgstr "" -msgid ":doc:`pgr_trspVia` when there are restrictions." +msgid "What and how to prepare the graph, will depend on the application and/or on the quality of the data and/or on how close the information is to have a topology usable by pgRouting and/or some other factors not mentioned." msgstr "" -msgid "Migrating ``pgr_trspViaVertices`` using ``pgr_dijkstraVia``" +msgid "The steps to prepare the graph involve geometry operations using `PostGIS `__ and some others involve graph operations like :doc:`pgr_contraction` to contract a graph." msgstr "" -msgid "Use :doc:`pgr_dijkstraVia` instead." +msgid "The `workshop `__ has a step by step on how to prepare a graph using Open Street Map data, for a small application." msgstr "" -msgid ":doc:`pgr_dijkstraVia`:" +msgid "The use of indexes on the database design in general:" msgstr "" -msgid "``id1`` is the path identifier" +msgid "Have the geometries indexed." msgstr "" -msgid "``id2`` is the node" +msgid "Have the identifiers columns indexed." msgstr "" -msgid "``id3`` is the edge" +msgid "Please consult the `PostgreSQL `__ documentation and the `PostGIS `__ documentation." msgstr "" -msgid "Migrating ``pgr_trspViaVertices`` using ``pgr_trspVia``" +msgid "Build a routing topology" msgstr "" -msgid "Use :doc:`pgr_trspVia` instead." +msgid "The basic information to use the majority of the pgRouting functions ``id, source, target, cost, [reverse_cost]`` is what in pgRouting is called the routing topology." msgstr "" -msgid ":doc:`pgr_trspVia`:" +msgid "``reverse_cost`` is optional but strongly recommended to have in order to reduce the size of the database due to the size of the geometry columns. Having said that, in this documentation ``reverse_cost`` is used in this documentation." msgstr "" -msgid "Migration of ``pgr_trspViaEdges``" +msgid "When the data comes with geometries and there is no routing topology, then this step is needed." msgstr "" -msgid "And will travel thru the following Via points :math:`4\\rightarrow3\\rightarrow6`" +msgid "All the start and end vertices of the geometries need an identifier that is to be stored in a ``source`` and ``target`` columns of the table of the data. Likewise, ``cost`` and ``reverse_cost`` need to have the value of traversing the edge in both directions." msgstr "" -msgid ":doc:`pgr_withPointsVia` when there are no restrictions," +msgid "If the columns do not exist they need to be added to the table in question. (see `ALTER TABLE `__)" msgstr "" -msgid ":doc:`pgr_trspVia_withPoints` when there are restrictions." +msgid "The function :doc:`pgr_extractVertices` is used to create a vertices table based on the edge identifier and the geometry of the edge of the graph." msgstr "" -msgid "Migrating ``pgr_trspViaEdges`` using ``pgr_withPointsVia``" +msgid "Finally using the data stored on the vertices tables the ``source`` and ``target`` are filled up." msgstr "" -msgid "Use :doc:`pgr_withPointsVia` instead." +msgid "See :doc:`sampledata` for an example for building a topology." msgstr "" -msgid ":doc:`pgr_withPointsVia`:" +msgid "Data coming from OSM and using `osm2pgrouting `__ as an import tool, comes with the routing topology. See an example of using ``osm2pgrouting`` on the `workshop `__." msgstr "" -msgid "Migrating ``pgr_trspViaEdges`` using ``pgr_trspVia_withPoints``" +msgid "Adjust costs" msgstr "" -msgid "Use :doc:`pgr_trspVia_withPoints` instead." +msgid "For this example the ``cost`` and ``reverse_cost`` values are going to be the double of the length of the geometry." msgstr "" -msgid ":doc:`pgr_trspVia_withPoints`:" +msgid "Update costs to length of geometry" msgstr "" -msgid ":doc:`withPoints-category`" +msgid "Suppose that ``cost`` and ``reverse_cost`` columns in the sample data represent:" msgstr "" -msgid "Ordering - Family of functions" +msgid ":math:`1` when the edge exists in the graph" msgstr "" -msgid "pgRouting Concepts" +msgid ":math:`-1` when the edge does not exist in the graph" msgstr "" -msgid "This is a simple guide that go through some of the steps for getting started with pgRouting. This guide covers:" +msgid "Using that information updating to the length of the geometries:" msgstr "" -msgid "Graphs" +msgid "Which gives the following results:" msgstr "" -msgid "A graph is an ordered pair :math:`G = (V ,E)` where:" +msgid "Note that to be able to follow the documentation examples, everything is based on the original graph." msgstr "" -msgid ":math:`V` is a set of vertices, also called nodes." +msgid "Returning to the original data:" msgstr "" -msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V \\}`" +msgid "Update costs based on codes" msgstr "" -msgid "There are different kinds of graphs:" +msgid "Other datasets, can have a column with values like" msgstr "" -msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V\\}`" +msgid "``FT`` vehicle flow on the direction of the geometry" msgstr "" -msgid "Undirected simple graph" +msgid "``TF`` vehicle flow opposite of the direction of the geometry" msgstr "" -msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V, u \\neq v\\}`" +msgid "``B`` vehicle flow on both directions" msgstr "" -msgid ":math:`E \\subseteq \\{( u, v ) \\mid (u , v) \\in (V X V) \\}`" +msgid "Preparing a code column for the example:" msgstr "" -msgid "Directed simple graph" +msgid "Adjusting the costs based on the codes:" msgstr "" -msgid ":math:`E \\subseteq \\{( u, v ) \\mid (u , v) \\in (V X V), u \\neq v\\}`" +msgid "Check the Routing Topology" msgstr "" -msgid "Graphs:" +msgid "There are lots of possible problems in a graph." msgstr "" -msgid "Do not have geometries." +msgid "The data used may not have been designed with routing in mind." msgstr "" -msgid "Some graph theory problems require graphs to have weights, called **cost** in pgRouting." +msgid "A graph has some very specific requirements." msgstr "" -msgid "In pgRouting there are several ways to represent a graph on the database:" +msgid "The graph is disconnected." msgstr "" -msgid "With ``cost``" +msgid "There are unwanted intersections." msgstr "" -msgid "(``id``, ``source``, ``target``, ``cost``)" +msgid "The graph is too large and needs to be contracted." msgstr "" -msgid "With ``cost`` and ``reverse_cost``" +msgid "A sub graph is needed for the application." msgstr "" -msgid "(``id``, ``source``, ``target``, ``cost``, ``reverse_cost``)" +msgid "and many other problems that the pgRouting user, that is the application developer might encounter." msgstr "" -msgid "Identifier of the edge. Requirement to use the database in a consistent. manner." +msgid "Crossing edges" msgstr "" -msgid "Identifier of a vertex." +msgid "To get the crossing edges:" msgstr "" -msgid "Weight of the edge (``source``, ``target``):" +msgid "That information is correct, for example, when in terms of vehicles, is it a tunnel or bridge crossing over another road." msgstr "" -msgid "When negative the edge (``source``, ``target``) do not exist on the graph." +msgid "It might be incorrect, for example:" msgstr "" -msgid "``cost`` must exist in the query." +msgid "When it is actually an intersection of roads, where vehicles can make turns." msgstr "" -msgid "When negative the edge (``target``, ``source``) do not exist on the graph." +msgid "When in terms of electrical lines, the electrical line is able to switch roads even on a tunnel or bridge." msgstr "" -msgid "The decision of the graph to be **directed** or **undirected** is done when executing a pgRouting algorithm." +msgid "When it is incorrect, it needs fixing:" msgstr "" -msgid "Graph with ``cost``" +msgid "For vehicles and pedestrians" msgstr "" -msgid "The weighted directed graph, :math:`G_d(V,E)`:" +msgid "If the data comes from OSM and was imported to the database using ``osm2pgrouting``, the fix needs to be done in the `OSM portal `__ and the data imported again." msgstr "" -msgid "Graph data is obtained with a query" +msgid "In general when the data comes from a supplier that has the data prepared for routing vehicles, and there is a problem, the data is to be fixed from the supplier" msgstr "" -msgid "``SELECT id, source, target, cost FROM edges``" +msgid "For very specific applications" msgstr "" -msgid ":math:`E = \\{(source_{id}, target_{id}, cost_{id}) \\text{ when } cost_{id} \\ge 0 \\}`" +msgid "The data is correct when from the point of view of routing vehicles or pedestrians." msgstr "" -msgid "Edges where ``cost`` is non negative are part of the graph." +msgid "The data needs a local fix for the specific application." msgstr "" -msgid ":math:`V = \\{source_{id} \\cup target_{id}\\}`" +msgid "Once analyzed one by one the crossings, for the ones that need a local fix, the edges need to be `split `__." msgstr "" -msgid "All vertices in ``source`` and ``target`` are part of the graph." +msgid "The new edges need to be added to the edges table, the rest of the attributes need to be updated in the new edges, the old edges need to be removed and the routing topology needs to be updated." msgstr "" -msgid "In a directed graph the edge :math:`(source_{id}, target_{id}, cost_{id})` has directionality: :math:`source_{id} \\rightarrow target_{id}`" +msgid "Adding split edges" msgstr "" -msgid "For the following data:" +msgid "For each pair of crossing edges a process similar to this one must be performed." msgstr "" -msgid "Edge :math:`2` (:math:`1 \\rightarrow 3`) is not part of the graph." +msgid "The columns inserted and the way are calculated are based on the application. For example, if the edges have a trait **name**, then that column is to be copied." msgstr "" -msgid "The data is representing the following graph:" +msgid "For pgRouting calculations" msgstr "" -msgid "In an undirected graph the edge :math:`(source_{id}, target_{id}, cost_{id})` does not have directionality: :math:`source_{id} \\frac{\\;\\;\\;\\;\\;}{} target_{id}`" +msgid "**factor** based on the position of the intersection of the edges can be used to adjust the ``cost`` and ``reverse_cost`` columns." msgstr "" -msgid "In terms of a directed graph is like having two edges: :math:`source_{id} \\leftrightarrow target_{id}`" +msgid "Capacity information, used in the :doc:`flow-family` functions does not need to change when splitting edges." msgstr "" -msgid "Edge :math:`2` (:math:`1 \\frac{\\;\\;\\;\\;\\;}{} 3`) is not part of the graph." +msgid "Adding new vertices" msgstr "" -msgid "Graph with ``cost`` and ``reverse_cost``" +msgid "After adding all the split edges required by the application, the newly created vertices need to be added to the vertices table." msgstr "" -msgid "The weighted directed graph, :math:`G_d(V,E)`, is defined by:" +msgid "Updating edges topology" msgstr "" -msgid "``SELECT id, source, target, cost, reverse_cost FROM edges``" +msgid "Removing the surplus edges" msgstr "" -msgid "The set of edges :math:`E`:" +msgid "Once all significant information needed by the application has been transported to the new edges, then the crossing edges can be deleted." msgstr "" -msgid ":math:`E = \\begin{split} \\begin{align} & {\\{(source_{id}, target_{id}, cost_{id}) \\text{ when } cost_{id} >=0 \\}} \\\\ & \\cup \\\\ & {\\{(target_{id}, source_{id}, reverse\\_cost_{id}) \\text{ when } reverse\\_cost_{id} >=0 \\}} \\end{align} \\end{split}`" +msgid "There are other options to do this task, like creating a view, or a materialized view." msgstr "" -msgid "Edges :math:`(source \\rightarrow target)` where ``cost`` is non negative are part of the graph." +msgid "Updating vertices topology" msgstr "" -msgid "Edges :math:`(target \\rightarrow source)` where ``reverse_cost`` is non negative are part of the graph." +msgid "To keep the graph consistent, the vertices topology needs to be updated" msgstr "" -msgid "The set of vertices :math:`V`:" +msgid "Checking for crossing edges" msgstr "" -msgid "In a directed graph both edges have directionality" +msgid "There are no crossing edges on the graph." msgstr "" -msgid "edge :math:`(source_{id}, target_{id}, cost_{id})` has directionality: :math:`source_{id} \\rightarrow target_{id}`" +msgid "Disconnected graphs" msgstr "" -msgid "edge :math:`(target_{id}, source_{id}, reverse\\_cost_{id})` has directionality: :math:`target_{id} \\rightarrow source_{id}`" +msgid "To get the graph connectivity:" msgstr "" -msgid "Edges not part of the graph:" +msgid "In this example, the component :math:`2` consists of vertices :math:`\\{2, 4\\}` and both vertices are also part of the dead end result set." msgstr "" -msgid ":math:`2` (:math:`1 \\rightarrow 3`)" +msgid "This graph needs to be connected." msgstr "" -msgid ":math:`3` (:math:`3 \\rightarrow 2`)" +msgid "With the original graph of this documentation, there would be 3 components as the crossing edge in this graph is a different component." msgstr "" -msgid "In a directed graph both edges do not have directionality" +msgid "Prepare storage for connection information" msgstr "" -msgid "Edge :math:`(source_{id}, target_{id}, cost_{id})` is :math:`source_{id} \\frac{\\;\\;\\;\\;\\;}{} target_{id}`" +msgid "Save the vertices connection information" msgstr "" -msgid "Edge :math:`(target_{id}, source_{id}, reverse\\_cost_{id})` is :math:`target_{id} \\frac{\\;\\;\\;\\;\\;}{} source_{id}`" +msgid "Save the edges connection information" msgstr "" -msgid "In terms of a directed graph is like having four edges:" +msgid "Get the closest vertex" msgstr "" -msgid ":math:`source_i \\leftrightarrow target_i`" +msgid "Using :doc:`pgr_findCloseEdges` the closest vertex to component :math:`1` is vertex :math:`4`. And the closest edge to vertex :math:`4` is edge :math:`14`." msgstr "" -msgid ":math:`target_i \\leftrightarrow source_i`" +msgid "The ``edge`` can be used to connect the components, using the ``fraction`` information about the edge :math:`14` to split the connecting edge." msgstr "" -msgid ":math:`2` (:math:`1 \\frac{\\;\\;\\;\\;\\;}{} 3`)" +msgid "Connecting components" msgstr "" -msgid ":math:`3` (:math:`3 \\frac{\\;\\;\\;\\;\\;}{} 2`)" +msgid "There are three basic ways to connect the components" msgstr "" -msgid "Graphs without geometries" +msgid "From the vertex to the starting point of the edge" msgstr "" -msgid "Personal relationships, genealogy, file dependency problems can be solved using pgRouting. Those problems, normally, do not come with geometries associated with the graph." +msgid "From the vertex to the ending point of the edge" msgstr "" -msgid "Wiki example" +msgid "From the vertex to the closest vertex on the edge" msgstr "" -msgid "Solve the example problem taken from `wikipedia `__):" +msgid "This solution requires the edge to be split." msgstr "" -msgid "Problem is to find the shortest path from :math:`1` to :math:`5`." +msgid "The following query shows the three ways to connect the components:" msgstr "" -msgid "Is an undirected graph." +msgid "Checking components" msgstr "" -msgid "Although visually looks like to have geometries, the drawing is not to scale." +msgid "Ignoring the edge that requires further work. The graph is now fully connected as there is only one component." msgstr "" -msgid "No geometries associated to the vertices or edges" +msgid "Contraction of a graph" msgstr "" -msgid "Has 6 vertices :math:`\\{1,2,3,4,5,6\\}`" +msgid "The graph can be reduced in size using :doc:`contraction-family`" msgstr "" -msgid "Has 9 edges:" +msgid "When to contract will depend on the size of the graph, processing times, correctness of the data, on the final application, or any other factor not mentioned." msgstr "" -msgid ":math:`\\begin{split} \\begin{align} E = & \\{(1,2,7), (1,3,9), (1,6,14), \\\\ & (2,3,10), (2,4,13), \\\\ & (3,4,11), (3,6,2), \\\\ & (4,5,6), \\\\ & (5,6,9) \\} \\end{align} \\end{split}`" +msgid "A fairly good method of finding out if contraction can be useful is because of the number of dead ends and/or the number of linear edges." msgstr "" -msgid "The graph can be represented in many ways for example:" +msgid "A complete method on how to contract and how to use the contracted graph is described on :doc:`contraction-family`" msgstr "" -msgid "Prepare the database" +msgid "Dead ends" msgstr "" -msgid "Create a database for the example, access the database and install pgRouting: ::" +msgid "To get the dead ends:" msgstr "" -msgid "Create a table" +msgid "A dead end happens when" msgstr "" -msgid "The basic elements needed to perform basic routing on an undirected graph are:" +msgid "The vertex is the limit of a cul-de-sac, a no-through road or a no-exit road." msgstr "" -msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT" +msgid "The vertex is on the limit of the imported graph." msgstr "" -msgid "Using this table design for this example:" +msgid "If a larger graph is imported then the vertex might not be a dead end" msgstr "" -msgid "Insert the data" +msgid "Node :math:`4`, is a dead end on the query, even that it visually looks like an end point of 3 edges." msgstr "" -msgid "Find the shortest path" +msgid "Is node :math:`4` a dead end or not?" msgstr "" -msgid "To solve this example :doc:`pgr_dijkstra` is used:" +msgid "The answer to that question will depend on the application." msgstr "" -msgid "To go from :math:`1` to :math:`5` the path goes thru the following vertices: :math:`1 \\rightarrow 3 \\rightarrow 6 \\rightarrow 5`" +msgid "Is there such a small curb:" msgstr "" -msgid "Vertex information" +msgid "That does not allow a vehicle to use that visual intersection?" msgstr "" -msgid "To obtain the vertices information, use :doc:`pgr_extractVertices`" +msgid "Is the application for pedestrians and therefore the pedestrian can easily walk on the small curb?" msgstr "" -msgid "Graphs with geometries" +msgid "Is the application for the electricity and the electrical lines than can easily be extended on top of the small curb?" msgstr "" -msgid "Create a routing Database" +msgid "Is there a big cliff and from eagles view look like the dead end is close to the segment?" msgstr "" -msgid "The first step is to create a database and load pgRouting in the database." +msgid "Depending on the answer, modification of the data might be needed." msgstr "" -msgid "Typically create a database for each project." +msgid "When there are many dead ends, to speed up processing, the :doc:`contraction-family` functions can be used to contract the graph." msgstr "" -msgid "Once having the database to work in, load your data and build the routing application in that database." +msgid "Linear edges" msgstr "" -msgid "Load Data" +msgid "To get the linear edges:" msgstr "" -msgid "There are several ways to load your data into pgRouting." +msgid "These linear vertices are correct, for example, when those the vertices are speed bumps, stop signals and the application is taking them into account." msgstr "" -msgid "Manually creating a database." +msgid "When there are many linear vertices, that need not to be taken into account, to speed up the processing, the :doc:`contraction-family` functions can be used to contract the problem." msgstr "" -msgid "`Graphs without geometries`_" +msgid "Function's structure" msgstr "" -msgid ":doc:`sampledata`: a small graph used in the documentation examples" +msgid "Once the graph preparation work has been done above, it is time to use a" msgstr "" -msgid "Using `osm2pgrouting `__" +msgid "The general form of a pgRouting function call is:" msgstr "" -msgid "There are various open source tools that can help, like:" +msgid "\\ \\" msgstr "" -msgid "shp2pgsql" +msgid "pgr_(`Inner queries`_, **parameters**, [ ``Optional parameters``)" msgstr "" -msgid "postgresql shapefile loader" +msgid "`Inner queries`_: Are compulsory parameters that are ``TEXT`` strings containing SQL queries." msgstr "" -msgid "ogr2ogr" +msgid "**parameters**: Additional compulsory parameters needed by the function." msgstr "" -msgid "vector data conversion utility" +msgid "``Optional parameters``: Are non compulsory **named** parameters that have a default value when omitted." msgstr "" -msgid "osm2pgsql" +msgid "The compulsory parameters are positional parameters, the optional parameters are named parameters." msgstr "" -msgid "load OSM data into postgresql" +msgid "For example, for this :doc:`pgr_dijkstra` signature:" msgstr "" -msgid "Please note that these tools will **not** import the data in a structure compatible with pgRouting and when this happens the topology needs to be adjusted." +msgid "pgr_dijkstra(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" msgstr "" -msgid "Breakup a segments on each segment-segment intersection" +msgid "`Edges SQL`_:" msgstr "" -msgid "When missing, add columns and assign values to ``source``, ``target``, ``cost``, ``reverse_cost``." +msgid "Is the first parameter." msgstr "" -msgid "Connect a disconnected graph." +msgid "It is compulsory." msgstr "" -msgid "Create the complete graph topology" +msgid "It is an inner query." msgstr "" -msgid "Create one or more graphs based on the application to be developed." +msgid "It has no name, so **Edges SQL** gives an idea of what kind of inner query needs to be used" msgstr "" -msgid "Create a contracted graph for the high speed roads" +msgid "**start vid**:" msgstr "" -msgid "Create graphs per state/country" +msgid "Is the second parameter." msgstr "" -msgid "In few words:" +msgid "It has no name, so **start vid** gives an idea of what the second parameter's value should contain." msgstr "" -msgid "Prepare the graph" +msgid "Is the third parameter." msgstr "" -msgid "What and how to prepare the graph, will depend on the application and/or on the quality of the data and/or on how close the information is to have a topology usable by pgRouting and/or some other factors not mentioned." +msgid "It has no name, so **end vid** gives an idea of what the third parameter's value should contain" msgstr "" -msgid "The steps to prepare the graph involve geometry operations using `PostGIS `__ and some others involve graph operations like :doc:`pgr_contraction` to contract a graph." +msgid "Is the fourth parameter." msgstr "" -msgid "The `workshop `__ has a step by step on how to prepare a graph using Open Street Map data, for a small application." +msgid "It is optional." msgstr "" -msgid "The use of indexes on the database design in general:" +msgid "It has a name." msgstr "" -msgid "Have the geometries indexed." +msgid "The full description of the parameters are found on the `Parameters`_ section of each function." msgstr "" -msgid "Have the identifiers columns indexed." +msgid "Function's overloads" msgstr "" -msgid "Please consult the `PostgreSQL `__ documentation and the `PostGIS `__ documentation." +msgid "A function might have different overloads. The most common are called:" msgstr "" -msgid "Build a routing topology" +msgid "`One to One`_" msgstr "" -msgid "The basic information to use the majority of the pgRouting functions ``id, source, target, cost, [reverse_cost]`` is what in pgRouting is called the routing topology." +msgid "`One to Many`_" msgstr "" -msgid "``reverse_cost`` is optional but strongly recommended to have in order to reduce the size of the database due to the size of the geometry columns. Having said that, in this documentation ``reverse_cost`` is used in this documentation." +msgid "`Many to One`_" msgstr "" -msgid "When the data comes with geometries and there is no routing topology, then this step is needed." +msgid "`Many to Many`_" msgstr "" -msgid "All the start and end vertices of the geometries need an identifier that is to be stored in a ``source`` and ``target`` columns of the table of the data. Likewise, ``cost`` and ``reverse_cost`` need to have the value of traversing the edge in both directions." +msgid "`Combinations`_" msgstr "" -msgid "If the columns do not exist they need to be added to the table in question. (see `ALTER TABLE `__)" +msgid "Depending on the overload the parameters types change." msgstr "" -msgid "The function :doc:`pgr_extractVertices` is used to create a vertices table based on the edge identifier and the geometry of the edge of the graph." +msgid "**One**: **ANY-INTEGER**" msgstr "" -msgid "Finally using the data stored on the vertices tables the ``source`` and ``target`` are filled up." +msgid "**Many**: ``ARRAY`` [**ANY-INTEGER**]" msgstr "" -msgid "See :doc:`sampledata` for an example for building a topology." +msgid "Depending of the function the overloads may vary. But the concept of parameter type change remains the same." msgstr "" -msgid "Data coming from OSM and using `osm2pgrouting `__ as an import tool, comes with the routing topology. See an example of using ``osm2pgrouting`` on the `workshop `__." +msgid "One to One" msgstr "" -msgid "Adjust costs" +msgid "When routing from:" msgstr "" -msgid "For this example the ``cost`` and ``reverse_cost`` values are going to be the double of the length of the geometry." +msgid "From **one** starting vertex" msgstr "" -msgid "Update costs to length of geometry" +msgid "to **one** ending vertex" msgstr "" -msgid "Suppose that ``cost`` and ``reverse_cost`` columns in the sample data represent:" +msgid "One to Many" msgstr "" -msgid ":math:`1` when the edge exists in the graph" +msgid "to **many** ending vertices" msgstr "" -msgid ":math:`-1` when the edge does not exist in the graph" +msgid "Many to One" msgstr "" -msgid "Using that information updating to the length of the geometries:" +msgid "From **many** starting vertices" msgstr "" -msgid "Which gives the following results:" +msgid "Many to Many" msgstr "" -msgid "Note that to be able to follow the documentation examples, everything is based on the original graph." +msgid "Combinations" msgstr "" -msgid "Returning to the original data:" +msgid "From **many** different starting vertices" msgstr "" -msgid "Update costs based on codes" +msgid "to **many** different ending vertices" msgstr "" -msgid "Other datasets, can have a column with values like" +msgid "Every tuple specifies a pair of a start vertex and an end vertex" msgstr "" -msgid "``FT`` vehicle flow on the direction of the geometry" +msgid "Users can define the combinations as desired." msgstr "" -msgid "``TF`` vehicle flow opposite of the direction of the geometry" +msgid "Needs a `Combinations SQL`_" msgstr "" -msgid "``B`` vehicle flow on both directions" +msgid "There are several kinds of valid inner queries and also the columns returned are depending of the function. Which kind of inner query will depend on the function's requirements. To simplify the variety of types, **ANY-INTEGER** and **ANY-NUMERICAL** is used." msgstr "" -msgid "Preparing a code column for the example:" +msgid "Edges SQL for" msgstr "" -msgid "Adjusting the costs based on the codes:" +msgid ":doc:`withPoints-family`" msgstr "" -msgid "Check the Routing Topology" +msgid "Some uncategorised functions" msgstr "" -msgid "There are lots of possible problems in a graph." +msgid "General without ``id``" msgstr "" -msgid "The data used may not have been designed with routing in mind." +msgid "General with (X,Y)" msgstr "" -msgid "A graph has some very specific requirements." +msgid "When negative: edge (``source``, ``target``) does not exist, therefore it's not part of the graph." msgstr "" -msgid "The graph is disconnected." +msgid "Weight of the edge (``target``, ``source``)," msgstr "" -msgid "There are unwanted intersections." +msgid "``x1``" msgstr "" -msgid "The graph is too large and needs to be contracted." +msgid "X coordinate of ``source`` vertex." msgstr "" -msgid "A sub graph is needed for the application." +msgid "``y1``" msgstr "" -msgid "and many other problems that the pgRouting user, that is the application developer might encounter." +msgid "Y coordinate of ``source`` vertex." msgstr "" -msgid "Crossing edges" +msgid "``x2``" msgstr "" -msgid "To get the crossing edges:" +msgid "X coordinate of ``target`` vertex." msgstr "" -msgid "That information is correct, for example, when in terms of vehicles, is it a tunnel or bridge crossing over another road." +msgid "``y2``" msgstr "" -msgid "It might be incorrect, for example:" +msgid "Y coordinate of ``target`` vertex." msgstr "" -msgid "When it is actually an intersection of roads, where vehicles can make turns." +msgid "Flow" msgstr "" -msgid "When in terms of electrical lines, the electrical line is able to switch roads even on a tunnel or bridge." +msgid "Edges SQL for :doc:`flow-family`" msgstr "" -msgid "When it is incorrect, it needs fixing:" +msgid "Edges SQL for the following functions of :doc:`flow-family`" msgstr "" -msgid "For vehicles and pedestrians" +msgid "Used in combination signatures" msgstr "" -msgid "If the data comes from OSM and was imported to the database using ``osm2pgrouting``, the fix needs to be done in the `OSM portal `__ and the data imported again." +msgid "Points SQL for" msgstr "" -msgid "In general when the data comes from a supplier that has the data prepared for routing vehicles, and there is a problem, the data is to be fixed from the supplier" +msgid "The main parameter of the majority of the pgRouting functions is a query that selects the edges of the graph." msgstr "" -msgid "For very specific applications" +msgid "Depending on the family or category of a function it will have additional parameters, some of them are compulsory and some are optional." msgstr "" -msgid "The data is correct when from the point of view of routing vehicles or pedestrians." +msgid "The compulsory parameters are nameless and must be given in the required order. The optional parameters are named parameters and will have a default value." msgstr "" -msgid "The data needs a local fix for the specific application." +msgid "Parameters for the Via functions" msgstr "" -msgid "Once analyzed one by one the crossings, for the ones that need a local fix, the edges need to be `split `__." +msgid "SQL query as described." msgstr "" -msgid "The new edges need to be added to the edges table, the rest of the attributes need to be updated in the new edges, the old edges need to be removed and the routing topology needs to be updated." +msgid "When ``true`` Graph is considered `Directed`" msgstr "" -msgid "Adding split edges" +msgid "When ``false`` the graph is considered as Undirected." msgstr "" -msgid "For each pair of crossing edges a process similar to this one must be performed." +msgid "``strict``" msgstr "" -msgid "The columns inserted and the way are calculated are based on the application. For example, if the edges have a trait **name**, then that column is to be copied." +msgid "``false``" msgstr "" -msgid "For pgRouting calculations" +msgid "When ``true`` if a path is missing stops and returns **EMPTY SET**" msgstr "" -msgid "**factor** based on the position of the intersection of the edges can be used to adjust the ``cost`` and ``reverse_cost`` columns." +msgid "When ``false`` ignores missing paths returning all paths found" msgstr "" -msgid "Capacity information, used in the :doc:`flow-family` functions does not need to change when splitting edges." +msgid "``U_turn_on_edge``" msgstr "" -msgid "Adding new vertices" +msgid "When ``true`` departing from a visited vertex will not try to avoid using the edge used to reach it. In other words, U turn using the edge with same identifier is allowed." msgstr "" -msgid "After adding all the split edges required by the application, the newly created vertices need to be added to the vertices table." +msgid "When ``false`` when a departing from a visited vertex tries to avoid using the edge used to reach it. In other words, U turn using the edge with same identifier is used when no other path is found." msgstr "" -msgid "Updating edges topology" +msgid "For the TRSP functions" msgstr "" -msgid "Removing the surplus edges" +msgid "Array of identifiers of destination vertices." msgstr "" -msgid "Once all significant information needed by the application has been transported to the new edges, then the crossing edges can be deleted." +msgid "There are several kinds of columns returned are depending of the function." msgstr "" -msgid "There are other options to do this task, like creating a view, or a materialized view." +msgid "Result columns for a path" msgstr "" -msgid "Updating vertices topology" +msgid "Used in functions that return one path solution" msgstr "" -msgid "To keep the graph consistent, the vertices topology needs to be updated" +msgid "Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost, agg_cost)``" msgstr "" -msgid "Checking for crossing edges" +msgid "``path_seq``" msgstr "" -msgid "There are no crossing edges on the graph." +msgid "Relative position in the path. Has value **1** for the beginning of a path." msgstr "" -msgid "Disconnected graphs" +msgid "Identifier of the starting vertex. Returned when multiple starting vetrices are in the query." msgstr "" -msgid "To get the graph connectivity:" +msgid "Identifier of the ending vertex. Returned when multiple ending vertices are in the query." msgstr "" -msgid "In this example, the component :math:`2` consists of vertices :math:`\\{2, 4\\}` and both vertices are also part of the dead end result set." +msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``." msgstr "" -msgid "This graph needs to be connected." +msgid "Identifier of the edge used to go from ``node`` to the next node in the path sequence. **-1** for the last node of the path." msgstr "" -msgid "With the original graph of this documentation, there would be 3 components as the crossing edge in this graph is a different component." +msgid "Cost to traverse from ``node`` using ``edge`` to the next node in the path sequence." msgstr "" -msgid "Prepare storage for connection information" +msgid "Used in functions the following:" msgstr "" -msgid "Save the vertices connection information" +msgid "Returns set of ``(seq, path_seq [, start_pid] [, end_pid], node, edge, cost, agg_cost)``" msgstr "" -msgid "Save the edges connection information" +msgid "Relative position in the path." msgstr "" -msgid "Get the closest vertex" +msgid "**1** For the first row of the path." msgstr "" -msgid "Using :doc:`pgr_findCloseEdges` the closest vertex to component :math:`1` is vertex :math:`4`. And the closest edge to vertex :math:`4` is edge :math:`14`." +msgid "``start_pid``" msgstr "" -msgid "The ``edge`` can be used to connect the components, using the ``fraction`` information about the edge :math:`14` to split the connecting edge." +msgid "Identifier of a starting vertex/point of the path." msgstr "" -msgid "Connecting components" +msgid "When positive is the identifier of the starting vertex." msgstr "" -msgid "There are three basic ways to connect the components" +msgid "When negative is the identifier of the starting point." msgstr "" -msgid "From the vertex to the starting point of the edge" +msgid "Returned on `Many to One`_ and `Many to Many`_" msgstr "" -msgid "From the vertex to the ending point of the edge" +msgid "``end_pid``" msgstr "" -msgid "From the vertex to the closest vertex on the edge" +msgid "Identifier of an ending vertex/point of the path." msgstr "" -msgid "This solution requires the edge to be split." +msgid "When positive is the identifier of the ending vertex." msgstr "" -msgid "The following query shows the three ways to connect the components:" +msgid "When negative is the identifier of the ending point." msgstr "" -msgid "Checking components" +msgid "Returned on `One to Many`_ and `Many to Many`_" msgstr "" -msgid "Ignoring the edge that requires further work. The graph is now fully connected as there is only one component." +msgid "Identifier of the node in the path from ``start_pid`` to ``end_pid``." msgstr "" -msgid "Contraction of a graph" +msgid "When positive is the identifier of the a vertex." msgstr "" -msgid "The graph can be reduced in size using :doc:`contraction-family`" +msgid "When negative is the identifier of the a point." msgstr "" -msgid "When to contract will depend on the size of the graph, processing times, correctness of the data, on the final application, or any other factor not mentioned." +msgid "Identifier of the edge used to go from ``node`` to the next node in the path sequence." msgstr "" -msgid "A fairly good method of finding out if contraction can be useful is because of the number of dead ends and/or the number of linear edges." +msgid "**-1** for the last row of the path." msgstr "" -msgid "A complete method on how to contract and how to use the contracted graph is described on :doc:`contraction-family`" +msgid "**0** For the first row of the path." msgstr "" -msgid "Dead ends" +msgid ":doc:`pgr_dijkstraNear`" msgstr "" -msgid "To get the dead ends:" +msgid "Returns ``(seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)``" msgstr "" -msgid "That information is correct, for example, when the dead end is on the limit of the imported graph." +msgid "Identifier of the starting vertex of the current path." msgstr "" -msgid "Visually node :math:`4` looks to be as start/ending of 3 edges, but it is not." +msgid "Identifier of the ending vertex of the current path." msgstr "" -msgid "Is that correct?" +msgid "Multiple paths" msgstr "" -msgid "Is there such a small curb:" +msgid "Selective for multiple paths." msgstr "" -msgid "That does not allow a vehicle to use that visual intersection?" +msgid "The columns depend on the function call." msgstr "" -msgid "Is the application for pedestrians and therefore the pedestrian can easily walk on the small curb?" +msgid "Set of ``(seq, path_id, path_seq [, start_vid] [, end_vid], node, edge, cost, agg_cost)``" msgstr "" -msgid "Is the application for the electricity and the electrical lines than can easily be extended on top of the small curb?" +msgid "``path_id``" msgstr "" -msgid "Is there a big cliff and from eagles view look like the dead end is close to the segment?" +msgid "Path identifier." msgstr "" -msgid "When there are many dead ends, to speed up, the :doc:`contraction-family` functions can be used to divide the problem." +msgid "Has value **1** for the first of a path from ``start_vid`` to ``end_vid``." msgstr "" -msgid "Linear edges" +msgid "Non selective for multiple paths" msgstr "" -msgid "To get the linear edges:" +msgid "Regardless of the call, al the columns are returned." msgstr "" -msgid "This information is correct, for example, when the application is taking into account speed bumps, stop signals." +msgid "Returns set of ``(seq, path_id, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)``" msgstr "" -msgid "When there are many linear edges, to speed up, the :doc:`contraction-family` functions can be used to divide the problem." +msgid "Result columns for cost functions" msgstr "" -msgid "Function's structure" +msgid "Used in the following" msgstr "" -msgid "Once the graph preparation work has been done above, it is time to use a" +msgid "When start_vid or end_vid columns have negative values, the identifier is for a Point." msgstr "" -msgid "The general form of a pgRouting function call is:" +msgid "Result columns for flow functions" msgstr "" -msgid "\\ \\" +msgid "Edges SQL for the following" msgstr "" -msgid "pgr_(`Inner queries`_, **parameters**, [ ``Optional parameters``)" +msgid "Result columns for spanning tree functions" msgstr "" -msgid "`Inner queries`_: Are compulsory parameters that are ``TEXT`` strings containing SQL queries." +msgid "Returns set of ``(edge, cost)``" msgstr "" -msgid "**parameters**: Additional compulsory parameters needed by the function." +msgid "Cost to traverse the edge." msgstr "" -msgid "``Optional parameters``: Are non compulsory **named** parameters that have a default value when omitted." +msgid "Performance Tips" msgstr "" -msgid "The compulsory parameters are positional parameters, the optional parameters are named parameters." +msgid "For the Routing functions" msgstr "" -msgid "For example, for this :doc:`pgr_dijkstra` signature:" +msgid "To get faster results bound the queries to an area of interest of routing." msgstr "" -msgid "pgr_dijkstra(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" +msgid "In this example Use an inner query SQL that does not include some edges in the routing function and is within the area of the results." msgstr "" -msgid "`Edges SQL`_:" +msgid "Given this area:" msgstr "" -msgid "Is the first parameter." +msgid "Calculate a route:" msgstr "" -msgid "It is compulsory." +msgid "How to contribute" msgstr "" -msgid "It is an inner query." +msgid "Wiki" msgstr "" -msgid "It has no name, so **Edges SQL** gives an idea of what kind of inner query needs to be used" +msgid "Edit an existing `pgRouting Wiki `__ page." msgstr "" -msgid "**start vid**:" +msgid "Or create a new Wiki page" msgstr "" -msgid "Is the second parameter." +msgid "Create a page on the `pgRouting Wiki `__" msgstr "" -msgid "It has no name, so **start vid** gives an idea of what the second parameter's value should contain." +msgid "Give the title an appropriate name" msgstr "" -msgid "Is the third parameter." +msgid "`Example `__" msgstr "" -msgid "It has no name, so **end vid** gives an idea of what the third parameter's value should contain" +msgid "Adding Functionality to pgRouting" msgstr "" -msgid "Is the fourth parameter." +msgid "Consult the `developer's documentation `__" msgstr "" -msgid "It is optional." +msgid "Installation" msgstr "" -msgid "It has a name." +msgid ":ref:`install-short`" msgstr "" -msgid "The full description of the parameters are found on the `Parameters`_ section of each function." +msgid ":ref:`install_get_sources`" msgstr "" -msgid "Function's overloads" +msgid ":ref:`install_enable_db`" msgstr "" -msgid "A function might have different overloads. The most common are called:" +msgid ":ref:`install_dependencies`" msgstr "" -msgid "`One to One`_" +msgid ":ref:`install_configuring`" msgstr "" -msgid "`One to Many`_" +msgid ":ref:`install_build`" msgstr "" -msgid "`Many to One`_" +msgid ":ref:`install_testing`" msgstr "" -msgid "`Many to Many`_" +msgid "Instructions for downloading and installing binaries for different operating systems, additional notes and corrections not included in this documentation can be found in `Installation wiki `__" msgstr "" -msgid "`Combinations`_" +msgid "To use pgRouting PostGIS needs to be installed, please read the information about installation in this `Install Guide `__" msgstr "" -msgid "Depending on the overload the parameters types change." +msgid "Short Version" msgstr "" -msgid "**One**: **ANY-INTEGER**" +msgid "Extracting the tar ball" msgstr "" -msgid "**Many**: ``ARRAY`` [**ANY-INTEGER**]" +msgid "To compile assuming you have all the dependencies in your search path:" msgstr "" -msgid "Depending of the function the overloads may vary. But the concept of parameter type change remains the same." +msgid "Once pgRouting is installed, it needs to be enabled in each individual database you want to use it in." msgstr "" -msgid "One to One" +msgid "Get the sources" msgstr "" -msgid "When routing from:" +msgid "The pgRouting latest release can be found in https://github.com/pgRouting/pgrouting/releases/latest" msgstr "" -msgid "From **one** starting vertex" +msgid "To download this release:" msgstr "" -msgid "to **one** ending vertex" +msgid "Go to :ref:`install-short` for more instructions on extracting tar ball and compiling pgRouting." msgstr "" -msgid "One to Many" +msgid "git" msgstr "" -msgid "to **many** ending vertices" +msgid "To download the repository" msgstr "" -msgid "Many to One" +msgid "Go to :ref:`install-short` for more instructions on compiling pgRouting (there is no tar ball involved while downloading pgRouting repository from GitHub)." msgstr "" -msgid "From **many** starting vertices" +msgid "Enabling and upgrading in the database" msgstr "" -msgid "Many to Many" +msgid "Enabling the database" msgstr "" -msgid "Combinations" +msgid "pgRouting is a PostgreSQL extension and depends on PostGIS to provide functionalities to end user. Below given code demonstrates enabling PostGIS and pgRouting in the database." msgstr "" -msgid "From **many** different starting vertices" +msgid "Checking PostGIS and pgRouting version after enabling them in the database." msgstr "" -msgid "to **many** different ending vertices" +msgid "Upgrading the database" msgstr "" -msgid "Every tuple specifies a pair of a start vertex and an end vertex" +msgid "To upgrade pgRouting in the database to version 4.0.0 use the following command:" msgstr "" -msgid "Users can define the combinations as desired." +msgid "More information can be found in https://www.postgresql.org/docs/current/sql-createextension.html" msgstr "" -msgid "Needs a `Combinations SQL`_" +msgid "Dependencies" msgstr "" -msgid "There are several kinds of valid inner queries and also the columns returned are depending of the function. Which kind of inner query will depend on the function's requirements. To simplify the variety of types, **ANY-INTEGER** and **ANY-NUMERICAL** is used." +msgid "Compilation Dependencies" msgstr "" -msgid "Edges SQL for" +msgid "To be able to compile pgRouting, make sure that the following dependencies are met:" msgstr "" -msgid ":doc:`withPoints-family`" +msgid "C and C++0x compilers" msgstr "" -msgid "Some uncategorised functions" +msgid "Compiling with Boost 1.56 up to Boost 1.74 requires C++ Compiler with C++03 or C++11 standard support" msgstr "" -msgid "General without ``id``" +msgid "Compiling with Boost 1.75 requires C++ Compiler with C++14 standard support" msgstr "" -msgid "General with (X,Y)" +msgid "Postgresql version = Supported versions by PostgreSQL" msgstr "" -msgid "When negative: edge (``source``, ``target``) does not exist, therefore it's not part of the graph." +msgid "The Boost Graph Library (BGL). Version >= 1.56" msgstr "" -msgid "Weight of the edge (``target``, ``source``)," +msgid "CMake >= 3.2" msgstr "" -msgid "``x1``" +msgid "optional dependencies" msgstr "" -msgid "X coordinate of ``source`` vertex." +msgid "For user's documentation" msgstr "" -msgid "``y1``" +msgid "Sphinx >= 1.1" msgstr "" -msgid "Y coordinate of ``source`` vertex." +msgid "Latex" msgstr "" -msgid "``x2``" +msgid "For developer's documentation" msgstr "" -msgid "X coordinate of ``target`` vertex." +msgid "Doxygen >= 1.7" msgstr "" -msgid "``y2``" +msgid "For testing" msgstr "" -msgid "Y coordinate of ``target`` vertex." +msgid "pgtap" msgstr "" -msgid "Flow" +msgid "pg_prove" msgstr "" -msgid "Edges SQL for :doc:`flow-family`" +msgid "For using:" msgstr "" -msgid "Edges SQL for the following functions of :doc:`flow-family`" +msgid "PostGIS version >= 2.2" msgstr "" -msgid "Used in combination signatures" +msgid "Example: Installing dependencies on linux" msgstr "" -msgid "Points SQL for" +msgid "Installing the compilation dependencies" msgstr "" -msgid "The main parameter of the majority of the pgRouting functions is a query that selects the edges of the graph." +msgid "Database dependencies" msgstr "" -msgid "Depending on the family or category of a function it will have additional parameters, some of them are compulsory and some are optional." +msgid "Configuring PostgreSQL" msgstr "" -msgid "The compulsory parameters are nameless and must be given in the required order. The optional parameters are named parameters and will have a default value." +msgid "Entering psql console" msgstr "" -msgid "Parameters for the Via functions" +msgid "To exit psql console" msgstr "" -msgid ":doc:`pgr_dijkstraVia`" +msgid "Entering psql console directly without switching roles can be done by the following commands" msgstr "" -msgid "SQL query as described." +msgid "Then use the above given method to exit out of the psql console" msgstr "" -msgid "When ``true`` Graph is considered `Directed`" +msgid "Checking PostgreSQL version" msgstr "" -msgid "When ``false`` the graph is considered as Undirected." +msgid "or" msgstr "" -msgid "``strict``" +msgid "Enter the psql console using above given method and then enter" msgstr "" -msgid "``false``" +msgid "Creating PostgreSQL role" msgstr "" -msgid "When ``true`` if a path is missing stops and returns **EMPTY SET**" +msgid "Default role provided by PostgreSQL is postgres. To create new roles you can use the above provided commands. The prompt will ask the user to type name of the role and then provide affirmation. Proceed with the steps and you will succeed in creating PostgreSQL role successfully." msgstr "" -msgid "When ``false`` ignores missing paths returning all paths found" +msgid "To add password to the role or change previously created password of the role use the following commands" msgstr "" -msgid "``U_turn_on_edge``" +msgid "To get additional details on the flags associated with ``createuser`` below given command can be used" msgstr "" -msgid "When ``true`` departing from a visited vertex will not try to avoid using the edge used to reach it. In other words, U turn using the edge with same identifier is allowed." +msgid "Creating Database in PostgreSQL" msgstr "" -msgid "When ``false`` when a departing from a visited vertex tries to avoid using the edge used to reach it. In other words, U turn using the edge with same identifier is used when no other path is found." +msgid "Connecting to a PostgreSQL Database" msgstr "" -msgid "For the TRSP functions" +msgid "Enter the psql console and type the following commands" msgstr "" -msgid ":doc:`pgr_trsp`" +msgid "Build dependencies" msgstr "" -msgid "Array of identifiers of destination vertices." +msgid "Optional dependencies" msgstr "" -msgid "There are several kinds of columns returned are depending of the function." +msgid "For documentation and testing" msgstr "" -msgid "Result columns for a path" +msgid "Configuring" msgstr "" -msgid "Used in functions that return one path solution" +msgid "pgRouting uses the `cmake` system to do the configuration." msgstr "" -msgid "Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost, agg_cost)``" +msgid "The build directory is different from the source directory" msgstr "" -msgid "``path_seq``" +msgid "Create the build directory" msgstr "" -msgid "Relative position in the path. Has value **1** for the beginning of a path." +msgid "Configurable variables" msgstr "" -msgid "Identifier of the starting vertex. Returned when multiple starting vetrices are in the query." +msgid "To see the variables that can be configured" msgstr "" -msgid "Identifier of the ending vertex. Returned when multiple ending vertices are in the query." +msgid "Configuring The Documentation" msgstr "" -msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``." +msgid "Most of the effort of the documentation has been on the HTML files. Some variables for building documentation:" msgstr "" -msgid "Identifier of the edge used to go from ``node`` to the next node in the path sequence. **-1** for the last node of the path." +msgid "Variable" msgstr "" -msgid "Cost to traverse from ``node`` using ``edge`` to the next node in the path sequence." +msgid "Comment" msgstr "" -msgid "Used in functions the following:" +msgid "WITH_DOC" msgstr "" -msgid ":doc:`pgr_withPoints`" +msgid "BOOL=OFF" msgstr "" -msgid "Returns set of ``(seq, path_seq [, start_pid] [, end_pid], node, edge, cost, agg_cost)``" +msgid "Turn on/off building the documentation" msgstr "" -msgid "Relative position in the path." +msgid "BUILD_HTML" msgstr "" -msgid "**1** For the first row of the path." +msgid "BOOL=ON" msgstr "" -msgid "``start_pid``" +msgid "If ON, turn on/off building HTML for user's documentation" msgstr "" -msgid "Identifier of a starting vertex/point of the path." +msgid "BUILD_DOXY" msgstr "" -msgid "When positive is the identifier of the starting vertex." +msgid "If ON, turn on/off building HTML for developer's documentation" msgstr "" -msgid "When negative is the identifier of the starting point." +msgid "BUILD_LATEX" msgstr "" -msgid "Returned on `Many to One`_ and `Many to Many`_" +msgid "If ON, turn on/off building PDF" msgstr "" -msgid "``end_pid``" +msgid "BUILD_MAN" msgstr "" -msgid "Identifier of an ending vertex/point of the path." +msgid "If ON, turn on/off building MAN pages" msgstr "" -msgid "When positive is the identifier of the ending vertex." +msgid "DOC_USE_BOOTSTRAP" msgstr "" -msgid "When negative is the identifier of the ending point." +msgid "If ON, use sphinx-bootstrap for HTML pages of the users documentation" msgstr "" -msgid "Returned on `One to Many`_ and `Many to Many`_" +msgid "Configuring cmake to create documentation before building pgRouting" msgstr "" -msgid "Identifier of the node in the path from ``start_pid`` to ``end_pid``." +msgid "Most of the effort of the documentation has been on the html files." msgstr "" -msgid "When positive is the identifier of the a vertex." +msgid "Building" msgstr "" -msgid "When negative is the identifier of the a point." +msgid "Using ``make`` to build the code and the documentation" msgstr "" -msgid "Identifier of the edge used to go from ``node`` to the next node in the path sequence." +msgid "The following instructions start from *path/to/pgrouting/build*" msgstr "" -msgid "**-1** for the last row of the path." +msgid "We have tested on several platforms, For installing or reinstalling all the steps are needed." msgstr "" -msgid "**0** For the first row of the path." +msgid "The sql signatures are configured and build in the ``cmake`` command." msgstr "" -msgid ":doc:`pgr_dijkstraNear`" +msgid "MinGW on Windows" msgstr "" -msgid "Returns ``(seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)``" +msgid "Linux" msgstr "" -msgid "Identifier of the starting vertex of the current path." +msgid "The following instructions start from *path/to/pgrouting*" msgstr "" -msgid "Identifier of the ending vertex of the current path." +msgid "To remove the build when the configuration changes, use the following code:" msgstr "" -msgid "Multiple paths" +msgid "and start the build process as mentioned previously." msgstr "" -msgid "Selective for multiple paths." +msgid "Testing" msgstr "" -msgid "The columns depend on the function call." +msgid "Currently there is no :code:`make test` and testing is done as follows" msgstr "" -msgid "Set of ``(seq, path_id, path_seq [, start_vid] [, end_vid], node, edge, cost, agg_cost)``" +msgid "The following instructions start from *path/to/pgrouting/*" msgstr "" -msgid "``path_id``" +msgid "pgRouting is an extension of `PostGIS `__ and `PostgreSQL `__ geospatial database and adds routing and other network analysis functionality. A predecessor of pgRouting – pgDijkstra, written by Sylvain Pasche from `Camptocamp `__, was later extended by Orkney and renamed to pgRouting. The project is now supported and maintained by `Georepublic `__, `Paragon Corporation `__ and a broad user community." msgstr "" -msgid "Path identifier." +msgid "pgRouting is part of `OSGeo Community Projects `__ from the `OSGeo Foundation `__ and included on `OSGeoLive `__." msgstr "" -msgid "Has value **1** for the first of a path from ``start_vid`` to ``end_vid``." +msgid "Licensing" msgstr "" -msgid "Non selective for multiple paths" +msgid "The following licenses can be found in pgRouting:" msgstr "" -msgid "Regardless of the call, al the columns are returned." +msgid "**License**" msgstr "" -msgid "Returns set of ``(seq, path_id, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)``" +msgid "GNU General Public License v2.0 or later" msgstr "" -msgid "Result columns for cost functions" +msgid "Most features of pgRouting are available under `GNU General Public License v2.0 or later `_." msgstr "" -msgid "Used in the following" +msgid "Boost Software License - Version 1.0" msgstr "" -msgid "When start_vid or end_vid columns have negative values, the identifier is for a Point." +msgid "Some Boost extensions are available under `Boost Software License - Version 1.0 `_." msgstr "" -msgid "Result columns for flow functions" +msgid "MIT-X License" msgstr "" -msgid "Edges SQL for the following" +msgid "Some code contributed by iMaptools.com is available under MIT-X license." msgstr "" -msgid "Result columns for spanning tree functions" +msgid "The pgRouting Manual is licensed under a `Creative Commons Attribution-Share Alike 3.0 License `_." msgstr "" -msgid "Returns set of ``(edge, cost)``" +msgid "In general license information should be included in the header of each source file." msgstr "" -msgid "Cost to traverse the edge." +msgid "Contributors" msgstr "" -msgid "Performance Tips" +msgid "This Release Contributors" msgstr "" -msgid "For the Routing functions" +msgid "Individuals in this release v3.7.x (in alphabetical order)" msgstr "" -msgid "To get faster results bound the queries to an area of interest of routing." +msgid "(Alphabetical order)" msgstr "" -msgid "In this example Use an inner query SQL that does not include some edges in the routing function and is within the area of the results." +msgid "Regina Obe, Vicky Vergara" msgstr "" -msgid "How to contribute" +msgid "And all the people that give us a little of their time making comments, finding issues, making pull requests etc. in any of our products: osm2pgrouting, pgRouting, pgRoutingLayer, workshop." msgstr "" -msgid "Wiki" +msgid "Corporate Sponsors in this release (in alphabetical order)" msgstr "" -msgid "Edit an existing `pgRouting Wiki `__ page." +msgid "These are corporate entities that have contributed developer time, hosting, or direct monetary funding to the pgRouting project:" msgstr "" -msgid "Or create a new Wiki page" +msgid "`OSGeo `__" msgstr "" -msgid "Create a page on the `pgRouting Wiki `__" +msgid "`OSGeo UK `__" msgstr "" -msgid "Give the title an appropriate name" +msgid "`Google Summer of Code `__" msgstr "" -msgid "`Example `__" +msgid "`Paragon Corporation `__" msgstr "" -msgid "Adding Functionaity to pgRouting" +msgid "Contributors Past & Present:" msgstr "" -msgid "Consult the `developer's documentation `__" +msgid "Individuals (in alphabetical order)" msgstr "" -msgid "Installation" +msgid "Aasheesh Tiwari, Abhinav Jain, Aditya Pratap Singh, Adrien Berchet, Akio Takubo, Alay Sharma, Andrea Nardelli, Anthony Tasca, Anton Patrushev, Aryan Gupta, Ashraf Hossain, Ashish Kumar, Cayetano Benavent, Christian Gonzalez, Daniel Kastl, Dave Potts, David Techer, Denis Rykov, Ema Miyawaki, Esteban Zimanyi, Florian Thurkow, Frederic Junod, Gerald Fenoy, Gudesa Venkata Sai Akhil, Hang Wu, Himanshu Raj, Imre Samu, Jay Mahadeokar, Jinfu Leng, Kai Behncke, Kishore Kumar, Ko Nagase, Mahmoud Sakr, Manikata Kondeti, Mario Basa, Martin Wiesenhaan, Maxim Dubinin, Maoguang Wang, Mohamed Bakli, Mohamed Zia, Mukul Priya, Nitish Chauhan, Rajat Shinde, Razequl Islam, Regina Obe, Rohith Reddy, Sarthak Agarwal, Shobhit Chaurasia, Sourabh Garg, Stephen Woodbridge, Swapnil Joshi, Sylvain Housseman, Sylvain Pasche, Veenit Kumar, Vidhan Jain, Virginia Vergara, Yige Huang" msgstr "" -msgid ":ref:`install-short`" +msgid "Corporate Sponsors (in alphabetical order)" msgstr "" -msgid ":ref:`install_get_sources`" +msgid "Camptocamp" msgstr "" -msgid ":ref:`install_enable_db`" +msgid "CSIS (University of Tokyo)" msgstr "" -msgid ":ref:`install_dependencies`" +msgid "Georepublic" msgstr "" -msgid ":ref:`install_configuring`" +msgid "Google Summer of Code" msgstr "" -msgid ":ref:`install_build`" +msgid "iMaptools" msgstr "" -msgid ":ref:`install_testing`" +msgid "Leopark" msgstr "" -msgid "Instructions for downloading and installing binaries for different operating systems, additional notes and corrections not included in this documentation can be found in `Installation wiki `__" +msgid "Orkney" msgstr "" -msgid "To use pgRouting PostGIS needs to be installed, please read the information about installation in this `Install Guide `__" +msgid "OSGeo" msgstr "" -msgid "Short Version" +msgid "OSGeo UK" msgstr "" -msgid "Extracting the tar ball" +msgid "Paragon Corporation" msgstr "" -msgid "To compile assuming you have all the dependencies in your search path:" +msgid "Versaterm Inc." msgstr "" -msgid "Once pgRouting is installed, it needs to be enabled in each individual database you want to use it in." +msgid "More Information" msgstr "" -msgid "Get the sources" +msgid "The latest software, documentation and news items are available at the pgRouting web site https://pgrouting.org." msgstr "" -msgid "The pgRouting latest release can be found in https://github.com/pgRouting/pgrouting/releases/latest" +msgid "PostgreSQL database server at the PostgreSQL main site https://www.postgresql.org." msgstr "" -msgid "To download this release:" +msgid "PostGIS extension at the PostGIS project web site https://postgis.net." msgstr "" -msgid "Go to :ref:`install-short` for more instructions on extracting tar ball and compiling pgRouting." +msgid "Boost C++ source libraries at https://www.boost.org." msgstr "" -msgid "git" +msgid ":doc:`migration`" msgstr "" -msgid "To download the repository" +msgid "``pgr_KSP``" msgstr "" -msgid "Go to :ref:`install-short` for more instructions on compiling pgRouting (there is no tar ball involved while downloading pgRouting repository from GitHub)." +msgid "``pgr_KSP`` — Yen's algorithm for K shortest paths using Dijkstra." msgstr "" -msgid "Enabling and upgrading in the database" +msgid "Availability" msgstr "" -msgid "Enabling the database" +msgid "Version 4.0.0" msgstr "" -msgid "pgRouting is a PostgreSQL extension and depends on PostGIS to provide functionalities to end user. Below given code demonstrates enabling PostGIS and pgRouting in the database." +msgid "All signatures promoted to official." msgstr "" -msgid "Checking PostGIS and pgRouting version after enabling them in the database." +msgid "Version 3.6.0" msgstr "" -msgid "Upgrading the database" +msgid "Result columns standarized to: |nksp-result|" msgstr "" -msgid "To upgrade pgRouting in the database to version 3.7.0 use the following command:" +msgid "pgr_ksp(One to One)" msgstr "" -msgid "More information can be found in https://www.postgresql.org/docs/current/sql-createextension.html" +msgid "Added ``start_vid`` and ``end_vid`` result columns." msgstr "" -msgid "Dependencies" +msgid "New proposed signatures:" msgstr "" -msgid "Compilation Dependencies" +msgid "pgr_ksp(One to Many)" msgstr "" -msgid "To be able to compile pgRouting, make sure that the following dependencies are met:" +msgid "pgr_ksp(Many to One)" msgstr "" -msgid "C and C++0x compilers" +msgid "pgr_ksp(Many to Many)" msgstr "" -msgid "Compiling with Boost 1.56 up to Boost 1.74 requires C++ Compiler with C++03 or C++11 standard support" +msgid "pgr_ksp(Combinations)" msgstr "" -msgid "Compiling with Boost 1.75 requires C++ Compiler with C++14 standard support" +msgid "Version 2.1.0" msgstr "" -msgid "Postgresql version = Supported versions by PostgreSQL" +msgid "Signature change" msgstr "" -msgid "The Boost Graph Library (BGL). Version >= 1.56" +msgid "Old signature no longer supported" msgstr "" -msgid "CMake >= 3.2" +msgid "Version 2.0.0" msgstr "" -msgid "optional dependencies" +msgid "Official function." msgstr "" -msgid "For user's documentation" +msgid "The K shortest path routing algorithm based on Yen's algorithm. \"K\" is the number of shortest paths desired." msgstr "" -msgid "Sphinx >= 1.1" +msgid "|Boost| Boost Graph Inside" msgstr "" -msgid "Latex" +msgid "Boost Graph Inside" msgstr "" -msgid "For developer's documentation" +msgid "Signatures" msgstr "" -msgid "Doxygen >= 1.7" +msgid "Summary" msgstr "" -msgid "For testing" +msgid "pgr_KSP(`Edges SQL`_, **start vid**, **end vid**, **K**, [**options**])" msgstr "" -msgid "pgtap" +msgid "pgr_KSP(`Edges SQL`_, **start vid**, **end vids**, **K**, [**options**])" msgstr "" -msgid "pg_prove" +msgid "pgr_KSP(`Edges SQL`_, **start vids**, **end vid**, **K**, [**options**])" msgstr "" -msgid "For using:" +msgid "pgr_KSP(`Edges SQL`_, **start vids**, **end vids**, **K**, [**options**])" msgstr "" -msgid "PostGIS version >= 2.2" +msgid "pgr_KSP(`Edges SQL`_, `Combinations SQL`_, **K**, [**options**])" msgstr "" -msgid "Example: Installing dependencies on linux" +msgid "**options:** ``[directed, heap_paths]``" msgstr "" -msgid "Installing the compilation dependencies" +msgid "Returns set of |nksp-result|" msgstr "" -msgid "Database dependencies" +msgid "OR EMPTY SET" msgstr "" -msgid "Configuring PostgreSQL" +msgid "Example" msgstr "" -msgid "Entering psql console" +msgid "Get 2 paths from :math:`6` to :math:`17` on a directed graph." msgstr "" -msgid "To exit psql console" +msgid "Get 2 paths from vertex :math:`6` to vertices :math:`\\{10, 17\\}` on a directed graph." msgstr "" -msgid "Entering psql console directly without switching roles can be done by the following commands" +msgid "Get 2 paths from vertices :math:`\\{6, 1\\}` to vertex :math:`17` on a directed graph." msgstr "" -msgid "Then use the above given method to exit out of the psql console" +msgid "Get 2 paths vertices :math:`\\{6, 1\\}` to vertices :math:`\\{10, 17\\}` on a directed graph." msgstr "" -msgid "Checking PostgreSQL version" +msgid "Using a combinations table on an directed graph" msgstr "" -msgid "or" +msgid "The combinations table:" msgstr "" -msgid "Enter the psql console using above given method and then enter" +msgid "The query:" msgstr "" -msgid "Creating PostgreSQL role" +msgid "Identifier of the destination vertex." msgstr "" -msgid "Default role provided by PostgreSQL is postgres. To create new roles you can use the above provided commands. The prompt will ask the user to type name of the role and then provide affirmation. Proceed with the steps and you will succeed in creating PostgreSQL role successfully." +msgid "**K**" msgstr "" -msgid "To add password to the role or change previously created password of the role use the following commands" +msgid "Number of required paths." msgstr "" -msgid "To get additional details on the flags associated with ``createuser`` below given command can be used" +msgid "KSP Optional parameters" msgstr "" -msgid "Creating Database in PostgreSQL" +msgid "``heap_paths``" msgstr "" -msgid "Connecting to a PostgreSQL Database" +msgid "When ``false`` Returns at most K paths." msgstr "" -msgid "Enter the psql console and type the following commands" +msgid "When ``true`` all the calculated paths while processing are returned." msgstr "" -msgid "Build dependencies" +msgid "Roughly, when the shortest path has ``N`` edges, the heap will contain about than ``N * K`` paths for small value of ``K`` and ``K > 5``." msgstr "" -msgid "Optional dependencies" +msgid "Has value **1** for the first of a path from ``start_vid`` to ``end_vid``" msgstr "" -msgid "For documentation and testing" +msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``" msgstr "" -msgid "Configuring" +msgid ":math:`0` for the last ``node`` of the path." msgstr "" -msgid "pgRouting uses the `cmake` system to do the configuration." +msgid "Aggregate cost from **start vid** to ``node``." msgstr "" -msgid "The build directory is different from the source directory" +msgid "Additional Examples" msgstr "" -msgid "Create the build directory" +msgid "Get 2 paths from :math:`6` to :math:`17` on an undirected graph" msgstr "" -msgid "Configurable variables" +msgid "Also get the paths in the heap." msgstr "" -msgid "To see the variables that can be configured" +msgid "Get 2 paths using combinations table on an undirected graph" msgstr "" -msgid "Configuring The Documentation" +msgid "Get 2 paths from vertices :math:`\\{6, 1\\}` to vertex :math:`17` on a undirected graph." msgstr "" -msgid "Most of the effort of the documentation has been on the HTML files. Some variables for building documentation:" +msgid "https://en.wikipedia.org/wiki/K_shortest_path_routing" msgstr "" -msgid "Variable" +msgid "``pgr_TSP``" msgstr "" -msgid "Comment" +msgid "``pgr_TSP`` - Approximation using *metric* algorithm." msgstr "" -msgid "WITH_DOC" +msgid "Availability:" msgstr "" -msgid "BOOL=OFF" +msgid "Version 3.2.1" msgstr "" -msgid "Turn on/off building the documentation" +msgid "Metric Algorithm from `Boost library `__" msgstr "" -msgid "BUILD_HTML" +msgid "Simulated Annealing Algorithm no longer supported" msgstr "" -msgid "BOOL=ON" +msgid "The Simulated Annealing Algorithm related parameters are ignored: max_processing_time, tries_per_temperature, max_changes_per_temperature, max_consecutive_non_changes, initial_temperature, final_temperature, cooling_factor, randomize" msgstr "" -msgid "If ON, turn on/off building HTML for user's documentation" +msgid "Version 2.3.0" msgstr "" -msgid "BUILD_DOXY" +msgid "Can be Used with :doc:`costMatrix-category` functions preferably with `directed => false`." msgstr "" -msgid "If ON, turn on/off building HTML for developer's documentation" +msgid "With ``directed => false``" msgstr "" -msgid "BUILD_LATEX" +msgid "Will generate a graph that:" msgstr "" -msgid "If ON, turn on/off building PDF" +msgid "is undirected" msgstr "" -msgid "BUILD_MAN" +msgid "is fully connected (As long as the graph has one component)" msgstr "" -msgid "If ON, turn on/off building MAN pages" +msgid "all traveling costs on edges obey the triangle inequality." msgstr "" -msgid "DOC_USE_BOOTSTRAP" +msgid "When ``start_vid = 0 OR end_vid = 0``" msgstr "" -msgid "If ON, use sphinx-bootstrap for HTML pages of the users documentation" +msgid "The solutions generated is garanteed to be *twice as long as the optimal tour in the worst case*" msgstr "" -msgid "Configuring cmake to create documentation before building pgRouting" +msgid "When ``start_vid != 0 AND end_vid != 0 AND start_vid != end_vid``" msgstr "" -msgid "Most of the effort of the documentation has been on the html files." +msgid "It is **not garanteed** that the solution will be, in the worse case, twice as long as the optimal tour, due to the fact that `end_vid` is forced to be in a fixed position." msgstr "" -msgid "Building" +msgid "With ``directed => true``" msgstr "" -msgid "Using ``make`` to build the code and the documentation" +msgid "It is **not garanteed** that the solution will be, in the worse case, twice as long as the optimal tour" msgstr "" -msgid "The following instructions start from *path/to/pgrouting/build*" +msgid "is directed" msgstr "" -msgid "We have tested on several platforms, For installing or reinstalling all the steps are needed." +msgid "some (or all) traveling costs on edges might not obey the triangle inequality." msgstr "" -msgid "The sql signatures are configured and build in the ``cmake`` command." +msgid "As an undirected graph is required, the directed graph is transformed as follows:" msgstr "" -msgid "MinGW on Windows" +msgid "edges `(u, v)` and `(v, u)` is considered to be the same edge (denoted `(u, v)`" msgstr "" -msgid "Linux" +msgid "if ``agg_cost`` differs between one or more instances of edge `(u, v)`" msgstr "" -msgid "The following instructions start from *path/to/pgrouting*" +msgid "The minimum value of the ``agg_cost`` all instances of edge `(u, v)` is going to be considered as the ``agg_cost`` of edge `(u, v)`" msgstr "" -msgid "To remove the build when the configuration changes, use the following code:" +msgid "Some (or all) traveling costs on edges will still might not obey the triangle inequality." msgstr "" -msgid "and start the build process as mentioned previously." +msgid "When the data is incomplete, but it is a connected graph:" msgstr "" -msgid "Testing" +msgid "the missing values will be calculated with dijkstra algorithm." msgstr "" -msgid "Currently there is no :code:`make test` and testing is done as follows" +msgid "pgr_TSP(`Matrix SQL`_, ``[start_id, end_id]``)" msgstr "" -msgid "The following instructions start from *path/to/pgrouting/*" +msgid "Returns set of |tsp-result|" msgstr "" -msgid "pgRouting is an extension of `PostGIS `__ and `PostgreSQL `__ geospatial database and adds routing and other network analysis functionality. A predecessor of pgRouting – pgDijkstra, written by Sylvain Pasche from `Camptocamp `__, was later extended by Orkney and renamed to pgRouting. The project is now supported and maintained by `Georepublic `__, `Paragon Corporation `__ and a broad user community." +msgid "OR EMTPY SET" msgstr "" -msgid "pgRouting is part of `OSGeo Community Projects `__ from the `OSGeo Foundation `__ and included on `OSGeoLive `__." +msgid "Using :doc:`pgr_dijkstraCostMatrix` to generate the matrix information" msgstr "" -msgid "Licensing" +msgid "**Line 4** Vertices :math:`\\{2, 4, 13, 14\\}` are not included because they are not connected." msgstr "" -msgid "The following licenses can be found in pgRouting:" +msgid "`Matrix SQL`_ as described below" msgstr "" -msgid "**License**" +msgid "``ANY-INTEGER``" msgstr "" -msgid "GNU General Public License v2.0 or later" +msgid "``ANY-NUMERICAL``" msgstr "" -msgid "Most features of pgRouting are available under `GNU General Public License v2.0 or later `_." +msgid "Cost for going from start_vid to end_vid" msgstr "" -msgid "Boost Software License - Version 1.0" +msgid "Returns SET OF ``(seq, node, cost, agg_cost)``" msgstr "" -msgid "Some Boost extensions are available under `Boost Software License - Version 1.0 `_." +msgid "Row sequence." msgstr "" -msgid "MIT-X License" +msgid "**node**" msgstr "" -msgid "Some code contributed by iMaptools.com is available under MIT-X license." +msgid "Identifier of the node/coordinate/point." msgstr "" -msgid "The pgRouting Manual is licensed under a `Creative Commons Attribution-Share Alike 3.0 License `_." +msgid "Cost to traverse from the current ``node`` to the next ``node`` in the path sequence." msgstr "" -msgid "In general license information should be included in the header of each source file." +msgid "``0`` for the last row in the tour sequence." msgstr "" -msgid "Contributors" +msgid "Aggregate cost from the ``node`` at ``seq = 1`` to the current node." msgstr "" -msgid "This Release Contributors" +msgid "``0`` for the first row in the tour sequence." msgstr "" -msgid "Individuals in this release v3.7.x (in alphabetical order)" +msgid "Start from vertex :math:`1`" msgstr "" -msgid "(Alphabetical order)" +msgid "**Line 6** ``start_vid => 1``" msgstr "" -msgid "Regina Obe, Vicky Vergara" +msgid "Using points of interest to generate an asymetric matrix." msgstr "" -msgid "And all the people that give us a little of their time making comments, finding issues, making pull requests etc. in any of our products: osm2pgrouting, pgRouting, pgRoutingLayer, workshop." +msgid "To generate an asymmetric matrix:" msgstr "" -msgid "Corporate Sponsors in this release (in alphabetical order)" +msgid "**Line 4** The ``side`` information of ``pointsOfInterset`` is ignored by not including it in the query" msgstr "" -msgid "These are corporate entities that have contributed developer time, hosting, or direct monetary funding to the pgRouting project:" +msgid "**Line 6** Generating an asymetric matrix with ``directed => true``" msgstr "" -msgid "`OSGeo `__" +msgid ":math:`min(agg\\_cost(u, v), agg\\_cost(v, u))` is going to be considered as the ``agg_cost``" msgstr "" -msgid "`OSGeo UK `__" +msgid "The solution that can be larger than *twice as long as the optimal tour* because:" msgstr "" -msgid "`Google Summer of Code `__" +msgid "Triangle inequality might not be satisfied." msgstr "" -msgid "`Paragon Corporation `__" +msgid "``start_id != 0 AND end_id != 0``" msgstr "" -msgid "Contributors Past & Present:" +msgid "Connected incomplete data" msgstr "" -msgid "Individuals (in alphabetical order)" +msgid "Using selected edges :math:`\\{2, 4, 5, 8, 9, 15\\}` the matrix is not complete." msgstr "" -msgid "Aasheesh Tiwari, Abhinav Jain, Aditya Pratap Singh, Adrien Berchet, Akio Takubo, Andrea Nardelli, Anthony Tasca, Anton Patrushev, Aryan Gupta, Ashraf Hossain, Ashish Kumar, Cayetano Benavent, Christian Gonzalez, Daniel Kastl, Dave Potts, David Techer, Denis Rykov, Ema Miyawaki, Esteban Zimanyi, Florian Thurkow, Frederic Junod, Gerald Fenoy, Gudesa Venkata Sai Akhil, Hang Wu, Himanshu Raj, Imre Samu, Jay Mahadeokar, Jinfu Leng, Kai Behncke, Kishore Kumar, Ko Nagase, Mahmoud Sakr, Manikata Kondeti, Mario Basa, Martin Wiesenhaan, Maxim Dubinin, Maoguang Wang, Mohamed Bakli, Mohamed Zia, Mukul Priya, Nitish Chauhan, Rajat Shinde, Razequl Islam, Regina Obe, Rohith Reddy, Sarthak Agarwal, Shobhit Chaurasia, Sourabh Garg, Stephen Woodbridge, Swapnil Joshi, Sylvain Housseman, Sylvain Pasche, Veenit Kumar, Vidhan Jain, Virginia Vergara, Yige Huang" +msgid "Cost value for :math:`17 \\rightarrow 10` do not exist on the matrix, but the value used is taken from :math:`10 \\rightarrow 17`." msgstr "" -msgid "Corporate Sponsors (in alphabetical order)" +msgid "``pgr_TSPeuclidean``" msgstr "" -msgid "Camptocamp" +msgid "``pgr_TSPeuclidean`` - Approximation using *metric* algorithm." msgstr "" -msgid "CSIS (University of Tokyo)" +msgid "Using `Boost: metric TSP approx `__" msgstr "" -msgid "Georepublic" +msgid "The Simulated Annealing Algorithm related parameters are ignored: `max_processing_time`, `tries_per_temperature`, `max_changes_per_temperature`, `max_consecutive_non_changes`, `initial_temperature`, `final_temperature`, `cooling_factor`, `randomize`" msgstr "" -msgid "Google Summer of Code" +msgid "Version 3.0.0" msgstr "" -msgid "iMaptools" +msgid "Name change from pgr_eucledianTSP" msgstr "" -msgid "Leopark" +msgid "New official function." msgstr "" -msgid "Orkney" +msgid "Any duplicated identifier will be ignored. The coordinates that will be kept" msgstr "" -msgid "OSGeo" +msgid "is arbitrarly." msgstr "" -msgid "OSGeo UK" +msgid "The coordinates are quite similar for the same identifier, for example ::" msgstr "" -msgid "Paragon Corporation" +msgid "The coordinates are quite different for the same identifier, for example ::" msgstr "" -msgid "Versaterm Inc." +msgid "pgr_TSPeuclidean(`Coordinates SQL`_, ``[start_id, end_id]``)" msgstr "" -msgid "More Information" +msgid "With default values" msgstr "" -msgid "The latest software, documentation and news items are available at the pgRouting web site https://pgrouting.org." +msgid "`Coordinates SQL`_" msgstr "" -msgid "PostgreSQL database server at the PostgreSQL main site https://www.postgresql.org." +msgid "`Coordinates SQL`_ as described below" msgstr "" -msgid "PostGIS extension at the PostGIS project web site https://postgis.net." +msgid "Coordinates SQL" msgstr "" -msgid "Boost C++ source libraries at https://www.boost.org." +msgid "``x``" msgstr "" -msgid ":doc:`migration`" +msgid "X value of the coordinate." msgstr "" -msgid "pgr_KSP" +msgid "``y``" msgstr "" -msgid "``pgr_KSP`` — Yen's algorithm for K shortest paths using Dijkstra." +msgid "Y value of the coordinate." msgstr "" -msgid "Availability" +msgid "Test 29 cities of Western Sahara" msgstr "" -msgid "Version 3.6.0" +msgid "This example shows how to make performance tests using University of Waterloo's `example data `__ using the 29 cities of `Western Sahara dataset `__" msgstr "" -msgid "Result columns standarized to: |nksp-result|" +msgid "Creating a table for the data and storing the data" msgstr "" -msgid "``pgr_ksp`` (One to One)" +msgid "Adding a geometry (for visual purposes)" msgstr "" -msgid "Added ``start_vid`` and ``end_vid`` result columns." +msgid "Total tour cost" msgstr "" -msgid "New overload functions:" +msgid "Getting a total cost of the tour, compare the value with the length of an optimal tour is 27603, given on the dataset" msgstr "" -msgid "``pgr_ksp`` (One to Many)" +msgid "Getting a geometry of the tour" msgstr "" -msgid "``pgr_ksp`` (Many to One)" +msgid "Visual results" msgstr "" -msgid "``pgr_ksp`` (Many to Many)" +msgid "Visualy, The first image is the `optimal solution `__ and the second image is the solution obtained with ``pgr_TSPeuclidean``." msgstr "" -msgid "``pgr_ksp`` (Combinations)" +msgid "``pgr_aStar``" msgstr "" -msgid "Version 2.1.0" +msgid "``pgr_aStar`` — Shortest path using the A* algorithm." msgstr "" -msgid "Signature change" +msgid "Combinations signature promoted to official." msgstr "" -msgid "Old signature no longer supported" +msgid "Standarizing output columns to |short-generic-result|" msgstr "" -msgid "Version 2.0.0" +msgid "pgr_aStar(One to One) added ``start_vid`` and ``end_vid`` columns." msgstr "" -msgid "**Official** function" +msgid "pgr_aStar(One to Many) added ``end_vid`` column." msgstr "" -msgid "The K shortest path routing algorithm based on Yen's algorithm. \"K\" is the number of shortest paths desired." +msgid "pgr_aStar(Many to One) added ``start_vid`` column." msgstr "" -msgid "Signatures" +msgid "Version 3.2.0" msgstr "" -msgid "Summary" +msgid "New proposed signature:" msgstr "" -msgid "pgr_KSP(`Edges SQL`_, **start vid**, **end vid**, **K**, [**options**])" +msgid "Function promoted to official." msgstr "" -msgid "pgr_KSP(`Edges SQL`_, **start vid**, **end vids**, **K**, [**options**])" +msgid "Version 2.4.0" msgstr "" -msgid "pgr_KSP(`Edges SQL`_, **start vids**, **end vid**, **K**, [**options**])" +msgid "pgr_aStar(One to Many)" msgstr "" -msgid "pgr_KSP(`Edges SQL`_, **start vids**, **end vids**, **K**, [**options**])" +msgid "pgr_aStar(Many to One)" msgstr "" -msgid "pgr_KSP(`Edges SQL`_, `Combinations SQL`_, **K**, [**options**])" +msgid "pgr_aStar(Many to Many)" msgstr "" -msgid "**options:** ``[directed, heap_paths]``" +msgid "Signature change on pgr_aStar(One to One)" msgstr "" -msgid "Returns set of |nksp-result|" +msgid "The results are equivalent to the union of the results of the `pgr_aStar(` `One to One`_ `)` on the:" msgstr "" -msgid "OR EMPTY SET" +msgid "pgr_aStar(`Edges SQL`_, **start vid**, **end vid**, [**options**])" msgstr "" -msgid "Example" +msgid "pgr_aStar(`Edges SQL`_, **start vid**, **end vids**, [**options**])" msgstr "" -msgid "Get 2 paths from :math:`6` to :math:`17` on a directed graph." +msgid "pgr_aStar(`Edges SQL`_, **start vids**, **end vid**, [**options**])" msgstr "" -msgid "Get 2 paths from vertex :math:`6` to vertices :math:`\\{10, 17\\}` on a directed graph." +msgid "pgr_aStar(`Edges SQL`_, **start vids**, **end vids**, [**options**])" msgstr "" -msgid "Get 2 paths from vertices :math:`\\{6, 1\\}` to vertex :math:`17` on a directed graph." +msgid "pgr_aStar(`Edges SQL`_, `Combinations SQL`_, [**options**])" msgstr "" -msgid "Get 2 paths vertices :math:`\\{6, 1\\}` to vertices :math:`\\{10, 17\\}` on a directed graph." +msgid "**options:** ``[directed, heuristic, factor, epsilon]``" msgstr "" -msgid "Using a combinations table on an directed graph" +msgid "Returns set of |short-generic-result|" msgstr "" -msgid "The combinations table:" +msgid "Optional parameters are `named parameters` and have a default value." msgstr "" -msgid "The query:" +msgid "From vertex :math:`6` to vertex :math:`12` on a **directed** graph with heuristic :math:`2`" msgstr "" -msgid "Identifier of the destination vertex." +msgid "From vertex :math:`6` to vertices :math:`\\{10, 12\\}` on a **directed** graph with heuristic :math:`3` and factor :math:`3.5`" msgstr "" -msgid "**K**" +msgid "From vertices :math:`\\{6, 8\\}` to vertex :math:`10` on an **undirected** graph with heuristic :math:`4`" msgstr "" -msgid "Number of required paths." +msgid "From vertices :math:`\\{6, 8\\}` to vertices :math:`\\{10, 12\\}` on a **directed** graph with factor :math:`0.5`" msgstr "" -msgid "KSP Optional parameters" +msgid "Using a combinations table on a **directed** graph with factor :math:`0.5`." msgstr "" -msgid "``heap_paths``" +msgid "Example 1" msgstr "" -msgid "When ``false`` Returns at most K paths." +msgid "Demonstration of repeated values are ignored, and result is sorted." msgstr "" -msgid "When ``true`` all the calculated paths while processing are returned." +msgid "Example 2" msgstr "" -msgid "Roughly, when the shortest path has ``N`` edges, the heap will contain about than ``N * K`` paths for small value of ``K`` and ``K > 5``." +msgid "Making **start vids** the same as **end vids**." msgstr "" -msgid "Has value **1** for the first of a path from ``start_vid`` to ``end_vid``" +msgid "Example 3" msgstr "" -msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``" +msgid "Manually assigned vertex combinations." msgstr "" -msgid ":math:`0` for the last ``node`` of the path." +msgid "``pgr_aStarCost``" msgstr "" -msgid "Aggregate cost from **start vid** to ``node``." +msgid "``pgr_aStarCost`` - Total cost of the shortest path using the A* algorithm." msgstr "" -msgid "Additional Examples" +msgid "New proposed function." msgstr "" -msgid "Get 2 paths from :math:`6` to :math:`17` on an undirected graph" +msgid "The ``pgr_aStarCost`` function sumarizes of the cost of the shortest path using the A* algorithm." msgstr "" -msgid "Also get the paths in the heap." +msgid "Let be the case the values returned are stored in a table, so the unique index would be the pair: `(start_vid, end_vid)`" msgstr "" -msgid "Get 2 paths using combinations table on an undirected graph" +msgid "For undirected graphs, the results are symmetric." msgstr "" -msgid "Get 2 paths from vertices :math:`\\{6, 1\\}` to vertex :math:`17` on a undirected graph." +msgid "The returned values are ordered in ascending order:" msgstr "" -msgid "https://en.wikipedia.org/wiki/K_shortest_path_routing" +msgid "`start_vid` ascending" msgstr "" -msgid "``pgr_TSP``" +msgid "`end_vid` ascending" msgstr "" -msgid "``pgr_TSP`` - Aproximation using *metric* algorithm." +msgid "pgr_aStarCost(`Edges SQL`_, **start vid**, **end vid**, [**options**])" msgstr "" -msgid "Availability:" +msgid "pgr_aStarCost(`Edges SQL`_, **start vid**, **end vids**, [**options**])" msgstr "" -msgid "Version 3.2.1" +msgid "pgr_aStarCost(`Edges SQL`_, **start vids**, **end vid**, [**options**])" msgstr "" -msgid "Metric Algorithm from `Boost library `__" +msgid "pgr_aStarCost(`Edges SQL`_, **start vids**, **end vids**, [**options**])" msgstr "" -msgid "Simulated Annealing Algorithm no longer supported" +msgid "pgr_aStarCost(`Edges SQL`_, `Combinations SQL`_, [**options**])" msgstr "" -msgid "The Simulated Annealing Algorithm related parameters are ignored: max_processing_time, tries_per_temperature, max_changes_per_temperature, max_consecutive_non_changes, initial_temperature, final_temperature, cooling_factor, randomize" +msgid "Returns set of |matrix-result|" msgstr "" -msgid "Version 2.3.0" +msgid "pgr_aStarCost(`Edges SQL`_, **start vids**, **end vids**, [options])" msgstr "" -msgid "Can be Used with :doc:`costMatrix-category` functions preferably with `directed => false`." +msgid "``pgr_aStarCostMatrix``" msgstr "" -msgid "With ``directed => false``" +msgid "``pgr_aStarCostMatrix`` - Calculates the a cost matrix using :doc:`pgr_aStar`." msgstr "" -msgid "Will generate a graph that:" +msgid "Using internaly the :doc:`pgr_aStar` algorithm" msgstr "" -msgid "is undirected" +msgid "Returns a cost matrix." msgstr "" -msgid "is fully connected (As long as the graph has one component)" +msgid "No ordering is performed" msgstr "" -msgid "all traveling costs on edges obey the triangle inequality." +msgid "let `v` and `u` are nodes on the graph:" msgstr "" -msgid "When ``start_vid = 0 OR end_vid = 0``" +msgid "when there is no path from `v` to `u`:" msgstr "" -msgid "The solutions generated is garanteed to be *twice as long as the optimal tour in the worst case*" +msgid "cost from `v` to `u` is :math:`\\inf`" msgstr "" -msgid "When ``start_vid != 0 AND end_vid != 0 AND start_vid != end_vid``" +msgid "when :math:`v = u` then" msgstr "" -msgid "It is **not garanteed** that the solution will be, in the worse case, twice as long as the optimal tour, due to the fact that `end_vid` is forced to be in a fixed position." +msgid "cost from `v` to `u` is :math:`0`" msgstr "" -msgid "With ``directed => true``" +msgid "When the graph is **undirected** the cost matrix is symmetric" msgstr "" -msgid "It is **not garanteed** that the solution will be, in the worse case, twice as long as the optimal tour" +msgid "pgr_aStarCostMatrix(`Edges SQL`_, **start vids**, [**options**])" msgstr "" -msgid "is directed" +msgid "Symmetric cost matrix for vertices :math:`\\{5, 6, 10, 15\\}` on an **undirected** graph using heuristic :math:`2`" msgstr "" -msgid "some (or all) traveling costs on edges might not obey the triangle inequality." +msgid "Use with :doc:`pgr_TSP`" msgstr "" -msgid "As an undirected graph is required, the directed graph is transformed as follows:" +msgid "``pgr_alphaShape``" msgstr "" -msgid "edges `(u, v)` and `(v, u)` is considered to be the same edge (denoted `(u, v)`" +msgid "``pgr_alphaShape`` — Polygon part of an alpha shape." msgstr "" -msgid "if ``agg_cost`` differs between one or more instances of edge `(u, v)`" +msgid "Breaking change on signature" msgstr "" -msgid "The minimum value of the ``agg_cost`` all instances of edge `(u, v)` is going to be considered as the ``agg_cost`` of edge `(u, v)`" +msgid "**Boost 1.54** & **Boost 1.55** are supported" msgstr "" -msgid "Some (or all) traveling costs on edges will still might not obey the triangle inequality." +msgid "**Boost 1.56+** is preferable" msgstr "" -msgid "When the data is incomplete, but it is a connected graph:" +msgid "Boost Geometry is stable on Boost 1.56" msgstr "" -msgid "the missing values will be calculated with dijkstra algorithm." +msgid "Added alpha argument with default 0 (use optimal value)" msgstr "" -msgid "pgr_TSP(`Matrix SQL`_, ``[start_id, end_id]``)" +msgid "Support to return multiple outer/inner ring" msgstr "" -msgid "Returns set of |tsp-result|" +msgid "Renamed from version 1.x" msgstr "" -msgid "OR EMTPY SET" +msgid "Support" msgstr "" -msgid "Using :doc:`pgr_dijkstraCostMatrix` to generate the matrix information" +msgid "Returns the polygon part of an alpha shape." msgstr "" -msgid "**Line 4** Vertices :math:`\\{2, 4, 13, 14\\}` are not included because they are not connected." +msgid "Input is a *geometry* and returns a *geometry*" msgstr "" -msgid "`Matrix SQL`_ as described below" +msgid "Uses PostGis ST_DelaunyTriangles" msgstr "" -msgid "``ANY-INTEGER``" +msgid "Instead of using CGAL's definition of `alpha` it use the ``spoon_radius``" msgstr "" -msgid "``ANY-NUMERICAL``" +msgid ":math:`spoon\\_radius = \\sqrt alpha`" msgstr "" -msgid "Cost for going from start_vid to end_vid" +msgid "A Triangle area is considered part of the alpha shape when :math:`circumcenter\\ radius < spoon\\_radius`" msgstr "" -msgid "Returns SET OF ``(seq, node, cost, agg_cost)``" +msgid "The ``alpha`` parameter is the **spoon radius**" msgstr "" -msgid "Row sequence." +msgid "When the total number of points is less than 3, returns an EMPTY geometry" msgstr "" -msgid "**node**" +msgid "pgr_alphaShape(**geometry**, [alpha])" msgstr "" -msgid "Identifier of the node/coordinate/point." +msgid "RETURNS ``geometry``" msgstr "" -msgid "Cost to traverse from the current ``node`` to the next ``node`` in the path sequence." +msgid "passing a geometry collection with spoon radius :math:`1.5` using the return variable ``geom``" msgstr "" -msgid "``0`` for the last row in the tour sequence." +msgid "**geometry**" msgstr "" -msgid "Aggregate cost from the ``node`` at ``seq = 1`` to the current node." +msgid "``geometry``" msgstr "" -msgid "``0`` for the first row in the tour sequence." +msgid "Geometry with at least :math:`3` points" msgstr "" -msgid "Start from vertex :math:`1`" +msgid "``alpha``" msgstr "" -msgid "**Line 6** ``start_vid => 1``" +msgid "The radius of the spoon." msgstr "" -msgid "Using points of interest to generate an asymetric matrix." +msgid "Return Value" msgstr "" -msgid "To generate an asymmetric matrix:" +msgid "Kind of geometry" msgstr "" -msgid "**Line 4** The ``side`` information of ``pointsOfInterset`` is ignored by not including it in the query" +msgid "GEOMETRY COLLECTION" msgstr "" -msgid "**Line 6** Generating an asymetric matrix with ``directed => true``" +msgid "A Geometry collection of Polygons" msgstr "" -msgid ":math:`min(agg\\_cost(u, v), agg\\_cost(v, u))` is going to be considered as the ``agg_cost``" +msgid ":doc:`pgr_drivingDistance`" msgstr "" -msgid "The solution that can be larger than *twice as long as the optimal tour* because:" +msgid "`ST_ConcaveHull `__" msgstr "" -msgid "Triangle inequality might not be satisfied." +msgid "``pgr_analyzeGraph``" msgstr "" -msgid "``start_id != 0 AND end_id != 0``" +msgid "``pgr_analyzeGraph`` — Analyzes the network topology." msgstr "" -msgid "Connected incomplete data" +msgid "The function returns:" msgstr "" -msgid "Using selected edges :math:`\\{2, 4, 5, 8, 9, 15\\}` the matrix is not complete." +msgid "``OK`` after the analysis has finished." msgstr "" -msgid "Cost value for :math:`17 \\rightarrow 10` do not exist on the matrix, but the value used is taken from :math:`10 \\rightarrow 17`." +msgid "``FAIL`` when the analysis was not completed due to an error." msgstr "" -msgid "``pgr_TSPeuclidean``" +msgid "pgr_analyzeGraph(**edge_table**, **tolerance**, [**options**])" msgstr "" -msgid "``pgr_TSPeuclidean`` - Aproximation using *metric* algorithm." +msgid "**options:** ``[the_geom, id, source, target, rows_where]``" msgstr "" -msgid "The Simulated Annealing Algorithm related parameters are ignored: `max_processing_time`, `tries_per_temperature`, `max_changes_per_temperature`, `max_consecutive_non_changes`, `initial_temperature`, `final_temperature`, `cooling_factor`, `randomize`" +msgid "RETURNS ``VARCHAR``" msgstr "" -msgid "Version 3.0.0" +msgid "Prerequisites" msgstr "" -msgid "Name change from pgr_eucledianTSP" +msgid "The edge table to be analyzed must contain a source column and a target column filled with id's of the vertices of the segments and the corresponding vertices table _vertices_pgr that stores the vertices information." msgstr "" -msgid "New **Official** function" +msgid "Use :doc:`pgr_createVerticesTable` to create the vertices table." msgstr "" -msgid "Any duplicated identifier will be ignored. The coordinates that will be kept" +msgid "Use :doc:`pgr_createTopology` to create the topology and the vertices table." msgstr "" -msgid "is arbitrarly." +msgid "The analyze graph function accepts the following parameters:" msgstr "" -msgid "The coordinates are quite similar for the same identifier, for example ::" +msgid "edge_table" msgstr "" -msgid "The coordinates are quite different for the same identifier, for example ::" +msgid "``text`` Network table name. (may contain the schema name as well)" msgstr "" -msgid "pgr_TSPeuclidean(`Coordinates SQL`_, ``[start_id, end_id]``)" +msgid "tolerance" msgstr "" -msgid "With default values" +msgid "``float8`` Snapping tolerance of disconnected edges. (in projection unit)" msgstr "" -msgid "`Coordinates SQL`_" +msgid "the_geom" msgstr "" -msgid "`Coordinates SQL`_ as described below" +msgid "``text`` Geometry column name of the network table. Default value is ``the_geom``." msgstr "" -msgid "Coordinates SQL" +msgid "id" msgstr "" -msgid "``x``" +msgid "``text`` Primary key column name of the network table. Default value is ``id``." msgstr "" -msgid "X value of the coordinate." +msgid "source" msgstr "" -msgid "``y``" +msgid "``text`` Source column name of the network table. Default value is ``source``." msgstr "" -msgid "Y value of the coordinate." +msgid "target" msgstr "" -msgid "Test 29 cities of Western Sahara" +msgid "``text`` Target column name of the network table. Default value is ``target``." msgstr "" -msgid "This example shows how to make performance tests using University of Waterloo's `example data `__ using the 29 cities of `Western Sahara dataset `__" +msgid "rows_where" msgstr "" -msgid "Creating a table for the data and storing the data" +msgid "``text`` Condition to select a subset or rows. Default value is ``true`` to indicate all rows." msgstr "" -msgid "Adding a geometry (for visual purposes)" +msgid "Uses the vertices table: _vertices_pgr." msgstr "" -msgid "Total tour cost" +msgid "Fills completely the ``cnt`` and ``chk`` columns of the vertices table." msgstr "" -msgid "Getting a total cost of the tour, compare the value with the length of an optimal tour is 27603, given on the dataset" +msgid "Returns the analysis of the section of the network defined by ``rows_where``" msgstr "" -msgid "Getting a geometry of the tour" +msgid "The vertices table is not found." msgstr "" -msgid "Visual results" +msgid "A required column of the Network table is not found or is not of the appropriate type." msgstr "" -msgid "Visualy, The first image is the `optimal solution `__ and the second image is the solution obtained with ``pgr_TSPeuclidean``." +msgid "The condition is not well formed." msgstr "" -msgid ":doc:`sampledata` network." +msgid "The names of source , target or id are the same." msgstr "" -msgid "``pgr_aStar``" +msgid "The SRID of the geometry could not be determined." msgstr "" -msgid "``pgr_aStar`` — Shortest path using the A* algorithm." +msgid "The Vertices Table" msgstr "" -msgid "Standarizing output columns to |short-generic-result|" +msgid "The vertices table can be created with :doc:`pgr_createVerticesTable ` or :doc:`pgr_createTopology `" msgstr "" -msgid "``pgr_aStar`` (`One to One`_) added ``start_vid`` and ``end_vid`` columns." +msgid "The structure of the vertices table is:" msgstr "" -msgid "``pgr_aStar`` (`One to Many`_) added ``end_vid`` column." +msgid "``bigint`` Identifier of the vertex." msgstr "" -msgid "``pgr_aStar`` (`Many to One`_) added ``start_vid`` column." +msgid "cnt" msgstr "" -msgid "Version 3.2.0" +msgid "``integer`` Number of vertices in the edge_table that reference this vertex." msgstr "" -msgid "New **proposed** signature:" +msgid "chk" msgstr "" -msgid "``pgr_aStar`` (`Combinations`_)" +msgid "``integer`` Indicator that the vertex might have a problem." msgstr "" -msgid "Version 2.4.0" +msgid "ein" msgstr "" -msgid "New **Proposed** signatures:" +msgid "``integer`` Number of vertices in the edge_table that reference this vertex as incoming. See :doc:`pgr_analyzeOneWay `." msgstr "" -msgid "``pgr_aStar`` (`One to Many`_)" +msgid "eout" msgstr "" -msgid "``pgr_aStar`` (`Many to One`_)" +msgid "``integer`` Number of vertices in the edge_table that reference this vertex as outgoing. See :doc:`pgr_analyzeOneWay `." msgstr "" -msgid "``pgr_aStar`` (`Many to Many`_)" +msgid "``geometry`` Point geometry of the vertex." msgstr "" -msgid "Signature change on ``pgr_astar`` (`One to One`_)" +msgid "Usage when the edge table's columns MATCH the default values:" msgstr "" -msgid "**Official** ``pgr_aStar`` (`One to One`_)" +msgid "The simplest way to use pgr_analyzeGraph is:" msgstr "" -msgid "The results are equivalent to the union of the results of the `pgr_aStar(` `One to One`_ `)` on the:" +msgid "Arguments are given in the order described in the parameters:" msgstr "" -msgid "pgr_aStar(`Edges SQL`_, **start vid**, **end vid**, [**options**])" +msgid "We get the same result as the simplest way to use the function." msgstr "" -msgid "pgr_aStar(`Edges SQL`_, **start vid**, **end vids**, [**options**])" +msgid "An error would occur when" msgstr "" -msgid "pgr_aStar(`Edges SQL`_, **start vids**, **end vid**, [**options**])" +msgid "the arguments are not given in the appropriate order:" msgstr "" -msgid "pgr_aStar(`Edges SQL`_, **start vids**, **end vids**, [**options**])" +msgid "In this example, the column ``id`` of the table ``mytable`` is passed to the function as the geometry column, and the geometry column ``the_geom`` is passed to the function as the id column." msgstr "" -msgid "pgr_aStar(`Edges SQL`_, `Combinations SQL`_, [**options**])" +msgid "When using the named notation" msgstr "" -msgid "**options:** ``[directed, heuristic, factor, epsilon]``" +msgid "The order of the parameters do not matter:" msgstr "" -msgid "Returns set of |short-generic-result|" +msgid "Parameters defined with a default value can be omitted, as long as the value matches the default:" msgstr "" -msgid "Optional parameters are `named parameters` and have a default value." +msgid "Selecting rows using rows_where parameter" msgstr "" -msgid "From vertex :math:`6` to vertex :math:`12` on a **directed** graph with heuristic :math:`2`" +msgid "Selecting rows based on the id. Displays the analysis a the section of the network." msgstr "" -msgid "From vertex :math:`6` to vertices :math:`\\{10, 12\\}` on a **directed** graph with heuristic :math:`3` and factor :math:`3.5`" +msgid "Selecting the rows where the geometry is near the geometry of row with ``id`` = 5" msgstr "" -msgid "From vertices :math:`\\{6, 8\\}` to vertex :math:`10` on an **undirected** graph with heuristic :math:`4`" +msgid "Selecting the rows where the geometry is near the geometry of the row with ``gid`` =100 of the table ``othertable``." msgstr "" -msgid "From vertices :math:`\\{6, 8\\}` to vertices :math:`\\{10, 12\\}` on a **directed** graph with factor :math:`0.5`" +msgid "Usage when the edge table's columns DO NOT MATCH the default values:" msgstr "" -msgid "Using a combinations table on a **directed** graph with factor :math:`0.5`." +msgid "For the following table" msgstr "" -msgid "Example 1" +msgid "Using positional notation:" msgstr "" -msgid "Demonstration of repeated values are ignored, and result is sorted." +msgid "The arguments need to be given in the order described in the parameters:" msgstr "" -msgid "Example 2" +msgid "An error would occur when the arguments are not given in the appropriate order: In this example, the column ``gid`` of the table ``mytable`` is passed to the function as the geometry column, and the geometry column ``mygeom`` is passed to the function as the id column." msgstr "" -msgid "Making **start vids** the same as **end vids**." +msgid "In this scenario omitting a parameter would create an error because the default values for the column names do not match the column names of the table." msgstr "" -msgid "Example 3" +msgid "Selecting rows based on the id." msgstr "" -msgid "Manually assigned vertex combinations." +msgid "Selecting the rows WHERE the geometry is near the geometry of row with ``id`` =5 ." msgstr "" -msgid "pgr_aStarCost" +msgid "Selecting the rows WHERE the geometry is near the place='myhouse' of the table ``othertable``. (note the use of quote_literal)" msgstr "" -msgid "``pgr_aStarCost`` - Total cost of the shortest path using the A* algorithm." +msgid ":doc:`pgr_analyzeOneWay`" msgstr "" -msgid "``pgr_aStarCost`` (`Combinations`_)" +msgid ":doc:`pgr_createVerticesTable`" msgstr "" -msgid "New **proposed** function" +msgid ":doc:`pgr_nodeNetwork` to create nodes to a not noded edge table." msgstr "" -msgid "The ``pgr_aStarCost`` function sumarizes of the cost of the shortest path using the A* algorithm." +msgid "``pgr_analyzeOneWay``" msgstr "" -msgid "Let be the case the values returned are stored in a table, so the unique index would be the pair: `(start_vid, end_vid)`" +msgid "``pgr_analyzeOneWay`` — Analyzes oneway Sstreets and identifies flipped segments." msgstr "" -msgid "For undirected graphs, the results are symmetric." +msgid "This function analyzes oneway streets in a graph and identifies any flipped segments." msgstr "" -msgid "The returned values are ordered in ascending order:" +msgid "The analyses of one way segments is pretty simple but can be a powerful tools to identifying some the potential problems created by setting the direction of a segment the wrong way. A node is a `source` if it has edges the exit from that node and no edges enter that node. Conversely, a node is a `sink` if all edges enter the node but none exit that node. For a `source` type node it is logically impossible to exist because no vehicle can exit the node if no vehicle and enter the node. Likewise, if you had a `sink` node you would have an infinite number of vehicle piling up on this node because you can enter it but not leave it." msgstr "" -msgid "`start_vid` ascending" +msgid "So why do we care if the are not feasible? Well if the direction of an edge was reversed by mistake we could generate exactly these conditions. Think about a divided highway and on the north bound lane one segment got entered wrong or maybe a sequence of multiple segments got entered wrong or maybe this happened on a round-about. The result would be potentially a `source` and/or a `sink` node." msgstr "" -msgid "`end_vid` ascending" +msgid "So by counting the number of edges entering and exiting each node we can identify both `source` and `sink` nodes so that you can look at those areas of your network to make repairs and/or report the problem back to your data vendor." msgstr "" -msgid "pgr_aStarCost(`Edges SQL`_, **start vid**, **end vid**, [**options**])" +msgid "pgr_analyzeOneWay(**geom_table**, **s_in_rules**, **s_out_rules**, **t_in_rules**, **t_out_rules**, [**options**])" msgstr "" -msgid "pgr_aStarCost(`Edges SQL`_, **start vid**, **end vids**, [**options**])" +msgid "**options:** ``[oneway, source, target, two_way_if_null]``" msgstr "" -msgid "pgr_aStarCost(`Edges SQL`_, **start vids**, **end vid**, [**options**])" +msgid "RETURNS ``TEXT``" msgstr "" -msgid "pgr_aStarCost(`Edges SQL`_, **start vids**, **end vids**, [**options**])" +msgid "s_in_rules" msgstr "" -msgid "pgr_aStarCost(`Edges SQL`_, `Combinations SQL`_, [**options**])" +msgid "``text[]`` source node **in** rules" msgstr "" -msgid "Returns set of |matrix-result|" +msgid "s_out_rules" msgstr "" -msgid "pgr_aStarCost(`Edges SQL`_, **start vids**, **end vids**, [options])" +msgid "``text[]`` source node **out** rules" msgstr "" -msgid "``pgr_aStarCostMatrix``" +msgid "t_in_rules" msgstr "" -msgid "``pgr_aStarCostMatrix`` - Calculates the a cost matrix using :doc:`pgr_aStar`." +msgid "``text[]`` target node **in** rules" msgstr "" -msgid "Using internaly the :doc:`pgr_aStar` algorithm" +msgid "t_out_rules" msgstr "" -msgid "Returns a cost matrix." +msgid "``text[]`` target node **out** rules" msgstr "" -msgid "No ordering is performed" +msgid "oneway" msgstr "" -msgid "let `v` and `u` are nodes on the graph:" +msgid "``text`` oneway column name name of the network table. Default value is ``oneway``." msgstr "" -msgid "when there is no path from `v` to `u`:" +msgid "two_way_if_null" msgstr "" -msgid "cost from `v` to `u` is :math:`\\inf`" +msgid "``boolean`` flag to treat oneway NULL values as bi-directional. Default value is ``true``." msgstr "" -msgid "when :math:`v = u` then" +msgid "It is strongly recommended to use the named notation. See :doc:`pgr_createVerticesTable` or :doc:`pgr_createTopology` for examples." msgstr "" -msgid "cost from `v` to `u` is :math:`0`" +msgid "Fills completely the ``ein`` and ``eout`` columns of the vertices table." msgstr "" -msgid "When the graph is **undirected** the cost matrix is symmetric" +msgid "The names of source , target or oneway are the same." msgstr "" -msgid "pgr_aStarCostMatrix(`Edges SQL`_, **start vids**, [**options**])" +msgid "The rules are defined as an array of text strings that if match the ``oneway`` value would be counted as ``true`` for the source or target **in** or **out** condition." msgstr "" -msgid "Symmetric cost matrix for vertices :math:`\\{5, 6, 10, 15\\}` on an **undirected** graph using heuristic :math:`2`" +msgid "The vertices table can be created with :doc:`pgr_createVerticesTable` or :doc:`pgr_createTopology`" msgstr "" -msgid "Use with :doc:`pgr_TSP`" +msgid "``integer`` Number of vertices in the edge_table that reference this vertex. See :doc:`pgr_analyzeGgraph `." msgstr "" -msgid "``pgr_alphaShape``" +msgid "``integer`` Indicator that the vertex might have a problem. See :doc:`pgr_analyzeGraph `." msgstr "" -msgid "``pgr_alphaShape`` — Polygon part of an alpha shape." +msgid "``integer`` Number of vertices in the edge_table that reference this vertex as incoming." msgstr "" -msgid "Breaking change on signature" +msgid "``integer`` Number of vertices in the edge_table that reference this vertex as outgoing." msgstr "" -msgid "**Boost 1.54** & **Boost 1.55** are supported" +msgid ":doc:`pgr_analyzeGraph`" msgstr "" -msgid "**Boost 1.56+** is preferable" +msgid "``pgr_articulationPoints``" msgstr "" -msgid "Boost Geometry is stable on Boost 1.56" +msgid "``pgr_articulationPoints`` - Return the articulation points of an undirected graph." msgstr "" -msgid "Added alpha argument with default 0 (use optimal value)" +msgid "Result columns change: ``seq`` is removed" msgstr "" -msgid "Support to return multiple outer/inner ring" +msgid "Version 2.5.0" msgstr "" -msgid "Renamed from version 1.x" +msgid "New experimental function." msgstr "" -msgid "Returns the polygon part of an alpha shape." +msgid "Those vertices that belong to more than one biconnected component are called articulation points or, equivalently, cut vertices. Articulation points are vertices whose removal would increase the number of connected components in the graph. This implementation can only be used with an undirected graph." msgstr "" -msgid "Input is a *geometry* and returns a *geometry*" +msgid "Works for **undirected** graphs." msgstr "" -msgid "Uses PostGis ST_DelaunyTriangles" +msgid "``node`` ascending" msgstr "" -msgid "Instead of using CGAL's definition of `alpha` it use the ``spoon_radius``" +msgid "Running time: :math:`O(V + E)`" msgstr "" -msgid ":math:`spoon\\_radius = \\sqrt alpha`" +msgid "pgr_articulationPoints(`Edges SQL`_)" msgstr "" -msgid "A Triangle area is considered part of the alpha shape when :math:`circumcenter\\ radius < spoon\\_radius`" +msgid "Returns set of |result-node|" msgstr "" -msgid "The ``alpha`` parameter is the **spoon radius**" +msgid "The articulation points of the graph" msgstr "" -msgid "When the total number of points is less than 3, returns an EMPTY geometry" +msgid "Nodes in red are the articulation points." msgstr "" -msgid "pgr_alphaShape(**geometry**, [alpha])" +msgid "`Boost: Biconnected components & articulation points `__" msgstr "" -msgid "RETURNS ``geometry``" +msgid "wikipedia: `Biconnected component `__" msgstr "" -msgid "passing a geometry collection with spoon radius :math:`1.5` using the return variable ``geom``" +msgid "``pgr_bdAstar``" msgstr "" -msgid "**geometry**" +msgid "``pgr_bdAstar`` — Shortest path using the bidirectional A* algorithm." msgstr "" -msgid "``geometry``" +msgid "pgr_bdAstar(One to One) added ``start_vid`` and ``end_vid`` columns." msgstr "" -msgid "Geometry with at least :math:`3` points" +msgid "pgr_bdAstar(One to Many) added ``end_vid`` column." msgstr "" -msgid "``alpha``" +msgid "pgr_bdAstar(Many to One) added ``start_vid`` column." msgstr "" -msgid "The radius of the spoon." +msgid "pgr_bdAstar(One to Many)" msgstr "" -msgid "Return Value" +msgid "pgr_bdAstar(Many to One)" msgstr "" -msgid "Kind of geometry" +msgid "pgr_bdAstar(Many to Many)" msgstr "" -msgid "GEOMETRY COLLECTION" +msgid "Signature change on pgr_bdAstar(One to One)" msgstr "" -msgid "A Geometry collection of Polygons" +msgid "The results are equivalent to the union of the results of the pgr_bdAStar(One to One) on the:" msgstr "" -msgid ":doc:`pgr_drivingDistance`" +msgid "pgr_bdAstar(`Edges SQL`_, **start vid**, **end vid**, [**options**])" msgstr "" -msgid "`ST_ConcaveHull `__" +msgid "pgr_bdAstar(`Edges SQL`_, **start vid**, **end vids**, [**options**])" msgstr "" -msgid "pgr_analyzeGraph" +msgid "pgr_bdAstar(`Edges SQL`_, **start vids**, **end vid**, [**options**])" msgstr "" -msgid "``pgr_analyzeGraph`` — Analyzes the network topology." +msgid "pgr_bdAstar(`Edges SQL`_, **start vids**, **end vids**, [**options**])" msgstr "" -msgid "The function returns:" +msgid "pgr_bdAstar(`Edges SQL`_, `Combinations SQL`_, [**options**])" msgstr "" -msgid "``OK`` after the analysis has finished." +msgid "``pgr_bdAstarCost``" msgstr "" -msgid "``FAIL`` when the analysis was not completed due to an error." +msgid "``pgr_bdAstarCost`` - Total cost of the shortest path using the bidirectional A* algorithm." msgstr "" -msgid "pgr_analyzeGraph(**edge_table**, **tolerance**, [**options**])" +msgid "The ``pgr_bdAstarCost`` function sumarizes of the cost of the shortest path using the bidirectional A* algorithm." msgstr "" -msgid "**options:** ``[the_geom, id, source, target, rows_where]``" +msgid "pgr_bdAstarCost(`Edges SQL`_, **start vid**, **end vid**, [**options**])" msgstr "" -msgid "RETURNS ``VARCHAR``" +msgid "pgr_bdAstarCost(`Edges SQL`_, **start vid**, **end vids**, [**options**])" msgstr "" -msgid "Prerequisites" +msgid "pgr_bdAstarCost(`Edges SQL`_, **start vids**, **end vid**, [**options**])" msgstr "" -msgid "The edge table to be analyzed must contain a source column and a target column filled with id's of the vertices of the segments and the corresponding vertices table _vertices_pgr that stores the vertices information." +msgid "pgr_bdAstarCost(`Edges SQL`_, **start vids**, **end vids**, [**options**])" msgstr "" -msgid "Use :doc:`pgr_createVerticesTable` to create the vertices table." +msgid "pgr_bdAstarCost(`Edges SQL`_, `Combinations SQL`_, [**options**])" msgstr "" -msgid "Use :doc:`pgr_createTopology` to create the topology and the vertices table." +msgid "``pgr_bdAstarCostMatrix``" msgstr "" -msgid "The analyze graph function accepts the following parameters:" +msgid "``pgr_bdAstarCostMatrix`` - Calculates the a cost matrix using :doc:`pgr_aStar`." msgstr "" -msgid "edge_table" +msgid "Using internaly the :doc:`pgr_bdAstar` algorithm" msgstr "" -msgid "``text`` Network table name. (may contain the schema name as well)" +msgid "pgr_bdAstarCostMatrix(`Edges SQL`_, **start vids**, [**options**])" msgstr "" -msgid "tolerance" +msgid "``pgr_bdDijkstra``" msgstr "" -msgid "``float8`` Snapping tolerance of disconnected edges. (in projection unit)" +msgid "``pgr_bdDijkstra`` — Returns the shortest path using Bidirectional Dijkstra algorithm." msgstr "" -msgid "the_geom" +msgid "pgr_bdDijkstra(One to Many)" msgstr "" -msgid "``text`` Geometry column name of the network table. Default value is ``the_geom``." +msgid "pgr_bdDijkstra(Many to One)" msgstr "" -msgid "id" +msgid "pgr_bdDijkstra(Many to Many)" msgstr "" -msgid "``text`` Primary key column name of the network table. Default value is ``id``." +msgid "Signature change on pgr_bdDijsktra(One to One)" msgstr "" -msgid "source" +msgid "pgr_bdDijkstra(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" msgstr "" -msgid "``text`` Source column name of the network table. Default value is ``source``." +msgid "pgr_bdDijkstra(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" msgstr "" -msgid "target" +msgid "pgr_bdDijkstra(`Edges SQL`_, **start vids**, **end vid**, [``directed``])" msgstr "" -msgid "``text`` Target column name of the network table. Default value is ``target``." +msgid "pgr_bdDijkstra(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" msgstr "" -msgid "rows_where" +msgid "pgr_bdDijkstra(`Edges SQL`_, `Combinations SQL`_, [``directed``])" msgstr "" -msgid "``text`` Condition to select a subset or rows. Default value is ``true`` to indicate all rows." +msgid "Returns set of |old-generic-result|" msgstr "" -msgid "Uses the vertices table: _vertices_pgr." +msgid "Returns set of |result-1-1|" msgstr "" -msgid "Fills completely the ``cnt`` and ``chk`` columns of the vertices table." +msgid "From vertex :math:`6` to vertex :math:`10` on a **directed** graph" msgstr "" -msgid "Returns the analysis of the section of the network defined by ``rows_where``" +msgid "Returns set of |result-1-m|" msgstr "" -msgid "The vertices table is not found." +msgid "From vertex :math:`6` to vertices :math:`\\{10, 17\\}` on a **directed** graph" msgstr "" -msgid "A required column of the Network table is not found or is not of the appropriate type." +msgid "Returns set of |result-m-1|" msgstr "" -msgid "The condition is not well formed." +msgid "From vertices :math:`\\{6, 1\\}` to vertex :math:`17` on a **directed** graph" msgstr "" -msgid "The names of source , target or id are the same." +msgid "From vertices :math:`\\{6, 1\\}` to vertices :math:`\\{10, 17\\}` on an **undirected** graph" msgstr "" -msgid "The SRID of the geometry could not be determined." +msgid "Using a combinations table on an **undirected** graph" msgstr "" -msgid "The Vertices Table" +msgid "https://en.wikipedia.org/wiki/Bidirectional_search" msgstr "" -msgid "The vertices table can be created with :doc:`pgr_createVerticesTable ` or :doc:`pgr_createTopology `" +msgid "``pgr_bdDijkstraCost``" msgstr "" -msgid "The structure of the vertices table is:" +msgid "``pgr_bdDijkstraCost`` — Returns the shortest path's cost using Bidirectional Dijkstra algorithm." msgstr "" -msgid "``bigint`` Identifier of the vertex." +msgid "The ``pgr_bdDijkstraCost`` function sumarizes of the cost of the shortest path using the bidirectional Dijkstra Algorithm." msgstr "" -msgid "cnt" +msgid "pgr_bdDijkstraCost(`Edges SQL`_, **start vid**, **end vid** , [``directed``])" msgstr "" -msgid "``integer`` Number of vertices in the edge_table that reference this vertex." +msgid "pgr_bdDijkstraCost(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" msgstr "" -msgid "chk" +msgid "pgr_bdDijkstraCost(`Edges SQL`_, **start vids**, **end vid** , [``directed``])" msgstr "" -msgid "``integer`` Indicator that the vertex might have a problem." +msgid "pgr_bdDijkstraCost(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" msgstr "" -msgid "ein" +msgid "pgr_bdDijkstraCost(`Edges SQL`_, `Combinations SQL`_, [ ``directed``])" msgstr "" -msgid "``integer`` Number of vertices in the edge_table that reference this vertex as incoming. See :doc:`pgr_analyzeOneWay `." +msgid "pgr_bdDijkstraCost(`Edges SQL`_, `Combinations SQL`_, [``directed``])" msgstr "" -msgid "eout" +msgid "``pgr_bdDijkstraCostMatrix``" msgstr "" -msgid "``integer`` Number of vertices in the edge_table that reference this vertex as outgoing. See :doc:`pgr_analyzeOneWay `." +msgid "``pgr_bdDijkstraCostMatrix`` - Calculates a cost matrix using :doc:`pgr_bdDijkstra`." msgstr "" -msgid "``geometry`` Point geometry of the vertex." +msgid "Using bidirectional Dijkstra algorithm, calculate and return a cost matrix." msgstr "" -msgid "Usage when the edge table's columns MATCH the default values:" +msgid "pgr_bdDijkstraCostMatrix(`Edges SQL`_, **start vids**, [``directed``])" msgstr "" -msgid "The simplest way to use pgr_analyzeGraph is:" +msgid "Symmetric cost matrix for vertices :math:`\\{5, 6, 10, 15\\}` on an **undirected** graph" msgstr "" -msgid "Arguments are given in the order described in the parameters:" +msgid "Use with :doc:`pgr_TSP`." msgstr "" -msgid "We get the same result as the simplest way to use the function." +msgid "``pgr_bellmanFord - Experimental``" msgstr "" -msgid "An error would occur when" +msgid "``pgr_bellmanFord`` — Shortest path using Bellman-Ford algorithm." msgstr "" -msgid "the arguments are not given in the appropriate order:" +msgid "New experimental signature:" msgstr "" -msgid "In this example, the column ``id`` of the table ``mytable`` is passed to the function as the geometry column, and the geometry column ``the_geom`` is passed to the function as the id column." +msgid "pgr_bellmanFord(Combinations)" msgstr "" -msgid "When using the named notation" +msgid "Bellman-Ford's algorithm, is named after Richard Bellman and Lester Ford, who first published it in 1958 and 1956, respectively.It is a graph search algorithm that computes shortest paths from a starting vertex (``start_vid``) to an ending vertex (``end_vid``) in a graph where some of the edge weights may be negative. Though it is more versatile, it is slower than Dijkstra's algorithm.This implementation can be used with a directed graph and an undirected graph." msgstr "" -msgid "The order of the parameters do not matter:" +msgid "Process is valid for edges with both positive and negative edge weights." msgstr "" -msgid "Parameters defined with a default value can be omitted, as long as the value matches the default:" +msgid "When the start vertex and the end vertex are the same, there is no path. The agg_cost would be :math:`0`." msgstr "" -msgid "Selecting rows using rows_where parameter" +msgid "When the start vertex and the end vertex are different, and there exists a path between them without having a *negative cycle*. The agg_cost would be some finite value denoting the shortest distance between them." msgstr "" -msgid "Selecting rows based on the id. Displays the analysis a the section of the network." +msgid "When the start vertex and the end vertex are different, and there exists a path between them, but it contains a *negative cycle*. In such case, agg_cost for those vertices keep on decreasing furthermore, Hence agg_cost can’t be defined for them." msgstr "" -msgid "Selecting the rows where the geometry is near the geometry of row with ``id`` = 5" +msgid "When the start vertex and the end vertex are different, and there is no path. The agg_cost is :math:`\\infty`." msgstr "" -msgid "Selecting the rows where the geometry is near the geometry of the row with ``gid`` =100 of the table ``othertable``." +msgid "For optimization purposes, any duplicated value in the `start_vids` or `end_vids` are ignored." msgstr "" -msgid "Usage when the edge table's columns DO NOT MATCH the default values:" +msgid "Running time: :math:`O(| start\\_vids | * ( V * E))`" msgstr "" -msgid "For the following table" +msgid "pgr_bellmanFord(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" msgstr "" -msgid "Using positional notation:" +msgid "pgr_bellmanFord(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" msgstr "" -msgid "The arguments need to be given in the order described in the parameters:" +msgid "pgr_bellmanFord(`Edges SQL`_, **start vids**, **end vid**, [``directed``])" msgstr "" -msgid "An error would occur when the arguments are not given in the appropriate order: In this example, the column ``gid`` of the table ``mytable`` is passed to the function as the geometry column, and the geometry column ``mygeom`` is passed to the function as the id column." +msgid "pgr_bellmanFord(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" msgstr "" -msgid "In this scenario omitting a parameter would create an error because the default values for the column names do not match the column names of the table." +msgid "pgr_bellmanFord(`Edges SQL`_, `Combinations SQL`_, [``directed``])" msgstr "" -msgid "Selecting rows based on the id." +msgid "From vertex :math:`6` to vertices :math:`\\{ 10, 17\\}` on a **directed** graph" msgstr "" -msgid "Selecting the rows WHERE the geometry is near the geometry of row with ``id`` =5 ." +msgid "Using a combinations table on an **undirected** graph." msgstr "" -msgid "Selecting the rows WHERE the geometry is near the place='myhouse' of the table ``othertable``. (note the use of quote_literal)" +msgid "`Boost: Bellman Ford `__" msgstr "" -msgid "The examples use the :doc:`sampledata` network." +msgid "https://en.wikipedia.org/wiki/Bellman%E2%80%93Ford_algorithm" msgstr "" -msgid ":doc:`pgr_analyzeOneWay`" +msgid "``pgr_betweennessCentrality`` - Experimental" msgstr "" -msgid ":doc:`pgr_createVerticesTable`" +msgid "``pgr_betweennessCentrality`` - Calculates the relative betweenness centrality using Brandes Algorithm" msgstr "" -msgid ":doc:`pgr_nodeNetwork` to create nodes to a not noded edge table." +msgid "Version 3.7.0" msgstr "" -msgid "pgr_analyzeOneWay" +msgid "The Brandes Algorithm takes advantage of the sparse graphs for evaluating the betweenness centrality score of all vertices." msgstr "" -msgid "``pgr_analyzeOneWay`` — Analyzes oneway Sstreets and identifies flipped segments." +msgid "Betweenness centrality measures the extent to which a vertex lies on the shortest paths between all other pairs of vertices. Vertices with a high betweenness centrality score may have considerable influence in a network by the virtue of their control over the shortest paths passing between them." msgstr "" -msgid "This function analyzes oneway streets in a graph and identifies any flipped segments." +msgid "The removal of these vertices will affect the network by disrupting the it, as most of the shortest paths between vertices pass through them." msgstr "" -msgid "The analyses of one way segments is pretty simple but can be a powerful tools to identifying some the potential problems created by setting the direction of a segment the wrong way. A node is a `source` if it has edges the exit from that node and no edges enter that node. Conversely, a node is a `sink` if all edges enter the node but none exit that node. For a `source` type node it is logically impossible to exist because no vehicle can exit the node if no vehicle and enter the node. Likewise, if you had a `sink` node you would have an infinite number of vehicle piling up on this node because you can enter it but not leave it." +msgid "This implementation work for both directed and undirected graphs." msgstr "" -msgid "So why do we care if the are not feasible? Well if the direction of an edge was reversed by mistake we could generate exactly these conditions. Think about a divided highway and on the north bound lane one segment got entered wrong or maybe a sequence of multiple segments got entered wrong or maybe this happened on a round-about. The result would be potentially a `source` and/or a `sink` node." +msgid "Running time: :math:`\\Theta(VE)`" msgstr "" -msgid "So by counting the number of edges entering and exiting each node we can identify both `source` and `sink` nodes so that you can look at those areas of your network to make repairs and/or report the problem back to your data vendor." +msgid "Running space: :math:`\\Theta(VE)`" msgstr "" -msgid "pgr_analyzeOneWay(**geom_table**, **s_in_rules**, **s_out_rules**, **t_in_rules**, **t_out_rules**, [**options**])" +msgid "Throws when there are no edges in the graph" msgstr "" -msgid "**options:** ``[oneway, source, target, two_way_if_null]``" +msgid "pgr_betweennessCentrality(`Edges SQL`_, [``directed``])" msgstr "" -msgid "RETURNS ``TEXT``" +msgid "Returns set of ``(vid, centrality)``" msgstr "" -msgid "s_in_rules" +msgid "For a directed graph with edges :math:`\\{1, 2, 3, 4\\}`." msgstr "" -msgid "``text[]`` source node **in** rules" +msgid "Explanation" msgstr "" -msgid "s_out_rules" +msgid "The betweenness centrality are between parenthesis." msgstr "" -msgid "``text[]`` source node **out** rules" +msgid "The leaf vertices have betweenness centrality :math:`0`." msgstr "" -msgid "t_in_rules" +msgid "Betweenness centrality of vertex :math:`6` is higher than of vertex :math:`10`." msgstr "" -msgid "``text[]`` target node **in** rules" +msgid "Removing vertex :math:`6` will create three graph components." msgstr "" -msgid "t_out_rules" +msgid "Removing vertex :math:`10` will create two graph components." msgstr "" -msgid "``text[]`` target node **out** rules" +msgid "``vid``" msgstr "" -msgid "oneway" +msgid "``centrality``" msgstr "" -msgid "``text`` oneway column name name of the network table. Default value is ``oneway``." +msgid "Relative betweenness centrality score of the vertex (will be in range [0,1])" msgstr "" -msgid "two_way_if_null" +msgid "`Boost: betweenness centrality `_" msgstr "" -msgid "``boolean`` flag to treat oneway NULL values as bi-directional. Default value is ``true``." +msgid "``pgr_biconnectedComponents``" msgstr "" -msgid "It is strongly recommended to use the named notation. See :doc:`pgr_createVerticesTable` or :doc:`pgr_createTopology` for examples." +msgid "``pgr_biconnectedComponents`` — Biconnected components of an undirected graph." msgstr "" -msgid "Fills completely the ``ein`` and ``eout`` columns of the vertices table." +msgid "Result columns change:" msgstr "" -msgid "The names of source , target or oneway are the same." +msgid "``n_seq`` is removed" msgstr "" -msgid "The rules are defined as an array of text strings that if match the ``oneway`` value would be counted as ``true`` for the source or target **in** or **out** condition." +msgid "``seq`` changed type to ``BIGINT``" msgstr "" -msgid "The vertices table can be created with :doc:`pgr_createVerticesTable` or :doc:`pgr_createTopology`" +msgid "The biconnected components of an undirected graph are the maximal subsets of vertices such that the removal of a vertex from particular component will not disconnect the component. Unlike connected components, vertices may belong to multiple biconnected components. Vertices can be present in multiple biconnected components, but each edge can only be contained in a single biconnected component." msgstr "" -msgid "``integer`` Number of vertices in the edge_table that reference this vertex. See :doc:`pgr_analyzeGgraph `." +msgid "Components are described by edges." msgstr "" -msgid "``integer`` Indicator that the vertex might have a problem. See :doc:`pgr_analyzeGraph `." +msgid "``component`` ascending." msgstr "" -msgid "``integer`` Number of vertices in the edge_table that reference this vertex as incoming." +msgid "``edge`` ascending." msgstr "" -msgid "``integer`` Number of vertices in the edge_table that reference this vertex as outgoing." +msgid "pgr_biconnectedComponents(`Edges SQL`_)" msgstr "" -msgid ":doc:`pgr_analyzeGraph`" +msgid "Returns set of |result-component-E|" msgstr "" -msgid "``pgr_articulationPoints``" +msgid "The biconnected components of the graph" msgstr "" -msgid "``pgr_articulationPoints`` - Return the articulation points of an undirected graph." +msgid "``component``" msgstr "" -msgid "Result columns change: ``seq`` is removed" +msgid "Component identifier." msgstr "" -msgid "Version 2.5.0" +msgid "Has the value of the minimum edge identifier in the component." msgstr "" -msgid "New **experimental** function" +msgid "Identifier of the edge that belongs to the ``component``." msgstr "" -msgid "Those vertices that belong to more than one biconnected component are called articulation points or, equivalently, cut vertices. Articulation points are vertices whose removal would increase the number of connected components in the graph. This implementation can only be used with an undirected graph." +msgid "``pgr_binaryBreadthFirstSearch`` - Experimental" msgstr "" -msgid "Works for **undirected** graphs." +msgid "``pgr_binaryBreadthFirstSearch`` — Returns the shortest path in a binary graph." msgstr "" -msgid "``node`` ascending" +msgid "Any graph whose edge-weights belongs to the set {0,X}, where 'X' is any non-negative integer, is termed as a 'binary graph'." msgstr "" -msgid "Running time: :math:`O(V + E)`" +msgid "pgr_binaryBreadthFirstSearch(Combinations)" msgstr "" -msgid "pgr_articulationPoints(`Edges SQL`_)" +msgid "It is well-known that the shortest paths between a single source and all other vertices can be found using Breadth First Search in :math:`O(|E|)` in an unweighted graph, i.e. the distance is the minimal number of edges that you need to traverse from the source to another vertex. We can interpret such a graph also as a weighted graph, where every edge has the weight :math:`1`. If not alledges in graph have the same weight, that we need a more general algorithm, like Dijkstra's Algorithm which runs in :math:`O(|E|log|V|)` time." msgstr "" -msgid "Returns set of |result-node|" +msgid "However if the weights are more constrained, we can use a faster algorithm. This algorithm, termed as 'Binary Breadth First Search' as well as '0-1 BFS', is a variation of the standard Breadth First Search problem to solve the SSSP (single-source shortest path) problem in :math:`O(|E|)`, if the weights of each edge belongs to the set {0,X}, where 'X' is any non-negative real integer." msgstr "" -msgid "The articulation points of the graph" +msgid "Process is done only on 'binary graphs'. ('Binary Graph': Any graph whose edge-weights belongs to the set {0,X}, where 'X' is any non-negative real integer.)" msgstr "" -msgid "Nodes in red are the articulation points." +msgid "Running time: :math:`O(| start\\_vids | * |E|)`" msgstr "" -msgid "Boost: `Biconnected components & articulation points `__" +msgid "pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" msgstr "" -msgid "wikipedia: `Biconnected component `__" +msgid "pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" msgstr "" -msgid "``pgr_bdAstar``" +msgid "pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vids**, **end vid**, [``directed``])" msgstr "" -msgid "``pgr_bdAstar`` — Shortest path using the bidirectional A* algorithm." +msgid "pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" msgstr "" -msgid "``pgr_bdAstar`` (`One to One`_) added ``start_vid`` and ``end_vid`` columns." +msgid "pgr_binaryBreadthFirstSearch(`Edges SQL`_, `Combinations SQL`_, [``directed``])" msgstr "" -msgid "``pgr_bdAstar`` (`One to Many`_) added ``end_vid`` column." +msgid "**Note:** Using the :doc:`sampledata` Network as all weights are same (i.e :math:`1``)" msgstr "" -msgid "``pgr_bdAstar`` (`Many to One`_) added ``start_vid`` column." +msgid "`Boost: Breadth First Search `__" msgstr "" -msgid "``pgr_bdAstar`` (`Combinations`_)" +msgid "https://cp-algorithms.com/graph/01_bfs.html" msgstr "" -msgid "``pgr_bdAstar`` (`One to Many`_)" +msgid "https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm#Specialized_variants" msgstr "" -msgid "``pgr_bdAstar`` (`Many to One`_)" +msgid "``pgr_bipartite`` - Experimental" msgstr "" -msgid "``pgr_bdAstar`` (`Many to Many`_)" +msgid "``pgr_bipartite`` — Disjoint sets of vertices such that no two vertices within the same set are adjacent." msgstr "" -msgid "Signature change on ``pgr_bdAstar`` (`One to One`_)" +msgid "A bipartite graph is a graph with two sets of vertices which are connected to each other, but not within themselves. A bipartite graph is possible if the graph coloring is possible using two colors such that vertices in a set are colored with the same color." msgstr "" -msgid "**Official** ``pgr_bdAstar`` (`One to One`_)" +msgid "The algorithm works in undirected graph only." msgstr "" -msgid "The results are equivalent to the union of the results of the `pgr_bdAStar(` `One to One`_ `)` on the:" +msgid "The returned values are not ordered." msgstr "" -msgid "pgr_bdAstar(`Edges SQL`_, **start vid**, **end vid**, [**options**])" +msgid "The algorithm checks graph is bipartite or not. If it is bipartite then it returns the node along with two colors `0` and `1` which represents two different sets." msgstr "" -msgid "pgr_bdAstar(`Edges SQL`_, **start vid**, **end vids**, [**options**])" +msgid "If graph is not bipartite then algorithm returns empty set." msgstr "" -msgid "pgr_bdAstar(`Edges SQL`_, **start vids**, **end vid**, [**options**])" +msgid "pgr_bipartite(`Edges SQL`_)" msgstr "" -msgid "pgr_bdAstar(`Edges SQL`_, **start vids**, **end vids**, [**options**])" +msgid "Returns set of |result-node-color|" msgstr "" -msgid "pgr_bdAstar(`Edges SQL`_, `Combinations SQL`_, [**options**])" +msgid "When the graph is bipartite" msgstr "" -msgid "pgr_bdAstarCost" +msgid "Additional Example" msgstr "" -msgid "``pgr_bdAstarCost`` - Total cost of the shortest path using the bidirectional A* algorithm." +msgid "The odd length cyclic graph can not be bipartite." msgstr "" -msgid "``pgr_bdAstarCost`` (`Combinations`_)" +msgid "The edge :math:`5 \\rightarrow 1` will make subgraph with vertices :math:`\\{1, 3, 7, 6, 5\\}` an odd length cyclic graph, as the cycle has 5 vertices." msgstr "" -msgid "The ``pgr_bdAstarCost`` function sumarizes of the cost of the shortest path using the bidirectional A* algorithm." +msgid "Edges in blue represent odd length cycle subgraph." msgstr "" -msgid "pgr_bdAstarCost(`Edges SQL`_, **start vid**, **end vid**, [**options**])" +msgid "`Boost: is_bipartite `__" msgstr "" -msgid "pgr_bdAstarCost(`Edges SQL`_, **start vid**, **end vids**, [**options**])" +msgid "`Wikipedia: bipartite graph `__" msgstr "" -msgid "pgr_bdAstarCost(`Edges SQL`_, **start vids**, **end vid**, [**options**])" +msgid "``pgr_boykovKolmogorov``" msgstr "" -msgid "pgr_bdAstarCost(`Edges SQL`_, **start vids**, **end vids**, [**options**])" +msgid "``pgr_boykovKolmogorov`` — Calculates the flow on the graph edges that maximizes the flow from the sources to the targets using Boykov Kolmogorov algorithm." msgstr "" -msgid "pgr_bdAstarCost(`Edges SQL`_, `Combinations SQL`_, [**options**])" +msgid "Renamed from ``pgr_maxFlowBoykovKolmogorov``" msgstr "" -msgid "``pgr_bdAstarCostMatrix``" +msgid "Function promoted to proposed." msgstr "" -msgid "``pgr_bdAstarCostMatrix`` - Calculates the a cost matrix using :doc:`pgr_aStar`." +msgid "Running time: Polynomial" msgstr "" -msgid "Using internaly the :doc:`pgr_bdAstar` algorithm" +msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vid**, **end vid**)" msgstr "" -msgid "pgr_bdAstarCostMatrix(`Edges SQL`_, **start vids**, [**options**])" +msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vid**, **end vids**)" msgstr "" -msgid "``pgr_bdDijkstra``" +msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vids**, **end vid**)" msgstr "" -msgid "``pgr_bdDijkstra`` — Returns the shortest path using Bidirectional Dijkstra algorithm." +msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vids**, **end vids**)" msgstr "" -msgid "pgr_bdDijkstra(`Combinations`_)" +msgid "pgr_boykovKolmogorov(`Edges SQL`_, `Combinations SQL`_)" msgstr "" -msgid "New **Proposed** functions:" +msgid "Returns set of |result-flow|" msgstr "" -msgid "``pgr_bdDijkstra`` (`One to Many`_)" +msgid "From vertex :math:`11` to vertex :math:`12`" msgstr "" -msgid "``pgr_bdDijkstra`` (`Many to One`_)" +msgid "From vertex :math:`11` to vertices :math:`\\{5, 10, 12\\}`" msgstr "" -msgid "``pgr_bdDijkstra`` (`Many to Many`_)" +msgid "From vertices :math:`\\{11, 3, 17\\}` to vertex :math:`12`" msgstr "" -msgid "Signature change on ``pgr_bdDijsktra`` (`One to One`_)" +msgid "From vertices :math:`\\{11, 3, 17\\}` to vertices :math:`\\{5, 10, 12\\}`" msgstr "" -msgid "**Official** ``pgr_bdDijkstra`` (`One to One`_)" +msgid "Using a combinations table, equivalent to calculating result from vertices :math:`\\{5, 6\\}` to vertices :math:`\\{10, 15, 14\\}`." msgstr "" -msgid "pgr_bdDijkstra(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" +msgid "`Boost: Boykov Kolmogorov max flow `__" msgstr "" -msgid "pgr_bdDijkstra(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" +msgid "``pgr_breadthFirstSearch`` - Experimental" msgstr "" -msgid "pgr_bdDijkstra(`Edges SQL`_, **start vids**, **end vid**, [``directed``])" +msgid "``pgr_breadthFirstSearch`` — Returns the traversal order(s) using Breadth First Search algorithm." msgstr "" -msgid "pgr_bdDijkstra(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" +msgid "Provides the Breadth First Search traversal order from a root vertex to a particular depth." msgstr "" -msgid "pgr_bdDijkstra(`Edges SQL`_, `Combinations SQL`_, [``directed``])" +msgid "The implementation will work on any type of graph." msgstr "" -msgid "Returns set of |old-generic-result|" +msgid "Provides the Breadth First Search traversal order from a source node to a target depth level." msgstr "" -msgid "Returns set of |result-1-1|" +msgid "Running time: :math:`O(E + V)`" msgstr "" -msgid "From vertex :math:`6` to vertex :math:`10` on a **directed** graph" +msgid "pgr_breadthFirstSearch(`Edges SQL`_, **root vid**, [**options**])" msgstr "" -msgid "Returns set of |result-1-m|" +msgid "pgr_breadthFirstSearch(`Edges SQL`_, **root vids**, [**options**])" msgstr "" -msgid "From vertex :math:`6` to vertices :math:`\\{10, 17\\}` on a **directed** graph" +msgid "**options:** ``[max_depth, directed]``" msgstr "" -msgid "Returns set of |result-m-1|" +msgid "Returns set of |result-bfs|" msgstr "" -msgid "From vertices :math:`\\{6, 1\\}` to vertex :math:`17` on a **directed** graph" +msgid "From root vertex :math:`6` on a **directed** graph with edges in ascending order of ``id``" msgstr "" -msgid "From vertices :math:`\\{6, 1\\}` to vertices :math:`\\{10, 17\\}` on an **undirected** graph" +msgid "From root vertices :math:`\\{12, 6\\}` on an **undirected** graph with **depth** :math:`<= 2` and edges in ascending order of ``id``" msgstr "" -msgid "Using a combinations table on an **undirected** graph" +msgid "DFS optional parameters" msgstr "" -msgid "https://www.cs.princeton.edu/courses/archive/spr06/cos423/Handouts/EPP%20shortest%20path%20algorithms.pdf" +msgid "Same as `Single vertex`_ with edges in ascending order of ``id``." msgstr "" -msgid "https://en.wikipedia.org/wiki/Bidirectional_search" +msgid "Same as `Single vertex`_ with edges in descending order of ``id``." msgstr "" -msgid "``pgr_bdDijkstraCost``" +msgid "The resulting traversal is different." msgstr "" -msgid "``pgr_bdDijkstraCost`` — Returns the shortest path's cost using Bidirectional Dijkstra algorithm." +msgid "The left image shows the result with ascending order of ids and the right image shows with descending order of the edge identifiers." msgstr "" -msgid "``pgr_bdDijkstraCost`` (`Combinations`_)" +msgid "|ascending| |descending|" msgstr "" -msgid "The ``pgr_bdDijkstraCost`` function sumarizes of the cost of the shortest path using the bidirectional Dijkstra Algorithm." +msgid "ascending" msgstr "" -msgid "pgr_bdDijkstraCost(`Edges SQL`_, **start vid**, **end vid** , [``directed``])" +msgid "descending" msgstr "" -msgid "pgr_bdDijkstraCost(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" +msgid "`Wikipedia: Breadth First Search algorithm `__" msgstr "" -msgid "pgr_bdDijkstraCost(`Edges SQL`_, **start vids**, **end vid** , [``directed``])" +msgid "``pgr_bridges``" msgstr "" -msgid "pgr_bdDijkstraCost(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" +msgid "``pgr_bridges`` - Return the bridges of an undirected graph." msgstr "" -msgid "pgr_bdDijkstraCost(`Edges SQL`_, `Combinations SQL`_, [ ``directed``])" +msgid "A bridge is an edge of an undirected graph whose deletion increases its number of connected components. This implementation can only be used with an undirected graph." msgstr "" -msgid "pgr_bdDijkstraCost(`Edges SQL`_, `Combinations SQL`_, [``directed``])" +msgid "``edge`` ascending" msgstr "" -msgid "``pgr_bdDijkstraCostMatrix``" +msgid "Running time: :math:`O(E * (V + E))`" msgstr "" -msgid "``pgr_bdDijkstraCostMatrix`` - Calculates a cost matrix using :doc:`pgr_bdDijkstra`." +msgid "pgr_bridges(`Edges SQL`_)" msgstr "" -msgid "Using bidirectional Dijkstra algorithm, calculate and return a cost matrix." +msgid "Returns set of |result-edge|" msgstr "" -msgid "pgr_bdDijkstraCostMatrix(`Edges SQL`_, **start vids**, [``directed``])" +msgid "The bridges of the graph" msgstr "" -msgid "Symmetric cost matrix for vertices :math:`\\{5, 6, 10, 15\\}` on an **undirected** graph" +msgid "Identifier of the edge that is a bridge." msgstr "" -msgid "Use with :doc:`pgr_TSP`." +msgid "https://en.wikipedia.org/wiki/Bridge_%28graph_theory%29" msgstr "" -msgid "``pgr_bellmanFord - Experimental``" +msgid "`Boost: Connected components `__" msgstr "" -msgid "``pgr_bellmanFord`` — Shortest path using Bellman-Ford algorithm." +msgid "``pgr_chinesePostman`` - Experimental" msgstr "" -msgid "New **experimental** signature:" +msgid "``pgr_chinesePostman`` — Calculates the shortest circuit path which contains every edge in a directed graph and starts and ends on the same vertex." msgstr "" -msgid "``pgr_bellmanFord`` (`Combinations`_)" +msgid "Returns ``EMPTY SET`` on a disconnected graph" msgstr "" -msgid "New **experimental** signatures:" +msgid "pgr_chinesePostman(`Edges SQL`_)" msgstr "" -msgid "``pgr_bellmanFord`` (`One to One`_)" +msgid "Returns set of |result-1-1-no-seq|" msgstr "" -msgid "``pgr_bellmanFord`` (`One to Many`_)" +msgid "Returns set of ``(seq, node, edge, cost, agg_cost)``" msgstr "" -msgid "``pgr_bellmanFord`` (`Many to One`_)" +msgid "Sequential value starting from ``1``" msgstr "" -msgid "``pgr_bellmanFord`` (`Many to Many`_)" +msgid "Identifier of the edge used to go from ``node`` to the next node in the path sequence. ``-1`` for the last node of the path." msgstr "" -msgid "Bellman-Ford's algorithm, is named after Richard Bellman and Lester Ford, who first published it in 1958 and 1956, respectively.It is a graph search algorithm that computes shortest paths from a starting vertex (``start_vid``) to an ending vertex (``end_vid``) in a graph where some of the edge weights may be negative. Though it is more versatile, it is slower than Dijkstra's algorithm.This implementation can be used with a directed graph and an undirected graph." +msgid "Aggregate cost from ``start_v`` to ``node``." msgstr "" -msgid "Process is valid for edges with both positive and negative edge weights." +msgid "``pgr_chinesePostmanCost`` - Experimental" msgstr "" -msgid "When the start vertex and the end vertex are the same, there is no path. The agg_cost would be :math:`0`." +msgid "``pgr_chinesePostmanCost`` — Calculates the minimum costs of a circuit path which contains every edge in a directed graph and starts and ends on the same vertex." msgstr "" -msgid "When the start vertex and the end vertex are different, and there exists a path between them without having a *negative cycle*. The agg_cost would be some finite value denoting the shortest distance between them." +msgid "Return value when the graph if disconnected" msgstr "" -msgid "When the start vertex and the end vertex are different, and there exists a path between them, but it contains a *negative cycle*. In such case, agg_cost for those vertices keep on decreasing furthermore, Hence agg_cost can’t be defined for them." +msgid "pgr_chinesePostmanCost(`Edges SQL`_)" msgstr "" -msgid "When the start vertex and the end vertex are different, and there is no path. The agg_cost is :math:`\\infty`." +msgid "RETURNS ``FLOAT``" msgstr "" -msgid "For optimization purposes, any duplicated value in the `start_vids` or `end_vids` are ignored." +msgid "``pgr_chinesepostmancost``" msgstr "" -msgid "Running time: :math:`O(| start\\_vids | * ( V * E))`" +msgid "Minimum costs of a circuit path." msgstr "" -msgid "pgr_bellmanFord(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" +msgid "``pgr_connectedComponents``" msgstr "" -msgid "pgr_bellmanFord(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" +msgid "``pgr_connectedComponents`` — Connected components of an undirected graph using a DFS-based approach." msgstr "" -msgid "pgr_bellmanFord(`Edges SQL`_, **start vids**, **end vid**, [``directed``])" +msgid "A connected component of an undirected graph is a set of vertices that are all reachable from each other." msgstr "" -msgid "pgr_bellmanFord(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" +msgid "Components are described by vertices" msgstr "" -msgid "pgr_bellmanFord(`Edges SQL`_, `Combinations SQL`_, [``directed``])" +msgid "``component`` ascending" msgstr "" -msgid "From vertex :math:`6` to vertices :math:`\\{ 10, 17\\}` on a **directed** graph" +msgid "pgr_connectedComponents(`Edges SQL`_)" msgstr "" -msgid "Using a combinations table on an **undirected** graph." +msgid "Returns set of |result-component-V|" msgstr "" -msgid "https://en.wikipedia.org/wiki/Bellman%E2%80%93Ford_algorithm" +msgid "The connected components of the graph" msgstr "" -msgid "``pgr_betweennessCentrality``" +msgid "Has the value of the minimum node identifier in the component." msgstr "" -msgid "``pgr_betweennessCentrality`` - Calculates the relative betweeness centrality using Brandes Algorithm" +msgid "Identifier of the vertex that belongs to the ``component``." msgstr "" -msgid "Version 3.7.0" +msgid "Connecting disconnected components" msgstr "" -msgid "New **experimental** function:" +msgid "wikipedia: `Connected component `__" msgstr "" -msgid "The Brandes Algorithm takes advantage of the sparse graphs for evaluating the betweenness centrality score of all vertices." +msgid "``pgr_contraction``" msgstr "" -msgid "Betweenness centrality measures the extent to which a vertex lies on the shortest paths between all other pairs of vertices. Vertices with a high betweenness centrality score may have considerable influence in a network by the virtue of their control over the shortest paths passing between them." +msgid "``pgr_contraction`` — Performs graph contraction and returns the contracted vertices and edges." msgstr "" -msgid "The removal of these vertices will affect the network by disrupting the it, as most of the shortest paths between vertices pass through them." +msgid "Version 3.8.0" msgstr "" -msgid "This implementation work for both directed and undirected graphs." +msgid "New signature:" msgstr "" -msgid "Running time: :math:`\\Theta(VE)`" +msgid "Previously compulsory parameter **Contraction order** is now optional with name ``methods``." msgstr "" -msgid "Running space: :math:`\\Theta(VE)`" +msgid "New name and order of optional parameters." msgstr "" -msgid "Throws when there are no edges in the graph" +msgid "Deprecated signature pgr_contraction(text,bigint[],integer,bigint[],boolean)" msgstr "" -msgid "pgr_betweennessCentrality(`Edges SQL`_, [``directed``])" +msgid "Name change from ``pgr_contractGraph``" msgstr "" -msgid "Returns set of ``(vid, centrality)``" +msgid "Bug fixes" msgstr "" -msgid "For a directed graph with edges :math:`\\{1, 2, 3, 4\\}`." +msgid "Contraction reduces the size of the graph by removing some of the vertices and edges and, for example, might add edges that represent a sequence of original edges decreasing the total time and space used in graph algorithms." msgstr "" -msgid "Explanation" +msgid "Does not return the full contracted graph." msgstr "" -msgid "The betweenness centrality are between parenthesis." +msgid "Only changes on the graph are returned." msgstr "" -msgid "The leaf vertices have betweenness centrality :math:`0`." +msgid "The returned values include:" msgstr "" -msgid "Betweenness centrality of vertex :math:`6` is higher than of vertex :math:`10`." +msgid "The new edges generated by linear contraction." msgstr "" -msgid "Removing vertex :math:`6` will create three graph components." +msgid "The modified vertices generated by dead end contraction." msgstr "" -msgid "Removing vertex :math:`10` will create two graph components." +msgid "The returned values are ordered as follows:" msgstr "" -msgid "``vid``" +msgid "column ``id`` ascending when its a modified vertex." msgstr "" -msgid "``centrality``" +msgid "column ``id`` with negative numbers descending when its a new edge." msgstr "" -msgid "Relative betweenness centrality score of the vertex (will be in range [0,1])" +msgid "Currently there are two types of contraction methods included in this function:" msgstr "" -msgid "Boost's `betweenness_centrality `_" +msgid "Dead End Contraction. See :doc:`pgr_contractionDeadEnd`." msgstr "" -msgid "Queries use the :doc:`sampledata` network." +msgid "Linear Contraction. See :doc:`pgr_contractionLinear`." msgstr "" -msgid "``pgr_biconnectedComponents``" +msgid "pgr_contraction(`Edges SQL`_, [**options**])" msgstr "" -msgid "``pgr_biconnectedComponents`` — Biconnected components of an undirected graph." +msgid "**options:** ``[directed, methods, cycles, forbidden]``" msgstr "" -msgid "Result columns change:" +msgid "Returns set of |result-contract|" msgstr "" -msgid "``n_seq`` is removed" +msgid "Dead end and linear contraction in that order on an undirected graph." msgstr "" -msgid "``seq`` changed type to ``BIGINT``" +msgid "Contraction optional parameters" msgstr "" -msgid "The biconnected components of an undirected graph are the maximal subsets of vertices such that the removal of a vertex from particular component will not disconnect the component. Unlike connected components, vertices may belong to multiple biconnected components. Vertices can be present in multiple biconnected components, but each edge can only be contained in a single biconnected component." +msgid "``methods``" msgstr "" -msgid "Components are described by edges." +msgid "``INTEGER[]``" msgstr "" -msgid "``component`` ascending." +msgid "``ARRAY[1,2]``" msgstr "" -msgid "``edge`` ascending." +msgid "Ordered contraction operations." msgstr "" -msgid "pgr_biconnectedComponents(`Edges SQL`_)" +msgid "1 = Dead end contraction" msgstr "" -msgid "Returns set of |result-component-E|" +msgid "2 = Linear contraction" msgstr "" -msgid "The biconnected components of the graph" +msgid "``cycles``" msgstr "" -msgid "``component``" +msgid ":math:`1`" msgstr "" -msgid "Component identifier." +msgid "Number of times the contraction methods will be performed." msgstr "" -msgid "Has the value of the minimum edge identifier in the component." +msgid "``forbidden``" msgstr "" -msgid "Identifier of the edge that belongs to the ``component``." +msgid "``BIGINT[]``" msgstr "" -msgid "Boost: `Biconnected components `__" +msgid "``ARRAY[]::BIGINT[]``" msgstr "" -msgid "``pgr_binaryBreadthFirstSearch`` - Experimental" +msgid "Identifiers of vertices forbidden for contraction." msgstr "" -msgid "``pgr_binaryBreadthFirstSearch`` — Returns the shortest path in a binary graph." +msgid "The function returns a single row. The columns of the row are:" msgstr "" -msgid "Any graph whose edge-weights belongs to the set {0,X}, where 'X' is any non-negative integer, is termed as a 'binary graph'." +msgid "``type``" msgstr "" -msgid "pgr_binaryBreadthFirstSearch(`Combinations`_)" +msgid "Type of the row." msgstr "" -msgid "pgr_binaryBreadthFirstSearch(`One to One`_)" +msgid "``v`` when the row is a vertex." msgstr "" -msgid "pgr_binaryBreadthFirstSearch(`One to Many`_)" +msgid "Column ``id`` has a positive value." msgstr "" -msgid "pgr_binaryBreadthFirstSearch(`Many to One`_)" +msgid "``e`` when the row is an edge." msgstr "" -msgid "pgr_binaryBreadthFirstSearch(`Many to Many`_)" +msgid "Column ``id`` has a negative value." msgstr "" -msgid "It is well-known that the shortest paths between a single source and all other vertices can be found using Breadth First Search in :math:`O(|E|)` in an unweighted graph, i.e. the distance is the minimal number of edges that you need to traverse from the source to another vertex. We can interpret such a graph also as a weighted graph, where every edge has the weight :math:`1`. If not alledges in graph have the same weight, that we need a more general algorithm, like Dijkstra's Algorithm which runs in :math:`O(|E|log|V|)` time." +msgid "All numbers on this column are ``DISTINCT``" msgstr "" -msgid "However if the weights are more constrained, we can use a faster algorithm. This algorithm, termed as 'Binary Breadth First Search' as well as '0-1 BFS', is a variation of the standard Breadth First Search problem to solve the SSSP (single-source shortest path) problem in :math:`O(|E|)`, if the weights of each edge belongs to the set {0,X}, where 'X' is any non-negative real integer." +msgid "When ``type`` = **'v'**." msgstr "" -msgid "Process is done only on 'binary graphs'. ('Binary Graph': Any graph whose edge-weights belongs to the set {0,X}, where 'X' is any non-negative real integer.)" +msgid "Identifier of the modified vertex." msgstr "" -msgid "Running time: :math:`O(| start\\_vids | * |E|)`" +msgid "When ``type`` = **'e'**." msgstr "" -msgid "pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" +msgid "Decreasing sequence starting from **-1**." msgstr "" -msgid "pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" +msgid "Representing a pseudo `id` as is not incorporated in the set of original edges." msgstr "" -msgid "pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vids**, **end vid**, [``directed``])" +msgid "``contracted_vertices``" msgstr "" -msgid "pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" +msgid "Array of contracted vertex identifiers." msgstr "" -msgid "pgr_binaryBreadthFirstSearch(`Edges SQL`_, `Combinations SQL`_, [``directed``])" +msgid "When ``type`` = **'v'**: :math:`-1`" msgstr "" -msgid "**Note:** Using the :doc:`sampledata` Network as all weights are same (i.e :math:`1``)" +msgid "When ``type`` = **'e'**: Identifier of the source vertex of the current edge (``source``, ``target``)." msgstr "" -msgid "https://cp-algorithms.com/graph/01_bfs.html" +msgid "When ``type`` = **'e'**: Identifier of the target vertex of the current edge (``source``, ``target``)." msgstr "" -msgid "https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm#Specialized_variants" +msgid "When ``type`` = **'e'**: Weight of the current edge (``source``, ``target``)." msgstr "" -msgid "pgr_bipartite -Experimental" +msgid "Only dead end contraction" msgstr "" -msgid "``pgr_bipartite`` — Disjoint sets of vertices such that no two vertices within the same set are adjacent." +msgid "Only linear contraction" msgstr "" -msgid "New **experimental** signature" +msgid "The cycle" msgstr "" -msgid "A bipartite graph is a graph with two sets of vertices which are connected to each other, but not within themselves. A bipartite graph is possible if the graph coloring is possible using two colors such that vertices in a set are colored with the same color." +msgid "Contracting a graph can be done with more than one operation. The order of the operations affect the resulting contracted graph, after applying one operation, the set of vertices that can be contracted by another operation changes." msgstr "" -msgid "The algorithm works in undirected graph only." +msgid "This implementation cycles ``cycles`` times through the ``methods`` ." msgstr "" -msgid "The returned values are not ordered." +msgid "Contracting sample data" msgstr "" -msgid "The algorithm checks graph is bipartite or not. If it is bipartite then it returns the node along with two colors `0` and `1` which represents two different sets." +msgid "In this section, building and using a contracted graph will be shown by example." msgstr "" -msgid "If graph is not bipartite then algorithm returns empty set." +msgid "The :doc:`sampledata` for an undirected graph is used" msgstr "" -msgid "pgr_bipartite(`Edges SQL`_)" +msgid "a dead end operation first followed by a linear operation." msgstr "" -msgid "Returns set of |result-node-color|" +msgid "Construction of the graph in the database" msgstr "" -msgid "When the graph is bipartite" +msgid "The original graph:" msgstr "" -msgid "Additional Example" +msgid "The results do not represent the contracted graph. They represent the changes that need to be done to the graph after applying the contraction methods." msgstr "" -msgid "The odd length cyclic graph can not be bipartite." +msgid "Observe that vertices, for example, :math:`6` do not appear in the results because it was not affected by the contraction algorithm." msgstr "" -msgid "The edge :math:`5 \\rightarrow 1` will make subgraph with vertices :math:`\\{1, 3, 7, 6, 5\\}` an odd length cyclic graph, as the cycle has 5 vertices." +msgid "After doing the dead end contraction operation:" msgstr "" -msgid "Edges in blue represent odd length cycle subgraph." +msgid "After doing the linear contraction operation to the graph above:" msgstr "" -msgid "``pgr_boykovKolmogorov``" +msgid "The process to create the contraction graph on the database:" msgstr "" -msgid "``pgr_boykovKolmogorov`` — Calculates the flow on the graph edges that maximizes the flow from the sources to the targets using Boykov Kolmogorov algorithm." +msgid "Add additional columns" msgstr "" -msgid "New **proposed** signature" +msgid "Adding extra columns to the edges and vertices tables. In this documentation the following will be used:" msgstr "" -msgid "``pgr_boykovKolmogorov`` (`Combinations`_)" +msgid "Column." msgstr "" -msgid "Renamed from ``pgr_maxFlowBoykovKolmogorov``" +msgid "The vertices set belonging to the vertex/edge" msgstr "" -msgid "**Proposed** function" +msgid "``is_contracted``" msgstr "" -msgid "New **Experimental** function" +msgid "On the vertex table" msgstr "" -msgid "Running time: Polynomial" +msgid "when ``true`` the vertex is contracted, its not part of the contracted graph." msgstr "" -msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vid**, **end vid**)" +msgid "when ``false`` the vertex is not contracted, its part of the contracted graph." msgstr "" -msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vid**, **end vids**)" +msgid "``is_new``" msgstr "" -msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vids**, **end vid**)" +msgid "On the edge table" msgstr "" -msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vids**, **end vids**)" +msgid "when ``true`` the edge was generated by the contraction algorithm. its part of the contracted graph." msgstr "" -msgid "pgr_boykovKolmogorov(`Edges SQL`_, `Combinations SQL`_)" +msgid "when ``false`` the edge is an original edge, might be or not part of the contracted graph." msgstr "" -msgid "Returns set of |result-flow|" +msgid "Store contraction information" msgstr "" -msgid "From vertex :math:`11` to vertex :math:`12`" +msgid "Store the contraction results in a table." msgstr "" -msgid "From vertex :math:`11` to vertices :math:`\\{5, 10, 12\\}`" +msgid "Update the edges and vertices tables" msgstr "" -msgid "From vertices :math:`\\{11, 3, 17\\}` to vertex :math:`12`" +msgid "Use ``is_contracted`` column to indicate the vertices that are contracted." msgstr "" -msgid "From vertices :math:`\\{11, 3, 17\\}` to vertices :math:`\\{5, 10, 12\\}`" +msgid "Fill ``contracted_vertices`` with the information from the results that belong to the vertices." msgstr "" -msgid "Using a combinations table, equivalent to calculating result from vertices :math:`\\{5, 6\\}` to vertices :math:`\\{10, 15, 14\\}`." +msgid "Insert the new edges generated by pgr_contraction." msgstr "" -msgid "https://www.boost.org/libs/graph/doc/boykov_kolmogorov_max_flow.html" +msgid "The contracted graph" msgstr "" -msgid "``pgr_breadthFirstSearch`` - Experimental" +msgid "Vertices that belong to the contracted graph." msgstr "" -msgid "``pgr_breadthFirstSearch`` — Returns the traversal order(s) using Breadth First Search algorithm." +msgid "Edges that belong to the contracted graph." msgstr "" -msgid "``pgr_breadthFirstSearch`` (`Single Vertex`_)" +msgid "Visually:" msgstr "" -msgid "``pgr_breadthFirstSearch`` (`Multiple Vertices`_)" +msgid "Using the contracted graph" msgstr "" -msgid "Provides the Breadth First Search traversal order from a root vertex to a particular depth." +msgid "Depending on the final application the graph is to be prepared. In this example the final application will be to calculate the cost from two vertices in the original graph by using the contracted graph with ``pgr_dijkstraCost``" msgstr "" -msgid "The implementation will work on any type of graph." +msgid "There are three cases when calculating the shortest path between a given source and target in a contracted graph:" msgstr "" -msgid "Provides the Breadth First Search traversal order from a source node to a target depth level." +msgid "Case 1: Both source and target belong to the contracted graph." msgstr "" -msgid "Running time: :math:`O(E + V)`" +msgid "Case 2: Source and/or target belong to an edge subgraph." msgstr "" -msgid "pgr_breadthFirstSearch(`Edges SQL`_, **root vid**, [**options**])" +msgid "Case 3: Source and/or target belong to a vertex." msgstr "" -msgid "pgr_breadthFirstSearch(`Edges SQL`_, **root vids**, [**options**])" +msgid "The final application should consider all of those cases." msgstr "" -msgid "**options:** ``[max_depth, directed]``" +msgid "Create a view (or table) of the contracted graph:" msgstr "" -msgid "Returns set of |result-bfs|" +msgid "Create the function that will use the contracted graph." msgstr "" -msgid "From root vertex :math:`6` on a **directed** graph with edges in ascending order of ``id``" +msgid "Case 2: Source and/or target belong to an edge that has contracted vertices." msgstr "" -msgid "From root vertices :math:`\\{12, 6\\}` on an **undirected** graph with **depth** :math:`<= 2` and edges in ascending order of ``id``" +msgid "Case 3: Source and/or target belong to a vertex that has been contracted." msgstr "" -msgid "DFS optional parameters" +msgid "``pgr_contractionDeadEnd`` - Proposed" msgstr "" -msgid "Same as `Single vertex`_ with edges in ascending order of ``id``." +msgid "``pgr_contractionDeadEnd`` — Performs graph contraction and returns the contracted vertices and edges." msgstr "" -msgid "Same as `Single vertex`_ with edges in descending order of ``id``." +msgid "A node is considered a dead end node when:" msgstr "" -msgid "The resulting traversal is different." +msgid "On undirected graphs:" msgstr "" -msgid "The left image shows the result with ascending order of ids and the right image shows with descending order of the edge identifiers." +msgid "The number of adjacent vertices is 1." msgstr "" -msgid "|ascending| |descending|" +msgid "On directed graphs:" msgstr "" -msgid "ascending" +msgid "When there is only one adjacent vertex or" msgstr "" -msgid "descending" +msgid "When all edges are incoming regardless of the number of adjacent vertices." msgstr "" -msgid "`Boost: Breadth First Search algorithm documentation `__" +msgid "pgr_contractionDeadEnd(`Edges SQL`_, [**options**])" msgstr "" -msgid "`Wikipedia: Breadth First Search algorithm `__" +msgid "**options:** ``[directed, forbidden_vertices]``" msgstr "" -msgid "``pgr_bridges``" +msgid "Dead end contraction on an undirected graph." msgstr "" -msgid "``pgr_bridges`` - Return the bridges of an undirected graph." +msgid "The green nodes are dead end nodes." msgstr "" -msgid "A bridge is an edge of an undirected graph whose deletion increases its number of connected components. This implementation can only be used with an undirected graph." +msgid "Node :math:`3` is a dead end node after node :math:`1` is contracted." msgstr "" -msgid "``edge`` ascending" +msgid "``forbidden_vertices``" msgstr "" -msgid "Running time: :math:`O(E * (V + E))`" +msgid "``ARRAY[`` |ANY-INTEGER| ``]``" msgstr "" -msgid "pgr_bridges(`Edges SQL`_)" +msgid "**Empty**" msgstr "" -msgid "Returns set of |result-edge|" +msgid "Value = ``e`` indicating the row is an edge." msgstr "" -msgid "The bridges of the graph" +msgid "A pseudo `id` of the edge." msgstr "" -msgid "Identifier of the edge that is a bridge." +msgid "Identifier of the source vertex of the current edge." msgstr "" -msgid "https://en.wikipedia.org/wiki/Bridge_%28graph_theory%29" +msgid "Identifier of the target vertex of the current edge." msgstr "" -msgid "**Supported versions**" +msgid "Weight of the current edge." msgstr "" -msgid "``pgr_chinesePostman`` - Experimental" +msgid "Dead end vertex on undirected graph" msgstr "" -msgid "``pgr_chinesePostman`` — Calculates the shortest circuit path which contains every edge in a directed graph and starts and ends on the same vertex." +msgid "They have only one adjacent node." msgstr "" -msgid "Returns ``EMPTY SET`` on a disconnected graph" +msgid "Dead end vertex on directed graph" msgstr "" -msgid "pgr_chinesePostman(`Edges SQL`_)" +msgid "The green nodes are dead end nodes" msgstr "" -msgid "Returns set of |result-1-1-no-seq|" +msgid "The blue nodes have an unlimited number of incoming and/or outgoing edges." msgstr "" -msgid "Returns set of ``(seq, node, edge, cost, agg_cost)``" +msgid "Node" msgstr "" -msgid "Sequential value starting from ``1``" +msgid "Adjacent nodes" msgstr "" -msgid "Identifier of the edge used to go from ``node`` to the next node in the path sequence. ``-1`` for the last node of the path." +msgid "Dead end" msgstr "" -msgid "Aggregate cost from ``start_v`` to ``node``." +msgid "Reason" msgstr "" -msgid "``pgr_chinesePostmanCost`` - Experimental" +msgid ":math:`6`" msgstr "" -msgid "``pgr_chinesePostmanCost`` — Calculates the minimum costs of a circuit path which contains every edge in a directed graph and starts and ends on the same vertex." +msgid ":math:`\\{1\\}`" msgstr "" -msgid "Return value when the graph if disconnected" +msgid "Yes" msgstr "" -msgid "pgr_chinesePostmanCost(`Edges SQL`_)" +msgid "Has only one adjacent node." msgstr "" -msgid "RETURNS ``FLOAT``" +msgid ":math:`7`" msgstr "" -msgid "``pgr_chinesepostmancost``" +msgid ":math:`\\{2\\}`" msgstr "" -msgid "Minimum costs of a circuit path." +msgid ":math:`8`" msgstr "" -msgid "pgr_connectedComponents" +msgid ":math:`\\{2, 3\\}`" msgstr "" -msgid "``pgr_connectedComponents`` — Connected components of an undirected graph using a DFS-based approach." +msgid "Has more than one adjacent node and all edges are incoming." msgstr "" -msgid "A connected component of an undirected graph is a set of vertices that are all reachable from each other." +msgid ":math:`\\{4\\}`" msgstr "" -msgid "Components are described by vertices" +msgid ":math:`10`" msgstr "" -msgid "``component`` ascending" +msgid ":math:`\\{4, 5\\}`" msgstr "" -msgid "pgr_connectedComponents(`Edges SQL`_)" +msgid "No" msgstr "" -msgid "Returns set of |result-component-V|" +msgid "Has more than one adjacent node and all edges are outgoing." msgstr "" -msgid "The connected components of the graph" +msgid ":math:`1,2,3,4,5`" msgstr "" -msgid "Has the value of the minimum node identifier in the component." +msgid "Many adjacent nodes." msgstr "" -msgid "Identifier of the vertex that belongs to the ``component``." +msgid "Has more than one adjacent node and some edges are incoming and some are outgoing." msgstr "" -msgid "Connecting disconnected components" +msgid "From above, nodes :math:`\\{6, 7, 9\\}` are dead ends because the total number of adjacent vertices is one." msgstr "" -msgid "Boost: `Connected components `__" +msgid "When there are more than one adjacent vertex, all edges need to be all incoming edges otherwise it is not a dead end." msgstr "" -msgid "wikipedia: `Connected component `__" +msgid "Step by step dead end contraction" msgstr "" -msgid "``pgr_contraction``" +msgid "The dead end contraction will stop until there are no more dead end nodes. For example, from the following graph where :math:`3` is the dead end node:" msgstr "" -msgid "``pgr_contraction`` — Performs graph contraction and returns the contracted vertices and edges." +msgid "After contracting :math:`3`, node :math:`2` is now a dead end node and is contracted:" msgstr "" -msgid "Name change from ``pgr_contractGraph``" +msgid "After contracting :math:`2`, stop. Node :math:`1` has the information of nodes that were contracted." msgstr "" -msgid "Bug fixes" +msgid "Creating the contracted graph" msgstr "" -msgid "Contraction reduces the size of the graph by removing some of the vertices and edges and, for example, might add edges that represent a sequence of original edges decreasing the total time and space used in graph algorithms." +msgid "Steps for the creation of the contracted graph" msgstr "" -msgid "Does not return the full contracted graph" +msgid "Add additional columns." msgstr "" -msgid "Only changes on the graph are returned" +msgid "Save results into a table." msgstr "" -msgid "Currnetly there are two types of contraction methods" +msgid "The contracted vertices are not part of the contracted graph." msgstr "" -msgid "Dead End Contraction" +msgid "Using when departure and destination are in the contracted graph" msgstr "" -msgid "Linear Contraction" +msgid "Using when departure/destination is not in the contracted graph" msgstr "" -msgid "The returned values include" +msgid "Using when departure and destination are not in the contracted graph" msgstr "" -msgid "the added edges by linear contraction." +msgid "``pgr_contractionLinear`` - Proposed" msgstr "" -msgid "the modified vertices by dead end contraction." +msgid "``pgr_contractionLinear`` — Performs graph contraction and returns the contracted vertices and edges." msgstr "" -msgid "The returned values are ordered as follows:" +msgid "pgr_contractionLinear(`Edges SQL`_, [**options**])" msgstr "" -msgid "column ``id`` ascending when type is ``v``" +msgid "**options:** ``[directed, max_cycles, forbidden_vertices]``" msgstr "" -msgid "column ``id`` descending when type is ``e``" +msgid "Linear contraction on an undirected graph." msgstr "" -msgid "The pgr_contraction function has the following signature:" +msgid "The green nodes are linear nodes and will not be part of the contracted graph." msgstr "" -msgid "pgr_contraction(`Edges SQL`_, **contraction order**, [**options**])" +msgid "All edges adjacent will not be part of the contracted graph." msgstr "" -msgid "**options:** ``[ max_cycles, forbidden_vertices, directed]``" +msgid "The red lines will be new edges of the contracted graph." msgstr "" -msgid "Returns set of |result-contract|" +msgid "**contraction Order**" msgstr "" -msgid "Making a dead end and linear contraction in that order on an undirected graph." +msgid "Number of times the contraction operations on ``contraction_order`` will be performed." msgstr "" -msgid "**contraction Order**" +msgid "A node connects two (or more) `linear` edges when" msgstr "" -msgid "Ordered contraction operations." +msgid "The number of adjacent vertices is 2." msgstr "" -msgid "1 = Dead end contraction" +msgid "In case of a directed graph, a node is considered a `linear` node when" msgstr "" -msgid "2 = Linear contraction" +msgid "Linearity is symmetrical." msgstr "" -msgid "Contraction optional parameters" +msgid "Linearity is not symmetrical" msgstr "" -msgid "``forbidden_vertices``" +msgid "Graph where linearity is not symmetrical." msgstr "" -msgid "**Empty**" +msgid "When the graph is processed as a directed graph, linearity is not symmetrical, therefore the graph can not be contracted." msgstr "" -msgid "Identifiers of vertices forbidden for contraction." +msgid "When the same graph is processed as an undirected graph, linearity is symmetrical, therefore the graph can be contracted." msgstr "" -msgid ":math:`1`" +msgid "The three edges can be replaced by one undirected edge" msgstr "" -msgid "Number of times the contraction operations on ``contraction_order`` will be performed." +msgid "Edge :math:`1 - 3`." msgstr "" -msgid "The function returns a single row. The columns of the row are:" +msgid "With cost: :math:`4`." msgstr "" -msgid "``type``" +msgid "Contracted vertices in the edge: :math:`\\{2\\}`." msgstr "" -msgid "Type of the ``id``." +msgid "Linearity is symmetrical" msgstr "" -msgid "``v`` when the row is a vertex." +msgid "Graph where linearity is symmetrical." msgstr "" -msgid "Column ``id`` has a positive value" +msgid "The four edges can be replaced by two directed edges." msgstr "" -msgid "``e`` when the row is an edge." +msgid "Edge :math:`3 - 1`." msgstr "" -msgid "Column ``id`` has a negative value" +msgid "With cost: :math:`6`." msgstr "" -msgid "All numbers on this column are ``DISTINCT``" +msgid "The four edges can be replaced by one undirected edge." msgstr "" -msgid "When ``type`` = **'v'**." +msgid "Step by step linear contraction" msgstr "" -msgid "Identifier of the modified vertex." +msgid "The linear contraction will stop when there are no more linear edges. For example from the following graph there are linear edges" msgstr "" -msgid "When ``type`` = **'e'**." +msgid "Contracting vertex :math:`3`," msgstr "" -msgid "Decreasing sequence starting from **-1**." +msgid "The vertex :math:`3` is removed from the graph" msgstr "" -msgid "Representing a pseudo `id` as is not incorporated in the set of original edges." +msgid "The edges :math:`2 \\rightarrow 3` and :math:`w \\rightarrow z` are removed from the graph." msgstr "" -msgid "Array of contracted vertex identifiers." +msgid "A new edge :math:`2 \\rightarrow 4` is inserted represented with red color." msgstr "" -msgid "When ``type`` = **'v'**: :math:`-1`" +msgid "Contracting vertex :math:`2`:" msgstr "" -msgid "When ``type`` = **'e'**: Identifier of the source vertex of the current edge (``source``, ``target``)." +msgid "The vertex :math:`2` is removed from the graph" msgstr "" -msgid "When ``type`` = **'e'**: Identifier of the target vertex of the current edge (``source``, ``target``)." +msgid "The edges :math:`1 \\rightarrow 2` and :math:`2 \\rightarrow 3` are removed from the graph." msgstr "" -msgid "When ``type`` = **'e'**: Weight of the current edge (``source``, ``target``)." +msgid "A new edge :math:`1 \\rightarrow 3` is inserted represented with red color." msgstr "" -msgid "Only dead end contraction" +msgid "Edge :math:`1 \\rightarrow 3` has the information of cost and the nodes that were contracted." msgstr "" -msgid "Only linear contraction" +msgid "Create the contracted graph." msgstr "" -msgid "pgr_createTopology" +msgid "``pgr_createTopology``" msgstr "" msgid "``pgr_createTopology`` — Builds a network topology based on the geometry information." @@ -8725,10 +8698,7 @@ msgstr "" msgid "This example start a clean topology, with 5 edges, and then its incremented to the rest of the edges." msgstr "" -msgid "The example uses the :doc:`sampledata` network." -msgstr "" - -msgid "pgr_createVerticesTable" +msgid "``pgr_createVerticesTable``" msgstr "" msgid "``pgr_createVerticesTable`` — Reconstructs the vertices table based on the source and target information." @@ -8899,7 +8869,7 @@ msgstr "" msgid "`Wikipedia: Cuthill-McKee Ordering `__" msgstr "" -msgid "pgr_dagShortestPath - Experimental" +msgid "``pgr_dagShortestPath`` - Experimental" msgstr "" msgid "``pgr_dagShortestPath`` — Returns the shortest path for weighted directed acyclic graphs(DAG). In particular, the DAG shortest paths algorithm implemented by Boost.Graph." @@ -8917,73 +8887,127 @@ msgstr "" msgid "The algorithm relies on topological sorting the dag to impose a linear ordering on the vertices, and thus is more efficient for DAG's than either the Dijkstra or Bellman-Ford algorithm." msgstr "" -msgid "Process is valid for weighted directed acyclic graphs only. otherwise it will throw warnings." +msgid "Process is valid for weighted directed acyclic graphs only. otherwise it will throw warnings." +msgstr "" + +msgid "The `agg_cost` the non included values `(v, v)` is `0`" +msgstr "" + +msgid "The `agg_cost` the non included values `(u, v)` is :math:`\\infty`" +msgstr "" + +msgid "Running time: :math:`O(| start\\_vids | * (V + E))`" +msgstr "" + +msgid "pgr_dagShortestPath(`Edges SQL`_, **start vid**, **end vid**)" +msgstr "" + +msgid "pgr_dagShortestPath(`Edges SQL`_, **start vid**, **end vids**)" +msgstr "" + +msgid "pgr_dagShortestPath(`Edges SQL`_, **start vids**, **end vid**)" +msgstr "" + +msgid "pgr_dagShortestPath(`Edges SQL`_, **start vids**, **end vids**)" +msgstr "" + +msgid "pgr_dagShortestPath(`Edges SQL`_, `Combinations SQL`_)" +msgstr "" + +msgid "From vertex :math:`5` to vertex :math:`11` on a **directed** graph" +msgstr "" + +msgid "From vertex :math:`5` to vertices :math:`\\{7, 11\\}`" +msgstr "" + +msgid "From vertices :math:`\\{5, 10\\}` to vertex :math:`11`" +msgstr "" + +msgid "From vertices :math:`\\{5, 15\\}` to vertices :math:`\\{11, 17\\}` on an **undirected** graph" +msgstr "" + +msgid "Return columns" +msgstr "" + +msgid "Making **start_vids** the same as **end_vids**" +msgstr "" + +msgid "`Boost: DAG shortest paths `__" +msgstr "" + +msgid "https://en.wikipedia.org/wiki/Topological_sorting" +msgstr "" + +msgid "``pgr_degree``" +msgstr "" + +msgid "``pgr_degree`` — For each vertex in an undirected graph, return the count of edges incident to the vertex." msgstr "" -msgid "The `agg_cost` the non included values `(v, v)` is `0`" +msgid "Error messages adjustment." msgstr "" -msgid "The `agg_cost` the non included values `(u, v)` is :math:`\\infty`" +msgid "New signature with only Edges SQL." msgstr "" -msgid "Running time: :math:`O(| start\\_vids | * (V + E))`" +msgid "Calculates the degree of the vertices of an undirected graph" msgstr "" -msgid "pgr_dagShortestPath(`Edges SQL`_, **start vid**, **end vid**)" +msgid "The degree (or valency) of a vertex of a graph is the number of edges that are incident to the vertex." msgstr "" -msgid "pgr_dagShortestPath(`Edges SQL`_, **start vid**, **end vids**)" +msgid "A loop contributes 2 to a vertex's degree." msgstr "" -msgid "pgr_dagShortestPath(`Edges SQL`_, **start vids**, **end vid**)" +msgid "A vertex with degree 0 is called an isolated vertex." msgstr "" -msgid "pgr_dagShortestPath(`Edges SQL`_, **start vids**, **end vids**)" +msgid "Isolated vertex is not part of the result" msgstr "" -msgid "pgr_dagShortestPath(`Edges SQL`_, `Combinations SQL`_)" +msgid "Vertex not participating on the subgraph is considered and isolated vertex." msgstr "" -msgid "From vertex :math:`5` to vertex :math:`11` on a **directed** graph" +msgid "There can be a ``dryrun`` execution and the code used to get the answer will be shown in a PostgreSQL ``NOTICE``." msgstr "" -msgid "From vertex :math:`5` to vertices :math:`\\{7, 11\\}`" +msgid "The code can be used as base code for the particular application requirements." msgstr "" -msgid "From vertices :math:`\\{5, 10\\}` to vertex :math:`11`" +msgid "No ordering is performed." msgstr "" -msgid "From vertices :math:`\\{5, 15\\}` to vertices :math:`\\{11, 17\\}` on an **undirected** graph" +msgid "pgr_degree(`Edges SQL`_ , [``dryrun``])" msgstr "" -msgid "Return columns" +msgid "pgr_degree(`Edges SQL`_ , `Vertex SQL`_, [``dryrun``])" msgstr "" -msgid "Making **start_vids** the same as **end_vids**" +msgid "RETURNS SETOF |result-degree|" msgstr "" -msgid "https://en.wikipedia.org/wiki/Topological_sorting" +msgid "Edges" msgstr "" -msgid "``pgr_degree`` -- Proposed" +msgid "example" msgstr "" -msgid "``pgr_degree`` — For each vertex in an undirected graph, return the count of edges incident to the vertex." +msgid "Get the degree of the vertices defined on the edges table" msgstr "" -msgid "Calculates the degree of the vertices of an **undirected** graph" +msgid "Edges and Vertices" msgstr "" -msgid "pgr_degree(`Edges SQL`_ , `Vertex SQL`_, [``dryrun``])" +msgid "Extracting the vertex information" msgstr "" -msgid "RETURNS SETOF |result-degree|" +msgid "``pgr_degree`` can use :doc:`pgr_extractVertices` embedded in the call." msgstr "" -msgid "Extracting the vertex information" +msgid "For decent size networks, it is best to prepare your vertices table before hand and use it on ``pgr_degree`` calls. (See `Using a vertex table`_)" msgstr "" -msgid "pgr_degree can utilize output from `pgr_extractVertices` or can have `pgr_extractVertices` embedded in the call. For decent size networks, it is best to prep your vertices table before hand and use that vertices table for pgr_degree calls." +msgid "Calculate the degree of the nodes:" msgstr "" msgid "`Vertex SQL`_" @@ -8998,13 +9022,16 @@ msgstr "" msgid "When true do not process and get in a NOTICE the resulting query." msgstr "" -msgid "Vertex SQL" +msgid "For the `Edges and Vertices`_ signature:" msgstr "" -msgid "``in_edges``" +msgid "For the `Edges`_ signature:" msgstr "" -msgid "``BIGINT[]``" +msgid "Vertex SQL" +msgstr "" + +msgid "``in_edges``" msgstr "" msgid "Array of identifiers of the edges that have the vertex ``id`` as *first end point*." @@ -9031,9 +9058,45 @@ msgstr "" msgid "Number of edges that are incident to the vertex ``id``" msgstr "" +msgid "Degree of a loop" +msgstr "" + +msgid "Using the `Edges`_ signature." +msgstr "" + +msgid "Using the `Edges and Vertices`_ signature." +msgstr "" + msgid "Degree of a sub graph" msgstr "" +msgid "For the following is a subgraph of the :doc:`sampledata`:" +msgstr "" + +msgid ":math:`E = \\{(1, 5 \\leftrightarrow 6), (1, 6 \\leftrightarrow 10)\\}`" +msgstr "" + +msgid ":math:`V = \\{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17\\}`" +msgstr "" + +msgid "The vertices not participating on the edge are considered isolated" +msgstr "" + +msgid "their degree is 0 in the subgraph and" +msgstr "" + +msgid "their degree is not shown in the output." +msgstr "" + +msgid "Using a vertex table" +msgstr "" + +msgid "For decent size networks, it is best to prepare your vertices table before hand and use it on ``pgr_degree`` calls." +msgstr "" + +msgid "Extract the vertex information and save into a table:" +msgstr "" + msgid "Dry run execution" msgstr "" @@ -9043,31 +9106,34 @@ msgstr "" msgid "The results can be used as base code to make a refinement based on the backend development needs." msgstr "" -msgid "Degree from an existing table" +msgid "Finding dead ends" msgstr "" -msgid "If you have a vertices table already built using ``pgr_extractVertices`` and want the degree of the whole graph rather than a subset, you can forgo using pgr_degree and work with the ``in_edges`` and ``out_edges`` columns directly." +msgid "If there is a vertices table already built using ``pgr_extractVertices`` and want the degree of the whole graph rather than a subset, it can be forgo using ``pgr_degree`` and work with the ``in_edges`` and ``out_edges`` columns directly." msgstr "" -msgid ":doc:`pgr_extractVertices`" +msgid "The degree of a dead end is 1." msgstr "" -msgid "``pgr_depthFirstSearch`` - Proposed" +msgid "Finding linear vertices" msgstr "" -msgid "``pgr_depthFirstSearch`` — Returns a depth first search traversal of the graph. The graph can be directed or undirected." +msgid "The degree of a linear vertex is 2." msgstr "" -msgid "Version 3.3.0" +msgid "If there is a vertices table already built using the ``pgr_extractVertices``" +msgstr "" + +msgid ":doc:`pgr_extractVertices`" msgstr "" -msgid "Promoted to **proposed** function" +msgid "``pgr_depthFirstSearch`` - Proposed" msgstr "" -msgid "``pgr_depthFirstSearch`` (`Single Vertex`_)" +msgid "``pgr_depthFirstSearch`` — Returns a depth first search traversal of the graph. The graph can be directed or undirected." msgstr "" -msgid "``pgr_depthFirstSearch`` (`Multiple Vertices`_)" +msgid "Version 3.3.0" msgstr "" msgid "Depth First Search algorithm is a traversal algorithm which starts from a root vertex, goes as deep as possible, and backtracks once a vertex is reached with no adjacent vertices or with all visited adjacent vertices. The traversal continues until all the vertices reachable from the root vertex are visited." @@ -9109,10 +9175,10 @@ msgstr "" msgid "Same as `Single vertex`_ but with edges in descending order of ``id``." msgstr "" -msgid "`Boost: Depth First Search algorithm documentation `__" +msgid "`Boost: Depth First Search `__" msgstr "" -msgid "`Boost: Undirected DFS algorithm documentation `__" +msgid "`Boost: Undirected DFS `__" msgstr "" msgid "`Wikipedia: Depth First Search algorithm `__" @@ -9127,43 +9193,31 @@ msgstr "" msgid "Version 3.5.0" msgstr "" -msgid "``pgr_dijkstra`` (`One to One`_) added ``start_vid`` and ``end_vid`` columns." +msgid "pgr_dijkstra(One to One) added ``start_vid`` and ``end_vid`` columns." msgstr "" -msgid "``pgr_dijkstra`` (`One to Many`_) added ``end_vid`` column." +msgid "pgr_dijkstra(One to Many) added ``end_vid`` column." msgstr "" -msgid "``pgr_dijkstra`` (`Many to One`_) added ``start_vid`` column." +msgid "pgr_dijkstra(Many to One) added ``start_vid`` column." msgstr "" msgid "Version 3.1.0" msgstr "" -msgid "``pgr_dijkstra`` (`Combinations`_)" -msgstr "" - -msgid "**Official** functions" -msgstr "" - msgid "Version 2.2.0" msgstr "" -msgid "New **proposed** functions:" -msgstr "" - -msgid "``pgr_dijkstra`` (`One to Many`_)" -msgstr "" - -msgid "``pgr_dijkstra`` (`Many to One`_)" +msgid "pgr_dijkstra(One to Many)" msgstr "" -msgid "``pgr_dijkstra`` (`Many to Many`_)" +msgid "pgr_dijkstra(Many to One)" msgstr "" -msgid "Signature change on ``pgr_dijkstra`` (`One to One`_)" +msgid "pgr_dijkstra(Many to Many)" msgstr "" -msgid "**Official** ``pgr_dijkstra`` (`One to One`_)" +msgid "Signature change on pgr_dijkstra(One to One)" msgstr "" msgid "pgr_dijkstra(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" @@ -9343,6 +9397,9 @@ msgstr "" msgid "37) Using `Combinations`_" msgstr "" +msgid "`Boost: Dijkstra shortest paths `__" +msgstr "" + msgid "https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm" msgstr "" @@ -9352,9 +9409,6 @@ msgstr "" msgid "``pgr_dijkstraCost`` - Total cost of the shortest path using Dijkstra algorithm." msgstr "" -msgid "``pgr_dijkstraCost`` (`Combinations`_)" -msgstr "" - msgid "The ``pgr_dijkstraCost`` function sumarizes of the cost of the shortest path using Dijkstra Algorithm." msgstr "" @@ -9595,9 +9649,6 @@ msgstr "" msgid "When ``false``: ``cap`` limit per ``Start vid`` will be returned" msgstr "" -msgid "boost: https://www.boost.org/libs/graph/doc/table_of_contents.html" -msgstr "" - msgid "Wikipedia: https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm" msgstr "" @@ -9733,6 +9784,9 @@ msgstr "" msgid "``pgr_drivingDistance`` - Returns the driving distance from a start node." msgstr "" +msgid "Standarizing output columns to |result-spantree|" +msgstr "" + msgid "Added ``depth`` and ``start_vid`` result columns." msgstr "" @@ -9742,13 +9796,16 @@ msgstr "" msgid "Added ``depth`` and ``pred`` result columns." msgstr "" -msgid "Signature change pgr_drivingDistance(single vertex)" +msgid "Signature change:" msgstr "" -msgid "New **Official** pgr_drivingDistance(multiple vertices)" +msgid "pgr_drivingDistance(single vertex)" +msgstr "" + +msgid "New official signature:" msgstr "" -msgid "Official:: pgr_drivingDistance(single vertex)" +msgid "pgr_drivingDistance(multiple vertices)" msgstr "" msgid "Using the Dijkstra algorithm, extracts all the nodes that have costs less than or equal to the value ``distance``. The edges extracted will conform to the corresponding spaning tree." @@ -9790,7 +9847,7 @@ msgstr "" msgid "From vertices :math:`\\{11, 16\\}` for a distance of :math:`3.0` on an undirected graph" msgstr "" -msgid "pgr_edgeColoring - Experimental" +msgid "``pgr_edgeColoring`` - Experimental" msgstr "" msgid "``pgr_edgeColoring`` — Returns the edge coloring of undirected and loop-free graphs" @@ -9850,13 +9907,16 @@ msgstr "" msgid "Graph coloring of pgRouting :doc:`sampledata`" msgstr "" -msgid "``pgr_edgeDisjointPaths``" +msgid "`Boost: Edge Coloring `__" msgstr "" -msgid "``pgr_edgeDisjointPaths`` — Calculates edge disjoint paths between two groups of vertices." +msgid "`Wikipedia: Graph coloring `__" +msgstr "" + +msgid "``pgr_edgeDisjointPaths``" msgstr "" -msgid "New **proposed** function:" +msgid "``pgr_edgeDisjointPaths`` — Calculates edge disjoint paths between two groups of vertices." msgstr "" msgid "pgr_edgeDisjointPaths(Combinations)" @@ -9922,9 +9982,6 @@ msgstr "" msgid "``pgr_edmondsKarp`` — Calculates the flow on the graph edges that maximizes the flow from the sources to the targets using Edmonds Karp Algorithm." msgstr "" -msgid "``pgr_edmondsKarp`` (`Combinations`_)" -msgstr "" - msgid "Renamed from ``pgr_maxFlowEdmondsKarp``" msgstr "" @@ -9946,31 +10003,19 @@ msgstr "" msgid "pgr_edmondsKarp(`Edges SQL`_, `Combinations SQL`_)" msgstr "" -msgid "https://www.boost.org/libs/graph/doc/edmonds_karp_max_flow.html" +msgid "`Boost: Edmonds Karp max flow `__" msgstr "" msgid "https://en.wikipedia.org/wiki/Edmonds%E2%80%93Karp_algorithm" msgstr "" -msgid "``pgr_edwardMoore - Experimental``" +msgid "``pgr_edwardMoore`` - Experimental" msgstr "" msgid "``pgr_edwardMoore`` — Returns the shortest path using Edward-Moore algorithm." msgstr "" -msgid "``pgr_edwardMoore`` (`Combinations`_)" -msgstr "" - -msgid "``pgr_edwardMoore`` (`One to One`_)" -msgstr "" - -msgid "``pgr_edwardMoore`` (`One to Many`_)" -msgstr "" - -msgid "``pgr_edwardMoore`` (`Many to One`_)" -msgstr "" - -msgid "``pgr_edwardMoore`` (`Many to Many`_)" +msgid "pgr_edwardMoore(Combinations)" msgstr "" msgid "Edward Moore’s Algorithm is an improvement of the Bellman-Ford Algorithm. It can compute the shortest paths from a single source vertex to all other vertices in a weighted directed graph. The main difference between Edward Moore's Algorithm and Bellman Ford's Algorithm lies in the run time." @@ -10015,15 +10060,12 @@ msgstr "" msgid "https://en.wikipedia.org/wiki/Shortest_Path_Faster_Algorithm" msgstr "" -msgid "pgr_extractVertices -- Proposed" +msgid "``pgr_extractVertices``" msgstr "" msgid "``pgr_extractVertices`` — Extracts the vertices information" msgstr "" -msgid "Classified as **proposed** function" -msgstr "" - msgid "This is an auxiliary function for extracting the vertex information of the set of edges of a graph." msgstr "" @@ -10087,361 +10129,184 @@ msgstr "" msgid "To use this inner query the columns ``geom``, ``startpoint`` and ``endpoint`` should not be part of the set of columns." msgstr "" -msgid "``NULL`` When the ``id`` is not part of the inner query" -msgstr "" - -msgid "X value of the point geometry" -msgstr "" - -msgid "``NULL`` When no geometry is provided" -msgstr "" - -msgid "Geometry of the point" -msgstr "" - -msgid "To get the query generated used to get the vertex information, use ``dryrun := true``." -msgstr "" - -msgid "``pgr_findCloseEdges``" -msgstr "" - -msgid "``pgr_findCloseEdges`` - Finds the close edges to a point geometry." -msgstr "" - -msgid "New **proposed** signatures:" -msgstr "" - -msgid "``pgr_findCloseEdges`` (`One point`_)" -msgstr "" - -msgid "``pgr_findCloseEdges`` (`Many points`_)" -msgstr "" - -msgid "``pgr_findCloseEdges`` - An utility function that finds the closest edge to a point geometry." -msgstr "" - -msgid "The geometries must be in the same coordinate system (have the same SRID)." -msgstr "" - -msgid "The code to do the calculations can be obtained for further specific adjustments needed by the application." -msgstr "" - -msgid "``EMTPY SET`` is returned on dryrun executions" -msgstr "" - -msgid "pgr_findCloseEdges(`Edges SQL`_, **point**, **tolerance**, [**options**])" -msgstr "" - -msgid "pgr_findCloseEdges(`Edges SQL`_, **points**, **tolerance**, [**options**])" -msgstr "" - -msgid "**options:** ``[cap, partial, dryrun]``" -msgstr "" - -msgid "Returns set of |result-find|" -msgstr "" - -msgid "One point" -msgstr "" - -msgid "Default: ``cap => 1``" -msgstr "" - -msgid "Maximum one row answer." -msgstr "" - -msgid "Default: ``partial => true``" -msgstr "" - -msgid "With less calculations as possible." -msgstr "" - -msgid "Default: ``dryrun => false``" -msgstr "" - -msgid "Process query" -msgstr "" - -msgid "Returns" -msgstr "" - -msgid "values on ``edge_id``, ``fraction``, ``side`` columns." -msgstr "" - -msgid "``NULL`` on ``distance``, ``geom``, ``edge`` columns." -msgstr "" - -msgid "Many points" -msgstr "" - -msgid "Find at most :math:`2` edges close to all vertices on the points of interest table." -msgstr "" - -msgid "One answer per point, as small as possible." -msgstr "" - -msgid "Columns ``edge_id``, ``fraction``, ``side`` and ``geom`` are returned with values." -msgstr "" - -msgid "``geom`` contains the original point geometry to assist on deterpartialing to which point geometry the row belongs to." -msgstr "" - -msgid "**point**" -msgstr "" - -msgid "The point geometry" -msgstr "" - -msgid "**points**" -msgstr "" - -msgid "``POINT[]``" -msgstr "" - -msgid "An array of point geometries" -msgstr "" - -msgid "**tolerance**" -msgstr "" - -msgid "Max distance between geometries" -msgstr "" - -msgid "Limit output rows" -msgstr "" - -msgid "``partial``" -msgstr "" - -msgid "When ``true`` only columns needed for :doc:`withPoints-category` are calculated." -msgstr "" - -msgid "When ``false`` all columns are calculated" -msgstr "" - -msgid "When ``false`` calculations are performed." -msgstr "" - -msgid "When ``true`` calculations are not performed and the query to do the calculations is exposed in a PostgreSQL ``NOTICE``." -msgstr "" - -msgid "The ``LINESTRING`` geometry of the edge." -msgstr "" - -msgid "When :math:`cap = 1`, it is the closest edge." -msgstr "" - -msgid "Value in <0,1> that indicates the relative postition from the first end-point of the edge." -msgstr "" - -msgid "Value in ``[r, l]`` indicating if the point is:" -msgstr "" - -msgid "In the right ``r``." -msgstr "" - -msgid "In the left ``l``." -msgstr "" - -msgid "When the point is on the line it is considered to be on the right." -msgstr "" - -msgid "``distance``" -msgstr "" - -msgid "Distance from point to edge." -msgstr "" - -msgid "``NULL`` when ``cap = 1`` on the `One point`_ signature" -msgstr "" - -msgid "``POINT`` geometry" -msgstr "" - -msgid "`One Point`_: Contains the point on the edge that is ``fraction`` away from the starting point of the edge." -msgstr "" - -msgid "`Many Points`_: Contains the corresponding **original point**" -msgstr "" - -msgid "``LINESTRING`` geometry from the **original point** to the closest point of the edge with identifier ``edge_id``" +msgid "``NULL`` When the ``id`` is not part of the inner query" msgstr "" -msgid "One point results" +msgid "X value of the point geometry" msgstr "" -msgid "The green nodes is the **original point**" +msgid "``NULL`` When no geometry is provided" msgstr "" -msgid "The geometry ``geom`` is a point on the :math:`sp \\rightarrow ep` edge." +msgid "Geometry of the point" msgstr "" -msgid "The geometry ``edge`` is a line that connects the **original point** with ``geom``" +msgid "To get the query generated used to get the vertex information, use ``dryrun := true``." msgstr "" -msgid "Many point results" +msgid "``pgr_findCloseEdges``" msgstr "" -msgid "The green nodes are the **original points**" +msgid "``pgr_findCloseEdges`` - Finds the close edges to a point geometry." msgstr "" -msgid "The geometry ``geom``, marked as **g1** and **g2** are the **original points**" +msgid "``partial`` option is removed." msgstr "" -msgid "The geometry ``edge``, marked as **edge1** and **edge2** is a line that connects the **original point** with the closest point on the :math:`sp \\rightarrow ep` edge." +msgid "``pgr_findCloseEdges`` - An utility function that finds the closest edge to a point geometry." msgstr "" -msgid "One point examples" +msgid "The geometries must be in the same coordinate system (have the same SRID)." msgstr "" -msgid "At most two answers" +msgid "The code to do the calculations can be obtained for further specific adjustments needed by the application." msgstr "" -msgid "``cap => 2``" +msgid "``EMPTY SET`` is returned on dryrun executions" msgstr "" -msgid "Maximum two row answer." +msgid "pgr_findCloseEdges(`Edges SQL`_, **point**, **tolerance**, [**options**])" msgstr "" -msgid "Understanding the result" +msgid "pgr_findCloseEdges(`Edges SQL`_, **points**, **tolerance**, [**options**])" msgstr "" -msgid "``NULL`` on ``geom``, ``edge``" +msgid "**options:** ``[cap, dryrun]``" msgstr "" -msgid "``edge_id`` identifier of the edge close to the **original point**" +msgid "Returns set of |result-find|" msgstr "" -msgid "Two edges are withing :math:`0.5` distance units from the **original point**: :math:`{5, 8}`" +msgid "One point" msgstr "" -msgid "For edge :math:`5`:" +msgid "Get two close edges to points of interest with :math:`pid = 5`" msgstr "" -msgid "``fraction``: The closest point from the **original point** is at the :math:`0.8` fraction of the edge :math:`5`." +msgid "``cap => 2``" msgstr "" -msgid "``side``: The **original point** is located to the left side of edge :math:`5`." +msgid "Many points" msgstr "" -msgid "``distance``: The **original point** is located :math:`0.1` length units from edge :math:`5`." +msgid "For each points of interests, find the closest edge." msgstr "" -msgid "For edge :math:`8`:" +msgid "**point**" msgstr "" -msgid "``fraction``: The closest point from the **original point** is at the :math:`0.89..` fraction of the edge :math:`8`." +msgid "The point geometry" msgstr "" -msgid "``side``: The **original point** is located to the right side of edge :math:`8`." +msgid "**points**" msgstr "" -msgid "``distance``: The **original point** is located :math:`0.19..` length units from edge :math:`8`." +msgid "``POINT[]``" msgstr "" -msgid "One answer, all columns" +msgid "An array of point geometries" msgstr "" -msgid "``partial => false``" +msgid "**tolerance**" msgstr "" -msgid "Calculate all columns" +msgid "Max distance between geometries" msgstr "" -msgid "``edge_id`` identifier of the edge **closest** to the **original point**" +msgid "Limit output rows" msgstr "" -msgid "From all edges within :math:`0.5` distance units from the **original point**: :math:`{5}` is the closest one." +msgid "When ``false`` calculations are performed." msgstr "" -msgid "``geom``: Contains the geometry of the closest point on edge :math:`5` from the **original point**." +msgid "When ``true`` calculations are not performed and the query to do the calculations is exposed in a PostgreSQL ``NOTICE``." msgstr "" -msgid "``edge``: Contains the ``LINESTRING`` geometry of the **original point** to the closest point on on edge :math:`5` ``geom``" +msgid "The ``LINESTRING`` geometry of the edge." msgstr "" -msgid "At most two answers with all columns" +msgid "When :math:`cap = 1`, it is the closest edge." msgstr "" -msgid "Understanding the result:" +msgid "Value in <0,1> that indicates the relative position from the first end-point of the edge." msgstr "" -msgid "``geom``: Contains the geometry of the closest point on edge :math:`8` from the **original point**." +msgid "Value in ``[r, l]`` indicating if the point is:" msgstr "" -msgid "``edge``: Contains the ``LINESTRING`` geometry of the **original point** to the closest point on on edge :math:`8` ``geom``" +msgid "At the right ``r`` of the segment." msgstr "" -msgid "One point dry run execution" +msgid "When the point is on the line it is considered to be on the right." msgstr "" -msgid "Returns ``EMPTY SET``." +msgid "At the left ``l`` of the segment." msgstr "" -msgid "``partial => true``" +msgid "``distance``" msgstr "" -msgid "Is ignored" +msgid "Distance from the point to the edge." msgstr "" -msgid "Because it is a **dry run** excecution, the code for all calculations are shown on the PostgreSQL ``NOTICE``." +msgid "Original ``POINT`` geometry." msgstr "" -msgid "``dryrun => true``" +msgid "``LINESTRING`` geometry that connects the original **point** to the closest point of the edge with identifier ``edge_id``" msgstr "" -msgid "Do not process query" +msgid "One point in an edge" msgstr "" -msgid "Generate a PostgreSQL ``NOTICE`` with the code used to calculate all columns" +msgid "The green node is the original point." msgstr "" -msgid "``cap`` and **original point** are used in the code" +msgid "``geom`` has the value of the original point." msgstr "" -msgid "Many points examples" +msgid "The geometry ``edge`` is a line that connects the original point with the edge :math:`sp \\rightarrow ep` edge." msgstr "" -msgid "At most two answers per point" +msgid "The point is located at the left of the edge." msgstr "" -msgid "``NULL`` on ``edge``" +msgid "One point dry run execution" msgstr "" -msgid "``edge_id`` identifier of the edge close to a **original point** (``geom``)" +msgid "Using the query from the previous example:" msgstr "" -msgid "Two edges at most withing :math:`0.5` distance units from each of the **original points**:" +msgid "Returns ``EMPTY SET``." msgstr "" -msgid "For ``POINT(1.8 0.4)`` and ``POINT(0.3 1.8)`` only one edge was found." +msgid "``dryrun => true``" msgstr "" -msgid "For the rest of the points two edges were found." +msgid "Generates a PostgreSQL ``NOTICE`` with the code used." msgstr "" -msgid "For point ``POINT(2.9 1.8)``" +msgid "The generated code can be used as a starting base code for additional requirements, like taking into consideration the SRID." msgstr "" -msgid "Edge :math:`5` is before :math:`8` therefore edge :math:`5` has the shortest distance to ``POINT(2.9 1.8)``." +msgid "Many points in an edge" msgstr "" -msgid "One answer per point, all columns" +msgid "The green nodes are the **original points**" msgstr "" -msgid "For the **original point** ``POINT(2.9 1.8)``" +msgid "The geometry ``geom``, marked as **g1** and **g2** are the **original points**" msgstr "" -msgid "Edge :math:`5` is the closest edge to the **original point**" +msgid "The geometry ``edge``, marked as **edge1** and **edge2** is a line that connects the **original point** with the closest point on the :math:`sp \\rightarrow ep` edge." msgstr "" -msgid "``geom``: Contains the geometry of the **original point** ``POINT(2.9 1.8)``" +msgid "Many points dry run execution" msgstr "" -msgid "``edge``: Contains the ``LINESTRING`` geometry of the **original point** (``geom``) to the closest point on on edge." +msgid "Do not process query" msgstr "" -msgid "Many points dry run execution" +msgid "Generate a PostgreSQL ``NOTICE`` with the code used to calculate all columns" msgstr "" msgid "Find at most two routes to a given point" @@ -10471,10 +10336,10 @@ msgstr "" msgid "A unique identifier." msgstr "" -msgid "Identifier of the edge nearest edge that allows an arrival to the point." +msgid "Identifier of the nearest segment." msgstr "" -msgid "Is it on the left, right or both sides of the segment ``edge_id``" +msgid "Is it on the left, right or both sides of the segment ``edge_id``." msgstr "" msgid "Where in the segment is the point located." @@ -10483,13 +10348,31 @@ msgstr "" msgid "The geometry of the points." msgstr "" +msgid "The distance between ``geom`` and the segment ``edge_id``." +msgstr "" + +msgid "A segment that connects the ``geom`` of the point to the closest point on the segment ``edge_id``." +msgstr "" + msgid "``newPoint``" msgstr "" -msgid "The geometry of the points moved on top of the segment." +msgid "A point on segment ``edge_id`` that is the closest to ``geom``." +msgstr "" + +msgid "Points of interest fill up" msgstr "" -msgid "Points of interest fillup" +msgid "Inserting the points of interest." +msgstr "" + +msgid "Filling the rest of the table." +msgstr "" + +msgid "Any other additional modification: In this manual, point :math:`6` can be reached from both sides." +msgstr "" + +msgid "The points of interest:" msgstr "" msgid "``pgr_floydWarshall``" @@ -10510,18 +10393,12 @@ msgstr "" msgid "Boost `floyd-Warshall `_" msgstr "" -msgid "Queries uses the :doc:`sampledata` network." -msgstr "" - msgid "``pgr_full_version``" msgstr "" msgid "``pgr_full_version`` — Get the details of pgRouting version information." msgstr "" -msgid "New **official** function" -msgstr "" - msgid "Get complete details of pgRouting version information" msgstr "" @@ -10588,13 +10465,10 @@ msgstr "" msgid "Git hash of pgRouting build" msgstr "" -msgid "``pgr_hawickCircuits - Experimental``" -msgstr "" - -msgid "``pgr_hawickCircuits`` — Returns the list of cirucits using hawick circuits algorithm." +msgid "``pgr_hawickCircuits`` - Experimental" msgstr "" -msgid "``pgr_hawickCircuits``" +msgid "``pgr_hawickCircuits`` — Returns the list of ciruits using hawick circuits algorithm." msgstr "" msgid "Hawick Circuit algorithm, is published in 2008 by Ken Hawick and Health A. James. This algorithm solves the problem of detecting and enumerating circuits in graphs. It is capable of circuit enumeration in graphs with directed-arcs, multiple-arcs and self-arcs with a memory efficient and high-performance im-plementation. It is an extension of Johnson's Algorithm of finding all the elementary circuits of a directed graph." @@ -10693,7 +10567,7 @@ msgstr "" msgid "The new graph is not planar because it has a :math:`K_5` subgraph. Edges in blue represent :math:`K_5` subgraph." msgstr "" -msgid "https://www.boost.org/libs/graph/doc/boyer_myrvold.html" +msgid "`Boost: Boyer Myrvold `__" msgstr "" msgid "``pgr_johnson``" @@ -10735,6 +10609,9 @@ msgstr "" msgid "``pgr_kruskalBFS`` — Kruskal's algorithm for Minimum Spanning Tree with breadth First Search ordering." msgstr "" +msgid "Added ``pred`` result columns." +msgstr "" + msgid "Visits and extracts the nodes information in Breath First Search ordering of the Minimum Spanning Tree created using Kruskal's algorithm." msgstr "" @@ -10795,7 +10672,7 @@ msgstr "" msgid "pgr_kruskalDFS(`Edges SQL`_, **root vids**, [``max_depth``])" msgstr "" -msgid "pgr_lengauerTarjanDominatorTree -Experimental" +msgid "``pgr_lengauerTarjanDominatorTree`` - Experimental" msgstr "" msgid "``pgr_lengauerTarjanDominatorTree`` — Returns the immediate dominator of all vertices." @@ -10846,18 +10723,21 @@ msgstr "" msgid "Dominator tree of another component." msgstr "" -msgid "`Boost: Lengauer-Tarjan dominator tree algorithm `__" +msgid "`Boost: Lengauer-Tarjan dominator `__" msgstr "" msgid "`Wikipedia: dominator tree `__" msgstr "" -msgid "pgr_lineGraph - Proposed" +msgid "``pgr_lineGraph`` - Proposed" msgstr "" msgid "``pgr_lineGraph`` — Transforms the given graph into its corresponding edge-based graph." msgstr "" +msgid "Works for directed and undirected graphs." +msgstr "" + msgid "Given a graph :math:`G`, its line graph :math:`L(G)` is a graph such that:" msgstr "" @@ -10894,15 +10774,9 @@ msgstr "" msgid "Gives a local identifier for the edge" msgstr "" -msgid "Identifier of the source vertex of the current edge." -msgstr "" - msgid "When `negative`: the source is the reverse edge in the original graph." msgstr "" -msgid "Identifier of the target vertex of the current edge." -msgstr "" - msgid "When `negative`: the target is the reverse edge in the original graph." msgstr "" @@ -11068,7 +10942,7 @@ msgstr "" msgid "Full line graph of subgraph of edges :math:`\\{4, 7, 8, 10\\}`" msgstr "" -msgid "The examples of this section are based on the :doc:`sampledata` network. The examples include the subgraph including edges 4, 7, 8, and 10 with ``reverse_cost``." +msgid "The examples include the subgraph including edges 4, 7, 8, and 10 with ``reverse_cost``." msgstr "" msgid "The data" @@ -11245,25 +11119,28 @@ msgstr "" msgid "Returns set of |result-component-make|" msgstr "" -msgid "Query done on :doc:`sampledata` network gives the list of edges that are needed to connect the graph." +msgid "List of edges that are needed to connect the graph." msgstr "" -msgid "https://www.boost.org/libs/graph/doc/make_connected.html" +msgid "`Boost: make connected `__" msgstr "" -msgid "pgr_maxCardinalityMatch" +msgid "``pgr_maxCardinalityMatch``" msgstr "" msgid "``pgr_maxCardinalityMatch`` — Calculates a maximum cardinality matching in a graph." msgstr "" +msgid "pgr_maxCardinalityMatch(text) returns only ``edge`` column." +msgstr "" + msgid "Deprecated signature" msgstr "" -msgid "``pgr_maxCardinalityMatch(text,boolean)``" +msgid "pgr_maxCardinalityMatch(text,boolean)" msgstr "" -msgid "``directed => false`` when used." +msgid "directed => ``false`` when used." msgstr "" msgid "Renamed from ``pgr_maximumCardinalityMatching``" @@ -11305,7 +11182,7 @@ msgstr "" msgid "Identifier of the edge in the original query." msgstr "" -msgid "https://www.boost.org/libs/graph/doc/maximum_matching.html" +msgid "`Boost: maximum_matching `__" msgstr "" msgid "https://en.wikipedia.org/wiki/Matching_%28graph_theory%29" @@ -11320,18 +11197,15 @@ msgstr "" msgid "``pgr_maxFlow`` — Calculates the maximum flow in a directed graph from the source(s) to the targets(s) using the Push Relabel algorithm." msgstr "" -msgid "``pgr_maxFlow`` (`Combinations`_)" -msgstr "" - -msgid "New **Proposed** function" -msgstr "" - msgid "Calculates the maximum flow from the sources to the targets." msgstr "" msgid "When the maximum flow is **0** then there is no flow and **0** is returned." msgstr "" +msgid "There is no flow when source has the same vaule as target." +msgstr "" + msgid "Uses the :doc:`pgr_pushRelabel ` algorithm." msgstr "" @@ -11359,7 +11233,7 @@ msgstr "" msgid "Maximum flow possible from the source(s) to the target(s)" msgstr "" -msgid "https://www.boost.org/libs/graph/doc/push_relabel_max_flow.html" +msgid "`Boost: push relabel max flow `__" msgstr "" msgid "https://en.wikipedia.org/wiki/Push%E2%80%93relabel_maximum_flow_algorithm" @@ -11371,7 +11245,10 @@ msgstr "" msgid "``pgr_maxFlowMinCost`` — Calculates the edges that minimizes the total cost of the maximum flow on a graph" msgstr "" -msgid "``pgr_maxFlowMinCost`` (`Combinations`_)" +msgid "pgr_maxFlowMinCost(Combinations)" +msgstr "" + +msgid "|boost| graph inside." msgstr "" msgid "**TODO** check which statement is true:" @@ -11413,16 +11290,13 @@ msgstr "" msgid "Returns set of |result-flow-mincost|" msgstr "" -msgid "https://www.boost.org/libs/graph/doc/successive_shortest_path_nonnegative_weights.html" -msgstr "" - msgid "``pgr_maxFlowMinCost_Cost`` - Experimental" msgstr "" msgid "``pgr_maxFlowMinCost_Cost`` — Calculates the minimum total cost of the maximum flow on a graph" msgstr "" -msgid "``pgr_maxFlowMinCost_Cost`` (`Combinations`_)" +msgid "pgr_maxFlowMinCost_Cost(Combinations)" msgstr "" msgid "**The cost value of all input edges must be nonnegative.**" @@ -11455,7 +11329,7 @@ msgstr "" msgid "Minimum Cost Maximum Flow possible from the source(s) to the target(s)" msgstr "" -msgid "pgr_nodeNetwork" +msgid "``pgr_nodeNetwork``" msgstr "" msgid "``pgr_nodeNetwork`` - Nodes an network edge table." @@ -11827,7 +11701,7 @@ msgstr "" msgid "This data example **lc101** is from data published at https://www.sintef.no/projectweb/top/pdptw/li-lim-benchmark/" msgstr "" -msgid "There are 25 vehciles in the problem all with the same characteristics." +msgid "There are 25 vehicles in the problem all with the same characteristics." msgstr "" msgid "The original orders" @@ -11836,7 +11710,7 @@ msgstr "" msgid "The data comes in different rows for the pickup and the delivery of the same order." msgstr "" -msgid "The original data needs to be converted to an appropiate table:" +msgid "The original data needs to be converted to an appropriate table:" msgstr "" msgid "The query" @@ -11914,9 +11788,6 @@ msgstr "" msgid "``pgr_pushRelabel`` — Calculates the flow on the graph edges that maximizes the flow from the sources to the targets using Push Relabel Algorithm." msgstr "" -msgid "``pgr_pushRelabel`` (`Combinations`_)" -msgstr "" - msgid "Renamed from ``pgr_maxFlowPushRelabel``" msgstr "" @@ -11935,15 +11806,12 @@ msgstr "" msgid "pgr_pushRelabel(`Edges SQL`_, `Combinations SQL`_)" msgstr "" -msgid "pgr_sequentialVertexColoring - Proposed" +msgid "``pgr_sequentialVertexColoring`` - Proposed" msgstr "" msgid "``pgr_sequentialVertexColoring`` — Returns the vertex coloring of an undirected graph, using greedy approach." msgstr "" -msgid "Promoted to **proposed** signature" -msgstr "" - msgid "Sequential vertex coloring algorithm is a graph coloring algorithm in which color identifiers are assigned to the vertices of a graph in a sequential manner, such that no edge connects two identically colored vertices." msgstr "" @@ -11977,7 +11845,10 @@ msgstr "" msgid "pgr_sequentialVertexColoring(`Edges SQL`_)" msgstr "" -msgid "pgr_stoerWagner - Experimental" +msgid "`Boost: Sequential Vertex Coloring `__" +msgstr "" + +msgid "``pgr_stoerWagner`` - Experimental" msgstr "" msgid "``pgr_stoerWagner`` — The min-cut of graph using stoerWagner algorithm." @@ -12046,6 +11917,9 @@ msgstr "" msgid "Using :doc:`pgr_connectedComponents`" msgstr "" +msgid "`Boost: Stoer Wagner min cut `__" +msgstr "" + msgid "https://en.wikipedia.org/wiki/Stoer%E2%80%93Wagner_algorithm" msgstr "" @@ -12070,7 +11944,7 @@ msgstr "" msgid "The strong components of the graph" msgstr "" -msgid "Boost: `Strong components `__" +msgid "`Boost: Strong components `__" msgstr "" msgid "wikipedia: `Strongly connected component `__" @@ -12124,6 +11998,9 @@ msgstr "" msgid "Graph is not a DAG" msgstr "" +msgid "`Boost: topological sort `__" +msgstr "" + msgid "``pgr_transitiveClosure`` - Experimental" msgstr "" @@ -12175,55 +12052,49 @@ msgstr "" msgid "Identifiers of the vertices that are reachable from vertex v." msgstr "" -msgid "https://en.wikipedia.org/wiki/Transitive_closure" +msgid "`Boost: transitive closure `__" msgstr "" -msgid "pgr_trsp - Proposed" +msgid "https://en.wikipedia.org/wiki/Transitive_closure" msgstr "" -msgid "``pgr_trsp`` - routing vertices with restrictions." +msgid "``pgr_trsp``" msgstr "" -msgid "New proposed signatures" +msgid "``pgr_trsp`` - routing vertices with restrictions." msgstr "" -msgid "``pgr_trsp`` (`One to One`_)" +msgid "pgr_trsp(One to One)" msgstr "" -msgid "``pgr_trsp`` (`One to Many`_)" +msgid "pgr_trsp(One to Many)" msgstr "" -msgid "``pgr_trsp`` (`Many to One`_)" +msgid "pgr_trsp(Many to One)" msgstr "" -msgid "``pgr_trsp`` (`Many to Many`_)" +msgid "pgr_trsp(Many to Many)" msgstr "" -msgid "``pgr_trsp`` (`Combinations`_)" +msgid "pgr_trsp(Combinations)" msgstr "" msgid "Deprecated signatures" msgstr "" -msgid "``pgr_trsp(text,integer,integer,boolean,boolean,text)``" -msgstr "" - -msgid "``pgr_trsp(text,integer,float,integer,float,boolean,boolean,text)``" -msgstr "" - -msgid "``pgr_trspViaVertices(text,anyarray,boolean,boolean,text)``" +msgid "pgr_trsp(text,integer,float,integer,float,boolean,boolean,text)" msgstr "" -msgid "``pgr_trspviaedges(text,integer[],double precision[],boolean,boolean,text)``" +msgid "pgr_trspViaVertices(text,anyarray,boolean,boolean,text)" msgstr "" msgid "New prototypes" msgstr "" -msgid "``pgr_trspViaVertices``" +msgid "pgr_trspViaVertices" msgstr "" -msgid "``pgr_trspViaEdges``" +msgid "pgr_trspViaEdges" msgstr "" msgid "Turn restricted shortest path (TRSP) is an algorithm that receives turn restrictions in form of a query like those found in real world navigable road networks." @@ -12277,18 +12148,12 @@ msgstr "" msgid "`Deprecated documentation `_" msgstr "" -msgid "``pgr_trspVia`` - Proposed" +msgid "``pgr_trspVia``" msgstr "" msgid "``pgr_trspVia`` Route that goes through a list of vertices with restrictions." msgstr "" -msgid "New proposed function:" -msgstr "" - -msgid "``pgr_trspVia`` (`One Via`_)" -msgstr "" - msgid "Given a list of vertices and a graph, this function is equivalent to finding the shortest path between :math:`vertex_i` and :math:`vertex_{i+1}` for all :math:`i < size\\_of(via\\;vertices)` trying not to use restricted paths." msgstr "" @@ -12346,15 +12211,12 @@ msgstr "" msgid ":doc:`via-category`" msgstr "" -msgid "``pgr_trspVia_withPoints`` - Proposed" +msgid "``pgr_trspVia_withPoints``" msgstr "" msgid "``pgr_trspVia_withPoints`` - Route that goes through a list of vertices and/or points with restrictions." msgstr "" -msgid "``pgr_trspVia_withPoints`` (`One Via`_)" -msgstr "" - msgid "Given a graph, a set of restriction on the graph edges, a set of points on the graphs edges and a list of vertices, this function is equivalent to finding the shortest path between :math:`vertex_i` and :math:`vertex_{i+1}` (where :math:`vertex` can be a vertex or a point on the graph) for all :math:`i < size\\_of(via\\;vertices)` trying not to use restricted paths." msgstr "" @@ -12478,30 +12340,12 @@ msgstr "" msgid "Therefore the result ignores the ``U_turn_on_edge`` flag when set to ``false``. From the :doc:`pgr_withPointsVia` result it removes the conflicting paths and builds the solution with the results of the :doc:`pgr_trsp` algorithm. In this case a U turn is been done using the same edge." msgstr "" -msgid "pgr_trsp_withPoints - Proposed" +msgid "``pgr_trsp_withPoints``" msgstr "" msgid "``pgr_trsp_withPoints`` Routing Vertex/Point with restrictions." msgstr "" -msgid "New proposed signatures:" -msgstr "" - -msgid "``pgr_trsp_withPoints`` (`One to One`_)" -msgstr "" - -msgid "``pgr_trsp_withPoints`` (`One to Many`_)" -msgstr "" - -msgid "``pgr_trsp_withPoints`` (`Many to One`_)" -msgstr "" - -msgid "``pgr_trsp_withPoints`` (`Many to Many`_)" -msgstr "" - -msgid "``pgr_trsp_withPoints`` (`Combinations`_)" -msgstr "" - msgid "Modify the graph to include points defined by points_sql. Using Dijkstra algorithm, find the shortest path" msgstr "" @@ -12583,13 +12427,10 @@ msgstr "" msgid "From point :math:`1` and vertex :math:`6` to point :math:`3` to vertex :math:`1` on an undirected graph, with details." msgstr "" -msgid "pgr_turnRestrictedPath - Experimental" -msgstr "" - -msgid "``pgr_turnRestrictedPath`` Using Yen's algorithm Vertex -Vertex routing with restrictions" +msgid "``pgr_turnRestrictedPath`` - Experimental" msgstr "" -msgid "New experimental function" +msgid "``pgr_turnRestrictedPath`` Using Yen's algorithm Vertex - Vertex routing with restrictions" msgstr "" msgid "Using Yen's algorithm to obtain K shortest paths and analyze the paths to select the paths that do not use the restrictions" @@ -12658,7 +12499,7 @@ msgstr "" msgid "pgRouting Version for this documentation" msgstr "" -msgid "pgr_vrpOneDepot - Experimental" +msgid "``pgr_vrpOneDepot`` - Experimental" msgstr "" msgid "**No documentation available**" @@ -12667,7 +12508,7 @@ msgstr "" msgid "**TBD**" msgstr "" -msgid "``pgr_withPoints`` - Proposed" +msgid "``pgr_withPoints``" msgstr "" msgid "``pgr_withPoints`` - Returns the shortest path in a graph with additional temporary vertices." @@ -12778,7 +12619,7 @@ msgstr "" msgid "Passes in front or visits with left side driving." msgstr "" -msgid "``pgr_withPointsCost`` - Proposed" +msgid "``pgr_withPointsCost``" msgstr "" msgid "``pgr_withPointsCost`` - Calculates the shortest path and returns only the aggregate cost of the shortest path found, for the combination of points given." @@ -12883,7 +12724,7 @@ msgstr "" msgid "Does not matter driving side driving topology" msgstr "" -msgid "``pgr_withPointsCostMatrix`` - proposed" +msgid "``pgr_withPointsCostMatrix``" msgstr "" msgid "``pgr_withPointsCostMatrix`` - Calculates a cost matrix using :doc:`pgr_withPoints`." @@ -12907,7 +12748,7 @@ msgstr "" msgid "Find the matrix cost of the routes from vertex :math:`1` and the two closest locations on the graph of point `(2.9, 1.8)`." msgstr "" -msgid "``pgr_withPointsDD`` - Proposed" +msgid "``pgr_withPointsDD``" msgstr "" msgid "``pgr_withPointsDD`` - Returns the driving **distance** from a starting point." @@ -12916,7 +12757,10 @@ msgstr "" msgid "Signature change: ``driving_side`` parameter changed from named optional to unnamed compulsory **driving side**." msgstr "" -msgid "``pgr_withPointsDD`` (`Single vertex`)" +msgid "pgr_withPointsDD(Single vertex)" +msgstr "" + +msgid "pgr_withPointsDD(Multiple vertices)" msgstr "" msgid "Added ``depth``, ``pred`` and ``start_vid`` column." @@ -12931,10 +12775,10 @@ msgstr "" msgid "Only points that are visited are removed, that is, points reached within the distance are included" msgstr "" -msgid "``pgr_withpointsdd(text,text,bigint,double precision,boolean,character,boolean)``" +msgid "pgr_withpointsdd(text,text,bigint,double precision,boolean,character,boolean)" msgstr "" -msgid "``pgr_withpointsdd(text,text,anyarray,double precision,boolean,character,boolean,boolean)``" +msgid "pgr_withpointsdd(text,text,anyarray,double precision,boolean,character,boolean,boolean)" msgstr "" msgid "Modify the graph to include points and using Dijkstra algorithm, extracts all the nodes and points that have costs less than or equal to the value ``**distance**`` from the starting point. The edges extracted will conform the corresponding spanning tree." @@ -13015,7 +12859,7 @@ msgstr "" msgid ":doc:`pgr_alphaShape`" msgstr "" -msgid "pgr_withPointsKSP - Proposed" +msgid "``pgr_withPointsKSP``" msgstr "" msgid "``pgr_withPointsKSP`` — Yen's algorithm for K shortest paths using Dijkstra." @@ -13024,25 +12868,22 @@ msgstr "" msgid "Standarizing output columns to |nksp-result|" msgstr "" -msgid "``pgr_withPointsKSP`` (One to One)" -msgstr "" - -msgid "New overload functions" +msgid "pgr_withPointsKSP(One to One)" msgstr "" -msgid "``pgr_withPointsKSP`` (One to Many)" +msgid "pgr_withPointsKSP(One to Many)" msgstr "" -msgid "``pgr_withPointsKSP`` (Many to One)" +msgid "pgr_withPointsKSP(Many to One)" msgstr "" -msgid "``pgr_withPointsKSP`` (Many to Many)" +msgid "pgr_withPointsKSP(Many to Many)" msgstr "" -msgid "``pgr_withPointsKSP`` (Combinations)" +msgid "pgr_withPointsKSP(Combinations)" msgstr "" -msgid "``pgr_withpointsksp(text,text,bigint,bigint,integer,boolean,boolean,char,boolean)``" +msgid "pgr_withpointsksp(text,text,bigint,bigint,integer,boolean,boolean,char,boolean)``" msgstr "" msgid "Modifies the graph to include the points defined in the `Points SQL`_ and using Yen algorithm, finds the :math:`K` shortest paths." @@ -13105,145 +12946,265 @@ msgstr "" msgid "[``r``, ``R``] for right driving side (for directed graph only)" msgstr "" -msgid "[``l``, ``L``] for left driving side (for directed graph only)" +msgid "[``l``, ``L``] for left driving side (for directed graph only)" +msgstr "" + +msgid "[``b``, ``B``] for both (only for undirected graph)" +msgstr "" + +msgid "withPointsKSP optional parameters" +msgstr "" + +msgid "Get :math:`2` paths using left side driving topology, from vertex :math:`1` to the closest location on the graph of point `(2.9, 1.8)`." +msgstr "" + +msgid "Left driving side" +msgstr "" + +msgid "Get :math:`2` paths using left side driving topology, from point :math:`1` to point :math:`3` with details." +msgstr "" + +msgid "Right driving side" +msgstr "" + +msgid "Get :math:`2` paths using right side driving topology from, point :math:`1` to point :math:`2` with heap paths and details." +msgstr "" + +msgid "``pgr_withPointsVia``" +msgstr "" + +msgid "``pgr_withPointsVia`` - Route that goes through a list of vertices and/or points." +msgstr "" + +msgid "Given a graph, a set of points on the graphs edges and a list of vertices, this function is equivalent to finding the shortest path between :math:`vertex_i` and :math:`vertex_{i+1}` (where :math:`vertex` can be a vertex or a point on the graph) for all :math:`i < size\\_of(via\\;vertices)`." +msgstr "" + +msgid "pgr_withPointsVia(`Edges SQL`_, `Points SQL`_, **via vertices**, [**options**])" +msgstr "" + +msgid "Find the route that visits the vertices :math:`\\{ -6, 15, -1\\}` in that order on a **directed** graph." +msgstr "" + +msgid "Use :doc:`pgr_findCloseEdges` in the `Points SQL`_" +msgstr "" + +msgid "All this examples are about the route that visits the vertices :math:`\\{-1, 7, -3, 16, 15\\}` in that order on a **directed** graph." +msgstr "" + +msgid "Prim - Family of functions" +msgstr "" + +msgid "The prim algorithm was developed in 1930 by Czech mathematician Vojtěch Jarník. It is a greedy algorithm that finds a minimum spanning tree for a weighted undirected graph. This means it finds a subset of the edges that forms a tree that includes every vertex, where the total weight of all the edges in the tree is minimized. The algorithm operates by building this tree one vertex at a time, from an arbitrary starting vertex, at each step adding the cheapest possible connection from the tree to another vertex." +msgstr "" + +msgid "This algorithms find the minimum spanning forest in a possibly disconnected graph; in contrast, the most basic form of Prim's algorithm only finds minimum spanning trees in connected graphs. However, running Prim's algorithm separately for each connected component of the graph, then it is called minimum spanning forest." +msgstr "" + +msgid "From boost Graph: \"The algorithm as implemented in Boost.Graph does not produce correct results on graphs with parallel edges.\"" +msgstr "" + +msgid "Boost: `Prim's algorithm `__" +msgstr "" + +msgid "Wikipedia: `Prim's algorithm `__" +msgstr "" + +msgid "Proposed Functions" +msgstr "" + +msgid ":doc:`pgr_withPoints` - Route from/to points anywhere on the graph." +msgstr "" + +msgid ":doc:`pgr_withPointsCost` - Costs of the shortest paths." +msgstr "" + +msgid ":doc:`pgr_withPointsCostMatrix` - Costs of the shortest paths." +msgstr "" + +msgid ":doc:`pgr_withPointsKSP` - K shortest paths." +msgstr "" + +msgid ":doc:`pgr_withPointsDD` - Driving distance." +msgstr "" + +msgid ":doc:`pgr_withPointsVia` - Via routing" +msgstr "" + +msgid ":doc:`pgr_lineGraph` - Transformation algorithm for generating a Line Graph." +msgstr "" + +msgid ":doc:`withPoints-family` - Functions based on Dijkstra algorithm." +msgstr "" + +msgid "From the :doc:`TRSP-family`:" +msgstr "" + +msgid "Reference" +msgstr "" + +msgid "Release Notes" +msgstr "" + +msgid "To see the full list of changes check the list of `Git commits `_ on Github." +msgstr "" + +msgid "Mayors" +msgstr "" + +msgid "pgRouting 4" +msgstr "" + +msgid "Minors 4.x" +msgstr "" + +msgid "pgRouting 4.0" +msgstr "" + +msgid "pgRouting 3" +msgstr "" + +msgid "Minors 3.x" +msgstr "" + +msgid "pgRouting 3.8" msgstr "" -msgid "[``b``, ``B``] for both (only for undirected graph)" +msgid "pgRouting 3.8.0 Release Notes" msgstr "" -msgid "withPointsKSP optional parameters" +msgid "Promotion to official function of pgRouting." msgstr "" -msgid "Get :math:`2` paths using left side driving topology, from vertex :math:`1` to the closest location on the graph of point `(2.9, 1.8)`." +msgid "pgr_extractVertices" msgstr "" -msgid "Left driving side" +msgid "pgr_degree" msgstr "" -msgid "Get :math:`2` paths using left side driving topology, from point :math:`1` to point :math:`3` with details." +msgid "pgr_findCloseEdges" msgstr "" -msgid "Right driving side" +msgid "Official functions changes" msgstr "" -msgid "Get :math:`2` paths using right side driving topology from, point :math:`1` to point :math:`2` with heap paths and details." +msgid "`#2786 `__: pgr_contraction" msgstr "" -msgid "``pgr_withPointsVia`` - Proposed" +msgid "New proposed functions" msgstr "" -msgid "``pgr_withPointsVia`` - Route that goes through a list of vertices and/or points." +msgid "Contraction" msgstr "" -msgid "New **proposed** function ``pgr_withPointsVia`` (`One Via`_)" +msgid "`#2790 `__: pgr_contractionDeadEnd" msgstr "" -msgid "Given a graph, a set of points on the graphs edges and a list of vertices, this function is equivalent to finding the shortest path between :math:`vertex_i` and :math:`vertex_{i+1}` (where :math:`vertex` can be a vertex or a point on the graph) for all :math:`i < size\\_of(via\\;vertices)`." +msgid "`#2791 `__: pgr_contractionLinear" msgstr "" -msgid "pgr_withPointsVia(`Edges SQL`_, `Points SQL`_, **via vertices**, [**options**])" +msgid "pgRouting 3.7" msgstr "" -msgid "Find the route that visits the vertices :math:`\\{ -6, 15, -1\\}` in that order on a **directed** graph." +msgid "pgRouting 3.7.3 Release Notes" msgstr "" -msgid "Use :doc:`pgr_findCloseEdges` in the `Points SQL`_" +msgid "To see all issues & pull requests closed by this release see the `Git closed milestone for 3.7.3 `__" msgstr "" -msgid "All this examples are about the route that visits the vertices :math:`\\{-1, 7, -3, 16, 15\\}` in that order on a **directed** graph." +msgid "`#2731 `__ Build Failure on Ubuntu 22" msgstr "" -msgid "Prim - Family of functions" +msgid "pgRouting 3.7.2 Release Notes" msgstr "" -msgid "The prim algorithm was developed in 1930 by Czech mathematician Vojtěch Jarník. It is a greedy algorithm that finds a minimum spanning tree for a weighted undirected graph. This means it finds a subset of the edges that forms a tree that includes every vertex, where the total weight of all the edges in the tree is minimized. The algorithm operates by building this tree one vertex at a time, from an arbitrary starting vertex, at each step adding the cheapest possible connection from the tree to another vertex." +msgid "To see all issues & pull requests closed by this release see the `Git closed milestone for 3.7.2 `__" msgstr "" -msgid "This algorithms find the minimum spanning forest in a possibly disconnected graph; in contrast, the most basic form of Prim's algorithm only finds minimum spanning trees in connected graphs. However, running Prim's algorithm separately for each connected component of the graph, then it is called minimum spanning forest." +msgid "Build" msgstr "" -msgid "From boost Graph: \"The algorithm as implemented in Boost.Graph does not produce correct results on graphs with parallel edges.\"" +msgid "`#2713 `__ cmake missing some policies and min version" msgstr "" -msgid "Boost: `Prim's algorithm `__" +msgid "Using OLD policies: CMP0148, CMP0144, CMP0167" msgstr "" -msgid "Wikipedia: `Prim's algorithm `__" +msgid "Minimum cmake version 3.12" msgstr "" -msgid "Proposed Functions" +msgid "`#2707 `__ Build failure in pgRouting 3.7.1 on Alpine" msgstr "" -msgid ":doc:`pgr_withPoints` - Route from/to points anywhere on the graph." +msgid "`#2706 `__ winnie crashing on pgr_betweennessCentrality" msgstr "" -msgid ":doc:`pgr_withPointsCost` - Costs of the shortest paths." +msgid "pgRouting 3.7.1 Release Notes" msgstr "" -msgid ":doc:`pgr_withPointsCostMatrix` - Costs of the shortest paths." +msgid "To see all issues & pull requests closed by this release see the `Git closed milestone for 3.7.1 `__" msgstr "" -msgid ":doc:`pgr_withPointsKSP` - K shortest paths." +msgid "`#2680 `__ fails to compile under mingw64 gcc 13.2" msgstr "" -msgid ":doc:`pgr_withPointsDD` - Driving distance." +msgid "`#2689 `__ When point is a vertex, the withPoints family do not return results." msgstr "" -msgid ":doc:`pgr_withPointsVia` - Via routing" +msgid "C/C++ code enhancemet" msgstr "" -msgid "These proposed functions do not modify the database." +msgid "TRSP family" msgstr "" -msgid ":doc:`pgr_degree` - Returns a set of vertices and corresponding count of incidet edges to the vertex." +msgid "pgRouting 3.7.0 Release Notes" msgstr "" -msgid ":doc:`pgr_extractVertices` - Extracts vertex information based on the edge table information." +msgid "To see all issues & pull requests closed by this release see the `Git closed milestone for 3.7.0 `__" msgstr "" -msgid ":doc:`pgr_lineGraph` - Transformation algorithm for generating a Line Graph." +msgid "`#2656 `__ Stop support of PostgreSQL12 on pgrouting v3.7" msgstr "" -msgid ":doc:`pgr_withPointsVia`" +msgid "Stopping support of PostgreSQL 12" msgstr "" -msgid ":doc:`pgr_trspVia`" +msgid "CI does not test for PostgreSQL 12" msgstr "" -msgid ":doc:`pgr_trspVia_withPoints`" +msgid "New experimental functions" msgstr "" -msgid ":doc:`withPoints-family` - Functions based on Dijkstra algorithm." +msgid "Metrics" msgstr "" -msgid "From the :doc:`TRSP-family`:" +msgid "pgr_betweennessCentrality" msgstr "" -msgid "Utilities" +msgid "`#2605 `__ Standardize spanning tree functions output" msgstr "" -msgid ":doc:`pgr_findCloseEdges`" +msgid "Functions:" msgstr "" -msgid "Reference" +msgid "Experimental promoted to proposed." msgstr "" -msgid "Release Notes" +msgid "`#2635 `__ pgr_LineGraph ignores directed flag and use negative values for identifiers." msgstr "" -msgid "To see the full list of changes check the list of `Git commits `_ on Github." +msgid "``pgr_lineGraph``" msgstr "" -msgid "Mayors" +msgid "Code enhancement" msgstr "" -msgid "pgRouting 3" +msgid "`#2599 `__ Driving distance cleanup" msgstr "" -msgid "Minors 3.x" +msgid "`#2607 `__ Read postgresql data on C++" msgstr "" -msgid "pgRouting 3.7" +msgid "`#2614 `__ Clang tidy does not work" msgstr "" msgid "pgRouting 3.6" @@ -13255,9 +13216,6 @@ msgstr "" msgid "To see all issues & pull requests closed by this release see the `Git closed milestone for 3.6.3 `__" msgstr "" -msgid "Build" -msgstr "" - msgid "Explicit minimum requirements:" msgstr "" @@ -13345,43 +13303,28 @@ msgstr "" msgid "To see all issues & pull requests closed by this release see the `Git closed milestone for 3.6.0 `_" msgstr "" -msgid "`#2516 `__ Standarize output pgr_aStar" -msgstr "" - -msgid "``pgr_aStar`` (`One to One`) added ``start_vid`` and ``end_vid`` columns." -msgstr "" - -msgid "``pgr_aStar`` (`One to Many`) added ``end_vid`` column." -msgstr "" - -msgid "``pgr_aStar`` (`Many to One`) added ``start_vid`` column." -msgstr "" - -msgid "`#2523 `__ Standarize output pgr_bdAstar" -msgstr "" - -msgid "``pgr_bdAstar`` (`One to One`) added ``start_vid`` and ``end_vid`` columns." +msgid "`#2516 `__ Standardize output pgr_aStar" msgstr "" -msgid "``pgr_bdAstar`` (`One to Many`) added ``end_vid`` column." +msgid "Standardize output columns to |short-generic-result|" msgstr "" -msgid "``pgr_bdAstar`` (`Many to One`) added ``start_vid`` column." +msgid "`#2523 `__ Standardize output pgr_bdAstar" msgstr "" -msgid "`#2547 `__ Standarize output and modifying signature pgr_KSP" +msgid "`#2547 `__ Standardize output and modifying signature pgr_KSP" msgstr "" -msgid "`#2548 `__ Standarize output pgr_drivingdistance" +msgid "`#2548 `__ Standardize output pgr_drivingDistance" msgstr "" msgid "Proposed functions changes" msgstr "" -msgid "`#2544 `__ Standarize output and modifying signature pgr_withPointsDD" +msgid "`#2544 `__ Standardize output and modifying signature pgr_withPointsDD" msgstr "" -msgid "`#2546 `__ Standarize output and modifying signature pgr_withPointsKSP" +msgid "`#2546 `__ Standardize output and modifying signature pgr_withPointsKSP" msgstr "" msgid "C/C++ code enhancements" @@ -13411,10 +13354,10 @@ msgstr "" msgid "`#2490 `__ Automatic page history links." msgstr "" -msgid "..rubric:: SQL standarization" +msgid "..rubric:: Standardize SQL" msgstr "" -msgid "`#2555 `__ standarize deprecated messages" +msgid "`#2555 `__ Standardize deprecated messages" msgstr "" msgid "On new internal function: do not use named parameters and default parameters." @@ -13435,9 +13378,6 @@ msgstr "" msgid "Changes on the documentation to the following:" msgstr "" -msgid "pgr_degree" -msgstr "" - msgid "pgr_dijkstra" msgstr "" @@ -13453,7 +13393,7 @@ msgstr "" msgid "Issue fixes" msgstr "" -msgid "`#2565 `__ pgr_pgr_lengauerTarjanDominatorTree triggers an assertion" +msgid "`#2565 `__ pgr_lengauerTarjanDominatorTree triggers an assertion" msgstr "" msgid "SQL enhancements" @@ -13486,15 +13426,6 @@ msgstr "" msgid "Dijkstra" msgstr "" -msgid "``pgr_dijkstra`` (`One to One`) added ``start_vid`` and ``end_vid`` columns." -msgstr "" - -msgid "``pgr_dijkstra`` (`One to Many`) added ``end_vid`` column." -msgstr "" - -msgid "``pgr_dijkstra`` (`Many to One`) added ``start_vid`` column." -msgstr "" - msgid "pgRouting 3.4" msgstr "" @@ -13531,13 +13462,13 @@ msgstr "" msgid "`#1891 `__: pgr_ksp doesn't give all correct shortest path" msgstr "" -msgid "New proposed functions" +msgid "New proposed functions." msgstr "" msgid "With points" msgstr "" -msgid "``pgr_withPointsVia`` (One Via)" +msgid "pgr_withPointsVia(One Via)" msgstr "" msgid "Turn Restrictions" @@ -13546,82 +13477,67 @@ msgstr "" msgid "Via with turn restrictions" msgstr "" -msgid "``pgr_trspVia`` (One Via)" -msgstr "" - -msgid "``pgr_trspVia_withPoints`` (One Via)" -msgstr "" - -msgid "``pgr_trsp``" -msgstr "" - -msgid "``pgr_trsp`` (One to One)" +msgid "pgr_trspVia(One Via)" msgstr "" -msgid "``pgr_trsp`` (One to Many)" +msgid "pgr_trspVia_withPoints(One Via)" msgstr "" -msgid "``pgr_trsp`` (Many to One)" +msgid "pgr_trsp_withPoints(One to One)" msgstr "" -msgid "``pgr_trsp`` (Many to Many)" +msgid "pgr_trsp_withPoints(One to Many)" msgstr "" -msgid "``pgr_trsp`` (Combinations)" +msgid "pgr_trsp_withPoints(Many to One)" msgstr "" -msgid "``pgr_trsp_withPoints``" -msgstr "" - -msgid "``pgr_trsp_withPoints`` (One to One)" -msgstr "" - -msgid "``pgr_trsp_withPoints`` (One to Many)" +msgid "pgr_trsp_withPoints(Many to Many)" msgstr "" -msgid "``pgr_trsp_withPoints`` (Many to One)" +msgid "pgr_trsp_withPoints(Combinations)" msgstr "" -msgid "``pgr_trsp_withPoints`` (Many to Many)" +msgid "Topology" msgstr "" -msgid "``pgr_trsp_withPoints`` (Combinations)" +msgid "Utilities" msgstr "" -msgid "Topology" +msgid "pgr_findCloseEdges(One point)" msgstr "" -msgid "``pgr_degree``" +msgid "pgr_findCloseEdges(Many points)" msgstr "" -msgid "``pgr_findCloseEdges`` (One point)" +msgid "Ordering" msgstr "" -msgid "``pgr_findCloseEdges`` (Many points)" +msgid "pgr_cuthillMckeeOrdering" msgstr "" -msgid "Ordering" +msgid "Unclassified" msgstr "" -msgid "``pgr_cuthillMckeeOrdering``" +msgid "pgr_hawickCircuits" msgstr "" msgid "Flow functions" msgstr "" -msgid "``pgr_maxCardinalityMatch(text)``" +msgid "pgr_maxCardinalityMatch(text)" msgstr "" -msgid "Deprecating ``pgr_maxCardinalityMatch(text,boolean)``" +msgid "Deprecating: pgr_maxCardinalityMatch(text,boolean)" msgstr "" msgid "Deprecated Functions" msgstr "" -msgid "``pgr_trsp(text,integer,float8,integer,float8,boolean,boolean,text)``" +msgid "pgr_trsp(text,integer,float8,integer,float8,boolean,boolean,text)" msgstr "" -msgid "``pgr_trspViaEdges(text,integer[],float[],boolean,boolean,text)``" +msgid "pgr_trspViaEdges(text,integer[],float[],boolean,boolean,text)" msgstr "" msgid "pgRouting 3.3" @@ -13768,9 +13684,6 @@ msgstr "" msgid "pgr_sequentialVertexColoring" msgstr "" -msgid "pgr_extractVertices" -msgstr "" - msgid "Traversal" msgstr "" @@ -13825,12 +13738,6 @@ msgstr "" msgid "Removing support for Boost v1.53, v1.54 & v1.55" msgstr "" -msgid "pgr_bellmanFord(Combinations)" -msgstr "" - -msgid "pgr_binaryBreadthFirstSearch(Combinations)" -msgstr "" - msgid "pgr_bipartite" msgstr "" @@ -13840,9 +13747,6 @@ msgstr "" msgid "Dijkstra Near" msgstr "" -msgid "pgr_edwardMoore(Combinations)" -msgstr "" - msgid "pgr_isPlanar" msgstr "" @@ -13852,51 +13756,15 @@ msgstr "" msgid "pgr_makeConnected" msgstr "" -msgid "pgr_maxFlowMinCost(Combinations)" -msgstr "" - -msgid "pgr_maxFlowMinCost_Cost(Combinations)" -msgstr "" - msgid "Astar" msgstr "" -msgid "pgr_aStar(Combinations)" -msgstr "" - -msgid "pgr_aStarCost(Combinations)" -msgstr "" - msgid "Bidirectional Astar" msgstr "" -msgid "pgr_bdAstar(Combinations)" -msgstr "" - -msgid "pgr_bdAstarCost(Combinations)" -msgstr "" - msgid "Bidirectional Dijkstra" msgstr "" -msgid "pgr_bdDijkstra(Combinations)" -msgstr "" - -msgid "pgr_bdDijkstraCost(Combinations)" -msgstr "" - -msgid "pgr_boykovKolmogorov(Combinations)" -msgstr "" - -msgid "pgr_edmondsKarp(Combinations)" -msgstr "" - -msgid "pgr_maxFlow(Combinations)" -msgstr "" - -msgid "pgr_pushRelabel(Combinations)" -msgstr "" - msgid "pgRouting 3.1" msgstr "" @@ -14056,7 +13924,7 @@ msgstr "" msgid "`#1006 `__: No loss of information" msgstr "" -msgid "New functions" +msgid "New Functions" msgstr "" msgid "Kruskal family" @@ -14095,148 +13963,94 @@ msgstr "" msgid "aStar Family" msgstr "" -msgid "pgr_aStar(one to many)" -msgstr "" - -msgid "pgr_aStar(many to one)" -msgstr "" - -msgid "pgr_aStar(many to many)" -msgstr "" - -msgid "pgr_aStarCost(one to one)" -msgstr "" - -msgid "pgr_aStarCost(one to many)" -msgstr "" - -msgid "pgr_aStarCost(many to one)" -msgstr "" - -msgid "pgr_aStarCost(many to many)" +msgid "pgr_aStarCost(One to One)" msgstr "" -msgid "pgr_aStarCostMatrix(one to one)" +msgid "pgr_aStarCost(One to Many)" msgstr "" -msgid "pgr_aStarCostMatrix(one to many)" +msgid "pgr_aStarCost(Many to One)" msgstr "" -msgid "pgr_aStarCostMatrix(many to one)" +msgid "pgr_aStarCost(Many to Many)" msgstr "" -msgid "pgr_aStarCostMatrix(many to many)" +msgid "pgr_aStarCostMatrix" msgstr "" msgid "bdAstar Family" msgstr "" -msgid "pgr_bdAstar(one to many)" -msgstr "" - -msgid "pgr_bdAstar(many to one)" -msgstr "" - -msgid "pgr_bdAstar(many to many)" -msgstr "" - -msgid "pgr_bdAstarCost(one to one)" -msgstr "" - -msgid "pgr_bdAstarCost(one to many)" -msgstr "" - -msgid "pgr_bdAstarCost(many to one)" -msgstr "" - -msgid "pgr_bdAstarCost(many to many)" +msgid "pgr_bdAstarCost(One to One)" msgstr "" -msgid "pgr_bdAstarCostMatrix(one to one)" +msgid "pgr_bdAstarCost(One to Many)" msgstr "" -msgid "pgr_bdAstarCostMatrix(one to many)" +msgid "pgr_bdAstarCost(Many to One)" msgstr "" -msgid "pgr_bdAstarCostMatrix(many to one)" +msgid "pgr_bdAstarCost(Many to Many)" msgstr "" -msgid "pgr_bdAstarCostMatrix(many to many)" +msgid "pgr_bdAstarCostMatrix" msgstr "" msgid "bdDijkstra Family" msgstr "" -msgid "pgr_bdDijkstra(one to many)" -msgstr "" - -msgid "pgr_bdDijkstra(many to one)" -msgstr "" - -msgid "pgr_bdDijkstra(many to many)" -msgstr "" - -msgid "pgr_bdDijkstraCost(one to one)" -msgstr "" - -msgid "pgr_bdDijkstraCost(one to many)" -msgstr "" - -msgid "pgr_bdDijkstraCost(many to one)" +msgid "pgr_bdDijkstraCost(One to One)" msgstr "" -msgid "pgr_bdDijkstraCost(many to many)" +msgid "pgr_bdDijkstraCost(One to Many)" msgstr "" -msgid "pgr_bdDijkstraCostMatrix(one to one)" +msgid "pgr_bdDijkstraCost(Many to One)" msgstr "" -msgid "pgr_bdDijkstraCostMatrix(one to many)" +msgid "pgr_bdDijkstraCost(Many to Many)" msgstr "" -msgid "pgr_bdDijkstraCostMatrix(many to one)" -msgstr "" - -msgid "pgr_bdDijkstraCostMatrix(many to many)" +msgid "pgr_bdDijkstraCostMatrix" msgstr "" msgid "Flow Family" msgstr "" -msgid "pgr_pushRelabel(one to one)" +msgid "pgr_pushRelabel(One to One)" msgstr "" -msgid "pgr_pushRelabel(one to many)" +msgid "pgr_pushRelabel(One to Many)" msgstr "" -msgid "pgr_pushRelabel(many to one)" +msgid "pgr_pushRelabel(Many to One)" msgstr "" -msgid "pgr_pushRelabel(many to many)" +msgid "pgr_pushRelabel(Many to Many)" msgstr "" -msgid "pgr_edmondsKarp(one to one)" +msgid "pgr_edmondsKarp(One to One)" msgstr "" -msgid "pgr_edmondsKarp(one to many)" +msgid "pgr_edmondsKarp(One to Many)" msgstr "" -msgid "pgr_edmondsKarp(many to one)" +msgid "pgr_edmondsKarp(Many to One)" msgstr "" -msgid "pgr_edmondsKarp(many to many)" +msgid "pgr_edmondsKarp(Many to Many)" msgstr "" -msgid "pgr_boykovKolmogorov (one to one)" +msgid "pgr_boykovKolmogorov (One to One)" msgstr "" -msgid "pgr_boykovKolmogorov (one to many)" +msgid "pgr_boykovKolmogorov (One to Many)" msgstr "" -msgid "pgr_boykovKolmogorov (many to one)" +msgid "pgr_boykovKolmogorov (Many to One)" msgstr "" -msgid "pgr_boykovKolmogorov (many to many)" +msgid "pgr_boykovKolmogorov (Many to Many)" msgstr "" msgid "pgr_maxCardinalityMatching" @@ -14245,21 +14059,24 @@ msgstr "" msgid "pgr_maxFlow" msgstr "" -msgid "pgr_edgeDisjointPaths(one to one)" +msgid "pgr_edgeDisjointPaths(One to One)" msgstr "" -msgid "pgr_edgeDisjointPaths(one to many)" +msgid "pgr_edgeDisjointPaths(One to Many)" msgstr "" -msgid "pgr_edgeDisjointPaths(many to one)" +msgid "pgr_edgeDisjointPaths(Many to One)" msgstr "" -msgid "pgr_edgeDisjointPaths(many to many)" +msgid "pgr_edgeDisjointPaths(Many to Many)" msgstr "" msgid "Components family" msgstr "" +msgid "pgr_connectedComponents" +msgstr "" + msgid "pgr_strongComponents" msgstr "" @@ -14425,7 +14242,7 @@ msgstr "" msgid "pgr_johnson" msgstr "" -msgid "pgr_astar" +msgid "pgr_aStar" msgstr "" msgid "pgr_bdAstar" @@ -14446,6 +14263,9 @@ msgstr "" msgid "pgr_drivingDistance" msgstr "" +msgid "pgr_KSP" +msgstr "" + msgid "pgr_dijkstraVia (proposed)" msgstr "" @@ -14617,22 +14437,13 @@ msgstr "" msgid "Parameter names changed" msgstr "" -msgid "The many version results are the union of the one to one version" +msgid "The many version results are the union of the One to One version" msgstr "" msgid "New Signatures" msgstr "" -msgid "pgr_bdAstar(one to one)" -msgstr "" - -msgid "New Proposed functions" -msgstr "" - -msgid "pgr_bdAstarCostMatrix" -msgstr "" - -msgid "pgr_bdDijkstraCostMatrix" +msgid "pgr_bdAstar(One to One)" msgstr "" msgid "pgr_lineGraph" @@ -14704,31 +14515,7 @@ msgstr "" msgid "pgr_bdDijkstra" msgstr "" -msgid "New Proposed Signatures" -msgstr "" - -msgid "pgr_astar(one to many)" -msgstr "" - -msgid "pgr_astar(many to one)" -msgstr "" - -msgid "pgr_astar(many to many)" -msgstr "" - -msgid "pgr_astarCost(one to one)" -msgstr "" - -msgid "pgr_astarCost(one to many)" -msgstr "" - -msgid "pgr_astarCost(many to one)" -msgstr "" - -msgid "pgr_astarCost(many to many)" -msgstr "" - -msgid "pgr_astarCostMatrix" +msgid "Deprecated signatures." msgstr "" msgid "pgr_bddijkstra - use pgr_bdDijkstra instead" @@ -14791,52 +14578,43 @@ msgstr "" msgid "pgr_TSP" msgstr "" -msgid "pgr_aStar" -msgstr "" - -msgid "New Functions" -msgstr "" - msgid "pgr_eucledianTSP" msgstr "" -msgid "pgr_withPointsCostMatrix" -msgstr "" - -msgid "pgr_maxFlowPushRelabel(one to one)" +msgid "pgr_maxFlowPushRelabel(One to One)" msgstr "" -msgid "pgr_maxFlowPushRelabel(one to many)" +msgid "pgr_maxFlowPushRelabel(One to Many)" msgstr "" -msgid "pgr_maxFlowPushRelabel(many to one)" +msgid "pgr_maxFlowPushRelabel(Many to One)" msgstr "" -msgid "pgr_maxFlowPushRelabel(many to many)" +msgid "pgr_maxFlowPushRelabel(Many to Many)" msgstr "" -msgid "pgr_maxFlowEdmondsKarp(one to one)" +msgid "pgr_maxFlowEdmondsKarp(One to One)" msgstr "" -msgid "pgr_maxFlowEdmondsKarp(one to many)" +msgid "pgr_maxFlowEdmondsKarp(One to Many)" msgstr "" -msgid "pgr_maxFlowEdmondsKarp(many to one)" +msgid "pgr_maxFlowEdmondsKarp(Many to One)" msgstr "" -msgid "pgr_maxFlowEdmondsKarp(many to many)" +msgid "pgr_maxFlowEdmondsKarp(Many to Many)" msgstr "" -msgid "pgr_maxFlowBoykovKolmogorov (one to one)" +msgid "pgr_maxFlowBoykovKolmogorov (One to One)" msgstr "" -msgid "pgr_maxFlowBoykovKolmogorov (one to many)" +msgid "pgr_maxFlowBoykovKolmogorov (One to Many)" msgstr "" -msgid "pgr_maxFlowBoykovKolmogorov (many to one)" +msgid "pgr_maxFlowBoykovKolmogorov (Many to One)" msgstr "" -msgid "pgr_maxFlowBoykovKolmogorov (many to many)" +msgid "pgr_maxFlowBoykovKolmogorov (Many to Many)" msgstr "" msgid "pgr_maximumCardinalityMatching" @@ -14848,7 +14626,7 @@ msgstr "" msgid "pgr_tsp - use pgr_TSP or pgr_eucledianTSP instead" msgstr "" -msgid "pgr_astar - use pgr_aStar instead" +msgid "pgr_aStar - use pgr_aStar instead" msgstr "" msgid "pgr_flip_edges" @@ -14920,6 +14698,9 @@ msgstr "" msgid "Improvements" msgstr "" +msgid "pgr_nodeNetwork" +msgstr "" + msgid "Adding a row_where and outall optional parameters" msgstr "" @@ -14932,43 +14713,43 @@ msgstr "" msgid "pgr_Johnson" msgstr "" -msgid "pgr_dijkstraCost(one to one)" +msgid "pgr_dijkstraCost(One to One)" msgstr "" -msgid "pgr_dijkstraCost(one to many)" +msgid "pgr_dijkstraCost(One to Many)" msgstr "" -msgid "pgr_dijkstraCost(many to one)" +msgid "pgr_dijkstraCost(Many to One)" msgstr "" -msgid "pgr_dijkstraCost(many to many)" +msgid "pgr_dijkstraCost(Many to Many)" msgstr "" msgid "Proposed Functionality" msgstr "" -msgid "pgr_withPoints(one to one)" +msgid "pgr_withPoints(One to One)" msgstr "" -msgid "pgr_withPoints(one to many)" +msgid "pgr_withPoints(One to Many)" msgstr "" -msgid "pgr_withPoints(many to one)" +msgid "pgr_withPoints(Many to One)" msgstr "" -msgid "pgr_withPoints(many to many)" +msgid "pgr_withPoints(Many to Many)" msgstr "" -msgid "pgr_withPointsCost(one to one)" +msgid "pgr_withPointsCost(One to One)" msgstr "" -msgid "pgr_withPointsCost(one to many)" +msgid "pgr_withPointsCost(One to Many)" msgstr "" -msgid "pgr_withPointsCost(many to one)" +msgid "pgr_withPointsCost(Many to One)" msgstr "" -msgid "pgr_withPointsCost(many to many)" +msgid "pgr_withPointsCost(Many to Many)" msgstr "" msgid "pgr_withPointsDD(single vertex)" @@ -14977,9 +14758,6 @@ msgstr "" msgid "pgr_withPointsDD(multiple vertices)" msgstr "" -msgid "pgr_withPointsKSP" -msgstr "" - msgid "pgr_dijkstraVia" msgstr "" @@ -15010,25 +14788,10 @@ msgstr "" msgid "To see the issues closed by this release see the `Git closed issues for 2.1.0 `_ on Github." msgstr "" -msgid "pgr_dijkstra(one to many)" -msgstr "" - -msgid "pgr_dijkstra(many to one)" -msgstr "" - -msgid "pgr_dijkstra(many to many)" -msgstr "" - -msgid "pgr_drivingDistance(multiple vertices)" -msgstr "" - msgid "Refactored" msgstr "" -msgid "pgr_dijkstra(one to one)" -msgstr "" - -msgid "pgr_drivingDistance(single vertex)" +msgid "pgr_dijkstra(One to One)" msgstr "" msgid "pgr_alphaShape function now can generate better (multi)polygon with holes and alpha parameter." @@ -15328,7 +15091,7 @@ msgstr "" msgid "Sample Data" msgstr "" -msgid "The documentation provides very simple example queries based on a small sample network that resembles a city. To be able to execute the mayority of the examples queries, follow the instructions bellow." +msgid "The documentation provides very simple example queries based on a small sample network that resembles a city. To be able to execute the majority of the examples queries, follow the instructions below." msgstr "" msgid "Main graph" @@ -15340,16 +15103,13 @@ msgstr "" msgid "The following city is to be inserted into the database:" msgstr "" -msgid "Information known at this point is the geometry of the edges, cost values, cpacity values, category values and some locations that are not in the graph." +msgid "Information known at this point is the geometry of the edges, cost values, capacity values, category values and some locations that are not in the graph." msgstr "" msgid "The process to have working topology starts by inserting the edges. After that everything else is calculated." msgstr "" -msgid "Edges" -msgstr "" - -msgid "The database design for the documentation of pgRouting, keeps in the same row 2 segments, one in the direction of the geometry and the second in the oposite direction. Therfore some information has the ``reverse_`` prefix which corresponds to the segment on the oposite direction of the geometry." +msgid "The database design for the documentation of pgRouting, keeps in the same row 2 segments, one in the direction of the geometry and the second in the opposite direction. Therefore some information has the ``reverse_`` prefix which corresponds to the segment on the opposite direction of the geometry." msgstr "" msgid "Identifier of the starting vertex of the geometry ``geom``." @@ -15379,13 +15139,13 @@ msgstr "" msgid ":math:`x` coordinate of the starting vertex of the geometry." msgstr "" -msgid "For convinience it is saved on the table but can be calculated as ``ST_X(ST_StartPoint(geom))``." +msgid "For convenience it is saved on the table but can be calculated as ``ST_X(ST_StartPoint(geom))``." msgstr "" msgid ":math:`y` coordinate of the ending vertex of the geometry." msgstr "" -msgid "For convinience it is saved on the table but can be calculated as ``ST_Y(ST_EndPoint(geom))``." +msgid "For convenience it is saved on the table but can be calculated as ``ST_Y(ST_EndPoint(geom))``." msgstr "" msgid "The geometry of the segments." @@ -15394,7 +15154,7 @@ msgstr "" msgid "Starting on PostgreSQL 12::" msgstr "" -msgid "Optionally indexes on different columns can be created. The recomendation is to have" +msgid "Optionally indexes on different columns can be created. The recommendation is to have" msgstr "" msgid "``id`` indexed." @@ -15403,7 +15163,7 @@ msgstr "" msgid "``source`` and ``target`` columns indexed to speed up pgRouting queries." msgstr "" -msgid "``geom`` indexed to speed up gemetry processes that might be needed in the front end." +msgid "``geom`` indexed to speed up geometry processes that might be needed in the front end." msgstr "" msgid "For this small example the indexes are skipped, except for ``id``" @@ -15457,7 +15217,7 @@ msgstr "" msgid "Many functions can be used with a combinations of ``(source, target)`` pairs when wanting a route from ``source`` to ``target``." msgstr "" -msgid "For convinence of this documentations, some combinations will be stored on a table:" +msgid "For convenience of this documentation, some combinations will be stored on a table:" msgstr "" msgid "Inserting the data:" @@ -15616,7 +15376,7 @@ msgstr "" msgid "Attributes associated to the tables help to indicate if the graph is directed or undirected, if an edge is one way on a directed graph, and depending on the final application needs, suitable topology(s) need to be created." msgstr "" -msgid "pgRouting suplies some functions to create a routing topology and to analyze the topology." +msgid "pgRouting supplies some functions to create a routing topology and to analyze the topology." msgstr "" msgid "Additional functions to create a graph:" @@ -15634,7 +15394,7 @@ msgstr "" msgid "Traversal - Family of functions" msgstr "" -msgid "Aditionaly there are 2 categories under this family" +msgid "Additionally there are 2 categories under this family" msgstr "" msgid "Via - Category" @@ -15646,7 +15406,7 @@ msgstr "" msgid "Given a graph and a list of vertices, find the shortest path between :math:`vertex_i` and :math:`vertex_{i+1}` for all vertices" msgstr "" -msgid "In other words, find a continuos route that visits all the vertices in the order given." +msgid "In other words, find a continuous route that visits all the vertices in the order given." msgstr "" msgid "path" diff --git a/locale/zh_Hans/LC_MESSAGES/index.po b/locale/zh_Hans/LC_MESSAGES/index.po index d8afe8a4e4..ca9be12e54 100644 --- a/locale/zh_Hans/LC_MESSAGES/index.po +++ b/locale/zh_Hans/LC_MESSAGES/index.po @@ -1,11 +1,11 @@ # SOME DESCRIPTIVE TITLE. -# Copyright (C) pgRouting Contributors - Version v3.7.0 +# Copyright (C) pgRouting Contributors - Version v3.8 # This file is distributed under the same license as the pgRouting package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" -"Project-Id-Version: pgRouting v3.4.0-dev\n" +"Project-Id-Version: pgRouting v3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-06-25 12:55-0500\n" "PO-Revision-Date: 2024-09-23 14:18+0000\n" @@ -18,436 +18,3 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 5.4.3\n" - -#: ../../build/doc/index.rst:12 -msgid "**Supported versions:** `Latest `__ (`3.4 `__) `3.3 `__ `3.2 `__ `3.1 `__ `3.0 `__" -msgstr "" -"**支持的版本:最新版本:** `最新版本 `__ (`3.4 `__) `3.3 " -"`__ `3.2 `__ `3.1 `__ `3.0 `__" - -#: ../../build/doc/index.rst:19 -msgid "**Unsupported versions:** `2.6 `__ `2.5 `__ `2.4 `__ `2.3 `__ `2.2 `__ `2.1 `__ `2.0 `__" -msgstr "" -"**不支持的版本:** `2.6 `__ `" -"2.5 `__ `2.4 `__ `2.3 `__ `2.2 `__ `2.1 " -"`__ `2.0 `__" - -#: ../../build/doc/index.rst:30 -msgid "Table of Contents" -msgstr "目录" - -#: ../../build/doc/index.rst:32 -msgid "pgRouting extends the `PostGIS `__/`PostgreSQL `__ geospatial database to provide geospatial routing and other network analysis functionality." -msgstr "" -"pgRouting 扩展了 `PostGIS `__/`PostgreSQL `__ 地理空间数据库,以提供地理空间路由和其他网络分析功能。" - -#: ../../build/doc/index.rst:36 -msgid "This is the manual for pgRouting |release|." -msgstr "这是pgRouting|release|的手册。" - -#: ../../build/doc/index.rst:None -msgid "Creative Commons Attribution-Share Alike 3.0 License" -msgstr "知识共享署名 - 相同方式共享 3.0 许可证" - -#: ../../build/doc/index.rst:42 -msgid "The pgRouting Manual is licensed under a `Creative Commons Attribution-Share Alike 3.0 License `_. Feel free to use this material any way you like, but we ask that you attribute credit to the pgRouting Project and wherever possible, a link back to https://pgrouting.org. For other licenses used in pgRouting see the :ref:`license` page." -msgstr "" -"pgRouting 手册根据 `知识共享署名-相同方式共享3.0许可证 " -"`_。 您可以随意使用本材料," -"但我们要求您将功劳归功于 pgRouting 项目,并尽可能提供返回 https://" -"pgrouting.org 的链接。 有关 pgRouting 中使用的其他许可证,请参阅 " -":ref:`license` page.。" - -#: ../../build/doc/index.rst:50 -msgid "General" -msgstr "常规" - -#: ../../build/doc/index.rst:60 -msgid ":doc:`sampledata` that is used in the examples of this manual." -msgstr "本手册示例中使用的 :doc:`sampledata`。" - -#: ../../build/doc/index.rst:68 -msgid "Pgrouting Concepts" -msgstr "Pgrouting概念" - -#: ../../build/doc/index.rst:77 -msgid ":doc:`routingFunctions`" -msgstr ":doc:`routingFunctions`" - -#: ../../build/doc/routingFunctions.rst:4 -msgid ":doc:`allpairs-family`" -msgstr ":doc:`allpairs-family`" - -#: ../../build/doc/allpairs-family.rst:3 -msgid ":doc:`pgr_floydWarshall` - Floyd-Warshall's algorithm." -msgstr ":doc:`pgr_floydWarshall` - Floyd-Warshall 算法。" - -#: ../../build/doc/allpairs-family.rst:4 -msgid ":doc:`pgr_johnson` - Johnson's algorithm" -msgstr ":doc:`pgr_johnson` - Johnson算法" - -#: ../../build/doc/routingFunctions.rst:10 -msgid ":doc:`aStar-family`" -msgstr ":doc:`aStar-family`" - -#: ../../build/doc/aStar-family.rst:3 -msgid ":doc:`pgr_aStar` - A* algorithm for the shortest path." -msgstr ":doc:`pgr_aStar` - A* 最短路径算法。" - -#: ../../build/doc/aStar-family.rst:4 -msgid ":doc:`pgr_aStarCost` - Get the aggregate cost of the shortest paths." -msgstr ":doc:`pgr_aStarCost` - 获取最短路径的总成本。" - -#: ../../build/doc/aStar-family.rst:5 -msgid ":doc:`pgr_aStarCostMatrix` - Get the cost matrix of the shortest paths." -msgstr ":doc:`pgr_aStarCostMatrix` - 获取最短路径的成本矩阵。" - -#: ../../build/doc/routingFunctions.rst:17 -msgid ":doc:`bdAstar-family`" -msgstr ":doc:`bdAstar-family`" - -#: ../../build/doc/bdAstar-family.rst:3 -msgid ":doc:`pgr_bdAstar` - Bidirectional A* algorithm for obtaining paths." -msgstr ":doc:`pgr_bdAstar` - 获取路径的双向A*算法。" - -#: ../../build/doc/bdAstar-family.rst:4 -msgid ":doc:`pgr_bdAstarCost` - Bidirectional A* algorithm to calculate the cost of the paths." -msgstr ":doc:`pgr_bdAstarCost` - 双向 A* 算法计算路径成本。" - -#: ../../build/doc/bdAstar-family.rst:6 -msgid ":doc:`pgr_bdAstarCostMatrix` - Bidirectional A* algorithm to calculate a cost matrix of paths." -msgstr ":doc:`pgr_bdAstarCostMatrix` - 用于计算路径成本矩阵的双向 A* 算法。" - -#: ../../build/doc/routingFunctions.rst:23 -msgid ":doc:`bdDijkstra-family`" -msgstr ":doc:`bdDijkstra-family`" - -#: ../../build/doc/bdDijkstra-family.rst:3 -msgid ":doc:`pgr_bdDijkstra` - Bidirectional Dijkstra algorithm for the shortest paths." -msgstr ":doc:`pgr_bdDijkstra` - 最短路径的双向 Dijkstra 算法。" - -#: ../../build/doc/bdDijkstra-family.rst:5 -msgid ":doc:`pgr_bdDijkstraCost` - Bidirectional Dijkstra to calculate the cost of the shortest paths" -msgstr ":doc:`pgr_bdDijkstraCost` - 双向 Dijkstra 计算最短路径的成本" - -#: ../../build/doc/bdDijkstra-family.rst:7 -msgid ":doc:`pgr_bdDijkstraCostMatrix` - Bidirectional Dijkstra algorithm to create a matrix of costs of the shortest paths." -msgstr ":doc:`pgr_bdDijkstraCostMatrix` - 双向 Dijkstra 算法创建最短路径成本矩阵。" - -#: ../../build/doc/routingFunctions.rst:29 -msgid ":doc:`components-family`" -msgstr ":doc:`components-family`" - -#: ../../build/doc/components-family.rst:3 -msgid ":doc:`pgr_connectedComponents` - Connected components of an undirected graph." -msgstr ":doc:`pgr_connectedComponents` - 无向图的连通分量。" - -#: ../../build/doc/components-family.rst:4 -msgid ":doc:`pgr_strongComponents` - Strongly connected components of a directed graph." -msgstr ":doc:`pgr_strongComponents` - 有向图的强连通分量。" - -#: ../../build/doc/components-family.rst:6 -msgid ":doc:`pgr_biconnectedComponents` - Biconnected components of an undirected graph." -msgstr ":doc:`pgr_biconnectedComponents` - 无向图的双连通分量。" - -#: ../../build/doc/components-family.rst:8 -msgid ":doc:`pgr_articulationPoints` - Articulation points of an undirected graph." -msgstr ":doc:`pgr_articulationPoints` - 无向图的铰接点。" - -#: ../../build/doc/components-family.rst:9 -msgid ":doc:`pgr_bridges` - Bridges of an undirected graph." -msgstr ":doc:`pgr_bridges` - 无向图的桥。" - -#: ../../build/doc/routingFunctions.rst:35 -msgid ":doc:`contraction-family`" -msgstr ":doc:`contraction-family`" - -#: ../../build/doc/contraction-family.rst:3 -msgid ":doc:`pgr_contraction`" -msgstr ":doc:`pgr_contraction`" - -#: ../../build/doc/routingFunctions.rst:41 -msgid ":doc:`dijkstra-family`" -msgstr ":doc:`dijkstra-family`" - -#: ../../build/doc/dijkstra-family.rst:3 -msgid ":doc:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths." -msgstr ":doc:`pgr_dijkstra` - Dijkstra 最短路径算法。" - -#: ../../build/doc/dijkstra-family.rst:4 -msgid ":doc:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths." -msgstr ":doc:`pgr_dijkstraCost` - 获取最短路径的总成本。" - -#: ../../build/doc/dijkstra-family.rst:5 -msgid ":doc:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix." -msgstr ":doc:`pgr_dijkstraCostMatrix` - 使用 pgr_dijkstra 创建成本矩阵。" - -#: ../../build/doc/dijkstra-family.rst:6 -msgid ":doc:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament information." -msgstr ":doc:`pgr_drivingDistance` - 使用 pgr_dijkstra 计算流域信息。" - -#: ../../build/doc/dijkstra-family.rst:8 -msgid ":doc:`pgr_KSP` - Use Yen algorithm with pgr_dijkstra to get the K shortest paths." -msgstr ":doc:`pgr_KSP` - 使用 Yen 算法和 pgr_dijkstra 来获得 K 条最短路径。" - -#: ../../build/doc/routingFunctions.rst:47 -msgid ":doc:`flow-family`" -msgstr ":doc:`flow-family`" - -#: ../../build/doc/flow-family.rst:3 -msgid ":doc:`pgr_maxFlow` - Only the Max flow calculation using Push and Relabel algorithm." -msgstr ":doc:`pgr_maxFlow` - 仅使用 Push 和 Relabel 算法进行最大流量计算。" - -#: ../../build/doc/flow-family.rst:5 -msgid ":doc:`pgr_boykovKolmogorov` - Boykov and Kolmogorov with details of flow on edges." -msgstr ":doc:`pgr_boykovKolmogorov` - Boykov 和 Kolmogorov 的边流动细节。" - -#: ../../build/doc/flow-family.rst:7 -msgid ":doc:`pgr_edmondsKarp` - Edmonds and Karp algorithm with details of flow on edges." -msgstr ":doc:`pgr_edmondsKarp` - 带有边流量详细信息的 Edmonds 和 Karp 算法。" - -#: ../../build/doc/flow-family.rst:9 -msgid ":doc:`pgr_pushRelabel` - Push and relabel algorithm with details of flow on edges." -msgstr ":doc:`pgr_pushRelabel` - 推送和重新标记算法以及边流量的详细信息。" - -#: ../../build/doc/flow-family.rst:11 -msgid "Applications" -msgstr "应用" - -#: ../../build/doc/flow-family.rst:13 -msgid ":doc:`pgr_edgeDisjointPaths` - Calculates edge disjoint paths between two groups of vertices." -msgstr ":doc:`pgr_edgeDisjointPaths` - 计算两组顶点之间的边不相交路径。" - -#: ../../build/doc/flow-family.rst:15 -msgid ":doc:`pgr_maxCardinalityMatch` - Calculates a maximum cardinality matching in a graph." -msgstr ":doc:`pgr_maxCardinalityMatch` - 计算图中的最大基数匹配。" - -#: ../../build/doc/routingFunctions.rst:53 -#: ../../build/doc/spanningTree-family.rst:3 -msgid ":doc:`kruskal-family`" -msgstr ":doc:`kruskal-family`" - -#: ../../build/doc/kruskal-family.rst:3 -msgid ":doc:`pgr_kruskal`" -msgstr ":doc:`pgr_kruskal`" - -#: ../../build/doc/kruskal-family.rst:4 -#: ../../build/doc/BFS-category.rst:3 -msgid ":doc:`pgr_kruskalBFS`" -msgstr ":doc:`pgr_kruskalBFS`" - -#: ../../build/doc/kruskal-family.rst:5 -msgid ":doc:`pgr_kruskalDD`" -msgstr ":doc:`pgr_kruskalDD`" - -#: ../../build/doc/kruskal-family.rst:6 -#: ../../build/doc/DFS-category.rst:3 -msgid ":doc:`pgr_kruskalDFS`" -msgstr ":doc:`pgr_kruskalDFS`" - -#: ../../build/doc/routingFunctions.rst:59 -#: ../../build/doc/spanningTree-family.rst:4 -msgid ":doc:`prim-family`" -msgstr ":doc:`prim-family`" - -#: ../../build/doc/prim-family.rst:3 -msgid ":doc:`pgr_prim`" -msgstr ":doc:`pgr_prim`" - -#: ../../build/doc/prim-family.rst:4 -#: ../../build/doc/BFS-category.rst:4 -msgid ":doc:`pgr_primBFS`" -msgstr ":doc:`pgr_primBFS`" - -#: ../../build/doc/prim-family.rst:5 -msgid ":doc:`pgr_primDD`" -msgstr ":doc:`pgr_primDD`" - -#: ../../build/doc/prim-family.rst:6 -#: ../../build/doc/DFS-category.rst:4 -msgid ":doc:`pgr_primDFS`" -msgstr ":doc:`pgr_primDFS`" - -#: ../../build/doc/routingFunctions.rst:65 -msgid ":doc:`reference`" -msgstr ":doc:`reference`" - -#: ../../build/doc/reference.rst:3 -msgid ":doc:`pgr_version`" -msgstr ":doc:`pgr_version`" - -#: ../../build/doc/reference.rst:4 -msgid ":doc:`pgr_full_version`" -msgstr ":doc:`pgr_full_version`" - -#: ../../build/doc/routingFunctions.rst:71 -msgid ":doc:`topology-functions`" -msgstr ":doc:`topology-functions`" - -#: ../../build/doc/topology-functions.rst:3 -msgid "The following functions modify the database directly therefore the user must have special permissions given by the administrators to use them." -msgstr "以下函数直接修改数据库,因此用户必须具有管理员授予的特殊权限才能使用它们。" - -#: ../../build/doc/topology-functions.rst:6 -msgid ":doc:`pgr_createTopology` - create a topology based on the geometry." -msgstr ":doc:`pgr_createTopology` - 根据几何形状创建拓扑。" - -#: ../../build/doc/topology-functions.rst:7 -msgid ":doc:`pgr_createVerticesTable` - reconstruct the vertices table based on the source and target information." -msgstr ":doc:`pgr_createVerticesTable` - 根据源和目标信息重建顶点表。" - -#: ../../build/doc/topology-functions.rst:9 -msgid ":doc:`pgr_analyzeGraph` - to analyze the edges and vertices of the edge table." -msgstr ":doc:`pgr_analyzeGraph` - 分析边表的边和顶点。" - -#: ../../build/doc/topology-functions.rst:11 -msgid ":doc:`pgr_analyzeOneWay` - to analyze directionality of the edges." -msgstr ":doc:`pgr_analyzeOneWay` - 分析边的方向性。" - -#: ../../build/doc/topology-functions.rst:12 -msgid ":doc:`pgr_nodeNetwork` -to create nodes to a not noded edge table." -msgstr ":doc:`pgr_nodeNetwork` -为无节点边表创建节点。" - -#: ../../build/doc/routingFunctions.rst:77 -msgid ":doc:`TSP-family`" -msgstr ":doc:`TSP-family`" - -#: ../../build/doc/TSP-family.rst:3 -msgid ":doc:`pgr_TSP` - When input is given as matrix cell information." -msgstr ":doc:`pgr_TSP`- 当输入作为矩阵单元信息给出时。" - -#: ../../build/doc/TSP-family.rst:4 -msgid ":doc:`pgr_TSPeuclidean` - When input are coordinates." -msgstr ":doc:`pgr_TSPeuclidean` - 当输入是坐标时。" - -#: ../../build/doc/routingFunctions.rst:83 -msgid ":doc:`pgr_trsp` - Turn Restriction Shortest Path (TRSP)" -msgstr ":doc:`pgr_trsp` - 转弯限制最短路径 (TRSP)" - -#: ../../build/doc/routingFunctions.rst:87 -msgid "Functions by categories" -msgstr "按类别划分的函数" - -#: ../../build/doc/routingFunctions.rst:89 -msgid ":doc:`cost-category`" -msgstr ":doc:`cost-category`" - -#: ../../build/doc/cost-category.rst:3 -msgid ":doc:`pgr_aStarCost`" -msgstr ":doc:`pgr_aStarCost`" - -#: ../../build/doc/cost-category.rst:4 -msgid ":doc:`pgr_bdAstarCost`" -msgstr ":doc:`pgr_bdAstarCost`" - -#: ../../build/doc/cost-category.rst:5 -msgid ":doc:`pgr_dijkstraCost`" -msgstr ":doc:`pgr_dijkstraCost`" - -#: ../../build/doc/cost-category.rst:6 -msgid ":doc:`pgr_bdDijkstraCost`" -msgstr ":doc:`pgr_bdDijkstraCost`" - -#: ../../build/doc/cost-category.rst:7 -msgid ":doc:`pgr_dijkstraNearCost`" -msgstr ":doc:`pgr_dijkstraNearCost`" - -#: ../../build/doc/routingFunctions.rst:95 -msgid ":doc:`costMatrix-category`" -msgstr ":doc:`costMatrix-category`" - -#: ../../build/doc/costMatrix-category.rst:3 -msgid ":doc:`pgr_aStarCostMatrix`" -msgstr ":doc:`pgr_aStarCostMatrix`" - -#: ../../build/doc/costMatrix-category.rst:4 -msgid ":doc:`pgr_bdAstarCostMatrix`" -msgstr ":doc:`pgr_bdAstarCostMatrix`" - -#: ../../build/doc/costMatrix-category.rst:5 -#: ../../build/doc/costMatrix-category.rst:7 -msgid ":doc:`pgr_bdDijkstraCostMatrix`" -msgstr ":doc:`pgr_bdDijkstraCostMatrix`" - -#: ../../build/doc/costMatrix-category.rst:6 -msgid ":doc:`pgr_dijkstraCostMatrix`" -msgstr ":doc:`pgr_dijkstraCostMatrix`" - -#: ../../build/doc/routingFunctions.rst:102 -msgid ":doc:`drivingDistance-category`" -msgstr ":doc:`drivingDistance-category`" - -#: ../../build/doc/drivingDistance-category.rst:3 -msgid ":doc:`pgr_drivingDistance` - Driving Distance based on Dijkstra's algorithm" -msgstr ":doc:`pgr_drivingDistance` - 基于 Dijkstra 算法的行驶距离" - -#: ../../build/doc/drivingDistance-category.rst:4 -msgid ":doc:`pgr_primDD` - Driving Distance based on Prim's algorithm" -msgstr ":doc:`pgr_primDD` - 基于Prim算法的行驶距离" - -#: ../../build/doc/drivingDistance-category.rst:5 -msgid ":doc:`pgr_kruskalDD` - Driving Distance based on Kruskal's algorithm" -msgstr ":doc:`pgr_kruskalDD` - 基于Kruskal算法的行驶距离" - -#: ../../build/doc/drivingDistance-category.rst:6 -msgid "Post pocessing" -msgstr "后期处理" - -#: ../../build/doc/drivingDistance-category.rst:8 -msgid ":doc:`pgr_alphaShape` - Alpha shape computation" -msgstr ":doc:`pgr_alphaShape` - Alpha 形状计算" - -#: ../../build/doc/routingFunctions.rst:108 -msgid ":doc:`KSP-category`" -msgstr ":doc:`KSP-category`" - -#: ../../build/doc/KSP-category.rst:3 -msgid ":doc:`pgr_KSP` - Yen's algorithm based on pgr_dijkstra" -msgstr ":doc:`pgr_KSP` - 基于 pgr_dijkstra 的 Yen 算法" - -#: ../../build/doc/routingFunctions.rst:114 -msgid ":doc:`spanningTree-family`" -msgstr ":doc:`spanningTree-family`" - -#: ../../build/doc/routingFunctions.rst:120 -msgid ":doc:`BFS-category`" -msgstr ":doc:`BFS-category`" - -#: ../../build/doc/routingFunctions.rst:126 -msgid ":doc:`DFS-category`" -msgstr ":doc:`DFS-category`" - -#: ../../build/doc/index.rst:91 -msgid "Available Functions but not official pgRouting functions" -msgstr "可用函数,但不是官方 pgRouting 函数" - -#: ../../build/doc/index.rst:93 -msgid ":doc:`proposed`" -msgstr ":doc:`proposed`" - -#: ../../build/doc/index.rst:94 -msgid ":doc:`experimental`" -msgstr ":doc:`experimental`" - -#: ../../build/doc/index.rst:105 -msgid ":doc:`release_notes`" -msgstr ":doc:`release_notes`" - -#: ../../build/doc/index.rst:119 -msgid "Indices and tables" -msgstr "索引和表格" - -#: ../../build/doc/index.rst:120 -msgid ":ref:`genindex`" -msgstr ":ref:`genindex`" - -#: ../../build/doc/index.rst:121 -msgid ":ref:`search`" -msgstr ":ref:`search`" diff --git a/locale/zh_Hans/LC_MESSAGES/pgrouting_doc_strings.po b/locale/zh_Hans/LC_MESSAGES/pgrouting_doc_strings.po index 0c09277213..8aad415089 100644 --- a/locale/zh_Hans/LC_MESSAGES/pgrouting_doc_strings.po +++ b/locale/zh_Hans/LC_MESSAGES/pgrouting_doc_strings.po @@ -1,5 +1,5 @@ # SOME DESCRIPTIVE TITLE. -# Copyright (C) pgRouting Contributors - Version v3.7.0 +# Copyright (C) pgRouting Contributors - Version v3.8 # This file is distributed under the same license as the pgRouting package. # Regina Obe , 2023. # Wangdapeng , 2023. @@ -9,9 +9,9 @@ # DeepL , 2024. msgid "" msgstr "" -"Project-Id-Version: pgRouting v3.6.0-dev\n" +"Project-Id-Version: pgRouting v3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-17 00:50+0000\n" +"POT-Creation-Date: 2025-03-24 14:17+0000\n" "PO-Revision-Date: 2024-10-10 19:47+0000\n" "Last-Translator: DeepL \n" "Language-Team: Chinese (Simplified) `__" +"`Boost: metric TSP approx `__" msgstr "" "`Boost 的 metric appro 的 metric 近似 `__" @@ -705,7 +701,8 @@ msgstr "" "`维基百科:旅行商问题 `__" -msgid "Vehicle Routing Functions - Category (Experimental)" +#, fuzzy +msgid "Vehicle Routing Functions - Category" msgstr "车辆路由功能 - 类别(实验)" msgid "Pickup and delivery problem" @@ -1674,8 +1671,8 @@ msgstr ":math:`1km * 0.0277hr/km = 0.0277hr`" msgid "https://en.wikipedia.org/wiki/Vehicle_routing_problem" msgstr "https://en.wikipedia.org/wiki/Vehicle_routing_problem" -msgid "The queries use the :doc:`sampledata` network." -msgstr "查询使用 :doc:`sampledata` 网络。" +msgid ":doc:`sampledata`" +msgstr ":doc:`sampledata`" msgid "A* - Family of functions" msgstr "A* - 函数族" @@ -1846,7 +1843,9 @@ msgstr "" msgid ":doc:`bdAstar-family`" msgstr ":doc:`bdAstar-family`" -msgid "https://www.boost.org/libs/graph/doc/astar_search.html" +#, fuzzy +msgid "" +"`Boost: A* search `__" msgstr "https://www.boost.org/libs/graph/doc/astar_search.html" msgid "https://en.wikipedia.org/wiki/A*_search_algorithm" @@ -2662,15 +2661,13 @@ msgid "" "ending vertex:" msgstr "对于起始顶点和结束顶点之间存在路径的大型图:" -msgid "It is expected to terminate faster than pgr_astar" +#, fuzzy +msgid "It is expected to terminate faster than pgr_aStar" msgstr "预计终止速度比 pgr_astar 更快" msgid ":doc:`aStar-family`" msgstr ":doc:`aStar-family`" -msgid "Previous versions of this page" -msgstr "此页面的先前版本" - msgid "Bidirectional Dijkstra - Family of functions" msgstr "双向 Dijkstra - 函数族" @@ -2814,35 +2811,10 @@ msgstr "``edge_id``" msgid "Identifier of the color of the edge." msgstr "边颜色的标识符。" +#, fuzzy msgid "" -"`Boost: Sequential Vertex Coloring algorithm documentation `__" -msgstr "" -"`Boost:顺序顶点着色算法文档 `__" - -msgid "" -"`Wikipedia: Graph coloring `__" -msgstr "`维基百科:图着色 `__" - -msgid "" -"`Boost: is_bipartite `__" -msgstr "" -"`Boost: is_bipartite `__" - -msgid "" -"`Wikipedia: bipartite graph `__" -msgstr "`维基百科:二分图 `__" - -msgid "" -"`Boost: Edge Coloring Algorithm documentation `__" -msgstr "" -"`Boost:边缘着色算法文档 `__" +"`Boost: `__" +msgstr "boost: https://www.boost.org/libs/graph/doc/table_of_contents.html" msgid "Components - Family of functions" msgstr "分量 - 函数族" @@ -2877,6 +2849,10 @@ msgstr "收缩 - 函数族" msgid ":doc:`pgr_contraction`" msgstr ":doc:`pgr_contraction`" +#, fuzzy +msgid ":doc:`pgr_contractionDeadEnd`" +msgstr ":doc:`pgr_contraction`" + msgid "" "In large graphs, like the road graphs, or electric networks, graph " "contraction can be used to speed up some graph algorithms. Contraction " @@ -2910,1345 +2886,857 @@ msgid "" "times they are to be executed." msgstr "决定收缩算法的顺序并设置它们要执行的最大次数。" -msgid "Contraction of the leaf nodes of the graph." -msgstr "图的叶节点的收缩。" - -msgid "Dead end" -msgstr "死端" - -msgid "A node is considered a **dead end** node when" -msgstr "当一个节点被认为是 **死端** 节点时" - -msgid "On undirected graphs:" -msgstr "在无向图上:" - -msgid "The number of adjacent vertices is 1." -msgstr "相邻顶点的个数为1。" - -msgid "On directed graphs:" -msgstr "在有向图上:" - -msgid "There are no outgoing edges and has at least one incoming edge." -msgstr "没有传出边缘,但至少有一个传入边缘。" +msgid "" +"https://www.cs.cmu.edu/afs/cs/academic/class/15210-f12/www/lectures/" +"lecture16.pdf" +msgstr "" +"https://www.cs.cmu.edu/afs/cs/academic/class/15210-f12/www/lectures/" +"lecture16.pdf" -msgid "There are no incoming edges and has at least one outgoing edge." -msgstr "没有传入边缘,但至少有一个传出边缘。" +msgid "https://algo2.iti.kit.edu/documents/routeplanning/geisberger_dipl.pdf" +msgstr "https://algo2.iti.kit.edu/documents/routeplanning/geisberger_dipl.pdf" -msgid "" -"When the conditions are true then the `Operation: Dead End Contraction`_ can " -"be done." -msgstr "当条件成立时,可以进行当条件成立时,可以进行 `操作: 死端收缩`_ 。" +msgid "Cost - Category" +msgstr "成本 - 类别" -msgid "Dead end vertex on undirected graph" -msgstr "无向图上的死端顶点" +msgid ":doc:`pgr_aStarCost`" +msgstr ":doc:`pgr_aStarCost`" -msgid "The green nodes are `dead end`_ nodes" -msgstr "绿色节点是 `死端`_ 节点" +msgid ":doc:`pgr_bdAstarCost`" +msgstr ":doc:`pgr_bdAstarCost`" -msgid "The blue nodes have an unlimited number of edges." -msgstr "蓝色节点具有无限数量的边。" +msgid ":doc:`pgr_dijkstraCost`" +msgstr ":doc:`pgr_dijkstraCost`" -msgid "Node" -msgstr "节点" +msgid ":doc:`pgr_bdDijkstraCost`" +msgstr ":doc:`pgr_bdDijkstraCost`" -msgid "Adjecent nodes" -msgstr "相邻节点" +msgid ":doc:`pgr_dijkstraNearCost`" +msgstr ":doc:`pgr_dijkstraNearCost`" -msgid "Number of adjacent nodes" -msgstr "相邻节点数" +msgid ":doc:`pgr_withPointsCost`" +msgstr ":doc:`pgr_withPointsCost`" -msgid ":math:`a`" -msgstr ":math:`a`" +msgid "Each function works as part of the family it belongs to." +msgstr "每个函数都是其所属家族的一部分。" -msgid ":math:`\\{u\\}`" -msgstr ":math:`\\{u\\}`" +msgid "" +"Returns the sum of the costs of the shortest path of each pair combination " +"of nodes requested." +msgstr "返回所请求的每对节点组合的最短路径的成本总和。" -msgid ":math:`b`" -msgstr ":math:`b`" +msgid "" +"Let be the case the values returned are stored in a table, so the unique " +"index would be the pair: ``(start_vid, end_vid)``." +msgstr "" +"假设返回的值存储在表中,因此唯一索引将是一对: ``(start_vid, end_vid)``。" -msgid ":math:`\\{v\\}`" -msgstr ":math:`\\{v\\}`" +msgid "" +"Depending on the function and its parameters, the results can be symmetric." +msgstr "根据函数及其参数,结果可能是对称的。" -msgid "Dead end vertex on directed graph" -msgstr "有向图上的死端顶点" +msgid "" +"The **aggregate cost** of :math:`(u, v)` is the same as for :math:`(v, u)`." +msgstr ":math:`(u, v)` 的 **总成本** 与 :math:`(v, u)` 的相同。" msgid "" -"The blue nodes have an unlimited number of incoming and/or outgoing edges." -msgstr "蓝色节点具有无限数量的传入和/或传出边缘。" +"Any duplicated value in the start or end vertex identifiers are ignored." +msgstr "起始或结束顶点标识符中的任何重复值都将被忽略。" -msgid "Number of incoming edges" -msgstr "传入边数" +msgid "The returned values are ordered:" +msgstr "返回值是有序的:" -msgid "Number of outgoing edges" -msgstr "传出边数" +msgid "``start_vid`` ascending" +msgstr "``start_vid`` 升序" -msgid ":math:`c`" -msgstr ":math:`c`" +msgid "``end_vid`` ascending" +msgstr "``end_vid`` 升序" -msgid ":math:`\\{v, w\\}`" -msgstr ":math:`\\{v, w\\}`" +msgid "Cost Matrix - Category" +msgstr "成本矩阵 - 类别" -msgid "2" -msgstr "2" +msgid ":doc:`pgr_aStarCostMatrix`" +msgstr ":doc:`pgr_aStarCostMatrix`" -msgid ":math:`d`" -msgstr ":math:`d`" +msgid ":doc:`pgr_dijkstraCostMatrix`" +msgstr ":doc:`pgr_dijkstraCostMatrix`" -msgid ":math:`\\{x\\}`" -msgstr ":math:`\\{x\\}`" +msgid ":doc:`pgr_bdAstarCostMatrix`" +msgstr ":doc:`pgr_bdAstarCostMatrix`" -msgid ":math:`e`" -msgstr ":math:`e`" +msgid ":doc:`pgr_bdDijkstraCostMatrix`" +msgstr ":doc:`pgr_bdDijkstraCostMatrix`" -msgid ":math:`\\{x, y\\}`" -msgstr ":math:`\\{x, y\\}`" +msgid ":doc:`pgr_withPointsCostMatrix`" +msgstr ":doc:`pgr_withPointsCostMatrix`" msgid "" -"From above, nodes :math:`\\{a, b, d\\}` are dead ends because the number of " -"adjacent vertices is 1. No further checks are needed for those nodes." +":doc:`TSP-family` needs as input a symmetric cost matrix and no edge `(u, " +"v)` must value :math:`\\infty`." msgstr "" -"从上面来看,节点 :math:`\\{a, b, d\\}` 是死端,因为相邻顶点的数量为 1。不需要" -"对这些节点进行进一步检查。" +":doc:`TSP-family` 需要一个对称成本矩阵作为输入,并且没有边 `(u, v)` 必须值" +"为 :math:`\\infty`。" msgid "" -"On the following table, nodes :math:`\\{c, e\\}` because the even that the " -"number of adjacent vertices is not 1 for" -msgstr "下表中,节点 :math:`\\{c, e\\}` 因为相邻顶点数不为1的偶数为" +"This collection of functions will return a cost matrix in form of a table." +msgstr "该函数集合将以表格形式返回成本矩阵。" -msgid "Operation: Dead End Contraction" -msgstr "操作:死端收缩" +msgid "Can be used as input to :doc:`pgr_TSP`." +msgstr "可用作 :doc:`pgr_TSP` 的输入。" msgid "" -"The dead end contraction will stop until there are no more dead end nodes. " -"For example from the following graph where :math:`w` is the `dead end`_ node:" -msgstr "" -"死端收缩将停止,直到不再有死端节点。 例如,从下图中,其中 :math:`w` 是 `死端" -"`_ 节点:" +"Use directly when the resulting matrix is symmetric and there is no :math:" +"`\\infty` value." +msgstr "当得到的矩阵是对称且没有 :math:`\\infty` 值时直接使用。" -msgid "" -"After contracting :math:`w`, node :math:`v` is now a `dead end`_ node and is " -"contracted:" -msgstr "收缩 :math:`w` 后,节点 :math:`v` 现在是一个 `死端`_ 节点并且已收缩:" +msgid "It will be the users responsibility to make the matrix symmetric." +msgstr "用户有责任使矩阵对称。" + +msgid "By using geometric or harmonic average of the non symmetric values." +msgstr "通过使用非对称值的几何平均或调和平均。" + +msgid "By using max or min the non symmetric values." +msgstr "通过使用 max 或 min 非对称值。" msgid "" -"After contracting :math:`v`, stop. Node :math:`u` has the information of " -"nodes that were contrcted." -msgstr "在收缩 :math:`v` 之后,停止。节点 :math:`u` 有已收缩节点的信息。" +"By setting the upper triangle to be the mirror image of the lower triangle." +msgstr "通过将上三角形设置为下三角形的镜像。" -msgid "Node :math:`u` has the information of nodes that were contracted." -msgstr "节点 :math:`u` 有已收缩节点的信息。" +msgid "" +"By setting the lower triangle to be the mirror image of the upper triangle." +msgstr "通过将下三角形设置为上三角形的镜像。" -msgid "In the algorithm, linear contraction is represented by 2." -msgstr "算法中,线性收缩用2表示。" +msgid "It is also the users responsibility to fix an :math:`\\infty` value." +msgstr "确定 :math:`\\infty` 值也是用户的责任。" -msgid "Linear" -msgstr "线性" +msgid "" +"Returns the sum of the costs of the shortest path for pair combination of " +"nodes in the graph." +msgstr "返回图中节点对组合的最短路径的成本总和。" msgid "" -"In case of an undirected graph, a node is considered a `linear` node when" -msgstr "在无向图的情况下,当满足以下条件时,节点被视为`线性`节点" +"When the starting vertex and ending vertex are the same, there is no path." +msgstr "当起始顶点和结束顶点相同时,就没有路径。" -msgid "The number of adjacent vertices is 2." -msgstr "相邻顶点的数量为2。" +msgid "The aggregate cost in the non included values `(v, v)` is `0`." +msgstr "未包含值 `(v, v)` 中的总成本为 `0`。" -msgid "In case of a directed graph, a node is considered a `linear` node when" -msgstr "在有向图的情况下,当满足以下条件时,节点被视为`线性`节点" +msgid "" +"When the starting vertex and ending vertex are the different and there is no " +"path." +msgstr "当起始顶点和结束顶点不同且不存在路径时。" -msgid "Linearity is symmetrical" -msgstr "线性是对称的" +msgid "" +"The aggregate cost in the non included values `(u, v)` is :math:`\\infty`." +msgstr "未包含值 `(u, v)` 中的总成本为 :math:`\\infty` 。" -msgid "Linear vertex on undirected graph" -msgstr "无向图上的线性顶点" +msgid "Let be the case the values returned are stored in a table:" +msgstr "假设返回的值存储在表中:" -msgid "The green nodes are `linear`_ nodes" -msgstr "绿色节点是 `线性`_ 节点" +msgid "The unique index would be the pair: ``(start_vid, end_vid)``." +msgstr "唯一索引将是一对: ``(start_vid, end_vid)``。" -msgid "The blue nodes have an unlimited number of incoming and outgoing edges." -msgstr "蓝色节点具有无限数量的传入和传出边缘。" +msgid "The aggregate cost of `(u, v)` is the same as for `(v, u)`." +msgstr "`(u, v)` 的总成本与 `(v, u)` 相同。" -msgid "Undirected" -msgstr "无向" +msgid "Any duplicated value in the **start vids** are ignored." +msgstr "**start vids** 中的任何重复值都会被忽略。" -msgid ":math:`v`" -msgstr ":math:`v`" +msgid "Used in:" +msgstr "用于:" -msgid ":math:`\\{u, w\\}`" -msgstr ":math:`\\{u, w\\}`" +msgid "`Edges SQL`_ as described below" +msgstr "`Edges SQL`_ 如下所述" -msgid "Linear vertex on directed graph" -msgstr "有向图上的线性顶点" +msgid "**start vids**" +msgstr "**start vids**" -msgid "The white node is not linear because the linearity is not symetrical." -msgstr "白色节点不是线性的,因为线性不对称。" +msgid "``ARRAY[BIGINT]``" +msgstr "``ARRAY[BIGINT]``" -msgid "It is possible to go :math:`y \\rightarrow c \\rightarrow z`" -msgstr "它是可能去走 :math:`y \\rightarrow c \\rightarrow z`" +msgid "Array of identifiers of starting vertices." +msgstr "起始顶点的标识符数组。" -msgid "It's not possible to go :math:`z \\rightarrow c \\rightarrow y`" -msgstr "不可能走 :math:`z \\rightarrow c \\rightarrow y`" +msgid "`Points SQL`_" +msgstr "`Points SQL`_" -msgid "Is symmetrical?" -msgstr "是对称的吗?" +msgid "`Points SQL`_ as described below" +msgstr "`Points SQL`_ 如下所述" -msgid ":math:`\\{u, v\\}`" -msgstr ":math:`\\{u, v\\}`" +msgid "Points SQL" +msgstr "Points SQL" -msgid "yes" -msgstr "是" +msgid "``pid``" +msgstr "``pid``" -msgid ":math:`\\{w, x\\}`" -msgstr ":math:`\\{w, x\\}`" +msgid "**value**" +msgstr "**value**" -msgid ":math:`\\{y, z\\}`" -msgstr ":math:`\\{y, z\\}`" +msgid "Identifier of the point." +msgstr "点的标识符。" -msgid "no" -msgstr "否" +msgid "" +"Use with positive value, as internally will be converted to negative value" +msgstr "使用正值,因为内部将转换为负值" -msgid "Operation: Linear Contraction" -msgstr "操作:线性收缩" +msgid "If column is present, it can not be NULL." +msgstr "如果列存在,则它不能为 NULL。" msgid "" -"The linear contraction will stop when there are no more linear nodes. For " -"example from the following graph where :math:`v` and :math:`w` are `linear`_ " -"nodes:" -msgstr "" -"当不再有线性节点时,线性收缩将停止。 例如,在下图中,其中 :math:`v` 和 :math:" -"`w` 是 `线性`_ 节点:" - -msgid "Contracting :math:`w`," -msgstr "收缩 :math:`w`," +"If column is not present, a sequential negative **value** will be given " +"automatically." +msgstr "如果列不存在,将自动给出连续的负 **值** 。" -msgid "The vertex :math:`w` is removed from the graph" -msgstr "顶点 :math:`w` 已从图中移除" +msgid "Identifier of the \"closest\" edge to the point." +msgstr "距离该点“最近”的边的标识符。" -msgid "" -"The edges :math:`v \\rightarrow w` and :math:`w \\rightarrow z` are removed " -"from the graph." -msgstr "从图中删除边 :math:`v \\rightarrow w` 和 :math:`w \\rightarrow z`。" +msgid "``fraction``" +msgstr "``fraction``" msgid "" -"A new edge :math:`v \\rightarrow z` is inserted represented with red color." -msgstr "插入一条新边 :math:`v \\rightarrow z`,以红色表示。" +"Value in <0,1> that indicates the relative postition from the first end " +"point of the edge." +msgstr "<0,1> 中的值指示距边缘第一个端点的相对位置。" -msgid "Contracting :math:`v`:" -msgstr "收缩 :math:`v`:" +msgid "``side``" +msgstr "``side``" -msgid "The vertex :math:`v` is removed from the graph" -msgstr "顶点 :math:`v` 已从图中移除" +msgid "``CHAR``" +msgstr "``CHAR``" -msgid "" -"The edges :math:`u \\rightarrow v` and :math:`v \\rightarrow z` are removed " -"from the graph." -msgstr "从图中删除边 :math:`u \\rightarrow v` 和 :math:`v \\rightarrow z`。" +msgid "``b``" +msgstr "``b``" -msgid "" -"A new edge :math:`u \\rightarrow z` is inserted represented with red color." -msgstr "插入一条新边 :math:`u \\rightarrow z`,以红色表示。" +msgid "Value in [``b``, ``r``, ``l``, ``NULL``] indicating if the point is:" +msgstr "[``b``, ``r``, ``l``, ``NULL``] 中的值指示该点是否为:" -msgid "" -"Edge :math:`u \\rightarrow z` has the information of nodes that were " -"contracted." -msgstr "边 :math:`u \\rightarrow z` 有收缩点的信息。" - -msgid "The cycle" -msgstr "循环" +msgid "In the right ``r``," +msgstr "``r`` 在右边," -msgid "" -"Contracting a graph, can be done with more than one operation. The order of " -"the operations affect the resulting contracted graph, after applying one " -"operation, the set of vertices that can be contracted by another operation " -"changes." -msgstr "" -"收缩一张图可以通过多个操作来完成。 操作的顺序会影响生成的收缩图,在应用一个操" -"作后,可以由另一操作收缩的顶点集会发生变化。" +msgid "In the left ``l``," +msgstr "``l`` 在左边," -msgid "" -"This implementation, cycles ``max_cycles`` times through " -"``operations_order`` ." -msgstr "此实现通过 ``operations_order``循环 ``max_cycles`` 次。" +msgid "In both sides ``b``, ``NULL``" +msgstr "``b``, ``NULL`` 在两边" -msgid "Contracting sample data" -msgstr "收缩示例数据" +msgid ":doc:`TSP-family`" +msgstr ":doc:`TSP-family`" -msgid "" -"In this section, building and using a contracted graph will be shown by " -"example." -msgstr "在本节中,将通过示例展示构建和使用收缩图。" +msgid "Dijkstra - Family of functions" +msgstr "Dijkstra - 函数族" -msgid "The :doc:`sampledata` for an undirected graph is used" -msgstr "使用无向图的 :doc:`sampledata`" +msgid ":doc:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths." +msgstr ":doc:`pgr_dijkstra` - Dijkstra 最短路径算法。" -msgid "a dead end operation first followed by a linear operation." -msgstr "首先是死端操作,然后是线性操作。" +msgid ":doc:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths." +msgstr ":doc:`pgr_dijkstraCost` - 获取最短路径的总成本。" -msgid "Construction of the graph in the database" -msgstr "数据库中图的构建" +msgid "" +":doc:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix." +msgstr ":doc:`pgr_dijkstraCostMatrix` - 使用 pgr_dijkstra 创建成本矩阵。" -msgid "Original Data" -msgstr "原始数据" +msgid "" +":doc:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament " +"information." +msgstr ":doc:`pgr_drivingDistance` - 使用 pgr_dijkstra 计算流域信息。" msgid "" -"The following query shows the original data involved in the contraction " -"operation." -msgstr "以下查询显示了收缩操作所涉及的原始数据。" +":doc:`pgr_KSP` - Use Yen algorithm with pgr_dijkstra to get the K shortest " +"paths." +msgstr ":doc:`pgr_KSP` - 使用 Yen 算法和 pgr_dijkstra 来获得 K 条最短路径。" -msgid "The original graph:" -msgstr "原始图:" +#, fuzzy +msgid ":doc:`pgr_dijkstraVia` - Get a route of a sequence of vertices." +msgstr ":doc:`pgr_dijkstraVia` - 获取一系列顶点的路径。" -msgid "Contraction results" -msgstr "收缩结果" +msgid ":doc:`pgr_dijkstraNear` - Get the route to the nearest vertex." +msgstr ":doc:`pgr_dijkstraNear` - 获取到最近顶点的路线。" -msgid "" -"The results do not represent the contracted graph. They represent the " -"changes done to the graph after applying the contraction algorithm." -msgstr "结果不代表收缩图。 它们表示应用收缩算法后对图所做的更改。" +msgid ":doc:`pgr_dijkstraNearCost` - Get the cost to the nearest vertex." +msgstr ":doc:`pgr_dijkstraNearCost` - 获取最近顶点的成本。" msgid "" -"Observe that vertices, for example, :math:`6` do not appear in the results " -"because it was not affected by the contraction algorithm." +"Dijkstra's algorithm, conceived by Dutch computer scientist Edsger Dijkstra " +"in 1956. It is a graph search algorithm that solves the shortest path " +"problem for a graph with non-negative edge path costs, producing a shortest " +"path from a starting vertex to an ending vertex. This implementation can be " +"used with a directed graph and an undirected graph." msgstr "" -"例如,观察到顶点 :math:`6` 没有出现在结果中,因为它不受收缩算法的影响。" - -msgid "After doing the dead end contraction operation:" -msgstr "进行死端收缩操作后:" - -msgid "After doing the linear contraction operation to the graph above:" -msgstr "对上图进行线性收缩运算后:" - -msgid "The process to create the contraction graph on the database:" -msgstr "在数据库上创建收缩图的过程:" +"Dijkstra算法,由荷兰计算机科学家Edsger Dijkstra于1956年提出。它是一种图搜索算" +"法,解决具有非负边路径成本的图的最短路径问题,产生从起始顶点到结束顶点的最短" +"路径。 该实现可以与有向图和无向图一起使用。" -msgid "Add additional columns" -msgstr "添加附加列" +msgid "Running time: :math:`O(| start\\ vids | * (V \\log V + E))`" +msgstr "运行时间: :math:`O(| start\\ vids | * (V \\log V + E))`" -msgid "" -"Adding extra columns to the ``edge_table`` and ``edge_table_vertices_pgr`` " -"tables, where:" -msgstr "向 ``edge_table`` 和``edge_table_vertices_pgr`` 表添加额外的列,其中:" +msgid "The Dijkstra family functions are based on the Dijkstra algorithm." +msgstr "Dijkstra 系列函数基于 Dijkstra 算法。" -msgid "``contracted_vertices``" -msgstr "``contracted_vertices``" +msgid "`Combinations SQL`_" +msgstr "`Combinations SQL`_" -msgid "The vertices set belonging to the vertex/edge" -msgstr "属于顶点/边的顶点集" +msgid "`Combinations SQL`_ as described below" +msgstr "`Combinations SQL`_ 如下所述" -msgid "``is_contracted``" -msgstr "``is_contracted``" +msgid "**start vid**" +msgstr "**start vid**" -msgid "On the vertex table" -msgstr "在顶点表上" +msgid "Identifier of the starting vertex of the path." +msgstr "路径起始顶点的标识符。" -msgid "" -"when ``true`` the vertex is contracted, its not part of the contracted graph." -msgstr "当 ``true`` 时,顶点收缩,它不是收缩图的一部分。" +msgid "**end vid**" +msgstr "**end vid**" -msgid "" -"when ``false`` the vertex is not contracted, its part of the contracted " -"graph." -msgstr "当 ``false`` 时,顶点不收缩,它是收缩图的一部分。" +msgid "Identifier of the ending vertex of the path." +msgstr "路径结束顶点的标识符。" -msgid "``is_new``" -msgstr "``is_new``" +msgid "**end vids**" +msgstr "**end vids**" -msgid "On the edge table" -msgstr "在边表上" +msgid "Array of identifiers of ending vertices." +msgstr "结束顶点的标识符数组。" -msgid "" -"when ``true`` the edge was generated by the contraction algorithm. its part " -"of the contracted graph." -msgstr "当 ``true`` 时,边缘由收缩算法生成。 它是收缩图的一部分。" +msgid "Combinations SQL" +msgstr "分量 SQL" -msgid "" -"when ``false`` the edge is an original edge, might be or not part of the " -"contracted graph." -msgstr "当 ``false`` 时,边是原始边,可能是也可能不是收缩图的一部分。" +msgid "Identifier of the departure vertex." +msgstr "出发顶点的标识符。" -msgid "Store contraction information" -msgstr "存储收缩信息" +msgid "Identifier of the arrival vertex." +msgstr "到达顶点的标识符。" -msgid "Store the `contraction results`_ in a table" -msgstr "将 `收缩结果`_ 存储在表中" +msgid "The problem definition (Advanced documentation)" +msgstr "问题定义(高级文档)" -msgid "The vertex table update" -msgstr "顶点表更新" +msgid "Given the following query:" +msgstr "给出以下查询:" -msgid "" -"Use ``is_contracted`` column to indicate the vertices that are contracted." -msgstr "使用 ``is_contracted`` 列来指示收缩的顶点。" +msgid "pgr_dijkstra(:math:`sql, start_{vid}, end_{vid}, directed`)" +msgstr "pgr_dijkstra(:math:`sql, start_{vid}, end_{vid}, directed`)" msgid "" -"Fill ``contracted_vertices`` with the information from the results tha " -"belong to the vertices." -msgstr "使用属于顶点的结果中的信息填充 ``contracted_vertices``。" - -msgid "The modified vertices table:" -msgstr "修改后的顶点表:" +"where :math:`sql = \\{(id_i, source_i, target_i, cost_i, reverse\\_cost_i)\\}" +"`" +msgstr "" +"其中 :math:`sql =\\{(id_i, source_i, target_i, cost_i, reverse\\_cost_i)\\}`" -msgid "The edge table update" -msgstr "边缘表更新" +msgid "and" +msgstr "和" -msgid "Insert the new edges generated by pgr_contraction." -msgstr "插入由 pgr_contraction 生成的新边。" +msgid ":math:`source = \\bigcup source_i`," +msgstr ":math:`source = \\bigcup source_i`," -msgid "The modified ``edge_table``." -msgstr "修改后的 ``edge_table``。" +msgid ":math:`target = \\bigcup target_i`," +msgstr ":math:`target = \\bigcup target_i`," -msgid "The contracted graph" -msgstr "收缩图" +msgid "The graphs are defined as follows:" +msgstr "图定义如下:" -msgid "Vertices that belong to the contracted graph." -msgstr "属于收缩图的顶点。" +msgid "Directed graph" +msgstr "有向图" -msgid "Edges that belong to the contracted graph." -msgstr "属于收缩图的边。" +msgid "The weighted directed graph, :math:`G_d(V,E)`, is defined by:" +msgstr "加权有向图, :math:`G_d(V,E)`, 定义如下:" -msgid "Contracted graph" -msgstr "收缩图" +msgid "the set of vertices :math:`V`" +msgstr "顶点集 :math:`V`" -msgid "Using the contracted graph" -msgstr "使用收缩图" +msgid ":math:`V = source \\cup target \\cup {start_{vid}} \\cup {end_{vid}}`" +msgstr ":math:`V = source \\cup target \\cup {start_v{vid}} \\cup {end_{vid}}`" -msgid "Using the contracted graph with ``pgr_dijkstra``" -msgstr "将收缩图与 ``pgr_dijkstra`` 一起使用" +msgid "the set of edges :math:`E`" +msgstr "边集 :math:`E`" msgid "" -"There are three cases when calculating the shortest path between a given " -"source and target in a contracted graph:" -msgstr "计算收缩图中给定源和目标之间的最短路径时,存在三种情况:" +":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) " +"\\text{ when } cost >=0 \\} & \\quad \\text{if } reverse\\_cost = " +"\\varnothing \\\\ \\text{ } \\text{ } & \\quad \\text{ } \\\\ \\text{ } " +"\\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & \\quad " +"\\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) " +"\\text{ when } reverse\\_cost_i>=0 \\} & \\quad \\text{if } reverse\\_cost " +"\\neq \\varnothing \\\\ \\end{cases}`" +msgstr "" +":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) " +"\\text{ when } cost >=0 \\} & \\quad \\text{if } reverse\\_cost = " +"\\varnothing \\\\ \\text{ } \\text{ } & \\quad \\text{ } \\\\ \\text{ } " +"\\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & \\quad " +"\\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) " +"\\text{ when } reverse\\_cost_i>=0 \\} & \\quad \\text{if } reverse\\_cost " +"\\neq \\varnothing \\\\ \\end{cases}`" -msgid "Case 1: Both source and target belong to the contracted graph." -msgstr "情况1:源和目标都属于收缩图。" +msgid "Undirected graph" +msgstr "无向图" -msgid "Case 2: Source and/or target belong to an edge subgraph." -msgstr "情况 2:源和/或目标属于边缘子图。" +#, fuzzy +msgid "The weighted undirected graph, :math:`G_u(V,E)`, is defined by:" +msgstr "加权无向图, :math:`G_u(V,E)` 的定义如下:" -msgid "Case 3: Source and/or target belong to a vertex." -msgstr "情况 3:源和/或目标属于一个顶点。" +msgid ":math:`V = source \\cup target \\cup {start_v{vid}} \\cup {end_{vid}}`" +msgstr "" +":math:`V = source \\cup target \\cup {start_v{vid}} \\cup {end_{vid}}`" msgid "" -"Using the `Edges that belong to the contracted graph.`_ on lines 11 to 20." -msgstr "使用 `属于收缩图的边。`_ 第 11 至 20 行。" +":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) " +"\\text{ when } cost >=0 \\} & \\quad \\text{ } \\\\ \\cup \\{(target_i, " +"source_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ if } " +"reverse\\_cost = \\varnothing \\\\ \\text{ } \\text{ } & \\text{ } \\\\ " +"\\text{ } \\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & " +"\\text{ } \\\\ \\cup \\{(target_i, source_i, cost_i) \\text{ when } cost >=0 " +"\\} & \\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) " +"\\text{ when } reverse\\_cost_i >=0)\\} & \\text{ } \\\\ \\cup \\{(source_i, " +"target_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i >=0)\\} & \\quad " +"\\text{ if } reverse\\_cost \\neq \\varnothing \\\\ \\end{cases}`" +msgstr "" +":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) " +"\\text{ when } cost >=0 \\} & \\quad \\text{ } \\\\ \\cup \\{(target_i, " +"source_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ if } " +"reverse\\_cost = \\varnothing \\\\ \\text{ } \\text{ } & \\text{ } \\\\ " +"\\text{ } \\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & " +"\\text{ } \\\\ \\cup \\{(target_i, source_i, cost_i) \\text{ when } cost >=0 " +"\\} & \\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) " +"\\text{ when } reverse\\_cost_i >=0)\\} & \\text{ } \\\\ \\cup \\{(source_i, " +"target_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i >=0)\\} & \\quad " +"\\text{ if } reverse\\_cost \\neq \\varnothing \\\\ \\end{cases}`" -msgid "Case 1" -msgstr "情况1" +msgid "The problem" +msgstr "问题" -msgid "" -"When both source and target belong to the contracted graph, a path is found." -msgstr "当源和目标都属于收缩图时,就找到了一条路径。" +msgid "Given:" +msgstr "给定:" -msgid "Case 2" -msgstr "情况2" +msgid ":math:`start_{vid} \\in V` a starting vertex" +msgstr ":math:`start_{vid} \\in V` a starting vertex" -msgid "" -"When source and/or target belong to an edge subgraph then a path is not " -"found." -msgstr "当源和/或目标属于边缘子图时,则找不到路径。" +msgid ":math:`end_{vid} \\in V` an ending vertex" +msgstr ":math:`end_{vid} \\in V` an ending vertex" msgid "" -"In this case, the contracted graph do not have an edge connecting with node :" -"math:`4`." -msgstr "在这种情况下,收缩图没有与节点 :math:`4` 相连的边。" - -msgid "Case 3" -msgstr "情况3" +":math:`G(V,E) = \\begin{cases} G_d(V,E) & \\quad \\text{ if6 } directed = " +"true \\\\ G_u(V,E) & \\quad \\text{ if5 } directed = false \\\\ \\end{cases}`" +msgstr "" +":math:`G(V,E) = \\begin{cases} G_d(V,E) & \\quad \\text{ if6 } directed = " +"true \\\\ G_u(V,E) & \\quad \\text{ if5 } directed = false \\\\ \\end{cases}`" -msgid "When source and/or target belong to a vertex then a path is not found." -msgstr "当源和/或目标属于顶点时,则找不到路径。" +msgid "Then:" +msgstr "然后:" msgid "" -"In this case, the contracted graph do not have an edge connecting with node :" -"math:`7` and of node :math:`4` of the second case." -msgstr "" -"在这种情况下,收缩图没有与第二种情况的节点 :math:`7` 和节点 :math:`4` 连接的" -"边。" +":math:`\\boldsymbol{\\pi} = \\{(path\\_seq_i, node_i, edge_i, cost_i, " +"agg\\_cost_i)\\}`" +msgstr "" +":math:`\\boldsymbol{\\pi} = \\{(path\\_seq_i, node_i, edge_i, cost_i, " +"agg\\_cost_i)\\}`" + +msgid "where:" +msgstr "其中:" + +msgid ":math:`path\\_seq_i = i`" +msgstr ":math:`path\\_seq_i = i`" + +msgid ":math:`path\\_seq_{| \\pi |} = | \\pi |`" +msgstr ":math:`path\\_seq_{| \\pi |} = | \\pi |`" + +msgid ":math:`node_i \\in V`" +msgstr ":math:`node_i \\in V`" -msgid "Refining the above function to include nodes that belong to an edge." -msgstr "改进上述函数以包含属于边的节点。" +msgid ":math:`node_1 = start_{vid}`" +msgstr ":math:`node_1 = start_{vid}`" -msgid "The vertices that need to be expanded are calculated on lines 11 to 17." -msgstr "需要扩展的顶点在第 11 至 17 行计算。" +msgid ":math:`node_{| \\pi |} = end_{vid}`" +msgstr ":math:`node_{| \\pi |} = end_{vid}`" msgid "" -"Adding to the contracted graph that additional section on lines 26 to 28." -msgstr "将第 26 至 28 行的附加部分添加到收缩图中。" +":math:`\\forall i \\neq | \\pi |, \\quad (node_i, node_{i+1}, cost_i) \\in E`" +msgstr "" +":math:`\\forall i \\neq | \\pi |, \\quad (node_i, node_{i+1}, cost_i) \\in E`" msgid "" -"When source and/or target belong to an edge subgraph, now, a path is found." -msgstr "当源和目标都属于收缩图时,就找到了一条路径。" +":math:`edge_i = \\begin{cases} id_{(node_i, node_{i+1},cost_i)} &\\quad " +"\\text{when } i \\neq | \\pi | \\\\ -1 &\\quad \\text{when } i = | \\pi | \\" +"\\ \\end{cases}`" +msgstr "" +":math:`edge_i = \\begin{cases} id_{(node_i, node_{i+1},cost_i)} &\\quad " +"\\text{when } i \\neq | \\pi | \\\\ -1 &\\quad \\text{when } i = | \\pi | \\" +"\\ \\end{cases}`" -msgid "The routing graph now has an edge connecting with node :math:`4`." -msgstr "路由图现在有一条与节点 :math:`4` 连接的边。" +msgid ":math:`cost_i = cost_{(node_i, node_{i+1})}`" +msgstr ":math:`cost_i = cost_{(node_i, node_{i+1})}`" msgid "" -"In this case, the contracted graph do not have an edge connecting with node :" -"math:`7`." -msgstr "在这种情况下,收缩图没有与节点 :math:`7` 相连的边。" - -msgid "The vertices that need to be expanded are calculated on lines 19 to 24." -msgstr "需要扩展的顶点在第19到24行计算。" +":math:`agg\\_cost_i = \\begin{cases} 0 &\\quad \\text{when } i = 1 \\" +"\\ \\displaystyle\\sum_{k=1}^{i} cost_{(node_{k-1}, node_k)} &\\quad " +"\\text{when } i \\neq 1 \\\\ \\end{cases}`" +msgstr "" +":math:`agg\\_cost_i = \\begin{cases} 0 &\\quad \\text{when } i = 1 \\" +"\\ \\displaystyle\\sum_{k=1}^{i} cost_{(node_{k-1}, node_k)} &\\quad " +"\\text{when } i \\neq 1 \\\\ \\end{cases}`" msgid "" -"Adding to the contracted graph that additional section on lines 38 to 40." -msgstr "将第 38 至 40 行的附加部分添加到收缩图中。" +"In other words: The algorithm returns a the shortest path between :math:" +"`start_{vid}` and :math:`end_{vid}`, if it exists, in terms of a sequence of " +"nodes and of edges," +msgstr "" +"换句话说:如果 :math:`start_{vid}` 和 :math:`end_{vid}` 之间存在最短路径,算" +"法会根据节点和边的序列返回该路径、" msgid "" -"The code change do not affect this case so when source and/or target belong " -"to an edge subgraph, a path is still found." +":math:`path\\_seq` indicates the relative position in the path of the :math:" +"`node` or :math:`edge`." msgstr "" -"代码更改不会影响这种情况,因此当源和/或目标属于边缘子图时,仍然会找到路径。" +":math:`path\\_seq` 表示 :math:`node` 或 :math:`edge` 的路径中的相对位置。" -msgid "When source and/or target belong to a vertex, now, a path is found." -msgstr "当源和/或目标属于一个顶点时,现在就找到了一条路径。" +msgid ":math:`cost` is the cost of the edge to be used to go to the next node." +msgstr ":math:`cost` 是用于转到下一个节点的边的成本。" -msgid "Now, the routing graph has an edge connecting with node :math:`7`." -msgstr "现在,路由图有一条与节点 :math:`7` 连接的边。" +msgid "" +":math:`agg\\_cost` is the cost from the :math:`start_{vid}` up to the node." +msgstr ":math:`agg\\_cost` 是从 :math:`start_{vid}` 到节点的成本。" -msgid ":doc:`sampledata`" -msgstr ":doc:`sampledata`" +msgid "If there is no path, the resulting set is empty." +msgstr "如果没有路径,则结果集为空。" + +msgid "Driving Distance - Category" +msgstr "驾驶距离 - 类别" msgid "" -"https://www.cs.cmu.edu/afs/cs/academic/class/15210-f12/www/lectures/" -"lecture16.pdf" -msgstr "" -"https://www.cs.cmu.edu/afs/cs/academic/class/15210-f12/www/lectures/" -"lecture16.pdf" +":doc:`pgr_drivingDistance` - Driving Distance based on Dijkstra's algorithm" +msgstr ":doc:`pgr_drivingDistance` - 基于 Dijkstra 算法的行驶距离" -msgid "https://algo2.iti.kit.edu/documents/routeplanning/geisberger_dipl.pdf" -msgstr "https://algo2.iti.kit.edu/documents/routeplanning/geisberger_dipl.pdf" +msgid ":doc:`pgr_primDD` - Driving Distance based on Prim's algorithm" +msgstr ":doc:`pgr_primDD` - 基于Prim算法的行驶距离" -msgid "Cost - Category" -msgstr "成本 - 类别" +msgid ":doc:`pgr_kruskalDD` - Driving Distance based on Kruskal's algorithm" +msgstr ":doc:`pgr_kruskalDD` - 基于Kruskal算法的行驶距离" -msgid ":doc:`pgr_aStarCost`" -msgstr ":doc:`pgr_aStarCost`" +#, fuzzy +msgid "Post processing" +msgstr "后期处理" -msgid ":doc:`pgr_bdAstarCost`" -msgstr ":doc:`pgr_bdAstarCost`" +msgid ":doc:`pgr_alphaShape` - Alpha shape computation" +msgstr ":doc:`pgr_alphaShape` - Alpha 形状计算" -msgid ":doc:`pgr_dijkstraCost`" -msgstr ":doc:`pgr_dijkstraCost`" +msgid ":doc:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints" +msgstr ":doc:`pgr_withPointsDD` - 基于 pgr_withPoints 的行驶距离" -msgid ":doc:`pgr_bdDijkstraCost`" -msgstr ":doc:`pgr_bdDijkstraCost`" +msgid "Calculate nodes that are within a distance." +msgstr "计算一定距离内的节点。" -msgid ":doc:`pgr_dijkstraNearCost`" -msgstr ":doc:`pgr_dijkstraNearCost`" +msgid "" +"Extracts all the nodes that have costs less than or equal to the value " +"distance." +msgstr "提取成本小于或等于距离值的所有节点。" -msgid ":doc:`pgr_withPointsCost`" -msgstr ":doc:`pgr_withPointsCost`" +msgid "The edges extracted will conform to the corresponding spanning tree." +msgstr "提取的边将符合相应的生成树。" -msgid "Each function works as part of the family it belongs to." -msgstr "每个函数都是其所属家族的一部分。" +msgid "Edge :math:`(u, v)` will not be included when:" +msgstr "在以下情况下,边 :math:`(u, v)` 将不包括在内:" -msgid "" -"Returns the sum of the costs of the shortest path of each pair combination " -"of nodes requested." -msgstr "返回所请求的每对节点组合的最短路径的成本总和。" +msgid "The distance from the **root** to :math:`u` > limit distance." +msgstr "从 **root** 到 :math:`u` 的距离>限制距离。" -msgid "" -"Let be the case the values returned are stored in a table, so the unique " -"index would be the pair: ``(start_vid, end_vid)``." -msgstr "" -"假设返回的值存储在表中,因此唯一索引将是一对: ``(start_vid, end_vid)``。" +msgid "The distance from the **root** to :math:`v` > limit distance." +msgstr "从 **root** 到 :math:`v` 的距离>限制距离。" msgid "" -"Depending on the function and its parameters, the results can be symmetric." -msgstr "根据函数及其参数,结果可能是对称的。" +"No new nodes are created on the graph, so when is within the limit and is " +"not within the limit, the edge is not included." +msgstr "图上不会创建新的节点,因此当 位于限制内和不在限制内时,不包含边。" -msgid "" -"The **aggregate cost** of :math:`(u, v)` is the same as for :math:`(v, u)`." -msgstr ":math:`(u, v)` 的 **总成本** 与 :math:`(v, u)` 的相同。" +msgid "Edges SQL as described below." +msgstr "Edges SQL如下所述。" -msgid "" -"Any duplicated value in the start or end vertex identifiers are ignored." -msgstr "起始或结束顶点标识符中的任何重复值都将被忽略。" +msgid "**Root vid**" +msgstr "**Root vid**" -msgid "The returned values are ordered:" -msgstr "返回值是有序的:" +msgid "**Root vids**" +msgstr "**Root vids**" -msgid "``start_vid`` ascending" -msgstr "``start_vid`` 升序" +msgid "``ARRAY[ANY-INTEGER]``" +msgstr "``ARRAY[ANY-INTEGER]``" -msgid "``end_vid`` ascending" -msgstr "``end_vid`` 升序" +msgid "**distance**" +msgstr "**distance**" -msgid "Cost Matrix - Category" -msgstr "成本矩阵 - 类别" +msgid "Upper limit for the inclusion of a node in the result." +msgstr "结果中包含节点的上限。" -msgid ":doc:`pgr_aStarCostMatrix`" -msgstr ":doc:`pgr_aStarCostMatrix`" +msgid "Returns set of |result-spantree|" +msgstr "Returns set of |result-spantree|" -msgid ":doc:`pgr_dijkstraCostMatrix`" -msgstr ":doc:`pgr_dijkstraCostMatrix`" +msgid ":math:`depth-1` is the depth of ``pred``" +msgstr ":math:`depth-1` is the depth of ``pred``" -msgid ":doc:`pgr_bdAstarCostMatrix`" -msgstr ":doc:`pgr_bdAstarCostMatrix`" +msgid "``pred``" +msgstr "``pred``" -msgid ":doc:`pgr_bdDijkstraCostMatrix`" -msgstr ":doc:`pgr_bdDijkstraCostMatrix`" +msgid "Predecessor of ``node``." +msgstr "``node`` 的前驱。" -msgid "proposed" -msgstr "建议的" +msgid "When ``node`` = ``start_vid`` then has the value ``node``." +msgstr "当 `node` 等于 `start_vid` 时,它的值就是 `node`。" -msgid ":doc:`pgr_withPointsCostMatrix`" -msgstr ":doc:`pgr_withPointsCostMatrix`" +msgid "Identifier of the ``edge`` used to arrive from ``pred`` to ``node``." +msgstr "从 ``pred`` 到达``node``所使用的 ``edge`` 的标识符。" -msgid "" -":doc:`TSP-family` needs as input a symmetric cost matrix and no edge `(u, " -"v)` must value :math:`\\infty`." -msgstr "" -":doc:`TSP-family` 需要一个对称成本矩阵作为输入,并且没有边 `(u, v)` 必须值" -"为 :math:`\\infty`。" +msgid "Experimental Functions" +msgstr "实验函数" -msgid "" -"This collection of functions will return a cost matrix in form of a table." -msgstr "该函数集合将以表格形式返回成本矩阵。" +msgid "Families" +msgstr "族" -msgid "Can be used as input to :doc:`pgr_TSP`." -msgstr "可用作 :doc:`pgr_TSP` 的输入。" +msgid ":doc:`flow-family`" +msgstr ":doc:`flow-family`" -msgid "" -"Use directly when the resulting matrix is symmetric and there is no :math:" -"`\\infty` value." -msgstr "当得到的矩阵是对称且没有 :math:`\\infty` 值时直接使用。" +msgid ":doc:`pgr_maxFlowMinCost` - Details of flow and cost on edges." +msgstr ":doc:`pgr_maxFlowMinCost` - 边缘上的流量和成本详细信息。" -msgid "It will be the users responsibility to make the matrix symmetric." -msgstr "用户有责任使矩阵对称。" +msgid ":doc:`pgr_maxFlowMinCost_Cost` - Only the Min Cost calculation." +msgstr ":doc:`pgr_maxFlowMinCost_Cost` -仅最小成本计算。" -msgid "By using geometric or harmonic average of the non symmetric values." -msgstr "通过使用非对称值的几何平均或调和平均。" +msgid ":doc:`chinesePostmanProblem-family`" +msgstr ":doc:`chinesePostmanProblem-family`" -msgid "By using max or min the non symmetric values." -msgstr "通过使用 max 或 min 非对称值。" +msgid ":doc:`coloring-family`" +msgstr ":doc:`coloring-family`" -msgid "" -"By setting the upper triangle to be the mirror image of the lower triangle." -msgstr "通过将上三角形设置为下三角形的镜像。" +msgid ":doc:`transformation-family`" +msgstr ":doc:`transformation-family`" msgid "" -"By setting the lower triangle to be the mirror image of the upper triangle." -msgstr "通过将下三角形设置为上三角形的镜像。" +":doc:`pgr_lineGraphFull` - Transformation algorithm for generating a Line " +"Graph out of each vertex in the input graph." +msgstr "" +":doc:`pgr_lineGraphFull` - 用于从输入图中的每个顶点生成线图的变换算法。" -msgid "It is also the users responsibility to fix an :math:`\\infty` value." -msgstr "确定 :math:`\\infty` 值也是用户的责任。" +msgid ":doc:`traversal-family`" +msgstr ":doc:`traversal-family`" msgid "" -"Returns the sum of the costs of the shortest path for pair combination of " -"nodes in the graph." -msgstr "返回图中节点对组合的最短路径的成本总和。" +":doc:`pgr_breadthFirstSearch` - Breath first search traversal of the graph." +msgstr ":doc:`pgr_breadthFirstSearch` - 图的广度优先搜索遍历。" msgid "" -"When the starting vertex and ending vertex are the same, there is no path." -msgstr "当起始顶点和结束顶点相同时,就没有路径。" +":doc:`pgr_binaryBreadthFirstSearch` - Breath first search traversal of the " +"graph." +msgstr ":doc:`pgr_binaryBreadthFirstSearch` -图的广度优先搜索遍历。" -msgid "The aggregate cost in the non included values `(v, v)` is `0`." -msgstr "未包含值 `(v, v)` 中的总成本为 `0`。" +msgid ":doc:`components-family`" +msgstr ":doc:`components-family`" -msgid "" -"When the starting vertex and ending vertex are the different and there is no " -"path." -msgstr "当起始顶点和结束顶点不同且不存在路径时。" +msgid ":doc:`ordering-family`" +msgstr ":doc:`ordering-family`" msgid "" -"The aggregate cost in the non included values `(u, v)` is :math:`\\infty`." -msgstr "未包含值 `(u, v)` 中的总成本为 :math:`\\infty` 。" +":doc:`pgr_cuthillMckeeOrdering` - Return reverse Cuthill-McKee ordering of " +"an undirected graph." +msgstr ":doc:`pgr_cuthillMckeeOrdering` -返回无向图的反向 Cuthill-McKee 排序。" -msgid "Let be the case the values returned are stored in a table:" -msgstr "假设返回的值存储在表中:" +msgid "" +":doc:`pgr_topologicalSort` - Linear ordering of the vertices for directed " +"acyclic graph." +msgstr ":doc:`pgr_topologicalSort` — 有向无环图 (DAG) 的顶点的线性排序。" -msgid "The unique index would be the pair: ``(start_vid, end_vid)``." -msgstr "唯一索引将是一对: ``(start_vid, end_vid)``。" +msgid ":doc:`metrics-family`" +msgstr ":doc:`metrics-family`" -msgid "The aggregate cost of `(u, v)` is the same as for `(v, u)`." -msgstr "`(u, v)` 的总成本与 `(v, u)` 相同。" +msgid "" +":doc:`pgr_betweennessCentrality` - Calculates relative betweenness " +"centrality using Brandes Algorithm" +msgstr ":doc:`pgr_betweennessCentrality` - 使用布兰德斯算法计算相对介度中心性" -msgid "Any duplicated value in the **start vids** are ignored." -msgstr "**start vids** 中的任何重复值都会被忽略。" +msgid ":doc:`TRSP-family`" +msgstr ":doc:`TRSP-family`" -msgid "Used in:" -msgstr "用于:" +msgid "categories" +msgstr "类别" -msgid "`Edges SQL`_ as described below" -msgstr "`Edges SQL`_ 如下所述" +msgid ":doc:`VRP-category`" +msgstr ":doc:`VRP-category`" -msgid "**start vids**" -msgstr "**start vids**" +#, fuzzy +msgid "Shortest Path Category" +msgstr "K最短路径 - 类别" -msgid "``ARRAY[BIGINT]``" -msgstr "``ARRAY[BIGINT]``" +msgid ":doc:`pgr_bellmanFord`" +msgstr ":doc:`pgr_bellmanFord`" -msgid "Array of identifiers of starting vertices." -msgstr "起始顶点的标识符数组。" +msgid ":doc:`pgr_dagShortestPath`" +msgstr ":doc:`pgr_dagShortestPath`" -msgid "`Points SQL`_" -msgstr "`Points SQL`_" +msgid ":doc:`pgr_edwardMoore`" +msgstr ":doc:`pgr_edwardMoore`" -msgid "`Points SQL`_ as described below" -msgstr "`Points SQL`_ 如下所述" +#, fuzzy +msgid "Planar Family" +msgstr "aStar族" -msgid "Points SQL" -msgstr "Points SQL" +msgid ":doc:`pgr_isPlanar`" +msgstr ":doc:`pgr_isPlanar`" -msgid "``pid``" -msgstr "``pid``" +msgid "Miscellaneous Algorithms" +msgstr "" -msgid "**value**" -msgstr "**value**" +msgid ":doc:`pgr_lengauerTarjanDominatorTree`" +msgstr ":doc:`pgr_lengauerTarjanDominatorTree`" -msgid "Identifier of the point." -msgstr "点的标识符。" +msgid ":doc:`pgr_stoerWagner`" +msgstr ":doc:`pgr_stoerWagner`" -msgid "" -"Use with positive value, as internally will be converted to negative value" -msgstr "使用正值,因为内部将转换为负值" +msgid ":doc:`pgr_transitiveClosure`" +msgstr ":doc:`pgr_transitiveClosure`" -msgid "If column is present, it can not be NULL." -msgstr "如果列存在,则它不能为 NULL。" +msgid ":doc:`pgr_hawickCircuits`" +msgstr ":doc:`pgr_hawickCircuits`" + +msgid "Flow - Family of functions" +msgstr "Flow - 函数族" msgid "" -"If column is not present, a sequential negative **value** will be given " -"automatically." -msgstr "如果列不存在,将自动给出连续的负 **值** 。" +":doc:`pgr_maxFlow` - Only the Max flow calculation using Push and Relabel " +"algorithm." +msgstr ":doc:`pgr_maxFlow` - 仅使用 Push 和 Relabel 算法进行最大流量计算。" -msgid "Identifier of the \"closest\" edge to the point." -msgstr "距离该点“最近”的边的标识符。" +msgid "" +":doc:`pgr_boykovKolmogorov` - Boykov and Kolmogorov with details of flow on " +"edges." +msgstr ":doc:`pgr_boykovKolmogorov` - Boykov 和 Kolmogorov 的边流动细节。" -msgid "``fraction``" -msgstr "``fraction``" +msgid "" +":doc:`pgr_edmondsKarp` - Edmonds and Karp algorithm with details of flow on " +"edges." +msgstr ":doc:`pgr_edmondsKarp` - 带有边流量详细信息的 Edmonds 和 Karp 算法。" msgid "" -"Value in <0,1> that indicates the relative postition from the first end " -"point of the edge." -msgstr "<0,1> 中的值指示距边缘第一个端点的相对位置。" +":doc:`pgr_pushRelabel` - Push and relabel algorithm with details of flow on " +"edges." +msgstr ":doc:`pgr_pushRelabel` - 推送和重新标记算法以及边流量的详细信息。" -msgid "``side``" -msgstr "``side``" +msgid "Applications" +msgstr "应用" -msgid "``CHAR``" -msgstr "``CHAR``" +msgid "" +":doc:`pgr_edgeDisjointPaths` - Calculates edge disjoint paths between two " +"groups of vertices." +msgstr ":doc:`pgr_edgeDisjointPaths` - 计算两组顶点之间的边不相交路径。" -msgid "``b``" -msgstr "``b``" +msgid "" +":doc:`pgr_maxCardinalityMatch` - Calculates a maximum cardinality matching " +"in a graph." +msgstr ":doc:`pgr_maxCardinalityMatch` - 计算图中的最大基数匹配。" -msgid "Value in [``b``, ``r``, ``l``, ``NULL``] indicating if the point is:" -msgstr "[``b``, ``r``, ``l``, ``NULL``] 中的值指示该点是否为:" +msgid "Flow Functions General Information" +msgstr "流函数一般信息" -msgid "In the right ``r``," -msgstr "``r`` 在右边," +msgid "The graph is **directed**." +msgstr "该图是 **有向** 的。" -msgid "In the left ``l``," -msgstr "``l`` 在左边," +msgid "Process is done only on edges with positive capacities." +msgstr "仅在具有正容量的边缘上进行处理。" -msgid "In both sides ``b``, ``NULL``" -msgstr "``b``, ``NULL`` 在两边" +msgid "" +"When the maximum flow is 0 then there is no flow and **EMPTY SET** is " +"returned." +msgstr "当最大流量为0时则没有流量并返回 **EMPTY SET** 。" -msgid ":doc:`TSP-family`" -msgstr ":doc:`TSP-family`" +#, fuzzy +msgid "There is no flow when source has the same value as target." +msgstr "当 source与 target相同时,没有流量。" -msgid "Dijkstra - Family of functions" -msgstr "Dijkstra - 函数族" +msgid "Any duplicated values in source or target are ignored." +msgstr "source或target 中的任何重复值都将被忽略。" -msgid ":doc:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths." -msgstr ":doc:`pgr_dijkstra` - Dijkstra 最短路径算法。" +msgid "Calculates the flow/residual capacity for each edge. In the output" +msgstr "计算每条边的流量/剩余容量。 在输出中" -msgid ":doc:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths." -msgstr ":doc:`pgr_dijkstraCost` - 获取最短路径的总成本。" +msgid "Edges with zero flow are omitted." +msgstr "流量为零的边被忽略。" -msgid "" -":doc:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix." -msgstr ":doc:`pgr_dijkstraCostMatrix` - 使用 pgr_dijkstra 创建成本矩阵。" +msgid "Creates" +msgstr "创建" -msgid "" -":doc:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament " -"information." -msgstr ":doc:`pgr_drivingDistance` - 使用 pgr_dijkstra 计算流域信息。" +msgid "a **super source** and edges from it to all the sources," +msgstr "一个**超级源**和从它到所有源的边," -msgid "" -":doc:`pgr_KSP` - Use Yen algorithm with pgr_dijkstra to get the K shortest " -"paths." -msgstr ":doc:`pgr_KSP` - 使用 Yen 算法和 pgr_dijkstra 来获得 K 条最短路径。" +msgid "a **super target** and edges from it to all the targetss." +msgstr "一个**超级目标**和从它到所有目标的边。" -msgid ":doc:`pgr_dijkstraVia` - Get a route of a seuence of vertices." -msgstr ":doc:`pgr_dijkstraVia` - 获取一系列顶点的路径。" +msgid "" +"The maximum flow through the graph is guaranteed to be the value returned " +"by :doc:`pgr_maxFlow ` when executed with the same parameters " +"and can be calculated:" +msgstr "" +"当使用相同参数执行时,通过图表的最大流量保证是 :doc:`pgr_maxFlow " +"` 返回的值,并且可以计算:" -msgid ":doc:`pgr_dijkstraNear` - Get the route to the nearest vertex." -msgstr ":doc:`pgr_dijkstraNear` - 获取到最近顶点的路线。" +msgid "By aggregation of the outgoing flow from the sources" +msgstr "通过聚合来自源的传出流量" -msgid ":doc:`pgr_dijkstraNearCost` - Get the cost to the nearest vertex." -msgstr ":doc:`pgr_dijkstraNearCost` - 获取最近顶点的成本。" +msgid "By aggregation of the incoming flow to the targets" +msgstr "通过聚合到达目标的传入流量" msgid "" -"Dijkstra's algorithm, conceived by Dutch computer scientist Edsger Dijkstra " -"in 1956. It is a graph search algorithm that solves the shortest path " -"problem for a graph with non-negative edge path costs, producing a shortest " -"path from a starting vertex to an ending vertex. This implementation can be " -"used with a directed graph and an undirected graph." +":doc:`pgr_maxFlow` is the maximum Flow and that maximum is guaranteed to be " +"the same on the functions :doc:`pgr_pushRelabel`, :doc:`pgr_edmondsKarp`, :" +"doc:`pgr_boykovKolmogorov`, but the actual flow through each edge may vary." msgstr "" -"Dijkstra算法,由荷兰计算机科学家Edsger Dijkstra于1956年提出。它是一种图搜索算" -"法,解决具有非负边路径成本的图的最短路径问题,产生从起始顶点到结束顶点的最短" -"路径。 该实现可以与有向图和无向图一起使用。" +":doc:`pgr_maxFlow` 是最大流量,并且该最大值保证在函数 :doc:" +"`pgr_pushRelabel`, :doc:`pgr_edmondsKarp`, :doc:`pgr_boykovKolmogorov`, 上相" +"同,但通过每条边的实际流量可能会有所不同。" -msgid "Running time: :math:`O(| start\\ vids | * (V \\log V + E))`" -msgstr "运行时间: :math:`O(| start\\ vids | * (V \\log V + E))`" +msgid "Capacity edges" +msgstr "容量边缘" -msgid "The Dijkstra family functions are based on the Dijkstra algorithm." -msgstr "Dijkstra 系列函数基于 Dijkstra 算法。" +msgid ":doc:`pgr_pushRelabel`" +msgstr ":doc:`pgr_pushRelabel`" -msgid "`Combinations SQL`_" -msgstr "`Combinations SQL`_" +msgid ":doc:`pgr_edmondsKarp`" +msgstr ":doc:`pgr_edmondsKarp`" -msgid "`Combinations SQL`_ as described below" -msgstr "`Combinations SQL`_ 如下所述" +msgid ":doc:`pgr_boykovKolmogorov`" +msgstr ":doc:`pgr_boykovKolmogorov`" -msgid "**start vid**" -msgstr "**start vid**" +msgid "``reverse_capacity``" +msgstr "``reverse_capacity``" -msgid "Identifier of the starting vertex of the path." -msgstr "路径起始顶点的标识符。" +msgid "Capacity-Cost edges" +msgstr "容量-成本边" -msgid "**end vid**" -msgstr "**end vid**" +msgid ":doc:`pgr_maxFlowMinCost`" +msgstr ":doc:`pgr_maxFlowMinCost`" -msgid "Identifier of the ending vertex of the path." -msgstr "路径结束顶点的标识符。" +msgid ":doc:`pgr_maxFlowMinCost_Cost`" +msgstr ":doc:`pgr_maxFlowMinCost_Cost`" -msgid "**end vids**" -msgstr "**end vids**" +msgid "Capacity of the edge (``source``, ``target``)" +msgstr "边 (``source``, ``target``)的容量" -msgid "Array of identifiers of ending vertices." -msgstr "结束顶点的标识符数组。" +msgid "Capacity of the edge (``target``, ``source``)" +msgstr "边 (``target``, ``source``)的容量" -msgid "Combinations SQL" -msgstr "分量 SQL" +msgid "Weight of the edge (``source``, ``target``) if it exist" +msgstr "边 (``source``, ``target``)的权重(如果存在)" -msgid "Identifier of the departure vertex." -msgstr "出发顶点的标识符。" +msgid "Weight of the edge (``target``, ``source``) if it exist" +msgstr "边(``target``, ``source``)的权重(如果存在)" -msgid "Identifier of the arrival vertex." -msgstr "到达顶点的标识符。" +msgid "Cost edges" +msgstr "成本边" -msgid "The problem definition (Advanced documentation)" -msgstr "问题定义(高级文档)" +msgid ":doc:`pgr_edgeDisjointPaths`" +msgstr ":doc:`pgr_edgeDisjointPaths`" -msgid "Given the following query:" -msgstr "给出以下查询:" +msgid "Used in" +msgstr "用于" -msgid "pgr_dijkstra(:math:`sql, start_{vid}, end_{vid}, directed`)" -msgstr "pgr_dijkstra(:math:`sql, start_{vid}, end_{vid}, directed`)" +msgid "**seq**" +msgstr "**seq**" -msgid "" -"where :math:`sql = \\{(id_i, source_i, target_i, cost_i, reverse\\_cost_i)\\}" -"`" -msgstr "" -"其中 :math:`sql =\\{(id_i, source_i, target_i, cost_i, reverse\\_cost_i)\\}`" +msgid "``INT``" +msgstr "``INT``" -msgid "and" -msgstr "和" - -msgid ":math:`source = \\bigcup source_i`," -msgstr ":math:`source = \\bigcup source_i`," - -msgid ":math:`target = \\bigcup target_i`," -msgstr ":math:`target = \\bigcup target_i`," - -msgid "The graphs are defined as follows:" -msgstr "图定义如下:" - -msgid "Directed graph" -msgstr "有向图" - -msgid "The weighted directed graph, :math:`G_d(V,E)`, is definied by:" -msgstr "加权有向图, :math:`G_d(V,E)` 的定义如下:" - -msgid "the set of vertices :math:`V`" -msgstr "顶点集 :math:`V`" - -msgid ":math:`V = source \\cup target \\cup {start_{vid}} \\cup {end_{vid}}`" -msgstr ":math:`V = source \\cup target \\cup {start_v{vid}} \\cup {end_{vid}}`" - -msgid "the set of edges :math:`E`" -msgstr "边集 :math:`E`" - -msgid "" -":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) " -"\\text{ when } cost >=0 \\} & \\quad \\text{if } reverse\\_cost = " -"\\varnothing \\\\ \\text{ } \\text{ } & \\quad \\text{ } \\\\ \\text{ } " -"\\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & \\quad " -"\\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) " -"\\text{ when } reverse\\_cost_i>=0 \\} & \\quad \\text{if } reverse\\_cost " -"\\neq \\varnothing \\\\ \\end{cases}`" -msgstr "" -":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) " -"\\text{ when } cost >=0 \\} & \\quad \\text{if } reverse\\_cost = " -"\\varnothing \\\\ \\text{ } \\text{ } & \\quad \\text{ } \\\\ \\text{ } " -"\\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & \\quad " -"\\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) " -"\\text{ when } reverse\\_cost_i>=0 \\} & \\quad \\text{if } reverse\\_cost " -"\\neq \\varnothing \\\\ \\end{cases}`" - -msgid "Undirected graph" -msgstr "无向图" - -msgid "The weighted undirected graph, :math:`G_u(V,E)`, is definied by:" -msgstr "加权无向图, :math:`G_u(V,E)` 的定义如下:" - -msgid ":math:`V = source \\cup target \\cup {start_v{vid}} \\cup {end_{vid}}`" -msgstr "" -":math:`V = source \\cup target \\cup {start_v{vid}} \\cup {end_{vid}}`" - -msgid "" -":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) " -"\\text{ when } cost >=0 \\} & \\quad \\text{ } \\\\ \\cup \\{(target_i, " -"source_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ if } " -"reverse\\_cost = \\varnothing \\\\ \\text{ } \\text{ } & \\text{ } \\\\ " -"\\text{ } \\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & " -"\\text{ } \\\\ \\cup \\{(target_i, source_i, cost_i) \\text{ when } cost >=0 " -"\\} & \\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) " -"\\text{ when } reverse\\_cost_i >=0)\\} & \\text{ } \\\\ \\cup \\{(source_i, " -"target_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i >=0)\\} & \\quad " -"\\text{ if } reverse\\_cost \\neq \\varnothing \\\\ \\end{cases}`" -msgstr "" -":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) " -"\\text{ when } cost >=0 \\} & \\quad \\text{ } \\\\ \\cup \\{(target_i, " -"source_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ if } " -"reverse\\_cost = \\varnothing \\\\ \\text{ } \\text{ } & \\text{ } \\\\ " -"\\text{ } \\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & " -"\\text{ } \\\\ \\cup \\{(target_i, source_i, cost_i) \\text{ when } cost >=0 " -"\\} & \\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) " -"\\text{ when } reverse\\_cost_i >=0)\\} & \\text{ } \\\\ \\cup \\{(source_i, " -"target_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i >=0)\\} & \\quad " -"\\text{ if } reverse\\_cost \\neq \\varnothing \\\\ \\end{cases}`" - -msgid "The problem" -msgstr "问题" - -msgid "Given:" -msgstr "给定:" - -msgid ":math:`start_{vid} \\in V` a starting vertex" -msgstr ":math:`start_{vid} \\in V` a starting vertex" - -msgid ":math:`end_{vid} \\in V` an ending vertex" -msgstr ":math:`end_{vid} \\in V` an ending vertex" - -msgid "" -":math:`G(V,E) = \\begin{cases} G_d(V,E) & \\quad \\text{ if6 } directed = " -"true \\\\ G_u(V,E) & \\quad \\text{ if5 } directed = false \\\\ \\end{cases}`" -msgstr "" -":math:`G(V,E) = \\begin{cases} G_d(V,E) & \\quad \\text{ if6 } directed = " -"true \\\\ G_u(V,E) & \\quad \\text{ if5 } directed = false \\\\ \\end{cases}`" - -msgid "Then:" -msgstr "然后:" - -msgid "" -":math:`\\boldsymbol{\\pi} = \\{(path\\_seq_i, node_i, edge_i, cost_i, " -"agg\\_cost_i)\\}`" -msgstr "" -":math:`\\boldsymbol{\\pi} = \\{(path\\_seq_i, node_i, edge_i, cost_i, " -"agg\\_cost_i)\\}`" - -msgid "where:" -msgstr "其中:" - -msgid ":math:`path\\_seq_i = i`" -msgstr ":math:`path\\_seq_i = i`" - -msgid ":math:`path\\_seq_{| \\pi |} = | \\pi |`" -msgstr ":math:`path\\_seq_{| \\pi |} = | \\pi |`" - -msgid ":math:`node_i \\in V`" -msgstr ":math:`node_i \\in V`" - -msgid ":math:`node_1 = start_{vid}`" -msgstr ":math:`node_1 = start_{vid}`" - -msgid ":math:`node_{| \\pi |} = end_{vid}`" -msgstr ":math:`node_{| \\pi |} = end_{vid}`" - -msgid "" -":math:`\\forall i \\neq | \\pi |, \\quad (node_i, node_{i+1}, cost_i) \\in E`" -msgstr "" -":math:`\\forall i \\neq | \\pi |, \\quad (node_i, node_{i+1}, cost_i) \\in E`" - -msgid "" -":math:`edge_i = \\begin{cases} id_{(node_i, node_{i+1},cost_i)} &\\quad " -"\\text{when } i \\neq | \\pi | \\\\ -1 &\\quad \\text{when } i = | \\pi | \\" -"\\ \\end{cases}`" -msgstr "" -":math:`edge_i = \\begin{cases} id_{(node_i, node_{i+1},cost_i)} &\\quad " -"\\text{when } i \\neq | \\pi | \\\\ -1 &\\quad \\text{when } i = | \\pi | \\" -"\\ \\end{cases}`" - -msgid ":math:`cost_i = cost_{(node_i, node_{i+1})}`" -msgstr ":math:`cost_i = cost_{(node_i, node_{i+1})}`" - -msgid "" -":math:`agg\\_cost_i = \\begin{cases} 0 &\\quad \\text{when } i = 1 \\" -"\\ \\displaystyle\\sum_{k=1}^{i} cost_{(node_{k-1}, node_k)} &\\quad " -"\\text{when } i \\neq 1 \\\\ \\end{cases}`" -msgstr "" -":math:`agg\\_cost_i = \\begin{cases} 0 &\\quad \\text{when } i = 1 \\" -"\\ \\displaystyle\\sum_{k=1}^{i} cost_{(node_{k-1}, node_k)} &\\quad " -"\\text{when } i \\neq 1 \\\\ \\end{cases}`" - -msgid "" -"In other words: The algorithm returns a the shortest path between :math:" -"`start_{vid}` and :math:`end_{vid}`, if it exists, in terms of a sequence of " -"nodes and of edges," -msgstr "" -"换句话说:如果 :math:`start_{vid}` 和 :math:`end_{vid}` 之间存在最短路径,算" -"法会根据节点和边的序列返回该路径、" - -msgid "" -":math:`path\\_seq` indicates the relative position in the path of the :math:" -"`node` or :math:`edge`." -msgstr "" -":math:`path\\_seq` 表示 :math:`node` 或 :math:`edge` 的路径中的相对位置。" - -msgid ":math:`cost` is the cost of the edge to be used to go to the next node." -msgstr ":math:`cost` 是用于转到下一个节点的边的成本。" - -msgid "" -":math:`agg\\_cost` is the cost from the :math:`start_{vid}` up to the node." -msgstr ":math:`agg\\_cost` 是从 :math:`start_{vid}` 到节点的成本。" - -msgid "If there is no path, the resulting set is empty." -msgstr "如果没有路径,则结果集为空。" - -msgid "Driving Distance - Category" -msgstr "驾驶距离 - 类别" - -msgid "" -":doc:`pgr_drivingDistance` - Driving Distance based on Dijkstra's algorithm" -msgstr ":doc:`pgr_drivingDistance` - 基于 Dijkstra 算法的行驶距离" - -msgid ":doc:`pgr_primDD` - Driving Distance based on Prim's algorithm" -msgstr ":doc:`pgr_primDD` - 基于Prim算法的行驶距离" - -msgid ":doc:`pgr_kruskalDD` - Driving Distance based on Kruskal's algorithm" -msgstr ":doc:`pgr_kruskalDD` - 基于Kruskal算法的行驶距离" - -msgid "Post pocessing" -msgstr "后期处理" - -msgid ":doc:`pgr_alphaShape` - Alpha shape computation" -msgstr ":doc:`pgr_alphaShape` - Alpha 形状计算" - -msgid ":doc:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints" -msgstr ":doc:`pgr_withPointsDD` - 基于 pgr_withPoints 的行驶距离" - -msgid "Calculate nodes that are within a distance." -msgstr "计算一定距离内的节点。" - -msgid "" -"Extracts all the nodes that have costs less than or equal to the value " -"distance." -msgstr "提取成本小于或等于距离值的所有节点。" - -msgid "The edges extracted will conform to the corresponding spanning tree." -msgstr "提取的边将符合相应的生成树。" - -msgid "Edge :math:`(u, v)` will not be included when:" -msgstr "在以下情况下,边 :math:`(u, v)` 将不包括在内:" - -msgid "The distance from the **root** to :math:`u` > limit distance." -msgstr "从 **root** 到 :math:`u` 的距离>限制距离。" - -msgid "The distance from the **root** to :math:`v` > limit distance." -msgstr "从 **root** 到 :math:`v` 的距离>限制距离。" - -msgid "" -"No new nodes are created on the graph, so when is within the limit and is " -"not within the limit, the edge is not included." -msgstr "图上不会创建新的节点,因此当 位于限制内和不在限制内时,不包含边。" - -msgid "Edges SQL as described below." -msgstr "Edges SQL如下所述。" - -msgid "**Root vid**" -msgstr "**Root vid**" - -msgid "**Root vids**" -msgstr "**Root vids**" - -msgid "``ARRAY[ANY-INTEGER]``" -msgstr "``ARRAY[ANY-INTEGER]``" - -msgid "**distance**" -msgstr "**distance**" - -msgid "Upper limit for the inclusion of a node in the result." -msgstr "结果中包含节点的上限。" - -msgid "Returns set of |result-spantree|" -msgstr "Returns set of |result-spantree|" - -msgid ":math:`depth-1` is the depth of ``pred``" -msgstr ":math:`depth-1` is the depth of ``pred``" - -msgid "``pred``" -msgstr "``pred``" - -msgid "Predecessor of ``node``." -msgstr "``node`` 的前驱。" - -msgid "When ``node`` = ``start_vid`` then has the value ``node``." -msgstr "当 `node` 等于 `start_vid` 时,它的值就是 `node`。" - -msgid "Identifier of the ``edge`` used to arrive from ``pred`` to ``node``." -msgstr "从 ``pred`` 到达``node``所使用的 ``edge`` 的标识符。" - -msgid "Experimental Functions" -msgstr "实验函数" - -msgid "Families" -msgstr "族" - -msgid ":doc:`flow-family`" -msgstr ":doc:`flow-family`" - -msgid ":doc:`pgr_maxFlowMinCost` - Details of flow and cost on edges." -msgstr ":doc:`pgr_maxFlowMinCost` - 边缘上的流量和成本详细信息。" - -msgid ":doc:`pgr_maxFlowMinCost_Cost` - Only the Min Cost calculation." -msgstr ":doc:`pgr_maxFlowMinCost_Cost` -仅最小成本计算。" - -msgid ":doc:`chinesePostmanProblem-family`" -msgstr ":doc:`chinesePostmanProblem-family`" - -msgid ":doc:`coloring-family`" -msgstr ":doc:`coloring-family`" - -msgid ":doc:`transformation-family`" -msgstr ":doc:`transformation-family`" - -msgid "" -":doc:`pgr_lineGraphFull` - Transformation algorithm for generating a Line " -"Graph out of each vertex in the input graph." -msgstr "" -":doc:`pgr_lineGraphFull` - 用于从输入图中的每个顶点生成线图的变换算法。" - -msgid ":doc:`traversal-family`" -msgstr ":doc:`traversal-family`" - -msgid "" -":doc:`pgr_breadthFirstSearch` - Breath first search traversal of the graph." -msgstr ":doc:`pgr_breadthFirstSearch` - 图的广度优先搜索遍历。" - -msgid "" -":doc:`pgr_binaryBreadthFirstSearch` - Breath first search traversal of the " -"graph." -msgstr ":doc:`pgr_binaryBreadthFirstSearch` -图的广度优先搜索遍历。" - -msgid ":doc:`components-family`" -msgstr ":doc:`components-family`" - -msgid ":doc:`ordering-family`" -msgstr ":doc:`ordering-family`" - -msgid "" -":doc:`pgr_cuthillMckeeOrdering` - Return reverse Cuthill-McKee ordering of " -"an undirected graph." -msgstr ":doc:`pgr_cuthillMckeeOrdering` -返回无向图的反向 Cuthill-McKee 排序。" - -msgid ":doc:`metrics-family`" -msgstr ":doc:`metrics-family`" - -msgid "" -":doc:`pgr_betweennessCentrality` - Calculates relative betweenness " -"centrality using Brandes Algorithm" -msgstr "" - -msgid ":doc:`TRSP-family`" -msgstr ":doc:`TRSP-family`" - -msgid "categories" -msgstr "类别" - -msgid ":doc:`VRP-category`" -msgstr ":doc:`VRP-category`" - -msgid "Unclassified" -msgstr "未分类" - -msgid ":doc:`pgr_bellmanFord`" -msgstr ":doc:`pgr_bellmanFord`" - -msgid ":doc:`pgr_dagShortestPath`" -msgstr ":doc:`pgr_dagShortestPath`" - -msgid ":doc:`pgr_edwardMoore`" -msgstr ":doc:`pgr_edwardMoore`" - -msgid ":doc:`pgr_isPlanar`" -msgstr ":doc:`pgr_isPlanar`" - -msgid ":doc:`pgr_stoerWagner`" -msgstr ":doc:`pgr_stoerWagner`" - -msgid ":doc:`pgr_topologicalSort`" -msgstr ":doc:`pgr_topologicalSort`" - -msgid ":doc:`pgr_transitiveClosure`" -msgstr ":doc:`pgr_transitiveClosure`" - -msgid ":doc:`pgr_lengauerTarjanDominatorTree`" -msgstr ":doc:`pgr_lengauerTarjanDominatorTree`" - -msgid ":doc:`pgr_hawickCircuits`" -msgstr ":doc:`pgr_hawickCircuits`" - -msgid "Flow - Family of functions" -msgstr "Flow - 函数族" - -msgid "" -":doc:`pgr_maxFlow` - Only the Max flow calculation using Push and Relabel " -"algorithm." -msgstr ":doc:`pgr_maxFlow` - 仅使用 Push 和 Relabel 算法进行最大流量计算。" - -msgid "" -":doc:`pgr_boykovKolmogorov` - Boykov and Kolmogorov with details of flow on " -"edges." -msgstr ":doc:`pgr_boykovKolmogorov` - Boykov 和 Kolmogorov 的边流动细节。" - -msgid "" -":doc:`pgr_edmondsKarp` - Edmonds and Karp algorithm with details of flow on " -"edges." -msgstr ":doc:`pgr_edmondsKarp` - 带有边流量详细信息的 Edmonds 和 Karp 算法。" - -msgid "" -":doc:`pgr_pushRelabel` - Push and relabel algorithm with details of flow on " -"edges." -msgstr ":doc:`pgr_pushRelabel` - 推送和重新标记算法以及边流量的详细信息。" - -msgid "Applications" -msgstr "应用" - -msgid "" -":doc:`pgr_edgeDisjointPaths` - Calculates edge disjoint paths between two " -"groups of vertices." -msgstr ":doc:`pgr_edgeDisjointPaths` - 计算两组顶点之间的边不相交路径。" - -msgid "" -":doc:`pgr_maxCardinalityMatch` - Calculates a maximum cardinality matching " -"in a graph." -msgstr ":doc:`pgr_maxCardinalityMatch` - 计算图中的最大基数匹配。" - -msgid "Flow Functions General Information" -msgstr "流函数一般信息" - -msgid "The graph is **directed**." -msgstr "该图是 **有向** 的。" - -msgid "Process is done only on edges with positive capacities." -msgstr "仅在具有正容量的边缘上进行处理。" - -msgid "" -"When the maximum flow is 0 then there is no flow and **EMPTY SET** is " -"returned." -msgstr "当最大流量为0时则没有流量并返回 **EMPTY SET** 。" - -#, fuzzy -msgid "There is no flow when source has the same vaule as target." -msgstr "当 source与 target相同时,就没有流量。" - -#, fuzzy -msgid "Any duplicated values in source or target are ignored." -msgstr "source或target 中的任何重复值都将被忽略。" - -msgid "Calculates the flow/residual capacity for each edge. In the output" -msgstr "计算每条边的流量/剩余容量。 在输出中" - -msgid "Edges with zero flow are omitted." -msgstr "流量为零的边被忽略。" - -msgid "Creates" -msgstr "" - -msgid "a **super source** and edges from it to all the sources," -msgstr "" - -msgid "a **super target** and edges from it to all the targetss." -msgstr "" - -msgid "" -"The maximum flow through the graph is guaranteed to be the value returned " -"by :doc:`pgr_maxFlow ` when executed with the same parameters " -"and can be calculated:" -msgstr "" -"当使用相同参数执行时,通过图表的最大流量保证是 :doc:`pgr_maxFlow " -"` 返回的值,并且可以计算:" - -msgid "By aggregation of the outgoing flow from the sources" -msgstr "通过聚合来自源的传出流量" - -msgid "By aggregation of the incoming flow to the targets" -msgstr "通过聚合到达目标的传入流量" - -msgid "" -":doc:`pgr_maxFlow` is the maximum Flow and that maximum is guaranteed to be " -"the same on the functions :doc:`pgr_pushRelabel`, :doc:`pgr_edmondsKarp`, :" -"doc:`pgr_boykovKolmogorov`, but the actual flow through each edge may vary." -msgstr "" -":doc:`pgr_maxFlow` 是最大流量,并且该最大值保证在函数 :doc:" -"`pgr_pushRelabel`, :doc:`pgr_edmondsKarp`, :doc:`pgr_boykovKolmogorov`, 上相" -"同,但通过每条边的实际流量可能会有所不同。" - -msgid "Capacity edges" -msgstr "容量边缘" - -msgid ":doc:`pgr_pushRelabel`" -msgstr ":doc:`pgr_pushRelabel`" - -msgid ":doc:`pgr_edmondsKarp`" -msgstr ":doc:`pgr_edmondsKarp`" - -msgid ":doc:`pgr_boykovKolmogorov`" -msgstr ":doc:`pgr_boykovKolmogorov`" - -msgid "``reverse_capacity``" -msgstr "``reverse_capacity``" - -msgid "Capacity-Cost edges" -msgstr "容量-成本边" - -msgid ":doc:`pgr_maxFlowMinCost`" -msgstr ":doc:`pgr_maxFlowMinCost`" - -msgid ":doc:`pgr_maxFlowMinCost_Cost`" -msgstr ":doc:`pgr_maxFlowMinCost_Cost`" - -msgid "Capacity of the edge (``source``, ``target``)" -msgstr "边 (``source``, ``target``)的容量" - -msgid "Capacity of the edge (``target``, ``source``)" -msgstr "边 (``target``, ``source``)的容量" - -msgid "Weight of the edge (``source``, ``target``) if it exist" -msgstr "边 (``source``, ``target``)的权重(如果存在)" - -msgid "Weight of the edge (``target``, ``source``) if it exist" -msgstr "边(``target``, ``source``)的权重(如果存在)" - -msgid "Cost edges" -msgstr "成本边" - -msgid ":doc:`pgr_edgeDisjointPaths`" -msgstr ":doc:`pgr_edgeDisjointPaths`" - -msgid "Used in" -msgstr "用于" - -msgid "**seq**" -msgstr "**seq**" - -msgid "``INT``" -msgstr "``INT``" - -msgid "**edge**" -msgstr "**edge**" +msgid "**edge**" +msgstr "**edge**" msgid "Identifier of the edge in the original query (edges_sql)." msgstr "原始查询中边的标识符 (edges_sql)。" @@ -4472,6 +3960,12 @@ msgstr ":doc:`pgr_kruskal`" msgid ":doc:`pgr_kruskalDD`" msgstr ":doc:`pgr_kruskalDD`" +#, fuzzy +msgid "" +":doc:`pgr_degree` - Returns a set of vertices and corresponding count of " +"incident edges to the vertex." +msgstr ":doc:`pgr_degree` -返回一组顶点以及该顶点对应的关联边数。" + msgid ":doc:`prim-family`" msgstr ":doc:`prim-family`" @@ -4518,9 +4012,21 @@ msgstr ":doc:`pgr_analyzeOneWay` - 分析边的方向性。" msgid ":doc:`pgr_nodeNetwork` - to create nodes to a not noded edge table." msgstr ":doc:`pgr_nodeNetwork` - 为无节点边表创建节点。" +msgid "" +":doc:`pgr_extractVertices` - Extracts vertex information based on the edge " +"table information." +msgstr ":doc:`pgr_extractVertices` - 根据边表信息提取顶点信息。" + msgid ":doc:`pgr_trsp` - Turn Restriction Shortest Path (TRSP)" msgstr ":doc:`pgr_trsp` - 转弯限制最短路径 (TRSP)" +#, fuzzy +msgid "Utilities family" +msgstr "实用程序" + +msgid ":doc:`pgr_findCloseEdges`" +msgstr ":doc:`pgr_findCloseEdges`" + msgid "Functions by categories" msgstr "按类别划分的函数" @@ -4536,7 +4042,8 @@ msgstr ":doc:`drivingDistance-category`" msgid ":doc:`KSP-category`" msgstr ":doc:`KSP-category`" -msgid ":doc:`spanningTree-family`" +#, fuzzy +msgid ":doc:`spanningTree-category`" msgstr ":doc:`spanningTree-family`" msgid ":doc:`BFS-category`" @@ -4557,122 +4064,193 @@ msgstr ":doc:`experimental`" msgid ":doc:`release_notes`" msgstr ":doc:`release_notes`" -msgid "pgRouting 3.7.0 Release Notes" -msgstr "pgRouting 3.7.0 发布说明" +msgid "pgRouting 4.0.0 Release Notes" +msgstr "pgRouting 4.0.0 发布说明" +#, fuzzy msgid "" "To see all issues & pull requests closed by this release see the `Git closed " -"milestone for 3.7.0 `__" +"milestone for 4.0.0 `__" msgstr "" -"要查看此版本关闭的所有问题和拉取请求,请参阅 `3.7.0 `__ 的 Git 关闭里程碑" - -msgid "Support" -msgstr "支持" +"要查看此版本关闭的所有问题和拉取请求,请参阅 `Git closed milestone for 3.7.0 " +"`__" #, fuzzy -msgid "" -"`#2656 `__ Stop support of " -"PostgreSQL12 on pgrouting v3.7" -msgstr "" -"`#2607 `__ 在 C++ 上读取 " -"postgresql 数据" +msgid "Functions promoted to official" +msgstr "实验性的功能被提升为提议的。" -#, fuzzy -msgid "Stopping support of PostgreSQL 12" -msgstr "从 PostgreSQL 12 开始::" +msgid "pgr_trsp" +msgstr "pgr_trsp" -#, fuzzy -msgid "CI does not test for PostgreSQL 12" -msgstr "适用于 postgreSQL 10" +msgid "pgr_trspVia" +msgstr "pgr_trspVia" -msgid "New experimental functions" -msgstr "新的实验函数" +msgid "pgr_trspVia_withPoints" +msgstr "pgr_trspVia_withPoints" -#, fuzzy -msgid "Metrics" -msgstr "限制" +msgid "pgr_trsp_withPoints" +msgstr "pgr_trsp_withPoints" -msgid "pgr_betweennessCentrality" -msgstr "" +msgid "pgr_withPoints" +msgstr "pgr_withPoints" -msgid "Official functions changes" -msgstr "官方功能变更" +msgid "pgr_withPointsCost" +msgstr "pgr_withPointsCost" -msgid "" -"`#2605 `__ Standarize " -"spanning tree functions output" +msgid "pgr_withPointsCostMatrix" +msgstr "pgr_withPointsCostMatrix" + +msgid "pgr_withPointsDD" +msgstr "pgr_withPointsDD" + +msgid "pgr_withPointsKSP" +msgstr "pgr_withPointsKSP" + +msgid "pgr_withPointsVia" +msgstr "pgr_withPointsVia" + +msgid "Signatures promoted to official" msgstr "" -msgid "Functions:" -msgstr "新函数:" +msgid "pgr_aStar(Combinations)" +msgstr "pgr_aStar(组合)" -msgid "``pgr_kruskalDD``" -msgstr "``pgr_kruskalDD``" +msgid "pgr_aStarCost(Combinations)" +msgstr "pgr_aStarCost(组合)" -msgid "``pgr_kruskalDFS``" -msgstr "``pgr_kruskalDFS``" +msgid "pgr_bdAstar(Combinations)" +msgstr "pgr_bdAstar(组合)" -msgid "``pgr_kruskalBFS``" -msgstr "``pgr_kruskalBFS``" +msgid "pgr_bdAstarCost(Combinations)" +msgstr "pgr_bdAstarCost(组合)" -msgid "``pgr_primDD``" -msgstr "``pgr_primDD``" +msgid "pgr_bdDijkstra(Combinations)" +msgstr "pgr_bdDijkstra(组合)" -msgid "``pgr_primDFS``" -msgstr "``pgr_primDFS``" +msgid "pgr_bdDijkstraCost(Combinations)" +msgstr "pgr_bdDijkstraCost(组合)" -msgid "``pgr_primBFS``" -msgstr "``pgr_primBFS``" +msgid "pgr_dijkstra(Combinations)" +msgstr "pgr_dijkstra(组合)" -msgid "Standarizing output columns to |result-spantree|" -msgstr "将输出列标准化为 |result-spantree|" +msgid "pgr_dijkstraCost(Combinations)" +msgstr "pgr_dijkstraCost(组合)" #, fuzzy -msgid "Added ``pred`` result columns." -msgstr "添加了 ``depth`` 和``pred`` 结果列。" +msgid "pgr_KSP(All signatures)" +msgstr "TSP 旧签名" -msgid "Experimental promoted to proposed." -msgstr "实验提升为拟议。" +msgid "pgr_boykovKolmogorov(Combinations)" +msgstr "pgr_boykovKolmogorov (组合)" -msgid "" -"`#2635 `__ pgr_LineGraph " -"ignores directed flag and use negative values for identifiers." -msgstr "" +msgid "pgr_edmondsKarp(Combinations)" +msgstr "pgr_edmondsKarp(组合)" -msgid "``pgr_lineGraph``" -msgstr "``pgr_lineGraph``" +msgid "pgr_maxFlow(Combinations)" +msgstr "pgr_maxFlow(组合)" -msgid "Promoted to **proposed** signature." -msgstr "晋升为 **拟议** 签名。" +msgid "pgr_pushRelabel(Combinations)" +msgstr "pgr_pushRelabel(组合)" -msgid "Works for directed and undirected graphs." -msgstr "适用于有向和无向图。" +msgid "code enhancements:" +msgstr "代码改进:" -msgid "Code enhancement" -msgstr "代码改进" +msgid "Removal of unused C/C++ code" +msgstr "" + +#, fuzzy +msgid "Removal of SQL deprecated functions" +msgstr "移除已弃用的函数和签名" msgid "" -"`#2599 `__ Driving " -"distance cleanup" +"pgr_trsp(text,integer,double precision,integer,double precision,boolean," +"boolean,text)" msgstr "" -"`#2599 `__ 行车距离清理" +"pgr_trsp(text,integer,double precision,integer,double precision,boolean," +"boolean,text)" + +msgid "pgr_trsp(text,integer,integer,boolean,boolean,text)" +msgstr "pgr_trsp(text,integer,integer,boolean,boolean,text)" msgid "" -"`#2607 `__ Read postgresql " -"data on C++" +"pgr_trspviaedges(text,integer[],double precision[],boolean,boolean,text)" msgstr "" -"`#2607 `__ 在 C++ 上读取 " -"postgresql 数据" +"pgr_trspviaedges(text,integer[],double precision[],boolean,boolean,text)" + +msgid "pgr_trspviavertices(text,anyarray,boolean,boolean,text)" +msgstr "pgr_trspviavertices(text,anyarray,boolean,boolean,text)" + +#, fuzzy +msgid "Removal of SQL deprecated internal functions" +msgstr "移除已弃用的函数和签名" + +msgid "_pgr_dijkstranear(text,anyarray,anyarray,bigint,boolean)" +msgstr "_pgr_dijkstranear(text,anyarray,anyarray,bigint,boolean)" + +msgid "_pgr_dijkstranear(text,anyarray,bigint,bigint,boolean)" +msgstr "_pgr_dijkstranear(text,anyarray,bigint,bigint,boolean)" + +msgid "_pgr_dijkstranear(text,bigint,anyarray,bigint,boolean)" +msgstr "_pgr_dijkstranear(text,bigint,anyarray,bigint,boolean)" + +msgid "_pgr_dijkstra(text,anyarray,anyarray,boolean,boolean,boolean,bigint)" +msgstr "_pgr_dijkstra(text,anyarray,anyarray,boolean,boolean,boolean,bigint)" + +msgid "_pgr_dijkstra(text,text,boolean,boolean,boolean)" +msgstr "_pgr_dijkstra(text,text,boolean,boolean,boolean)" + +msgid "_pgr_drivingdistance(text,anyarray,double precision,boolean,boolean)" +msgstr "_pgr_drivingdistance(text,anyarray,double precision,boolean,boolean)" + +msgid "_pgr_kruskal(text,anyarray,text,bigint,double precision)" +msgstr "_pgr_kruskal(text,anyarray,text,bigint,double precision)" + +msgid "_pgr_prim(text,anyarray,text,bigint,double precision)" +msgstr "_pgr_prim(text,anyarray,text,bigint,double precision)" msgid "" -"`#2614 `__ Clang tidy does " -"not work" +"_pgr_trsp(text,integer,double precision,integer,double precision,boolean," +"boolean,text)" msgstr "" -"`#2614 `__ Clang tidy 不工" -"作" +"_pgr_trsp(text,integer,double precision,integer,double precision,boolean," +"boolean,text)" + +msgid "_pgr_trsp(text,text,anyarray,anyarray,boolean)" +msgstr "_pgr_trsp(text,text,anyarray,anyarray,boolean)" + +msgid "_pgr_trsp(text,text,anyarray,bigint,boolean)" +msgstr "_pgr_trsp(text,text,anyarray,bigint,boolean)" + +msgid "_pgr_trsp(text,text,bigint,anyarray,boolean)" +msgstr "_pgr_trsp(text,text,bigint,anyarray,boolean)" + +msgid "_pgr_trsp(text,text,bigint,bigint,boolean)" +msgstr "_pgr_trsp(text,text,bigint,bigint,boolean)" + +msgid "_pgr_trspviavertices(text,integer[],boolean,boolean,text)" +msgstr "_pgr_trspviavertices(text,integer[],boolean,boolean,text)" + +msgid "_pgr_withpointsvia(text,bigint[],double precision[],boolean)" +msgstr "_pgr_withpointsvia(text,bigint[],double precision[],boolean)" + +msgid "_trsp(text,text,anyarray,anyarray,boolean)" +msgstr "_trsp(text,text,anyarray,anyarray,boolean)" + +msgid "_v4trsp(text,text,anyarray,anyarray,boolean)" +msgstr "_v4trsp(text,text,anyarray,anyarray,boolean)" + +msgid "_v4trsp(text,text,text,boolean)" +msgstr "_v4trsp(text,text,text,boolean)" + +#, fuzzy +msgid "Deprecation of internal C/C++ functions" +msgstr "已废弃的函数" + +#, fuzzy +msgid "Internal C/C++ functions in legacy" +msgstr "已废弃的函数" msgid "All releases" msgstr "所有版本" @@ -4680,9 +4258,6 @@ msgstr "所有版本" msgid "Kruskal - Family of functions" msgstr "Kruskal - 函数族" -msgid "Boost Graph Inside" -msgstr "Boost 图内部" - msgid "" "Kruskal's algorithm is a greedy minimum spanning tree algorithm that in each " "cycle finds and adds the edge of the least possible weight that connects any " @@ -4701,7 +4276,7 @@ msgid "Kruskal's running time: :math:`O(E * log E)`" msgstr "克鲁斯卡尔的运行时间: :math:`O(E * log E)`" msgid "Metrics - Family of functions" -msgstr "" +msgstr "度量 - 功能系列" msgid "Migration guide" msgstr "迁移指南" @@ -4717,12 +4292,6 @@ msgstr "结果可能会因变化而不同。" msgid "All deprecated functions will be removed on next mayor version 4.0.0" msgstr "所有已弃用的函数将在下一个主要版本 4.0.0 中被移除" -msgid "Migration of functions" -msgstr "函数迁移" - -msgid "Migrating functions" -msgstr "迁移函数" - msgid "Migration of ``pgr_aStar``" msgstr "``pgr_aStar`` 迁移" @@ -4766,9 +4335,8 @@ msgstr "``pgr_aStar`` (`多对一`)没有 ``end_vid``。" msgid "Migration" msgstr "迁移" -#, fuzzy msgid "Be aware of the existence of the additional columns." -msgstr "请注意附加列的存在。" +msgstr "注意附加栏的存在。" msgid "In ``pgr_aStar`` (`One to One`)" msgstr "在 ``pgr_aStar`` (`一对一`)中" @@ -4885,7 +4453,8 @@ msgstr "在 ``pgr_dijkstra`` (`多对一`)中" msgid "If needed add the new columns, for example:" msgstr "如果需要,过滤掉添加的列,例如:" -msgid "Migration of ``pgr_drivingdistance``" +#, fuzzy +msgid "Migration of ``pgr_drivingDistance``" msgstr "迁移 ``pgr_drivingdistance``" msgid "" @@ -4907,11 +4476,13 @@ msgstr "到" msgid "|result-spantree|" msgstr "|result-spantree|" -msgid "``pgr_drivingdistance`` (Single vertex)" -msgstr "``pgr_drivingdistance`` (单个顶点)" +#, fuzzy +msgid "pgr_drivingDistance(Single vertex)" +msgstr "pgr_drivingDistance (单顶点)" -msgid "``pgr_drivingdistance`` (Multiple vertices)" -msgstr "``pgr_drivingdistance`` (多个顶点)" +#, fuzzy +msgid "pgr_drivingDistance(Multiple vertices)" +msgstr "pgr_drivingDistance (多顶点)" msgid "Output columns were |result-dij-dd|" msgstr "输出列是 |result-dij-dd|" @@ -4925,9 +4496,8 @@ msgstr "有 ``from_v`` 而不是 ``start_vid`` 结果列。" msgid "does not have ``depth`` result column." msgstr "没有 ``depth`` 结果列。" -#, fuzzy msgid "Be aware of the existence and name change of the result columns." -msgstr "请注意结果列的存在和名称更改。" +msgstr "注意结果列的存在和名称变化。" msgid "" "Using `this `__ :" "doc:`pgr_kruskalDD`, :doc:`pgr_kruskalBFS` and :doc:`pgr_kruskalDFS` result " "columns are being standardized." msgstr "" +"Starting from `v3.7.0 `__ :" +"doc:`pgr_kruskalDD`, :doc:`pgr_kruskalBFS` and :doc:`pgr_kruskalDFS` result " +"columns are being standardized." msgid "|result-bfs|" msgstr "|result-bfs|" +msgid "``pgr_kruskalDD``" +msgstr "``pgr_kruskalDD``" + msgid "Single vertex" msgstr "单顶点" msgid "Multiple vertices" msgstr "多个顶点" +msgid "``pgr_kruskalDFS``" +msgstr "``pgr_kruskalDFS``" + +msgid "``pgr_kruskalBFS``" +msgstr "``pgr_kruskalBFS``" + msgid "Output columns were |result-bfs|" -msgstr "" +msgstr "输出列为 |result-bfs|" -#, fuzzy msgid "Single vertex and Multiple vertices" -msgstr "多个顶点" +msgstr "单顶点和多顶点" msgid "Do not have ``pred`` result column." -msgstr "" +msgstr "没有 ``pred`` 结果列。" -#, fuzzy msgid "Be aware of the existence of `pred` result columns." -msgstr "注意附加结果列的存在。" +msgstr "注意`pred`结果列的存在。" -#, fuzzy msgid "If needed filter out the added columns" -msgstr "如果需要,过滤掉添加的列,例如" +msgstr "如果需要,可过滤掉添加的列" -#, fuzzy msgid "Kruskal single vertex" -msgstr "单顶点" +msgstr "Kruskal 单顶点" msgid "" "Using ``pgr_KruskalDD`` as example. Migration is similar to al the affected " "functions." -msgstr "" +msgstr "以 ``pgr_KruskalDD`` 为例。迁移与所有受影响的函数类似。" -#, fuzzy msgid "" "Comparing with `this `__ example." msgstr "" -"使用`这个 `__ 示例。" +"与 `this `__ 示例比较。" -#, fuzzy msgid "" "Now column ``pred`` exists and contains the predecessor of the ``node``." -msgstr "``pred`` 包含``node`` 的前驱。" +msgstr "现在列 ``pred`` 已经存在,并包含了 ``node`` 的前置节点。" -#, fuzzy msgid "Kruskal multiple vertices" -msgstr "多个顶点" +msgstr "Kruskal 多顶点" -#, fuzzy msgid "" "Comparing with `this `__ example." msgstr "" -"使用`这个 `__ 示例。" +"与 `this `__ 示例比较。" msgid "Migration of ``pgr_KSP``" msgstr "迁移 ``pgr_KSP``" -#, fuzzy msgid "" "Starting from `v3.6.0 `__ :" "doc:`pgr_KSP` result columns are being standardized." msgstr "" -"从 `v3.6.0 `__ 开始, :doc:" -"`pgr_KSP`结果列正在标准化。" +"从 `v3.6.0 `__ :doc:" +"`pgr_KSP` 开始,结果列被标准化。" msgid "|ksp-result|" msgstr "|ksp-result|" @@ -5063,12 +4635,11 @@ msgstr "``start_vid`` 和 ``end_vid`` 列不存在。" msgid "``pgr_KSP`` (One to One) does not have ``start_vid`` and ``end_vid``." msgstr "``pgr_KSP`` (一对一) 没有 ``start_vid`` 和``end_vid``。" -#, fuzzy msgid "" "Using `this `__ " "example." msgstr "" -"使用`这个 `__ 示" +"使用 `this `__ 示" "例。" msgid "" @@ -5146,7 +4717,7 @@ msgid "In the query returns only ``edge`` column." msgstr "查询中仅返回 ``边`` 列。" msgid "Migration of ``pgr_primDD`` / ``pgr_primBFS`` / ``pgr_primDFS``" -msgstr "" +msgstr "`pgr_primDD`` / `pgr_primBFS`` / `pgr_primDFS`` 的迁移" #, fuzzy msgid "" @@ -5157,45 +4728,49 @@ msgstr "" "从 `v3.6.0 `__ 开始, :doc:" "`pgr_drivingDistance`结果列正在标准化。" -#, fuzzy +msgid "``pgr_primDD``" +msgstr "``pgr_primDD``" + +msgid "``pgr_primDFS``" +msgstr "``pgr_primDFS``" + +msgid "``pgr_primBFS``" +msgstr "``pgr_primBFS``" + msgid "Prim single vertex" -msgstr "单顶点" +msgstr "Prim 单一节点" msgid "" "Using ``pgr_primDD`` as example. Migration is similar to al the affected " "functions." -msgstr "" +msgstr "以 ``pgr_primDD`` 为例。迁移与所有受影响的函数类似。" -#, fuzzy msgid "" "Comparing with `this `__ example." msgstr "" -"使用`这个 `__ 示例。" +"与 `this `__ 例子比较。" -#, fuzzy msgid "Prim multiple vertices" -msgstr "多个顶点" +msgstr "Prim 多个顶点" -#, fuzzy msgid "" "Comparing with `this `__ example." msgstr "" -"使用`这个 `__ 示例。" +"与 `this `__ 例子比较。" msgid "Migration of ``pgr_withPointsDD``" msgstr "迁移 ``pgr_withPointsDD``" -#, fuzzy msgid "" "Starting from `v3.6.0 `__ :" "doc:`pgr_withPointsDD` result columns are being standardized." msgstr "" -"从`v3.6.0 `__ 开始 :doc:" -"`pgr_withPointsDD`结果列正在标准化。" +"从 `v3.6.0 `__ :doc:" +"`pgr_withPointsDD` 结果列开始标准化。" msgid "|result-generic-no-seq|" msgstr "|result-generic-no-seq|" @@ -5220,10 +4795,9 @@ msgstr "输出列为 |result-1-1-no-seq|" msgid "Does not have ``start_vid``, ``pred`` and ``depth`` result columns." msgstr "没有 ``start_vid``,``pred`` 和``depth`` 结果列。" -#, fuzzy msgid "" "``driving_side`` parameter was named optional now it is compulsory unnamed." -msgstr "``driving_side`` 参数被命名为可选,现在强制未命名。" +msgstr "``driving_side`` 参数以前被命名为可选,现在是强制性的未命名参数。" msgid "``pgr_withPointsDD`` (`Multiple vertices`)" msgstr "``pgr_withPointsDD`` (`多个顶点`)" @@ -5273,7 +4847,6 @@ msgstr "此外, ``l`` 也可用作 **驾驶侧**" msgid "After Migration" msgstr "迁移后" -#, fuzzy msgid "Be aware of the existence of the additional result Columns." msgstr "注意附加结果列的存在。" @@ -5342,13 +4915,12 @@ msgstr "过滤掉额外的列" msgid "Migration of ``pgr_withPointsKSP``" msgstr "迁移 ``pgr_withPointsKSP``" -#, fuzzy msgid "" "Starting from `v3.6.0 `__ :" "doc:`pgr_withPointsKSP` result columns are being standardized." msgstr "" -"从`v3.6.0 `__ 开始 , :doc:" -"`pgr_withPointsKSP`结果列正在标准化。" +"从 `v3.6.0 `__ :doc:" +"`pgr_withPointsKSP` 开始对结果列进行标准化。" msgid "" "And ``driving side`` parameter changed from named optional to unnamed " @@ -5379,8 +4951,137 @@ msgid "" "original columns:" msgstr "如果需要,过滤掉附加列,例如,返回原始列:" -msgid "Migration of turn restrictions" -msgstr "转弯限制的迁移" +msgid "Migration of ``pgr_trsp`` (Vertices)" +msgstr "迁移 ``pgr_trsp`` (顶点)" + +msgid "Signature:" +msgstr "标识:" + +#, fuzzy +msgid "Deprecated" +msgstr "已废弃的功能" + +msgid "`v3.4.0 `__" +msgstr "`v3.4.0 `__" + +msgid "Removed" +msgstr "" + +msgid "`v4.0.0 `__" +msgstr "`v4.0.0 `__" + +msgid ":doc:`pgr_dijkstra`" +msgstr ":doc:`pgr_dijkstra`" + +msgid ":doc:`pgr_trsp`" +msgstr ":doc:`pgr_trsp`" + +#, fuzzy +msgid "`Migration of restrictions`_" +msgstr "限制迁移" + +#, fuzzy +msgid "Use ``pgr_dijkstra`` when there are no restrictions." +msgstr ":doc:`pgr_dijkstra` 当没有限制时," + +msgid "Use :doc:`pgr_dijkstra` instead." +msgstr "请改用 :doc:`pgr_dijkstra`。" + +#, fuzzy +msgid "To get the original column names:" +msgstr "要获取图的连通性:" + +msgid "``id1`` is the node" +msgstr "``id1`` 是节点" + +msgid "``id2`` is the edge" +msgstr "``id2`` 是边" + +#, fuzzy +msgid "Use ``pgr_trsp`` when there are restrictions." +msgstr ":doc:`pgr_trspVia` 当有限制时。" + +msgid "Use :doc:`pgr_trsp` (One to One) instead." +msgstr "请改用 :doc:`pgr_trsp` (一对一)。" + +msgid "Migration of ``pgr_trsp`` (Edges)" +msgstr "迁移 ``pgr_trsp`` (边)" + +msgid ":doc:`pgr_withPoints`" +msgstr ":doc:`pgr_withPoints`" + +msgid ":doc:`pgr_trsp_withPoints`" +msgstr ":doc:`pgr_trsp_withPoints`" + +#, fuzzy +msgid "Use ``pgr_withPoints`` when there are no restrictions." +msgstr ":doc:`pgr_withPoints` 当没有任何限制的时候," + +#, fuzzy +msgid "Use :doc:`pgr_withPoints` (One to One) instead." +msgstr "请改用 :doc:`pgr_trsp` (一对一)。" + +#, fuzzy +msgid "Use ``pgr_trsp_withPoints`` when there are restrictions." +msgstr ":doc:`pgr_trspVia_withPoints` 当有限制时。" + +msgid "Use :doc:`pgr_trsp_withPoints` instead." +msgstr "请使用 :doc:`pgr_trsp_withPoints`。" + +msgid "Migration of ``pgr_trspViaVertices``" +msgstr "迁移 ``pgr_trspViaVertices``" + +msgid ":doc:`pgr_dijkstraVia`" +msgstr ":doc:`pgr_dijkstraVia`" + +msgid ":doc:`pgr_trspVia`" +msgstr ":doc:`pgr_trspVia`" + +#, fuzzy +msgid "Use ``pgr_dijkstraVia`` when there are no restrictions" +msgstr ":doc:`pgr_dijkstraVia` 当无限制时," + +msgid "Use :doc:`pgr_dijkstraVia` instead." +msgstr "请使用 :doc:`pgr_dijkstraVia`。" + +msgid "``id1`` is the path identifier" +msgstr "``id1`` 是路径标识符" + +msgid "``id2`` is the node" +msgstr "``id2`` 是节点" + +msgid "``id3`` is the edge" +msgstr "``id3`` 是边" + +#, fuzzy +msgid "Use ``pgr_trspVia`` when there are restrictions" +msgstr ":doc:`pgr_trspVia` 当有限制时。" + +msgid "Use :doc:`pgr_trspVia` instead." +msgstr "使用 :doc:`pgr_trspVia`。" + +msgid "Migration of ``pgr_trspViaEdges``" +msgstr "迁移 ``pgr_trspViaEdges``" + +msgid ":doc:`pgr_withPointsVia`" +msgstr ":doc:`pgr_withPointsVia`" + +msgid ":doc:`pgr_trspVia_withPoints`" +msgstr ":doc:`pgr_trspVia_withPoints`" + +#, fuzzy +msgid "Use ``pgr_withPointsVia`` when there are no restrictions" +msgstr ":doc:`pgr_withPointsVia` 当没有限制时," + +msgid "Use :doc:`pgr_withPointsVia` instead." +msgstr "请使用 :doc:`pgr_withPointsVia`。" + +#, fuzzy +msgid "Use ``pgr_trspVia_withPoints`` when there are restrictions" +msgstr ":doc:`pgr_trspVia_withPoints` 当有限制时。" + +msgid "Use :doc:`pgr_trspVia_withPoints` instead." +msgstr "使用 :doc:`pgr_trspVia_withPoints` 代替。" msgid "Migration of restrictions" msgstr "限制迁移" @@ -5494,5036 +5195,5413 @@ msgid "" "\\rightarrow9`." msgstr "``rid = 2`` 的限制表示的是路径 :math:`3 \\rightarrow5 \\rightarrow9`。" -msgid "By inspection the path is clear." -msgstr "通过检查,路径是清晰的。" +msgid "By inspection the path is clear." +msgstr "通过检查,路径是清晰的。" + +msgid "" +"To transform the old restrictions table to the new restrictions structure," +msgstr "要将旧的限制表转换为新的限制结构," + +msgid "Create a new table with the new restrictions structure." +msgstr "使用新的限制结构创建一个新表。" + +msgid "In this migration guide ``new_restrictions`` is been used." +msgstr "在此迁移指南中使用了 ``new_restrictions``。" + +msgid "" +"For this migration pgRouting supplies an auxiliary function for reversal of " +"an array ``_pgr_array_reverse`` needed for the migration." +msgstr "" +"为了进行这次迁移,pgRouting 提供了一个用于反转数组的辅助函数 ``_ " +"pgr_array_reverse`` ,这在迁移过程中是必需的。" + +msgid "``_pgr_array_reverse``:" +msgstr "``_pgr_array_reverse``:" + +msgid "Was created temporally for this migration" +msgstr "是为此迁移临时创建的" + +msgid "Is not documented." +msgstr "没有记录。" + +msgid "Will be removed on the next mayor version 4.0.0" +msgstr "将在下一个正式版本 4.0.0 中删除" + +msgid "The migrated table contents:" +msgstr "迁移后的表内容:" + +msgid ":doc:`withPoints-category`" +msgstr ":doc:`withPoints-category`" + +msgid "Ordering - Family of functions" +msgstr "排序 - 函数族" + +msgid "pgRouting Concepts" +msgstr "pgRouting 基本概念" + +msgid "" +"This is a simple guide that go through some of the steps for getting started " +"with pgRouting. This guide covers:" +msgstr "这是一个简单的指南,介绍了 pgRouting 入门的一些步骤。 本指南涵盖:" + +msgid "Graphs" +msgstr "图" + +msgid "A graph is an ordered pair :math:`G = (V ,E)` where:" +msgstr "图是一个有序对 :math:`G = (V ,E)` ,其中:" + +msgid ":math:`V` is a set of vertices, also called nodes." +msgstr ":math:`V` 是一组顶点,也称为节点。" + +msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V \\}`" +msgstr ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V \\}`" + +msgid "There are different kinds of graphs:" +msgstr "有不同类型的图:" + +msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V\\}`" +msgstr ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V\\}`" + +msgid "Undirected simple graph" +msgstr "无向简单图" + +msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V, u \\neq v\\}`" +msgstr ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V, u \\neq v\\}`" + +msgid ":math:`E \\subseteq \\{( u, v ) \\mid (u , v) \\in (V X V) \\}`" +msgstr ":math:`E \\subseteq \\{( u, v ) \\mid (u , v) \\in (V X V) \\}`" + +msgid "Directed simple graph" +msgstr "有向简单图" + +msgid "" +":math:`E \\subseteq \\{( u, v ) \\mid (u , v) \\in (V X V), u \\neq v\\}`" +msgstr "" +":math:`E \\subseteq \\{( u, v ) \\mid (u , v) \\in (V X V), u \\neq v\\}`" + +msgid "Graphs:" +msgstr "图:" + +msgid "Do not have geometries." +msgstr "没有几何图形。" + +msgid "" +"Some graph theory problems require graphs to have weights, called **cost** " +"in pgRouting." +msgstr "一些图论问题需要图具有权重,在 pgRouting 中称为 **成本** 。" + +msgid "" +"In pgRouting there are several ways to represent a graph on the database:" +msgstr "在 pgRouting 中,有多种方法来表示数据库上的图:" + +msgid "With ``cost``" +msgstr "使用 ``cost``" + +msgid "(``id``, ``source``, ``target``, ``cost``)" +msgstr "(``id``, ``source``, ``target``, ``cost``)" + +msgid "With ``cost`` and ``reverse_cost``" +msgstr "使用 ``cost`` 和 ``reverse_cost``" + +msgid "(``id``, ``source``, ``target``, ``cost``, ``reverse_cost``)" +msgstr "(``id``, ``source``, ``target``, ``cost``, ``reverse_cost``)" + +msgid "" +"Identifier of the edge. Requirement to use the database in a consistent. " +"manner." +msgstr "边的标识符。要求在数据库中以一致的方式使用。" + +msgid "Identifier of a vertex." +msgstr "顶点的标识符。" + +msgid "Weight of the edge (``source``, ``target``):" +msgstr "边 (``source``, ``target``)的权重:" + +msgid "" +"When negative the edge (``source``, ``target``) do not exist on the graph." +msgstr "当为负时,图上不存在边(``source``, ``target``)。" + +msgid "``cost`` must exist in the query." +msgstr "查询中必须存在 ``cost``。" + +msgid "" +"When negative the edge (``target``, ``source``) do not exist on the graph." +msgstr "当为负时,图上不存在边(``target``, ``source``)。" + +msgid "" +"The decision of the graph to be **directed** or **undirected** is done when " +"executing a pgRouting algorithm." +msgstr "" +"图是 **有向** 图还是 **无向** 图的决定是在执行 pgRouting 算法时完成的。" + +msgid "Graph with ``cost``" +msgstr "``成本`` 图" -msgid "" -"To transform the old restrictions table to the new restrictions structure," -msgstr "要将旧的限制表转换为新的限制结构," +msgid "The weighted directed graph, :math:`G_d(V,E)`:" +msgstr "加权有向图, :math:`G_d(V,E)`:" -msgid "Create a new table with the new restrictions structure." -msgstr "使用新的限制结构创建一个新表。" +msgid "Graph data is obtained with a query" +msgstr "通过查询获取图数据" -msgid "In this migration guide ``new_restrictions`` is been used." -msgstr "在此迁移指南中使用了 ``new_restrictions``。" +msgid "``SELECT id, source, target, cost FROM edges``" +msgstr "``SELECT id, source, target, cost FROM edges``" msgid "" -"For this migration pgRouting supplies an auxiliary function for reversal of " -"an array ``_pgr_array_reverse`` needed for the migration." +":math:`E = \\{(source_{id}, target_{id}, cost_{id}) \\text{ when } cost_{id} " +"\\ge 0 \\}`" msgstr "" -"为了进行这次迁移,pgRouting 提供了一个用于反转数组的辅助函数 ``_ " -"pgr_array_reverse`` ,这在迁移过程中是必需的。" +":math:`E = \\{(source_{id}, target_{id}, cost_{id}) \\text{ when } cost_{id} " +"\\ge 0 \\}`" -msgid "``_pgr_array_reverse``:" -msgstr "``_pgr_array_reverse``:" +msgid "Edges where ``cost`` is non negative are part of the graph." +msgstr "成本非负的边是图的一部分。" -msgid "Was created temporally for this migration" -msgstr "是为此迁移临时创建的" +msgid ":math:`V = \\{source_{id} \\cup target_{id}\\}`" +msgstr ":math:`V = \\{source_{id} \\cup target_{id}\\}`" -msgid "Is not documented." -msgstr "没有记录。" +msgid "All vertices in ``source`` and ``target`` are part of the graph." +msgstr "``source`` 和``target`` 中的所有顶点都是图的一部分。" -msgid "Will be removed on the next mayor version 4.0.0" -msgstr "将在下一个正式版本 4.0.0 中删除" +msgid "" +"In a directed graph the edge :math:`(source_{id}, target_{id}, cost_{id})` " +"has directionality: :math:`source_{id} \\rightarrow target_{id}`" +msgstr "" +"在有向图中,边 :math:`(source_{id}, target_{id}, cost_{id})` 具有方向性::" +"math:`source_{id} \\rightarrow target_{id}`" -msgid "The migrated table contents:" -msgstr "迁移后的表内容:" +msgid "For the following data:" +msgstr "对于以下数据:" -msgid "Migration of ``pgr_trsp`` (Vertices)" -msgstr "迁移 ``pgr_trsp`` (顶点)" +msgid "Edge :math:`2` (:math:`1 \\rightarrow 3`) is not part of the graph." +msgstr "边 :math:`2` (:math:`1 \\rightarrow 3`) 不是图的一部分。" + +msgid "The data is representing the following graph:" +msgstr "数据代表下图:" + +msgid "" +"In an undirected graph the edge :math:`(source_{id}, target_{id}, " +"cost_{id})` does not have directionality: :math:`source_{id} \\frac{\\;\\;\\;" +"\\;\\;}{} target_{id}`" +msgstr "" +"在无向图中,边 :math:`(source_{id}, target_{id}, cost_{id})` 没有方向性::" +"math:`source_{id} \\frac{\\;\\;\\;\\;\\;}{} target_{id}`" msgid "" -":doc:`pgr_trsp` signatures have changed and many issues have been fixed in " -"the new signatures. This section will show how to migrate from the old " -"signatures to the new replacement functions. This also affects the " -"restrictions." +"In terms of a directed graph is like having two edges: :math:`source_{id} " +"\\leftrightarrow target_{id}`" msgstr "" -":doc:`pgr_trsp` 的签名已更改,并且新签名中已修复许多问题。 本节将展示如何从旧" -"签名迁移到新的替换函数。 这也会影响限制。" +"在有向图的术语中,这相当于有两条边: :math:`source_{id} \\leftrightarrow " +"target_{id}`" -msgid "The integral type of the ``Edges SQL`` can only be ``INTEGER``." -msgstr "``Edges SQL`` 的整数类型只能是 ``INTEGER``。" +msgid "" +"Edge :math:`2` (:math:`1 \\frac{\\;\\;\\;\\;\\;}{} 3`) is not part of the " +"graph." +msgstr "边 :math:`2` (:math:`1 \\frac{\\;\\;\\;\\;\\;}{} 3`) 不是图的一部分。" -msgid "The floating point type of the ``Edges SQL`` can only be ``FLOAT``." -msgstr "``Edges SQL`` 的浮点类型只能是 ``FLOAT``。" +msgid "Graph with ``cost`` and ``reverse_cost``" +msgstr "带有 ``cost`` 和``reverse_cost`` 的图" -msgid "``directed`` flag is compulsory." -msgstr "``directed`` 标志是强制性的。" +msgid "``SELECT id, source, target, cost, reverse_cost FROM edges``" +msgstr "``SELECT id, source, target, cost, reverse_cost FROM edges``" -msgid "Does not autodetect if ``reverse_cost`` column exist." -msgstr "不自动检测 ``reverse_cost`` 列是否存在。" +msgid "The set of edges :math:`E`:" +msgstr "边的集合 :math:`E`:" msgid "" -"User must be careful to match the existence of the column with the value of " -"``has_rcost`` parameter." -msgstr "用户必须小心地将列的存在与 ``has_rcost`` 参数的值相匹配。" - -msgid "The restrictions inner query is optional." -msgstr "内部查询的限制是可选的。" +":math:`E = \\begin{split} \\begin{align} & {\\{(source_{id}, target_{id}, " +"cost_{id}) \\text{ when } cost_{id} >=0 \\}} \\\\ & \\cup \\\\ & " +"{\\{(target_{id}, source_{id}, reverse\\_cost_{id}) \\text{ when } " +"reverse\\_cost_{id} >=0 \\}} \\end{align} \\end{split}`" +msgstr "" +":math:`E = \\begin{split} \\begin{align} & {\\{(source_{id}, target_{id}, " +"cost_{id}) \\text{ when } cost_{id} >=0 \\}} \\\\ & \\cup \\\\ & " +"{\\{(target_{id}, source_{id}, reverse\\_cost_{id}) \\text{ when } " +"reverse\\_cost_{id} >=0 \\}} \\end{align} \\end{split}`" -msgid "The output column names are meaningless" -msgstr "输出列名没有意义" +msgid "" +"Edges :math:`(source \\rightarrow target)` where ``cost`` is non negative " +"are part of the graph." +msgstr "" +"边 :math:`(source \\rightarrow target)` 中的 ``cost`` 是非负数的都属于图的一" +"部分。" -msgid "Migrate by using:" -msgstr "使用以下方式迁移:" +msgid "" +"Edges :math:`(target \\rightarrow source)` where ``reverse_cost`` is non " +"negative are part of the graph." +msgstr "" +"边 :math:`(target \\rightarrow source)` 中的 ``reverse_cost`` 是非负数的都属" +"于图的一部分。" -msgid ":doc:`pgr_dijkstra` when there are no restrictions," -msgstr ":doc:`pgr_dijkstra` 当没有限制时," +msgid "The set of vertices :math:`V`:" +msgstr "顶点集 :math:`V`:" -msgid ":doc:`pgr_trsp` (One to One) when there are restrictions." -msgstr ":doc:`pgr_trsp` (一对一)当有限制时。" +msgid "In a directed graph both edges have directionality" +msgstr "在有向图中,两条边都有方向性" -msgid "Migrating ``pgr_trsp`` (Vertices) using ``pgr_dijkstra``" -msgstr "使用 ``pgr_dijkstra`` 迁移 ``pgr_trsp`` (顶点)" +msgid "" +"edge :math:`(source_{id}, target_{id}, cost_{id})` has directionality: :math:" +"`source_{id} \\rightarrow target_{id}`" +msgstr "" +"边 :math:`(source_{id}, target_{id}, cost_{id})` 具有方向性: :math:" +"`source_{id} \\rightarrow target_{id}`" -msgid "The following query does not have restrictions." -msgstr "以下查询没有限制。" +msgid "" +"edge :math:`(target_{id}, source_{id}, reverse\\_cost_{id})` has " +"directionality: :math:`target_{id} \\rightarrow source_{id}`" +msgstr "" +"边 :math:`(target_{id}, source_{id}, reverse\\_cost_{id})` 具有方向性: :" +"math:`target_{id} \\rightarrow source_{id}`" -msgid "A message about deprecation is shown" -msgstr "显示有关弃用的消息" +msgid "Edges not part of the graph:" +msgstr "边不是图的一部分:" -msgid "Deprecated functions will be removed on the next mayor version 4.0.0" -msgstr "已弃用的功能将在下一个正式版本 4.0.0 中删除" +msgid ":math:`2` (:math:`1 \\rightarrow 3`)" +msgstr ":math:`2` (:math:`1\\rightarrow 3`)" -msgid "Use :doc:`pgr_dijkstra` instead." -msgstr "请改用 :doc:`pgr_dijkstra`。" +msgid ":math:`3` (:math:`3 \\rightarrow 2`)" +msgstr ":math:`3` (:math:`3\\rightarrow 2`)" -msgid "The types casting has been removed." -msgstr "类型强制转换已被删除。" +msgid "In a directed graph both edges do not have directionality" +msgstr "在有向图中,两条边都没有方向性" -msgid ":doc:`pgr_dijkstra`:" -msgstr ":doc:`pgr_dijkstra`:" +msgid "" +"Edge :math:`(source_{id}, target_{id}, cost_{id})` is :math:`source_{id} " +"\\frac{\\;\\;\\;\\;\\;}{} target_{id}`" +msgstr "" +"边 :math:`(source_{id}, target_{id}, cost_{id})` 是 :math:`source_{id} " +"\\frac{\\;\\;\\;\\;\\;}{} target_{id}`" -msgid "Autodetects if ``reverse_cost`` column is in the edges SQL." -msgstr "自动检测 ``reverse_cost`` 列是否在边SQL中。" +msgid "" +"Edge :math:`(target_{id}, source_{id}, reverse\\_cost_{id})` is :math:" +"`target_{id} \\frac{\\;\\;\\;\\;\\;}{} source_{id}`" +msgstr "" +"边 :math:`(target_{id}, source_{id}, reverse\\_cost_{id})`是 :math:" +"`target_{id} \\frac{\\;\\;\\;\\;\\;}{} source_{id}`" -msgid "Accepts ``ANY-INTEGER`` on integral types" -msgstr "接受整数类型 ``ANY-INTEGER``" +msgid "In terms of a directed graph is like having four edges:" +msgstr "就有向图而言,就像有四个边:" -msgid "Accepts ``ANY-NUMERICAL`` on floating point types" -msgstr "接受浮点类型 ``ANY-NUMERICAL``" +msgid ":math:`source_i \\leftrightarrow target_i`" +msgstr ":math:`source_i \\leftrightarrow target_i`" -msgid "``directed`` flag has a default value of ``true``." -msgstr "``directed`` 标志的默认值为``true``。" +msgid ":math:`target_i \\leftrightarrow source_i`" +msgstr ":math:`target_i \\leftrightarrow source_i`" -msgid "Use the same value that on the original query." -msgstr "使用与原始查询相同的值。" +msgid ":math:`2` (:math:`1 \\frac{\\;\\;\\;\\;\\;}{} 3`)" +msgstr ":math:`2` (:math:`1 \\frac{\\;\\;\\;\\;\\;}{} 3`)" -msgid "In this example it is ``true`` which is the default value." -msgstr "在此示例中,默认值为 ``true``。" +msgid ":math:`3` (:math:`3 \\frac{\\;\\;\\;\\;\\;}{} 2`)" +msgstr ":math:`3` (:math:`3 \\frac{\\;\\;\\;\\;\\;}{} 2`)" -msgid "The flag has been omitted and the default is been used." -msgstr "该标志已被省略,并使用默认值。" +msgid "Graphs without geometries" +msgstr "没有几何信息的图" msgid "" -"When the need of using strictly the same (meaningless) names and types of " -"the function been migrated then:" -msgstr "当需要使用严格相同(无意义)的函数名称和类型进行迁移时:" - -msgid "``id1`` is the node" -msgstr "``id1`` 是节点" - -msgid "``id2`` is the edge" -msgstr "``id2`` 是边" +"Personal relationships, genealogy, file dependency problems can be solved " +"using pgRouting. Those problems, normally, do not come with geometries " +"associated with the graph." +msgstr "" +"使用 pgRouting 可以解决个人关系、家谱和文件依赖性问题。这些问题通常不会与图形" +"相关的几何图形一起出现。" -msgid "Migrating ``pgr_trsp`` (Vertices) using ``pgr_trsp``" -msgstr "使用 ``pgr_trsp``迁移 ``pgr_trsp`` (顶点)" +msgid "Wiki example" +msgstr "维基示例" -msgid "The following query has restrictions." -msgstr "以下查询有限制。" +msgid "" +"Solve the example problem taken from `wikipedia `__):" +msgstr "" +"解决来自 `维基百科 `__ )的示例问题 :" -msgid "The restrictions are the last parameter of the function" -msgstr "限制是函数的最后一个参数" +msgid "Problem is to find the shortest path from :math:`1` to :math:`5`." +msgstr "问题是找到从 :math:`1` 到 :math:`5` 的最短路径。" -msgid "Using the old structure of restrictions" -msgstr "使用旧的限制结构" +msgid "Is an undirected graph." +msgstr "是一个无向图。" -msgid "Use :doc:`pgr_trsp` (One to One) instead." -msgstr "请改用 :doc:`pgr_trsp` (一对一)。" +msgid "" +"Although visually looks like to have geometries, the drawing is not to scale." +msgstr "虽然视觉上看起来有几何形状,但该图并不是按比例绘制的。" -msgid "The new structure of restrictions is been used." -msgstr "使用了新的限制结构。" +msgid "No geometries associated to the vertices or edges" +msgstr "没有与顶点或边关联的几何图形" -msgid "It is the second parameter." -msgstr "这是第二个参数。" +msgid "Has 6 vertices :math:`\\{1,2,3,4,5,6\\}`" +msgstr "有6个顶点 :math:`\\{1,2,3,4,5,6\\}`" -msgid ":doc:`pgr_trsp`:" -msgstr ":doc:`pgr_trsp`:" +msgid "Has 9 edges:" +msgstr "有九个边:" -msgid "Migration of ``pgr_trsp`` (Edges)" -msgstr "迁移 ``pgr_trsp`` (边)" +msgid "" +":math:`\\begin{split} \\begin{align} E = & \\{(1,2,7), (1,3,9), (1,6,14), \\" +"\\ & (2,3,10), (2,4,13), \\\\ & (3,4,11), (3,6,2), \\\\ & (4,5,6), \\\\ & " +"(5,6,9) \\} \\end{align} \\end{split}`" +msgstr "" +":math:`\\begin{split} \\begin{align} E = & \\{(1,2,7), (1,3,9), (1,6,14), \\" +"\\ & (2,3,10), (2,4,13), \\\\ & (3,4,11), (3,6,2), \\\\ & (4,5,6), \\\\ & " +"(5,6,9) \\} \\end{align} \\end{split}`" -msgid "The integral types of the ``sql`` can only be ``INTEGER``." -msgstr "``sql`` 的整型类型只能是 ``INTEGER``。" +msgid "The graph can be represented in many ways for example:" +msgstr "该图可以用多种方式表示,例如:" -msgid "The floating point type of the ``sql`` can only be ``FLOAT``." -msgstr "``sql`` 的浮点类型只能是 ``FLOAT``。" +msgid "Prepare the database" +msgstr "准备数据库" -msgid "For these migration guide the following points will be used:" -msgstr "对于这些迁移指南,将使用以下几点:" +msgid "" +"Create a database for the example, access the database and install " +"pgRouting: ::" +msgstr "为示例创建一个数据库,访问数据库并安装 pgRouting:::" -msgid ":doc:`pgr_withPoints` when there are no restrictions," -msgstr ":doc:`pgr_withPoints` 当没有任何限制的时候," +msgid "Create a table" +msgstr "创建表" -msgid ":doc:`pgr_trsp_withPoints` (One to One) when there are restrictions." -msgstr ":doc:`pgr_trsp_withPoints` (一对一) 当有限制时。" +msgid "" +"The basic elements needed to perform basic routing on an undirected graph " +"are:" +msgstr "在无向图上执行基本路由所需的基本元素是:" -msgid "Migrating ``pgr_trsp`` (Edges) using ``pgr_withPoints``" -msgstr "使用 ``pgr_withPoints``迁移 ``pgr_trsp`` (边)" +msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT" +msgstr "SMALLINT, INTEGER, BIGINT, REAL, FLOAT" -msgid "Use :doc:`pgr_withPoints` instead." -msgstr "请使用 :doc:`pgr_withPoints`。" +msgid "Using this table design for this example:" +msgstr "本示例使用此表设计:" -msgid "Do not show details, as the deprecated function does not show details." -msgstr "不显示详细信息,因为已弃用的函数不显示详细信息。" +msgid "Insert the data" +msgstr "插入数据" -msgid ":doc:`pgr_withPoints`:" -msgstr ":doc:`pgr_withPoints`:" +msgid "Find the shortest path" +msgstr "寻找最短路径" -msgid "On the points query do not include the ``side`` column." -msgstr "在点查询中不包括 ``side`` 列。" +msgid "To solve this example :doc:`pgr_dijkstra` is used:" +msgstr "为了解决这个例子,使用了 :doc:`pgr_dijkstra`:" msgid "" -"When the need of using strictly the same (meaningless) names and types, and " -"node values of the function been migrated then:" -msgstr "当需要使用严格相同(无意义)的名称和类型,并且函数的节点值被迁移时:" - -msgid "Migrating ``pgr_trsp`` (Edges) using ``pgr_trsp_withPoints``" -msgstr "使用 ``pgr_trsp_withPoints`` 迁移 ``pgr_trsp`` (边)" +"To go from :math:`1` to :math:`5` the path goes thru the following " +"vertices: :math:`1 \\rightarrow 3 \\rightarrow 6 \\rightarrow 5`" +msgstr "" +"从 :math:`1` 到 :math:`5` 的路径要经过以下顶点: :math:`1 \\rightarrow 3 " +"\\rightarrow 6 \\rightarrow 5`" -msgid "Use :doc:`pgr_trsp_withPoints` instead." -msgstr "请使用 :doc:`pgr_trsp_withPoints`。" +msgid "Vertex information" +msgstr "顶点信息" -msgid ":doc:`pgr_trsp_withPoints`:" -msgstr ":doc:`pgr_trsp_withPoints`:" +msgid "To obtain the vertices information, use :doc:`pgr_extractVertices`" +msgstr "要获取顶点信息,请使用 :doc:`pgr_extractVertices`" -msgid "Migration of ``pgr_trspViaVertices``" -msgstr "迁移 ``pgr_trspViaVertices``" +msgid "Graphs with geometries" +msgstr "具有几何图形的图" -msgid "The integral types of the ``Edges SQL`` can only be ``INTEGER``." -msgstr "``Edges SQL`` 的整数类型只能是 ``INTEGER``。" +msgid "Create a routing Database" +msgstr "创建路由数据库" -msgid ":doc:`pgr_dijkstraVia` when there are no restrictions," -msgstr ":doc:`pgr_dijkstraVia` 当无限制时," +msgid "" +"The first step is to create a database and load pgRouting in the database." +msgstr "第一步是创建数据库并在数据库中加载 pgRouting。" -msgid ":doc:`pgr_trspVia` when there are restrictions." -msgstr ":doc:`pgr_trspVia` 当有限制时。" +msgid "Typically create a database for each project." +msgstr "通常为每个项目创建一个数据库。" -msgid "Migrating ``pgr_trspViaVertices`` using ``pgr_dijkstraVia``" -msgstr "使用 ``pgr_dijkstraVia``迁移 ``pgr_trspViaVertices``" +msgid "" +"Once having the database to work in, load your data and build the routing " +"application in that database." +msgstr "一旦数据库可以工作,加载数据并在该数据库中构建路由应用程序。" -msgid "Use :doc:`pgr_dijkstraVia` instead." -msgstr "请使用 :doc:`pgr_dijkstraVia`。" +msgid "Load Data" +msgstr "加载数据" -msgid ":doc:`pgr_dijkstraVia`:" -msgstr ":doc:`pgr_dijkstraVia`:" +msgid "There are several ways to load your data into pgRouting." +msgstr "有多种方法可以将数据加载到 pgRouting 中。" -msgid "``id1`` is the path identifier" -msgstr "``id1`` 是路径标识符" +msgid "Manually creating a database." +msgstr "手动创建数据库。" -msgid "``id2`` is the node" -msgstr "``id2`` 是节点" +msgid "`Graphs without geometries`_" +msgstr "`没有几何形状的图`_" -msgid "``id3`` is the edge" -msgstr "``id3`` 是边" +msgid ":doc:`sampledata`: a small graph used in the documentation examples" +msgstr ":doc:`sampledata`: 文档示例中使用的小图形" -msgid "Migrating ``pgr_trspViaVertices`` using ``pgr_trspVia``" -msgstr "使用 ``pgr_trspVia``迁移 ``pgr_trspViaVertices``" +msgid "" +"Using `osm2pgrouting `__" +msgstr "" +"使用 `osm2pgrouting `__" -msgid "Use :doc:`pgr_trspVia` instead." -msgstr "使用 :doc:`pgr_trspVia`。" +msgid "There are various open source tools that can help, like:" +msgstr "有多种开源工具可以提供帮助,例如:" -msgid ":doc:`pgr_trspVia`:" -msgstr ":doc:`pgr_trspVia`:" +msgid "shp2pgsql" +msgstr "shp2pgsql" -msgid "Migration of ``pgr_trspViaEdges``" -msgstr "迁移 ``pgr_trspViaEdges``" +msgid "postgresql shapefile loader" +msgstr "postgresql shapefile 加载器" -msgid "" -"And will travel thru the following Via points :math:" -"`4\\rightarrow3\\rightarrow6`" -msgstr "并将途经以下途经点: :math:`4\\rightarrow3\\rightarrow6`" +msgid "ogr2ogr" +msgstr "ogr2ogr" -msgid ":doc:`pgr_withPointsVia` when there are no restrictions," -msgstr ":doc:`pgr_withPointsVia` 当没有限制时," +msgid "vector data conversion utility" +msgstr "矢量数据转换实用程序" -msgid ":doc:`pgr_trspVia_withPoints` when there are restrictions." -msgstr ":doc:`pgr_trspVia_withPoints` 当有限制时。" +msgid "osm2pgsql" +msgstr "osm2pgsql" -msgid "Migrating ``pgr_trspViaEdges`` using ``pgr_withPointsVia``" -msgstr "使用 ``pgr_withPointsVia`` 迁移 ``pgr_trspViaEdges``" +msgid "load OSM data into postgresql" +msgstr "将OSM数据加载到postgresql中" -msgid "Use :doc:`pgr_withPointsVia` instead." -msgstr "请使用 :doc:`pgr_withPointsVia`。" +msgid "" +"Please note that these tools will **not** import the data in a structure " +"compatible with pgRouting and when this happens the topology needs to be " +"adjusted." +msgstr "" +"请注意,这些工具 **不会** 导入与 pgRouting 兼容的结构中的数据,当发生这种情况" +"时,需要调整拓扑。" -msgid ":doc:`pgr_withPointsVia`:" -msgstr ":doc:`pgr_withPointsVia`:" +msgid "Breakup a segments on each segment-segment intersection" +msgstr "在每个线段-线段交叉点上分解线段" -msgid "Migrating ``pgr_trspViaEdges`` using ``pgr_trspVia_withPoints``" -msgstr "使用 ``pgr_trspVia_withPoints``迁移``pgr_trspViaEdges``" +msgid "" +"When missing, add columns and assign values to ``source``, ``target``, " +"``cost``, ``reverse_cost``." +msgstr "" +"如果缺少,请添加列并为 ``source``, ``target``, ``cost``, ``reverse_cost`` 分" +"配值。" -msgid "Use :doc:`pgr_trspVia_withPoints` instead." -msgstr "使用 :doc:`pgr_trspVia_withPoints` 代替。" +msgid "Connect a disconnected graph." +msgstr "连接断开的图。" -msgid ":doc:`pgr_trspVia_withPoints`:" -msgstr ":doc:`pgr_trspVia_withPoints`:" +msgid "Create the complete graph topology" +msgstr "创建完整的图拓扑" -msgid ":doc:`withPoints-category`" -msgstr ":doc:`withPoints-category`" +msgid "Create one or more graphs based on the application to be developed." +msgstr "根据要开发的应用程序创建一个或多个图。" -msgid "Ordering - Family of functions" -msgstr "排序 - 函数族" +msgid "Create a contracted graph for the high speed roads" +msgstr "为高速道路创建收缩图" -msgid "pgRouting Concepts" -msgstr "pgRouting 基本概念" +msgid "Create graphs per state/country" +msgstr "创建每个州/国家的图" -msgid "" -"This is a simple guide that go through some of the steps for getting started " -"with pgRouting. This guide covers:" -msgstr "这是一个简单的指南,介绍了 pgRouting 入门的一些步骤。 本指南涵盖:" +msgid "In few words:" +msgstr "简而言之:" -msgid "Graphs" -msgstr "图" +msgid "Prepare the graph" +msgstr "准备图" -msgid "A graph is an ordered pair :math:`G = (V ,E)` where:" -msgstr "图是一个有序对 :math:`G = (V ,E)` ,其中:" +msgid "" +"What and how to prepare the graph, will depend on the application and/or on " +"the quality of the data and/or on how close the information is to have a " +"topology usable by pgRouting and/or some other factors not mentioned." +msgstr "" +"准备什么以及如何准备图将取决于应用程序和/或数据质量和/或信息与 pgRouting 可用" +"的拓扑的接近程度和/或未提及的一些其他因素。" -msgid ":math:`V` is a set of vertices, also called nodes." -msgstr ":math:`V` 是一组顶点,也称为节点。" +msgid "" +"The steps to prepare the graph involve geometry operations using `PostGIS " +"`__ and some others involve graph operations like :doc:" +"`pgr_contraction` to contract a graph." +msgstr "" +"准备图的步骤涉及使用`PostGIS `__ 进行几何操作,其他一些" +"步骤涉及诸如 :doc:`pgr_contraction` 之类的图操作来收缩图。" -msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V \\}`" -msgstr ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V \\}`" +msgid "" +"The `workshop `__ has a step by step " +"on how to prepare a graph using Open Street Map data, for a small " +"application." +msgstr "" +"该 `workshop `__ 逐步介绍了如何使用开" +"放街道地图数据为小型应用程序准备图。" -msgid "There are different kinds of graphs:" -msgstr "有不同类型的图:" +msgid "The use of indexes on the database design in general:" +msgstr "数据库设计上索引的使用一般:" -msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V\\}`" -msgstr ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V\\}`" +msgid "Have the geometries indexed." +msgstr "对几何图形进行索引。" -msgid "Undirected simple graph" -msgstr "无向简单图" +msgid "Have the identifiers columns indexed." +msgstr "对标识符列建立索引。" -msgid ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V, u \\neq v\\}`" -msgstr ":math:`E \\subseteq \\{( u, v ) \\mid u , v \\in V, u \\neq v\\}`" +msgid "" +"Please consult the `PostgreSQL `__ " +"documentation and the `PostGIS `__ documentation." +msgstr "" +"请查阅`PostgreSQL `__ 文档和 `PostGIS " +"`__ 文档。" -msgid ":math:`E \\subseteq \\{( u, v ) \\mid (u , v) \\in (V X V) \\}`" -msgstr ":math:`E \\subseteq \\{( u, v ) \\mid (u , v) \\in (V X V) \\}`" +msgid "Build a routing topology" +msgstr "构建路由拓扑" -msgid "Directed simple graph" -msgstr "有向简单图" +msgid "" +"The basic information to use the majority of the pgRouting functions ``id, " +"source, target, cost, [reverse_cost]`` is what in pgRouting is called the " +"routing topology." +msgstr "" +"使用大多数 pgRouting 函数的基本信息``id, source, target, cost, " +"[reverse_cost]`` 在 pgRouting 中被称为路由拓扑。" msgid "" -":math:`E \\subseteq \\{( u, v ) \\mid (u , v) \\in (V X V), u \\neq v\\}`" +"``reverse_cost`` is optional but strongly recommended to have in order to " +"reduce the size of the database due to the size of the geometry columns. " +"Having said that, in this documentation ``reverse_cost`` is used in this " +"documentation." msgstr "" -":math:`E \\subseteq \\{( u, v ) \\mid (u , v) \\in (V X V), u \\neq v\\}`" +"``reverse_cost`` 是可选的,但强烈建议使用,以便由于几何列的大小而减小数据库的" +"大小。 话虽如此,在本文档中使用了 ``reverse_cost``。" -msgid "Graphs:" -msgstr "图:" +msgid "" +"When the data comes with geometries and there is no routing topology, then " +"this step is needed." +msgstr "当数据带有几何图形并且没有路由拓扑时,则需要此步骤。" -msgid "Do not have geometries." -msgstr "没有几何图形。" +msgid "" +"All the start and end vertices of the geometries need an identifier that is " +"to be stored in a ``source`` and ``target`` columns of the table of the " +"data. Likewise, ``cost`` and ``reverse_cost`` need to have the value of " +"traversing the edge in both directions." +msgstr "" +"几何图的所有开始和结束顶点都需要一个标识符,该标识符将存储在数据表的" +"``source``列和``target``列中。 同样,``cost`` 和 ``reverse_cost`` 需要具有在" +"两个方向上遍历边的值。" msgid "" -"Some graph theory problems require graphs to have weights, called **cost** " -"in pgRouting." -msgstr "一些图论问题需要图具有权重,在 pgRouting 中称为 **成本** 。" +"If the columns do not exist they need to be added to the table in question. " +"(see `ALTER TABLE `__)" +msgstr "" +"如果这些列不存在,则需要将它们添加到相关表中。 (参见`ALTER TABLE `__ )" msgid "" -"In pgRouting there are several ways to represent a graph on the database:" -msgstr "在 pgRouting 中,有多种方法来表示数据库上的图:" +"The function :doc:`pgr_extractVertices` is used to create a vertices table " +"based on the edge identifier and the geometry of the edge of the graph." +msgstr "" +"函数 :doc:`pgr_extractVertices` 用于根据边标识符和图边的几何形状创建顶点表。" -msgid "With ``cost``" -msgstr "使用 ``cost``" +msgid "" +"Finally using the data stored on the vertices tables the ``source`` and " +"``target`` are filled up." +msgstr "最后使用存储在顶点表上的数据填充 ``source`` 和``target``。" -msgid "(``id``, ``source``, ``target``, ``cost``)" -msgstr "(``id``, ``source``, ``target``, ``cost``)" +msgid "See :doc:`sampledata` for an example for building a topology." +msgstr "有关构建拓扑的示例,请参阅 :doc:`sampledata`。" -msgid "With ``cost`` and ``reverse_cost``" -msgstr "使用 ``cost`` 和 ``reverse_cost``" +msgid "" +"Data coming from OSM and using `osm2pgrouting `__ as an import tool, comes with the routing topology. See an " +"example of using ``osm2pgrouting`` on the `workshop `__." +msgstr "" +"来自 OSM 并使用 `osm2pgrouting `__ 作为导入工具的数据附带路由拓扑。 请参阅 `workshop `__ 上使用 " +"``osm2pgrouting`` 的示例。" -msgid "(``id``, ``source``, ``target``, ``cost``, ``reverse_cost``)" -msgstr "(``id``, ``source``, ``target``, ``cost``, ``reverse_cost``)" +msgid "Adjust costs" +msgstr "调整成本" msgid "" -"Identifier of the edge. Requirement to use the database in a consistent. " -"manner." -msgstr "边的标识符。要求在数据库中以一致的方式使用。" - -msgid "Identifier of a vertex." -msgstr "顶点的标识符。" +"For this example the ``cost`` and ``reverse_cost`` values are going to be " +"the double of the length of the geometry." +msgstr "对于本示例, ``cost`` 和 ``reverse_cost`` 值将是几何体长度的两倍。" -msgid "Weight of the edge (``source``, ``target``):" -msgstr "边 (``source``, ``target``)的权重:" +msgid "Update costs to length of geometry" +msgstr "将成本更新为几何形状的长度" msgid "" -"When negative the edge (``source``, ``target``) do not exist on the graph." -msgstr "当为负时,图上不存在边(``source``, ``target``)。" +"Suppose that ``cost`` and ``reverse_cost`` columns in the sample data " +"represent:" +msgstr "假设样本数据中的 ``cost`` 和 ``reverse_cost`` 列表示:" -msgid "``cost`` must exist in the query." -msgstr "查询中必须存在 ``cost``。" +msgid ":math:`1` when the edge exists in the graph" +msgstr "当边存在于图中时为 :math:`1`" -msgid "" -"When negative the edge (``target``, ``source``) do not exist on the graph." -msgstr "当为负时,图上不存在边(``target``, ``source``)。" +msgid ":math:`-1` when the edge does not exist in the graph" +msgstr "当图中不存在边时为 :math:`-1`" + +msgid "Using that information updating to the length of the geometries:" +msgstr "使用该信息更新几何形状的长度:" + +msgid "Which gives the following results:" +msgstr "给出以下结果:" msgid "" -"The decision of the graph to be **directed** or **undirected** is done when " -"executing a pgRouting algorithm." -msgstr "" -"图是 **有向** 图还是 **无向** 图的决定是在执行 pgRouting 算法时完成的。" +"Note that to be able to follow the documentation examples, everything is " +"based on the original graph." +msgstr "请注意,为了能够遵循文档示例,一切都基于原始图。" -msgid "Graph with ``cost``" -msgstr "``成本`` 图" +msgid "Returning to the original data:" +msgstr "回到原始数据:" -msgid "The weighted directed graph, :math:`G_d(V,E)`:" -msgstr "加权有向图, :math:`G_d(V,E)`:" +msgid "Update costs based on codes" +msgstr "根据代码更新成本" -msgid "Graph data is obtained with a query" -msgstr "通过查询获取图数据" +msgid "Other datasets, can have a column with values like" +msgstr "其他数据集可以有一列包含如下值" -msgid "``SELECT id, source, target, cost FROM edges``" -msgstr "``SELECT id, source, target, cost FROM edges``" +msgid "``FT`` vehicle flow on the direction of the geometry" +msgstr "``FT`` 几何方向上的车流" -msgid "" -":math:`E = \\{(source_{id}, target_{id}, cost_{id}) \\text{ when } cost_{id} " -"\\ge 0 \\}`" -msgstr "" -":math:`E = \\{(source_{id}, target_{id}, cost_{id}) \\text{ when } cost_{id} " -"\\ge 0 \\}`" +msgid "``TF`` vehicle flow opposite of the direction of the geometry" +msgstr "``TF`` 车流与几何方向相反" -msgid "Edges where ``cost`` is non negative are part of the graph." -msgstr "成本非负的边是图的一部分。" +msgid "``B`` vehicle flow on both directions" +msgstr "``B`` 双向车流" -msgid ":math:`V = \\{source_{id} \\cup target_{id}\\}`" -msgstr ":math:`V = \\{source_{id} \\cup target_{id}\\}`" +msgid "Preparing a code column for the example:" +msgstr "为示例准备代码列:" -msgid "All vertices in ``source`` and ``target`` are part of the graph." -msgstr "``source`` 和``target`` 中的所有顶点都是图的一部分。" +msgid "Adjusting the costs based on the codes:" +msgstr "根据代码调整成本:" -msgid "" -"In a directed graph the edge :math:`(source_{id}, target_{id}, cost_{id})` " -"has directionality: :math:`source_{id} \\rightarrow target_{id}`" -msgstr "" -"在有向图中,边 :math:`(source_{id}, target_{id}, cost_{id})` 具有方向性::" -"math:`source_{id} \\rightarrow target_{id}`" +msgid "Check the Routing Topology" +msgstr "检查路由拓扑" -msgid "For the following data:" -msgstr "对于以下数据:" +msgid "There are lots of possible problems in a graph." +msgstr "图中可能存在很多问题。" -msgid "Edge :math:`2` (:math:`1 \\rightarrow 3`) is not part of the graph." -msgstr "边 :math:`2` (:math:`1 \\rightarrow 3`) 不是图的一部分。" +msgid "The data used may not have been designed with routing in mind." +msgstr "使用的数据在设计时可能没有考虑路由。" -msgid "The data is representing the following graph:" -msgstr "数据代表下图:" +msgid "A graph has some very specific requirements." +msgstr "图有一些非常具体的要求。" -msgid "" -"In an undirected graph the edge :math:`(source_{id}, target_{id}, " -"cost_{id})` does not have directionality: :math:`source_{id} \\frac{\\;\\;\\;" -"\\;\\;}{} target_{id}`" -msgstr "" -"在无向图中,边 :math:`(source_{id}, target_{id}, cost_{id})` 没有方向性::" -"math:`source_{id} \\frac{\\;\\;\\;\\;\\;}{} target_{id}`" +msgid "The graph is disconnected." +msgstr "该图已断开连接。" -msgid "" -"In terms of a directed graph is like having two edges: :math:`source_{id} " -"\\leftrightarrow target_{id}`" -msgstr "" -"在有向图的术语中,这相当于有两条边: :math:`source_{id} \\leftrightarrow " -"target_{id}`" +msgid "There are unwanted intersections." +msgstr "存在不需要的交叉点。" -msgid "" -"Edge :math:`2` (:math:`1 \\frac{\\;\\;\\;\\;\\;}{} 3`) is not part of the " -"graph." -msgstr "边 :math:`2` (:math:`1 \\frac{\\;\\;\\;\\;\\;}{} 3`) 不是图的一部分。" +msgid "The graph is too large and needs to be contracted." +msgstr "图太大,需要收缩。" -msgid "Graph with ``cost`` and ``reverse_cost``" -msgstr "带有 ``cost`` 和``reverse_cost`` 的图" +msgid "A sub graph is needed for the application." +msgstr "该应用程序需要一个子图。" -msgid "The weighted directed graph, :math:`G_d(V,E)`, is defined by:" -msgstr "加权有向图, :math:`G_d(V,E)`, 定义如下:" +msgid "" +"and many other problems that the pgRouting user, that is the application " +"developer might encounter." +msgstr "以及 pgRouting 用户(即应用程序开发人员)可能遇到的许多其他问题。" -msgid "``SELECT id, source, target, cost, reverse_cost FROM edges``" -msgstr "``SELECT id, source, target, cost, reverse_cost FROM edges``" +msgid "Crossing edges" +msgstr "交叉边" -msgid "The set of edges :math:`E`:" -msgstr "边的集合 :math:`E`:" +msgid "To get the crossing edges:" +msgstr "要获取交叉边:" msgid "" -":math:`E = \\begin{split} \\begin{align} & {\\{(source_{id}, target_{id}, " -"cost_{id}) \\text{ when } cost_{id} >=0 \\}} \\\\ & \\cup \\\\ & " -"{\\{(target_{id}, source_{id}, reverse\\_cost_{id}) \\text{ when } " -"reverse\\_cost_{id} >=0 \\}} \\end{align} \\end{split}`" -msgstr "" -":math:`E = \\begin{split} \\begin{align} & {\\{(source_{id}, target_{id}, " -"cost_{id}) \\text{ when } cost_{id} >=0 \\}} \\\\ & \\cup \\\\ & " -"{\\{(target_{id}, source_{id}, reverse\\_cost_{id}) \\text{ when } " -"reverse\\_cost_{id} >=0 \\}} \\end{align} \\end{split}`" +"That information is correct, for example, when in terms of vehicles, is it a " +"tunnel or bridge crossing over another road." +msgstr "这些信息是正确的,例如,就车辆而言,是隧道还是横跨另一条道路的桥梁。" + +msgid "It might be incorrect, for example:" +msgstr "它可能是不正确的,例如:" msgid "" -"Edges :math:`(source \\rightarrow target)` where ``cost`` is non negative " -"are part of the graph." -msgstr "" -"边 :math:`(source \\rightarrow target)` 中的 ``cost`` 是非负数的都属于图的一" -"部分。" +"When it is actually an intersection of roads, where vehicles can make turns." +msgstr "当它实际上是道路交叉口时,车辆可以转弯。" msgid "" -"Edges :math:`(target \\rightarrow source)` where ``reverse_cost`` is non " -"negative are part of the graph." -msgstr "" -"边 :math:`(target \\rightarrow source)` 中的 ``reverse_cost`` 是非负数的都属" -"于图的一部分。" +"When in terms of electrical lines, the electrical line is able to switch " +"roads even on a tunnel or bridge." +msgstr "在电力线路方面,电力线能够在隧道或桥梁上甚至切换道路。" -msgid "The set of vertices :math:`V`:" -msgstr "顶点集 :math:`V`:" +msgid "When it is incorrect, it needs fixing:" +msgstr "当不正确时,需要修复:" -msgid "In a directed graph both edges have directionality" -msgstr "在有向图中,两条边都有方向性" +msgid "For vehicles and pedestrians" +msgstr "对于车辆和行人" msgid "" -"edge :math:`(source_{id}, target_{id}, cost_{id})` has directionality: :math:" -"`source_{id} \\rightarrow target_{id}`" +"If the data comes from OSM and was imported to the database using " +"``osm2pgrouting``, the fix needs to be done in the `OSM portal `__ and the data imported again." msgstr "" -"边 :math:`(source_{id}, target_{id}, cost_{id})` 具有方向性: :math:" -"`source_{id} \\rightarrow target_{id}`" +"如果数据来自 OSM 并使用 ``osm2pgrouting`` 导入到数据库,则需要在 `OSM portal " +"`__ 中完成修复并再次导入数据。" msgid "" -"edge :math:`(target_{id}, source_{id}, reverse\\_cost_{id})` has " -"directionality: :math:`target_{id} \\rightarrow source_{id}`" +"In general when the data comes from a supplier that has the data prepared " +"for routing vehicles, and there is a problem, the data is to be fixed from " +"the supplier" msgstr "" -"边 :math:`(target_{id}, source_{id}, reverse\\_cost_{id})` 具有方向性: :" -"math:`target_{id} \\rightarrow source_{id}`" - -msgid "Edges not part of the graph:" -msgstr "边不是图的一部分:" +"一般来说,当数据来自为车辆路线准备数据的供应商时,并且出现问题时,需要从供应" +"商处修复数据" -msgid ":math:`2` (:math:`1 \\rightarrow 3`)" -msgstr ":math:`2` (:math:`1\\rightarrow 3`)" +msgid "For very specific applications" +msgstr "对于非常具体的应用" -msgid ":math:`3` (:math:`3 \\rightarrow 2`)" -msgstr ":math:`3` (:math:`3\\rightarrow 2`)" +msgid "" +"The data is correct when from the point of view of routing vehicles or " +"pedestrians." +msgstr "从路线车辆或行人的角度来看,数据是正确的。" -msgid "In a directed graph both edges do not have directionality" -msgstr "在有向图中,两条边都没有方向性" +msgid "The data needs a local fix for the specific application." +msgstr "数据需要针对特定应用程序进行本地修复。" msgid "" -"Edge :math:`(source_{id}, target_{id}, cost_{id})` is :math:`source_{id} " -"\\frac{\\;\\;\\;\\;\\;}{} target_{id}`" +"Once analyzed one by one the crossings, for the ones that need a local fix, " +"the edges need to be `split `__." msgstr "" -"边 :math:`(source_{id}, target_{id}, cost_{id})` 是 :math:`source_{id} " -"\\frac{\\;\\;\\;\\;\\;}{} target_{id}`" +"对交叉点进行一一分析后,对于需要局部修复的交叉点,需要 `分割 `__ 边。" msgid "" -"Edge :math:`(target_{id}, source_{id}, reverse\\_cost_{id})` is :math:" -"`target_{id} \\frac{\\;\\;\\;\\;\\;}{} source_{id}`" +"The new edges need to be added to the edges table, the rest of the " +"attributes need to be updated in the new edges, the old edges need to be " +"removed and the routing topology needs to be updated." msgstr "" -"边 :math:`(target_{id}, source_{id}, reverse\\_cost_{id})`是 :math:" -"`target_{id} \\frac{\\;\\;\\;\\;\\;}{} source_{id}`" - -msgid "In terms of a directed graph is like having four edges:" -msgstr "就有向图而言,就像有四个边:" - -msgid ":math:`source_i \\leftrightarrow target_i`" -msgstr ":math:`source_i \\leftrightarrow target_i`" - -msgid ":math:`target_i \\leftrightarrow source_i`" -msgstr ":math:`target_i \\leftrightarrow source_i`" - -msgid ":math:`2` (:math:`1 \\frac{\\;\\;\\;\\;\\;}{} 3`)" -msgstr ":math:`2` (:math:`1 \\frac{\\;\\;\\;\\;\\;}{} 3`)" - -msgid ":math:`3` (:math:`3 \\frac{\\;\\;\\;\\;\\;}{} 2`)" -msgstr ":math:`3` (:math:`3 \\frac{\\;\\;\\;\\;\\;}{} 2`)" +"需要将新边添加到边表中,需要更新新边中的其余属性,需要删除旧边并需要更新路由" +"拓扑。" -msgid "Graphs without geometries" -msgstr "没有几何信息的图" +msgid "Adding split edges" +msgstr "添加分割边" msgid "" -"Personal relationships, genealogy, file dependency problems can be solved " -"using pgRouting. Those problems, normally, do not come with geometries " -"associated with the graph." -msgstr "" -"使用 pgRouting 可以解决个人关系、家谱和文件依赖性问题。这些问题通常不会与图形" -"相关的几何图形一起出现。" - -msgid "Wiki example" -msgstr "维基示例" +"For each pair of crossing edges a process similar to this one must be " +"performed." +msgstr "对于每一对交叉边,必须执行与此类似的过程。" msgid "" -"Solve the example problem taken from `wikipedia `__):" +"The columns inserted and the way are calculated are based on the " +"application. For example, if the edges have a trait **name**, then that " +"column is to be copied." msgstr "" -"解决来自 `维基百科 `__ )的示例问题 :" - -msgid "Problem is to find the shortest path from :math:`1` to :math:`5`." -msgstr "问题是找到从 :math:`1` 到 :math:`5` 的最短路径。" +"插入的列和计算方式取决于应用程序。 例如,如果边具有特征 **名称** ,则将复制该" +"列。" -msgid "Is an undirected graph." -msgstr "是一个无向图。" +msgid "For pgRouting calculations" +msgstr "用于 pgRouting 计算" msgid "" -"Although visually looks like to have geometries, the drawing is not to scale." -msgstr "虽然视觉上看起来有几何形状,但该图并不是按比例绘制的。" - -msgid "No geometries associated to the vertices or edges" -msgstr "没有与顶点或边关联的几何图形" +"**factor** based on the position of the intersection of the edges can be " +"used to adjust the ``cost`` and ``reverse_cost`` columns." +msgstr "基于边相交位置的 **因子** 可用于调整 ``cost`` 和 ``reverse_cost`` 列。" -msgid "Has 6 vertices :math:`\\{1,2,3,4,5,6\\}`" -msgstr "有6个顶点 :math:`\\{1,2,3,4,5,6\\}`" +msgid "" +"Capacity information, used in the :doc:`flow-family` functions does not need " +"to change when splitting edges." +msgstr "分割边时,在 :doc:`flow-family` 函数中使用的容量信息不需要改变。" -msgid "Has 9 edges:" -msgstr "有九个边:" +msgid "Adding new vertices" +msgstr "添加新的顶点" msgid "" -":math:`\\begin{split} \\begin{align} E = & \\{(1,2,7), (1,3,9), (1,6,14), \\" -"\\ & (2,3,10), (2,4,13), \\\\ & (3,4,11), (3,6,2), \\\\ & (4,5,6), \\\\ & " -"(5,6,9) \\} \\end{align} \\end{split}`" -msgstr "" -":math:`\\begin{split} \\begin{align} E = & \\{(1,2,7), (1,3,9), (1,6,14), \\" -"\\ & (2,3,10), (2,4,13), \\\\ & (3,4,11), (3,6,2), \\\\ & (4,5,6), \\\\ & " -"(5,6,9) \\} \\end{align} \\end{split}`" +"After adding all the split edges required by the application, the newly " +"created vertices need to be added to the vertices table." +msgstr "添加应用程序所需的所有分割边后,需要将新创建的顶点添加到顶点表中。" -msgid "The graph can be represented in many ways for example:" -msgstr "该图可以用多种方式表示,例如:" +msgid "Updating edges topology" +msgstr "更新边拓扑" -msgid "Prepare the database" -msgstr "准备数据库" +msgid "Removing the surplus edges" +msgstr "去除多余的边" msgid "" -"Create a database for the example, access the database and install " -"pgRouting: ::" -msgstr "为示例创建一个数据库,访问数据库并安装 pgRouting:::" - -msgid "Create a table" -msgstr "创建表" +"Once all significant information needed by the application has been " +"transported to the new edges, then the crossing edges can be deleted." +msgstr "一旦应用程序所需的所有重要信息都已传输到新边,则可以删除交叉边。" msgid "" -"The basic elements needed to perform basic routing on an undirected graph " -"are:" -msgstr "在无向图上执行基本路由所需的基本元素是:" +"There are other options to do this task, like creating a view, or a " +"materialized view." +msgstr "还有其他选项可以完成此任务,例如创建视图或物化视图。" -msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT" -msgstr "SMALLINT, INTEGER, BIGINT, REAL, FLOAT" +msgid "Updating vertices topology" +msgstr "更新顶点拓扑" -msgid "Using this table design for this example:" -msgstr "本示例使用此表设计:" +msgid "To keep the graph consistent, the vertices topology needs to be updated" +msgstr "为了保持图的一致性,需要更新顶点拓扑" -msgid "Insert the data" -msgstr "插入数据" +msgid "Checking for crossing edges" +msgstr "检查交叉边" -msgid "Find the shortest path" -msgstr "寻找最短路径" +msgid "There are no crossing edges on the graph." +msgstr "图上没有交叉边。" -msgid "To solve this example :doc:`pgr_dijkstra` is used:" -msgstr "为了解决这个例子,使用了 :doc:`pgr_dijkstra`:" +msgid "Disconnected graphs" +msgstr "断开连接的图" + +msgid "To get the graph connectivity:" +msgstr "要获取图的连通性:" msgid "" -"To go from :math:`1` to :math:`5` the path goes thru the following " -"vertices: :math:`1 \\rightarrow 3 \\rightarrow 6 \\rightarrow 5`" +"In this example, the component :math:`2` consists of vertices :math:`\\{2, " +"4\\}` and both vertices are also part of the dead end result set." msgstr "" -"从 :math:`1` 到 :math:`5` 的路径要经过以下顶点: :math:`1 \\rightarrow 3 " -"\\rightarrow 6 \\rightarrow 5`" +"在此示例中,组件 :math:`2`由顶点 :math:`\\{2, 4\\}` 组成,并且两个顶点也是死" +"端结果集的一部分。" -msgid "Vertex information" -msgstr "顶点信息" +msgid "This graph needs to be connected." +msgstr "这个图需要连接起来。" -msgid "To obtain the vertices information, use :doc:`pgr_extractVertices`" -msgstr "要获取顶点信息,请使用 :doc:`pgr_extractVertices`" +msgid "" +"With the original graph of this documentation, there would be 3 components " +"as the crossing edge in this graph is a different component." +msgstr "对于本文档的原始图,将有 3 个组件,因为该图中的交叉边是不同的组件。" -msgid "Graphs with geometries" -msgstr "具有几何图形的图" +msgid "Prepare storage for connection information" +msgstr "为连接信息准备存储" -msgid "Create a routing Database" -msgstr "创建路由数据库" +msgid "Save the vertices connection information" +msgstr "保存顶点连接信息" -msgid "" -"The first step is to create a database and load pgRouting in the database." -msgstr "第一步是创建数据库并在数据库中加载 pgRouting。" +msgid "Save the edges connection information" +msgstr "保存边连接信息" -msgid "Typically create a database for each project." -msgstr "通常为每个项目创建一个数据库。" +msgid "Get the closest vertex" +msgstr "获取最近的顶点" msgid "" -"Once having the database to work in, load your data and build the routing " -"application in that database." -msgstr "一旦数据库可以工作,加载数据并在该数据库中构建路由应用程序。" - -msgid "Load Data" -msgstr "加载数据" +"Using :doc:`pgr_findCloseEdges` the closest vertex to component :math:`1` is " +"vertex :math:`4`. And the closest edge to vertex :math:`4` is edge :math:" +"`14`." +msgstr "" +"使用 :doc:`pgr_findCloseEdges` 距离组件 :math:`1` 最近的顶点是顶点 :math:" +"`4`。 距离顶点 :math:`4` 最近的边是 边 :math:`14`。" -msgid "There are several ways to load your data into pgRouting." -msgstr "有多种方法可以将数据加载到 pgRouting 中。" +msgid "" +"The ``edge`` can be used to connect the components, using the ``fraction`` " +"information about the edge :math:`14` to split the connecting edge." +msgstr "" +"``edge``可用于连接组件,利用边 :math:`14` 的``fraction`` 信息来分割连接边。" -msgid "Manually creating a database." -msgstr "手动创建数据库。" +msgid "Connecting components" +msgstr "连接组件" -msgid "`Graphs without geometries`_" -msgstr "`没有几何形状的图`_" +msgid "There are three basic ways to connect the components" +msgstr "连接组件有三种基本方法" -msgid ":doc:`sampledata`: a small graph used in the documentation examples" -msgstr ":doc:`sampledata`: 文档示例中使用的小图形" +msgid "From the vertex to the starting point of the edge" +msgstr "从顶点到边的起点" -msgid "" -"Using `osm2pgrouting `__" -msgstr "" -"使用 `osm2pgrouting `__" +msgid "From the vertex to the ending point of the edge" +msgstr "从顶点到边的终点" -msgid "There are various open source tools that can help, like:" -msgstr "有多种开源工具可以提供帮助,例如:" +msgid "From the vertex to the closest vertex on the edge" +msgstr "从边上的顶点到最近的顶点" -msgid "shp2pgsql" -msgstr "shp2pgsql" +msgid "This solution requires the edge to be split." +msgstr "该解决方案需要将边缘分割。" -msgid "postgresql shapefile loader" -msgstr "postgresql shapefile 加载器" +msgid "The following query shows the three ways to connect the components:" +msgstr "以下查询显示了连接组件的三种方式:" -msgid "ogr2ogr" -msgstr "ogr2ogr" +msgid "Checking components" +msgstr "检查组件" -msgid "vector data conversion utility" -msgstr "矢量数据转换实用程序" +msgid "" +"Ignoring the edge that requires further work. The graph is now fully " +"connected as there is only one component." +msgstr "忽略需要进一步工作的边缘。 该图现在已完全连接,因为只有一个组件。" -msgid "osm2pgsql" -msgstr "osm2pgsql" +msgid "Contraction of a graph" +msgstr "图的收缩" -msgid "load OSM data into postgresql" -msgstr "将OSM数据加载到postgresql中" +msgid "The graph can be reduced in size using :doc:`contraction-family`" +msgstr "可以使用 :doc:`contraction-family` 来减小图形的大小" msgid "" -"Please note that these tools will **not** import the data in a structure " -"compatible with pgRouting and when this happens the topology needs to be " -"adjusted." +"When to contract will depend on the size of the graph, processing times, " +"correctness of the data, on the final application, or any other factor not " +"mentioned." msgstr "" -"请注意,这些工具 **不会** 导入与 pgRouting 兼容的结构中的数据,当发生这种情况" -"时,需要调整拓扑。" +"何时收缩将取决于图的大小、处理时间、数据的正确性、最终应用程序或任何其他未提" +"及的因素。" -msgid "Breakup a segments on each segment-segment intersection" -msgstr "在每个线段-线段交叉点上分解线段" +msgid "" +"A fairly good method of finding out if contraction can be useful is because " +"of the number of dead ends and/or the number of linear edges." +msgstr "确定收缩是否有用的一个相当好的方法是根据死端的数量和/或线性边的数量。" msgid "" -"When missing, add columns and assign values to ``source``, ``target``, " -"``cost``, ``reverse_cost``." +"A complete method on how to contract and how to use the contracted graph is " +"described on :doc:`contraction-family`" msgstr "" -"如果缺少,请添加列并为 ``source``, ``target``, ``cost``, ``reverse_cost`` 分" -"配值。" - -msgid "Connect a disconnected graph." -msgstr "连接断开的图。" +"有关如何收缩以及如何使用收缩图的完整方法在 :doc:`contraction-family` 中进行了" +"描述" -msgid "Create the complete graph topology" -msgstr "创建完整的图拓扑" +msgid "Dead ends" +msgstr "死端" -msgid "Create one or more graphs based on the application to be developed." -msgstr "根据要开发的应用程序创建一个或多个图。" +msgid "To get the dead ends:" +msgstr "获取死端:" -msgid "Create a contracted graph for the high speed roads" -msgstr "为高速道路创建收缩图" +msgid "A dead end happens when" +msgstr "" -msgid "Create graphs per state/country" -msgstr "创建每个州/国家的图" +msgid "" +"The vertex is the limit of a cul-de-sac, a no-through road or a no-exit road." +msgstr "" -msgid "In few words:" -msgstr "简而言之:" +#, fuzzy +msgid "The vertex is on the limit of the imported graph." +msgstr "当 ``true`` 时,顶点收缩,它不是收缩图的一部分。" -msgid "Prepare the graph" -msgstr "准备图" +msgid "If a larger graph is imported then the vertex might not be a dead end" +msgstr "" msgid "" -"What and how to prepare the graph, will depend on the application and/or on " -"the quality of the data and/or on how close the information is to have a " -"topology usable by pgRouting and/or some other factors not mentioned." +"Node :math:`4`, is a dead end on the query, even that it visually looks like " +"an end point of 3 edges." msgstr "" -"准备什么以及如何准备图将取决于应用程序和/或数据质量和/或信息与 pgRouting 可用" -"的拓扑的接近程度和/或未提及的一些其他因素。" -msgid "" -"The steps to prepare the graph involve geometry operations using `PostGIS " -"`__ and some others involve graph operations like :doc:" -"`pgr_contraction` to contract a graph." +msgid "Is node :math:`4` a dead end or not?" msgstr "" -"准备图的步骤涉及使用`PostGIS `__ 进行几何操作,其他一些" -"步骤涉及诸如 :doc:`pgr_contraction` 之类的图操作来收缩图。" -msgid "" -"The `workshop `__ has a step by step " -"on how to prepare a graph using Open Street Map data, for a small " -"application." +msgid "The answer to that question will depend on the application." msgstr "" -"该 `workshop `__ 逐步介绍了如何使用开" -"放街道地图数据为小型应用程序准备图。" -msgid "The use of indexes on the database design in general:" -msgstr "数据库设计上索引的使用一般:" +msgid "Is there such a small curb:" +msgstr "有这么小的路边吗:" -msgid "Have the geometries indexed." -msgstr "对几何图形进行索引。" +msgid "That does not allow a vehicle to use that visual intersection?" +msgstr "这不允许车辆使用该视觉交叉路口?" -msgid "Have the identifiers columns indexed." -msgstr "对标识符列建立索引。" +msgid "" +"Is the application for pedestrians and therefore the pedestrian can easily " +"walk on the small curb?" +msgstr "是否适用于行人,因此行人可以轻松地在小路边行走?" msgid "" -"Please consult the `PostgreSQL `__ " -"documentation and the `PostGIS `__ documentation." +"Is the application for the electricity and the electrical lines than can " +"easily be extended on top of the small curb?" +msgstr "电力和电线的应用是否可以轻松地延伸到小路边顶部?" + +msgid "" +"Is there a big cliff and from eagles view look like the dead end is close to " +"the segment?" +msgstr "是否有一个大悬崖,从鹰的角度看,死胡同靠近该路段?" + +#, fuzzy +msgid "Depending on the answer, modification of the data might be needed." +msgstr "根据函数需要一个或多个内部查询。" + +#, fuzzy +msgid "" +"When there are many dead ends, to speed up processing, the :doc:`contraction-" +"family` functions can be used to contract the graph." msgstr "" -"请查阅`PostgreSQL `__ 文档和 `PostGIS " -"`__ 文档。" +"当有很多死端时,为了加快速度,可以使用 :doc:`contraction-family` 函数来划分问" +"题。" -msgid "Build a routing topology" -msgstr "构建路由拓扑" +msgid "Linear edges" +msgstr "线性边" + +msgid "To get the linear edges:" +msgstr "要获得线性边:" msgid "" -"The basic information to use the majority of the pgRouting functions ``id, " -"source, target, cost, [reverse_cost]`` is what in pgRouting is called the " -"routing topology." +"These linear vertices are correct, for example, when those the vertices are " +"speed bumps, stop signals and the application is taking them into account." msgstr "" -"使用大多数 pgRouting 函数的基本信息``id, source, target, cost, " -"[reverse_cost]`` 在 pgRouting 中被称为路由拓扑。" +#, fuzzy msgid "" -"``reverse_cost`` is optional but strongly recommended to have in order to " -"reduce the size of the database due to the size of the geometry columns. " -"Having said that, in this documentation ``reverse_cost`` is used in this " -"documentation." +"When there are many linear vertices, that need not to be taken into account, " +"to speed up the processing, the :doc:`contraction-family` functions can be " +"used to contract the problem." msgstr "" -"``reverse_cost`` 是可选的,但强烈建议使用,以便由于几何列的大小而减小数据库的" -"大小。 话虽如此,在本文档中使用了 ``reverse_cost``。" +"当线性边较多时,为了加快速度,可以使用 :doc:`contraction-family` 函数来划分问" +"题。" -msgid "" -"When the data comes with geometries and there is no routing topology, then " -"this step is needed." -msgstr "当数据带有几何图形并且没有路由拓扑时,则需要此步骤。" +msgid "Function's structure" +msgstr "函数的结构" msgid "" -"All the start and end vertices of the geometries need an identifier that is " -"to be stored in a ``source`` and ``target`` columns of the table of the " -"data. Likewise, ``cost`` and ``reverse_cost`` need to have the value of " -"traversing the edge in both directions." -msgstr "" -"几何图的所有开始和结束顶点都需要一个标识符,该标识符将存储在数据表的" -"``source``列和``target``列中。 同样,``cost`` 和 ``reverse_cost`` 需要具有在" -"两个方向上遍历边的值。" +"Once the graph preparation work has been done above, it is time to use a" +msgstr "完成上述图准备工作后,就可以使用" -msgid "" -"If the columns do not exist they need to be added to the table in question. " -"(see `ALTER TABLE `__)" +msgid "The general form of a pgRouting function call is:" +msgstr "pgRouting 函数调用的一般形式是:" + +msgid "\\ \\" +msgstr "\\ \\" + +msgid "pgr_(`Inner queries`_, **parameters**, [ ``Optional parameters``)" msgstr "" -"如果这些列不存在,则需要将它们添加到相关表中。 (参见`ALTER TABLE `__ )" +"pgr_(`Inner queries`_ , **parameters**, [``Optional parameters``)" msgid "" -"The function :doc:`pgr_extractVertices` is used to create a vertices table " -"based on the edge identifier and the geometry of the edge of the graph." -msgstr "" -"函数 :doc:`pgr_extractVertices` 用于根据边标识符和图边的几何形状创建顶点表。" +"`Inner queries`_: Are compulsory parameters that are ``TEXT`` strings " +"containing SQL queries." +msgstr "`Inner queries`_ :是强制参数,是包含 SQL 查询的 ``TEXT`` 字符串。" msgid "" -"Finally using the data stored on the vertices tables the ``source`` and " -"``target`` are filled up." -msgstr "最后使用存储在顶点表上的数据填充 ``source`` 和``target``。" +"**parameters**: Additional compulsory parameters needed by the function." +msgstr "**parameters**:函数需要的附加强制参数。" -msgid "See :doc:`sampledata` for an example for building a topology." -msgstr "有关构建拓扑的示例,请参阅 :doc:`sampledata`。" +msgid "" +"``Optional parameters``: Are non compulsory **named** parameters that have a " +"default value when omitted." +msgstr "``Optional parameters`` :是非强制命名参数,省略时具有默认值。" msgid "" -"Data coming from OSM and using `osm2pgrouting `__ as an import tool, comes with the routing topology. See an " -"example of using ``osm2pgrouting`` on the `workshop `__." -msgstr "" -"来自 OSM 并使用 `osm2pgrouting `__ 作为导入工具的数据附带路由拓扑。 请参阅 `workshop `__ 上使用 " -"``osm2pgrouting`` 的示例。" +"The compulsory parameters are positional parameters, the optional parameters " +"are named parameters." +msgstr "强制参数是位置参数,可选参数是命名参数。" -msgid "Adjust costs" -msgstr "调整成本" +msgid "For example, for this :doc:`pgr_dijkstra` signature:" +msgstr "例如,对于这个 :doc:`pgr_dijkstra` 签名:" msgid "" -"For this example the ``cost`` and ``reverse_cost`` values are going to be " -"the double of the length of the geometry." -msgstr "对于本示例, ``cost`` 和 ``reverse_cost`` 值将是几何体长度的两倍。" +"pgr_dijkstra(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" +msgstr "" +"pgr_dijkstra(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" -msgid "Update costs to length of geometry" -msgstr "将成本更新为几何形状的长度" +msgid "`Edges SQL`_:" +msgstr "`Edges SQL`_:" -msgid "" -"Suppose that ``cost`` and ``reverse_cost`` columns in the sample data " -"represent:" -msgstr "假设样本数据中的 ``cost`` 和 ``reverse_cost`` 列表示:" +msgid "Is the first parameter." +msgstr "是第一个参数。" -msgid ":math:`1` when the edge exists in the graph" -msgstr "当边存在于图中时为 :math:`1`" +msgid "It is compulsory." +msgstr "这是强制性的。" -msgid ":math:`-1` when the edge does not exist in the graph" -msgstr "当图中不存在边时为 :math:`-1`" +msgid "It is an inner query." +msgstr "这是一个内部查询。" -msgid "Using that information updating to the length of the geometries:" -msgstr "使用该信息更新几何形状的长度:" +msgid "" +"It has no name, so **Edges SQL** gives an idea of what kind of inner query " +"needs to be used" +msgstr "它没有名称,因此 **Edges SQL** 给出了需要使用哪种内部查询的想法" -msgid "Which gives the following results:" -msgstr "给出以下结果:" +msgid "**start vid**:" +msgstr "**start vid**:" + +msgid "Is the second parameter." +msgstr "是第二个参数。" msgid "" -"Note that to be able to follow the documentation examples, everything is " -"based on the original graph." -msgstr "请注意,为了能够遵循文档示例,一切都基于原始图。" +"It has no name, so **start vid** gives an idea of what the second " +"parameter's value should contain." +msgstr "它没有名称,因此 **start vid** 给出了第二个参数的值应包含的内容。" -msgid "Returning to the original data:" -msgstr "回到原始数据:" +msgid "Is the third parameter." +msgstr "是第三个参数。" -msgid "Update costs based on codes" -msgstr "根据代码更新成本" +msgid "" +"It has no name, so **end vid** gives an idea of what the third parameter's " +"value should contain" +msgstr "它没有名称,因此 **end vid** 给出了第三个参数的值应包含的内容" -msgid "Other datasets, can have a column with values like" -msgstr "其他数据集可以有一列包含如下值" +msgid "Is the fourth parameter." +msgstr "是第四个参数。" -msgid "``FT`` vehicle flow on the direction of the geometry" -msgstr "``FT`` 几何方向上的车流" +msgid "It is optional." +msgstr "是可选的。" -msgid "``TF`` vehicle flow opposite of the direction of the geometry" -msgstr "``TF`` 车流与几何方向相反" +msgid "It has a name." +msgstr "它有一个名字。" -msgid "``B`` vehicle flow on both directions" -msgstr "``B`` 双向车流" +msgid "" +"The full description of the parameters are found on the `Parameters`_ " +"section of each function." +msgstr "参数的完整描述可以在每个函数的 `Parameters`_ 部分找到。" -msgid "Preparing a code column for the example:" -msgstr "为示例准备代码列:" +msgid "Function's overloads" +msgstr "函数的重载" -msgid "Adjusting the costs based on the codes:" -msgstr "根据代码调整成本:" +msgid "A function might have different overloads. The most common are called:" +msgstr "一个函数可能有不同的重载。 最常见的是:" -msgid "Check the Routing Topology" -msgstr "检查路由拓扑" +msgid "`One to One`_" +msgstr "`一对一`_" -msgid "There are lots of possible problems in a graph." -msgstr "图中可能存在很多问题。" +msgid "`One to Many`_" +msgstr "`一对多`_" -msgid "The data used may not have been designed with routing in mind." -msgstr "使用的数据在设计时可能没有考虑路由。" +msgid "`Many to One`_" +msgstr "`多对一`_" -msgid "A graph has some very specific requirements." -msgstr "图有一些非常具体的要求。" +msgid "`Many to Many`_" +msgstr "`多对多`_" -msgid "The graph is disconnected." -msgstr "该图已断开连接。" +msgid "`Combinations`_" +msgstr "`组合`_" -msgid "There are unwanted intersections." -msgstr "存在不需要的交叉点。" +msgid "Depending on the overload the parameters types change." +msgstr "根据过载,参数类型会发生变化。" -msgid "The graph is too large and needs to be contracted." -msgstr "图太大,需要收缩。" +msgid "**One**: **ANY-INTEGER**" +msgstr "**一**: **ANY-INTEGER**" -msgid "A sub graph is needed for the application." -msgstr "该应用程序需要一个子图。" +msgid "**Many**: ``ARRAY`` [**ANY-INTEGER**]" +msgstr "**多**: ``ARRAY`` [**ANY-INTEGER**]" msgid "" -"and many other problems that the pgRouting user, that is the application " -"developer might encounter." -msgstr "以及 pgRouting 用户(即应用程序开发人员)可能遇到的许多其他问题。" +"Depending of the function the overloads may vary. But the concept of " +"parameter type change remains the same." +msgstr "根据函数的不同,重载可能会有所不同。 但参数类型改变的概念保持不变。" -msgid "Crossing edges" -msgstr "交叉边" +msgid "One to One" +msgstr "一对一" -msgid "To get the crossing edges:" -msgstr "要获取交叉边:" +msgid "When routing from:" +msgstr "当路由来自:" -msgid "" -"That information is correct, for example, when in terms of vehicles, is it a " -"tunnel or bridge crossing over another road." -msgstr "这些信息是正确的,例如,就车辆而言,是隧道还是横跨另一条道路的桥梁。" +msgid "From **one** starting vertex" +msgstr "从 **一** 起始顶点" -msgid "It might be incorrect, for example:" -msgstr "它可能是不正确的,例如:" +msgid "to **one** ending vertex" +msgstr "到 **一** 结束顶点" -msgid "" -"When it is actually an intersection of roads, where vehicles can make turns." -msgstr "当它实际上是道路交叉口时,车辆可以转弯。" +msgid "One to Many" +msgstr "一对多" -msgid "" -"When in terms of electrical lines, the electrical line is able to switch " -"roads even on a tunnel or bridge." -msgstr "在电力线路方面,电力线能够在隧道或桥梁上甚至切换道路。" +msgid "to **many** ending vertices" +msgstr "到 **多** 结束顶点" -msgid "When it is incorrect, it needs fixing:" -msgstr "当不正确时,需要修复:" +msgid "Many to One" +msgstr "多对一" -msgid "For vehicles and pedestrians" -msgstr "对于车辆和行人" +msgid "From **many** starting vertices" +msgstr "从 **多** 起始顶点" -msgid "" -"If the data comes from OSM and was imported to the database using " -"``osm2pgrouting``, the fix needs to be done in the `OSM portal `__ and the data imported again." -msgstr "" -"如果数据来自 OSM 并使用 ``osm2pgrouting`` 导入到数据库,则需要在 `OSM portal " -"`__ 中完成修复并再次导入数据。" +msgid "Many to Many" +msgstr "多对多" -msgid "" -"In general when the data comes from a supplier that has the data prepared " -"for routing vehicles, and there is a problem, the data is to be fixed from " -"the supplier" -msgstr "" -"一般来说,当数据来自为车辆路线准备数据的供应商时,并且出现问题时,需要从供应" -"商处修复数据" +msgid "Combinations" +msgstr "组合" + +msgid "From **many** different starting vertices" +msgstr "从 **多个** 不同的起始顶点" -msgid "For very specific applications" -msgstr "对于非常具体的应用" +msgid "to **many** different ending vertices" +msgstr "到 **多个** 不同的结束顶点" -msgid "" -"The data is correct when from the point of view of routing vehicles or " -"pedestrians." -msgstr "从路线车辆或行人的角度来看,数据是正确的。" +msgid "Every tuple specifies a pair of a start vertex and an end vertex" +msgstr "每个元组指定一对起始顶点和结束顶点" -msgid "The data needs a local fix for the specific application." -msgstr "数据需要针对特定应用程序进行本地修复。" +msgid "Users can define the combinations as desired." +msgstr "用户可以根据需要定义组合。" -msgid "" -"Once analyzed one by one the crossings, for the ones that need a local fix, " -"the edges need to be `split `__." -msgstr "" -"对交叉点进行一一分析后,对于需要局部修复的交叉点,需要 `分割 `__ 边。" +msgid "Needs a `Combinations SQL`_" +msgstr "需要 `Combinations SQL`_" msgid "" -"The new edges need to be added to the edges table, the rest of the " -"attributes need to be updated in the new edges, the old edges need to be " -"removed and the routing topology needs to be updated." +"There are several kinds of valid inner queries and also the columns returned " +"are depending of the function. Which kind of inner query will depend on the " +"function's requirements. To simplify the variety of types, **ANY-INTEGER** " +"and **ANY-NUMERICAL** is used." msgstr "" -"需要将新边添加到边表中,需要更新新边中的其余属性,需要删除旧边并需要更新路由" -"拓扑。" +"有几种有效的内部查询类型,返回的列也取决于函数。哪种类型的内部查询将取决于函" +"数的要求。为了简化类型的种类,使用了 **ANY-INTEGER**和**ANY-NUMERICAL**。" -msgid "Adding split edges" -msgstr "添加分割边" +msgid "Edges SQL for" +msgstr "边 SQL" -msgid "" -"For each pair of crossing edges a process similar to this one must be " -"performed." -msgstr "对于每一对交叉边,必须执行与此类似的过程。" +msgid ":doc:`withPoints-family`" +msgstr ":doc:`withPoints-family`" -msgid "" -"The columns inserted and the way are calculated are based on the " -"application. For example, if the edges have a trait **name**, then that " -"column is to be copied." -msgstr "" -"插入的列和计算方式取决于应用程序。 例如,如果边具有特征 **名称** ,则将复制该" -"列。" +msgid "Some uncategorised functions" +msgstr "一些未分类的函数" -msgid "For pgRouting calculations" -msgstr "用于 pgRouting 计算" +msgid "General without ``id``" +msgstr "一般没有 ``id``" -msgid "" -"**factor** based on the position of the intersection of the edges can be " -"used to adjust the ``cost`` and ``reverse_cost`` columns." -msgstr "基于边相交位置的 **因子** 可用于调整 ``cost`` 和 ``reverse_cost`` 列。" +msgid "General with (X,Y)" +msgstr "通常带有(X,Y)" msgid "" -"Capacity information, used in the :doc:`flow-family` functions does not need " -"to change when splitting edges." -msgstr "分割边时,在 :doc:`flow-family` 函数中使用的容量信息不需要改变。" +"When negative: edge (``source``, ``target``) does not exist, therefore it's " +"not part of the graph." +msgstr "当为负时:边(``source``, ``target``)不存在,因此它不是图的一部分。" -msgid "Adding new vertices" -msgstr "添加新的顶点" +msgid "Weight of the edge (``target``, ``source``)," +msgstr "边 (``target``, ``source``)的权重," -msgid "" -"After adding all the split edges required by the application, the newly " -"created vertices need to be added to the vertices table." -msgstr "添加应用程序所需的所有分割边后,需要将新创建的顶点添加到顶点表中。" +msgid "``x1``" +msgstr "``x1``" -msgid "Updating edges topology" -msgstr "更新边拓扑" +msgid "X coordinate of ``source`` vertex." +msgstr "``source`` 顶点的X坐标。" -msgid "Removing the surplus edges" -msgstr "去除多余的边" +msgid "``y1``" +msgstr "``y1``" -msgid "" -"Once all significant information needed by the application has been " -"transported to the new edges, then the crossing edges can be deleted." -msgstr "一旦应用程序所需的所有重要信息都已传输到新边,则可以删除交叉边。" +msgid "Y coordinate of ``source`` vertex." +msgstr "``source`` 顶点的Y坐标。" -msgid "" -"There are other options to do this task, like creating a view, or a " -"materialized view." -msgstr "还有其他选项可以完成此任务,例如创建视图或物化视图。" +msgid "``x2``" +msgstr "``x2``" -msgid "Updating vertices topology" -msgstr "更新顶点拓扑" +msgid "X coordinate of ``target`` vertex." +msgstr "``target`` 顶点的X坐标。" -msgid "To keep the graph consistent, the vertices topology needs to be updated" -msgstr "为了保持图的一致性,需要更新顶点拓扑" +msgid "``y2``" +msgstr "``y2``" -msgid "Checking for crossing edges" -msgstr "检查交叉边" +msgid "Y coordinate of ``target`` vertex." +msgstr "``target`` 顶点的Y坐标。" -msgid "There are no crossing edges on the graph." -msgstr "图上没有交叉边。" +msgid "Flow" +msgstr "流" -msgid "Disconnected graphs" -msgstr "断开连接的图" +msgid "Edges SQL for :doc:`flow-family`" +msgstr "用于流数据系列 ( :doc:`flow-family`) 的Edges SQL" -msgid "To get the graph connectivity:" -msgstr "要获取图的连通性:" +msgid "Edges SQL for the following functions of :doc:`flow-family`" +msgstr "Edges SQL 适用于 :doc:`flow-family` 的以下函数" -msgid "" -"In this example, the component :math:`2` consists of vertices :math:`\\{2, " -"4\\}` and both vertices are also part of the dead end result set." -msgstr "" -"在此示例中,组件 :math:`2`由顶点 :math:`\\{2, 4\\}` 组成,并且两个顶点也是死" -"端结果集的一部分。" +msgid "Used in combination signatures" +msgstr "结合签名使用" -msgid "This graph needs to be connected." -msgstr "这个图需要连接起来。" +msgid "Points SQL for" +msgstr "用于Points SQL" msgid "" -"With the original graph of this documentation, there would be 3 components " -"as the crossing edge in this graph is a different component." -msgstr "对于本文档的原始图,将有 3 个组件,因为该图中的交叉边是不同的组件。" - -msgid "Prepare storage for connection information" -msgstr "为连接信息准备存储" - -msgid "Save the vertices connection information" -msgstr "保存顶点连接信息" - -msgid "Save the edges connection information" -msgstr "保存边连接信息" - -msgid "Get the closest vertex" -msgstr "获取最近的顶点" +"The main parameter of the majority of the pgRouting functions is a query " +"that selects the edges of the graph." +msgstr "大多数 pgRouting 函数的主要参数是选择图的边的查询。" msgid "" -"Using :doc:`pgr_findCloseEdges` the closest vertex to component :math:`1` is " -"vertex :math:`4`. And the closest edge to vertex :math:`4` is edge :math:" -"`14`." +"Depending on the family or category of a function it will have additional " +"parameters, some of them are compulsory and some are optional." msgstr "" -"使用 :doc:`pgr_findCloseEdges` 距离组件 :math:`1` 最近的顶点是顶点 :math:" -"`4`。 距离顶点 :math:`4` 最近的边是 边 :math:`14`。" +"根据函数的族或类别,它将具有附加参数,其中一些是强制性的,一些是可选的。" msgid "" -"The ``edge`` can be used to connect the components, using the ``fraction`` " -"information about the edge :math:`14` to split the connecting edge." +"The compulsory parameters are nameless and must be given in the required " +"order. The optional parameters are named parameters and will have a default " +"value." msgstr "" -"``edge``可用于连接组件,利用边 :math:`14` 的``fraction`` 信息来分割连接边。" - -msgid "Connecting components" -msgstr "连接组件" +"强制参数是无名的,并且必须按要求的顺序给出。 可选参数是命名参数,并且具有默认" +"值。" -msgid "There are three basic ways to connect the components" -msgstr "连接组件有三种基本方法" +msgid "Parameters for the Via functions" +msgstr "Via 函数的参数" -msgid "From the vertex to the starting point of the edge" -msgstr "从顶点到边的起点" +msgid "SQL query as described." +msgstr "如所述的 SQL 查询。" -msgid "From the vertex to the ending point of the edge" -msgstr "从顶点到边的终点" +msgid "When ``true`` Graph is considered `Directed`" +msgstr "当为 ``true`` 时,图被视为`有向`图" -msgid "From the vertex to the closest vertex on the edge" -msgstr "从边上的顶点到最近的顶点" +msgid "When ``false`` the graph is considered as Undirected." +msgstr "当为 ``false`` 时,图被视为无向图。" -msgid "This solution requires the edge to be split." -msgstr "该解决方案需要将边缘分割。" +msgid "``strict``" +msgstr "``strict``" -msgid "The following query shows the three ways to connect the components:" -msgstr "以下查询显示了连接组件的三种方式:" +msgid "``false``" +msgstr "``false``" -msgid "Checking components" -msgstr "检查组件" +msgid "When ``true`` if a path is missing stops and returns **EMPTY SET**" +msgstr "当为 ``true`` 时,如果路径丢失,则停止并返回 **EMPTY SET**" -msgid "" -"Ignoring the edge that requires further work. The graph is now fully " -"connected as there is only one component." -msgstr "忽略需要进一步工作的边缘。 该图现在已完全连接,因为只有一个组件。" +msgid "When ``false`` ignores missing paths returning all paths found" +msgstr "当 ``false`` 忽略丢失的路径时,返回找到的所有路径" -msgid "Contraction of a graph" -msgstr "图的收缩" +msgid "``U_turn_on_edge``" +msgstr "``U_turn_on_edge``" -msgid "The graph can be reduced in size using :doc:`contraction-family`" -msgstr "可以使用 :doc:`contraction-family` 来减小图形的大小" +msgid "" +"When ``true`` departing from a visited vertex will not try to avoid using " +"the edge used to reach it. In other words, U turn using the edge with same " +"identifier is allowed." +msgstr "" +"当 为 ``true`` 时,从已访问的顶点出发,不会试图避免使用用于到达它的边。换句话" +"说,允许使用具有相同标识符的边来进行掉头。" msgid "" -"When to contract will depend on the size of the graph, processing times, " -"correctness of the data, on the final application, or any other factor not " -"mentioned." +"When ``false`` when a departing from a visited vertex tries to avoid using " +"the edge used to reach it. In other words, U turn using the edge with same " +"identifier is used when no other path is found." msgstr "" -"何时收缩将取决于图的大小、处理时间、数据的正确性、最终应用程序或任何其他未提" -"及的因素。" +"当为 ``false`` 时,从已访问的顶点出发,尝试避免使用用于到达它的边。换句话说," +"只有在找不到其他路径时才使用具有相同标识符的边来进行掉头。" + +msgid "For the TRSP functions" +msgstr "对于 TRSP 函数" + +msgid "Array of identifiers of destination vertices." +msgstr "目标顶点的标识符数组。" msgid "" -"A fairly good method of finding out if contraction can be useful is because " -"of the number of dead ends and/or the number of linear edges." -msgstr "确定收缩是否有用的一个相当好的方法是根据死端的数量和/或线性边的数量。" +"There are several kinds of columns returned are depending of the function." +msgstr "根据函数的不同,返回的列有多种。" + +msgid "Result columns for a path" +msgstr "路径的结果列" + +msgid "Used in functions that return one path solution" +msgstr "在返回一个路径解的函数中使用" msgid "" -"A complete method on how to contract and how to use the contracted graph is " -"described on :doc:`contraction-family`" +"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost, " +"agg_cost)``" msgstr "" -"有关如何收缩以及如何使用收缩图的完整方法在 :doc:`contraction-family` 中进行了" -"描述" - -msgid "Dead ends" -msgstr "死端" +"返回 ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost, " +"agg_cost)`` 的集合" -msgid "To get the dead ends:" -msgstr "获取死端:" +msgid "``path_seq``" +msgstr "``path_seq``" msgid "" -"That information is correct, for example, when the dead end is on the limit " -"of the imported graph." -msgstr "例如,当死端位于导入图的极限时,该信息是正确的。" +"Relative position in the path. Has value **1** for the beginning of a path." +msgstr "路径中的相对位置。 路径开头的值为 **1**。" msgid "" -"Visually node :math:`4` looks to be as start/ending of 3 edges, but it is " -"not." -msgstr "" -"从视觉上看,节点 :math:`4` 看起来是 3 条边的开始/结束,但事实并非如此。" - -msgid "Is that correct?" -msgstr "那是对的吗?" +"Identifier of the starting vertex. Returned when multiple starting vetrices " +"are in the query." +msgstr "起始顶点的标识符。 当查询中有多个起始向量时返回。" -msgid "Is there such a small curb:" -msgstr "有这么小的路边吗:" +msgid "" +"Identifier of the ending vertex. Returned when multiple ending vertices are " +"in the query." +msgstr "结束顶点的标识符。 当查询中有多个结束顶点时返回。" -msgid "That does not allow a vehicle to use that visual intersection?" -msgstr "这不允许车辆使用该视觉交叉路口?" +msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``." +msgstr "从 ``start_vid`` 到 ``end_vid`` 路径中节点的标识符。" msgid "" -"Is the application for pedestrians and therefore the pedestrian can easily " -"walk on the small curb?" -msgstr "是否适用于行人,因此行人可以轻松地在小路边行走?" +"Identifier of the edge used to go from ``node`` to the next node in the path " +"sequence. **-1** for the last node of the path." +msgstr "" +"用于从路径序列中的 ``node`` 到下一个节点的边的标识符。 **-1** 表示路径的最后" +"一个节点。" msgid "" -"Is the application for the electricity and the electrical lines than can " -"easily be extended on top of the small curb?" -msgstr "电力和电线的应用是否可以轻松地延伸到小路边顶部?" +"Cost to traverse from ``node`` using ``edge`` to the next node in the path " +"sequence." +msgstr "从使用 ``edge`` 的 ``node`` 遍历到路径序列中的下一个节点的成本。" -msgid "" -"Is there a big cliff and from eagles view look like the dead end is close to " -"the segment?" -msgstr "是否有一个大悬崖,从鹰的角度看,死胡同靠近该路段?" +msgid "Used in functions the following:" +msgstr "用于以下函数:" msgid "" -"When there are many dead ends, to speed up, the :doc:`contraction-family` " -"functions can be used to divide the problem." +"Returns set of ``(seq, path_seq [, start_pid] [, end_pid], node, edge, cost, " +"agg_cost)``" msgstr "" -"当有很多死端时,为了加快速度,可以使用 :doc:`contraction-family` 函数来划分问" -"题。" +"返回 ``(seq, path_seq [, start_pid] [, end_pid], node, edge, cost, " +"agg_cost)`` 的集合" -msgid "Linear edges" -msgstr "线性边" +msgid "Relative position in the path." +msgstr "路径中的相对位置。" -msgid "To get the linear edges:" -msgstr "要获得线性边:" +msgid "**1** For the first row of the path." +msgstr "**1** 对于路径的第一行。" -msgid "" -"This information is correct, for example, when the application is taking " -"into account speed bumps, stop signals." -msgstr "例如,当应用程序考虑减速带、停止信号时,此信息是正确的。" +msgid "``start_pid``" +msgstr "``start_pid``" -msgid "" -"When there are many linear edges, to speed up, the :doc:`contraction-family` " -"functions can be used to divide the problem." -msgstr "" -"当线性边较多时,为了加快速度,可以使用 :doc:`contraction-family` 函数来划分问" -"题。" +msgid "Identifier of a starting vertex/point of the path." +msgstr "路径起始顶点/点的标识符。" -msgid "Function's structure" -msgstr "函数的结构" +msgid "When positive is the identifier of the starting vertex." +msgstr "当正数时是起始顶点的标识符。" -msgid "" -"Once the graph preparation work has been done above, it is time to use a" -msgstr "完成上述图准备工作后,就可以使用" +msgid "When negative is the identifier of the starting point." +msgstr "当负数时是起点的标识符。" -msgid "The general form of a pgRouting function call is:" -msgstr "pgRouting 函数调用的一般形式是:" +msgid "Returned on `Many to One`_ and `Many to Many`_" +msgstr "`多对一`_ 和 `多对多`_ 的返回值" -msgid "\\ \\" -msgstr "\\ \\" +msgid "``end_pid``" +msgstr "``end_pid``" -msgid "pgr_(`Inner queries`_, **parameters**, [ ``Optional parameters``)" -msgstr "" -"pgr_(`Inner queries`_ , **parameters**, [``Optional parameters``)" +msgid "Identifier of an ending vertex/point of the path." +msgstr "路径结束顶点/点的标识符。" -msgid "" -"`Inner queries`_: Are compulsory parameters that are ``TEXT`` strings " -"containing SQL queries." -msgstr "`Inner queries`_ :是强制参数,是包含 SQL 查询的 ``TEXT`` 字符串。" +msgid "When positive is the identifier of the ending vertex." +msgstr "当正数时是结束顶点的标识符。" -msgid "" -"**parameters**: Additional compulsory parameters needed by the function." -msgstr "**parameters**:函数需要的附加强制参数。" +msgid "When negative is the identifier of the ending point." +msgstr "当负数时是终点的标识符。" -msgid "" -"``Optional parameters``: Are non compulsory **named** parameters that have a " -"default value when omitted." -msgstr "``Optional parameters`` :是非强制命名参数,省略时具有默认值。" +msgid "Returned on `One to Many`_ and `Many to Many`_" +msgstr "返回 `一对多`_ 和 `多对多`_" + +msgid "Identifier of the node in the path from ``start_pid`` to ``end_pid``." +msgstr "从 ``start_pid`` 到 ``end_pid`` 路径中节点的标识符。" + +msgid "When positive is the identifier of the a vertex." +msgstr "当正数时是顶点的标识符。" + +msgid "When negative is the identifier of the a point." +msgstr "当负数时是a点的标识符。" msgid "" -"The compulsory parameters are positional parameters, the optional parameters " -"are named parameters." -msgstr "强制参数是位置参数,可选参数是命名参数。" +"Identifier of the edge used to go from ``node`` to the next node in the path " +"sequence." +msgstr "用于从路径序列中的 ``node`` 到下一个节点的边的标识符。" -msgid "For example, for this :doc:`pgr_dijkstra` signature:" -msgstr "例如,对于这个 :doc:`pgr_dijkstra` 签名:" +msgid "**-1** for the last row of the path." +msgstr "**-1** 表示路径的最后一行。" + +msgid "**0** For the first row of the path." +msgstr "**0** 表示路径的第一行。" + +msgid ":doc:`pgr_dijkstraNear`" +msgstr ":doc:`pgr_dijkstraNear`" msgid "" -"pgr_dijkstra(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" +"Returns ``(seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)``" msgstr "" -"pgr_dijkstra(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" +"返回 ``(seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)``" -msgid "`Edges SQL`_:" -msgstr "`Edges SQL`_:" +msgid "Identifier of the starting vertex of the current path." +msgstr "当前路径起始顶点的标识符。" -msgid "Is the first parameter." -msgstr "是第一个参数。" +msgid "Identifier of the ending vertex of the current path." +msgstr "当前路径结束顶点的标识符。" -msgid "It is compulsory." -msgstr "这是强制性的。" +msgid "Multiple paths" +msgstr "多条路径" -msgid "It is an inner query." -msgstr "这是一个内部查询。" +msgid "Selective for multiple paths." +msgstr "多路径选择性。" + +msgid "The columns depend on the function call." +msgstr "这些列取决于函数调用。" msgid "" -"It has no name, so **Edges SQL** gives an idea of what kind of inner query " -"needs to be used" -msgstr "它没有名称,因此 **Edges SQL** 给出了需要使用哪种内部查询的想法" +"Set of ``(seq, path_id, path_seq [, start_vid] [, end_vid], node, edge, " +"cost, agg_cost)``" +msgstr "" +"``(seq, path_id, path_seq [, start_vid] [, end_vid], node, edge, cost, " +"agg_cost)`` 集合" -msgid "**start vid**:" -msgstr "**start vid**:" +msgid "``path_id``" +msgstr "``path_id``" -msgid "Is the second parameter." -msgstr "是第二个参数。" +msgid "Path identifier." +msgstr "路径标识符。" msgid "" -"It has no name, so **start vid** gives an idea of what the second " -"parameter's value should contain." -msgstr "它没有名称,因此 **start vid** 给出了第二个参数的值应包含的内容。" +"Has value **1** for the first of a path from ``start_vid`` to ``end_vid``." +msgstr "从 ``start_vid`` 到 ``end_vid`` 的第一个路径的值为 **1** 。" -msgid "Is the third parameter." -msgstr "是第三个参数。" +msgid "Non selective for multiple paths" +msgstr "多路径非选择性" -msgid "" -"It has no name, so **end vid** gives an idea of what the third parameter's " -"value should contain" -msgstr "它没有名称,因此 **end vid** 给出了第三个参数的值应包含的内容" +msgid "Regardless of the call, al the columns are returned." +msgstr "无论调用如何,都会返回所有列。" -msgid "Is the fourth parameter." -msgstr "是第四个参数。" +msgid "" +"Returns set of ``(seq, path_id, path_seq, start_vid, end_vid, node, edge, " +"cost, agg_cost)``" +msgstr "" +"返回集合``(seq, path_id, path_seq, start_vid, end_vid, node, edge, cost, " +"agg_cost)``" -msgid "It is optional." -msgstr "是可选的。" +msgid "Result columns for cost functions" +msgstr "成本函数结果列" -msgid "It has a name." -msgstr "它有一个名字。" +msgid "Used in the following" +msgstr "用于以下函数" msgid "" -"The full description of the parameters are found on the `Parameters`_ " -"section of each function." -msgstr "参数的完整描述可以在每个函数的 `Parameters`_ 部分找到。" +"When start_vid or end_vid columns have negative values, the identifier is " +"for a Point." +msgstr "当 start_vid 或 end_vid 列具有负值时,标识符用于点。" -msgid "Function's overloads" -msgstr "函数的重载" +msgid "Result columns for flow functions" +msgstr "流量函数的结果列" -msgid "A function might have different overloads. The most common are called:" -msgstr "一个函数可能有不同的重载。 最常见的是:" +msgid "Edges SQL for the following" +msgstr "Edges SQL 适用于以下内容" -msgid "`One to One`_" -msgstr "`一对一`_" +msgid "Result columns for spanning tree functions" +msgstr "生成树函数的结果列" -msgid "`One to Many`_" -msgstr "`一对多`_" +msgid "Returns set of ``(edge, cost)``" +msgstr "返回集合 ``(edge, cost)``" -msgid "`Many to One`_" -msgstr "`多对一`_" +msgid "Cost to traverse the edge." +msgstr "穿越边的成本。" -msgid "`Many to Many`_" -msgstr "`多对多`_" +msgid "Performance Tips" +msgstr "性能技巧" -msgid "`Combinations`_" -msgstr "`组合`_" +msgid "For the Routing functions" +msgstr "对于路由功能" -msgid "Depending on the overload the parameters types change." -msgstr "根据过载,参数类型会发生变化。" +msgid "" +"To get faster results bound the queries to an area of interest of routing." +msgstr "为了获得更快的结果,将查询绑定到路由感兴趣的区域。" -msgid "**One**: **ANY-INTEGER**" -msgstr "**一**: **ANY-INTEGER**" +msgid "" +"In this example Use an inner query SQL that does not include some edges in " +"the routing function and is within the area of the results." +msgstr "" +"在此示例中,使用内部查询 SQL,该 SQL 不包括路由函数中的某些边并且位于结果区域" +"内。" -msgid "**Many**: ``ARRAY`` [**ANY-INTEGER**]" -msgstr "**多**: ``ARRAY`` [**ANY-INTEGER**]" +#, fuzzy +msgid "Given this area:" +msgstr "给定车辆:" + +#, fuzzy +msgid "Calculate a route:" +msgstr "计算所有列" + +msgid "How to contribute" +msgstr "如何贡献" + +msgid "Wiki" +msgstr "维基" msgid "" -"Depending of the function the overloads may vary. But the concept of " -"parameter type change remains the same." -msgstr "根据函数的不同,重载可能会有所不同。 但参数类型改变的概念保持不变。" +"Edit an existing `pgRouting Wiki `__ page." +msgstr "" +"编辑现有的 `pgRouting 维基 `__ " +"页面。" -msgid "One to One" -msgstr "一对一" +msgid "Or create a new Wiki page" +msgstr "或者创建一个新的维基 页面" -msgid "When routing from:" -msgstr "当路由来自:" +msgid "" +"Create a page on the `pgRouting Wiki `__" +msgstr "" +"在 `pgRouting 维基 `__ 上创建页" +"面" -msgid "From **one** starting vertex" -msgstr "从 **一** 起始顶点" +msgid "Give the title an appropriate name" +msgstr "给标题起一个合适的名称" -msgid "to **one** ending vertex" -msgstr "到 **一** 结束顶点" +msgid "" +"`Example `__" +msgstr "" +"`示例 `__" -msgid "One to Many" -msgstr "一对多" +#, fuzzy +msgid "Adding Functionality to pgRouting" +msgstr "向 pgRouting 添加功能" -msgid "to **many** ending vertices" -msgstr "到 **多** 结束顶点" +msgid "" +"Consult the `developer's documentation `__" +msgstr "查阅`开发者文档 `__" -msgid "Many to One" -msgstr "多对一" +msgid "Installation" +msgstr "安装" -msgid "From **many** starting vertices" -msgstr "从 **多** 起始顶点" +msgid ":ref:`install-short`" +msgstr ":ref:`install-short`" -msgid "Many to Many" -msgstr "多对多" +msgid ":ref:`install_get_sources`" +msgstr ":ref:`install_get_sources`" -msgid "Combinations" -msgstr "组合" +msgid ":ref:`install_enable_db`" +msgstr ":ref:`install_enable_db`" -msgid "From **many** different starting vertices" -msgstr "从 **多个** 不同的起始顶点" +msgid ":ref:`install_dependencies`" +msgstr ":ref:`install_dependencies`" -msgid "to **many** different ending vertices" -msgstr "到 **多个** 不同的结束顶点" +msgid ":ref:`install_configuring`" +msgstr ":ref:`install_configuring`" -msgid "Every tuple specifies a pair of a start vertex and an end vertex" -msgstr "每个元组指定一对起始顶点和结束顶点" +msgid ":ref:`install_build`" +msgstr ":ref:`install_build`" -msgid "Users can define the combinations as desired." -msgstr "用户可以根据需要定义组合。" +msgid ":ref:`install_testing`" +msgstr ":ref:`install_testing`" -msgid "Needs a `Combinations SQL`_" -msgstr "需要 `Combinations SQL`_" +msgid "" +"Instructions for downloading and installing binaries for different operating " +"systems, additional notes and corrections not included in this documentation " +"can be found in `Installation wiki `__" +msgstr "" +"有关下载和安装适用于不同操作系统的二进制文件的说明、本文档中未包含的其他注释" +"和更正,可以在 `安装维基 `__ 中找到" -#, fuzzy msgid "" -"There are several kinds of valid inner queries and also the columns returned " -"are depending of the function. Which kind of inner query will depend on the " -"function's requirements. To simplify the variety of types, **ANY-INTEGER** " -"and **ANY-NUMERICAL** is used." +"To use pgRouting PostGIS needs to be installed, please read the information " +"about installation in this `Install Guide `__" msgstr "" -"有多种有效的内部查询,返回的列也取决于函数。 哪种内部查询取决于函数的要求。 " -"为了简化各种类型,使用 **ANY-INTEGER** 和 **ANY-NUMERICAL** 。" +"使用pgRouting需要安装PostGIS,请阅读本 `安装指南 `__ 中有关安装的信息" -msgid "Edges SQL for" -msgstr "边 SQL" +msgid "Short Version" +msgstr "简洁版本" -msgid ":doc:`withPoints-family`" -msgstr ":doc:`withPoints-family`" +msgid "Extracting the tar ball" +msgstr "解压 tar 压缩文件" -msgid "Some uncategorised functions" -msgstr "一些未分类的函数" +msgid "To compile assuming you have all the dependencies in your search path:" +msgstr "假设您的搜索路径中有所有依赖项,则进行编译:" -msgid "General without ``id``" -msgstr "一般没有 ``id``" +msgid "" +"Once pgRouting is installed, it needs to be enabled in each individual " +"database you want to use it in." +msgstr "安装 pgRouting 后,需要在您想要使用它的每个数据库中启用它。" -msgid "General with (X,Y)" -msgstr "通常带有(X,Y)" +msgid "Get the sources" +msgstr "获取来源" msgid "" -"When negative: edge (``source``, ``target``) does not exist, therefore it's " -"not part of the graph." -msgstr "当为负时:边(``source``, ``target``)不存在,因此它不是图的一部分。" +"The pgRouting latest release can be found in https://github.com/pgRouting/" +"pgrouting/releases/latest" +msgstr "" +"pgRouting 最新版本可以在 https://github.com/pgRouting/pgrouting/releases/" +"latest 中找到" -msgid "Weight of the edge (``target``, ``source``)," -msgstr "边 (``target``, ``source``)的权重," +msgid "To download this release:" +msgstr "要下载此版本:" -msgid "``x1``" -msgstr "``x1``" +msgid "" +"Go to :ref:`install-short` for more instructions on extracting tar ball and " +"compiling pgRouting." +msgstr "" +"转到 :ref:`install-short` 以获取有关提取 tar 包和编译 pgRouting 的更多说明。" -msgid "X coordinate of ``source`` vertex." -msgstr "``source`` 顶点的X坐标。" +msgid "git" +msgstr "git" -msgid "``y1``" -msgstr "``y1``" +msgid "To download the repository" +msgstr "下载存储库" -msgid "Y coordinate of ``source`` vertex." -msgstr "``source`` 顶点的Y坐标。" +msgid "" +"Go to :ref:`install-short` for more instructions on compiling pgRouting " +"(there is no tar ball involved while downloading pgRouting repository from " +"GitHub)." +msgstr "" +"请参阅 :ref:`install-short` 获取有关编译 pgRouting 的更多说明(从 GitHub 下" +"载 pgRouting 存储库时不涉及 tar 文件)。" -msgid "``x2``" -msgstr "``x2``" +msgid "Enabling and upgrading in the database" +msgstr "在数据库中启用和升级" -msgid "X coordinate of ``target`` vertex." -msgstr "``target`` 顶点的X坐标。" +msgid "Enabling the database" +msgstr "启用数据库" -msgid "``y2``" -msgstr "``y2``" +msgid "" +"pgRouting is a PostgreSQL extension and depends on PostGIS to provide " +"functionalities to end user. Below given code demonstrates enabling PostGIS " +"and pgRouting in the database." +msgstr "" +"pgRouting 是 PostgreSQL 扩展,依赖 PostGIS 向最终用户提供功能。 下面给出的代" +"码演示了在数据库中启用 PostGIS 和 pgRouting。" -msgid "Y coordinate of ``target`` vertex." -msgstr "``target`` 顶点的Y坐标。" +msgid "" +"Checking PostGIS and pgRouting version after enabling them in the database." +msgstr "在数据库中启用 PostGIS 和 pgRouting 后检查它们的版本。" -msgid "Flow" -msgstr "流" +msgid "Upgrading the database" +msgstr "升级数据库" -msgid "Edges SQL for :doc:`flow-family`" -msgstr "用于流数据系列 ( :doc:`flow-family`) 的Edges SQL" +msgid "" +"To upgrade pgRouting in the database to version 4.0.0 use the following " +"command:" +msgstr "要将数据库中的 pgRouting 升级到 4.0.0 版本,请使用以下命令:" -msgid "Edges SQL for the following functions of :doc:`flow-family`" -msgstr "Edges SQL 适用于 :doc:`flow-family` 的以下函数" +msgid "" +"More information can be found in https://www.postgresql.org/docs/current/sql-" +"createextension.html" +msgstr "" +"更多信息可以在 https://www.postgresql.org/docs/current/sql-createextension." +"html 中找到" -msgid "Used in combination signatures" -msgstr "结合签名使用" +msgid "Dependencies" +msgstr "依赖" -msgid "Points SQL for" -msgstr "用于Points SQL" +msgid "Compilation Dependencies" +msgstr "编译依赖" msgid "" -"The main parameter of the majority of the pgRouting functions is a query " -"that selects the edges of the graph." -msgstr "大多数 pgRouting 函数的主要参数是选择图的边的查询。" +"To be able to compile pgRouting, make sure that the following dependencies " +"are met:" +msgstr "为了能够编译 pgRouting,请确保满足以下依赖项:" + +msgid "C and C++0x compilers" +msgstr "C 和 C++0x编译器" msgid "" -"Depending on the family or category of a function it will have additional " -"parameters, some of them are compulsory and some are optional." +"Compiling with Boost 1.56 up to Boost 1.74 requires C++ Compiler with C++03 " +"or C++11 standard support" msgstr "" -"根据函数的族或类别,它将具有附加参数,其中一些是强制性的,一些是可选的。" +"使用 Boost 1.56 到 Boost 1.74 进行编译需要具有 C++03 或 C++ 11 标准支持的 C +" +"+编译器" msgid "" -"The compulsory parameters are nameless and must be given in the required " -"order. The optional parameters are named parameters and will have a default " -"value." -msgstr "" -"强制参数是无名的,并且必须按要求的顺序给出。 可选参数是命名参数,并且具有默认" -"值。" +"Compiling with Boost 1.75 requires C++ Compiler with C++14 standard support" +msgstr "使用 Boost 1.75 进行编译需要具有 C++ 14 标准支持的 C++ 编译器" -msgid "Parameters for the Via functions" -msgstr "Via 函数的参数" +msgid "Postgresql version = Supported versions by PostgreSQL" +msgstr "Postgresql 版本 = PostgreSQL 支持的版本" -msgid ":doc:`pgr_dijkstraVia`" -msgstr ":doc:`pgr_dijkstraVia`" +msgid "The Boost Graph Library (BGL). Version >= 1.56" +msgstr "Boost 图库 (BGL)。 版本 >= 1.56" -msgid "SQL query as described." -msgstr "如所述的 SQL 查询。" +msgid "CMake >= 3.2" +msgstr "CMake >= 3.2" -msgid "When ``true`` Graph is considered `Directed`" -msgstr "当为 ``true`` 时,图被视为`有向`图" +msgid "optional dependencies" +msgstr "可选的依赖项" -msgid "When ``false`` the graph is considered as Undirected." -msgstr "当为 ``false`` 时,图被视为无向图。" +msgid "For user's documentation" +msgstr "用于用户文档" + +msgid "Sphinx >= 1.1" +msgstr "Sphinx >= 1.1" + +msgid "Latex" +msgstr "Latex" + +msgid "For developer's documentation" +msgstr "对于开发者文档" + +msgid "Doxygen >= 1.7" +msgstr "Doxygen >= 1.7" + +msgid "For testing" +msgstr "供测试用" -msgid "``strict``" -msgstr "``strict``" +msgid "pgtap" +msgstr "pgtap" -msgid "``false``" -msgstr "``false``" +msgid "pg_prove" +msgstr "pg_prove" -msgid "When ``true`` if a path is missing stops and returns **EMPTY SET**" -msgstr "当为 ``true`` 时,如果路径丢失,则停止并返回 **EMPTY SET**" +msgid "For using:" +msgstr "用于使用:" -msgid "When ``false`` ignores missing paths returning all paths found" -msgstr "当 ``false`` 忽略丢失的路径时,返回找到的所有路径" +msgid "PostGIS version >= 2.2" +msgstr "PostGIS版本 >= 2.2" -msgid "``U_turn_on_edge``" -msgstr "``U_turn_on_edge``" +msgid "Example: Installing dependencies on linux" +msgstr "示例:在 Linux 上安装依赖项" -msgid "" -"When ``true`` departing from a visited vertex will not try to avoid using " -"the edge used to reach it. In other words, U turn using the edge with same " -"identifier is allowed." -msgstr "" -"当 为 ``true`` 时,从已访问的顶点出发,不会试图避免使用用于到达它的边。换句话" -"说,允许使用具有相同标识符的边来进行掉头。" +msgid "Installing the compilation dependencies" +msgstr "安装编译依赖项" -msgid "" -"When ``false`` when a departing from a visited vertex tries to avoid using " -"the edge used to reach it. In other words, U turn using the edge with same " -"identifier is used when no other path is found." -msgstr "" -"当为 ``false`` 时,从已访问的顶点出发,尝试避免使用用于到达它的边。换句话说," -"只有在找不到其他路径时才使用具有相同标识符的边来进行掉头。" +msgid "Database dependencies" +msgstr "数据库依赖" -msgid "For the TRSP functions" -msgstr "对于 TRSP 函数" +msgid "Configuring PostgreSQL" +msgstr "配置 PostgreSQL" -msgid ":doc:`pgr_trsp`" -msgstr ":doc:`pgr_trsp`" +msgid "Entering psql console" +msgstr "进入psql控制台" -msgid "Array of identifiers of destination vertices." -msgstr "目标顶点的标识符数组。" +msgid "To exit psql console" +msgstr "退出 psql 控制台" msgid "" -"There are several kinds of columns returned are depending of the function." -msgstr "根据函数的不同,返回的列有多种。" +"Entering psql console directly without switching roles can be done by the " +"following commands" +msgstr "直接进入psql控制台,无需切换角色,可以通过以下命令完成" -msgid "Result columns for a path" -msgstr "路径的结果列" +msgid "Then use the above given method to exit out of the psql console" +msgstr "然后使用上面给出的方法退出psql控制台" -msgid "Used in functions that return one path solution" -msgstr "在返回一个路径解的函数中使用" +msgid "Checking PostgreSQL version" +msgstr "检查 PostgreSQL 版本" -msgid "" -"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost, " -"agg_cost)``" -msgstr "" -"返回 ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost, " -"agg_cost)`` 的集合" +msgid "or" +msgstr "或者" -msgid "``path_seq``" -msgstr "``path_seq``" +msgid "Enter the psql console using above given method and then enter" +msgstr "使用上面给定的方法进入psql控制台,然后输入" -msgid "" -"Relative position in the path. Has value **1** for the beginning of a path." -msgstr "路径中的相对位置。 路径开头的值为 **1**。" +msgid "Creating PostgreSQL role" +msgstr "创建 PostgreSQL 角色" msgid "" -"Identifier of the starting vertex. Returned when multiple starting vetrices " -"are in the query." -msgstr "起始顶点的标识符。 当查询中有多个起始向量时返回。" +"Default role provided by PostgreSQL is postgres. To create new roles you can " +"use the above provided commands. The prompt will ask the user to type name " +"of the role and then provide affirmation. Proceed with the steps and you " +"will succeed in creating PostgreSQL role successfully." +msgstr "" +"PostgreSQL 提供的默认角色是 postgres。 要创建新角色,您可以使用上面提供的命" +"令。 提示将要求用户输入角色名称,然后提供确认。 继续执行这些步骤,您将成功创" +"建 PostgreSQL 角色。" msgid "" -"Identifier of the ending vertex. Returned when multiple ending vertices are " -"in the query." -msgstr "结束顶点的标识符。 当查询中有多个结束顶点时返回。" - -msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``." -msgstr "从 ``start_vid`` 到 ``end_vid`` 路径中节点的标识符。" +"To add password to the role or change previously created password of the " +"role use the following commands" +msgstr "要向角色添加密码或更改之前创建的角色密码,请使用以下命令" msgid "" -"Identifier of the edge used to go from ``node`` to the next node in the path " -"sequence. **-1** for the last node of the path." +"To get additional details on the flags associated with ``createuser`` below " +"given command can be used" msgstr "" -"用于从路径序列中的 ``node`` 到下一个节点的边的标识符。 **-1** 表示路径的最后" -"一个节点。" +"要获取与下面的 ``createuser`` 相关的标志的更多详细信息,可以使用给定的命令" -msgid "" -"Cost to traverse from ``node`` using ``edge`` to the next node in the path " -"sequence." -msgstr "从使用 ``edge`` 的 ``node`` 遍历到路径序列中的下一个节点的成本。" +msgid "Creating Database in PostgreSQL" +msgstr "在 PostgreSQL 中创建数据库" -msgid "Used in functions the following:" -msgstr "用于以下函数:" +msgid "Connecting to a PostgreSQL Database" +msgstr "连接到 PostgreSQL 数据库" -msgid ":doc:`pgr_withPoints`" -msgstr ":doc:`pgr_withPoints`" +msgid "Enter the psql console and type the following commands" +msgstr "进入psql控制台,输入以下命令" -msgid "" -"Returns set of ``(seq, path_seq [, start_pid] [, end_pid], node, edge, cost, " -"agg_cost)``" -msgstr "" -"返回 ``(seq, path_seq [, start_pid] [, end_pid], node, edge, cost, " -"agg_cost)`` 的集合" +msgid "Build dependencies" +msgstr "构建依赖关系" -msgid "Relative position in the path." -msgstr "路径中的相对位置。" +msgid "Optional dependencies" +msgstr "可选依赖项" -msgid "**1** For the first row of the path." -msgstr "**1** 对于路径的第一行。" +msgid "For documentation and testing" +msgstr "用于文档和测试" -msgid "``start_pid``" -msgstr "``start_pid``" +msgid "Configuring" +msgstr "配置" -msgid "Identifier of a starting vertex/point of the path." -msgstr "路径起始顶点/点的标识符。" +msgid "pgRouting uses the `cmake` system to do the configuration." +msgstr "pgRouting 使用 `cmake` 系统进行配置。" -msgid "When positive is the identifier of the starting vertex." -msgstr "当正数时是起始顶点的标识符。" +msgid "The build directory is different from the source directory" +msgstr "构建目录与源目录不同" -msgid "When negative is the identifier of the starting point." -msgstr "当负数时是起点的标识符。" +msgid "Create the build directory" +msgstr "创建构建目录" -msgid "Returned on `Many to One`_ and `Many to Many`_" -msgstr "`多对一`_ 和 `多对多`_ 的返回值" +msgid "Configurable variables" +msgstr "可配置变量" -msgid "``end_pid``" -msgstr "``end_pid``" +msgid "To see the variables that can be configured" +msgstr "查看可以配置的变量" -msgid "Identifier of an ending vertex/point of the path." -msgstr "路径结束顶点/点的标识符。" +msgid "Configuring The Documentation" +msgstr "配置文档" -msgid "When positive is the identifier of the ending vertex." -msgstr "当正数时是结束顶点的标识符。" +msgid "" +"Most of the effort of the documentation has been on the HTML files. Some " +"variables for building documentation:" +msgstr "文档的大部分工作都集中在 HTML 文件上。 构建文档的一些变量:" -msgid "When negative is the identifier of the ending point." -msgstr "当负数时是终点的标识符。" +msgid "Variable" +msgstr "变量" -msgid "Returned on `One to Many`_ and `Many to Many`_" -msgstr "返回 `一对多`_ 和 `多对多`_" +msgid "Comment" +msgstr "解释" -msgid "Identifier of the node in the path from ``start_pid`` to ``end_pid``." -msgstr "从 ``start_pid`` 到 ``end_pid`` 路径中节点的标识符。" +msgid "WITH_DOC" +msgstr "WITH_DOC" -msgid "When positive is the identifier of the a vertex." -msgstr "当正数时是顶点的标识符。" +msgid "BOOL=OFF" +msgstr "BOOL=OFF" -msgid "When negative is the identifier of the a point." -msgstr "当负数时是a点的标识符。" +msgid "Turn on/off building the documentation" +msgstr "打开/关闭构建文档" -msgid "" -"Identifier of the edge used to go from ``node`` to the next node in the path " -"sequence." -msgstr "用于从路径序列中的 ``node`` 到下一个节点的边的标识符。" +msgid "BUILD_HTML" +msgstr "BUILD_HTML" -msgid "**-1** for the last row of the path." -msgstr "**-1** 表示路径的最后一行。" +msgid "BOOL=ON" +msgstr "BOOL=ON" -msgid "**0** For the first row of the path." -msgstr "**0** 表示路径的第一行。" +msgid "If ON, turn on/off building HTML for user's documentation" +msgstr "如果打开,则打开/关闭为用户文档构建 HTML" -msgid ":doc:`pgr_dijkstraNear`" -msgstr ":doc:`pgr_dijkstraNear`" +msgid "BUILD_DOXY" +msgstr "BUILD_DOXY" -msgid "" -"Returns ``(seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)``" -msgstr "" -"返回 ``(seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)``" +msgid "If ON, turn on/off building HTML for developer's documentation" +msgstr "如果打开,则打开/关闭为开发人员文档构建 HTML" -msgid "Identifier of the starting vertex of the current path." -msgstr "当前路径起始顶点的标识符。" +msgid "BUILD_LATEX" +msgstr "BUILD_LATEX" -msgid "Identifier of the ending vertex of the current path." -msgstr "当前路径结束顶点的标识符。" +msgid "If ON, turn on/off building PDF" +msgstr "如果打开,则打开/关闭构建 PDF" -msgid "Multiple paths" -msgstr "多条路径" +msgid "BUILD_MAN" +msgstr "BUILD_MAN" -msgid "Selective for multiple paths." -msgstr "多路径选择性。" +msgid "If ON, turn on/off building MAN pages" +msgstr "如果为 ON,则打开/关闭构建 MAN 页面" -msgid "The columns depend on the function call." -msgstr "这些列取决于函数调用。" +msgid "DOC_USE_BOOTSTRAP" +msgstr "DOC_USE_BOOTSTRAP" -msgid "" -"Set of ``(seq, path_id, path_seq [, start_vid] [, end_vid], node, edge, " -"cost, agg_cost)``" -msgstr "" -"``(seq, path_id, path_seq [, start_vid] [, end_vid], node, edge, cost, " -"agg_cost)`` 集合" +msgid "If ON, use sphinx-bootstrap for HTML pages of the users documentation" +msgstr "如果打开,则对用户文档的 HTML 页面使用 sphinx-bootstrap" -msgid "``path_id``" -msgstr "``path_id``" +msgid "Configuring cmake to create documentation before building pgRouting" +msgstr "在构建 pgRouting 之前配置 cmake 创建文档" -msgid "Path identifier." -msgstr "路径标识符。" +msgid "Most of the effort of the documentation has been on the html files." +msgstr "文档的大部分工作都集中在 html 文件上。" -msgid "" -"Has value **1** for the first of a path from ``start_vid`` to ``end_vid``." -msgstr "从 ``start_vid`` 到 ``end_vid`` 的第一个路径的值为 **1** 。" +msgid "Building" +msgstr "构建" -msgid "Non selective for multiple paths" -msgstr "多路径非选择性" +msgid "Using ``make`` to build the code and the documentation" +msgstr "使用 ``make`` 构建代码和文档" -msgid "Regardless of the call, al the columns are returned." -msgstr "无论调用如何,都会返回所有列。" +msgid "The following instructions start from *path/to/pgrouting/build*" +msgstr "以下说明从 *path/to/pgrouting/build* 开始" msgid "" -"Returns set of ``(seq, path_id, path_seq, start_vid, end_vid, node, edge, " -"cost, agg_cost)``" -msgstr "" -"返回集合``(seq, path_id, path_seq, start_vid, end_vid, node, edge, cost, " -"agg_cost)``" - -msgid "Result columns for cost functions" -msgstr "成本函数结果列" +"We have tested on several platforms, For installing or reinstalling all the " +"steps are needed." +msgstr "我们已经在多个平台上进行了测试,安装或重新安装需要所有步骤。" -msgid "Used in the following" -msgstr "用于以下函数" +msgid "The sql signatures are configured and build in the ``cmake`` command." +msgstr "SQL签名是在 ``cmake`` 命令中配置和构建的。" -msgid "" -"When start_vid or end_vid columns have negative values, the identifier is " -"for a Point." -msgstr "当 start_vid 或 end_vid 列具有负值时,标识符用于点。" +msgid "MinGW on Windows" +msgstr "Windows 上的 MinGW" -msgid "Result columns for flow functions" -msgstr "流量函数的结果列" +msgid "Linux" +msgstr "Linux" -msgid "Edges SQL for the following" -msgstr "Edges SQL 适用于以下内容" +msgid "The following instructions start from *path/to/pgrouting*" +msgstr "以下说明从 *path/to/pgrouting* 开始" -msgid "Result columns for spanning tree functions" -msgstr "生成树函数的结果列" +msgid "" +"To remove the build when the configuration changes, use the following code:" +msgstr "要在配置更改时删除构建,请使用以下代码:" -msgid "Returns set of ``(edge, cost)``" -msgstr "返回集合 ``(edge, cost)``" +msgid "and start the build process as mentioned previously." +msgstr "并开始前面提到的构建过程。" -msgid "Cost to traverse the edge." -msgstr "穿越边的成本。" +msgid "Testing" +msgstr "测试" -msgid "Performance Tips" -msgstr "性能技巧" +msgid "Currently there is no :code:`make test` and testing is done as follows" +msgstr "目前没有 :code:`make test`,测试如下" -msgid "For the Routing functions" -msgstr "对于路由功能" +msgid "The following instructions start from *path/to/pgrouting/*" +msgstr "以下指令从 *path/to/pgrouting/* 开始" msgid "" -"To get faster results bound the queries to an area of interest of routing." -msgstr "为了获得更快的结果,将查询绑定到路由感兴趣的区域。" +"pgRouting is an extension of `PostGIS `__ and " +"`PostgreSQL `__ geospatial database and adds " +"routing and other network analysis functionality. A predecessor of pgRouting " +"– pgDijkstra, written by Sylvain Pasche from `Camptocamp `__, was later extended by Orkney and renamed to pgRouting. The project " +"is now supported and maintained by `Georepublic `__, `Paragon Corporation `__ and " +"a broad user community." +msgstr "" +"pgRouting 是 `PostGIS `__ 和 `PostgreSQL `__ 地理空间数据库的扩展,并添加了路由和其他网络分析功能。 " +"pgRouting的前身——pgDijkstra,由`Camptocamp `__ 的" +"Sylvain Pasche编写,后来被Orkney扩展并更名为pgRouting。 该项目现在得到了 " +"`Georepublic `__ 、`Paragon Corporation `__ 和广大用户社区的支持和维护。" msgid "" -"In this example Use an inner query SQL that does not include some edges in " -"the routing function and is within the area of the results." +"pgRouting is part of `OSGeo Community Projects `__ from the `OSGeo Foundation `__ and included on `OSGeoLive `__." msgstr "" -"在此示例中,使用内部查询 SQL,该 SQL 不包括路由函数中的某些边并且位于结果区域" -"内。" +"pgRouting 是 `OSGeo Community Projects `__的一部分,隶属于`OSGeo Foundation `__,并被包含在`OSGeoLive `__。" -msgid "How to contribute" -msgstr "如何贡献" +msgid "Licensing" +msgstr "许可" -msgid "Wiki" -msgstr "维基" +msgid "The following licenses can be found in pgRouting:" +msgstr "可以在 pgRouting 中找到以下许可证:" -msgid "" -"Edit an existing `pgRouting Wiki `__ page." -msgstr "" -"编辑现有的 `pgRouting 维基 `__ " -"页面。" +msgid "**License**" +msgstr "**许可**" -msgid "Or create a new Wiki page" -msgstr "或者创建一个新的维基 页面" +msgid "GNU General Public License v2.0 or later" +msgstr "GNU 通用公共许可证 v2.0 或更高版本" msgid "" -"Create a page on the `pgRouting Wiki `__" +"Most features of pgRouting are available under `GNU General Public License " +"v2.0 or later `_." msgstr "" -"在 `pgRouting 维基 `__ 上创建页" -"面" +"pgRouting 的大多数功能都可以在` GNU 通用公共许可证 v2.0 或更高版本 `_ 下使用。" -msgid "Give the title an appropriate name" -msgstr "给标题起一个合适的名称" +msgid "Boost Software License - Version 1.0" +msgstr "Boost 软件许可证 - 版本 1.0" msgid "" -"`Example `__" +"Some Boost extensions are available under `Boost Software License - Version " +"1.0 `_." msgstr "" -"`示例 `__" +"一些 Boost 扩展可根据` Boost 软件许可证 - 版本 1.0 获得 `_。" -msgid "Adding Functionaity to pgRouting" -msgstr "向 pgRouting 添加功能" +msgid "MIT-X License" +msgstr "MIT-X License" msgid "" -"Consult the `developer's documentation `__" -msgstr "查阅`开发者文档 `__" - -msgid "Installation" -msgstr "安装" +"Some code contributed by iMaptools.com is available under MIT-X license." +msgstr "iMaptools.com 贡献的一些代码可在 MIT-X 许可证下使用。" -msgid ":ref:`install-short`" -msgstr ":ref:`install-short`" +msgid "" +"The pgRouting Manual is licensed under a `Creative Commons Attribution-Share " +"Alike 3.0 License `_." +msgstr "" +"pgRouting 手册根据`知识共享署名-相同方式共享 3.0 许可证获得许可 `_。" -msgid ":ref:`install_get_sources`" -msgstr ":ref:`install_get_sources`" +msgid "" +"In general license information should be included in the header of each " +"source file." +msgstr "一般来说,许可证信息应包含在每个源文件的标头中。" -msgid ":ref:`install_enable_db`" -msgstr ":ref:`install_enable_db`" +msgid "Contributors" +msgstr "贡献者" -msgid ":ref:`install_dependencies`" -msgstr ":ref:`install_dependencies`" +msgid "This Release Contributors" +msgstr "此版本贡献者" -msgid ":ref:`install_configuring`" -msgstr ":ref:`install_configuring`" +msgid "Individuals in this release v3.7.x (in alphabetical order)" +msgstr "在此版本 v3.7.x 中的个人贡献者(按字母顺序排列)" -msgid ":ref:`install_build`" -msgstr ":ref:`install_build`" +msgid "(Alphabetical order)" +msgstr "(按字母顺序排列)" -msgid ":ref:`install_testing`" -msgstr ":ref:`install_testing`" +msgid "Regina Obe, Vicky Vergara" +msgstr "Regina Obe, Vicky Vergara" msgid "" -"Instructions for downloading and installing binaries for different operating " -"systems, additional notes and corrections not included in this documentation " -"can be found in `Installation wiki `__" +"And all the people that give us a little of their time making comments, " +"finding issues, making pull requests etc. in any of our products: " +"osm2pgrouting, pgRouting, pgRoutingLayer, workshop." msgstr "" -"有关下载和安装适用于不同操作系统的二进制文件的说明、本文档中未包含的其他注释" -"和更正,可以在 `安装维基 `__ 中找到" +"还有所有为我们的产品(osm2pgrouting、pgRouting、pgRoutingLayer、workshop)提" +"供意见、发现问题、提出拉取请求等的人们。" + +msgid "Corporate Sponsors in this release (in alphabetical order)" +msgstr "本次发布中的企业赞助商(按字母顺序排列)" msgid "" -"To use pgRouting PostGIS needs to be installed, please read the information " -"about installation in this `Install Guide `__" +"These are corporate entities that have contributed developer time, hosting, " +"or direct monetary funding to the pgRouting project:" msgstr "" -"使用pgRouting需要安装PostGIS,请阅读本 `安装指南 `__ 中有关安装的信息" +"这些是为 pgRouting 项目贡献了开发人员时间、托管或直接货币资金的公司实体:" -msgid "Short Version" -msgstr "简洁版本" +msgid "`OSGeo `__" +msgstr "`OSGeo `__" -msgid "Extracting the tar ball" -msgstr "解压 tar 压缩文件" +msgid "`OSGeo UK `__" +msgstr "`OSGeo UK `__" -msgid "To compile assuming you have all the dependencies in your search path:" -msgstr "假设您的搜索路径中有所有依赖项,则进行编译:" +msgid "`Google Summer of Code `__" +msgstr "`Google Summer of Code `__" -msgid "" -"Once pgRouting is installed, it needs to be enabled in each individual " -"database you want to use it in." -msgstr "安装 pgRouting 后,需要在您想要使用它的每个数据库中启用它。" +msgid "`Paragon Corporation `__" +msgstr "`Paragon Corporation `__" -msgid "Get the sources" -msgstr "获取来源" +msgid "Contributors Past & Present:" +msgstr "过去与现在的贡献者:" + +msgid "Individuals (in alphabetical order)" +msgstr "个人贡献者(按字母排序)" msgid "" -"The pgRouting latest release can be found in https://github.com/pgRouting/" -"pgrouting/releases/latest" +"Aasheesh Tiwari, Abhinav Jain, Aditya Pratap Singh, Adrien Berchet, Akio " +"Takubo, Andrea Nardelli, Anthony Tasca, Anton Patrushev, Aryan Gupta, Ashraf " +"Hossain, Ashish Kumar, Cayetano Benavent, Christian Gonzalez, Daniel Kastl, " +"Dave Potts, David Techer, Denis Rykov, Ema Miyawaki, Esteban Zimanyi, " +"Florian Thurkow, Frederic Junod, Gerald Fenoy, Gudesa Venkata Sai Akhil, " +"Hang Wu, Himanshu Raj, Imre Samu, Jay Mahadeokar, Jinfu Leng, Kai Behncke, " +"Kishore Kumar, Ko Nagase, Mahmoud Sakr, Manikata Kondeti, Mario Basa, Martin " +"Wiesenhaan, Maxim Dubinin, Maoguang Wang, Mohamed Bakli, Mohamed Zia, Mukul " +"Priya, Nitish Chauhan, Rajat Shinde, Razequl Islam, Regina Obe, Rohith " +"Reddy, Sarthak Agarwal, Shobhit Chaurasia, Sourabh Garg, Stephen Woodbridge, " +"Swapnil Joshi, Sylvain Housseman, Sylvain Pasche, Veenit Kumar, Vidhan Jain, " +"Virginia Vergara, Yige Huang" msgstr "" -"pgRouting 最新版本可以在 https://github.com/pgRouting/pgrouting/releases/" -"latest 中找到" +"Aasheesh Tiwari, Abhinav Jain, Aditya Pratap Singh, Adrien Berchet, Akio " +"Takubo, Andrea Nardelli, Anthony Tasca, Anton Patrushev, Aryan Gupta, Ashraf " +"Hossain, Ashish Kumar, Cayetano Benavent, Christian Gonzalez, Daniel Kastl, " +"Dave Potts, David Techer, Denis Rykov, Ema Miyawaki, Esteban Zimanyi, " +"Florian Thurkow, Frederic Junod, Gerald Fenoy, Gudesa Venkata Sai Akhil, " +"Hang Wu, Himanshu Raj, Imre Samu, Jay Mahadeokar, Jinfu Leng, Kai Behncke, " +"Kishore Kumar, Ko Nagase, Mahmoud Sakr, Manikata Kondeti, Mario Basa, Martin " +"Wiesenhaan, Maxim Dubinin, Maoguang Wang, Mohamed Bakli, Mohamed Zia, Mukul " +"Priya, Nitish Chauhan, Rajat Shinde, Razequl Islam, Regina Obe, Rohith " +"Reddy, Sarthak Agarwal, Shobhit Chaurasia, Sourabh Garg, Stephen Woodbridge, " +"Swapnil Joshi, Sylvain Housseman, Sylvain Pasche, Veenit Kumar, Vidhan Jain, " +"Virginia Vergara, Yige Huang" + +msgid "Corporate Sponsors (in alphabetical order)" +msgstr "企业赞助商(按字母顺序排列)" + +msgid "Camptocamp" +msgstr "Camptocamp" + +msgid "CSIS (University of Tokyo)" +msgstr "CSIS (University of Tokyo)" + +msgid "Georepublic" +msgstr "Georepublic" -msgid "To download this release:" -msgstr "要下载此版本:" +msgid "Google Summer of Code" +msgstr "Google Summer of Code" -msgid "" -"Go to :ref:`install-short` for more instructions on extracting tar ball and " -"compiling pgRouting." -msgstr "" -"转到 :ref:`install-short` 以获取有关提取 tar 包和编译 pgRouting 的更多说明。" +msgid "iMaptools" +msgstr "iMaptools" -msgid "git" -msgstr "git" +msgid "Leopark" +msgstr "Leopark" -msgid "To download the repository" -msgstr "下载存储库" +msgid "Orkney" +msgstr "Orkney" -msgid "" -"Go to :ref:`install-short` for more instructions on compiling pgRouting " -"(there is no tar ball involved while downloading pgRouting repository from " -"GitHub)." -msgstr "" -"请参阅 :ref:`install-short` 获取有关编译 pgRouting 的更多说明(从 GitHub 下" -"载 pgRouting 存储库时不涉及 tar 文件)。" +msgid "OSGeo" +msgstr "OSGeo" -msgid "Enabling and upgrading in the database" -msgstr "在数据库中启用和升级" +msgid "OSGeo UK" +msgstr "OSGeo UK" -msgid "Enabling the database" -msgstr "启用数据库" +msgid "Paragon Corporation" +msgstr "Paragon Corporation" + +msgid "Versaterm Inc." +msgstr "Versaterm Inc." + +msgid "More Information" +msgstr "更多信息" msgid "" -"pgRouting is a PostgreSQL extension and depends on PostGIS to provide " -"functionalities to end user. Below given code demonstrates enabling PostGIS " -"and pgRouting in the database." +"The latest software, documentation and news items are available at the " +"pgRouting web site https://pgrouting.org." msgstr "" -"pgRouting 是 PostgreSQL 扩展,依赖 PostGIS 向最终用户提供功能。 下面给出的代" -"码演示了在数据库中启用 PostGIS 和 pgRouting。" +"最新的软件、文档和新闻可在 pgRouting 网站 https://pgrouting.org 上获取。" msgid "" -"Checking PostGIS and pgRouting version after enabling them in the database." -msgstr "在数据库中启用 PostGIS 和 pgRouting 后检查它们的版本。" +"PostgreSQL database server at the PostgreSQL main site https://www." +"postgresql.org." +msgstr "" +"PostgreSQL 数据库服务器位于 PostgreSQL 主站点 https://www.postgresql.org。" -msgid "Upgrading the database" -msgstr "升级数据库" +msgid "PostGIS extension at the PostGIS project web site https://postgis.net." +msgstr "PostGIS 项目网站 https://postgis.net 上的 PostGIS 扩展。" -msgid "" -"To upgrade pgRouting in the database to version 3.7.0 use the following " -"command:" -msgstr "要将数据库中的 pgRouting 升级到版本3.7.0,请使用以下命令:" +msgid "Boost C++ source libraries at https://www.boost.org." +msgstr "Boost C++ 源库位于 https://www.boost.org。" -msgid "" -"More information can be found in https://www.postgresql.org/docs/current/sql-" -"createextension.html" -msgstr "" -"更多信息可以在 https://www.postgresql.org/docs/current/sql-createextension." -"html 中找到" +msgid ":doc:`migration`" +msgstr ":doc:`migration`" -msgid "Dependencies" -msgstr "依赖" +msgid "``pgr_KSP``" +msgstr "``pgr_KSP``" -msgid "Compilation Dependencies" -msgstr "编译依赖" +msgid "``pgr_KSP`` — Yen's algorithm for K shortest paths using Dijkstra." +msgstr "``pgr_KSP`` — Yen 使用 Dijkstra 计算 K 最短路径的算法。" -msgid "" -"To be able to compile pgRouting, make sure that the following dependencies " -"are met:" -msgstr "为了能够编译 pgRouting,请确保满足以下依赖项:" +msgid "Availability" +msgstr "可用性" -msgid "C and C++0x compilers" -msgstr "C 和 C++0x编译器" +#, fuzzy +msgid "Version 4.0.0" +msgstr "版本2.0.0" -msgid "" -"Compiling with Boost 1.56 up to Boost 1.74 requires C++ Compiler with C++03 " -"or C++11 standard support" +msgid "All signatures promoted to official." msgstr "" -"使用 Boost 1.56 到 Boost 1.74 进行编译需要具有 C++03 或 C++ 11 标准支持的 C +" -"+编译器" -msgid "" -"Compiling with Boost 1.75 requires C++ Compiler with C++14 standard support" -msgstr "使用 Boost 1.75 进行编译需要具有 C++ 14 标准支持的 C++ 编译器" +msgid "Version 3.6.0" +msgstr "版本3.6.0" -msgid "Postgresql version = Supported versions by PostgreSQL" -msgstr "Postgresql 版本 = PostgreSQL 支持的版本" +msgid "Result columns standarized to: |nksp-result|" +msgstr "结果列标准化为 |nksp-result|" -msgid "The Boost Graph Library (BGL). Version >= 1.56" -msgstr "Boost 图库 (BGL)。 版本 >= 1.56" +msgid "pgr_ksp(One to One)" +msgstr "pgr_ksp(一对一)" -msgid "CMake >= 3.2" -msgstr "CMake >= 3.2" +msgid "Added ``start_vid`` and ``end_vid`` result columns." +msgstr "增加 ``start_vid`` 和 ``end_vid`` 结果列。" -msgid "optional dependencies" -msgstr "可选的依赖项" +msgid "New proposed signatures:" +msgstr "新拟议的签名:" -msgid "For user's documentation" -msgstr "用于用户文档" +msgid "pgr_ksp(One to Many)" +msgstr "pgr_ksp(一对多)" -msgid "Sphinx >= 1.1" -msgstr "Sphinx >= 1.1" +msgid "pgr_ksp(Many to One)" +msgstr "pgr_ksp(多对一)" -msgid "Latex" -msgstr "Latex" +msgid "pgr_ksp(Many to Many)" +msgstr "pgr_ksp(多对多)" -msgid "For developer's documentation" -msgstr "对于开发者文档" +msgid "pgr_ksp(Combinations)" +msgstr "pgr_ksp(组合)" -msgid "Doxygen >= 1.7" -msgstr "Doxygen >= 1.7" +msgid "Version 2.1.0" +msgstr "版本2.1.0" -msgid "For testing" -msgstr "供测试用" +msgid "Signature change" +msgstr "签名变更" -msgid "pgtap" -msgstr "pgtap" +msgid "Old signature no longer supported" +msgstr "不再支持旧签名" -msgid "pg_prove" -msgstr "pg_prove" +msgid "Version 2.0.0" +msgstr "版本2.0.0" -msgid "For using:" -msgstr "用于使用:" +msgid "Official function." +msgstr "官方 函数" -msgid "PostGIS version >= 2.2" -msgstr "PostGIS版本 >= 2.2" +msgid "" +"The K shortest path routing algorithm based on Yen's algorithm. \"K\" is the " +"number of shortest paths desired." +msgstr "基于Yen算法的K最短路径路由算法。 “K”是所需的最短路径的数量。" -msgid "Example: Installing dependencies on linux" -msgstr "示例:在 Linux 上安装依赖项" +msgid "|Boost| Boost Graph Inside" +msgstr "|Boost| Boost 图内部" -msgid "Installing the compilation dependencies" -msgstr "安装编译依赖项" +msgid "Boost Graph Inside" +msgstr "Boost 图内部" -msgid "Database dependencies" -msgstr "数据库依赖" +msgid "Signatures" +msgstr "签名" -msgid "Configuring PostgreSQL" -msgstr "配置 PostgreSQL" +msgid "Summary" +msgstr "总结" -msgid "Entering psql console" -msgstr "进入psql控制台" +msgid "pgr_KSP(`Edges SQL`_, **start vid**, **end vid**, **K**, [**options**])" +msgstr "" +"pgr_KSP(`Edges SQL`_, **start vid**, **end vid**, **K**, [**options**])" -msgid "To exit psql console" -msgstr "退出 psql 控制台" +msgid "" +"pgr_KSP(`Edges SQL`_, **start vid**, **end vids**, **K**, [**options**])" +msgstr "" +"pgr_KSP(`Edges SQL`_, **start vid**, **end vids**, **K**, [**options**])" msgid "" -"Entering psql console directly without switching roles can be done by the " -"following commands" -msgstr "直接进入psql控制台,无需切换角色,可以通过以下命令完成" +"pgr_KSP(`Edges SQL`_, **start vids**, **end vid**, **K**, [**options**])" +msgstr "" +"pgr_KSP(`Edges SQL`_, **start vids**, **end vid**, **K**, [**options**])" -msgid "Then use the above given method to exit out of the psql console" -msgstr "然后使用上面给出的方法退出psql控制台" +msgid "" +"pgr_KSP(`Edges SQL`_, **start vids**, **end vids**, **K**, [**options**])" +msgstr "" +"pgr_KSP(`Edges SQL`_, **start vids**, **end vids**, **K**, [**options**])" -msgid "Checking PostgreSQL version" -msgstr "检查 PostgreSQL 版本" +msgid "pgr_KSP(`Edges SQL`_, `Combinations SQL`_, **K**, [**options**])" +msgstr "pgr_KSP(`Edges SQL`_, `Combinations SQL`_, **K**, [**options**])" -msgid "or" -msgstr "或者" +msgid "**options:** ``[directed, heap_paths]``" +msgstr "**options:** ``[directed, heap_paths]``" -msgid "Enter the psql console using above given method and then enter" -msgstr "使用上面给定的方法进入psql控制台,然后输入" +msgid "Returns set of |nksp-result|" +msgstr "返回集合 |nksp-result|" -msgid "Creating PostgreSQL role" -msgstr "创建 PostgreSQL 角色" +msgid "OR EMPTY SET" +msgstr "OR EMPTY SET" + +msgid "Example" +msgstr "示例" + +msgid "Get 2 paths from :math:`6` to :math:`17` on a directed graph." +msgstr "在有向图上获取从 :math:`6` 到 :math:`17` 的 2 条路径。" msgid "" -"Default role provided by PostgreSQL is postgres. To create new roles you can " -"use the above provided commands. The prompt will ask the user to type name " -"of the role and then provide affirmation. Proceed with the steps and you " -"will succeed in creating PostgreSQL role successfully." -msgstr "" -"PostgreSQL 提供的默认角色是 postgres。 要创建新角色,您可以使用上面提供的命" -"令。 提示将要求用户输入角色名称,然后提供确认。 继续执行这些步骤,您将成功创" -"建 PostgreSQL 角色。" +"Get 2 paths from vertex :math:`6` to vertices :math:`\\{10, 17\\}` on a " +"directed graph." +msgstr "获取有向图上从顶点 :math:`6` 到顶点 :math:`\\{10, 17\\}` 的 2 条路径。" msgid "" -"To add password to the role or change previously created password of the " -"role use the following commands" -msgstr "要向角色添加密码或更改之前创建的角色密码,请使用以下命令" +"Get 2 paths from vertices :math:`\\{6, 1\\}` to vertex :math:`17` on a " +"directed graph." +msgstr "在有向图中得到从顶点 :math:`\\{6, 1\\}` 到顶点 :math:`17` 的2条路经。" msgid "" -"To get additional details on the flags associated with ``createuser`` below " -"given command can be used" +"Get 2 paths vertices :math:`\\{6, 1\\}` to vertices :math:`\\{10, 17\\}` on " +"a directed graph." msgstr "" -"要获取与下面的 ``createuser`` 相关的标志的更多详细信息,可以使用给定的命令" - -msgid "Creating Database in PostgreSQL" -msgstr "在 PostgreSQL 中创建数据库" - -msgid "Connecting to a PostgreSQL Database" -msgstr "连接到 PostgreSQL 数据库" +"在有向图中得到从顶点 :math:`\\{6, 1\\}` 到顶点 :math:`\\{10, 17\\}` 的2条路" +"经。" -msgid "Enter the psql console and type the following commands" -msgstr "进入psql控制台,输入以下命令" +msgid "Using a combinations table on an directed graph" +msgstr "在有向图上使用组合表" -msgid "Build dependencies" -msgstr "构建依赖关系" +msgid "The combinations table:" +msgstr "组合表:" -msgid "Optional dependencies" -msgstr "可选依赖项" +msgid "The query:" +msgstr "查询:" -msgid "For documentation and testing" -msgstr "用于文档和测试" +msgid "Identifier of the destination vertex." +msgstr "目标顶点的标识符。" -msgid "Configuring" -msgstr "配置" +msgid "**K**" +msgstr "**K**" -msgid "pgRouting uses the `cmake` system to do the configuration." -msgstr "pgRouting 使用 `cmake` 系统进行配置。" +msgid "Number of required paths." +msgstr "所需路径的数量。" -msgid "The build directory is different from the source directory" -msgstr "构建目录与源目录不同" +msgid "KSP Optional parameters" +msgstr "KSP 可选参数" -msgid "Create the build directory" -msgstr "创建构建目录" +msgid "``heap_paths``" +msgstr "``heap_paths``" -msgid "Configurable variables" -msgstr "可配置变量" +msgid "When ``false`` Returns at most K paths." +msgstr "当 ``false`` 时返回最多 K 条路径。" -msgid "To see the variables that can be configured" -msgstr "查看可以配置的变量" +msgid "When ``true`` all the calculated paths while processing are returned." +msgstr "当 ``true`` 时,返回处理时的所有计算路径。" -msgid "Configuring The Documentation" -msgstr "配置文档" +msgid "" +"Roughly, when the shortest path has ``N`` edges, the heap will contain about " +"than ``N * K`` paths for small value of ``K`` and ``K > 5``." +msgstr "" +"粗略地说,当最短路径有 ``N`` 个边时,对于``K``值较小且``K > 5`` ,堆将包含大" +"约 ``N * K`` 条路径。" msgid "" -"Most of the effort of the documentation has been on the HTML files. Some " -"variables for building documentation:" -msgstr "文档的大部分工作都集中在 HTML 文件上。 构建文档的一些变量:" +"Has value **1** for the first of a path from ``start_vid`` to ``end_vid``" +msgstr "从 ``start_vid`` 到 ``end_vid`` 的第一个路径的值为 **1**" -msgid "Variable" -msgstr "变量" +msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``" +msgstr "从 ``start_vid`` 到 ``end_vid`` 路径中节点的标识符" -msgid "Comment" -msgstr "解释" +msgid ":math:`0` for the last ``node`` of the path." +msgstr ":math:`0` 为路径的最后一个 ``node``。" -msgid "WITH_DOC" -msgstr "WITH_DOC" +msgid "Aggregate cost from **start vid** to ``node``." +msgstr "从 **start vid** 到 ``node`` 的总成本。" -msgid "BOOL=OFF" -msgstr "BOOL=OFF" +msgid "Additional Examples" +msgstr "其他示例" -msgid "Turn on/off building the documentation" -msgstr "打开/关闭构建文档" +msgid "Get 2 paths from :math:`6` to :math:`17` on an undirected graph" +msgstr "在无向图中获取从 :math:`6` 到 :math:`17` 的2条路径" -msgid "BUILD_HTML" -msgstr "BUILD_HTML" +msgid "Also get the paths in the heap." +msgstr "还获取堆中的路径。" -msgid "BOOL=ON" -msgstr "BOOL=ON" +msgid "Get 2 paths using combinations table on an undirected graph" +msgstr "使用无向图上的组合表获取 2 条路径" -msgid "If ON, turn on/off building HTML for user's documentation" -msgstr "如果打开,则打开/关闭为用户文档构建 HTML" +msgid "" +"Get 2 paths from vertices :math:`\\{6, 1\\}` to vertex :math:`17` on a " +"undirected graph." +msgstr "在无向图中获取从顶点 :math:`\\{6, 1\\}` 到顶点 :math:`17` 的2条路径。" -msgid "BUILD_DOXY" -msgstr "BUILD_DOXY" +msgid "https://en.wikipedia.org/wiki/K_shortest_path_routing" +msgstr "https://en.wikipedia.org/wiki/K_shortest_path_routing" -msgid "If ON, turn on/off building HTML for developer's documentation" -msgstr "如果打开,则打开/关闭为开发人员文档构建 HTML" +msgid "``pgr_TSP``" +msgstr "``pgr_TSP``" -msgid "BUILD_LATEX" -msgstr "BUILD_LATEX" +#, fuzzy +msgid "``pgr_TSP`` - Approximation using *metric* algorithm." +msgstr "``pgr_TSP`` -使用*metric*算法的近似方法。" -msgid "If ON, turn on/off building PDF" -msgstr "如果打开,则打开/关闭构建 PDF" +msgid "Availability:" +msgstr "可用性:" -msgid "BUILD_MAN" -msgstr "BUILD_MAN" +msgid "Version 3.2.1" +msgstr "版本3.2.1" -msgid "If ON, turn on/off building MAN pages" -msgstr "如果为 ON,则打开/关闭构建 MAN 页面" +msgid "" +"Metric Algorithm from `Boost library `__" +msgstr "" +"`Boost库 `__ 中" +"的度量算法" -msgid "DOC_USE_BOOTSTRAP" -msgstr "DOC_USE_BOOTSTRAP" +msgid "Simulated Annealing Algorithm no longer supported" +msgstr "Simulated Annealing算法不再受支持" -msgid "If ON, use sphinx-bootstrap for HTML pages of the users documentation" -msgstr "如果打开,则对用户文档的 HTML 页面使用 sphinx-bootstrap" +msgid "" +"The Simulated Annealing Algorithm related parameters are ignored: " +"max_processing_time, tries_per_temperature, max_changes_per_temperature, " +"max_consecutive_non_changes, initial_temperature, final_temperature, " +"cooling_factor, randomize" +msgstr "" +"Simulated Annealing算法相关参数被忽略:max_processing_time、" +"tries_per_temper、max_changes_per_tempere、max_consecutive_non_changes、" +"initial_temper、final_temper、cooling_factor、randomize" -msgid "Configuring cmake to create documentation before building pgRouting" -msgstr "在构建 pgRouting 之前配置 cmake 创建文档" +msgid "Version 2.3.0" +msgstr "版本2.3.0" -msgid "Most of the effort of the documentation has been on the html files." -msgstr "文档的大部分工作都集中在 html 文件上。" +msgid "" +"Can be Used with :doc:`costMatrix-category` functions preferably with " +"`directed => false`." +msgstr "" +"可以与 :doc:`costMatrix-category` 函数一起使用,最好使用 `directed => " +"false`。" -msgid "Building" -msgstr "构建" +msgid "With ``directed => false``" +msgstr "使用 ``directed => false``" -msgid "Using ``make`` to build the code and the documentation" -msgstr "使用 ``make`` 构建代码和文档" +msgid "Will generate a graph that:" +msgstr "将生成一个图:" -msgid "The following instructions start from *path/to/pgrouting/build*" -msgstr "以下说明从 *path/to/pgrouting/build* 开始" +msgid "is undirected" +msgstr "是无向的" -msgid "" -"We have tested on several platforms, For installing or reinstalling all the " -"steps are needed." -msgstr "我们已经在多个平台上进行了测试,安装或重新安装需要所有步骤。" +msgid "is fully connected (As long as the graph has one component)" +msgstr "是完全连接的(只要图有一个分量)" -msgid "The sql signatures are configured and build in the ``cmake`` command." -msgstr "SQL签名是在 ``cmake`` 命令中配置和构建的。" +msgid "all traveling costs on edges obey the triangle inequality." +msgstr "所有边上的旅行成本都遵循三角不等式。" -msgid "MinGW on Windows" -msgstr "Windows 上的 MinGW" +msgid "When ``start_vid = 0 OR end_vid = 0``" +msgstr "当 ``start_vid = 0 OR end_vid = 0``" -msgid "Linux" -msgstr "Linux" +msgid "" +"The solutions generated is garanteed to be *twice as long as the optimal " +"tour in the worst case*" +msgstr "生成的解决方案保证是*最坏情况下最优路径时间的两倍*" -msgid "The following instructions start from *path/to/pgrouting*" -msgstr "以下说明从 *path/to/pgrouting* 开始" +msgid "When ``start_vid != 0 AND end_vid != 0 AND start_vid != end_vid``" +msgstr "当 ``start_vid != 0 AND end_vid != 0 AND start_vid != end_vid``" msgid "" -"To remove the build when the configuration changes, use the following code:" -msgstr "要在配置更改时删除构建,请使用以下代码:" +"It is **not garanteed** that the solution will be, in the worse case, twice " +"as long as the optimal tour, due to the fact that `end_vid` is forced to be " +"in a fixed position." +msgstr "" +"在最坏情况下, **不能保证** 解决方案将是最优路径的两倍长,因为 `end_vid` 被强" +"制设置在固定位置。" -msgid "and start the build process as mentioned previously." -msgstr "并开始前面提到的构建过程。" +msgid "With ``directed => true``" +msgstr "当 ``directed => true``" -msgid "Testing" -msgstr "测试" +msgid "" +"It is **not garanteed** that the solution will be, in the worse case, twice " +"as long as the optimal tour" +msgstr "**不能保证** 在最坏情况下解决方案将是最优路径的两倍长" -msgid "Currently there is no :code:`make test` and testing is done as follows" -msgstr "目前没有 :code:`make test`,测试如下" +msgid "is directed" +msgstr "有向" -msgid "The following instructions start from *path/to/pgrouting/*" -msgstr "以下指令从 *path/to/pgrouting/* 开始" +msgid "" +"some (or all) traveling costs on edges might not obey the triangle " +"inequality." +msgstr "某些(或全部)边上的旅行成本可能不满足三角不等式。" msgid "" -"pgRouting is an extension of `PostGIS `__ and " -"`PostgreSQL `__ geospatial database and adds " -"routing and other network analysis functionality. A predecessor of pgRouting " -"– pgDijkstra, written by Sylvain Pasche from `Camptocamp `__, was later extended by Orkney and renamed to pgRouting. The project " -"is now supported and maintained by `Georepublic `__, `Paragon Corporation `__ and " -"a broad user community." -msgstr "" -"pgRouting 是 `PostGIS `__ 和 `PostgreSQL `__ 地理空间数据库的扩展,并添加了路由和其他网络分析功能。 " -"pgRouting的前身——pgDijkstra,由`Camptocamp `__ 的" -"Sylvain Pasche编写,后来被Orkney扩展并更名为pgRouting。 该项目现在得到了 " -"`Georepublic `__ 、`Paragon Corporation `__ 和广大用户社区的支持和维护。" +"As an undirected graph is required, the directed graph is transformed as " +"follows:" +msgstr "由于需要无向图,有向图变换如下:" -#, fuzzy msgid "" -"pgRouting is part of `OSGeo Community Projects `__ from the `OSGeo Foundation `__ and included on `OSGeoLive `__." -msgstr "" -"pgRouting 是 `OSGeo 基金会 `__ `OSGeo 社区项目 " -"`__ 的一部分,并包含在 " -"`OSGeoLive `__ 中。" +"edges `(u, v)` and `(v, u)` is considered to be the same edge (denoted `(u, " +"v)`" +msgstr "边 `(u, v)` 和 `(v, u)`被认为是相同的边(表示为 `(u, v)`" -msgid "Licensing" -msgstr "许可" +msgid "if ``agg_cost`` differs between one or more instances of edge `(u, v)`" +msgstr "如果 ``agg_cost`` 在边`(u, v)` 的一个或多个实例之间不同" -msgid "The following licenses can be found in pgRouting:" -msgstr "可以在 pgRouting 中找到以下许可证:" +msgid "" +"The minimum value of the ``agg_cost`` all instances of edge `(u, v)` is " +"going to be considered as the ``agg_cost`` of edge `(u, v)`" +msgstr "" +"边 `(u, v)` 的所有实例的 ``agg_cost`` 最小值将被视为边 `(u, v)` 的 " +"``agg_cost``" -msgid "**License**" -msgstr "**许可**" +msgid "" +"Some (or all) traveling costs on edges will still might not obey the " +"triangle inequality." +msgstr "边上的一些(或全部)旅行成本仍然可能不遵守三角不等式。" -msgid "GNU General Public License v2.0 or later" -msgstr "GNU 通用公共许可证 v2.0 或更高版本" +msgid "When the data is incomplete, but it is a connected graph:" +msgstr "当数据不完整,但是是连通图时:" -msgid "" -"Most features of pgRouting are available under `GNU General Public License " -"v2.0 or later `_." -msgstr "" -"pgRouting 的大多数功能都可以在` GNU 通用公共许可证 v2.0 或更高版本 `_ 下使用。" +msgid "the missing values will be calculated with dijkstra algorithm." +msgstr "缺失值将使用 dijkstra 算法计算。" -msgid "Boost Software License - Version 1.0" -msgstr "Boost 软件许可证 - 版本 1.0" +msgid "pgr_TSP(`Matrix SQL`_, ``[start_id, end_id]``)" +msgstr "pgr_TSP(`Matrix SQL`_, ``[start_id, end_id]``)" -msgid "" -"Some Boost extensions are available under `Boost Software License - Version " -"1.0 `_." -msgstr "" -"一些 Boost 扩展可根据` Boost 软件许可证 - 版本 1.0 获得 `_。" +msgid "Returns set of |tsp-result|" +msgstr "返回 |tsp-result| 的集合" -msgid "MIT-X License" -msgstr "MIT-X License" +msgid "OR EMTPY SET" +msgstr "OR EMTPY SET" -msgid "" -"Some code contributed by iMaptools.com is available under MIT-X license." -msgstr "iMaptools.com 贡献的一些代码可在 MIT-X 许可证下使用。" +msgid "Using :doc:`pgr_dijkstraCostMatrix` to generate the matrix information" +msgstr "使用 :doc:`pgr_dijkstraCostMatrix` 生成矩阵信息" msgid "" -"The pgRouting Manual is licensed under a `Creative Commons Attribution-Share " -"Alike 3.0 License `_." +"**Line 4** Vertices :math:`\\{2, 4, 13, 14\\}` are not included because they " +"are not connected." msgstr "" -"pgRouting 手册根据`知识共享署名-相同方式共享 3.0 许可证获得许可 `_。" +"**Line 4** 顶点 :math:`\\{2, 4, 13, 14\\}` 不包括在内,因为它们未连接。" -msgid "" -"In general license information should be included in the header of each " -"source file." -msgstr "一般来说,许可证信息应包含在每个源文件的标头中。" +msgid "`Matrix SQL`_ as described below" +msgstr "`Matrix SQL`_ 如下所述" -msgid "Contributors" -msgstr "贡献者" +msgid "``ANY-INTEGER``" +msgstr "``ANY-INTEGER``" -msgid "This Release Contributors" -msgstr "此版本贡献者" +msgid "``ANY-NUMERICAL``" +msgstr "``ANY-NUMERICAL``" -msgid "Individuals in this release v3.7.x (in alphabetical order)" -msgstr "在此版本 v3.7.x 中的个人贡献者(按字母顺序排列)" +msgid "Cost for going from start_vid to end_vid" +msgstr "从 start_vid 到 end_vid 的成本" -msgid "(Alphabetical order)" -msgstr "(按字母顺序排列)" +msgid "Returns SET OF ``(seq, node, cost, agg_cost)``" +msgstr "返回集合 ``(seq, node, cost, agg_cost)``" -msgid "Regina Obe, Vicky Vergara" -msgstr "Regina Obe, Vicky Vergara" +msgid "Row sequence." +msgstr "行顺序。" -msgid "" -"And all the people that give us a little of their time making comments, " -"finding issues, making pull requests etc. in any of our products: " -"osm2pgrouting, pgRouting, pgRoutingLayer, workshop." -msgstr "" -"还有所有为我们的产品(osm2pgrouting、pgRouting、pgRoutingLayer、workshop)提" -"供意见、发现问题、提出拉取请求等的人们。" +msgid "**node**" +msgstr "**node**" -msgid "Corporate Sponsors in this release (in alphabetical order)" -msgstr "本次发布中的企业赞助商(按字母顺序排列)" +msgid "Identifier of the node/coordinate/point." +msgstr "节点/坐标/点的标识符。" msgid "" -"These are corporate entities that have contributed developer time, hosting, " -"or direct monetary funding to the pgRouting project:" -msgstr "" -"这些是为 pgRouting 项目贡献了开发人员时间、托管或直接货币资金的公司实体:" +"Cost to traverse from the current ``node`` to the next ``node`` in the path " +"sequence." +msgstr "从路径序列中的当前 ``node``遍历到下一个``node`` 的成本。" -msgid "`OSGeo `__" -msgstr "`OSGeo `__" +msgid "``0`` for the last row in the tour sequence." +msgstr "``0`` 表示游览序列中的最后一行。" -msgid "`OSGeo UK `__" -msgstr "`OSGeo UK `__" +msgid "Aggregate cost from the ``node`` at ``seq = 1`` to the current node." +msgstr "从 ``seq = 1`` 的 ``node`` 到当前节点的总成本。" -msgid "`Google Summer of Code `__" -msgstr "`Google Summer of Code `__" +msgid "``0`` for the first row in the tour sequence." +msgstr "``0`` 表示游览序列中的第一行。" -msgid "`Paragon Corporation `__" -msgstr "`Paragon Corporation `__" +msgid "Start from vertex :math:`1`" +msgstr "从顶点 :math:`1` 开始" -msgid "Contributors Past & Present:" -msgstr "过去与现在的贡献者:" +msgid "**Line 6** ``start_vid => 1``" +msgstr "**Line 6** ``start_vid => 1``" -msgid "Individuals (in alphabetical order)" -msgstr "个人贡献者(按字母排序)" +msgid "Using points of interest to generate an asymetric matrix." +msgstr "使用兴趣点生成不对称矩阵。" + +msgid "To generate an asymmetric matrix:" +msgstr "生成非对称矩阵:" msgid "" -"Aasheesh Tiwari, Abhinav Jain, Aditya Pratap Singh, Adrien Berchet, Akio " -"Takubo, Andrea Nardelli, Anthony Tasca, Anton Patrushev, Aryan Gupta, Ashraf " -"Hossain, Ashish Kumar, Cayetano Benavent, Christian Gonzalez, Daniel Kastl, " -"Dave Potts, David Techer, Denis Rykov, Ema Miyawaki, Esteban Zimanyi, " -"Florian Thurkow, Frederic Junod, Gerald Fenoy, Gudesa Venkata Sai Akhil, " -"Hang Wu, Himanshu Raj, Imre Samu, Jay Mahadeokar, Jinfu Leng, Kai Behncke, " -"Kishore Kumar, Ko Nagase, Mahmoud Sakr, Manikata Kondeti, Mario Basa, Martin " -"Wiesenhaan, Maxim Dubinin, Maoguang Wang, Mohamed Bakli, Mohamed Zia, Mukul " -"Priya, Nitish Chauhan, Rajat Shinde, Razequl Islam, Regina Obe, Rohith " -"Reddy, Sarthak Agarwal, Shobhit Chaurasia, Sourabh Garg, Stephen Woodbridge, " -"Swapnil Joshi, Sylvain Housseman, Sylvain Pasche, Veenit Kumar, Vidhan Jain, " -"Virginia Vergara, Yige Huang" +"**Line 4** The ``side`` information of ``pointsOfInterset`` is ignored by " +"not including it in the query" msgstr "" -"Aasheesh Tiwari, Abhinav Jain, Aditya Pratap Singh, Adrien Berchet, Akio " -"Takubo, Andrea Nardelli, Anthony Tasca, Anton Patrushev, Aryan Gupta, Ashraf " -"Hossain, Ashish Kumar, Cayetano Benavent, Christian Gonzalez, Daniel Kastl, " -"Dave Potts, David Techer, Denis Rykov, Ema Miyawaki, Esteban Zimanyi, " -"Florian Thurkow, Frederic Junod, Gerald Fenoy, Gudesa Venkata Sai Akhil, " -"Hang Wu, Himanshu Raj, Imre Samu, Jay Mahadeokar, Jinfu Leng, Kai Behncke, " -"Kishore Kumar, Ko Nagase, Mahmoud Sakr, Manikata Kondeti, Mario Basa, Martin " -"Wiesenhaan, Maxim Dubinin, Maoguang Wang, Mohamed Bakli, Mohamed Zia, Mukul " -"Priya, Nitish Chauhan, Rajat Shinde, Razequl Islam, Regina Obe, Rohith " -"Reddy, Sarthak Agarwal, Shobhit Chaurasia, Sourabh Garg, Stephen Woodbridge, " -"Swapnil Joshi, Sylvain Housseman, Sylvain Pasche, Veenit Kumar, Vidhan Jain, " -"Virginia Vergara, Yige Huang" - -msgid "Corporate Sponsors (in alphabetical order)" -msgstr "企业赞助商(按字母顺序排列)" - -msgid "Camptocamp" -msgstr "Camptocamp" - -msgid "CSIS (University of Tokyo)" -msgstr "CSIS (University of Tokyo)" +"**Line 4** 通过未在查询中包括 ``pointsOfInterset`` 中的``side`` 信息而被忽略" -msgid "Georepublic" -msgstr "Georepublic" +msgid "**Line 6** Generating an asymetric matrix with ``directed => true``" +msgstr "**Line 6** 使用 ``directed => true`` 生成一个非对称矩阵" -msgid "Google Summer of Code" -msgstr "Google Summer of Code" +msgid "" +":math:`min(agg\\_cost(u, v), agg\\_cost(v, u))` is going to be considered as " +"the ``agg_cost``" +msgstr ":math:`min(agg\\_cost(u, v), agg\\_cost(v, u))` 将被视为 ``agg_cost``" -msgid "iMaptools" -msgstr "iMaptools" +msgid "" +"The solution that can be larger than *twice as long as the optimal tour* " +"because:" +msgstr "该解决方案的长度可能是*最佳行程的两倍以上*,因为:" -msgid "Leopark" -msgstr "Leopark" +msgid "Triangle inequality might not be satisfied." +msgstr "三角不等式可能不满足。" -msgid "Orkney" -msgstr "Orkney" +msgid "``start_id != 0 AND end_id != 0``" +msgstr "``start_id != 0 AND end_id != 0``" -msgid "OSGeo" -msgstr "OSGeo" +msgid "Connected incomplete data" +msgstr "连接不完整数据" -msgid "OSGeo UK" -msgstr "OSGeo UK" +msgid "" +"Using selected edges :math:`\\{2, 4, 5, 8, 9, 15\\}` the matrix is not " +"complete." +msgstr "使用选定的边 :math:`\\{2, 4, 5, 8, 9, 15\\}`,矩阵不完整。" -msgid "Paragon Corporation" -msgstr "Paragon Corporation" +msgid "" +"Cost value for :math:`17 \\rightarrow 10` do not exist on the matrix, but " +"the value used is taken from :math:`10 \\rightarrow 17`." +msgstr "" +"对于 :math:`17 \\rightarrow 10` 的成本值在矩阵中不存在,但使用的值是从 :math:" +"`10 \\rightarrow 17` 中获取的。" -msgid "Versaterm Inc." -msgstr "Versaterm Inc." +msgid "``pgr_TSPeuclidean``" +msgstr "``pgr_TSPeuclidean``" -msgid "More Information" -msgstr "更多信息" +#, fuzzy +msgid "``pgr_TSPeuclidean`` - Approximation using *metric* algorithm." +msgstr "``pgr_TSPeuclidean`` -使用*metric*算法进行近似。" +#, fuzzy msgid "" -"The latest software, documentation and news items are available at the " -"pgRouting web site https://pgrouting.org." +"Using `Boost: metric TSP approx `__" msgstr "" -"最新的软件、文档和新闻可在 pgRouting 网站 https://pgrouting.org 上获取。" +"`Boost 的 metric appro 的 metric 近似 `__" msgid "" -"PostgreSQL database server at the PostgreSQL main site https://www." -"postgresql.org." +"The Simulated Annealing Algorithm related parameters are ignored: " +"`max_processing_time`, `tries_per_temperature`, " +"`max_changes_per_temperature`, `max_consecutive_non_changes`, " +"`initial_temperature`, `final_temperature`, `cooling_factor`, `randomize`" msgstr "" -"PostgreSQL 数据库服务器位于 PostgreSQL 主站点 https://www.postgresql.org。" +"Simulated Annealing 算法相关参数被忽略: `max_processing_time`, " +"`tries_per_temperature`, `max_changes_per_temperature`, " +"`max_consecutive_non_changes`, `initial_temperature`, `final_temperature`, " +"`cooling_factor`, `randomize`" -msgid "PostGIS extension at the PostGIS project web site https://postgis.net." -msgstr "PostGIS 项目网站 https://postgis.net 上的 PostGIS 扩展。" +msgid "Version 3.0.0" +msgstr "版本3.0.0" -msgid "Boost C++ source libraries at https://www.boost.org." -msgstr "Boost C++ 源库位于 https://www.boost.org。" +msgid "Name change from pgr_eucledianTSP" +msgstr "pgr_eucledianTSP 的名称更改" -msgid ":doc:`migration`" -msgstr ":doc:`migration`" +#, fuzzy +msgid "New official function." +msgstr "新函数 official。" -msgid "pgr_KSP" -msgstr "pgr_KSP" +msgid "" +"Any duplicated identifier will be ignored. The coordinates that will be kept" +msgstr "任何重复的标识符都将被忽略。 将保留的坐标" -msgid "``pgr_KSP`` — Yen's algorithm for K shortest paths using Dijkstra." -msgstr "``pgr_KSP`` — Yen 使用 Dijkstra 计算 K 最短路径的算法。" +msgid "is arbitrarly." +msgstr "是任意的。" -msgid "Availability" -msgstr "可用性" +msgid "" +"The coordinates are quite similar for the same identifier, for example ::" +msgstr "对于相同的标识符,坐标非常相似,例如 ::" -msgid "Version 3.6.0" -msgstr "版本3.6.0" +msgid "" +"The coordinates are quite different for the same identifier, for example ::" +msgstr "对于相同的标识符,坐标有很大不同,例如::" -msgid "Result columns standarized to: |nksp-result|" -msgstr "结果列标准化为 |nksp-result|" +msgid "pgr_TSPeuclidean(`Coordinates SQL`_, ``[start_id, end_id]``)" +msgstr "pgr_TSPeuclidean(`Coordinates SQL`_, ``[start_id, end_id]``)" + +msgid "With default values" +msgstr "有默认值" -msgid "``pgr_ksp`` (One to One)" -msgstr "``pgr_ksp`` (一对一)" +msgid "`Coordinates SQL`_" +msgstr "`Coordinates SQL`_" -msgid "Added ``start_vid`` and ``end_vid`` result columns." -msgstr "增加 ``start_vid`` 和 ``end_vid`` 结果列。" +msgid "`Coordinates SQL`_ as described below" +msgstr "`Coordinates SQL`_ 如下所述" -msgid "New overload functions:" -msgstr "新的重载函数:" +msgid "Coordinates SQL" +msgstr "坐标SQL" -msgid "``pgr_ksp`` (One to Many)" -msgstr "``pgr_ksp`` (一对多)" +msgid "``x``" +msgstr "``x``" -msgid "``pgr_ksp`` (Many to One)" -msgstr "``pgr_ksp`` (多对一)" +msgid "X value of the coordinate." +msgstr "坐标的X值。" -msgid "``pgr_ksp`` (Many to Many)" -msgstr "``pgr_ksp`` (多对多)" +msgid "``y``" +msgstr "``y``" -msgid "``pgr_ksp`` (Combinations)" -msgstr "``pgr_ksp`` (组合)" +msgid "Y value of the coordinate." +msgstr "坐标的Y值。" -msgid "Version 2.1.0" -msgstr "版本2.1.0" +msgid "Test 29 cities of Western Sahara" +msgstr "测试西撒哈拉29个城市" -msgid "Signature change" -msgstr "签名变更" +msgid "" +"This example shows how to make performance tests using University of " +"Waterloo's `example data `__ using the 29 cities of `Western Sahara dataset `__" +msgstr "" +"此示例展示了如何使用Waterloo大学的 `示例数据 `__ (使用西撒哈拉 29 个城市的数据集 `__)进行性能测试" -msgid "Old signature no longer supported" -msgstr "不再支持旧签名" +msgid "Creating a table for the data and storing the data" +msgstr "创建数据表并存储数据" -msgid "Version 2.0.0" -msgstr "版本2.0.0" +msgid "Adding a geometry (for visual purposes)" +msgstr "添加几何图形(用于视觉目的)" -msgid "**Official** function" -msgstr "**官方** 函数" +msgid "Total tour cost" +msgstr "旅游总费用" msgid "" -"The K shortest path routing algorithm based on Yen's algorithm. \"K\" is the " -"number of shortest paths desired." -msgstr "基于Yen算法的K最短路径路由算法。 “K”是所需的最短路径的数量。" - -msgid "Signatures" -msgstr "签名" - -msgid "Summary" -msgstr "总结" +"Getting a total cost of the tour, compare the value with the length of an " +"optimal tour is 27603, given on the dataset" +msgstr "获取旅行的总成本,将该值与数据集上给出的最佳旅行长度 27603 进行比较" -msgid "pgr_KSP(`Edges SQL`_, **start vid**, **end vid**, **K**, [**options**])" -msgstr "" -"pgr_KSP(`Edges SQL`_, **start vid**, **end vid**, **K**, [**options**])" +msgid "Getting a geometry of the tour" +msgstr "获取游览的几何形状" -msgid "" -"pgr_KSP(`Edges SQL`_, **start vid**, **end vids**, **K**, [**options**])" -msgstr "" -"pgr_KSP(`Edges SQL`_, **start vid**, **end vids**, **K**, [**options**])" +msgid "Visual results" +msgstr "视觉效果" msgid "" -"pgr_KSP(`Edges SQL`_, **start vids**, **end vid**, **K**, [**options**])" +"Visualy, The first image is the `optimal solution `__ and the second image is the solution " +"obtained with ``pgr_TSPeuclidean``." msgstr "" -"pgr_KSP(`Edges SQL`_, **start vids**, **end vid**, **K**, [**options**])" +"从视觉上看,第一幅图像是 `最优解 `__ ,第二幅图像是使用 ``pgr_TSPeuclidean`` 获得的解。" -msgid "" -"pgr_KSP(`Edges SQL`_, **start vids**, **end vids**, **K**, [**options**])" -msgstr "" -"pgr_KSP(`Edges SQL`_, **start vids**, **end vids**, **K**, [**options**])" +msgid "``pgr_aStar``" +msgstr "``pgr_aStar``" -msgid "pgr_KSP(`Edges SQL`_, `Combinations SQL`_, **K**, [**options**])" -msgstr "pgr_KSP(`Edges SQL`_, `Combinations SQL`_, **K**, [**options**])" +msgid "``pgr_aStar`` — Shortest path using the A* algorithm." +msgstr "``pgr_aStar`` —使用 A* 算法的最短路径。" -msgid "**options:** ``[directed, heap_paths]``" -msgstr "**options:** ``[directed, heap_paths]``" +msgid "Combinations signature promoted to official." +msgstr "" -msgid "Returns set of |nksp-result|" -msgstr "返回集合 |nksp-result|" +msgid "Standarizing output columns to |short-generic-result|" +msgstr "标准输出列|short-generic-result|" -msgid "OR EMPTY SET" -msgstr "OR EMPTY SET" +#, fuzzy +msgid "pgr_aStar(One to One) added ``start_vid`` and ``end_vid`` columns." +msgstr "``pgr_aStar`` (`一对一`)增加了 ``start_vid`` 和 ``end_vid`` 列。" -msgid "Example" -msgstr "示例" +msgid "pgr_aStar(One to Many) added ``end_vid`` column." +msgstr "pgr_aStar(一对多)添加了 ``end_vid`` 列。" -msgid "Get 2 paths from :math:`6` to :math:`17` on a directed graph." -msgstr "在有向图上获取从 :math:`6` 到 :math:`17` 的 2 条路径。" +msgid "pgr_aStar(Many to One) added ``start_vid`` column." +msgstr "pgr_aStar(多对一)添加了 ``start_vid`` 列。" -msgid "" -"Get 2 paths from vertex :math:`6` to vertices :math:`\\{10, 17\\}` on a " -"directed graph." -msgstr "获取有向图上从顶点 :math:`6` 到顶点 :math:`\\{10, 17\\}` 的 2 条路径。" +msgid "Version 3.2.0" +msgstr "版本3.2.0" -msgid "" -"Get 2 paths from vertices :math:`\\{6, 1\\}` to vertex :math:`17` on a " -"directed graph." -msgstr "在有向图中得到从顶点 :math:`\\{6, 1\\}` 到顶点 :math:`17` 的2条路经。" +#, fuzzy +msgid "New proposed signature:" +msgstr "新拟议的签名:" -msgid "" -"Get 2 paths vertices :math:`\\{6, 1\\}` to vertices :math:`\\{10, 17\\}` on " -"a directed graph." +msgid "Function promoted to official." msgstr "" -"在有向图中得到从顶点 :math:`\\{6, 1\\}` 到顶点 :math:`\\{10, 17\\}` 的2条路" -"经。" - -msgid "Using a combinations table on an directed graph" -msgstr "在有向图上使用组合表" -msgid "The combinations table:" -msgstr "组合表:" +msgid "Version 2.4.0" +msgstr "版本2.4.0" -msgid "The query:" -msgstr "查询:" +msgid "pgr_aStar(One to Many)" +msgstr "pgr_aStar(一对多)" -msgid "Identifier of the destination vertex." -msgstr "目标顶点的标识符。" +msgid "pgr_aStar(Many to One)" +msgstr "pgr_aStar(多对一)" -msgid "**K**" -msgstr "**K**" +msgid "pgr_aStar(Many to Many)" +msgstr "pgr_aStar(多对多)" -msgid "Number of required paths." -msgstr "所需路径的数量。" +#, fuzzy +msgid "Signature change on pgr_aStar(One to One)" +msgstr "签名更改 pgr_aStar(一对一)" -msgid "KSP Optional parameters" -msgstr "KSP 可选参数" +msgid "" +"The results are equivalent to the union of the results of the `pgr_aStar(` " +"`One to One`_ `)` on the:" +msgstr "结果相当于 `pgr_aStar(` `一对一`_ `)` 结果的并集:" -msgid "``heap_paths``" -msgstr "``heap_paths``" +msgid "pgr_aStar(`Edges SQL`_, **start vid**, **end vid**, [**options**])" +msgstr "pgr_aStar(`Edges SQL`_, **start vid**, **end vid**, [**options**])" -msgid "When ``false`` Returns at most K paths." -msgstr "当 ``false`` 时返回最多 K 条路径。" +msgid "pgr_aStar(`Edges SQL`_, **start vid**, **end vids**, [**options**])" +msgstr "pgr_aStar(`Edges SQL`_, **start vid**, **end vids**, [**options**])" -msgid "When ``true`` all the calculated paths while processing are returned." -msgstr "当 ``true`` 时,返回处理时的所有计算路径。" +msgid "pgr_aStar(`Edges SQL`_, **start vids**, **end vid**, [**options**])" +msgstr "pgr_aStar(`Edges SQL`_, **start vids**, **end vid**, [**options**])" -msgid "" -"Roughly, when the shortest path has ``N`` edges, the heap will contain about " -"than ``N * K`` paths for small value of ``K`` and ``K > 5``." -msgstr "" -"粗略地说,当最短路径有 ``N`` 个边时,对于``K``值较小且``K > 5`` ,堆将包含大" -"约 ``N * K`` 条路径。" +msgid "pgr_aStar(`Edges SQL`_, **start vids**, **end vids**, [**options**])" +msgstr "pgr_aStar(`Edges SQL`_, **start vids**, **end vids**, [**options**])" -msgid "" -"Has value **1** for the first of a path from ``start_vid`` to ``end_vid``" -msgstr "从 ``start_vid`` 到 ``end_vid`` 的第一个路径的值为 **1**" +msgid "pgr_aStar(`Edges SQL`_, `Combinations SQL`_, [**options**])" +msgstr "pgr_aStar(`Edges SQL`_, `Combinations SQL`_, [**options**])" -msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``" -msgstr "从 ``start_vid`` 到 ``end_vid`` 路径中节点的标识符" +msgid "**options:** ``[directed, heuristic, factor, epsilon]``" +msgstr "**options:** ``[directed, heuristic, factor, epsilon]``" -msgid ":math:`0` for the last ``node`` of the path." -msgstr ":math:`0` 为路径的最后一个 ``node``。" +msgid "Returns set of |short-generic-result|" +msgstr "Returns set of |short-generic-result|" -msgid "Aggregate cost from **start vid** to ``node``." -msgstr "从 **start vid** 到 ``node`` 的总成本。" +msgid "Optional parameters are `named parameters` and have a default value." +msgstr "可选参数是`命名参数` 并具有默认值。" -msgid "Additional Examples" -msgstr "其他示例" +msgid "" +"From vertex :math:`6` to vertex :math:`12` on a **directed** graph with " +"heuristic :math:`2`" +msgstr "" +"在具有heuristic :math:`2` 的 **有向** 图上,从顶点 :math:`6` 到顶点 :math:" +"`12`" -msgid "Get 2 paths from :math:`6` to :math:`17` on an undirected graph" -msgstr "在无向图中获取从 :math:`6` 到 :math:`17` 的2条路径" +msgid "" +"From vertex :math:`6` to vertices :math:`\\{10, 12\\}` on a **directed** " +"graph with heuristic :math:`3` and factor :math:`3.5`" +msgstr "" +"在具有heuristic :math:`3` 和factor :math:`3.5` 的 **有向** 图上,从顶点 :" +"math:`6` 到顶点 :math:`\\{10, 12\\}`" -msgid "Also get the paths in the heap." -msgstr "还获取堆中的路径。" +msgid "" +"From vertices :math:`\\{6, 8\\}` to vertex :math:`10` on an **undirected** " +"graph with heuristic :math:`4`" +msgstr "" +"在具有heuristic :math:`4` 的 **无向** 图上,从顶点 :math:`\\{6, 8\\}` 到顶" +"点 :math:`10`" -msgid "Get 2 paths using combinations table on an undirected graph" -msgstr "使用无向图上的组合表获取 2 条路径" +msgid "" +"From vertices :math:`\\{6, 8\\}` to vertices :math:`\\{10, 12\\}` on a " +"**directed** graph with factor :math:`0.5`" +msgstr "" +"在具有factor :math:`0.5` 的 **有向** 图上,从顶点 :math:`\\{6, 8\\}` 到顶点 :" +"math:`\\{10, 12\\}`" msgid "" -"Get 2 paths from vertices :math:`\\{6, 1\\}` to vertex :math:`17` on a " -"undirected graph." -msgstr "在无向图中获取从顶点 :math:`\\{6, 1\\}` 到顶点 :math:`17` 的2条路径。" +"Using a combinations table on a **directed** graph with factor :math:`0.5`." +msgstr "在 **有向** 图上使用组合表,且使用factor :math:`0.5`。" -msgid "https://en.wikipedia.org/wiki/K_shortest_path_routing" -msgstr "https://en.wikipedia.org/wiki/K_shortest_path_routing" +msgid "Example 1" +msgstr "示例1" -msgid "``pgr_TSP``" -msgstr "``pgr_TSP``" +msgid "Demonstration of repeated values are ignored, and result is sorted." +msgstr "演示中重复的值被忽略,且结果被排序。" -msgid "``pgr_TSP`` - Aproximation using *metric* algorithm." -msgstr "``pgr_TSP`` -使用*metric*算法的近似方法。" +msgid "Example 2" +msgstr "示例2" -msgid "Availability:" -msgstr "可用性:" +msgid "Making **start vids** the same as **end vids**." +msgstr "使 **start vids** 与 **end vids** 相同。" -msgid "Version 3.2.1" -msgstr "版本3.2.1" +msgid "Example 3" +msgstr "示例3" -msgid "" -"Metric Algorithm from `Boost library `__" -msgstr "" -"`Boost库 `__ 中" -"的度量算法" +msgid "Manually assigned vertex combinations." +msgstr "手动指定的顶点组合。" -msgid "Simulated Annealing Algorithm no longer supported" -msgstr "Simulated Annealing算法不再受支持" +msgid "``pgr_aStarCost``" +msgstr "``pgr_aStarCost``" msgid "" -"The Simulated Annealing Algorithm related parameters are ignored: " -"max_processing_time, tries_per_temperature, max_changes_per_temperature, " -"max_consecutive_non_changes, initial_temperature, final_temperature, " -"cooling_factor, randomize" -msgstr "" -"Simulated Annealing算法相关参数被忽略:max_processing_time、" -"tries_per_temper、max_changes_per_tempere、max_consecutive_non_changes、" -"initial_temper、final_temper、cooling_factor、randomize" +"``pgr_aStarCost`` - Total cost of the shortest path using the A* algorithm." +msgstr "``pgr_aStarCost`` - 使用 A* 算法计算最短路径的总成本。" -msgid "Version 2.3.0" -msgstr "版本2.3.0" +msgid "New proposed function." +msgstr "新提议的函数。" msgid "" -"Can be Used with :doc:`costMatrix-category` functions preferably with " -"`directed => false`." -msgstr "" -"可以与 :doc:`costMatrix-category` 函数一起使用,最好使用 `directed => " -"false`。" - -msgid "With ``directed => false``" -msgstr "使用 ``directed => false``" +"The ``pgr_aStarCost`` function sumarizes of the cost of the shortest path " +"using the A* algorithm." +msgstr "``pgr_aStarCost`` 函数总结了使用 A* 算法计算最短路径的成本。" -msgid "Will generate a graph that:" -msgstr "将生成一个图:" +msgid "" +"Let be the case the values returned are stored in a table, so the unique " +"index would be the pair: `(start_vid, end_vid)`" +msgstr "假设返回的值存储在表中,因此唯一索引将是一对:`(start_vid, end_vid)`" -msgid "is undirected" -msgstr "是无向的" +msgid "For undirected graphs, the results are symmetric." +msgstr "对于无向图,结果是对称的。" -msgid "is fully connected (As long as the graph has one component)" -msgstr "是完全连接的(只要图有一个分量)" +msgid "The returned values are ordered in ascending order:" +msgstr "返回值按升序排列:" -msgid "all traveling costs on edges obey the triangle inequality." -msgstr "所有边上的旅行成本都遵循三角不等式。" +msgid "`start_vid` ascending" +msgstr "`start_vid` 升序" -msgid "When ``start_vid = 0 OR end_vid = 0``" -msgstr "当 ``start_vid = 0 OR end_vid = 0``" +msgid "`end_vid` ascending" +msgstr "`end_vid` 升序" -msgid "" -"The solutions generated is garanteed to be *twice as long as the optimal " -"tour in the worst case*" -msgstr "生成的解决方案保证是*最坏情况下最优路径时间的两倍*" +msgid "pgr_aStarCost(`Edges SQL`_, **start vid**, **end vid**, [**options**])" +msgstr "pgr_aStarCost(`Edges SQL`_, **start vid**, **end vid**, [**options**])" -msgid "When ``start_vid != 0 AND end_vid != 0 AND start_vid != end_vid``" -msgstr "当 ``start_vid != 0 AND end_vid != 0 AND start_vid != end_vid``" +msgid "pgr_aStarCost(`Edges SQL`_, **start vid**, **end vids**, [**options**])" +msgstr "" +"pgr_aStarCost(`Edges SQL`_, **start vid**, **end vids**, [**options**])" + +msgid "pgr_aStarCost(`Edges SQL`_, **start vids**, **end vid**, [**options**])" +msgstr "" +"pgr_aStarCost(`Edges SQL`_, **start vids**, **end vid**, [**options**])" msgid "" -"It is **not garanteed** that the solution will be, in the worse case, twice " -"as long as the optimal tour, due to the fact that `end_vid` is forced to be " -"in a fixed position." +"pgr_aStarCost(`Edges SQL`_, **start vids**, **end vids**, [**options**])" msgstr "" -"在最坏情况下, **不能保证** 解决方案将是最优路径的两倍长,因为 `end_vid` 被强" -"制设置在固定位置。" +"pgr_aStarCost(`Edges SQL`_, **start vids**, **end vids**, [**options**])" -msgid "With ``directed => true``" -msgstr "当 ``directed => true``" +msgid "pgr_aStarCost(`Edges SQL`_, `Combinations SQL`_, [**options**])" +msgstr "pgr_aStarCost(`Edges SQL`_, `Combinations SQL`_, [**options**])" -msgid "" -"It is **not garanteed** that the solution will be, in the worse case, twice " -"as long as the optimal tour" -msgstr "**不能保证** 在最坏情况下解决方案将是最优路径的两倍长" +msgid "Returns set of |matrix-result|" +msgstr "返回 |matrix-result| 的集合" -msgid "is directed" -msgstr "有向" +msgid "pgr_aStarCost(`Edges SQL`_, **start vids**, **end vids**, [options])" +msgstr "pgr_aStarCost(`Edges SQL`_, **start vids**, **end vids**, [options])" -msgid "" -"some (or all) traveling costs on edges might not obey the triangle " -"inequality." -msgstr "某些(或全部)边上的旅行成本可能不满足三角不等式。" +msgid "``pgr_aStarCostMatrix``" +msgstr "``pgr_aStarCostMatrix``" msgid "" -"As an undirected graph is required, the directed graph is transformed as " -"follows:" -msgstr "由于需要无向图,有向图变换如下:" +"``pgr_aStarCostMatrix`` - Calculates the a cost matrix using :doc:" +"`pgr_aStar`." +msgstr "``pgr_aStarCostMatrix`` - 使用 :doc:`pgr_aStar` 计算成本矩阵。" -msgid "" -"edges `(u, v)` and `(v, u)` is considered to be the same edge (denoted `(u, " -"v)`" -msgstr "边 `(u, v)` 和 `(v, u)`被认为是相同的边(表示为 `(u, v)`" +msgid "Using internaly the :doc:`pgr_aStar` algorithm" +msgstr "内部使用 :doc:`pgr_aStar` 算法" -msgid "if ``agg_cost`` differs between one or more instances of edge `(u, v)`" -msgstr "如果 ``agg_cost`` 在边`(u, v)` 的一个或多个实例之间不同" +msgid "Returns a cost matrix." +msgstr "返回成本矩阵。" -msgid "" -"The minimum value of the ``agg_cost`` all instances of edge `(u, v)` is " -"going to be considered as the ``agg_cost`` of edge `(u, v)`" -msgstr "" -"边 `(u, v)` 的所有实例的 ``agg_cost`` 最小值将被视为边 `(u, v)` 的 " -"``agg_cost``" +msgid "No ordering is performed" +msgstr "不进行排序" -msgid "" -"Some (or all) traveling costs on edges will still might not obey the " -"triangle inequality." -msgstr "边上的一些(或全部)旅行成本仍然可能不遵守三角不等式。" +msgid "let `v` and `u` are nodes on the graph:" +msgstr "设`v` 和 `u` 是图上的节点:" -msgid "When the data is incomplete, but it is a connected graph:" -msgstr "当数据不完整,但是是连通图时:" +msgid "when there is no path from `v` to `u`:" +msgstr "当没有从 `v` 到 `u` 的路径时:" -msgid "the missing values will be calculated with dijkstra algorithm." -msgstr "缺失值将使用 dijkstra 算法计算。" +msgid "cost from `v` to `u` is :math:`\\inf`" +msgstr "从 `v` 到 `u` 的成本是 :math:`\\inf`" -msgid "pgr_TSP(`Matrix SQL`_, ``[start_id, end_id]``)" -msgstr "pgr_TSP(`Matrix SQL`_, ``[start_id, end_id]``)" +msgid "when :math:`v = u` then" +msgstr "当 :math:`v = u` 时" -msgid "Returns set of |tsp-result|" -msgstr "返回 |tsp-result| 的集合" +msgid "cost from `v` to `u` is :math:`0`" +msgstr "从 `v` 到 `u` 的成本是 :math:`0`" -msgid "OR EMTPY SET" -msgstr "OR EMTPY SET" +msgid "When the graph is **undirected** the cost matrix is symmetric" +msgstr "当图 **无向** 时,成本矩阵是对称的" -msgid "Using :doc:`pgr_dijkstraCostMatrix` to generate the matrix information" -msgstr "使用 :doc:`pgr_dijkstraCostMatrix` 生成矩阵信息" +msgid "pgr_aStarCostMatrix(`Edges SQL`_, **start vids**, [**options**])" +msgstr "pgr_aStarCostMatrix(`Edges SQL`_, **start vids**, [**options**])" msgid "" -"**Line 4** Vertices :math:`\\{2, 4, 13, 14\\}` are not included because they " -"are not connected." +"Symmetric cost matrix for vertices :math:`\\{5, 6, 10, 15\\}` on an " +"**undirected** graph using heuristic :math:`2`" msgstr "" -"**Line 4** 顶点 :math:`\\{2, 4, 13, 14\\}` 不包括在内,因为它们未连接。" +"在 **无向** 图上,使用heuristic :math:`2`,对顶点 :math:`\\{5, 6, 10, 15\\}` " +"创建对称的成本矩阵" -msgid "`Matrix SQL`_ as described below" -msgstr "`Matrix SQL`_ 如下所述" +msgid "Use with :doc:`pgr_TSP`" +msgstr "使用 :doc:`pgr_TSP`" -msgid "``ANY-INTEGER``" -msgstr "``ANY-INTEGER``" +msgid "``pgr_alphaShape``" +msgstr "``pgr_alphaShape``" -msgid "``ANY-NUMERICAL``" -msgstr "``ANY-NUMERICAL``" +msgid "``pgr_alphaShape`` — Polygon part of an alpha shape." +msgstr "``pgr_alphaShape`` — Alpha 形状的多边形部分。" -msgid "Cost for going from start_vid to end_vid" -msgstr "从 start_vid 到 end_vid 的成本" +msgid "Breaking change on signature" +msgstr "签名的重大更改" -msgid "Returns SET OF ``(seq, node, cost, agg_cost)``" -msgstr "返回集合 ``(seq, node, cost, agg_cost)``" +msgid "**Boost 1.54** & **Boost 1.55** are supported" +msgstr "**Boost 1.54** & **Boost 1.55** 被支持" -msgid "Row sequence." -msgstr "行顺序。" +msgid "**Boost 1.56+** is preferable" +msgstr "**Boost 1.56+** 更好" -msgid "**node**" -msgstr "**node**" +msgid "Boost Geometry is stable on Boost 1.56" +msgstr "Boost Geometry 在 Boost 1.56 上保持稳定" -msgid "Identifier of the node/coordinate/point." -msgstr "节点/坐标/点的标识符。" +msgid "Added alpha argument with default 0 (use optimal value)" +msgstr "添加了默认值为 0 的 alpha 参数(使用最佳值)" -msgid "" -"Cost to traverse from the current ``node`` to the next ``node`` in the path " -"sequence." -msgstr "从路径序列中的当前 ``node``遍历到下一个``node`` 的成本。" +msgid "Support to return multiple outer/inner ring" +msgstr "支持返回多个外/内圈" -msgid "``0`` for the last row in the tour sequence." -msgstr "``0`` 表示游览序列中的最后一行。" +msgid "Renamed from version 1.x" +msgstr "从版本1.X重命名" -msgid "Aggregate cost from the ``node`` at ``seq = 1`` to the current node." -msgstr "从 ``seq = 1`` 的 ``node`` 到当前节点的总成本。" +msgid "Support" +msgstr "支持" -msgid "``0`` for the first row in the tour sequence." -msgstr "``0`` 表示游览序列中的第一行。" +msgid "Returns the polygon part of an alpha shape." +msgstr "返回 alpha 形状的多边形部分。" -msgid "Start from vertex :math:`1`" -msgstr "从顶点 :math:`1` 开始" +msgid "Input is a *geometry* and returns a *geometry*" +msgstr "输入是*几何图形*并返回*几何图形*" -msgid "**Line 6** ``start_vid => 1``" -msgstr "**Line 6** ``start_vid => 1``" +msgid "Uses PostGis ST_DelaunyTriangles" +msgstr "使用 PostGis ST_DelaunyTriangles" -msgid "Using points of interest to generate an asymetric matrix." -msgstr "使用兴趣点生成不对称矩阵。" +msgid "" +"Instead of using CGAL's definition of `alpha` it use the ``spoon_radius``" +msgstr "它没有使用 CGAL 的`alpha`定义,而是使用 ``spoon_radius``" -msgid "To generate an asymmetric matrix:" -msgstr "生成非对称矩阵:" +msgid ":math:`spoon\\_radius = \\sqrt alpha`" +msgstr ":math:`spoon\\_radius = \\sqrt alpha`" msgid "" -"**Line 4** The ``side`` information of ``pointsOfInterset`` is ignored by " -"not including it in the query" +"A Triangle area is considered part of the alpha shape when :math:" +"`circumcenter\\ radius < spoon\\_radius`" msgstr "" -"**Line 4** 通过未在查询中包括 ``pointsOfInterset`` 中的``side`` 信息而被忽略" +"三角形的面积被认为是 alpha shape 的一部分,当且仅当 :math:`circumcenter\\ " +"radius < spoon\\_radius`" -msgid "**Line 6** Generating an asymetric matrix with ``directed => true``" -msgstr "**Line 6** 使用 ``directed => true`` 生成一个非对称矩阵" +msgid "The ``alpha`` parameter is the **spoon radius**" +msgstr "``alpha`` 参数是 **spoon radius**" msgid "" -":math:`min(agg\\_cost(u, v), agg\\_cost(v, u))` is going to be considered as " -"the ``agg_cost``" -msgstr ":math:`min(agg\\_cost(u, v), agg\\_cost(v, u))` 将被视为 ``agg_cost``" +"When the total number of points is less than 3, returns an EMPTY geometry" +msgstr "当总点数小于 3 时,返回 EMPTY 几何图形" + +msgid "pgr_alphaShape(**geometry**, [alpha])" +msgstr "pgr_alphaShape(**geometry**, [alpha])" + +msgid "RETURNS ``geometry``" +msgstr "RETURNS ``geometry``" msgid "" -"The solution that can be larger than *twice as long as the optimal tour* " -"because:" -msgstr "该解决方案的长度可能是*最佳行程的两倍以上*,因为:" +"passing a geometry collection with spoon radius :math:`1.5` using the return " +"variable ``geom``" +msgstr "传递一个带有 spoon 半径 :math:`1.5` 的几何集合,使用返回变量 \"geom\"" -msgid "Triangle inequality might not be satisfied." -msgstr "三角不等式可能不满足。" +msgid "**geometry**" +msgstr "**geometry**" -msgid "``start_id != 0 AND end_id != 0``" -msgstr "``start_id != 0 AND end_id != 0``" +msgid "``geometry``" +msgstr "``geometry``" -msgid "Connected incomplete data" -msgstr "连接不完整数据" +msgid "Geometry with at least :math:`3` points" +msgstr "至少包含 :math:`3` 个点的几何形状" -msgid "" -"Using selected edges :math:`\\{2, 4, 5, 8, 9, 15\\}` the matrix is not " -"complete." -msgstr "使用选定的边 :math:`\\{2, 4, 5, 8, 9, 15\\}`,矩阵不完整。" +msgid "``alpha``" +msgstr "``alpha``" -msgid "" -"Cost value for :math:`17 \\rightarrow 10` do not exist on the matrix, but " -"the value used is taken from :math:`10 \\rightarrow 17`." -msgstr "" -"对于 :math:`17 \\rightarrow 10` 的成本值在矩阵中不存在,但使用的值是从 :math:" -"`10 \\rightarrow 17` 中获取的。" +msgid "The radius of the spoon." +msgstr "spoon的半径。" -msgid "``pgr_TSPeuclidean``" -msgstr "``pgr_TSPeuclidean``" +msgid "Return Value" +msgstr "返回值" -msgid "``pgr_TSPeuclidean`` - Aproximation using *metric* algorithm." -msgstr "``pgr_TSPeuclidean`` -使用*metric*算法进行近似。" +msgid "Kind of geometry" +msgstr "几何类型" -msgid "" -"The Simulated Annealing Algorithm related parameters are ignored: " -"`max_processing_time`, `tries_per_temperature`, " -"`max_changes_per_temperature`, `max_consecutive_non_changes`, " -"`initial_temperature`, `final_temperature`, `cooling_factor`, `randomize`" -msgstr "" -"Simulated Annealing 算法相关参数被忽略: `max_processing_time`, " -"`tries_per_temperature`, `max_changes_per_temperature`, " -"`max_consecutive_non_changes`, `initial_temperature`, `final_temperature`, " -"`cooling_factor`, `randomize`" +msgid "GEOMETRY COLLECTION" +msgstr "GEOMETRY COLLECTION" -msgid "Version 3.0.0" -msgstr "版本3.0.0" +msgid "A Geometry collection of Polygons" +msgstr "多边形的几何集合" + +msgid ":doc:`pgr_drivingDistance`" +msgstr ":doc:`pgr_drivingDistance`" + +msgid "`ST_ConcaveHull `__" +msgstr "`ST_ConcaveHull `__" + +msgid "``pgr_analyzeGraph``" +msgstr "``pgr_analyzeGraph``" + +msgid "``pgr_analyzeGraph`` — Analyzes the network topology." +msgstr "``pgr_analyzeGraph`` —分析网络拓扑。" + +msgid "The function returns:" +msgstr "函数返回:" + +msgid "``OK`` after the analysis has finished." +msgstr "``OK`` 分析完成后。" -msgid "Name change from pgr_eucledianTSP" -msgstr "pgr_eucledianTSP 的名称更改" +msgid "``FAIL`` when the analysis was not completed due to an error." +msgstr "``FAIL`` 当分析因错误而未完成时。" -msgid "New **Official** function" -msgstr "**官方** 新函数" +msgid "pgr_analyzeGraph(**edge_table**, **tolerance**, [**options**])" +msgstr "pgr_analyzeGraph(**edge_table**, **tolerance**, [**options**])" -msgid "" -"Any duplicated identifier will be ignored. The coordinates that will be kept" -msgstr "任何重复的标识符都将被忽略。 将保留的坐标" +msgid "**options:** ``[the_geom, id, source, target, rows_where]``" +msgstr "**options:** ``[the_geom, id, source, target, rows_where]``" -msgid "is arbitrarly." -msgstr "是任意的。" +msgid "RETURNS ``VARCHAR``" +msgstr "RETURNS ``VARCHAR``" -msgid "" -"The coordinates are quite similar for the same identifier, for example ::" -msgstr "对于相同的标识符,坐标非常相似,例如 ::" +msgid "Prerequisites" +msgstr "先决条件" msgid "" -"The coordinates are quite different for the same identifier, for example ::" -msgstr "对于相同的标识符,坐标有很大不同,例如::" +"The edge table to be analyzed must contain a source column and a target " +"column filled with id's of the vertices of the segments and the " +"corresponding vertices table _vertices_pgr that stores the " +"vertices information." +msgstr "" +"待分析的边表必须包含源列和目标列,其中填充了线段顶点的id以及对应的存储顶点信" +"息的顶点表_vertices_pgr。" -#, fuzzy -msgid "pgr_TSPeuclidean(`Coordinates SQL`_, ``[start_id, end_id]``)" -msgstr "pgr_TSPeuclidean(`Coordinates SQL`_ , ``[start_id, end_id]``)" +msgid "Use :doc:`pgr_createVerticesTable` to create the vertices table." +msgstr "使用 :doc:`pgr_createVerticesTable` 建立顶点表。" -msgid "With default values" -msgstr "有默认值" +msgid "" +"Use :doc:`pgr_createTopology` to create the topology and the vertices table." +msgstr "使用 :doc:`pgr_createTopology` 建立拓扑和顶点表。" -msgid "`Coordinates SQL`_" -msgstr "`Coordinates SQL`_" +msgid "The analyze graph function accepts the following parameters:" +msgstr "分析图函数接受以下参数:" -msgid "`Coordinates SQL`_ as described below" -msgstr "`Coordinates SQL`_ 如下所述" +msgid "edge_table" +msgstr "edge_table" -msgid "Coordinates SQL" -msgstr "坐标SQL" +msgid "``text`` Network table name. (may contain the schema name as well)" +msgstr "``text`` 网络表的名称(可能包含模式名称)" -msgid "``x``" -msgstr "``x``" +msgid "tolerance" +msgstr "tolerance" -msgid "X value of the coordinate." -msgstr "坐标的X值。" +msgid "" +"``float8`` Snapping tolerance of disconnected edges. (in projection unit)" +msgstr "``float8`` 断开边的捕捉容差。 (以投影单位表示)" -msgid "``y``" -msgstr "``y``" +msgid "the_geom" +msgstr "the_geom" -msgid "Y value of the coordinate." -msgstr "坐标的Y值。" +msgid "" +"``text`` Geometry column name of the network table. Default value is " +"``the_geom``." +msgstr "``text``网络表的几何列名称。 默认值为``the_geom``。" -msgid "Test 29 cities of Western Sahara" -msgstr "测试西撒哈拉29个城市" +msgid "id" +msgstr "id" msgid "" -"This example shows how to make performance tests using University of " -"Waterloo's `example data `__ using the 29 cities of `Western Sahara dataset `__" -msgstr "" -"此示例展示了如何使用Waterloo大学的 `示例数据 `__ (使用西撒哈拉 29 个城市的数据集 `__)进行性能测试" +"``text`` Primary key column name of the network table. Default value is " +"``id``." +msgstr "``text`` 网络表的主键列名称。 默认值为``id``。" -msgid "Creating a table for the data and storing the data" -msgstr "创建数据表并存储数据" +msgid "source" +msgstr "source" -msgid "Adding a geometry (for visual purposes)" -msgstr "添加几何图形(用于视觉目的)" +msgid "" +"``text`` Source column name of the network table. Default value is " +"``source``." +msgstr "``text``网络表的Source列名称。 默认值为``source``。" -msgid "Total tour cost" -msgstr "旅游总费用" +msgid "target" +msgstr "target" msgid "" -"Getting a total cost of the tour, compare the value with the length of an " -"optimal tour is 27603, given on the dataset" -msgstr "获取旅行的总成本,将该值与数据集上给出的最佳旅行长度 27603 进行比较" - -msgid "Getting a geometry of the tour" -msgstr "获取游览的几何形状" +"``text`` Target column name of the network table. Default value is " +"``target``." +msgstr "``text``网络表的Target列名称。 默认值为 ``target``。" -msgid "Visual results" -msgstr "视觉效果" +msgid "rows_where" +msgstr "rows_where" msgid "" -"Visualy, The first image is the `optimal solution `__ and the second image is the solution " -"obtained with ``pgr_TSPeuclidean``." -msgstr "" -"从视觉上看,第一幅图像是 `最优解 `__ ,第二幅图像是使用 ``pgr_TSPeuclidean`` 获得的解。" +"``text`` Condition to select a subset or rows. Default value is ``true`` to " +"indicate all rows." +msgstr "``text`` 用于选择子集或行的条件。默认值为``true`` ,表示选择所有行。" -msgid ":doc:`sampledata` network." -msgstr ":doc:`sampledata` 网络。" +msgid "Uses the vertices table: _vertices_pgr." +msgstr "使用这个顶点表:_vertices_pgr。" -msgid "``pgr_aStar``" -msgstr "``pgr_aStar``" +msgid "Fills completely the ``cnt`` and ``chk`` columns of the vertices table." +msgstr "完全填充顶点表的 ``cnt`` 和``chk`` 列。" -msgid "``pgr_aStar`` — Shortest path using the A* algorithm." -msgstr "``pgr_aStar`` —使用 A* 算法的最短路径。" +msgid "" +"Returns the analysis of the section of the network defined by ``rows_where``" +msgstr "返回由 ``rows_where`` 定义的网络部分的分析结果" -msgid "Standarizing output columns to |short-generic-result|" -msgstr "标准输出列|short-generic-result|" +msgid "The vertices table is not found." +msgstr "未找到顶点表。" msgid "" -"``pgr_aStar`` (`One to One`_) added ``start_vid`` and ``end_vid`` columns." -msgstr "``pgr_aStar`` (`一对一`_) 增加 ``start_vid`` 和 ``end_vid`` 列." +"A required column of the Network table is not found or is not of the " +"appropriate type." +msgstr "未找到网络表所需的列或该列的类型不正确。" -msgid "``pgr_aStar`` (`One to Many`_) added ``end_vid`` column." -msgstr "``pgr_aStar`` (`一对多`_) 增加 ``end_vid`` 列." +msgid "The condition is not well formed." +msgstr "条件尚未形成。" -msgid "``pgr_aStar`` (`Many to One`_) added ``start_vid`` column." -msgstr "``pgr_aStar`` (`多对一`_) 增加 ``start_vid`` 列." +msgid "The names of source , target or id are the same." +msgstr "source 、 target 或 id 的名称相同。" -msgid "Version 3.2.0" -msgstr "版本3.2.0" +msgid "The SRID of the geometry could not be determined." +msgstr "无法确定几何图形的 SRID。" -msgid "New **proposed** signature:" -msgstr "新 **拟议** 的签名:" +msgid "The Vertices Table" +msgstr "顶点表" -msgid "``pgr_aStar`` (`Combinations`_)" -msgstr "``pgr_aStar`` (`组合`_)" +msgid "" +"The vertices table can be created with :doc:`pgr_createVerticesTable " +"` or :doc:`pgr_createTopology `" +msgstr "" +"顶点表可以使用 :doc:`pgr_createVerticesTable ` 或 :" +"doc:`pgr_createTopology ` 创建" -msgid "Version 2.4.0" -msgstr "版本2.4.0" +msgid "The structure of the vertices table is:" +msgstr "顶点表的结构为:" -msgid "New **Proposed** signatures:" -msgstr "新 **拟议** 签名:" +msgid "``bigint`` Identifier of the vertex." +msgstr "``bigint`` 顶点的标识符。" -msgid "``pgr_aStar`` (`One to Many`_)" -msgstr "``pgr_aStar`` (`一对多`_)" +msgid "cnt" +msgstr "cnt" -msgid "``pgr_aStar`` (`Many to One`_)" -msgstr "``pgr_aStar`` (`多对一`_)" +msgid "" +"``integer`` Number of vertices in the edge_table that reference this vertex." +msgstr "``integer`` edge_table 中引用该顶点的顶点数。" -msgid "``pgr_aStar`` (`Many to Many`_)" -msgstr "``pgr_aStar`` (`多对多`_)" +msgid "chk" +msgstr "chk" -msgid "Signature change on ``pgr_astar`` (`One to One`_)" -msgstr "签名更改 ``pgr_astar`` (`一对一`_)" +msgid "``integer`` Indicator that the vertex might have a problem." +msgstr "``integer`` 指示顶点可能有问题。" -msgid "**Official** ``pgr_aStar`` (`One to One`_)" -msgstr "**官方** ``pgr_aStar`` (`一对一`_)" +msgid "ein" +msgstr "ein" msgid "" -"The results are equivalent to the union of the results of the `pgr_aStar(` " -"`One to One`_ `)` on the:" -msgstr "结果相当于 `pgr_aStar(` `一对一`_ `)` 结果的并集:" +"``integer`` Number of vertices in the edge_table that reference this vertex " +"as incoming. See :doc:`pgr_analyzeOneWay `." +msgstr "" +"``integer`` edge_table 中引用该顶点作为传入的顶点数。 请参阅 :doc:" +"`pgr_analyzeOneWay `。" -msgid "pgr_aStar(`Edges SQL`_, **start vid**, **end vid**, [**options**])" -msgstr "pgr_aStar(`Edges SQL`_, **start vid**, **end vid**, [**options**])" +msgid "eout" +msgstr "eout" -msgid "pgr_aStar(`Edges SQL`_, **start vid**, **end vids**, [**options**])" -msgstr "pgr_aStar(`Edges SQL`_, **start vid**, **end vids**, [**options**])" +msgid "" +"``integer`` Number of vertices in the edge_table that reference this vertex " +"as outgoing. See :doc:`pgr_analyzeOneWay `." +msgstr "" +"``integer`` Edge_table 中引用该顶点作为传出的顶点数。 请参阅 :doc:" +"`pgr_analyzeOneWay `。" -msgid "pgr_aStar(`Edges SQL`_, **start vids**, **end vid**, [**options**])" -msgstr "pgr_aStar(`Edges SQL`_, **start vids**, **end vid**, [**options**])" +msgid "``geometry`` Point geometry of the vertex." +msgstr "``geometry`` 顶点的点几何。" -msgid "pgr_aStar(`Edges SQL`_, **start vids**, **end vids**, [**options**])" -msgstr "pgr_aStar(`Edges SQL`_, **start vids**, **end vids**, [**options**])" +msgid "Usage when the edge table's columns MATCH the default values:" +msgstr "当边表的列与默认值匹配时的用法:" -msgid "pgr_aStar(`Edges SQL`_, `Combinations SQL`_, [**options**])" -msgstr "pgr_aStar(`Edges SQL`_, `Combinations SQL`_, [**options**])" +msgid "The simplest way to use pgr_analyzeGraph is:" +msgstr "使用 pgr_analyzeGraph 最简单的方法是:" -msgid "**options:** ``[directed, heuristic, factor, epsilon]``" -msgstr "**options:** ``[directed, heuristic, factor, epsilon]``" +msgid "Arguments are given in the order described in the parameters:" +msgstr "参数按照参数中描述的顺序给出:" -msgid "Returns set of |short-generic-result|" -msgstr "Returns set of |short-generic-result|" +msgid "We get the same result as the simplest way to use the function." +msgstr "我们得到与使用该函数的最简单方法相同的结果。" -msgid "Optional parameters are `named parameters` and have a default value." -msgstr "可选参数是`命名参数` 并具有默认值。" +msgid "An error would occur when" +msgstr "错误将会发生,当" -msgid "" -"From vertex :math:`6` to vertex :math:`12` on a **directed** graph with " -"heuristic :math:`2`" -msgstr "" -"在具有heuristic :math:`2` 的 **有向** 图上,从顶点 :math:`6` 到顶点 :math:" -"`12`" +msgid "the arguments are not given in the appropriate order:" +msgstr "参数未按适当的顺序给出:" msgid "" -"From vertex :math:`6` to vertices :math:`\\{10, 12\\}` on a **directed** " -"graph with heuristic :math:`3` and factor :math:`3.5`" +"In this example, the column ``id`` of the table ``mytable`` is passed to the " +"function as the geometry column, and the geometry column ``the_geom`` is " +"passed to the function as the id column." msgstr "" -"在具有heuristic :math:`3` 和factor :math:`3.5` 的 **有向** 图上,从顶点 :" -"math:`6` 到顶点 :math:`\\{10, 12\\}`" +"在此示例中,表 ``mytable`` 的列 ``id`` 作为几何列传递给函数,几何列 " +"``the_geom`` 作为 id 列传递给函数。" -msgid "" -"From vertices :math:`\\{6, 8\\}` to vertex :math:`10` on an **undirected** " -"graph with heuristic :math:`4`" -msgstr "" -"在具有heuristic :math:`4` 的 **无向** 图上,从顶点 :math:`\\{6, 8\\}` 到顶" -"点 :math:`10`" +msgid "When using the named notation" +msgstr "当使用命名符号时" -msgid "" -"From vertices :math:`\\{6, 8\\}` to vertices :math:`\\{10, 12\\}` on a " -"**directed** graph with factor :math:`0.5`" -msgstr "" -"在具有factor :math:`0.5` 的 **有向** 图上,从顶点 :math:`\\{6, 8\\}` 到顶点 :" -"math:`\\{10, 12\\}`" +msgid "The order of the parameters do not matter:" +msgstr "参数的顺序并不重要:" msgid "" -"Using a combinations table on a **directed** graph with factor :math:`0.5`." -msgstr "在 **有向** 图上使用组合表,且使用factor :math:`0.5`。" +"Parameters defined with a default value can be omitted, as long as the value " +"matches the default:" +msgstr "定义有默认值的参数可以省略,只要该值与默认值匹配即可:" + +msgid "Selecting rows using rows_where parameter" +msgstr "使用 rows_where 参数选择行" -msgid "Example 1" -msgstr "示例1" +msgid "" +"Selecting rows based on the id. Displays the analysis a the section of the " +"network." +msgstr "根据 id 选择行。 显示网络部分的分析。" -msgid "Demonstration of repeated values are ignored, and result is sorted." -msgstr "演示中重复的值被忽略,且结果被排序。" +msgid "" +"Selecting the rows where the geometry is near the geometry of row with " +"``id`` = 5" +msgstr "选择几何形状接近 ``id`` = 5 的几何形状的行" -msgid "Example 2" -msgstr "示例2" +msgid "" +"Selecting the rows where the geometry is near the geometry of the row with " +"``gid`` =100 of the table ``othertable``." +msgstr "选择几何形状接近表 ``othertable`` 的``gid`` = 100 的行的几何形状的行。" -msgid "Making **start vids** the same as **end vids**." -msgstr "使 **start vids** 与 **end vids** 相同。" +msgid "Usage when the edge table's columns DO NOT MATCH the default values:" +msgstr "当边表的列与默认值不匹配时的用法:" -msgid "Example 3" -msgstr "示例3" +msgid "For the following table" +msgstr "对于下表" -msgid "Manually assigned vertex combinations." -msgstr "手动指定的顶点组合。" +msgid "Using positional notation:" +msgstr "使用位置符号:" -msgid "pgr_aStarCost" -msgstr "pgr_aStarCost" +msgid "" +"The arguments need to be given in the order described in the parameters:" +msgstr "参数需要按照参数中描述的顺序给出:" -#, fuzzy msgid "" -"``pgr_aStarCost`` - Total cost of the shortest path using the A* algorithm." -msgstr "``pgr_aStarCost`` -使用 A* 算法的最短路径的总成本。" +"An error would occur when the arguments are not given in the appropriate " +"order: In this example, the column ``gid`` of the table ``mytable`` is " +"passed to the function as the geometry column, and the geometry column " +"``mygeom`` is passed to the function as the id column." +msgstr "" +"如果未按适当的顺序给出参数,则会发生错误:在此示例中,表 ``mytable`` 的列 " +"``gid``作为几何列传递给函数,几何列 ``mygeom`` 作为 id 列传递给函数 。" -msgid "``pgr_aStarCost`` (`Combinations`_)" -msgstr "``pgr_aStarCost`` (`组合`_)" +msgid "" +"In this scenario omitting a parameter would create an error because the " +"default values for the column names do not match the column names of the " +"table." +msgstr "在这种情况下,省略参数会产生错误,因为列名的默认值与表的列名不匹配。" -msgid "New **proposed** function" -msgstr "新 **拟议** 函数" +msgid "Selecting rows based on the id." +msgstr "根据 id 选择行。" -#, fuzzy msgid "" -"The ``pgr_aStarCost`` function sumarizes of the cost of the shortest path " -"using the A* algorithm." -msgstr "``pgr_aStarCost`` 函数使用 A* 算法汇总最短路径的成本。" +"Selecting the rows WHERE the geometry is near the geometry of row with " +"``id`` =5 ." +msgstr "选择那些几何与具有 ``id`` = 5的行的几何接近的行。" msgid "" -"Let be the case the values returned are stored in a table, so the unique " -"index would be the pair: `(start_vid, end_vid)`" -msgstr "假设返回的值存储在表中,因此唯一索引将是一对:`(start_vid, end_vid)`" +"Selecting the rows WHERE the geometry is near the place='myhouse' of the " +"table ``othertable``. (note the use of quote_literal)" +msgstr "" +"选择几何图形靠近表 ``othertable`` 的 place='myhouse' 的行。 (注意 " +"quote_literal 的使用)" -msgid "For undirected graphs, the results are symmetric." -msgstr "对于无向图,结果是对称的。" +msgid ":doc:`pgr_analyzeOneWay`" +msgstr ":doc:`pgr_analyzeOneWay`" -msgid "The returned values are ordered in ascending order:" -msgstr "返回值按升序排列:" +msgid ":doc:`pgr_createVerticesTable`" +msgstr ":doc:`pgr_createVerticesTable`" -msgid "`start_vid` ascending" -msgstr "`start_vid` 升序" +msgid ":doc:`pgr_nodeNetwork` to create nodes to a not noded edge table." +msgstr ":doc:`pgr_nodeNetwork` 创建节点到非节点边表。" -msgid "`end_vid` ascending" -msgstr "`end_vid` 升序" +msgid "``pgr_analyzeOneWay``" +msgstr "``pgr_analyzeOneWay``" -msgid "pgr_aStarCost(`Edges SQL`_, **start vid**, **end vid**, [**options**])" -msgstr "pgr_aStarCost(`Edges SQL`_, **start vid**, **end vid**, [**options**])" +msgid "" +"``pgr_analyzeOneWay`` — Analyzes oneway Sstreets and identifies flipped " +"segments." +msgstr "``pgr_analyzeOneWay`` — 分析单向街道并识别翻转路段。" -msgid "pgr_aStarCost(`Edges SQL`_, **start vid**, **end vids**, [**options**])" +msgid "" +"This function analyzes oneway streets in a graph and identifies any flipped " +"segments." +msgstr "该函数分析图中的单向街道并识别任何翻转的路段。" + +msgid "" +"The analyses of one way segments is pretty simple but can be a powerful " +"tools to identifying some the potential problems created by setting the " +"direction of a segment the wrong way. A node is a `source` if it has edges " +"the exit from that node and no edges enter that node. Conversely, a node is " +"a `sink` if all edges enter the node but none exit that node. For a `source` " +"type node it is logically impossible to exist because no vehicle can exit " +"the node if no vehicle and enter the node. Likewise, if you had a `sink` " +"node you would have an infinite number of vehicle piling up on this node " +"because you can enter it but not leave it." msgstr "" -"pgr_aStarCost(`Edges SQL`_, **start vid**, **end vids**, [**options**])" +"单向路段的分析非常简单,但可以成为一种强大的工具,可以识别由于错误地设置路段" +"方向而产生的一些潜在问题。 如果一个节点有从该节点出口的边并且没有边进入该节" +"点,则该节点是`source` 。 相反,如果所有边都进入该节点但没有一条边退出该节" +"点,则该节点是`sink`。 对于`source` 类型节点来说,逻辑上不可能存在,因为如果" +"没有车辆进入该节点,则任何车辆都无法离开该节点。 同样,如果您有一个`sink`节" +"点,那么您将在该节点上堆积无限数量的车辆,因为您可以进入它但不能离开它。" -msgid "pgr_aStarCost(`Edges SQL`_, **start vids**, **end vid**, [**options**])" +msgid "" +"So why do we care if the are not feasible? Well if the direction of an edge " +"was reversed by mistake we could generate exactly these conditions. Think " +"about a divided highway and on the north bound lane one segment got entered " +"wrong or maybe a sequence of multiple segments got entered wrong or maybe " +"this happened on a round-about. The result would be potentially a `source` " +"and/or a `sink` node." msgstr "" -"pgr_aStarCost(`Edges SQL`_, **start vids**, **end vid**, [**options**])" +"那么我们为什么要关心这些是否不可行呢? 如果边的方向被错误地反转,我们就可以准" +"确地生成这些条件。 想象一下一条分开的高速公路,在北行车道上,有一个路段输入错" +"误,或者可能是一系列多个路段输入错误,或者这可能发生在环岛上。 结果可能是 " +"`source` 节点和/或`sink`节点。" msgid "" -"pgr_aStarCost(`Edges SQL`_, **start vids**, **end vids**, [**options**])" +"So by counting the number of edges entering and exiting each node we can " +"identify both `source` and `sink` nodes so that you can look at those areas " +"of your network to make repairs and/or report the problem back to your data " +"vendor." msgstr "" -"pgr_aStarCost(`Edges SQL`_, **start vids**, **end vids**, [**options**])" +"因此,通过计算进入和退出每个节点的边数,我们可以识别 `source` 节点和 `sink` " +"节点,以便您可以查看网络的这些区域以进行修复和/或将问题报告给数据供应商。" -msgid "pgr_aStarCost(`Edges SQL`_, `Combinations SQL`_, [**options**])" -msgstr "pgr_aStarCost(`Edges SQL`_, `Combinations SQL`_, [**options**])" +msgid "" +"pgr_analyzeOneWay(**geom_table**, **s_in_rules**, **s_out_rules**, " +"**t_in_rules**, **t_out_rules**, [**options**])" +msgstr "" +"pgr_analyzeOneWay(**geom_table**, **s_in_rules**, **s_out_rules**, " +"**t_in_rules**, **t_out_rules**, [**options**])" -msgid "Returns set of |matrix-result|" -msgstr "返回 |matrix-result| 的集合" +msgid "**options:** ``[oneway, source, target, two_way_if_null]``" +msgstr "**options:** ``[oneway, source, target, two_way_if_null]``" -msgid "pgr_aStarCost(`Edges SQL`_, **start vids**, **end vids**, [options])" -msgstr "pgr_aStarCost(`Edges SQL`_, **start vids**, **end vids**, [options])" +msgid "RETURNS ``TEXT``" +msgstr "RETURNS ``TEXT``" -msgid "``pgr_aStarCostMatrix``" -msgstr "``pgr_aStarCostMatrix``" +msgid "s_in_rules" +msgstr "s_in_rules" -msgid "" -"``pgr_aStarCostMatrix`` - Calculates the a cost matrix using :doc:" -"`pgr_aStar`." -msgstr "``pgr_aStarCostMatrix`` - 使用 :doc:`pgr_aStar` 计算成本矩阵。" +msgid "``text[]`` source node **in** rules" +msgstr "``text[]`` source节点 **输入** 规则" -msgid "Using internaly the :doc:`pgr_aStar` algorithm" -msgstr "内部使用 :doc:`pgr_aStar` 算法" +msgid "s_out_rules" +msgstr "s_out_rules" -msgid "Returns a cost matrix." -msgstr "返回成本矩阵。" +msgid "``text[]`` source node **out** rules" +msgstr "``text[]`` source节点 **输出** 规则" -msgid "No ordering is performed" -msgstr "不进行排序" +msgid "t_in_rules" +msgstr "t_in_rules" -msgid "let `v` and `u` are nodes on the graph:" -msgstr "设`v` 和 `u` 是图上的节点:" +msgid "``text[]`` target node **in** rules" +msgstr "``text[]`` target节点 **输入** 规则" -msgid "when there is no path from `v` to `u`:" -msgstr "当没有从 `v` 到 `u` 的路径时:" +msgid "t_out_rules" +msgstr "t_out_rules" -msgid "cost from `v` to `u` is :math:`\\inf`" -msgstr "从 `v` 到 `u` 的成本是 :math:`\\inf`" +msgid "``text[]`` target node **out** rules" +msgstr "``text[]`` target节点 **输出** 规则" -msgid "when :math:`v = u` then" -msgstr "当 :math:`v = u` 时" +msgid "oneway" +msgstr "oneway" -msgid "cost from `v` to `u` is :math:`0`" -msgstr "从 `v` 到 `u` 的成本是 :math:`0`" +msgid "" +"``text`` oneway column name name of the network table. Default value is " +"``oneway``." +msgstr "``text``oneway 列名,网络表的名称。 默认值为``oneway``。" -msgid "When the graph is **undirected** the cost matrix is symmetric" -msgstr "当图 **无向** 时,成本矩阵是对称的" +msgid "two_way_if_null" +msgstr "two_way_if_null" -msgid "pgr_aStarCostMatrix(`Edges SQL`_, **start vids**, [**options**])" -msgstr "pgr_aStarCostMatrix(`Edges SQL`_, **start vids**, [**options**])" +msgid "" +"``boolean`` flag to treat oneway NULL values as bi-directional. Default " +"value is ``true``." +msgstr "``boolean`` 将单向 NULL 值视为双向的标志。 默认值为 ``true``。" msgid "" -"Symmetric cost matrix for vertices :math:`\\{5, 6, 10, 15\\}` on an " -"**undirected** graph using heuristic :math:`2`" +"It is strongly recommended to use the named notation. See :doc:" +"`pgr_createVerticesTable` or :doc:`pgr_createTopology` for examples." msgstr "" -"在 **无向** 图上,使用heuristic :math:`2`,对顶点 :math:`\\{5, 6, 10, 15\\}` " -"创建对称的成本矩阵" - -msgid "Use with :doc:`pgr_TSP`" -msgstr "使用 :doc:`pgr_TSP`" +"强烈建议使用命名符号。 有关示例,请参阅 :doc:`pgr_createVerticesTable` 或 :" +"doc:`pgr_createTopology`。" -msgid "``pgr_alphaShape``" -msgstr "``pgr_alphaShape``" +msgid "" +"Fills completely the ``ein`` and ``eout`` columns of the vertices table." +msgstr "完全填充顶点表的 ``ein`` 和 ``eout`` 列。" -msgid "``pgr_alphaShape`` — Polygon part of an alpha shape." -msgstr "``pgr_alphaShape`` — Alpha 形状的多边形部分。" +msgid "The names of source , target or oneway are the same." +msgstr "source 、 target 或 oneway 的名称相同。" -msgid "Breaking change on signature" -msgstr "签名的重大更改" +msgid "" +"The rules are defined as an array of text strings that if match the " +"``oneway`` value would be counted as ``true`` for the source or target " +"**in** or **out** condition." +msgstr "" +"这些规则被定义为文本字符串数组,如果与 ``oneway`` 值匹配,则 source或 target " +"**输入** 或 **输出** 条件将被视为 ``true``。" -msgid "**Boost 1.54** & **Boost 1.55** are supported" -msgstr "**Boost 1.54** & **Boost 1.55** 被支持" +msgid "" +"The vertices table can be created with :doc:`pgr_createVerticesTable` or :" +"doc:`pgr_createTopology`" +msgstr "" +"顶点表可以使用 :doc:`pgr_createVerticesTable` 或 :doc:`pgr_createTopology` 创" +"建" -msgid "**Boost 1.56+** is preferable" -msgstr "**Boost 1.56+** 更好" +msgid "" +"``integer`` Number of vertices in the edge_table that reference this vertex. " +"See :doc:`pgr_analyzeGgraph `." +msgstr "" +"``integer`` edge_table 中引用该顶点的顶点数。 请参阅 :doc:`pgr_analyzeGgraph " +"`。" -msgid "Boost Geometry is stable on Boost 1.56" -msgstr "Boost Geometry 在 Boost 1.56 上保持稳定" +msgid "" +"``integer`` Indicator that the vertex might have a problem. See :doc:" +"`pgr_analyzeGraph `." +msgstr "" +"``integer`` 指示顶点可能有问题。 请参阅 :doc:`pgr_analyzeGraph " +"`。" -msgid "Added alpha argument with default 0 (use optimal value)" -msgstr "添加了默认值为 0 的 alpha 参数(使用最佳值)" +msgid "" +"``integer`` Number of vertices in the edge_table that reference this vertex " +"as incoming." +msgstr "``integer`` edge_table 中引用该顶点作为传入的顶点数。" -msgid "Support to return multiple outer/inner ring" -msgstr "支持返回多个外/内圈" +msgid "" +"``integer`` Number of vertices in the edge_table that reference this vertex " +"as outgoing." +msgstr "``integer`` Edge_table 中引用该顶点作为传出的顶点数。" -msgid "Renamed from version 1.x" -msgstr "从版本1.X重命名" +msgid ":doc:`pgr_analyzeGraph`" +msgstr ":doc:`pgr_analyzeGraph`" -msgid "Returns the polygon part of an alpha shape." -msgstr "返回 alpha 形状的多边形部分。" +msgid "``pgr_articulationPoints``" +msgstr "``pgr_articulationPoints``" -msgid "Input is a *geometry* and returns a *geometry*" -msgstr "输入是*几何图形*并返回*几何图形*" +msgid "" +"``pgr_articulationPoints`` - Return the articulation points of an undirected " +"graph." +msgstr "``pgr_articulationPoints`` - 返回无向图的连接点。" -msgid "Uses PostGis ST_DelaunyTriangles" -msgstr "使用 PostGis ST_DelaunyTriangles" +msgid "Result columns change: ``seq`` is removed" +msgstr "结果列更改:删除了 ``seq``" -msgid "" -"Instead of using CGAL's definition of `alpha` it use the ``spoon_radius``" -msgstr "它没有使用 CGAL 的`alpha`定义,而是使用 ``spoon_radius``" +msgid "Version 2.5.0" +msgstr "版本2.5.0" -msgid ":math:`spoon\\_radius = \\sqrt alpha`" -msgstr ":math:`spoon\\_radius = \\sqrt alpha`" +msgid "New experimental function." +msgstr "新实验功能。" msgid "" -"A Triangle area is considered part of the alpha shape when :math:" -"`circumcenter\\ radius < spoon\\_radius`" +"Those vertices that belong to more than one biconnected component are called " +"articulation points or, equivalently, cut vertices. Articulation points are " +"vertices whose removal would increase the number of connected components in " +"the graph. This implementation can only be used with an undirected graph." msgstr "" -"三角形的面积被认为是 alpha shape 的一部分,当且仅当 :math:`circumcenter\\ " -"radius < spoon\\_radius`" +"那些属于多于一个双连通分量的顶点被称为关节点,或者等效地称为割点。关节点是指" +"那些如果被移除,会增加图中连接分量数量的顶点。这个实现仅适用于无向图。" -msgid "The ``alpha`` parameter is the **spoon radius**" -msgstr "``alpha`` 参数是 **spoon radius**" +msgid "Works for **undirected** graphs." +msgstr "适用于 **无向** 图。" -msgid "" -"When the total number of points is less than 3, returns an EMPTY geometry" -msgstr "当总点数小于 3 时,返回 EMPTY 几何图形" +msgid "``node`` ascending" +msgstr "``node`` 升序" -msgid "pgr_alphaShape(**geometry**, [alpha])" -msgstr "pgr_alphaShape(**geometry**, [alpha])" +msgid "Running time: :math:`O(V + E)`" +msgstr "运行时间: :math:`O(V + E)`" -msgid "RETURNS ``geometry``" -msgstr "RETURNS ``geometry``" +msgid "pgr_articulationPoints(`Edges SQL`_)" +msgstr "pgr_articulationPoints(`Edges SQL`_)" -msgid "" -"passing a geometry collection with spoon radius :math:`1.5` using the return " -"variable ``geom``" -msgstr "传递一个带有 spoon 半径 :math:`1.5` 的几何集合,使用返回变量 \"geom\"" +msgid "Returns set of |result-node|" +msgstr "Returns set of |result-node|" -msgid "**geometry**" -msgstr "**geometry**" +msgid "The articulation points of the graph" +msgstr "图表的连接点" -msgid "``geometry``" -msgstr "``geometry``" +msgid "Nodes in red are the articulation points." +msgstr "红色节点是关节点。" -msgid "Geometry with at least :math:`3` points" -msgstr "至少包含 :math:`3` 个点的几何形状" +#, fuzzy +msgid "" +"`Boost: Biconnected components & articulation points `__" +msgstr "" +"Boost: `双连通分量和关节点 `__" -msgid "``alpha``" -msgstr "``alpha``" +msgid "" +"wikipedia: `Biconnected component `__" +msgstr "" +"维基百科: `双连通分量 `__" -msgid "The radius of the spoon." -msgstr "spoon的半径。" +msgid "``pgr_bdAstar``" +msgstr "``pgr_bdAstar``" -msgid "Return Value" -msgstr "返回值" +msgid "``pgr_bdAstar`` — Shortest path using the bidirectional A* algorithm." +msgstr "``pgr_bdAstar`` — 使用双向 A* 算法的最短路径。" -msgid "Kind of geometry" -msgstr "几何类型" +msgid "pgr_bdAstar(One to One) added ``start_vid`` and ``end_vid`` columns." +msgstr "pgr_bdAstar(一对一)增加了 ``start_vid`` 和``end_vid`` 列。" -msgid "GEOMETRY COLLECTION" -msgstr "GEOMETRY COLLECTION" +msgid "pgr_bdAstar(One to Many) added ``end_vid`` column." +msgstr "pgr_bdAstar(一对多)添加了``end_vid`` 列。" -msgid "A Geometry collection of Polygons" -msgstr "多边形的几何集合" +msgid "pgr_bdAstar(Many to One) added ``start_vid`` column." +msgstr "pgr_bdAstar(多对一)添加了``start_vid`` 列。" -msgid ":doc:`pgr_drivingDistance`" -msgstr ":doc:`pgr_drivingDistance`" +msgid "pgr_bdAstar(One to Many)" +msgstr "pgr_bdAstar(一对多)" -msgid "`ST_ConcaveHull `__" -msgstr "`ST_ConcaveHull `__" +msgid "pgr_bdAstar(Many to One)" +msgstr "pgr_bdAstar(多对一)" -msgid "pgr_analyzeGraph" -msgstr "pgr_analyzeGraph" +msgid "pgr_bdAstar(Many to Many)" +msgstr "pgr_bdAstar(多对多)" -msgid "``pgr_analyzeGraph`` — Analyzes the network topology." -msgstr "``pgr_analyzeGraph`` —分析网络拓扑。" +#, fuzzy +msgid "Signature change on pgr_bdAstar(One to One)" +msgstr "在 ``pgr_bdAstar`` (`一对一`_)上的签名更改" -msgid "The function returns:" -msgstr "函数返回:" +#, fuzzy +msgid "" +"The results are equivalent to the union of the results of the " +"pgr_bdAStar(One to One) on the:" +msgstr "结果相当于pgr_bdAStar(一对一) 结果的并集:" -msgid "``OK`` after the analysis has finished." -msgstr "``OK`` 分析完成后。" +msgid "pgr_bdAstar(`Edges SQL`_, **start vid**, **end vid**, [**options**])" +msgstr "pgr_bdAstar(`Edges SQL`_, **start vid**, **end vid**, [**options**])" -msgid "``FAIL`` when the analysis was not completed due to an error." -msgstr "``FAIL`` 当分析因错误而未完成时。" +msgid "pgr_bdAstar(`Edges SQL`_, **start vid**, **end vids**, [**options**])" +msgstr "pgr_bdAstar(`Edges SQL`_, **start vid**, **end vids**, [**options**])" -msgid "pgr_analyzeGraph(**edge_table**, **tolerance**, [**options**])" -msgstr "pgr_analyzeGraph(**edge_table**, **tolerance**, [**options**])" +msgid "pgr_bdAstar(`Edges SQL`_, **start vids**, **end vid**, [**options**])" +msgstr "pgr_bdAstar(`Edges SQL`_, **start vids**, **end vid**, [**options**])" -msgid "**options:** ``[the_geom, id, source, target, rows_where]``" -msgstr "**options:** ``[the_geom, id, source, target, rows_where]``" +msgid "pgr_bdAstar(`Edges SQL`_, **start vids**, **end vids**, [**options**])" +msgstr "pgr_bdAstar(`Edges SQL`_, **start vids**, **end vids**, [**options**])" -msgid "RETURNS ``VARCHAR``" -msgstr "RETURNS ``VARCHAR``" +msgid "pgr_bdAstar(`Edges SQL`_, `Combinations SQL`_, [**options**])" +msgstr "pgr_bdAstar(`Edges SQL`_, `Combinations SQL`_, [**options**])" -msgid "Prerequisites" -msgstr "先决条件" +msgid "``pgr_bdAstarCost``" +msgstr "``pgr_bdAstarCost``" msgid "" -"The edge table to be analyzed must contain a source column and a target " -"column filled with id's of the vertices of the segments and the " -"corresponding vertices table _vertices_pgr that stores the " -"vertices information." -msgstr "" -"待分析的边表必须包含源列和目标列,其中填充了线段顶点的id以及对应的存储顶点信" -"息的顶点表_vertices_pgr。" +"``pgr_bdAstarCost`` - Total cost of the shortest path using the " +"bidirectional A* algorithm." +msgstr "``pgr_bdAstarCost`` - 使用双向 A* 算法计算的最短路径的总成本。" -msgid "Use :doc:`pgr_createVerticesTable` to create the vertices table." -msgstr "使用 :doc:`pgr_createVerticesTable` 建立顶点表。" +msgid "" +"The ``pgr_bdAstarCost`` function sumarizes of the cost of the shortest path " +"using the bidirectional A* algorithm." +msgstr "``pgr_bdAstarCost`` 函数总结了使用双向 A* 算法计算最短路径的成本。" msgid "" -"Use :doc:`pgr_createTopology` to create the topology and the vertices table." -msgstr "使用 :doc:`pgr_createTopology` 建立拓扑和顶点表。" +"pgr_bdAstarCost(`Edges SQL`_, **start vid**, **end vid**, [**options**])" +msgstr "" +"pgr_bdAstarCost(`Edges SQL`_, **start vid**, **end vid**, [**options**])" -msgid "The analyze graph function accepts the following parameters:" -msgstr "分析图函数接受以下参数:" +msgid "" +"pgr_bdAstarCost(`Edges SQL`_, **start vid**, **end vids**, [**options**])" +msgstr "" +"pgr_bdAstarCost(`Edges SQL`_, **start vid**, **end vids**, [**options**])" -msgid "edge_table" -msgstr "edge_table" +msgid "" +"pgr_bdAstarCost(`Edges SQL`_, **start vids**, **end vid**, [**options**])" +msgstr "" +"pgr_bdAstarCost(`Edges SQL`_, **start vids**, **end vid**, [**options**])" -msgid "``text`` Network table name. (may contain the schema name as well)" -msgstr "``text`` 网络表的名称(可能包含模式名称)" +msgid "" +"pgr_bdAstarCost(`Edges SQL`_, **start vids**, **end vids**, [**options**])" +msgstr "" +"pgr_bdAstarCost(`Edges SQL`_, **start vids**, **end vids**, [**options**])" -msgid "tolerance" -msgstr "tolerance" +msgid "pgr_bdAstarCost(`Edges SQL`_, `Combinations SQL`_, [**options**])" +msgstr "pgr_bdAstarCost(`Edges SQL`_, `Combinations SQL`_, [**options**])" + +msgid "``pgr_bdAstarCostMatrix``" +msgstr "``pgr_bdAstarCostMatrix``" msgid "" -"``float8`` Snapping tolerance of disconnected edges. (in projection unit)" -msgstr "``float8`` 断开边的捕捉容差。 (以投影单位表示)" +"``pgr_bdAstarCostMatrix`` - Calculates the a cost matrix using :doc:" +"`pgr_aStar`." +msgstr "``pgr_bdAstarCostMatrix`` - 使用 :doc:`pgr_aStar` 计算成本矩阵。" -msgid "the_geom" -msgstr "the_geom" +msgid "Using internaly the :doc:`pgr_bdAstar` algorithm" +msgstr "内部使用 :doc:`pgr_bdAstar` 算法" -msgid "" -"``text`` Geometry column name of the network table. Default value is " -"``the_geom``." -msgstr "``text``网络表的几何列名称。 默认值为``the_geom``。" +msgid "pgr_bdAstarCostMatrix(`Edges SQL`_, **start vids**, [**options**])" +msgstr "pgr_bdAstarCostMatrix(`Edges SQL`_, **start vids**, [**options**])" -msgid "id" -msgstr "id" +msgid "``pgr_bdDijkstra``" +msgstr "``pgr_bdDijkstra``" msgid "" -"``text`` Primary key column name of the network table. Default value is " -"``id``." -msgstr "``text`` 网络表的主键列名称。 默认值为``id``。" +"``pgr_bdDijkstra`` — Returns the shortest path using Bidirectional Dijkstra " +"algorithm." +msgstr "``pgr_bdDijkstra`` — 返回使用双向 Dijkstra 算法计算的最短路径。" -msgid "source" -msgstr "source" +#, fuzzy +msgid "pgr_bdDijkstra(One to Many)" +msgstr "pgr_bdDijkstra(一对多)" -msgid "" -"``text`` Source column name of the network table. Default value is " -"``source``." -msgstr "``text``网络表的Source列名称。 默认值为``source``。" +msgid "pgr_bdDijkstra(Many to One)" +msgstr "pgr_bdDijkstra(多对一)" -msgid "target" -msgstr "target" +msgid "pgr_bdDijkstra(Many to Many)" +msgstr "pgr_bdDijkstra(多对多)" + +#, fuzzy +msgid "Signature change on pgr_bdDijsktra(One to One)" +msgstr "``pgr_bdDijsktra`` (`一对一`_)上的签名更改" msgid "" -"``text`` Target column name of the network table. Default value is " -"``target``." -msgstr "``text``网络表的Target列名称。 默认值为 ``target``。" +"pgr_bdDijkstra(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" +msgstr "" +"pgr_bdDijkstra(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" -msgid "rows_where" -msgstr "rows_where" +msgid "" +"pgr_bdDijkstra(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" +msgstr "" +"pgr_bdDijkstra(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" msgid "" -"``text`` Condition to select a subset or rows. Default value is ``true`` to " -"indicate all rows." -msgstr "``text`` 用于选择子集或行的条件。默认值为``true`` ,表示选择所有行。" +"pgr_bdDijkstra(`Edges SQL`_, **start vids**, **end vid**, [``directed``])" +msgstr "" +"pgr_bdDijkstra(`Edges SQL`_, **start vids**, **end vid**, [``directed``])" -msgid "Uses the vertices table: _vertices_pgr." -msgstr "使用这个顶点表:_vertices_pgr。" +msgid "" +"pgr_bdDijkstra(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" +msgstr "" +"pgr_bdDijkstra(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" -msgid "Fills completely the ``cnt`` and ``chk`` columns of the vertices table." -msgstr "完全填充顶点表的 ``cnt`` 和``chk`` 列。" +msgid "pgr_bdDijkstra(`Edges SQL`_, `Combinations SQL`_, [``directed``])" +msgstr "pgr_bdDijkstra(`Edges SQL`_, `Combinations SQL`_, [``directed``])" -msgid "" -"Returns the analysis of the section of the network defined by ``rows_where``" -msgstr "返回由 ``rows_where`` 定义的网络部分的分析结果" +msgid "Returns set of |old-generic-result|" +msgstr "返回 |old-generic-result| 的集合" -msgid "The vertices table is not found." -msgstr "未找到顶点表。" +msgid "Returns set of |result-1-1|" +msgstr "返回 |result-1-1| 的集合" -msgid "" -"A required column of the Network table is not found or is not of the " -"appropriate type." -msgstr "未找到网络表所需的列或该列的类型不正确。" +msgid "From vertex :math:`6` to vertex :math:`10` on a **directed** graph" +msgstr "在 **有向** 图上从顶点 :math:`6` 到顶点 :math:`10`" -msgid "The condition is not well formed." -msgstr "条件尚未形成。" +msgid "Returns set of |result-1-m|" +msgstr "返回 |result-1-m| 的集合" -msgid "The names of source , target or id are the same." -msgstr "source 、 target 或 id 的名称相同。" +msgid "" +"From vertex :math:`6` to vertices :math:`\\{10, 17\\}` on a **directed** " +"graph" +msgstr "在 **有向** 图上从顶点 :math:`6` 到顶点 :math:`\\{10, 17\\}`" -msgid "The SRID of the geometry could not be determined." -msgstr "无法确定几何图形的 SRID。" +msgid "Returns set of |result-m-1|" +msgstr "返回 |result-m-1| 的集合" -msgid "The Vertices Table" -msgstr "顶点表" +msgid "" +"From vertices :math:`\\{6, 1\\}` to vertex :math:`17` on a **directed** graph" +msgstr "在 **有向** 图上从顶点 :math:`\\{6, 1\\}` 到顶点 :math:`17`" msgid "" -"The vertices table can be created with :doc:`pgr_createVerticesTable " -"` or :doc:`pgr_createTopology `" -msgstr "" -"顶点表可以使用 :doc:`pgr_createVerticesTable ` 或 :" -"doc:`pgr_createTopology ` 创建" +"From vertices :math:`\\{6, 1\\}` to vertices :math:`\\{10, 17\\}` on an " +"**undirected** graph" +msgstr "在 **无向** 图上从顶点 :math:`\\{6, 1\\}` 到顶点 :math:`\\{10, 17\\}`" -msgid "The structure of the vertices table is:" -msgstr "顶点表的结构为:" +msgid "Using a combinations table on an **undirected** graph" +msgstr "在 **无向** 图上使用组合表" -msgid "``bigint`` Identifier of the vertex." -msgstr "``bigint`` 顶点的标识符。" +msgid "https://en.wikipedia.org/wiki/Bidirectional_search" +msgstr "https://en.wikipedia.org/wiki/Bidirectional_search" -msgid "cnt" -msgstr "cnt" +msgid "``pgr_bdDijkstraCost``" +msgstr "``pgr_bdDijkstraCost``" msgid "" -"``integer`` Number of vertices in the edge_table that reference this vertex." -msgstr "``integer`` edge_table 中引用该顶点的顶点数。" - -msgid "chk" -msgstr "chk" - -msgid "``integer`` Indicator that the vertex might have a problem." -msgstr "``integer`` 指示顶点可能有问题。" +"``pgr_bdDijkstraCost`` — Returns the shortest path's cost using " +"Bidirectional Dijkstra algorithm." +msgstr "``pgr_bdDijkstraCost`` —返回使用双向 Dijkstra 算法计算最短路径的成本。" -msgid "ein" -msgstr "ein" +msgid "" +"The ``pgr_bdDijkstraCost`` function sumarizes of the cost of the shortest " +"path using the bidirectional Dijkstra Algorithm." +msgstr "``pgr_bdDijkstraCost`` 函数使用双向 Dijkstra 算法汇总最短路径的成本。" msgid "" -"``integer`` Number of vertices in the edge_table that reference this vertex " -"as incoming. See :doc:`pgr_analyzeOneWay `." +"pgr_bdDijkstraCost(`Edges SQL`_, **start vid**, **end vid** , [``directed``])" msgstr "" -"``integer`` edge_table 中引用该顶点作为传入的顶点数。 请参阅 :doc:" -"`pgr_analyzeOneWay `。" +"pgr_bdDijkstraCost(`Edges SQL`_, **start vid**, **end vid** , [``directed``])" -msgid "eout" -msgstr "eout" +msgid "" +"pgr_bdDijkstraCost(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" +msgstr "" +"pgr_bdDijkstraCost(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" msgid "" -"``integer`` Number of vertices in the edge_table that reference this vertex " -"as outgoing. See :doc:`pgr_analyzeOneWay `." +"pgr_bdDijkstraCost(`Edges SQL`_, **start vids**, **end vid** , " +"[``directed``])" msgstr "" -"``integer`` Edge_table 中引用该顶点作为传出的顶点数。 请参阅 :doc:" -"`pgr_analyzeOneWay `。" +"pgr_bdDijkstraCost(`Edges SQL`_, **start vids**, **end vid** , " +"[``directed``])" -msgid "``geometry`` Point geometry of the vertex." -msgstr "``geometry`` 顶点的点几何。" +msgid "" +"pgr_bdDijkstraCost(`Edges SQL`_, **start vids**, **end vids**, " +"[``directed``])" +msgstr "" +"pgr_bdDijkstraCost(`Edges SQL`_, **start vids**, **end vids**, " +"[``directed``])" -msgid "Usage when the edge table's columns MATCH the default values:" -msgstr "当边表的列与默认值匹配时的用法:" +msgid "pgr_bdDijkstraCost(`Edges SQL`_, `Combinations SQL`_, [ ``directed``])" +msgstr "pgr_bdDijkstraCost(`Edges SQL`_, `Combinations SQL`_, [ ``directed``])" -msgid "The simplest way to use pgr_analyzeGraph is:" -msgstr "使用 pgr_analyzeGraph 最简单的方法是:" +msgid "pgr_bdDijkstraCost(`Edges SQL`_, `Combinations SQL`_, [``directed``])" +msgstr "pgr_bdDijkstraCost(`Edges SQL`_, `Combinations SQL`_, [``directed``])" -msgid "Arguments are given in the order described in the parameters:" -msgstr "参数按照参数中描述的顺序给出:" +msgid "``pgr_bdDijkstraCostMatrix``" +msgstr "``pgr_bdDijkstraCostMatrix``" -msgid "We get the same result as the simplest way to use the function." -msgstr "我们得到与使用该函数的最简单方法相同的结果。" +msgid "" +"``pgr_bdDijkstraCostMatrix`` - Calculates a cost matrix using :doc:" +"`pgr_bdDijkstra`." +msgstr "" +"``pgr_bdDijkstraCostMatrix`` - 使用 :doc:`pgr_bdDijkstra` 计算成本矩阵。" -msgid "An error would occur when" -msgstr "错误将会发生,当" +msgid "" +"Using bidirectional Dijkstra algorithm, calculate and return a cost matrix." +msgstr "使用双向Dijkstra算法,计算并返回成本矩阵。" -msgid "the arguments are not given in the appropriate order:" -msgstr "参数未按适当的顺序给出:" +msgid "pgr_bdDijkstraCostMatrix(`Edges SQL`_, **start vids**, [``directed``])" +msgstr "pgr_bdDijkstraCostMatrix(`Edges SQL`_, **start vids**, [``directed``])" msgid "" -"In this example, the column ``id`` of the table ``mytable`` is passed to the " -"function as the geometry column, and the geometry column ``the_geom`` is " -"passed to the function as the id column." +"Symmetric cost matrix for vertices :math:`\\{5, 6, 10, 15\\}` on an " +"**undirected** graph" msgstr "" -"在此示例中,表 ``mytable`` 的列 ``id`` 作为几何列传递给函数,几何列 " -"``the_geom`` 作为 id 列传递给函数。" +"在一个 **无向** 图上的顶点集合 :math:`\\{5, 6, 10, 15\\}` 的对称成本矩阵" -msgid "When using the named notation" -msgstr "当使用命名符号时" +msgid "Use with :doc:`pgr_TSP`." +msgstr "与 :doc:`pgr_TSP` 一起使用。" -msgid "The order of the parameters do not matter:" -msgstr "参数的顺序并不重要:" +msgid "``pgr_bellmanFord - Experimental``" +msgstr "``pgr_bellmanFord - 实验``" -msgid "" -"Parameters defined with a default value can be omitted, as long as the value " -"matches the default:" -msgstr "定义有默认值的参数可以省略,只要该值与默认值匹配即可:" +msgid "``pgr_bellmanFord`` — Shortest path using Bellman-Ford algorithm." +msgstr "``pgr_bellmanFord`` — 使用 Bellman-Ford 算法计算的最短路径。" -msgid "Selecting rows using rows_where parameter" -msgstr "使用 rows_where 参数选择行" +msgid "New experimental signature:" +msgstr "新 实验性*签名:" + +msgid "pgr_bellmanFord(Combinations)" +msgstr "pgr_bellmanFord(组合)" msgid "" -"Selecting rows based on the id. Displays the analysis a the section of the " -"network." -msgstr "根据 id 选择行。 显示网络部分的分析。" +"Bellman-Ford's algorithm, is named after Richard Bellman and Lester Ford, " +"who first published it in 1958 and 1956, respectively.It is a graph search " +"algorithm that computes shortest paths from a starting vertex " +"(``start_vid``) to an ending vertex (``end_vid``) in a graph where some of " +"the edge weights may be negative. Though it is more versatile, it is slower " +"than Dijkstra's algorithm.This implementation can be used with a directed " +"graph and an undirected graph." +msgstr "" +"Bellman-Ford算法以Richard Bellman和Lester Ford的名字命名,他们分别于1958年和" +"1956年首次发表了这个算法。它是一种图搜索算法,用于计算从起始顶点" +"(``start_vid``)到终点顶点(``end_vid``)的最短路径,其中一些边的权重可以为" +"负数。尽管它更加通用,但比Dijkstra算法更慢。这个实现可以用于有向图和无向图。" msgid "" -"Selecting the rows where the geometry is near the geometry of row with " -"``id`` = 5" -msgstr "选择几何形状接近 ``id`` = 5 的几何形状的行" +"Process is valid for edges with both positive and negative edge weights." +msgstr "该过程对于具有正边权重和负边权重的边都有效。" msgid "" -"Selecting the rows where the geometry is near the geometry of the row with " -"``gid`` =100 of the table ``othertable``." -msgstr "选择几何形状接近表 ``othertable`` 的``gid`` = 100 的行的几何形状的行。" +"When the start vertex and the end vertex are the same, there is no path. The " +"agg_cost would be :math:`0`." +msgstr "" +"当起始顶点和结束顶点相同时,不存在路径。聚合成本(agg_cost)将为 :math:`0`。" -msgid "Usage when the edge table's columns DO NOT MATCH the default values:" -msgstr "当边表的列与默认值不匹配时的用法:" +msgid "" +"When the start vertex and the end vertex are different, and there exists a " +"path between them without having a *negative cycle*. The agg_cost would be " +"some finite value denoting the shortest distance between them." +msgstr "" +"当起始顶点和结束顶点不同,并且它们之间存在路径且不存在*负循环*时。 agg_cost " +"将是某个有限值,表示它们之间的最短距离。" -msgid "For the following table" -msgstr "对于下表" +msgid "" +"When the start vertex and the end vertex are different, and there exists a " +"path between them, but it contains a *negative cycle*. In such case, " +"agg_cost for those vertices keep on decreasing furthermore, Hence agg_cost " +"can’t be defined for them." +msgstr "" +"当起始顶点和结束顶点不同,并且它们之间存在路径,但包含*负循环*时。 在这种情况" +"下,这些顶点的 agg_cost 继续减少,因此无法为它们定义 agg_cost 。" -msgid "Using positional notation:" -msgstr "使用位置符号:" +msgid "" +"When the start vertex and the end vertex are different, and there is no " +"path. The agg_cost is :math:`\\infty`." +msgstr "" +"当起始顶点和结束顶点不同且不存在路径时,聚合成本(agg_cost)为 :math:" +"`\\infty`。" msgid "" -"The arguments need to be given in the order described in the parameters:" -msgstr "参数需要按照参数中描述的顺序给出:" +"For optimization purposes, any duplicated value in the `start_vids` or " +"`end_vids` are ignored." +msgstr "出于优化目的,`start_vids`或 `end_vids` 中的任何重复值都将被忽略。" + +msgid "Running time: :math:`O(| start\\_vids | * ( V * E))`" +msgstr "运行时间: :math:`O(| start\\_vids | * ( V * E))`" msgid "" -"An error would occur when the arguments are not given in the appropriate " -"order: In this example, the column ``gid`` of the table ``mytable`` is " -"passed to the function as the geometry column, and the geometry column " -"``mygeom`` is passed to the function as the id column." +"pgr_bellmanFord(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" msgstr "" -"如果未按适当的顺序给出参数,则会发生错误:在此示例中,表 ``mytable`` 的列 " -"``gid``作为几何列传递给函数,几何列 ``mygeom`` 作为 id 列传递给函数 。" +"pgr_bellmanFord(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" msgid "" -"In this scenario omitting a parameter would create an error because the " -"default values for the column names do not match the column names of the " -"table." -msgstr "在这种情况下,省略参数会产生错误,因为列名的默认值与表的列名不匹配。" - -msgid "Selecting rows based on the id." -msgstr "根据 id 选择行。" +"pgr_bellmanFord(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" +msgstr "" +"pgr_bellmanFord(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" msgid "" -"Selecting the rows WHERE the geometry is near the geometry of row with " -"``id`` =5 ." -msgstr "选择那些几何与具有 ``id`` = 5的行的几何接近的行。" +"pgr_bellmanFord(`Edges SQL`_, **start vids**, **end vid**, [``directed``])" +msgstr "" +"pgr_bellmanFord(`Edges SQL`_, **start vids**, **end vid**, [``directed``])" msgid "" -"Selecting the rows WHERE the geometry is near the place='myhouse' of the " -"table ``othertable``. (note the use of quote_literal)" +"pgr_bellmanFord(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" msgstr "" -"选择几何图形靠近表 ``othertable`` 的 place='myhouse' 的行。 (注意 " -"quote_literal 的使用)" +"pgr_bellmanFord(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" -msgid "The examples use the :doc:`sampledata` network." -msgstr "这些示例使用 :doc:`sampledata` 网络。" +msgid "pgr_bellmanFord(`Edges SQL`_, `Combinations SQL`_, [``directed``])" +msgstr "pgr_bellmanFord(`Edges SQL`_, `Combinations SQL`_, [``directed``])" -msgid ":doc:`pgr_analyzeOneWay`" -msgstr ":doc:`pgr_analyzeOneWay`" +msgid "" +"From vertex :math:`6` to vertices :math:`\\{ 10, 17\\}` on a **directed** " +"graph" +msgstr "" +"从节点 :math:`6`到节点:math:`\\{ 10, 17\\}`的最短路径,基于一个**directed**图" -msgid ":doc:`pgr_createVerticesTable`" -msgstr ":doc:`pgr_createVerticesTable`" +msgid "Using a combinations table on an **undirected** graph." +msgstr "在 **无向** 图上使用组合表。" -msgid ":doc:`pgr_nodeNetwork` to create nodes to a not noded edge table." -msgstr ":doc:`pgr_nodeNetwork` 创建节点到非节点边表。" +#, fuzzy +msgid "" +"`Boost: Bellman Ford `__" +msgstr "" +"`Boost: Belman Ford `__" -msgid "pgr_analyzeOneWay" -msgstr "pgr_analyzeOneWay" +msgid "https://en.wikipedia.org/wiki/Bellman%E2%80%93Ford_algorithm" +msgstr "https://en.wikipedia.org/wiki/Bellman%E2%80%93Ford_algorithm" -msgid "" -"``pgr_analyzeOneWay`` — Analyzes oneway Sstreets and identifies flipped " -"segments." -msgstr "``pgr_analyzeOneWay`` — 分析单向街道并识别翻转路段。" +#, fuzzy +msgid "``pgr_betweennessCentrality`` - Experimental" +msgstr "``pgr_betweennessCentrality``" +#, fuzzy msgid "" -"This function analyzes oneway streets in a graph and identifies any flipped " -"segments." -msgstr "该函数分析图中的单向街道并识别任何翻转的路段。" +"``pgr_betweennessCentrality`` - Calculates the relative betweenness " +"centrality using Brandes Algorithm" +msgstr "``pgr_betweennessCentrality`` - 使用 Brandes 算法计算相对介数中心度" -msgid "" -"The analyses of one way segments is pretty simple but can be a powerful " -"tools to identifying some the potential problems created by setting the " -"direction of a segment the wrong way. A node is a `source` if it has edges " -"the exit from that node and no edges enter that node. Conversely, a node is " -"a `sink` if all edges enter the node but none exit that node. For a `source` " -"type node it is logically impossible to exist because no vehicle can exit " -"the node if no vehicle and enter the node. Likewise, if you had a `sink` " -"node you would have an infinite number of vehicle piling up on this node " -"because you can enter it but not leave it." -msgstr "" -"单向路段的分析非常简单,但可以成为一种强大的工具,可以识别由于错误地设置路段" -"方向而产生的一些潜在问题。 如果一个节点有从该节点出口的边并且没有边进入该节" -"点,则该节点是`source` 。 相反,如果所有边都进入该节点但没有一条边退出该节" -"点,则该节点是`sink`。 对于`source` 类型节点来说,逻辑上不可能存在,因为如果" -"没有车辆进入该节点,则任何车辆都无法离开该节点。 同样,如果您有一个`sink`节" -"点,那么您将在该节点上堆积无限数量的车辆,因为您可以进入它但不能离开它。" +msgid "Version 3.7.0" +msgstr "版本 3.7.0" msgid "" -"So why do we care if the are not feasible? Well if the direction of an edge " -"was reversed by mistake we could generate exactly these conditions. Think " -"about a divided highway and on the north bound lane one segment got entered " -"wrong or maybe a sequence of multiple segments got entered wrong or maybe " -"this happened on a round-about. The result would be potentially a `source` " -"and/or a `sink` node." -msgstr "" -"那么我们为什么要关心这些是否不可行呢? 如果边的方向被错误地反转,我们就可以准" -"确地生成这些条件。 想象一下一条分开的高速公路,在北行车道上,有一个路段输入错" -"误,或者可能是一系列多个路段输入错误,或者这可能发生在环岛上。 结果可能是 " -"`source` 节点和/或`sink`节点。" +"The Brandes Algorithm takes advantage of the sparse graphs for evaluating " +"the betweenness centrality score of all vertices." +msgstr "Brandes 算法利用稀疏图来评估所有顶点的中心度得分。" msgid "" -"So by counting the number of edges entering and exiting each node we can " -"identify both `source` and `sink` nodes so that you can look at those areas " -"of your network to make repairs and/or report the problem back to your data " -"vendor." +"Betweenness centrality measures the extent to which a vertex lies on the " +"shortest paths between all other pairs of vertices. Vertices with a high " +"betweenness centrality score may have considerable influence in a network by " +"the virtue of their control over the shortest paths passing between them." msgstr "" -"因此,通过计算进入和退出每个节点的边数,我们可以识别 `source` 节点和 `sink` " -"节点,以便您可以查看网络的这些区域以进行修复和/或将问题报告给数据供应商。" +"Betweenness centrality(介数中心性)衡量的是一个顶点在所有其他顶点对之间的最" +"短路径中的重要性。具有较高介数中心性得分的顶点,通常能够对网络产生显著的影" +"响,因为它们控制了通过它们的最短路径。" msgid "" -"pgr_analyzeOneWay(**geom_table**, **s_in_rules**, **s_out_rules**, " -"**t_in_rules**, **t_out_rules**, [**options**])" +"The removal of these vertices will affect the network by disrupting the it, " +"as most of the shortest paths between vertices pass through them." msgstr "" -"pgr_analyzeOneWay(**geom_table**, **s_in_rules**, **s_out_rules**, " -"**t_in_rules**, **t_out_rules**, [**options**])" - -msgid "**options:** ``[oneway, source, target, two_way_if_null]``" -msgstr "**options:** ``[oneway, source, target, two_way_if_null]``" +"这些顶点的移除会影响网络,因为大多数顶点之间的最短路径都经过它们,从而破坏了" +"网络的连接性。" -msgid "RETURNS ``TEXT``" -msgstr "RETURNS ``TEXT``" +msgid "This implementation work for both directed and undirected graphs." +msgstr "该实现适用于directed 和undirected。" -msgid "s_in_rules" -msgstr "s_in_rules" +msgid "Running time: :math:`\\Theta(VE)`" +msgstr "运行时间: :math:`Theta(VE)`" -msgid "``text[]`` source node **in** rules" -msgstr "``text[]`` source节点 **输入** 规则" +msgid "Running space: :math:`\\Theta(VE)`" +msgstr "运行空间: :math:`\\Theta(VE)`" -msgid "s_out_rules" -msgstr "s_out_rules" +msgid "Throws when there are no edges in the graph" +msgstr "当图形中没有边时抛出" -msgid "``text[]`` source node **out** rules" -msgstr "``text[]`` source节点 **输出** 规则" +msgid "pgr_betweennessCentrality(`Edges SQL`_, [``directed``])" +msgstr "pgr_betweennessCentrality(`Edges SQL`_, [``directed``])" -msgid "t_in_rules" -msgstr "t_in_rules" +msgid "Returns set of ``(vid, centrality)``" +msgstr "返回 ``(vid, centrality)`` 的集合" -msgid "``text[]`` target node **in** rules" -msgstr "``text[]`` target节点 **输入** 规则" +msgid "For a directed graph with edges :math:`\\{1, 2, 3, 4\\}`." +msgstr "对于带边的directed graph:math:`\\{1, 2, 3, 4\\}`." -msgid "t_out_rules" -msgstr "t_out_rules" +msgid "Explanation" +msgstr "说明" -msgid "``text[]`` target node **out** rules" -msgstr "``text[]`` target节点 **输出** 规则" +msgid "The betweenness centrality are between parenthesis." +msgstr "介数中心性值位于括号内。" -msgid "oneway" -msgstr "oneway" +msgid "The leaf vertices have betweenness centrality :math:`0`." +msgstr "叶子节点的介数中心性为 :math:`0`。" msgid "" -"``text`` oneway column name name of the network table. Default value is " -"``oneway``." -msgstr "``text``oneway 列名,网络表的名称。 默认值为``oneway``。" - -msgid "two_way_if_null" -msgstr "two_way_if_null" +"Betweenness centrality of vertex :math:`6` is higher than of vertex :math:" +"`10`." +msgstr "顶点 :math:`6` 的间隔中心度高于顶点 :math:`10` 的间隔中心度。" -msgid "" -"``boolean`` flag to treat oneway NULL values as bi-directional. Default " -"value is ``true``." -msgstr "``boolean`` 将单向 NULL 值视为双向的标志。 默认值为 ``true``。" +msgid "Removing vertex :math:`6` will create three graph components." +msgstr "移除顶点 :math:`6` 将创建三个图形组件。" -msgid "" -"It is strongly recommended to use the named notation. See :doc:" -"`pgr_createVerticesTable` or :doc:`pgr_createTopology` for examples." -msgstr "" -"强烈建议使用命名符号。 有关示例,请参阅 :doc:`pgr_createVerticesTable` 或 :" -"doc:`pgr_createTopology`。" +msgid "Removing vertex :math:`10` will create two graph components." +msgstr "移除节点 :math:`10` 将会产生两个图形组件。" -msgid "" -"Fills completely the ``ein`` and ``eout`` columns of the vertices table." -msgstr "完全填充顶点表的 ``ein`` 和 ``eout`` 列。" +msgid "``vid``" +msgstr "``vid``" -msgid "The names of source , target or oneway are the same." -msgstr "source 、 target 或 oneway 的名称相同。" +msgid "``centrality``" +msgstr "``capacity``" msgid "" -"The rules are defined as an array of text strings that if match the " -"``oneway`` value would be counted as ``true`` for the source or target " -"**in** or **out** condition." -msgstr "" -"这些规则被定义为文本字符串数组,如果与 ``oneway`` 值匹配,则 source或 target " -"**输入** 或 **输出** 条件将被视为 ``true``。" +"Relative betweenness centrality score of the vertex (will be in range [0,1])" +msgstr "该节点的相对介数中心性得分(范围为 [0,1])" +#, fuzzy msgid "" -"The vertices table can be created with :doc:`pgr_createVerticesTable` or :" -"doc:`pgr_createTopology`" +"`Boost: betweenness centrality `_" msgstr "" -"顶点表可以使用 :doc:`pgr_createVerticesTable` 或 :doc:`pgr_createTopology` 创" -"建" +"`Boost: betweenness centrality `_" -msgid "" -"``integer`` Number of vertices in the edge_table that reference this vertex. " -"See :doc:`pgr_analyzeGgraph `." -msgstr "" -"``integer`` edge_table 中引用该顶点的顶点数。 请参阅 :doc:`pgr_analyzeGgraph " -"`。" +msgid "``pgr_biconnectedComponents``" +msgstr "``pgr_biconnectedComponents``" msgid "" -"``integer`` Indicator that the vertex might have a problem. See :doc:" -"`pgr_analyzeGraph `." -msgstr "" -"``integer`` 指示顶点可能有问题。 请参阅 :doc:`pgr_analyzeGraph " -"`。" +"``pgr_biconnectedComponents`` — Biconnected components of an undirected " +"graph." +msgstr "``pgr_biconnectedComponents`` — 无向图的双连通分量。" -msgid "" -"``integer`` Number of vertices in the edge_table that reference this vertex " -"as incoming." -msgstr "``integer`` edge_table 中引用该顶点作为传入的顶点数。" +msgid "Result columns change:" +msgstr "结果列发生变化:" + +msgid "``n_seq`` is removed" +msgstr "``n_seq`` 被删除" + +msgid "``seq`` changed type to ``BIGINT``" +msgstr "``seq`` 将类型更改为``BIGINT``" msgid "" -"``integer`` Number of vertices in the edge_table that reference this vertex " -"as outgoing." -msgstr "``integer`` Edge_table 中引用该顶点作为传出的顶点数。" +"The biconnected components of an undirected graph are the maximal subsets of " +"vertices such that the removal of a vertex from particular component will " +"not disconnect the component. Unlike connected components, vertices may " +"belong to multiple biconnected components. Vertices can be present in " +"multiple biconnected components, but each edge can only be contained in a " +"single biconnected component." +msgstr "" +"无向图的双连通分量是顶点的最大子集,因此从特定分量中删除顶点不会断开该分量。 " +"与连接组件不同,顶点可以属于多个双连接组件。 顶点可以存在于多个双连通分量中," +"但每条边只能包含在单个双连通分量中。" -msgid ":doc:`pgr_analyzeGraph`" -msgstr ":doc:`pgr_analyzeGraph`" +msgid "Components are described by edges." +msgstr "组件由边描述。" -msgid "``pgr_articulationPoints``" -msgstr "``pgr_articulationPoints``" +msgid "``component`` ascending." +msgstr "``component`` 升序。" -msgid "" -"``pgr_articulationPoints`` - Return the articulation points of an undirected " -"graph." -msgstr "``pgr_articulationPoints`` - 返回无向图的连接点。" +msgid "``edge`` ascending." +msgstr "``edge`` 升序。" -msgid "Result columns change: ``seq`` is removed" -msgstr "结果列更改:删除了 ``seq``" +msgid "pgr_biconnectedComponents(`Edges SQL`_)" +msgstr "pgr_biconnectedComponents(`Edges SQL`_)" -msgid "Version 2.5.0" -msgstr "版本2.5.0" +msgid "Returns set of |result-component-E|" +msgstr "Returns set of |result-component-E|" -msgid "New **experimental** function" -msgstr "新 **实验** 函数" +msgid "The biconnected components of the graph" +msgstr "图的双连通分量" -msgid "" -"Those vertices that belong to more than one biconnected component are called " -"articulation points or, equivalently, cut vertices. Articulation points are " -"vertices whose removal would increase the number of connected components in " -"the graph. This implementation can only be used with an undirected graph." -msgstr "" -"那些属于多于一个双连通分量的顶点被称为关节点,或者等效地称为割点。关节点是指" -"那些如果被移除,会增加图中连接分量数量的顶点。这个实现仅适用于无向图。" +msgid "``component``" +msgstr "``component``" -msgid "Works for **undirected** graphs." -msgstr "适用于 **无向** 图。" +msgid "Component identifier." +msgstr "分量标识符。" -msgid "``node`` ascending" -msgstr "``node`` 升序" +msgid "Has the value of the minimum edge identifier in the component." +msgstr "具有组件中最小边标识符的值。" -msgid "Running time: :math:`O(V + E)`" -msgstr "运行时间: :math:`O(V + E)`" +msgid "Identifier of the edge that belongs to the ``component``." +msgstr "属于该 ``分量`` 的边的标识符。" -msgid "pgr_articulationPoints(`Edges SQL`_)" -msgstr "pgr_articulationPoints(`Edges SQL`_)" +msgid "``pgr_binaryBreadthFirstSearch`` - Experimental" +msgstr "``pgr_binaryBreadthFirstSearch`` - 实验" -msgid "Returns set of |result-node|" -msgstr "Returns set of |result-node|" +msgid "" +"``pgr_binaryBreadthFirstSearch`` — Returns the shortest path in a binary " +"graph." +msgstr "``pgr_binaryBreadthFirstSearch`` — 返回二进制图中的最短路径。" -msgid "The articulation points of the graph" -msgstr "图表的连接点" +msgid "" +"Any graph whose edge-weights belongs to the set {0,X}, where 'X' is any non-" +"negative integer, is termed as a 'binary graph'." +msgstr "任何边权属于集合 {0,X} 的图(其中“X”是任何非负整数)都被称为“二元图”。" -msgid "Nodes in red are the articulation points." -msgstr "红色节点是关节点。" +msgid "pgr_binaryBreadthFirstSearch(Combinations)" +msgstr "pgr_binaryBreadthFirstSearch(组合)" + +msgid "" +"It is well-known that the shortest paths between a single source and all " +"other vertices can be found using Breadth First Search in :math:`O(|E|)` in " +"an unweighted graph, i.e. the distance is the minimal number of edges that " +"you need to traverse from the source to another vertex. We can interpret " +"such a graph also as a weighted graph, where every edge has the weight :math:" +"`1`. If not alledges in graph have the same weight, that we need a more " +"general algorithm, like Dijkstra's Algorithm which runs in :math:`O(|E|log|" +"V|)` time." +msgstr "" +"众所周知,在无权重图中,使用广度优先搜索(Breadth First Search)可以在 :math:" +"`O(|E|)` 内找到单个源点与所有其他顶点之间的最短路径,也就是说,距离是指从源点" +"到另一个顶点所需的最少边数。我们也可以把这样的图解释为加权图,其中每条边的权" +"重为 :math:`1`。如果图中不是所有边的权重都相同,我们就需要一种更通用的算法," +"比如 Dijkstra 算法,它的运行时间为 :math:`O(|E|log|V||)`。" msgid "" -"Boost: `Biconnected components & articulation points `__" +"However if the weights are more constrained, we can use a faster algorithm. " +"This algorithm, termed as 'Binary Breadth First Search' as well as '0-1 " +"BFS', is a variation of the standard Breadth First Search problem to solve " +"the SSSP (single-source shortest path) problem in :math:`O(|E|)`, if the " +"weights of each edge belongs to the set {0,X}, where 'X' is any non-negative " +"real integer." msgstr "" -"Boost: `双连通分量和关节点 `__" +"然而,如果权重受到更多限制,我们可以使用一种更快的算法。这个算法被称为'二进制" +"广度优先搜索',也称为'0-1 BFS',它是标准广度优先搜索问题的一种变体,用于解决" +"单源最短路径(SSSP)问题,当每条边的权重属于集合{0,X},其中'X'是任意非负实数" +"时,其时间复杂度为 :math:`O(|E|)`。" msgid "" -"wikipedia: `Biconnected component `__" +"Process is done only on 'binary graphs'. ('Binary Graph': Any graph whose " +"edge-weights belongs to the set {0,X}, where 'X' is any non-negative real " +"integer.)" msgstr "" -"维基百科: `双连通分量 `__" +"过程仅在“二元图”上完成。 (“二元图”:边权重属于集合 {0,X} 的任何图,其中“X”是" +"任何非负实整数。)" -msgid "``pgr_bdAstar``" -msgstr "``pgr_bdAstar``" +msgid "Running time: :math:`O(| start\\_vids | * |E|)`" +msgstr "运行时间: :math:`O(| start\\_vids | * |E|)`" -msgid "``pgr_bdAstar`` — Shortest path using the bidirectional A* algorithm." -msgstr "``pgr_bdAstar`` — 使用双向 A* 算法的最短路径。" +msgid "" +"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vid**, **end vid**, " +"[``directed``])" +msgstr "" +"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vid**, **end vid**, " +"[``directed``])" msgid "" -"``pgr_bdAstar`` (`One to One`_) added ``start_vid`` and ``end_vid`` columns." -msgstr "``pgr_bdAstar`` (`一对一`_) 增加 ``start_vid`` 和 ``end_vid`` 列。" +"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vid**, **end vids**, " +"[``directed``])" +msgstr "" +"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vid**, **end vids**, " +"[``directed``])" -msgid "``pgr_bdAstar`` (`One to Many`_) added ``end_vid`` column." -msgstr "``pgr_bdAstar`` (`一对多`_) 增加 ``end_vid`` 列。" +msgid "" +"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vids**, **end vid**, " +"[``directed``])" +msgstr "" +"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vids**, **end vid**, " +"[``directed``])" -msgid "``pgr_bdAstar`` (`Many to One`_) added ``start_vid`` column." -msgstr "``pgr_bdAstar`` (`多对一`_) 增加 ``start_vid`` 列。" +msgid "" +"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vids**, **end vids**, " +"[``directed``])" +msgstr "" +"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vids**, **end vids**, " +"[``directed``])" -msgid "``pgr_bdAstar`` (`Combinations`_)" -msgstr "``pgr_bdAstar`` (`组合`_)" +msgid "" +"pgr_binaryBreadthFirstSearch(`Edges SQL`_, `Combinations SQL`_, " +"[``directed``])" +msgstr "" +"pgr_binaryBreadthFirstSearch(`Edges SQL`_, `Combinations SQL`_, " +"[``directed``])" -msgid "``pgr_bdAstar`` (`One to Many`_)" -msgstr "``pgr_bdAstar`` (`一对多`_)" +msgid "" +"**Note:** Using the :doc:`sampledata` Network as all weights are same (i.e :" +"math:`1``)" +msgstr "" +"**注意:** 使用 :doc:`sampledata` 网络,因为所有权重都相同(即为 :math:`1`)" -msgid "``pgr_bdAstar`` (`Many to One`_)" -msgstr "``pgr_bdAstar`` (`多对一`_)" +#, fuzzy +msgid "" +"`Boost: Breadth First Search `__" +msgstr "" +"`Boost:广度优先搜索算法文档 `__" -msgid "``pgr_bdAstar`` (`Many to Many`_)" -msgstr "``pgr_bdAstar`` (`多对多`_)" +msgid "https://cp-algorithms.com/graph/01_bfs.html" +msgstr "https://cp-algorithms.com/graph/01_bfs.html" -msgid "Signature change on ``pgr_bdAstar`` (`One to One`_)" -msgstr "在 ``pgr_bdAstar`` (`一对一`_)上的签名更改" +msgid "" +"https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm#Specialized_variants" +msgstr "" +"https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm#Specialized_variants" -msgid "**Official** ``pgr_bdAstar`` (`One to One`_)" -msgstr "**官方** ``pgr_bdAstar`` (`一对一`_)" +#, fuzzy +msgid "``pgr_bipartite`` - Experimental" +msgstr "pgr_bipartite -实验" msgid "" -"The results are equivalent to the union of the results of the `pgr_bdAStar(` " -"`One to One`_ `)` on the:" -msgstr "结果相当于`pgr_bdAStar(` `一对一`_ `)` 结果的并集:" +"``pgr_bipartite`` — Disjoint sets of vertices such that no two vertices " +"within the same set are adjacent." +msgstr "`pgr_bipartite` - 不相邻的顶点集合,同一集合中没有两个顶点相邻。" -msgid "pgr_bdAstar(`Edges SQL`_, **start vid**, **end vid**, [**options**])" -msgstr "pgr_bdAstar(`Edges SQL`_, **start vid**, **end vid**, [**options**])" +msgid "" +"A bipartite graph is a graph with two sets of vertices which are connected " +"to each other, but not within themselves. A bipartite graph is possible if " +"the graph coloring is possible using two colors such that vertices in a set " +"are colored with the same color." +msgstr "" +"二方图是指有两组顶点的图,这两组顶点相互连接,但内部没有连接。如果可以使用两" +"种颜色对图形着色,从而使一个集合中的顶点着色为相同的颜色,那么就可能是一个二" +"方图。" -msgid "pgr_bdAstar(`Edges SQL`_, **start vid**, **end vids**, [**options**])" -msgstr "pgr_bdAstar(`Edges SQL`_, **start vid**, **end vids**, [**options**])" +msgid "The algorithm works in undirected graph only." +msgstr "该算法只适用于无向图。" -msgid "pgr_bdAstar(`Edges SQL`_, **start vids**, **end vid**, [**options**])" -msgstr "pgr_bdAstar(`Edges SQL`_, **start vids**, **end vid**, [**options**])" +msgid "The returned values are not ordered." +msgstr "返回值没有排序。" -msgid "pgr_bdAstar(`Edges SQL`_, **start vids**, **end vids**, [**options**])" -msgstr "pgr_bdAstar(`Edges SQL`_, **start vids**, **end vids**, [**options**])" +msgid "" +"The algorithm checks graph is bipartite or not. If it is bipartite then it " +"returns the node along with two colors `0` and `1` which represents two " +"different sets." +msgstr "" +"该算法检查图是否是二分图。 如果它是二分的,那么它返回节点以及代表两个不同集合" +"的两种颜色 `0` 和`1`。" -msgid "pgr_bdAstar(`Edges SQL`_, `Combinations SQL`_, [**options**])" -msgstr "pgr_bdAstar(`Edges SQL`_, `Combinations SQL`_, [**options**])" +msgid "If graph is not bipartite then algorithm returns empty set." +msgstr "如果图不是两部分的,那么算法会返回空集。" -msgid "pgr_bdAstarCost" -msgstr "pgr_bdAstarCost" +msgid "pgr_bipartite(`Edges SQL`_)" +msgstr "pgr_bipartite(`Edges SQL`_)" -#, fuzzy -msgid "" -"``pgr_bdAstarCost`` - Total cost of the shortest path using the " -"bidirectional A* algorithm." -msgstr "``pgr_bdAstarCost`` -使用双向 A* 算法的最短路径的总成本。" +msgid "Returns set of |result-node-color|" +msgstr "Returns set of |result-node-color|" -msgid "``pgr_bdAstarCost`` (`Combinations`_)" -msgstr "``pgr_bdAstarCost`` (`组合`_)" +msgid "When the graph is bipartite" +msgstr "当图形为两方时" -#, fuzzy -msgid "" -"The ``pgr_bdAstarCost`` function sumarizes of the cost of the shortest path " -"using the bidirectional A* algorithm." -msgstr "``pgr_bdAstarCost`` 函数使用双向 A* 算法汇总最短路径的成本。" +msgid "Additional Example" +msgstr "附加示例" -msgid "" -"pgr_bdAstarCost(`Edges SQL`_, **start vid**, **end vid**, [**options**])" -msgstr "" -"pgr_bdAstarCost(`Edges SQL`_, **start vid**, **end vid**, [**options**])" +msgid "The odd length cyclic graph can not be bipartite." +msgstr "奇长循环图不可能是两部分的。" msgid "" -"pgr_bdAstarCost(`Edges SQL`_, **start vid**, **end vids**, [**options**])" +"The edge :math:`5 \\rightarrow 1` will make subgraph with vertices :math:" +"`\\{1, 3, 7, 6, 5\\}` an odd length cyclic graph, as the cycle has 5 " +"vertices." msgstr "" -"pgr_bdAstarCost(`Edges SQL`_, **start vid**, **end vids**, [**options**])" +"边 :math:`5 \\rightarrow 1` 将使顶点为 :math:`\\{1, 3, 7, 6, 5\\}` 的子图成为" +"奇数长度的循环图,因为循环有 5 个顶点。" -msgid "" -"pgr_bdAstarCost(`Edges SQL`_, **start vids**, **end vid**, [**options**])" -msgstr "" -"pgr_bdAstarCost(`Edges SQL`_, **start vids**, **end vid**, [**options**])" +msgid "Edges in blue represent odd length cycle subgraph." +msgstr "蓝色边代表奇数长度循环子图。" msgid "" -"pgr_bdAstarCost(`Edges SQL`_, **start vids**, **end vids**, [**options**])" +"`Boost: is_bipartite `__" msgstr "" -"pgr_bdAstarCost(`Edges SQL`_, **start vids**, **end vids**, [**options**])" - -msgid "pgr_bdAstarCost(`Edges SQL`_, `Combinations SQL`_, [**options**])" -msgstr "pgr_bdAstarCost(`Edges SQL`_, `Combinations SQL`_, [**options**])" - -msgid "``pgr_bdAstarCostMatrix``" -msgstr "``pgr_bdAstarCostMatrix``" +"`Boost: is_bipartite `__" msgid "" -"``pgr_bdAstarCostMatrix`` - Calculates the a cost matrix using :doc:" -"`pgr_aStar`." -msgstr "``pgr_bdAstarCostMatrix`` - 使用 :doc:`pgr_aStar` 计算成本矩阵。" +"`Wikipedia: bipartite graph `__" +msgstr "`维基百科:二分图 `__" -msgid "Using internaly the :doc:`pgr_bdAstar` algorithm" -msgstr "内部使用 :doc:`pgr_bdAstar` 算法" +msgid "``pgr_boykovKolmogorov``" +msgstr "``pgr_boykovKolmogorov``" -msgid "pgr_bdAstarCostMatrix(`Edges SQL`_, **start vids**, [**options**])" -msgstr "pgr_bdAstarCostMatrix(`Edges SQL`_, **start vids**, [**options**])" +msgid "" +"``pgr_boykovKolmogorov`` — Calculates the flow on the graph edges that " +"maximizes the flow from the sources to the targets using Boykov Kolmogorov " +"algorithm." +msgstr "" +"`pgr_boykovKolmogorov`` - 使用 Boykov Kolmogorov 算法计算图边的流量,使从源到" +"目标的流量最大。" -msgid "``pgr_bdDijkstra``" -msgstr "``pgr_bdDijkstra``" +msgid "Renamed from ``pgr_maxFlowBoykovKolmogorov``" +msgstr "从 ``pgr_maxFlowBoykovKolmogorov`` 更名而来" #, fuzzy -msgid "" -"``pgr_bdDijkstra`` — Returns the shortest path using Bidirectional Dijkstra " -"algorithm." -msgstr "``pgr_bdDijkstra`` — 使用双向 Dijkstra 算法返回最短路径。" +msgid "Function promoted to proposed." +msgstr "实验性的功能被提升为提议的。" + +msgid "Running time: Polynomial" +msgstr "运行时间:多项式时间" -msgid "pgr_bdDijkstra(`Combinations`_)" -msgstr "pgr_bdDijkstra(`组合`_)" +msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vid**, **end vid**)" +msgstr "pgr_boykovKolmogorov(`Edges SQL`_, **start vid**, **end vid**)" -msgid "New **Proposed** functions:" -msgstr "新 **拟议** 函数:" +msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vid**, **end vids**)" +msgstr "pgr_boykovKolmogorov(`Edges SQL`_, **start vid**, **end vids**)" -msgid "``pgr_bdDijkstra`` (`One to Many`_)" -msgstr "``pgr_bdDijkstra`` (`一对多`_)" +msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vids**, **end vid**)" +msgstr "pgr_boykovKolmogorov(`Edges SQL`_, **start vids**, **end vid**)" -msgid "``pgr_bdDijkstra`` (`Many to One`_)" -msgstr "``pgr_bdDijkstra`` (`多对一`_)" +msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vids**, **end vids**)" +msgstr "pgr_boykovKolmogorov(`Edges SQL`_, **start vids**, **end vids**)" -msgid "``pgr_bdDijkstra`` (`Many to Many`_)" -msgstr "``pgr_bdDijkstra`` (`多对多`_)" +msgid "pgr_boykovKolmogorov(`Edges SQL`_, `Combinations SQL`_)" +msgstr "pgr_boykovKolmogorov(`Edges SQL`_, `Combinations SQL`_)" -msgid "Signature change on ``pgr_bdDijsktra`` (`One to One`_)" -msgstr "``pgr_bdDijsktra`` (`一对一`_)上的签名更改" +msgid "Returns set of |result-flow|" +msgstr "Returns set of |result-flow|" -msgid "**Official** ``pgr_bdDijkstra`` (`One to One`_)" -msgstr "**官方** ``pgr_bdDijkstra`` (`一对一`_)" +msgid "From vertex :math:`11` to vertex :math:`12`" +msgstr "从顶点 :math:`11` 到顶点 :math:`12`" -msgid "" -"pgr_bdDijkstra(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" -msgstr "" -"pgr_bdDijkstra(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" +msgid "From vertex :math:`11` to vertices :math:`\\{5, 10, 12\\}`" +msgstr "从顶点 :math:`11` 到顶点 :math:`\\{5, 10, 12\\}`" -msgid "" -"pgr_bdDijkstra(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" -msgstr "" -"pgr_bdDijkstra(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" +msgid "From vertices :math:`\\{11, 3, 17\\}` to vertex :math:`12`" +msgstr "从顶点 :math:`\\{11, 3, 17\\}` 到顶点 :math:`12`" msgid "" -"pgr_bdDijkstra(`Edges SQL`_, **start vids**, **end vid**, [``directed``])" -msgstr "" -"pgr_bdDijkstra(`Edges SQL`_, **start vids**, **end vid**, [``directed``])" +"From vertices :math:`\\{11, 3, 17\\}` to vertices :math:`\\{5, 10, 12\\}`" +msgstr "从顶点 :math:`\\{11, 3, 17\\}` 到顶点 :math:`\\{5, 10, 12\\}`" msgid "" -"pgr_bdDijkstra(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" +"Using a combinations table, equivalent to calculating result from vertices :" +"math:`\\{5, 6\\}` to vertices :math:`\\{10, 15, 14\\}`." msgstr "" -"pgr_bdDijkstra(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" - -msgid "pgr_bdDijkstra(`Edges SQL`_, `Combinations SQL`_, [``directed``])" -msgstr "pgr_bdDijkstra(`Edges SQL`_, `Combinations SQL`_, [``directed``])" - -msgid "Returns set of |old-generic-result|" -msgstr "返回 |old-generic-result| 的集合" - -msgid "Returns set of |result-1-1|" -msgstr "返回 |result-1-1| 的集合" - -msgid "From vertex :math:`6` to vertex :math:`10` on a **directed** graph" -msgstr "在 **有向** 图上从顶点 :math:`6` 到顶点 :math:`10`" - -msgid "Returns set of |result-1-m|" -msgstr "返回 |result-1-m| 的集合" +"使用组合表,相当于计算从顶点 :math:`\\{5, 6\\}` 到顶点 :math:`{\\10, 15, " +"14\\}` 的结果。" +#, fuzzy msgid "" -"From vertex :math:`6` to vertices :math:`\\{10, 17\\}` on a **directed** " -"graph" -msgstr "在 **有向** 图上从顶点 :math:`6` 到顶点 :math:`\\{10, 17\\}`" +"`Boost: Boykov Kolmogorov max flow `__" +msgstr "https://www.boost.org/libs/graph/doc/boykov_kolmogorov_max_flow.html" -msgid "Returns set of |result-m-1|" -msgstr "返回 |result-m-1| 的集合" +msgid "``pgr_breadthFirstSearch`` - Experimental" +msgstr "``pgr_breadthFirstSearch`` - 实验" msgid "" -"From vertices :math:`\\{6, 1\\}` to vertex :math:`17` on a **directed** graph" -msgstr "在 **有向** 图上从顶点 :math:`\\{6, 1\\}` 到顶点 :math:`17`" +"``pgr_breadthFirstSearch`` — Returns the traversal order(s) using Breadth " +"First Search algorithm." +msgstr "``pgr_breadthFirstSearch`` —使用广度优先搜索算法返回遍历顺序。" msgid "" -"From vertices :math:`\\{6, 1\\}` to vertices :math:`\\{10, 17\\}` on an " -"**undirected** graph" -msgstr "在 **无向** 图上从顶点 :math:`\\{6, 1\\}` 到顶点 :math:`\\{10, 17\\}`" +"Provides the Breadth First Search traversal order from a root vertex to a " +"particular depth." +msgstr "提供从根顶点到特定深度的广度优先搜索遍历顺序。" -msgid "Using a combinations table on an **undirected** graph" -msgstr "在 **无向** 图上使用组合表" +msgid "The implementation will work on any type of graph." +msgstr "该实现适用于任何类型的图。" msgid "" -"https://www.cs.princeton.edu/courses/archive/spr06/cos423/Handouts/" -"EPP%20shortest%20path%20algorithms.pdf" -msgstr "" -"https://www.cs.princeton.edu/courses/archive/spr06/cos423/Handouts/" -"EPP%20shortest%20path%20algorithms.pdf" - -msgid "https://en.wikipedia.org/wiki/Bidirectional_search" -msgstr "https://en.wikipedia.org/wiki/Bidirectional_search" +"Provides the Breadth First Search traversal order from a source node to a " +"target depth level." +msgstr "提供从源节点到目标深度级别的广度优先搜索遍历顺序。" -msgid "``pgr_bdDijkstraCost``" -msgstr "``pgr_bdDijkstraCost``" +msgid "Running time: :math:`O(E + V)`" +msgstr "运行时间: :math:`O(E + V)`" -#, fuzzy -msgid "" -"``pgr_bdDijkstraCost`` — Returns the shortest path's cost using " -"Bidirectional Dijkstra algorithm." -msgstr "``pgr_bdDijkstraCost`` — 使用双向 Dijkstra 算法返回最短路径的成本。" +msgid "pgr_breadthFirstSearch(`Edges SQL`_, **root vid**, [**options**])" +msgstr "pgr_breadthFirstSearch(`Edges SQL`_, **root vid**, [**options**])" -msgid "``pgr_bdDijkstraCost`` (`Combinations`_)" -msgstr "``pgr_bdDijkstraCost`` (`组合`_)" +msgid "pgr_breadthFirstSearch(`Edges SQL`_, **root vids**, [**options**])" +msgstr "pgr_breadthFirstSearch(`Edges SQL`_, **root vids**, [**options**])" -msgid "" -"The ``pgr_bdDijkstraCost`` function sumarizes of the cost of the shortest " -"path using the bidirectional Dijkstra Algorithm." -msgstr "``pgr_bdDijkstraCost`` 函数使用双向 Dijkstra 算法汇总最短路径的成本。" +msgid "**options:** ``[max_depth, directed]``" +msgstr "**options:** ``[max_depth, directed]``" -msgid "" -"pgr_bdDijkstraCost(`Edges SQL`_, **start vid**, **end vid** , [``directed``])" -msgstr "" -"pgr_bdDijkstraCost(`Edges SQL`_, **start vid**, **end vid** , [``directed``])" +msgid "Returns set of |result-bfs|" +msgstr "返回 |result-bfs| 的集合" msgid "" -"pgr_bdDijkstraCost(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" +"From root vertex :math:`6` on a **directed** graph with edges in ascending " +"order of ``id``" msgstr "" -"pgr_bdDijkstraCost(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" +"从根顶点 :math:`6` 开始,该顶点位于一个 **有向** 图中,其边按 ``id`` 升序排列" msgid "" -"pgr_bdDijkstraCost(`Edges SQL`_, **start vids**, **end vid** , " -"[``directed``])" +"From root vertices :math:`\\{12, 6\\}` on an **undirected** graph with " +"**depth** :math:`<= 2` and edges in ascending order of ``id``" msgstr "" -"pgr_bdDijkstraCost(`Edges SQL`_, **start vids**, **end vid** , " -"[``directed``])" +"从根顶点开始 :math:`{12, 6\\}` 在一个 **无向** 图上,**depth** :math:`<=2`," +"边按 ``id`` 升序排列" -msgid "" -"pgr_bdDijkstraCost(`Edges SQL`_, **start vids**, **end vids**, " -"[``directed``])" -msgstr "" -"pgr_bdDijkstraCost(`Edges SQL`_, **start vids**, **end vids**, " -"[``directed``])" +msgid "DFS optional parameters" +msgstr "DFS 可选参数" -msgid "pgr_bdDijkstraCost(`Edges SQL`_, `Combinations SQL`_, [ ``directed``])" -msgstr "pgr_bdDijkstraCost(`Edges SQL`_, `Combinations SQL`_, [ ``directed``])" +msgid "Same as `Single vertex`_ with edges in ascending order of ``id``." +msgstr "与 `单个顶点`_ 相同,边按 ``id`` 升序排列。" -msgid "pgr_bdDijkstraCost(`Edges SQL`_, `Combinations SQL`_, [``directed``])" -msgstr "pgr_bdDijkstraCost(`Edges SQL`_, `Combinations SQL`_, [``directed``])" +msgid "Same as `Single vertex`_ with edges in descending order of ``id``." +msgstr "与 `单个顶点`_ 相同,边按 ``id`` 降序排列。" -msgid "``pgr_bdDijkstraCostMatrix``" -msgstr "``pgr_bdDijkstraCostMatrix``" +msgid "The resulting traversal is different." +msgstr "由此产生的遍历是不同的。" msgid "" -"``pgr_bdDijkstraCostMatrix`` - Calculates a cost matrix using :doc:" -"`pgr_bdDijkstra`." +"The left image shows the result with ascending order of ids and the right " +"image shows with descending order of the edge identifiers." msgstr "" -"``pgr_bdDijkstraCostMatrix`` - 使用 :doc:`pgr_bdDijkstra` 计算成本矩阵。" +"左图显示的是按 ID 升序排列的结果,右图显示的是按边缘标识符降序排列的结果。" -msgid "" -"Using bidirectional Dijkstra algorithm, calculate and return a cost matrix." -msgstr "使用双向Dijkstra算法,计算并返回成本矩阵。" +msgid "|ascending| |descending|" +msgstr "|ascending| |descending|" -msgid "pgr_bdDijkstraCostMatrix(`Edges SQL`_, **start vids**, [``directed``])" -msgstr "pgr_bdDijkstraCostMatrix(`Edges SQL`_, **start vids**, [``directed``])" +msgid "ascending" +msgstr "升序" + +msgid "descending" +msgstr "降序" msgid "" -"Symmetric cost matrix for vertices :math:`\\{5, 6, 10, 15\\}` on an " -"**undirected** graph" +"`Wikipedia: Breadth First Search algorithm `__" msgstr "" -"在一个 **无向** 图上的顶点集合 :math:`\\{5, 6, 10, 15\\}` 的对称成本矩阵" +"`维基百科:广度优先搜索算法 `__" -msgid "Use with :doc:`pgr_TSP`." -msgstr "与 :doc:`pgr_TSP` 一起使用。" +msgid "``pgr_bridges``" +msgstr "``pgr_bridges``" -msgid "``pgr_bellmanFord - Experimental``" -msgstr "``pgr_bellmanFord - 实验``" +msgid "``pgr_bridges`` - Return the bridges of an undirected graph." +msgstr "``pgr_bridges`` - 返回无向图的桥。" -#, fuzzy -msgid "``pgr_bellmanFord`` — Shortest path using Bellman-Ford algorithm." -msgstr "``pgr_bellmanFord`` — 使用 Bellman-Ford 算法的最短路径。" +msgid "" +"A bridge is an edge of an undirected graph whose deletion increases its " +"number of connected components. This implementation can only be used with an " +"undirected graph." +msgstr "" +"桥是指一个无向图中的边,如果删除它会增加该图的连通分量数量。此实现仅适用于无" +"向图。" -msgid "New **experimental** signature:" -msgstr "新 **实验性** 签名:" +msgid "``edge`` ascending" +msgstr "``edge`` 升序" -msgid "``pgr_bellmanFord`` (`Combinations`_)" -msgstr "``pgr_bellmanFord`` (`组合`_)" +msgid "Running time: :math:`O(E * (V + E))`" +msgstr "运行时间: :math:`O(E * (V + E))`" -msgid "New **experimental** signatures:" -msgstr "新 **实验** 签名:" +msgid "pgr_bridges(`Edges SQL`_)" +msgstr "pgr_bridges(`Edges SQL`_)" -msgid "``pgr_bellmanFord`` (`One to One`_)" -msgstr "``pgr_bellmanFord`` (`一对一`_)" +msgid "Returns set of |result-edge|" +msgstr "返回集合 |result-edge|" -msgid "``pgr_bellmanFord`` (`One to Many`_)" -msgstr "``pgr_bellmanFord`` (`一对多`_)" +msgid "The bridges of the graph" +msgstr "图的桥" -msgid "``pgr_bellmanFord`` (`Many to One`_)" -msgstr "``pgr_bellmanFord`` (`多对一`_)" +msgid "Identifier of the edge that is a bridge." +msgstr "作为桥的边的标识符。" -msgid "``pgr_bellmanFord`` (`Many to Many`_)" -msgstr "``pgr_bellmanFord`` (`多对多`_)" +msgid "https://en.wikipedia.org/wiki/Bridge_%28graph_theory%29" +msgstr "https://en.wikipedia.org/wiki/Bridge_%28graph_theory%29" +#, fuzzy msgid "" -"Bellman-Ford's algorithm, is named after Richard Bellman and Lester Ford, " -"who first published it in 1958 and 1956, respectively.It is a graph search " -"algorithm that computes shortest paths from a starting vertex " -"(``start_vid``) to an ending vertex (``end_vid``) in a graph where some of " -"the edge weights may be negative. Though it is more versatile, it is slower " -"than Dijkstra's algorithm.This implementation can be used with a directed " -"graph and an undirected graph." +"`Boost: Connected components `__" msgstr "" -"Bellman-Ford算法以Richard Bellman和Lester Ford的名字命名,他们分别于1958年和" -"1956年首次发表了这个算法。它是一种图搜索算法,用于计算从起始顶点" -"(``start_vid``)到终点顶点(``end_vid``)的最短路径,其中一些边的权重可以为" -"负数。尽管它更加通用,但比Dijkstra算法更慢。这个实现可以用于有向图和无向图。" +"Boost: ` 已连接组件 `__" -msgid "" -"Process is valid for edges with both positive and negative edge weights." -msgstr "该过程对于具有正边权重和负边权重的边都有效。" +msgid "``pgr_chinesePostman`` - Experimental" +msgstr "``pgr_chinesePostman`` - 实验" msgid "" -"When the start vertex and the end vertex are the same, there is no path. The " -"agg_cost would be :math:`0`." +"``pgr_chinesePostman`` — Calculates the shortest circuit path which contains " +"every edge in a directed graph and starts and ends on the same vertex." msgstr "" -"当起始顶点和结束顶点相同时,不存在路径。聚合成本(agg_cost)将为 :math:`0`。" +"``pgr_chinesePostman`` — 计算包含有向图中的每条边并从同一顶点开始和结束的最短" +"回路路径。" -msgid "" -"When the start vertex and the end vertex are different, and there exists a " -"path between them without having a *negative cycle*. The agg_cost would be " -"some finite value denoting the shortest distance between them." -msgstr "" -"当起始顶点和结束顶点不同,并且它们之间存在路径且不存在*负循环*时。 agg_cost " -"将是某个有限值,表示它们之间的最短距离。" +msgid "Returns ``EMPTY SET`` on a disconnected graph" +msgstr "在一个不连通的图上返回 ``EMPTY SET``" -msgid "" -"When the start vertex and the end vertex are different, and there exists a " -"path between them, but it contains a *negative cycle*. In such case, " -"agg_cost for those vertices keep on decreasing furthermore, Hence agg_cost " -"can’t be defined for them." -msgstr "" -"当起始顶点和结束顶点不同,并且它们之间存在路径,但包含*负循环*时。 在这种情况" -"下,这些顶点的 agg_cost 继续减少,因此无法为它们定义 agg_cost 。" +msgid "pgr_chinesePostman(`Edges SQL`_)" +msgstr "pgr_chinesePostman(`Edges SQL`_)" -msgid "" -"When the start vertex and the end vertex are different, and there is no " -"path. The agg_cost is :math:`\\infty`." -msgstr "" -"当起始顶点和结束顶点不同且不存在路径时,聚合成本(agg_cost)为 :math:" -"`\\infty`。" +msgid "Returns set of |result-1-1-no-seq|" +msgstr "返回 |result-1-1-no-seq| 的集合" -msgid "" -"For optimization purposes, any duplicated value in the `start_vids` or " -"`end_vids` are ignored." -msgstr "出于优化目的,`start_vids`或 `end_vids` 中的任何重复值都将被忽略。" +msgid "Returns set of ``(seq, node, edge, cost, agg_cost)``" +msgstr "Returns set of ``(seq, node, edge, cost, agg_cost)``" -msgid "Running time: :math:`O(| start\\_vids | * ( V * E))`" -msgstr "运行时间: :math:`O(| start\\_vids | * ( V * E))`" +msgid "Sequential value starting from ``1``" +msgstr "从 ``1`` 开始的顺序值" msgid "" -"pgr_bellmanFord(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" +"Identifier of the edge used to go from ``node`` to the next node in the path " +"sequence. ``-1`` for the last node of the path." msgstr "" -"pgr_bellmanFord(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" +"用于从路径序列中的 ``节点`` 到下一个节点的边的标识符。``-1`` 表示路径的最后一" +"个节点。" + +msgid "Aggregate cost from ``start_v`` to ``node``." +msgstr "从 ``start_v`` 到 ``node`` 的总成本。" + +msgid "``pgr_chinesePostmanCost`` - Experimental" +msgstr "``pgr_chinesePostmanCost`` - 实验" msgid "" -"pgr_bellmanFord(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" +"``pgr_chinesePostmanCost`` — Calculates the minimum costs of a circuit path " +"which contains every edge in a directed graph and starts and ends on the " +"same vertex." msgstr "" -"pgr_bellmanFord(`Edges SQL`_, **start vid**, **end vids**, [``directed``])" +"``pgr_chinesePostmanCost`` — 计算一个包含有向图中的每条边、以同一顶点为起点和" +"终点的最短成本的回路路径。" + +msgid "Return value when the graph if disconnected" +msgstr "当图是不连通的时候返回的数值" + +msgid "pgr_chinesePostmanCost(`Edges SQL`_)" +msgstr "pgr_chinesePostmanCost(`Edges SQL`_)" + +msgid "RETURNS ``FLOAT``" +msgstr "RETURNS ``FLOAT``" + +msgid "``pgr_chinesepostmancost``" +msgstr "``pgr_chinesepostmancost``" + +msgid "Minimum costs of a circuit path." +msgstr "一个回路路径的最小成本。" + +msgid "``pgr_connectedComponents``" +msgstr "``pgr_connectedComponents``" msgid "" -"pgr_bellmanFord(`Edges SQL`_, **start vids**, **end vid**, [``directed``])" +"``pgr_connectedComponents`` — Connected components of an undirected graph " +"using a DFS-based approach." msgstr "" -"pgr_bellmanFord(`Edges SQL`_, **start vids**, **end vid**, [``directed``])" +"``pgr_connectedComponents`` — 使用基于深度优先搜索(DFS)的方法计算无向图的连" +"通分量。" msgid "" -"pgr_bellmanFord(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" -msgstr "" -"pgr_bellmanFord(`Edges SQL`_, **start vids**, **end vids**, [``directed``])" +"A connected component of an undirected graph is a set of vertices that are " +"all reachable from each other." +msgstr "无向图的连通部分是指相互之间均可到达的顶点集合。" -msgid "pgr_bellmanFord(`Edges SQL`_, `Combinations SQL`_, [``directed``])" -msgstr "pgr_bellmanFord(`Edges SQL`_, `Combinations SQL`_, [``directed``])" +msgid "Components are described by vertices" +msgstr "连通分量由顶点描述" + +msgid "``component`` ascending" +msgstr "``component`` 升序" + +msgid "pgr_connectedComponents(`Edges SQL`_)" +msgstr "pgr_connectedComponents(`Edges SQL`_)" + +msgid "Returns set of |result-component-V|" +msgstr "返回集合 |result-component-V|" + +msgid "The connected components of the graph" +msgstr "图的连通分量" -#, fuzzy -msgid "" -"From vertex :math:`6` to vertices :math:`\\{ 10, 17\\}` on a **directed** " -"graph" -msgstr "在 **有向** 图上从顶点 :math:`6` 到顶点 :math:`\\{10, 17\\}`" +msgid "Has the value of the minimum node identifier in the component." +msgstr "具有组件中最小节点标识符的值。" -msgid "Using a combinations table on an **undirected** graph." -msgstr "在 **无向** 图上使用组合表。" +msgid "Identifier of the vertex that belongs to the ``component``." +msgstr "属于该 ``组件`` 的顶点的标识符。" -msgid "https://en.wikipedia.org/wiki/Bellman%E2%80%93Ford_algorithm" -msgstr "https://en.wikipedia.org/wiki/Bellman%E2%80%93Ford_algorithm" +msgid "Connecting disconnected components" +msgstr "连接不连通的组件" -msgid "``pgr_betweennessCentrality``" +msgid "" +"wikipedia: `Connected component `__" msgstr "" +"维基百科: `连通分量 `__" + +msgid "``pgr_contraction``" +msgstr "``pgr_contraction``" msgid "" -"``pgr_betweennessCentrality`` - Calculates the relative betweeness " -"centrality using Brandes Algorithm" -msgstr "" +"``pgr_contraction`` — Performs graph contraction and returns the contracted " +"vertices and edges." +msgstr "``pgr_contraction`` — 执行图收缩操作并返回收缩后的顶点和边。" #, fuzzy -msgid "Version 3.7.0" +msgid "Version 3.8.0" msgstr "版本3.6.0" -msgid "New **experimental** function:" -msgstr "新的 **实验** 函数:" +#, fuzzy +msgid "New signature:" +msgstr "新签名" msgid "" -"The Brandes Algorithm takes advantage of the sparse graphs for evaluating " -"the betweenness centrality score of all vertices." +"Previously compulsory parameter **Contraction order** is now optional with " +"name ``methods``." msgstr "" +#, fuzzy +msgid "New name and order of optional parameters." +msgstr "接近可选参数" + +#, fuzzy msgid "" -"Betweenness centrality measures the extent to which a vertex lies on the " -"shortest paths between all other pairs of vertices. Vertices with a high " -"betweenness centrality score may have considerable influence in a network by " -"the virtue of their control over the shortest paths passing between them." -msgstr "" +"Deprecated signature pgr_contraction(text,bigint[],integer,bigint[],boolean)" +msgstr "_pgr_dijkstranear(text,bigint,anyarray,bigint,boolean)" + +msgid "Name change from ``pgr_contractGraph``" +msgstr "``pgr_contractGraph`` 的名称更改" + +msgid "Bug fixes" +msgstr "Bug修复" msgid "" -"The removal of these vertices will affect the network by disrupting the it, " -"as most of the shortest paths between vertices pass through them." +"Contraction reduces the size of the graph by removing some of the vertices " +"and edges and, for example, might add edges that represent a sequence of " +"original edges decreasing the total time and space used in graph algorithms." msgstr "" +"收缩通过移除部分顶点和边来减小图的大小,例如,可以添加代表原始边序列的边,从" +"而减少图算法所用的总时间和空间。" #, fuzzy -msgid "This implementation work for both directed and undirected graphs." -msgstr "该实现适用于 **有向** 图和 **无向** 图。" +msgid "Does not return the full contracted graph." +msgstr "不返回完整的收缩图" #, fuzzy -msgid "Running time: :math:`\\Theta(VE)`" -msgstr "运行时间: :math:`O(V + E)`" +msgid "Only changes on the graph are returned." +msgstr "仅返回图上的更改" #, fuzzy -msgid "Running space: :math:`\\Theta(VE)`" -msgstr "运行时间: :math:`O(V + E)`" +msgid "The returned values include:" +msgstr "返回值包括" #, fuzzy -msgid "Throws when there are no edges in the graph" -msgstr "当图中没有边时,返回 EMPTY SET。" +msgid "The new edges generated by linear contraction." +msgstr "插入由 pgr_contraction 生成的新边。" -msgid "pgr_betweennessCentrality(`Edges SQL`_, [``directed``])" -msgstr "pgr_betweennessCentrality(`Edges SQL`_, [``directed``])" +#, fuzzy +msgid "The modified vertices generated by dead end contraction." +msgstr "通过死端收缩修改顶点。" + +msgid "The returned values are ordered as follows:" +msgstr "返回值的排序如下:" #, fuzzy -msgid "Returns set of ``(vid, centrality)``" -msgstr "返回集合 ``(edge, cost)``" +msgid "column ``id`` ascending when its a modified vertex." +msgstr "当类型为 ``v``时,按列 ``id`` 升序" #, fuzzy -msgid "For a directed graph with edges :math:`\\{1, 2, 3, 4\\}`." -msgstr "对于有边 :math:`\\{1, 2, 3, 4\\}` 的有向子图。" +msgid "column ``id`` with negative numbers descending when its a new edge." +msgstr "当类型为 ``e`` 时,按列``id`` 降序" #, fuzzy -msgid "Explanation" -msgstr "应用" +msgid "" +"Currently there are two types of contraction methods included in this " +"function:" +msgstr "目前有两种类型的收缩方法" -msgid "The betweenness centrality are between parenthesis." +msgid "Dead End Contraction. See :doc:`pgr_contractionDeadEnd`." msgstr "" -msgid "The leaf vertices have betweenness centrality :math:`0`." +msgid "Linear Contraction. See :doc:`pgr_contractionLinear`." msgstr "" #, fuzzy -msgid "" -"Betweenness centrality of vertex :math:`6` is higher than of vertex :math:" -"`10`." -msgstr "从顶点 :math:`11` 到顶点 :math:`12`" +msgid "pgr_contraction(`Edges SQL`_, [**options**])" +msgstr "pgr_contraction(`Edges SQL`_, **contraction order**, [**options**])" #, fuzzy -msgid "Removing vertex :math:`6` will create three graph components." -msgstr "顶点 :math:`w` 已从图中移除" - -msgid "Removing vertex :math:`10` will create two graph components." -msgstr "" +msgid "**options:** ``[directed, methods, cycles, forbidden]``" +msgstr "**options:** ``[directed, details]``" -msgid "``vid``" -msgstr "``vid``" +msgid "Returns set of |result-contract|" +msgstr "Returns set of |result-contract|" #, fuzzy -msgid "``centrality``" -msgstr "``capacity``" +msgid "Dead end and linear contraction in that order on an undirected graph." +msgstr "在无向图上按顺序进行死端和线性收缩。" -msgid "" -"Relative betweenness centrality score of the vertex (will be in range [0,1])" -msgstr "" +msgid "Contraction optional parameters" +msgstr "可选收缩参数" -#, fuzzy -msgid "" -"Boost's `betweenness_centrality `_" +msgid "``methods``" msgstr "" -"`Boost:Hawick 电路算法 `__" - -msgid "Queries use the :doc:`sampledata` network." -msgstr "查询使用 :doc:`sampledata` 网络。" - -msgid "``pgr_biconnectedComponents``" -msgstr "``pgr_biconnectedComponents``" - -msgid "" -"``pgr_biconnectedComponents`` — Biconnected components of an undirected " -"graph." -msgstr "``pgr_biconnectedComponents`` — 无向图的双连通分量。" - -msgid "Result columns change:" -msgstr "结果列发生变化:" -msgid "``n_seq`` is removed" -msgstr "``n_seq`` 被删除" - -msgid "``seq`` changed type to ``BIGINT``" -msgstr "``seq`` 将类型更改为``BIGINT``" +#, fuzzy +msgid "``INTEGER[]``" +msgstr "``INTEGER``" -msgid "" -"The biconnected components of an undirected graph are the maximal subsets of " -"vertices such that the removal of a vertex from particular component will " -"not disconnect the component. Unlike connected components, vertices may " -"belong to multiple biconnected components. Vertices can be present in " -"multiple biconnected components, but each edge can only be contained in a " -"single biconnected component." -msgstr "" -"无向图的双连通分量是顶点的最大子集,因此从特定分量中删除顶点不会断开该分量。 " -"与连接组件不同,顶点可以属于多个双连接组件。 顶点可以存在于多个双连通分量中," -"但每条边只能包含在单个双连通分量中。" +#, fuzzy +msgid "``ARRAY[1,2]``" +msgstr "``ARRAY[BIGINT]``" -msgid "Components are described by edges." -msgstr "组件由边描述。" +msgid "Ordered contraction operations." +msgstr "有序收缩操作。" -msgid "``component`` ascending." -msgstr "``component`` 升序。" +msgid "1 = Dead end contraction" +msgstr "1 = 死端收缩" -msgid "``edge`` ascending." -msgstr "``edge`` 升序。" +msgid "2 = Linear contraction" +msgstr "2 = 线性收缩" -msgid "pgr_biconnectedComponents(`Edges SQL`_)" -msgstr "pgr_biconnectedComponents(`Edges SQL`_)" +#, fuzzy +msgid "``cycles``" +msgstr "``max_cycles``" -msgid "Returns set of |result-component-E|" -msgstr "Returns set of |result-component-E|" +msgid ":math:`1`" +msgstr ":math:`1`" -msgid "The biconnected components of the graph" -msgstr "图的双连通分量" +#, fuzzy +msgid "Number of times the contraction methods will be performed." +msgstr "对 ``contraction_order`` 执行收缩操作的次数。" -msgid "``component``" -msgstr "``component``" +#, fuzzy +msgid "``forbidden``" +msgstr "``forbidden_vertices``" -msgid "Component identifier." -msgstr "分量标识符。" +msgid "``BIGINT[]``" +msgstr "``BIGINT[]``" -msgid "Has the value of the minimum edge identifier in the component." -msgstr "具有组件中最小边标识符的值。" +#, fuzzy +msgid "``ARRAY[]::BIGINT[]``" +msgstr "``ARRAY[BIGINT]``" -msgid "Identifier of the edge that belongs to the ``component``." -msgstr "属于该 ``分量`` 的边的标识符。" +msgid "Identifiers of vertices forbidden for contraction." +msgstr "禁止收缩的顶点标识符。" -msgid "" -"Boost: `Biconnected components `__" -msgstr "" -"Boost: `双连通分量 `__" +msgid "The function returns a single row. The columns of the row are:" +msgstr "该函数返回一行数据。该行的列包括:" -msgid "``pgr_binaryBreadthFirstSearch`` - Experimental" -msgstr "``pgr_binaryBreadthFirstSearch`` - 实验" +msgid "``type``" +msgstr "``type``" #, fuzzy -msgid "" -"``pgr_binaryBreadthFirstSearch`` — Returns the shortest path in a binary " -"graph." -msgstr "``pgr_binaryBreadthFirstSearch`` — 返回二元图中的最短路径。" - -msgid "" -"Any graph whose edge-weights belongs to the set {0,X}, where 'X' is any non-" -"negative integer, is termed as a 'binary graph'." -msgstr "任何边权属于集合 {0,X} 的图(其中“X”是任何非负整数)都被称为“二元图”。" +msgid "Type of the row." +msgstr "``id`` 的类型。" -msgid "pgr_binaryBreadthFirstSearch(`Combinations`_)" -msgstr "pgr_binaryBreadthFirstSearch(`组合`_)" +msgid "``v`` when the row is a vertex." +msgstr "当该行表示一个顶点时,列为 ``v``。" -msgid "pgr_binaryBreadthFirstSearch(`One to One`_)" -msgstr "pgr_binaryBreadthFirstSearch(`一对一`_)" +#, fuzzy +msgid "Column ``id`` has a positive value." +msgstr "列 ``id`` 具有正值" -msgid "pgr_binaryBreadthFirstSearch(`One to Many`_)" -msgstr "pgr_binaryBreadthFirstSearch(`一对多`_)" +msgid "``e`` when the row is an edge." +msgstr "当行是边时,则为 ``e``。" -msgid "pgr_binaryBreadthFirstSearch(`Many to One`_)" -msgstr "pgr_binaryBreadthFirstSearch(`多对一`_)" +#, fuzzy +msgid "Column ``id`` has a negative value." +msgstr "列 ``id`` 具有负值" -msgid "pgr_binaryBreadthFirstSearch(`Many to Many`_)" -msgstr "pgr_binaryBreadthFirstSearch(`多对多`_)" +msgid "All numbers on this column are ``DISTINCT``" +msgstr "此列中的所有数字都是 ``DISTINCT``" -msgid "" -"It is well-known that the shortest paths between a single source and all " -"other vertices can be found using Breadth First Search in :math:`O(|E|)` in " -"an unweighted graph, i.e. the distance is the minimal number of edges that " -"you need to traverse from the source to another vertex. We can interpret " -"such a graph also as a weighted graph, where every edge has the weight :math:" -"`1`. If not alledges in graph have the same weight, that we need a more " -"general algorithm, like Dijkstra's Algorithm which runs in :math:`O(|E|log|" -"V|)` time." -msgstr "" -"众所周知,在无权重图中,使用广度优先搜索(Breadth First Search)可以在 :math:" -"`O(|E|)` 内找到单个源点与所有其他顶点之间的最短路径,也就是说,距离是指从源点" -"到另一个顶点所需的最少边数。我们也可以把这样的图解释为加权图,其中每条边的权" -"重为 :math:`1`。如果图中不是所有边的权重都相同,我们就需要一种更通用的算法," -"比如 Dijkstra 算法,它的运行时间为 :math:`O(|E|log|V||)`。" +msgid "When ``type`` = **'v'**." +msgstr "当 ``type`` = **'v'** 时。" -msgid "" -"However if the weights are more constrained, we can use a faster algorithm. " -"This algorithm, termed as 'Binary Breadth First Search' as well as '0-1 " -"BFS', is a variation of the standard Breadth First Search problem to solve " -"the SSSP (single-source shortest path) problem in :math:`O(|E|)`, if the " -"weights of each edge belongs to the set {0,X}, where 'X' is any non-negative " -"real integer." -msgstr "" -"然而,如果权重受到更多限制,我们可以使用一种更快的算法。这个算法被称为'二进制" -"广度优先搜索',也称为'0-1 BFS',它是标准广度优先搜索问题的一种变体,用于解决" -"单源最短路径(SSSP)问题,当每条边的权重属于集合{0,X},其中'X'是任意非负实数" -"时,其时间复杂度为 :math:`O(|E|)`。" +msgid "Identifier of the modified vertex." +msgstr "修改顶点的标识符。" -msgid "" -"Process is done only on 'binary graphs'. ('Binary Graph': Any graph whose " -"edge-weights belongs to the set {0,X}, where 'X' is any non-negative real " -"integer.)" -msgstr "" -"过程仅在“二元图”上完成。 (“二元图”:边权重属于集合 {0,X} 的任何图,其中“X”是" -"任何非负实整数。)" +msgid "When ``type`` = **'e'**." +msgstr "当 ``type`` = **'e'** 时。" -msgid "Running time: :math:`O(| start\\_vids | * |E|)`" -msgstr "运行时间: :math:`O(| start\\_vids | * |E|)`" +msgid "Decreasing sequence starting from **-1**." +msgstr "从 **-1** 开始递减序列。" msgid "" -"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vid**, **end vid**, " -"[``directed``])" -msgstr "" -"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vid**, **end vid**, " -"[``directed``])" +"Representing a pseudo `id` as is not incorporated in the set of original " +"edges." +msgstr "表示未包含在原始边集中的伪`id` 。" -msgid "" -"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vid**, **end vids**, " -"[``directed``])" -msgstr "" -"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vid**, **end vids**, " -"[``directed``])" +msgid "``contracted_vertices``" +msgstr "``contracted_vertices``" -msgid "" -"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vids**, **end vid**, " -"[``directed``])" -msgstr "" -"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vids**, **end vid**, " -"[``directed``])" +msgid "Array of contracted vertex identifiers." +msgstr "收缩顶点标识符数组。" -msgid "" -"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vids**, **end vids**, " -"[``directed``])" -msgstr "" -"pgr_binaryBreadthFirstSearch(`Edges SQL`_, **start vids**, **end vids**, " -"[``directed``])" +msgid "When ``type`` = **'v'**: :math:`-1`" +msgstr "当 ``type`` = **'v'**: :math:`-1` 时" msgid "" -"pgr_binaryBreadthFirstSearch(`Edges SQL`_, `Combinations SQL`_, " -"[``directed``])" +"When ``type`` = **'e'**: Identifier of the source vertex of the current edge " +"(``source``, ``target``)." msgstr "" -"pgr_binaryBreadthFirstSearch(`Edges SQL`_, `Combinations SQL`_, " -"[``directed``])" +"当 ``type`` = **'e'** 时:当前边(``source``,``target`` )的source顶点标识" +"符。" msgid "" -"**Note:** Using the :doc:`sampledata` Network as all weights are same (i.e :" -"math:`1``)" +"When ``type`` = **'e'**: Identifier of the target vertex of the current edge " +"(``source``, ``target``)." msgstr "" -"**注意:** 使用 :doc:`sampledata` 网络,因为所有权重都相同(即为 :math:`1`)" - -msgid "https://cp-algorithms.com/graph/01_bfs.html" -msgstr "https://cp-algorithms.com/graph/01_bfs.html" +"当 ``type`` = **'e'** 时:当前边(``source``, ``target``)的target 顶点标识符。" msgid "" -"https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm#Specialized_variants" -msgstr "" -"https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm#Specialized_variants" +"When ``type`` = **'e'**: Weight of the current edge (``source``, ``target``)." +msgstr "当 ``type`` = **'e'** 时:当前边(``source``, ``target``)的权重。" -msgid "pgr_bipartite -Experimental" -msgstr "pgr_bipartite -实验" +msgid "Only dead end contraction" +msgstr "仅死端收缩" -msgid "" -"``pgr_bipartite`` — Disjoint sets of vertices such that no two vertices " -"within the same set are adjacent." -msgstr "`pgr_bipartite` - 不相邻的顶点集合,同一集合中没有两个顶点相邻。" +msgid "Only linear contraction" +msgstr "仅线性收缩" -msgid "New **experimental** signature" -msgstr "新的 **实验** 签名" +msgid "The cycle" +msgstr "循环" +#, fuzzy msgid "" -"A bipartite graph is a graph with two sets of vertices which are connected " -"to each other, but not within themselves. A bipartite graph is possible if " -"the graph coloring is possible using two colors such that vertices in a set " -"are colored with the same color." +"Contracting a graph can be done with more than one operation. The order of " +"the operations affect the resulting contracted graph, after applying one " +"operation, the set of vertices that can be contracted by another operation " +"changes." msgstr "" -"二方图是指有两组顶点的图,这两组顶点相互连接,但内部没有连接。如果可以使用两" -"种颜色对图形着色,从而使一个集合中的顶点着色为相同的颜色,那么就可能是一个二" -"方图。" +"收缩一张图可以通过多个操作来完成。 操作的顺序会影响生成的收缩图,在应用一个操" +"作后,可以由另一操作收缩的顶点集会发生变化。" -msgid "The algorithm works in undirected graph only." -msgstr "该算法只适用于无向图。" +#, fuzzy +msgid "This implementation cycles ``cycles`` times through the ``methods`` ." +msgstr "此实现通过 ``operations_order``循环 ``max_cycles`` 次。" -msgid "The returned values are not ordered." -msgstr "返回值没有排序。" +msgid "Contracting sample data" +msgstr "收缩示例数据" msgid "" -"The algorithm checks graph is bipartite or not. If it is bipartite then it " -"returns the node along with two colors `0` and `1` which represents two " -"different sets." -msgstr "" -"该算法检查图是否是二分图。 如果它是二分的,那么它返回节点以及代表两个不同集合" -"的两种颜色 `0` 和`1`。" - -msgid "If graph is not bipartite then algorithm returns empty set." -msgstr "如果图不是两部分的,那么算法会返回空集。" - -msgid "pgr_bipartite(`Edges SQL`_)" -msgstr "pgr_bipartite(`Edges SQL`_)" +"In this section, building and using a contracted graph will be shown by " +"example." +msgstr "在本节中,将通过示例展示构建和使用收缩图。" -msgid "Returns set of |result-node-color|" -msgstr "Returns set of |result-node-color|" +msgid "The :doc:`sampledata` for an undirected graph is used" +msgstr "使用无向图的 :doc:`sampledata`" -msgid "When the graph is bipartite" -msgstr "当图形为两方时" +msgid "a dead end operation first followed by a linear operation." +msgstr "首先是死端操作,然后是线性操作。" -msgid "Additional Example" -msgstr "附加示例" +msgid "Construction of the graph in the database" +msgstr "数据库中图的构建" -msgid "The odd length cyclic graph can not be bipartite." -msgstr "奇长循环图不可能是两部分的。" +msgid "The original graph:" +msgstr "原始图:" +#, fuzzy msgid "" -"The edge :math:`5 \\rightarrow 1` will make subgraph with vertices :math:" -"`\\{1, 3, 7, 6, 5\\}` an odd length cyclic graph, as the cycle has 5 " -"vertices." -msgstr "" -"边 :math:`5 \\rightarrow 1` 将使顶点为 :math:`\\{1, 3, 7, 6, 5\\}` 的子图成为" -"奇数长度的循环图,因为循环有 5 个顶点。" - -msgid "Edges in blue represent odd length cycle subgraph." -msgstr "蓝色边代表奇数长度循环子图。" - -msgid "``pgr_boykovKolmogorov``" -msgstr "``pgr_boykovKolmogorov``" +"The results do not represent the contracted graph. They represent the " +"changes that need to be done to the graph after applying the contraction " +"methods." +msgstr "结果不代表收缩图。 它们表示应用收缩算法后对图所做的更改。" msgid "" -"``pgr_boykovKolmogorov`` — Calculates the flow on the graph edges that " -"maximizes the flow from the sources to the targets using Boykov Kolmogorov " -"algorithm." +"Observe that vertices, for example, :math:`6` do not appear in the results " +"because it was not affected by the contraction algorithm." msgstr "" -"`pgr_boykovKolmogorov`` - 使用 Boykov Kolmogorov 算法计算图边的流量,使从源到" -"目标的流量最大。" - -msgid "New **proposed** signature" -msgstr "新的 **拟议** 签名" - -msgid "``pgr_boykovKolmogorov`` (`Combinations`_)" -msgstr "``pgr_boykovKolmogorov`` (`组合`_)" +"例如,观察到顶点 :math:`6` 没有出现在结果中,因为它不受收缩算法的影响。" -msgid "Renamed from ``pgr_maxFlowBoykovKolmogorov``" -msgstr "从 ``pgr_maxFlowBoykovKolmogorov`` 更名而来" +msgid "After doing the dead end contraction operation:" +msgstr "进行死端收缩操作后:" -msgid "**Proposed** function" -msgstr "**拟议** 函数" +msgid "After doing the linear contraction operation to the graph above:" +msgstr "对上图进行线性收缩运算后:" -msgid "New **Experimental** function" -msgstr "新的 **实验** 函数" +msgid "The process to create the contraction graph on the database:" +msgstr "在数据库上创建收缩图的过程:" -msgid "Running time: Polynomial" -msgstr "运行时间:多项式时间" +msgid "Add additional columns" +msgstr "添加附加列" -msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vid**, **end vid**)" -msgstr "pgr_boykovKolmogorov(`Edges SQL`_, **start vid**, **end vid**)" +msgid "" +"Adding extra columns to the edges and vertices tables. In this documentation " +"the following will be used:" +msgstr "" -msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vid**, **end vids**)" -msgstr "pgr_boykovKolmogorov(`Edges SQL`_, **start vid**, **end vids**)" +#, fuzzy +msgid "Column." +msgstr "列" -msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vids**, **end vid**)" -msgstr "pgr_boykovKolmogorov(`Edges SQL`_, **start vids**, **end vid**)" +msgid "The vertices set belonging to the vertex/edge" +msgstr "属于顶点/边的顶点集" -msgid "pgr_boykovKolmogorov(`Edges SQL`_, **start vids**, **end vids**)" -msgstr "pgr_boykovKolmogorov(`Edges SQL`_, **start vids**, **end vids**)" +msgid "``is_contracted``" +msgstr "``is_contracted``" -msgid "pgr_boykovKolmogorov(`Edges SQL`_, `Combinations SQL`_)" -msgstr "pgr_boykovKolmogorov(`Edges SQL`_, `Combinations SQL`_)" +msgid "On the vertex table" +msgstr "在顶点表上" -msgid "Returns set of |result-flow|" -msgstr "Returns set of |result-flow|" +msgid "" +"when ``true`` the vertex is contracted, its not part of the contracted graph." +msgstr "当 ``true`` 时,顶点收缩,它不是收缩图的一部分。" -msgid "From vertex :math:`11` to vertex :math:`12`" -msgstr "从顶点 :math:`11` 到顶点 :math:`12`" +msgid "" +"when ``false`` the vertex is not contracted, its part of the contracted " +"graph." +msgstr "当 ``false`` 时,顶点不收缩,它是收缩图的一部分。" -msgid "From vertex :math:`11` to vertices :math:`\\{5, 10, 12\\}`" -msgstr "从顶点 :math:`11` 到顶点 :math:`\\{5, 10, 12\\}`" +msgid "``is_new``" +msgstr "``is_new``" -msgid "From vertices :math:`\\{11, 3, 17\\}` to vertex :math:`12`" -msgstr "从顶点 :math:`\\{11, 3, 17\\}` 到顶点 :math:`12`" +msgid "On the edge table" +msgstr "在边表上" msgid "" -"From vertices :math:`\\{11, 3, 17\\}` to vertices :math:`\\{5, 10, 12\\}`" -msgstr "从顶点 :math:`\\{11, 3, 17\\}` 到顶点 :math:`\\{5, 10, 12\\}`" +"when ``true`` the edge was generated by the contraction algorithm. its part " +"of the contracted graph." +msgstr "当 ``true`` 时,边缘由收缩算法生成。 它是收缩图的一部分。" msgid "" -"Using a combinations table, equivalent to calculating result from vertices :" -"math:`\\{5, 6\\}` to vertices :math:`\\{10, 15, 14\\}`." -msgstr "" -"使用组合表,相当于计算从顶点 :math:`\\{5, 6\\}` 到顶点 :math:`{\\10, 15, " -"14\\}` 的结果。" - -msgid "https://www.boost.org/libs/graph/doc/boykov_kolmogorov_max_flow.html" -msgstr "https://www.boost.org/libs/graph/doc/boykov_kolmogorov_max_flow.html" - -msgid "``pgr_breadthFirstSearch`` - Experimental" -msgstr "``pgr_breadthFirstSearch`` - 实验" +"when ``false`` the edge is an original edge, might be or not part of the " +"contracted graph." +msgstr "当 ``false`` 时,边是原始边,可能是也可能不是收缩图的一部分。" -msgid "" -"``pgr_breadthFirstSearch`` — Returns the traversal order(s) using Breadth " -"First Search algorithm." -msgstr "``pgr_breadthFirstSearch`` —使用广度优先搜索算法返回遍历顺序。" +msgid "Store contraction information" +msgstr "存储收缩信息" -msgid "``pgr_breadthFirstSearch`` (`Single Vertex`_)" -msgstr "``pgr_breadthFirstSearch`` (`单顶点搜索`_)" +#, fuzzy +msgid "Store the contraction results in a table." +msgstr "将 `收缩结果`_ 存储在表中" -msgid "``pgr_breadthFirstSearch`` (`Multiple Vertices`_)" -msgstr "``pgr_breadthFirstSearch`` (`多顶点搜索`_)" +#, fuzzy +msgid "Update the edges and vertices tables" +msgstr "创建顶点表" msgid "" -"Provides the Breadth First Search traversal order from a root vertex to a " -"particular depth." -msgstr "提供从根顶点到特定深度的广度优先搜索遍历顺序。" - -msgid "The implementation will work on any type of graph." -msgstr "该实现适用于任何类型的图。" +"Use ``is_contracted`` column to indicate the vertices that are contracted." +msgstr "使用 ``is_contracted`` 列来指示收缩的顶点。" +#, fuzzy msgid "" -"Provides the Breadth First Search traversal order from a source node to a " -"target depth level." -msgstr "提供从源节点到目标深度级别的广度优先搜索遍历顺序。" +"Fill ``contracted_vertices`` with the information from the results that " +"belong to the vertices." +msgstr "使用属于顶点的结果中的信息填充 ``contracted_vertices``。" -msgid "Running time: :math:`O(E + V)`" -msgstr "运行时间: :math:`O(E + V)`" +msgid "Insert the new edges generated by pgr_contraction." +msgstr "插入由 pgr_contraction 生成的新边。" -msgid "pgr_breadthFirstSearch(`Edges SQL`_, **root vid**, [**options**])" -msgstr "pgr_breadthFirstSearch(`Edges SQL`_, **root vid**, [**options**])" +msgid "The contracted graph" +msgstr "收缩图" -msgid "pgr_breadthFirstSearch(`Edges SQL`_, **root vids**, [**options**])" -msgstr "pgr_breadthFirstSearch(`Edges SQL`_, **root vids**, [**options**])" +msgid "Vertices that belong to the contracted graph." +msgstr "属于收缩图的顶点。" -msgid "**options:** ``[max_depth, directed]``" -msgstr "**options:** ``[max_depth, directed]``" +msgid "Edges that belong to the contracted graph." +msgstr "属于收缩图的边。" -msgid "Returns set of |result-bfs|" -msgstr "返回 |result-bfs| 的集合" +#, fuzzy +msgid "Visually:" +msgstr "视觉效果" -msgid "" -"From root vertex :math:`6` on a **directed** graph with edges in ascending " -"order of ``id``" -msgstr "" -"从根顶点 :math:`6` 开始,该顶点位于一个 **有向** 图中,其边按 ``id`` 升序排列" +msgid "Using the contracted graph" +msgstr "使用收缩图" msgid "" -"From root vertices :math:`\\{12, 6\\}` on an **undirected** graph with " -"**depth** :math:`<= 2` and edges in ascending order of ``id``" +"Depending on the final application the graph is to be prepared. In this " +"example the final application will be to calculate the cost from two " +"vertices in the original graph by using the contracted graph with " +"``pgr_dijkstraCost``" msgstr "" -"从根顶点开始 :math:`{12, 6\\}` 在一个 **无向** 图上,**depth** :math:`<=2`," -"边按 ``id`` 升序排列" -msgid "DFS optional parameters" -msgstr "DFS 可选参数" +msgid "" +"There are three cases when calculating the shortest path between a given " +"source and target in a contracted graph:" +msgstr "计算收缩图中给定源和目标之间的最短路径时,存在三种情况:" -msgid "Same as `Single vertex`_ with edges in ascending order of ``id``." -msgstr "与 `单个顶点`_ 相同,边按 ``id`` 升序排列。" +msgid "Case 1: Both source and target belong to the contracted graph." +msgstr "情况1:源和目标都属于收缩图。" -msgid "Same as `Single vertex`_ with edges in descending order of ``id``." -msgstr "与 `单个顶点`_ 相同,边按 ``id`` 降序排列。" +msgid "Case 2: Source and/or target belong to an edge subgraph." +msgstr "情况 2:源和/或目标属于边缘子图。" -msgid "The resulting traversal is different." -msgstr "由此产生的遍历是不同的。" +msgid "Case 3: Source and/or target belong to a vertex." +msgstr "情况 3:源和/或目标属于一个顶点。" -msgid "" -"The left image shows the result with ascending order of ids and the right " -"image shows with descending order of the edge identifiers." +msgid "The final application should consider all of those cases." msgstr "" -"左图显示的是按 ID 升序排列的结果,右图显示的是按边缘标识符降序排列的结果。" -msgid "|ascending| |descending|" -msgstr "|ascending| |descending|" +#, fuzzy +msgid "Create a view (or table) of the contracted graph:" +msgstr "属于收缩图的顶点。" -msgid "ascending" -msgstr "升序" +#, fuzzy +msgid "Create the function that will use the contracted graph." +msgstr "情况1:源和目标都属于收缩图。" -msgid "descending" -msgstr "降序" +#, fuzzy +msgid "" +"Case 2: Source and/or target belong to an edge that has contracted vertices." +msgstr "情况 2:源和/或目标属于边缘子图。" +#, fuzzy msgid "" -"`Boost: Breadth First Search algorithm documentation `__" -msgstr "" -"`Boost:广度优先搜索算法文档 `__" +"Case 3: Source and/or target belong to a vertex that has been contracted." +msgstr "情况 3:源和/或目标属于一个顶点。" + +#, fuzzy +msgid "``pgr_contractionDeadEnd`` - Proposed" +msgstr "``pgr_trspVia`` - 拟议" +#, fuzzy msgid "" -"`Wikipedia: Breadth First Search algorithm `__" -msgstr "" -"`维基百科:广度优先搜索算法 `__" +"``pgr_contractionDeadEnd`` — Performs graph contraction and returns the " +"contracted vertices and edges." +msgstr "``pgr_contraction`` — 执行图收缩操作并返回收缩后的顶点和边。" -msgid "``pgr_bridges``" -msgstr "``pgr_bridges``" +#, fuzzy +msgid "A node is considered a dead end node when:" +msgstr "当一个节点被认为是 **死端** 节点时" -msgid "``pgr_bridges`` - Return the bridges of an undirected graph." -msgstr "``pgr_bridges`` - 返回无向图的桥。" +msgid "On undirected graphs:" +msgstr "在无向图上:" + +msgid "The number of adjacent vertices is 1." +msgstr "相邻顶点的个数为1。" + +msgid "On directed graphs:" +msgstr "在有向图上:" + +#, fuzzy +msgid "When there is only one adjacent vertex or" +msgstr "当没有路径时:" msgid "" -"A bridge is an edge of an undirected graph whose deletion increases its " -"number of connected components. This implementation can only be used with an " -"undirected graph." +"When all edges are incoming regardless of the number of adjacent vertices." msgstr "" -"桥是指一个无向图中的边,如果删除它会增加该图的连通分量数量。此实现仅适用于无" -"向图。" - -msgid "``edge`` ascending" -msgstr "``edge`` 升序" -msgid "Running time: :math:`O(E * (V + E))`" -msgstr "运行时间: :math:`O(E * (V + E))`" +#, fuzzy +msgid "pgr_contractionDeadEnd(`Edges SQL`_, [**options**])" +msgstr "pgr_contraction(`Edges SQL`_, **contraction order**, [**options**])" -msgid "pgr_bridges(`Edges SQL`_)" -msgstr "pgr_bridges(`Edges SQL`_)" +#, fuzzy +msgid "**options:** ``[directed, forbidden_vertices]``" +msgstr "**options:** ``[directed, details]``" -msgid "Returns set of |result-edge|" -msgstr "返回集合 |result-edge|" +#, fuzzy +msgid "Dead end contraction on an undirected graph." +msgstr "无向图上的死端顶点" -msgid "The bridges of the graph" -msgstr "图的桥" +#, fuzzy +msgid "The green nodes are dead end nodes." +msgstr "绿色节点是 `死端`_ 节点" -msgid "Identifier of the edge that is a bridge." -msgstr "作为桥的边的标识符。" +#, fuzzy +msgid "Node :math:`3` is a dead end node after node :math:`1` is contracted." +msgstr "节点 :math:`u` 有已收缩节点的信息。" -msgid "https://en.wikipedia.org/wiki/Bridge_%28graph_theory%29" -msgstr "https://en.wikipedia.org/wiki/Bridge_%28graph_theory%29" +msgid "``forbidden_vertices``" +msgstr "``forbidden_vertices``" -msgid "**Supported versions**" -msgstr "**支持版本**" +#, fuzzy +msgid "``ARRAY[`` |ANY-INTEGER| ``]``" +msgstr "``ARRAY[`` **ANY-INTEGER** ``]``" -msgid "``pgr_chinesePostman`` - Experimental" -msgstr "``pgr_chinesePostman`` - 实验" +msgid "**Empty**" +msgstr "**Empty**" -msgid "" -"``pgr_chinesePostman`` — Calculates the shortest circuit path which contains " -"every edge in a directed graph and starts and ends on the same vertex." -msgstr "" -"``pgr_chinesePostman`` — 计算包含有向图中的每条边并从同一顶点开始和结束的最短" -"回路路径。" +#, fuzzy +msgid "Value = ``e`` indicating the row is an edge." +msgstr "当行是边时,则为 ``e``。" -msgid "Returns ``EMPTY SET`` on a disconnected graph" -msgstr "在一个不连通的图上返回 ``EMPTY SET``" +#, fuzzy +msgid "A pseudo `id` of the edge." +msgstr "边的几何形状。" -msgid "pgr_chinesePostman(`Edges SQL`_)" -msgstr "pgr_chinesePostman(`Edges SQL`_)" +msgid "Identifier of the source vertex of the current edge." +msgstr "当前边的源顶点的标识符。" -msgid "Returns set of |result-1-1-no-seq|" -msgstr "返回 |result-1-1-no-seq| 的集合" +msgid "Identifier of the target vertex of the current edge." +msgstr "当前边的目标顶点的标识符。" -msgid "Returns set of ``(seq, node, edge, cost, agg_cost)``" -msgstr "Returns set of ``(seq, node, edge, cost, agg_cost)``" +#, fuzzy +msgid "Weight of the current edge." +msgstr "当前边的源顶点的标识符。" -msgid "Sequential value starting from ``1``" -msgstr "从 ``1`` 开始的顺序值" +msgid "Dead end vertex on undirected graph" +msgstr "无向图上的死端顶点" -msgid "" -"Identifier of the edge used to go from ``node`` to the next node in the path " -"sequence. ``-1`` for the last node of the path." +msgid "They have only one adjacent node." msgstr "" -"用于从路径序列中的 ``节点`` 到下一个节点的边的标识符。``-1`` 表示路径的最后一" -"个节点。" -msgid "Aggregate cost from ``start_v`` to ``node``." -msgstr "从 ``start_v`` 到 ``node`` 的总成本。" +msgid "Dead end vertex on directed graph" +msgstr "有向图上的死端顶点" -msgid "``pgr_chinesePostmanCost`` - Experimental" -msgstr "``pgr_chinesePostmanCost`` - 实验" +#, fuzzy +msgid "The green nodes are dead end nodes" +msgstr "绿色节点是 `死端`_ 节点" msgid "" -"``pgr_chinesePostmanCost`` — Calculates the minimum costs of a circuit path " -"which contains every edge in a directed graph and starts and ends on the " -"same vertex." -msgstr "" -"``pgr_chinesePostmanCost`` — 计算一个包含有向图中的每条边、以同一顶点为起点和" -"终点的最短成本的回路路径。" +"The blue nodes have an unlimited number of incoming and/or outgoing edges." +msgstr "蓝色节点具有无限数量的传入和/或传出边缘。" -msgid "Return value when the graph if disconnected" -msgstr "当图是不连通的时候返回的数值" +msgid "Node" +msgstr "节点" -msgid "pgr_chinesePostmanCost(`Edges SQL`_)" -msgstr "pgr_chinesePostmanCost(`Edges SQL`_)" +msgid "Adjacent nodes" +msgstr "相邻节点" -msgid "RETURNS ``FLOAT``" -msgstr "RETURNS ``FLOAT``" +msgid "Dead end" +msgstr "死端" -msgid "``pgr_chinesepostmancost``" -msgstr "``pgr_chinesepostmancost``" +msgid "Reason" +msgstr "" -msgid "Minimum costs of a circuit path." -msgstr "一个回路路径的最小成本。" +#, fuzzy +msgid ":math:`6`" +msgstr ":math:`a`" -msgid "pgr_connectedComponents" -msgstr "pgr_connectedComponents" +#, fuzzy +msgid ":math:`\\{1\\}`" +msgstr ":math:`\\{u\\}`" -msgid "" -"``pgr_connectedComponents`` — Connected components of an undirected graph " -"using a DFS-based approach." -msgstr "" -"``pgr_connectedComponents`` — 使用基于深度优先搜索(DFS)的方法计算无向图的连" -"通分量。" +#, fuzzy +msgid "Yes" +msgstr "是" -msgid "" -"A connected component of an undirected graph is a set of vertices that are " -"all reachable from each other." -msgstr "无向图的连通部分是指相互之间均可到达的顶点集合。" +#, fuzzy +msgid "Has only one adjacent node." +msgstr "相邻节点数" -msgid "Components are described by vertices" -msgstr "连通分量由顶点描述" +#, fuzzy +msgid ":math:`7`" +msgstr ":math:`a`" -msgid "``component`` ascending" -msgstr "``component`` 升序" +#, fuzzy +msgid ":math:`\\{2\\}`" +msgstr ":math:`\\{u\\}`" -msgid "pgr_connectedComponents(`Edges SQL`_)" -msgstr "pgr_connectedComponents(`Edges SQL`_)" +#, fuzzy +msgid ":math:`8`" +msgstr ":math:`a`" -msgid "Returns set of |result-component-V|" -msgstr "返回集合 |result-component-V|" +#, fuzzy +msgid ":math:`\\{2, 3\\}`" +msgstr ":math:`\\{v, w\\}`" -msgid "The connected components of the graph" -msgstr "图的连通分量" +msgid "Has more than one adjacent node and all edges are incoming." +msgstr "" -msgid "Has the value of the minimum node identifier in the component." -msgstr "具有组件中最小节点标识符的值。" +#, fuzzy +msgid ":math:`\\{4\\}`" +msgstr ":math:`\\{u\\}`" -msgid "Identifier of the vertex that belongs to the ``component``." -msgstr "属于该 ``组件`` 的顶点的标识符。" +#, fuzzy +msgid ":math:`10`" +msgstr ":math:`1`" -msgid "Connecting disconnected components" -msgstr "连接不连通的组件" +#, fuzzy +msgid ":math:`\\{4, 5\\}`" +msgstr ":math:`\\{v, w\\}`" -msgid "" -"Boost: `Connected components `__" -msgstr "" -"Boost: ` 已连接组件 `__" +#, fuzzy +msgid "No" +msgstr "节点" -msgid "" -"wikipedia: `Connected component `__" +msgid "Has more than one adjacent node and all edges are outgoing." msgstr "" -"维基百科: `连通分量 `__" -msgid "``pgr_contraction``" -msgstr "``pgr_contraction``" +#, fuzzy +msgid ":math:`1,2,3,4,5`" +msgstr ":math:`1`" + +#, fuzzy +msgid "Many adjacent nodes." +msgstr "相邻节点" + +msgid "" +"Has more than one adjacent node and some edges are incoming and some are " +"outgoing." +msgstr "" +#, fuzzy msgid "" -"``pgr_contraction`` — Performs graph contraction and returns the contracted " -"vertices and edges." -msgstr "``pgr_contraction`` — 执行图收缩操作并返回收缩后的顶点和边。" +"From above, nodes :math:`\\{6, 7, 9\\}` are dead ends because the total " +"number of adjacent vertices is one." +msgstr "" +"从上面来看,节点 :math:`\\{a, b, d\\}` 是死端,因为相邻顶点的数量为 1。不需要" +"对这些节点进行进一步检查。" -msgid "Name change from ``pgr_contractGraph``" -msgstr "``pgr_contractGraph`` 的名称更改" +msgid "" +"When there are more than one adjacent vertex, all edges need to be all " +"incoming edges otherwise it is not a dead end." +msgstr "" -msgid "Bug fixes" -msgstr "Bug修复" +#, fuzzy +msgid "Step by step dead end contraction" +msgstr "仅死端收缩" +#, fuzzy msgid "" -"Contraction reduces the size of the graph by removing some of the vertices " -"and edges and, for example, might add edges that represent a sequence of " -"original edges decreasing the total time and space used in graph algorithms." +"The dead end contraction will stop until there are no more dead end nodes. " +"For example, from the following graph where :math:`3` is the dead end node:" msgstr "" -"收缩通过移除部分顶点和边来减小图的大小,例如,可以添加代表原始边序列的边,从" -"而减少图算法所用的总时间和空间。" +"死端收缩将停止,直到不再有死端节点。 例如,从下图中,其中 :math:`w` 是 `死端" +"`_ 节点:" -msgid "Does not return the full contracted graph" -msgstr "不返回完整的收缩图" +#, fuzzy +msgid "" +"After contracting :math:`3`, node :math:`2` is now a dead end node and is " +"contracted:" +msgstr "收缩 :math:`w` 后,节点 :math:`v` 现在是一个 `死端`_ 节点并且已收缩:" -msgid "Only changes on the graph are returned" -msgstr "仅返回图上的更改" +#, fuzzy +msgid "" +"After contracting :math:`2`, stop. Node :math:`1` has the information of " +"nodes that were contracted." +msgstr "在收缩 :math:`v` 之后,停止。节点 :math:`u` 有已收缩节点的信息。" -msgid "Currnetly there are two types of contraction methods" -msgstr "目前有两种类型的收缩方法" +#, fuzzy +msgid "Creating the contracted graph" +msgstr "使用收缩图" -msgid "Dead End Contraction" -msgstr "死端收缩" +#, fuzzy +msgid "Steps for the creation of the contracted graph" +msgstr "属于收缩图的边。" -msgid "Linear Contraction" -msgstr "线性收缩" +#, fuzzy +msgid "Add additional columns." +msgstr "添加附加列" -msgid "The returned values include" -msgstr "返回值包括" +#, fuzzy +msgid "Save results into a table." +msgstr "将 `收缩结果`_ 存储在表中" -msgid "the added edges by linear contraction." -msgstr "由线性收缩添加的边。" +#, fuzzy +msgid "The contracted vertices are not part of the contracted graph." +msgstr "当 ``true`` 时,顶点收缩,它不是收缩图的一部分。" -msgid "the modified vertices by dead end contraction." -msgstr "通过死端收缩修改顶点。" +#, fuzzy +msgid "Using when departure and destination are in the contracted graph" +msgstr "情况1:源和目标都属于收缩图。" -msgid "The returned values are ordered as follows:" -msgstr "返回值的排序如下:" +#, fuzzy +msgid "Using when departure/destination is not in the contracted graph" +msgstr "当 ``true`` 时,顶点收缩,它不是收缩图的一部分。" -msgid "column ``id`` ascending when type is ``v``" -msgstr "当类型为 ``v``时,按列 ``id`` 升序" +#, fuzzy +msgid "Using when departure and destination are not in the contracted graph" +msgstr "情况1:源和目标都属于收缩图。" -msgid "column ``id`` descending when type is ``e``" -msgstr "当类型为 ``e`` 时,按列``id`` 降序" +#, fuzzy +msgid "``pgr_contractionLinear`` - Proposed" +msgstr "``pgr_dijkstraNear`` - 拟议" -msgid "The pgr_contraction function has the following signature:" -msgstr "pgr_contraction 函数具有以下签名:" +#, fuzzy +msgid "" +"``pgr_contractionLinear`` — Performs graph contraction and returns the " +"contracted vertices and edges." +msgstr "``pgr_contraction`` — 执行图收缩操作并返回收缩后的顶点和边。" -msgid "pgr_contraction(`Edges SQL`_, **contraction order**, [**options**])" +#, fuzzy +msgid "pgr_contractionLinear(`Edges SQL`_, [**options**])" msgstr "pgr_contraction(`Edges SQL`_, **contraction order**, [**options**])" -msgid "**options:** ``[ max_cycles, forbidden_vertices, directed]``" +#, fuzzy +msgid "**options:** ``[directed, max_cycles, forbidden_vertices]``" msgstr "**options:** ``[ max_cycles, forbidden_vertices, directed]``" -msgid "Returns set of |result-contract|" -msgstr "Returns set of |result-contract|" +#, fuzzy +msgid "Linear contraction on an undirected graph." +msgstr "在无向图上使用组合表。" +#, fuzzy msgid "" -"Making a dead end and linear contraction in that order on an undirected " +"The green nodes are linear nodes and will not be part of the contracted " "graph." -msgstr "在无向图上按顺序进行死端和线性收缩。" +msgstr "当 ``true`` 时,顶点收缩,它不是收缩图的一部分。" + +#, fuzzy +msgid "All edges adjacent will not be part of the contracted graph." +msgstr "属于收缩图的边。" + +#, fuzzy +msgid "The red lines will be new edges of the contracted graph." +msgstr "属于收缩图的顶点。" msgid "**contraction Order**" msgstr "**contraction Order**" -msgid "Ordered contraction operations." -msgstr "有序收缩操作。" - -msgid "1 = Dead end contraction" -msgstr "1 = 死端收缩" +msgid "" +"Number of times the contraction operations on ``contraction_order`` will be " +"performed." +msgstr "对 ``contraction_order`` 执行收缩操作的次数。" -msgid "2 = Linear contraction" -msgstr "2 = 线性收缩" +msgid "A node connects two (or more) `linear` edges when" +msgstr "" -msgid "Contraction optional parameters" -msgstr "可选收缩参数" +msgid "The number of adjacent vertices is 2." +msgstr "相邻顶点的数量为2。" -msgid "``forbidden_vertices``" -msgstr "``forbidden_vertices``" +msgid "In case of a directed graph, a node is considered a `linear` node when" +msgstr "在有向图的情况下,当满足以下条件时,节点被视为`线性`节点" -msgid "**Empty**" -msgstr "**Empty**" +#, fuzzy +msgid "Linearity is symmetrical." +msgstr "线性是对称的" -msgid "Identifiers of vertices forbidden for contraction." -msgstr "禁止收缩的顶点标识符。" +#, fuzzy +msgid "Linearity is not symmetrical" +msgstr "线性是对称的" -msgid ":math:`1`" -msgstr ":math:`1`" +#, fuzzy +msgid "Graph where linearity is not symmetrical." +msgstr "线性是对称的" msgid "" -"Number of times the contraction operations on ``contraction_order`` will be " -"performed." -msgstr "对 ``contraction_order`` 执行收缩操作的次数。" +"When the graph is processed as a directed graph, linearity is not " +"symmetrical, therefore the graph can not be contracted." +msgstr "" -msgid "The function returns a single row. The columns of the row are:" -msgstr "该函数返回一行数据。该行的列包括:" +msgid "" +"When the same graph is processed as an undirected graph, linearity is " +"symmetrical, therefore the graph can be contracted." +msgstr "" -msgid "``type``" -msgstr "``type``" +#, fuzzy +msgid "The three edges can be replaced by one undirected edge" +msgstr "图可以是有向或无向的。" -msgid "Type of the ``id``." -msgstr "``id`` 的类型。" +#, fuzzy +msgid "Edge :math:`1 - 3`." +msgstr ":math:`1`" -msgid "``v`` when the row is a vertex." -msgstr "当该行表示一个顶点时,列为 ``v``。" +#, fuzzy +msgid "With cost: :math:`4`." +msgstr "使用 ``cost``" -msgid "Column ``id`` has a positive value" -msgstr "列 ``id`` 具有正值" +#, fuzzy +msgid "Contracted vertices in the edge: :math:`\\{2\\}`." +msgstr "对于带边的directed graph:math:`\\{1, 2, 3, 4\\}`." -msgid "``e`` when the row is an edge." -msgstr "当行是边时,则为 ``e``。" +msgid "Linearity is symmetrical" +msgstr "线性是对称的" -msgid "Column ``id`` has a negative value" -msgstr "列 ``id`` 具有负值" +#, fuzzy +msgid "Graph where linearity is symmetrical." +msgstr "线性是对称的" -msgid "All numbers on this column are ``DISTINCT``" -msgstr "此列中的所有数字都是 ``DISTINCT``" +#, fuzzy +msgid "The four edges can be replaced by two directed edges." +msgstr "图可以是有向或无向的。" -msgid "When ``type`` = **'v'**." -msgstr "当 ``type`` = **'v'** 时。" +#, fuzzy +msgid "Edge :math:`3 - 1`." +msgstr ":math:`-1`" -msgid "Identifier of the modified vertex." -msgstr "修改顶点的标识符。" +#, fuzzy +msgid "With cost: :math:`6`." +msgstr "使用 ``cost``" -msgid "When ``type`` = **'e'**." -msgstr "当 ``type`` = **'e'** 时。" +#, fuzzy +msgid "The four edges can be replaced by one undirected edge." +msgstr "图可以是有向或无向的。" -msgid "Decreasing sequence starting from **-1**." -msgstr "从 **-1** 开始递减序列。" +#, fuzzy +msgid "Step by step linear contraction" +msgstr "仅线性收缩" +#, fuzzy msgid "" -"Representing a pseudo `id` as is not incorporated in the set of original " -"edges." -msgstr "表示未包含在原始边集中的伪`id` 。" +"The linear contraction will stop when there are no more linear edges. For " +"example from the following graph there are linear edges" +msgstr "" +"当不再有线性节点时,线性收缩将停止。 例如,在下图中,其中 :math:`v` 和 :math:" +"`w` 是 `线性`_ 节点:" -msgid "Array of contracted vertex identifiers." -msgstr "收缩顶点标识符数组。" +#, fuzzy +msgid "Contracting vertex :math:`3`," +msgstr "收缩 :math:`w`," -msgid "When ``type`` = **'v'**: :math:`-1`" -msgstr "当 ``type`` = **'v'**: :math:`-1` 时" +#, fuzzy +msgid "The vertex :math:`3` is removed from the graph" +msgstr "顶点 :math:`w` 已从图中移除" +#, fuzzy msgid "" -"When ``type`` = **'e'**: Identifier of the source vertex of the current edge " -"(``source``, ``target``)." -msgstr "" -"当 ``type`` = **'e'** 时:当前边(``source``,``target`` )的source顶点标识" -"符。" +"The edges :math:`2 \\rightarrow 3` and :math:`w \\rightarrow z` are removed " +"from the graph." +msgstr "从图中删除边 :math:`v \\rightarrow w` 和 :math:`w \\rightarrow z`。" +#, fuzzy msgid "" -"When ``type`` = **'e'**: Identifier of the target vertex of the current edge " -"(``source``, ``target``)." -msgstr "" -"当 ``type`` = **'e'** 时:当前边(``source``, ``target``)的target 顶点标识符。" +"A new edge :math:`2 \\rightarrow 4` is inserted represented with red color." +msgstr "插入一条新边 :math:`v \\rightarrow z`,以红色表示。" + +#, fuzzy +msgid "Contracting vertex :math:`2`:" +msgstr "收缩 :math:`v`:" +#, fuzzy +msgid "The vertex :math:`2` is removed from the graph" +msgstr "顶点 :math:`w` 已从图中移除" + +#, fuzzy msgid "" -"When ``type`` = **'e'**: Weight of the current edge (``source``, ``target``)." -msgstr "当 ``type`` = **'e'** 时:当前边(``source``, ``target``)的权重。" +"The edges :math:`1 \\rightarrow 2` and :math:`2 \\rightarrow 3` are removed " +"from the graph." +msgstr "从图中删除边 :math:`v \\rightarrow w` 和 :math:`w \\rightarrow z`。" -msgid "Only dead end contraction" -msgstr "仅死端收缩" +#, fuzzy +msgid "" +"A new edge :math:`1 \\rightarrow 3` is inserted represented with red color." +msgstr "插入一条新边 :math:`v \\rightarrow z`,以红色表示。" -msgid "Only linear contraction" -msgstr "仅线性收缩" +#, fuzzy +msgid "" +"Edge :math:`1 \\rightarrow 3` has the information of cost and the nodes that " +"were contracted." +msgstr "边 :math:`u \\rightarrow z` 有收缩点的信息。" + +#, fuzzy +msgid "Create the contracted graph." +msgstr "收缩图" -msgid "pgr_createTopology" -msgstr "pgr_createTopology" +msgid "``pgr_createTopology``" +msgstr "``pgr_createTopology``" msgid "" "``pgr_createTopology`` — Builds a network topology based on the geometry " @@ -10742,11 +10820,8 @@ msgid "" "to the rest of the edges." msgstr "该示例以 5 条边的简洁拓扑结构为起点,然后递增到其余的边。" -msgid "The example uses the :doc:`sampledata` network." -msgstr "本例使用 :doc:`sampledata` 网络。" - -msgid "pgr_createVerticesTable" -msgstr "pgr_createVerticesTable" +msgid "``pgr_createVerticesTable``" +msgstr "``pgr_createVerticesTable``" msgid "" "``pgr_createVerticesTable`` — Reconstructs the vertices table based on the " @@ -10985,17 +11060,17 @@ msgstr "" "`Wikipedia: Cuthill-McKee 排序 `__" -msgid "pgr_dagShortestPath - Experimental" +#, fuzzy +msgid "``pgr_dagShortestPath`` - Experimental" msgstr "pgr_dagShortestPath - 实验" -#, fuzzy msgid "" "``pgr_dagShortestPath`` — Returns the shortest path for weighted directed " "acyclic graphs(DAG). In particular, the DAG shortest paths algorithm " "implemented by Boost.Graph." msgstr "" -"``pgr_dagShortestPath`` — 返回加权有向无环图(DAG)的最短路径(path)。特别" -"是,由Boost.Graph实现的DAG最短路径算法。" +"``pgr_dagShortestPath`` — 返回加权有向无环图(DAG)中的最短路径。特别是使用 " +"Boost.Graph 实现的 DAG 最短路径算法。" msgid "pgr_dagShortestPath(Combinations)" msgstr "pgr_dagShortestPath(组合)" @@ -11072,39 +11147,111 @@ msgstr "返回列" msgid "Making **start_vids** the same as **end_vids**" msgstr "使 **start_vids** 与 **end_vids** 相同" +#, fuzzy +msgid "" +"`Boost: DAG shortest paths `__" +msgstr "" +"`Boost: is_bipartite `__" + msgid "https://en.wikipedia.org/wiki/Topological_sorting" msgstr "https://en.wikipedia.org/wiki/Topological_sorting" -msgid "``pgr_degree`` -- Proposed" -msgstr "``pgr_degree`` -- 拟议" +msgid "``pgr_degree``" +msgstr "``pgr_degree``" msgid "" "``pgr_degree`` — For each vertex in an undirected graph, return the count of " "edges incident to the vertex." msgstr "``pgr_degree`` —对于无向图中的每个顶点,返回与该顶点关联的边的计数。" -msgid "Calculates the degree of the vertices of an **undirected** graph" +msgid "Error messages adjustment." +msgstr "" + +msgid "New signature with only Edges SQL." +msgstr "" + +#, fuzzy +msgid "Calculates the degree of the vertices of an undirected graph" msgstr "计算 **无向** 图顶点的度数" #, fuzzy +msgid "" +"The degree (or valency) of a vertex of a graph is the number of edges that " +"are incident to the vertex." +msgstr "``pgr_degree`` —对于无向图中的每个顶点,返回与该顶点关联的边的计数。" + +msgid "A loop contributes 2 to a vertex's degree." +msgstr "" + +msgid "A vertex with degree 0 is called an isolated vertex." +msgstr "" + +#, fuzzy +msgid "Isolated vertex is not part of the result" +msgstr "修复顶点不在图中时的行驶距离问题" + +msgid "" +"Vertex not participating on the subgraph is considered and isolated vertex." +msgstr "" + +#, fuzzy +msgid "" +"There can be a ``dryrun`` execution and the code used to get the answer will " +"be shown in a PostgreSQL ``NOTICE``." +msgstr "" +"由于这是一次 **模拟** 执行,所有计算的代码都显示在 PostgreSQL 的 ``NOTICE`` " +"中。" + +msgid "" +"The code can be used as base code for the particular application " +"requirements." +msgstr "" + +#, fuzzy +msgid "No ordering is performed." +msgstr "不进行排序" + +#, fuzzy +msgid "pgr_degree(`Edges SQL`_ , [``dryrun``])" +msgstr "pgr_degree(`Edges SQL`_ , `Vertex SQL`_, [``dryrun``])" + msgid "pgr_degree(`Edges SQL`_ , `Vertex SQL`_, [``dryrun``])" -msgstr "pgr_degree(`Edges SQL`_ , `Vertex SQL`_ , [``dryrun``])" +msgstr "pgr_degree(`Edges SQL`_ , `Vertex SQL`_, [``dryrun``])" msgid "RETURNS SETOF |result-degree|" msgstr "RETURNS SETOF |result-degree|" +msgid "Edges" +msgstr "边" + +#, fuzzy +msgid "example" +msgstr "示例" + +#, fuzzy +msgid "Get the degree of the vertices defined on the edges table" +msgstr ":math:`m` 是图中顶点的最大度数。" + +#, fuzzy +msgid "Edges and Vertices" +msgstr "添加新的顶点" + msgid "Extracting the vertex information" msgstr "提取顶点信息" +msgid "``pgr_degree`` can use :doc:`pgr_extractVertices` embedded in the call." +msgstr "" + msgid "" -"pgr_degree can utilize output from `pgr_extractVertices` or can have " -"`pgr_extractVertices` embedded in the call. For decent size networks, it is " -"best to prep your vertices table before hand and use that vertices table for " -"pgr_degree calls." +"For decent size networks, it is best to prepare your vertices table before " +"hand and use it on ``pgr_degree`` calls. (See `Using a vertex table`_)" msgstr "" -"`pgr_degree`可以利用 `pgr_extractVertices` 的输出,或者可以在调用中嵌入" -"`pgr_extractVertices`。对于较大规模的网络,最好提前准备好顶点表并在" -"`pgr_degree`调用中使用该顶点表。" + +#, fuzzy +msgid "Calculate the degree of the nodes:" +msgstr "计算 **无向** 图顶点的度数" msgid "`Vertex SQL`_" msgstr "`Vertex SQL`_" @@ -11118,15 +11265,20 @@ msgstr "``dryrun``" msgid "When true do not process and get in a NOTICE the resulting query." msgstr "当为真时,不要处理查询,而是获取一个通知(NOTICE)来显示查询的结果。" +#, fuzzy +msgid "For the `Edges and Vertices`_ signature:" +msgstr "关于已弃用的签名:" + +#, fuzzy +msgid "For the `Edges`_ signature:" +msgstr "关于已弃用的签名:" + msgid "Vertex SQL" msgstr "Vertex SQL" msgid "``in_edges``" msgstr "``in_edges``" -msgid "``BIGINT[]``" -msgstr "``BIGINT[]``" - msgid "" "Array of identifiers of the edges that have the vertex ``id`` as *first end " "point*." @@ -11155,9 +11307,56 @@ msgstr "``degree``" msgid "Number of edges that are incident to the vertex ``id``" msgstr "与顶点 ``id`` 关联的边数" +#, fuzzy +msgid "Degree of a loop" +msgstr "子图的度数" + +#, fuzzy +msgid "Using the `Edges`_ signature." +msgstr "关于已弃用的签名:" + +msgid "Using the `Edges and Vertices`_ signature." +msgstr "" + msgid "Degree of a sub graph" msgstr "子图的度数" +#, fuzzy +msgid "For the following is a subgraph of the :doc:`sampledata`:" +msgstr "pgRouting :doc:`sampledata` 的图形着色" + +msgid ":math:`E = \\{(1, 5 \\leftrightarrow 6), (1, 6 \\leftrightarrow 10)\\}`" +msgstr "" + +msgid ":math:`V = \\{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17\\}`" +msgstr "" + +msgid "The vertices not participating on the edge are considered isolated" +msgstr "" + +msgid "their degree is 0 in the subgraph and" +msgstr "" + +msgid "their degree is not shown in the output." +msgstr "" + +#, fuzzy +msgid "Using a vertex table" +msgstr "在顶点表上" + +#, fuzzy +msgid "" +"For decent size networks, it is best to prepare your vertices table before " +"hand and use it on ``pgr_degree`` calls." +msgstr "" +"`pgr_degree`可以利用 `pgr_extractVertices` 的输出,或者可以在调用中嵌入" +"`pgr_extractVertices`。对于较大规模的网络,最好提前准备好顶点表并在" +"`pgr_degree`调用中使用该顶点表。" + +#, fuzzy +msgid "Extract the vertex information and save into a table:" +msgstr "提取顶点信息" + msgid "Dry run execution" msgstr "模拟执行" @@ -11171,18 +11370,38 @@ msgid "" "backend development needs." msgstr "结果可作为基础代码,根据后台开发需要进行改进。" -msgid "Degree from an existing table" -msgstr "来自现有表的度数" +#, fuzzy +msgid "Finding dead ends" +msgstr "死端" +#, fuzzy msgid "" -"If you have a vertices table already built using ``pgr_extractVertices`` and " -"want the degree of the whole graph rather than a subset, you can forgo using " -"pgr_degree and work with the ``in_edges`` and ``out_edges`` columns directly." +"If there is a vertices table already built using ``pgr_extractVertices`` and " +"want the degree of the whole graph rather than a subset, it can be forgo " +"using ``pgr_degree`` and work with the ``in_edges`` and ``out_edges`` " +"columns directly." msgstr "" "如果您已经使用 ``pgr_extractVertices`` 构建了一个顶点表,并且想要整个图的度而" "不是子集,则可以放弃使用 pgr_degree 并直接使用 ``in_edges`` 和 ``out_edges`` " "列。" +#, fuzzy +msgid "The degree of a dead end is 1." +msgstr "绿色节点是 `死端`_ 节点" + +#, fuzzy +msgid "Finding linear vertices" +msgstr "添加新的顶点" + +#, fuzzy +msgid "The degree of a linear vertex is 2." +msgstr "相邻顶点的数量为2。" + +#, fuzzy +msgid "" +"If there is a vertices table already built using the ``pgr_extractVertices``" +msgstr "要获取顶点信息,请使用 :doc:`pgr_extractVertices`" + msgid ":doc:`pgr_extractVertices`" msgstr ":doc:`pgr_extractVertices`" @@ -11199,15 +11418,6 @@ msgstr "" msgid "Version 3.3.0" msgstr "版本 3.3.0" -msgid "Promoted to **proposed** function" -msgstr "升级至 **拟议** 函数" - -msgid "``pgr_depthFirstSearch`` (`Single Vertex`_)" -msgstr "``pgr_depthFirstSearch`` (`单个顶点`_)" - -msgid "``pgr_depthFirstSearch`` (`Multiple Vertices`_)" -msgstr "``pgr_depthFirstSearch`` (`多个顶点`_)" - msgid "" "Depth First Search algorithm is a traversal algorithm which starts from a " "root vertex, goes as deep as possible, and backtracks once a vertex is " @@ -11263,16 +11473,18 @@ msgstr "**options:** ``[directed, max_depth]``" msgid "Same as `Single vertex`_ but with edges in descending order of ``id``." msgstr "与 `单顶点`_ 相同,但边按 ``id`` 降序排列。" +#, fuzzy msgid "" -"`Boost: Depth First Search algorithm documentation `__" +"`Boost: Depth First Search `__" msgstr "" "`Boost:深度优先搜索算法文档 `__" +#, fuzzy msgid "" -"`Boost: Undirected DFS algorithm documentation `__" +"`Boost: Undirected DFS `__" msgstr "" "`Boost:非定向 DFS 算法文档 `__" @@ -11287,53 +11499,40 @@ msgstr "" msgid "``pgr_dijkstra``" msgstr "`pgr_dijkstra``" -#, fuzzy msgid "``pgr_dijkstra`` — Shortest path using Dijkstra algorithm." -msgstr "`pgr_dijkstra`` - 使用 Dijkstra 算法的最短路径。" +msgstr "`pgr_dijkstra`` - 使用 Dijkstra 算法计算的最短路径。" msgid "Version 3.5.0" msgstr "版本 3.5.0" -msgid "" -"``pgr_dijkstra`` (`One to One`_) added ``start_vid`` and ``end_vid`` columns." -msgstr "``pgr_dijkstra`` (`一对一`_)增加``start_vid`` 和``end_vid`` 列。" +msgid "pgr_dijkstra(One to One) added ``start_vid`` and ``end_vid`` columns." +msgstr "pgr_dijkstra(一对一)增加了``start_vid`` 和``end_vid`` 列。" -msgid "``pgr_dijkstra`` (`One to Many`_) added ``end_vid`` column." -msgstr "``pgr_dijkstra`` (`一对多`_) 增加``end_vid`` 列。" +msgid "pgr_dijkstra(One to Many) added ``end_vid`` column." +msgstr "pgr_dijkstra(一对多)添加了 ``end_vid`` 列。" -msgid "``pgr_dijkstra`` (`Many to One`_) added ``start_vid`` column." -msgstr "``pgr_dijkstra`` (`多对一`_) 增加 ``start_vid`` 列。" +msgid "pgr_dijkstra(Many to One) added ``start_vid`` column." +msgstr "pgr_dijkstra(多对一)添加了 ``start_vid`` 列。" msgid "Version 3.1.0" msgstr "版本 3.1.0" -msgid "``pgr_dijkstra`` (`Combinations`_)" -msgstr "``pgr_dijkstra`` (`组合`_)" - -msgid "**Official** functions" -msgstr "**官方** 函数" - msgid "Version 2.2.0" msgstr "版本 2.2.0" -msgid "New **proposed** functions:" -msgstr "新的 **拟议** 函数:" +msgid "pgr_dijkstra(One to Many)" +msgstr "pgr_dijkstra(一对多)" -msgid "``pgr_dijkstra`` (`One to Many`_)" -msgstr "``pgr_dijkstra`` (`一对多`_)" +msgid "pgr_dijkstra(Many to One)" +msgstr "pgr_dijkstra(多对一)" -msgid "``pgr_dijkstra`` (`Many to One`_)" -msgstr "``pgr_dijkstra`` (`多对一`_)" - -msgid "``pgr_dijkstra`` (`Many to Many`_)" -msgstr "``pgr_dijkstra`` (`多对多`_)" +msgid "pgr_dijkstra(Many to Many)" +msgstr "pgr_dijkstra(多对多)" -msgid "Signature change on ``pgr_dijkstra`` (`One to One`_)" +#, fuzzy +msgid "Signature change on pgr_dijkstra(One to One)" msgstr "``pgr_dijkstra`` (`一对一`_)的签名更改" -msgid "**Official** ``pgr_dijkstra`` (`One to One`_)" -msgstr "**官方** ``pgr_dijkstra`` (`一对一`_)" - msgid "pgr_dijkstra(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" msgstr "pgr_dijkstra(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" @@ -11519,26 +11718,29 @@ msgstr "36) 使用 `多对多`_" msgid "37) Using `Combinations`_" msgstr "37) 使用 `组合`_" +#, fuzzy +msgid "" +"`Boost: Dijkstra shortest paths `__" +msgstr "" +"`Boost: is_bipartite `__" + msgid "https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm" msgstr "https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm" msgid "``pgr_dijkstraCost``" msgstr "`pgr_dijkstraCost``" -#, fuzzy msgid "" "``pgr_dijkstraCost`` - Total cost of the shortest path using Dijkstra " "algorithm." -msgstr "`pgr_dijkstraCost`` - 使用 Dijkstra 算法计算的最短路径总成本。" - -msgid "``pgr_dijkstraCost`` (`Combinations`_)" -msgstr "``pgr_dijkstraCost`` (`组合`_)" +msgstr "`pgr_dijkstraCost`` - 使用 Dijkstra 算法计算最短路径的总成本。" -#, fuzzy msgid "" "The ``pgr_dijkstraCost`` function sumarizes of the cost of the shortest path " "using Dijkstra Algorithm." -msgstr "``pgr_dijkstraCost`` 函数总结了使用Dijkstra算法的最短路径的成本。" +msgstr "``pgr_dijkstraCost`` 函数总结了使用 Dijkstra 算法计算最短路径的成本。" msgid "" "pgr_dijkstraCost(`Edges SQL`_, **start vid**, **end vid**, [``directed``])" @@ -11847,9 +12049,6 @@ msgstr "``true`` 时:仅返回 ``cap`` 结果" msgid "When ``false``: ``cap`` limit per ``Start vid`` will be returned" msgstr "当 ``false`` 时:将返回每个 ``Start vid`` 的 ``cap`` 限值" -msgid "boost: https://www.boost.org/libs/graph/doc/table_of_contents.html" -msgstr "boost: https://www.boost.org/libs/graph/doc/table_of_contents.html" - msgid "Wikipedia: https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm" msgstr "维基百科:https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm" @@ -11966,11 +12165,11 @@ msgstr "**选项:** ``[directed, strict, U_turn_on_edge]``" msgid "Returns set of |via-result|" msgstr "返回 |via-result| 的集合" -#, fuzzy msgid "" "Find the route that visits the vertices :math:`\\{5, 1, 8\\}` in that order " "on an directed graph." -msgstr "在有向图上查找按顺序访问顶点 :math:`\\{ 5, 1, 8\\}` 的路线。" +msgstr "" +"在一个directed graph中,找到按顺序访问顶点 :math:`\\ {5, 1, 8\\}` 的路径。" msgid "Via optional parameters" msgstr "Via可选参数" @@ -12033,6 +12232,9 @@ msgid "" "``pgr_drivingDistance`` - Returns the driving distance from a start node." msgstr "``pgr_drivingDistance`` - 返回起始节点的行驶距离。" +msgid "Standarizing output columns to |result-spantree|" +msgstr "将输出列标准化为 |result-spantree|" + msgid "Added ``depth`` and ``start_vid`` result columns." msgstr "添加了 ``depth`` 和 ``start_vid`` 结果列。" @@ -12042,14 +12244,17 @@ msgstr "结果列名称更改: ``from_v``改为 ``start_vid``。" msgid "Added ``depth`` and ``pred`` result columns." msgstr "添加了 ``depth`` 和``pred`` 结果列。" -msgid "Signature change pgr_drivingDistance(single vertex)" -msgstr "签名更改 pgr_drivingDistance(单顶点)" +msgid "Signature change:" +msgstr "签名变更:" + +msgid "pgr_drivingDistance(single vertex)" +msgstr "pgr_drivingDistance (单顶点)" -msgid "New **Official** pgr_drivingDistance(multiple vertices)" -msgstr "新 **官方** pgr_drivingDistance(多顶点)" +msgid "New official signature:" +msgstr "新签名:" -msgid "Official:: pgr_drivingDistance(single vertex)" -msgstr "官方:: pgr_drivingDistance(单顶点)" +msgid "pgr_drivingDistance(multiple vertices)" +msgstr "pgr_drivingDistance (多顶点)" msgid "" "Using the Dijkstra algorithm, extracts all the nodes that have costs less " @@ -12109,7 +12314,8 @@ msgid "" "undirected graph" msgstr "在无向图上,从顶点 :math:`{11, 16\\}` 开始的距离为 :math:`3.0`" -msgid "pgr_edgeColoring - Experimental" +#, fuzzy +msgid "``pgr_edgeColoring`` - Experimental" msgstr "pgr_edgeColoring - 实验" msgid "" @@ -12189,6 +12395,18 @@ msgstr "Returns set of |result-edge-color|" msgid "Graph coloring of pgRouting :doc:`sampledata`" msgstr "pgRouting :doc:`sampledata` 的图形着色" +#, fuzzy +msgid "" +"`Boost: Edge Coloring `__" +msgstr "" +"`Boost:边缘着色算法文档 `__" + +msgid "" +"`Wikipedia: Graph coloring `__" +msgstr "`维基百科:图着色 `__" + msgid "``pgr_edgeDisjointPaths``" msgstr "``pgr_edgeDisjointPaths``" @@ -12197,9 +12415,6 @@ msgid "" "groups of vertices." msgstr "``pgr_edgeDisjointPaths`` - 计算两组顶点之间的边不相交路径。" -msgid "New **proposed** function:" -msgstr "新的 **拟议** 函数:" - msgid "pgr_edgeDisjointPaths(Combinations)" msgstr "pgr_edgeDisjointPaths(组合)" @@ -12294,9 +12509,6 @@ msgstr "" "``pgr_edmondsKarp`` —使用 Edmonds Karp 算法计算图边上的流量,以最大化从源到目" "标的流量。" -msgid "``pgr_edmondsKarp`` (`Combinations`_)" -msgstr "``pgr_edmondsKarp`` (`组合`_)" - msgid "Renamed from ``pgr_maxFlowEdmondsKarp``" msgstr "从 ``pgr_maxFlowEdmondsKarp`` 更名而来" @@ -12318,33 +12530,25 @@ msgstr "pgr_edmondsKarp(`Edges SQL`_, **start vids**, **end vids**)" msgid "pgr_edmondsKarp(`Edges SQL`_, `Combinations SQL`_)" msgstr "pgr_edmondsKarp(`Edges SQL`_, `Combinations SQL`_)" -msgid "https://www.boost.org/libs/graph/doc/edmonds_karp_max_flow.html" +#, fuzzy +msgid "" +"`Boost: Edmonds Karp max flow `__" msgstr "https://www.boost.org/libs/graph/doc/edmonds_karp_max_flow.html" msgid "https://en.wikipedia.org/wiki/Edmonds%E2%80%93Karp_algorithm" msgstr "https://en.wikipedia.org/wiki/Edmonds%E2%80%93Karp_algorithm" -msgid "``pgr_edwardMoore - Experimental``" -msgstr "``pgr_edwardMoore - 实验``" +#, fuzzy +msgid "``pgr_edwardMoore`` - Experimental" +msgstr "``pgr_edwardMoore`` - 实验" msgid "" "``pgr_edwardMoore`` — Returns the shortest path using Edward-Moore algorithm." msgstr "`pgr_edwardMoore`` - 使用 Edward-Moore 算法返回最短路径。" -msgid "``pgr_edwardMoore`` (`Combinations`_)" -msgstr "``pgr_edwardMoore`` (`组合`_)" - -msgid "``pgr_edwardMoore`` (`One to One`_)" -msgstr "``pgr_edwardMoore`` (`一对一`_)" - -msgid "``pgr_edwardMoore`` (`One to Many`_)" -msgstr "``pgr_edwardMoore`` (`一对多`_)" - -msgid "``pgr_edwardMoore`` (`Many to One`_)" -msgstr "``pgr_edwardMoore`` (`多对一`_)" - -msgid "``pgr_edwardMoore`` (`Many to Many`_)" -msgstr "``pgr_edwardMoore`` (`多对多`_)" +msgid "pgr_edwardMoore(Combinations)" +msgstr "pgr_edwardMoore(组合)" msgid "" "Edward Moore’s Algorithm is an improvement of the Bellman-Ford Algorithm. It " @@ -12417,15 +12621,13 @@ msgstr "pgr_edwardMoore(`Edges SQL`_, `Combinations SQL`_, [``directed``])" msgid "https://en.wikipedia.org/wiki/Shortest_Path_Faster_Algorithm" msgstr "https://en.wikipedia.org/wiki/Shortest_Path_Faster_Algorithm" -msgid "pgr_extractVertices -- Proposed" -msgstr "pgr_extractVertices -- 拟议" +#, fuzzy +msgid "``pgr_extractVertices``" +msgstr "pgr_extractVertices" msgid "``pgr_extractVertices`` — Extracts the vertices information" msgstr "``pgr_extractVertices`` — 提取顶点信息" -msgid "Classified as **proposed** function" -msgstr "列为 **拟议** 函数" - msgid "" "This is an auxiliary function for extracting the vertex information of the " "set of edges of a graph." @@ -12530,14 +12732,9 @@ msgstr "``pgr_findCloseEdges``" msgid "``pgr_findCloseEdges`` - Finds the close edges to a point geometry." msgstr "``pgr_findCloseEdges`` -查找点几何图形的闭合边。" -msgid "New **proposed** signatures:" -msgstr "新的 **拟议** 签名:" - -msgid "``pgr_findCloseEdges`` (`One point`_)" -msgstr "``pgr_findCloseEdges`` (`一个点`_)" - -msgid "``pgr_findCloseEdges`` (`Many points`_)" -msgstr "``pgr_findCloseEdges`` (`多个点`_)" +#, fuzzy +msgid "``partial`` option is removed." +msgstr "``n_seq`` 被删除" msgid "" "``pgr_findCloseEdges`` - An utility function that finds the closest edge to " @@ -12553,7 +12750,8 @@ msgid "" "adjustments needed by the application." msgstr "可以获取计算代码,以便根据应用需要进行进一步的具体调整。" -msgid "``EMTPY SET`` is returned on dryrun executions" +#, fuzzy +msgid "``EMPTY SET`` is returned on dryrun executions" msgstr "空运行执行时返回 ``EMTPY SET``" msgid "" @@ -12566,7 +12764,8 @@ msgid "" msgstr "" "pgr_findCloseEdges(`Edges SQL`_, **points**, **tolerance**, [**options**])" -msgid "**options:** ``[cap, partial, dryrun]``" +#, fuzzy +msgid "**options:** ``[cap, dryrun]``" msgstr "**options:** ``[cap, partial, dryrun]``" msgid "Returns set of |result-find|" @@ -12575,53 +12774,17 @@ msgstr "返回集合 |result-find|" msgid "One point" msgstr "一个点" -msgid "Default: ``cap => 1``" -msgstr "默认: ``cap => 1``" - -msgid "Maximum one row answer." -msgstr "最多回答一行。" - -msgid "Default: ``partial => true``" -msgstr "默认: ``partial => true``" - -msgid "With less calculations as possible." -msgstr "尽可能减少计算。" - -msgid "Default: ``dryrun => false``" -msgstr "默认: ``dryrun => false``" - -msgid "Process query" -msgstr "过程查询" - -msgid "Returns" -msgstr "返回" - -msgid "values on ``edge_id``, ``fraction``, ``side`` columns." -msgstr "``edge_id``, ``fraction``, ``side`` 列的值。" +msgid "Get two close edges to points of interest with :math:`pid = 5`" +msgstr "" -msgid "``NULL`` on ``distance``, ``geom``, ``edge`` columns." -msgstr "``distance``, ``geom``, ``edge``列上为``NULL``。" +msgid "``cap => 2``" +msgstr "``cap => 2``" msgid "Many points" msgstr "多点" -msgid "" -"Find at most :math:`2` edges close to all vertices on the points of interest " -"table." -msgstr "最多找出 :math:`2` 接近兴趣点表上所有顶点的边。" - -msgid "One answer per point, as small as possible." -msgstr "每点一个答案,越小越好。" - -msgid "" -"Columns ``edge_id``, ``fraction``, ``side`` and ``geom`` are returned with " -"values." -msgstr "返回了带有值的列 ``edge_id``, ``fraction``, ``side`` 和 ``geom``。" - -msgid "" -"``geom`` contains the original point geometry to assist on deterpartialing " -"to which point geometry the row belongs to." -msgstr "``geom`` 包含原始的点几何信息,以帮助确定该行属于哪个点几何。" +msgid "For each points of interests, find the closest edge." +msgstr "" msgid "**point**" msgstr "**point**" @@ -12647,17 +12810,6 @@ msgstr "几何图形之间的最大距离" msgid "Limit output rows" msgstr "限制输出行数" -msgid "``partial``" -msgstr "``partial``" - -msgid "" -"When ``true`` only columns needed for :doc:`withPoints-category` are " -"calculated." -msgstr "当为 ``true`` 时,只计算 :doc:`withPoints-category` 需要的列。" - -msgid "When ``false`` all columns are calculated" -msgstr "当为 ``false`` 时,所有的列都计算" - msgid "When ``false`` calculations are performed." msgstr "当为 ``false`` 时,执行计算。" @@ -12674,290 +12826,120 @@ msgstr "边的 ``LINESTRING`` 几何。" msgid "When :math:`cap = 1`, it is the closest edge." msgstr "当 :math:`cap = 1` 时,它是最近的边。" +#, fuzzy msgid "" -"Value in <0,1> that indicates the relative postition from the first end-" -"point of the edge." +"Value in <0,1> that indicates the relative position from the first end-point " +"of the edge." msgstr "在 <0,1> 范围内的值,表示相对于边的第一个端点的相对位置。" msgid "Value in ``[r, l]`` indicating if the point is:" msgstr "``[r, l]`` 中的值指示该点是否为:" -msgid "In the right ``r``." -msgstr "在右边的 ``r``。" - -msgid "In the left ``l``." -msgstr "在左边的 ``l``。" +#, fuzzy +msgid "At the right ``r`` of the segment." +msgstr "分段的几何形状。" msgid "When the point is on the line it is considered to be on the right." msgstr "当点在直线上时,它被认为是在右边。" +#, fuzzy +msgid "At the left ``l`` of the segment." +msgstr "位于该段的两侧。" + msgid "``distance``" msgstr "``distance``" -msgid "Distance from point to edge." +#, fuzzy +msgid "Distance from the point to the edge." msgstr "点到边缘的距离。" -msgid "``NULL`` when ``cap = 1`` on the `One point`_ signature" -msgstr "``NULL`` 当在 `一个点`_ 签名,``cap = 1`` 时" - -msgid "``POINT`` geometry" +#, fuzzy +msgid "Original ``POINT`` geometry." msgstr "``POINT`` 几何" +#, fuzzy msgid "" -"`One Point`_: Contains the point on the edge that is ``fraction`` away from " -"the starting point of the edge." -msgstr "`一个点`_:包含边缘上距边缘起点一小部分的点。" - -msgid "`Many Points`_: Contains the corresponding **original point**" -msgstr "`多个点`_:包含对应的 **原始点**" - -msgid "" -"``LINESTRING`` geometry from the **original point** to the closest point of " -"the edge with identifier ``edge_id``" +"``LINESTRING`` geometry that connects the original **point** to the closest " +"point of the edge with identifier ``edge_id``" msgstr "" "从 **原始点** 到具有标识符 ``edge_id`` 的边的最近点的 ``LINESTRING`` 几何图形" -msgid "One point results" -msgstr "单一点的结果" - -msgid "The green nodes is the **original point**" -msgstr "绿色节点是 **原始点**" - -msgid "" -"The geometry ``geom`` is a point on the :math:`sp \\rightarrow ep` edge." -msgstr "几何 ``geom`` 是 :math:`sp \\rightarrow ep` 边上的一个点。" - -msgid "" -"The geometry ``edge`` is a line that connects the **original point** with " -"``geom``" -msgstr "几何 ``edge`` 是连接 **original point** 和 ``geom`` 的线" - -msgid "Many point results" -msgstr "多点成果" - -msgid "The green nodes are the **original points**" -msgstr "绿色节点为 **原始点**" - -msgid "" -"The geometry ``geom``, marked as **g1** and **g2** are the **original " -"points**" -msgstr "标为 **g1** 和 **g2** 的几何体 ``geom`` 是 **原始点**" - -msgid "" -"The geometry ``edge``, marked as **edge1** and **edge2** is a line that " -"connects the **original point** with the closest point on the :math:`sp " -"\\rightarrow ep` edge." -msgstr "" -"标为 **edge1** 和 **edge2** 的几何图形 ``edge`` 是一条连接 ** 原始点** 和 :" -"math:`sp \\rightarrow ep` 边上最近点的线。" - -msgid "One point examples" -msgstr "单点示例" - -msgid "At most two answers" -msgstr "最多两个答案" - -msgid "``cap => 2``" -msgstr "``cap => 2``" - -msgid "Maximum two row answer." -msgstr "最多回答两行。" - -msgid "Understanding the result" -msgstr "了解结果" - -msgid "``NULL`` on ``geom``, ``edge``" -msgstr "``NULL`` 在 ``geom``, ``edge`` 上" - -msgid "``edge_id`` identifier of the edge close to the **original point**" -msgstr "``edge_id`` 靠近 **原始点** 的边的标识符" - -msgid "" -"Two edges are withing :math:`0.5` distance units from the **original " -"point**: :math:`{5, 8}`" -msgstr "有两条边与 **原始点** : :math:`{5, 8}` 的距离在 :math:`0.5` 单位范围内" - -msgid "For edge :math:`5`:" -msgstr "对于边 :math:`5`:" - -msgid "" -"``fraction``: The closest point from the **original point** is at the :math:" -"`0.8` fraction of the edge :math:`5`." -msgstr "" -"``fraction``:离 **原始点** 最近的点位于边 :math:`5` 处的 :math:`0.8` 分数位" -"置。" - -msgid "" -"``side``: The **original point** is located to the left side of edge :math:" -"`5`." -msgstr "``side``: **原始点** 位于边 :math:`5` 的左侧。" - -msgid "" -"``distance``: The **original point** is located :math:`0.1` length units " -"from edge :math:`5`." -msgstr "``distance``: **原始点** 位于边 :math:`5` 的 :math:`0.1` 长度单位处。" - -msgid "For edge :math:`8`:" -msgstr "对于边 :math:`8`:" - -msgid "" -"``fraction``: The closest point from the **original point** is at the :math:" -"`0.89..` fraction of the edge :math:`8`." -msgstr "" -"``fraction``:离 **原始点** 最近的点位于边 :math:`8` 的 :math:`0.89..` 分数位" -"置。" - -msgid "" -"``side``: The **original point** is located to the right side of edge :math:" -"`8`." -msgstr "``side``: **原始点** 位于边 :math:`8` 的右侧。" - -msgid "" -"``distance``: The **original point** is located :math:`0.19..` length units " -"from edge :math:`8`." -msgstr "" -"``distance``: **原始点** 距离边 :math:`8` 有 :math:`0.19..` 长度单位。" - -msgid "One answer, all columns" -msgstr "一个答案,所有列" - -msgid "``partial => false``" -msgstr "``partial => false``" - -msgid "Calculate all columns" -msgstr "计算所有列" - -msgid "" -"``edge_id`` identifier of the edge **closest** to the **original point**" -msgstr "``edge_id`` 与 **原始点** 最 **接近** 的边的标识符" - -msgid "" -"From all edges within :math:`0.5` distance units from the **original " -"point**: :math:`{5}` is the closest one." -msgstr "" -"从距离 **原始点** 不超过 :math:`0.5` 距离单位的所有边中,边 :math:`{5}` 是最" -"近的一条。" - -msgid "" -"``geom``: Contains the geometry of the closest point on edge :math:`5` from " -"the **original point**." -msgstr "``geom``:包含了从 **原始点** 到边 :math:`5` 上最近点的几何形状。" - -msgid "" -"``edge``: Contains the ``LINESTRING`` geometry of the **original point** to " -"the closest point on on edge :math:`5` ``geom``" -msgstr "" -"``edge``:包含了从 **原始点** 到边 :math:`5` ``geom`` 上最近点的 " -"``LINESTRING`` 几何形状" - -msgid "At most two answers with all columns" -msgstr "所有列最多有两个答案" +#, fuzzy +msgid "One point in an edge" +msgstr "单点模拟执行" -msgid "Understanding the result:" -msgstr "了解结果:" +#, fuzzy +msgid "The green node is the original point." +msgstr "绿色节点是 **原始点**" -msgid "" -"``geom``: Contains the geometry of the closest point on edge :math:`8` from " -"the **original point**." -msgstr "``geom``:包含了从 **原始点** 到边 :math:`8` 上最近点的几何形状。" +#, fuzzy +msgid "``geom`` has the value of the original point." +msgstr "边 :math:`5` 是距离 **原始点** 最近的边" +#, fuzzy msgid "" -"``edge``: Contains the ``LINESTRING`` geometry of the **original point** to " -"the closest point on on edge :math:`8` ``geom``" +"The geometry ``edge`` is a line that connects the original point with the " +"edge :math:`sp \\rightarrow ep` edge." msgstr "" -"``edge``:包含了从 **原始点** 到边 :math:`8` ``geom`` 上最近点的 " -"``LINESTRING`` 几何形状" +"标为 **edge1** 和 **edge2** 的几何图形 ``edge`` 是一条连接 ** 原始点** 和 :" +"math:`sp \\rightarrow ep` 边上最近点的线。" + +#, fuzzy +msgid "The point is located at the left of the edge." +msgstr "``side``: **原始点** 位于边 :math:`5` 的左侧。" msgid "One point dry run execution" msgstr "单点模拟执行" +#, fuzzy +msgid "Using the query from the previous example:" +msgstr "本示例使用此表设计:" + msgid "Returns ``EMPTY SET``." msgstr "返回 ``EMPTY SET``。" -msgid "``partial => true``" -msgstr "``partial => true``" - -msgid "Is ignored" -msgstr "被忽略" - -msgid "" -"Because it is a **dry run** excecution, the code for all calculations are " -"shown on the PostgreSQL ``NOTICE``." -msgstr "" -"由于这是一次 **模拟** 执行,所有计算的代码都显示在 PostgreSQL 的 ``NOTICE`` " -"中。" - msgid "``dryrun => true``" msgstr "``dryrun => true``" -msgid "Do not process query" -msgstr "不处理查询" - -msgid "" -"Generate a PostgreSQL ``NOTICE`` with the code used to calculate all columns" +#, fuzzy +msgid "Generates a PostgreSQL ``NOTICE`` with the code used." msgstr "生成一个包含用于计算所有列的代码的 PostgreSQL ``NOTICE``" -msgid "``cap`` and **original point** are used in the code" -msgstr "代码中使用了 ``cap`` 和 **原始点**" - -msgid "Many points examples" -msgstr "多点示例" - -msgid "At most two answers per point" -msgstr "每个点最多两个答案" - -msgid "``NULL`` on ``edge``" -msgstr "``edge``为``NULL``" - msgid "" -"``edge_id`` identifier of the edge close to a **original point** (``geom``)" -msgstr "``edge_id``是与一个 **原始点** (``geom``)靠近的边的标识符" - -msgid "" -"Two edges at most withing :math:`0.5` distance units from each of the " -"**original points**:" -msgstr "" -"每个 **原始点** 中,最多有两条边位于距离不超过 :math:`0.5` 距离单位的范围内:" - -msgid "For ``POINT(1.8 0.4)`` and ``POINT(0.3 1.8)`` only one edge was found." -msgstr "对于 ``POINT(1.8 0.4)`` 和 ``POINT(0.3 1.8)`` ,只找到一条边。" - -msgid "For the rest of the points two edges were found." -msgstr "其余的点有两条边。" - -msgid "For point ``POINT(2.9 1.8)``" -msgstr "对于点 ``POINT(2.9 1.8)``" - -msgid "" -"Edge :math:`5` is before :math:`8` therefore edge :math:`5` has the shortest " -"distance to ``POINT(2.9 1.8)``." +"The generated code can be used as a starting base code for additional " +"requirements, like taking into consideration the SRID." msgstr "" -"边 :math:`5` 在 :math:`8` 之前,因此边 :math:`5` 到 ``POINT(2.9 1.8)`` 的距离" -"最短。" -msgid "One answer per point, all columns" -msgstr "每点一个答案,所有列" - -msgid "For the **original point** ``POINT(2.9 1.8)``" -msgstr "对于 **原始点** ``POINT(2.9 1.8)``" +#, fuzzy +msgid "Many points in an edge" +msgstr "多点示例" -msgid "Edge :math:`5` is the closest edge to the **original point**" -msgstr "边 :math:`5` 是距离 **原始点** 最近的边" +msgid "The green nodes are the **original points**" +msgstr "绿色节点为 **原始点**" msgid "" -"``geom``: Contains the geometry of the **original point** ``POINT(2.9 1.8)``" -msgstr "``geom``:包含了 **原始点** 的几何形状,即 ``POINT(2.9 1.8)``" +"The geometry ``geom``, marked as **g1** and **g2** are the **original " +"points**" +msgstr "标为 **g1** 和 **g2** 的几何体 ``geom`` 是 **原始点**" msgid "" -"``edge``: Contains the ``LINESTRING`` geometry of the **original point** " -"(``geom``) to the closest point on on edge." +"The geometry ``edge``, marked as **edge1** and **edge2** is a line that " +"connects the **original point** with the closest point on the :math:`sp " +"\\rightarrow ep` edge." msgstr "" -"``edge``:包含了 **原始点** (``geom``)到最接近的边上的 ``LINESTRING`` 几何" -"形状。" +"标为 **edge1** 和 **edge2** 的几何图形 ``edge`` 是一条连接 ** 原始点** 和 :" +"math:`sp \\rightarrow ep` 边上最近点的线。" msgid "Many points dry run execution" msgstr "多点模拟执行" +msgid "Do not process query" +msgstr "不处理查询" + +msgid "" +"Generate a PostgreSQL ``NOTICE`` with the code used to calculate all columns" +msgstr "生成一个包含用于计算所有列的代码的 PostgreSQL ``NOTICE``" + msgid "Find at most two routes to a given point" msgstr "最多找到两条到达给定点的路线" @@ -12994,11 +12976,12 @@ msgstr "在这份文档中,将有6个固定的兴趣点,并且它们将被 msgid "A unique identifier." msgstr "唯一标识符。" -msgid "" -"Identifier of the edge nearest edge that allows an arrival to the point." -msgstr "允许到达该点的最近边的标识符。" +#, fuzzy +msgid "Identifier of the nearest segment." +msgstr "顶点的标识符。" -msgid "Is it on the left, right or both sides of the segment ``edge_id``" +#, fuzzy +msgid "Is it on the left, right or both sides of the segment ``edge_id``." msgstr "它位于边 ``edge_id`` 的左侧、右侧还是两侧" msgid "Where in the segment is the point located." @@ -13007,15 +12990,43 @@ msgstr "该点位于边的哪个位置。" msgid "The geometry of the points." msgstr "点的几何形状。" +#, fuzzy +msgid "The distance between ``geom`` and the segment ``edge_id``." +msgstr "它位于边 ``edge_id`` 的左侧、右侧还是两侧" + +#, fuzzy +msgid "" +"A segment that connects the ``geom`` of the point to the closest point on " +"the segment ``edge_id``." +msgstr "它位于边 ``edge_id`` 的左侧、右侧还是两侧" + msgid "``newPoint``" msgstr "``newPoint``" -msgid "The geometry of the points moved on top of the segment." -msgstr "在线段顶部移动的点的几何形状。" +msgid "A point on segment ``edge_id`` that is the closest to ``geom``." +msgstr "" -msgid "Points of interest fillup" +#, fuzzy +msgid "Points of interest fill up" msgstr "兴趣点填充" +#, fuzzy +msgid "Inserting the points of interest." +msgstr "兴趣点" + +#, fuzzy +msgid "Filling the rest of the table." +msgstr "填写映射表" + +msgid "" +"Any other additional modification: In this manual, point :math:`6` can be " +"reached from both sides." +msgstr "" + +#, fuzzy +msgid "The points of interest:" +msgstr "兴趣点" + msgid "``pgr_floydWarshall``" msgstr "``pgr_floydWarshall``" @@ -13049,9 +13060,6 @@ msgstr "" "Boost `floyd-Warshall `_" -msgid "Queries uses the :doc:`sampledata` network." -msgstr "查询使用 :doc:`sampledata` 网络。" - msgid "``pgr_full_version``" msgstr "``pgr_full_version``" @@ -13059,9 +13067,6 @@ msgid "" "``pgr_full_version`` — Get the details of pgRouting version information." msgstr "``pgr_full_version`` — 获取pgRouting版本信息的详细信息。." -msgid "New **official** function" -msgstr "**官方** 新功能" - msgid "Get complete details of pgRouting version information" msgstr "获取 pgRouting 版本信息的完整详细信息" @@ -13128,17 +13133,16 @@ msgstr "``hash``" msgid "Git hash of pgRouting build" msgstr "pgRouting 构建的 Git 哈希" -msgid "``pgr_hawickCircuits - Experimental``" +#, fuzzy +msgid "``pgr_hawickCircuits`` - Experimental" msgstr "``pgr_hawickCircuits - 实验``" +#, fuzzy msgid "" -"``pgr_hawickCircuits`` — Returns the list of cirucits using hawick circuits " +"``pgr_hawickCircuits`` — Returns the list of ciruits using hawick circuits " "algorithm." msgstr "``pgr_hawickCircuits`` — 使用 Hawick 回路算法返回回路列表。" -msgid "``pgr_hawickCircuits``" -msgstr "``pgr_hawickCircuits``" - msgid "" "Hawick Circuit algorithm, is published in 2008 by Ken Hawick and Health A. " "James. This algorithm solves the problem of detecting and enumerating " @@ -13279,7 +13283,10 @@ msgstr "" "新图不是平面图,因为它具有一个 :math:`K_5` 子图。蓝色的边代表 :math:`K_5` 子" "图。" -msgid "https://www.boost.org/libs/graph/doc/boyer_myrvold.html" +#, fuzzy +msgid "" +"`Boost: Boyer Myrvold `__" msgstr "https://www.boost.org/libs/graph/doc/boyer_myrvold.html" msgid "``pgr_johnson``" @@ -13339,6 +13346,9 @@ msgid "" "breadth First Search ordering." msgstr "``pgr_kruskalBFS`` — Kruskal 的最小生成树算法,具有广度优先搜索排序。" +msgid "Added ``pred`` result columns." +msgstr "添加了 ``pred`` 结果列。" + msgid "" "Visits and extracts the nodes information in Breath First Search ordering of " "the Minimum Spanning Tree created using Kruskal's algorithm." @@ -13421,8 +13431,9 @@ msgstr "pgr_kruskalDFS(`Edges SQL`_, **root vid**, [``max_depth``])" msgid "pgr_kruskalDFS(`Edges SQL`_, **root vids**, [``max_depth``])" msgstr "pgr_kruskalDFS(`Edges SQL`_, **root vids**, [``max_depth``])" -msgid "pgr_lengauerTarjanDominatorTree -Experimental" -msgstr "pgr_lengauerTarjanDominatorTree -实验" +#, fuzzy +msgid "``pgr_lengauerTarjanDominatorTree`` - Experimental" +msgstr "``pgr_lengauerTarjanDominatorTree`` - 实验" msgid "" "``pgr_lengauerTarjanDominatorTree`` — Returns the immediate dominator of all " @@ -13480,11 +13491,12 @@ msgstr "顶点的直接支配者。" msgid "Dominator tree of another component." msgstr "另一个组件的支配树。" +#, fuzzy msgid "" -"`Boost: Lengauer-Tarjan dominator tree algorithm `__" +"`Boost: Lengauer-Tarjan dominator `__" msgstr "" -"`BOOST:Languer-Tarzan 支配树算法 `__" msgid "" @@ -13493,51 +13505,50 @@ msgid "" msgstr "" "`维基百科:支配树 `__" -#, fuzzy -msgid "pgr_lineGraph - Proposed" -msgstr "pgr_trsp - 拟议" +msgid "``pgr_lineGraph`` - Proposed" +msgstr "``pgr_lineGraph`` - 提议" msgid "" "``pgr_lineGraph`` — Transforms the given graph into its corresponding edge-" "based graph." msgstr "``pgr_lineGraph`` — 将给定图转换为其相应的基于边的图。" -#, fuzzy +msgid "Works for directed and undirected graphs." +msgstr "适用于有向和无向图。" + msgid "" "Given a graph :math:`G`, its line graph :math:`L(G)` is a graph such that:" -msgstr "给定一个图 G,它的线图 L(G) 是这样的图:" +msgstr "给定一个图 :math:`G`,其线图 :math:`L(G)` 是一个图,满足以下条件:" -#, fuzzy msgid "Each vertex of :math:`L(G)` represents an edge of :math:`G`." msgstr ":math:`L(G)` 的每个顶点代表 :math:`G` 的一条边。" -#, fuzzy msgid "" "Two vertices of :math:`L(G)` are adjacent if and only if their corresponding " "edges share a common endpoint in :math:`G`" msgstr "" -":math:`L(G)` 的两个顶点相邻当且仅当它们对应的边共享 :math:`G` 中的公共端点" +":math:`L(G)` 的两个顶点相邻,当且仅当它们对应的边在 :math:`G` 中共享一个共同" +"端点时" -#, fuzzy msgid "" "The ``cost`` and ``reverse_cost`` columns of the result represent existence " "of the edge." -msgstr "使用 ``cost`` 和 ``reverse_cost`` 列来表示边的存在。" +msgstr "结果中的 ``cost`` 和 ``reverse_cost`` 列表示边的存在性。" -#, fuzzy msgid "When the graph is directed the result is directed." -msgstr "当图无向时,成本矩阵是对称的。" +msgstr "当图形是有向的,结果也是有向的。" msgid "" "To get the complete Line Graph use unique identifiers on the double way " "edges (See `Additional Examples`_)." msgstr "" +"要获取完整的线图,请在双向边上使用唯一标识符 (See `Additional Examples`_)." msgid "When the graph is undirected the result is undirected." msgstr "当图无向时,成本矩阵是对称的。" msgid "The ``reverse_cost`` is always :math:`-1`." -msgstr "" +msgstr "``reverse_cost`` 始终为 :math:`-1`。" msgid "pgr_lineGraph(`Edges SQL`_, [``directed``])" msgstr "pgr_lineGraph(`Edges SQL`_, [``directed``])" @@ -13545,22 +13556,15 @@ msgstr "pgr_lineGraph(`Edges SQL`_, [``directed``])" msgid "Returns set of |result-lineg|" msgstr "Returns set of |result-lineg|" -#, fuzzy msgid "For an undirected graph with edges :math:'{2,4,5,8}'" -msgstr "对于有边 :math:`\\{1, 2, 3, 4\\}` 的有向子图" +msgstr "对于一个undirected graph(无向图),其边为 :math:'{2,4,5,8}'" msgid "Gives a local identifier for the edge" msgstr "给出边的本地标识符" -msgid "Identifier of the source vertex of the current edge." -msgstr "当前边的源顶点的标识符。" - msgid "When `negative`: the source is the reverse edge in the original graph." msgstr "为负时:源是原始图中的反向边。" -msgid "Identifier of the target vertex of the current edge." -msgstr "当前边的目标顶点的标识符。" - msgid "When `negative`: the target is the reverse edge in the original graph." msgstr "为负时:目标是原始图中的反向边。" @@ -13580,152 +13584,146 @@ msgid "" "it’s not part of the graph." msgstr "当为负时:边(``target``, ``source``)不存在,因此它不是图的一部分。" -#, fuzzy msgid "Given the following directed graph" -msgstr "给出以下查询" +msgstr "给定以下有向图" msgid "" ":math:`G(V,E) = G(\\{1,2,3,4\\},\\{ 1 \\rightarrow 2, 1 \\rightarrow 4, 2 " "\\rightarrow 3, 3 \\rightarrow 1, 3 \\rightarrow 2, 3 \\rightarrow 4, 4 " "\\rightarrow 3\\})`" msgstr "" +":math:`G(V,E) = G(\\{1,2,3,4\\},\\{ 1 \\rightarrow 2, 1 \\rightarrow 4, 2 " +"\\rightarrow 3, 3 \\rightarrow 1, 3 \\rightarrow 2, 3 \\rightarrow 4, 4 " +"\\rightarrow 3\\})`" msgid "Representation as directed with shared edge identifiers" -msgstr "" +msgstr "用共享边标识符定向表示" msgid "" "For the simplicity, the design of the edges table on the database, has the " "edge's identifiers are represented with 3 digits:" -msgstr "" +msgstr "为了简化数据库中边表的设计,边的标识符采用3位数字表示:" msgid "hundreds" -msgstr "" +msgstr "百位" -#, fuzzy msgid "the source vertex" -msgstr "获取最近的顶点" +msgstr "源点" msgid "tens" -msgstr "" +msgstr "十位" msgid "always 0, acts as a separator" -msgstr "" +msgstr "始终为 0,用作分隔符" -#, fuzzy msgid "units" -msgstr "单位" +msgstr "个位" -#, fuzzy msgid "the target vertex" -msgstr "获取最近的顶点" +msgstr "目标顶点" msgid "In this image," -msgstr "" +msgstr "在这张图片中," msgid "" "Single or double head arrows represent one edge (row) on the edges table." -msgstr "" +msgstr "单向或双向箭头表示边表中的一条边(行)。" -#, fuzzy msgid "The numbers in the yellow shadow are the edge identifiers." -msgstr "返回的行按边标识符升序排列。" +msgstr "黄色阴影中的数字是边缘标识符。" msgid "" "Two pair of edges share the same identifier when the ``reverse_cost`` column " "is used." -msgstr "" +msgstr "当使用 ``reverse_cost`` 列时,两个边对会共享相同的标识符。" -#, fuzzy msgid "" "Edges :math:`{2 \\rightarrow 3, 3 \\rightarrow 2}` are represented with one " "edge row with :math:`id=203`." -msgstr "从图中删除边 :math:`v \\rightarrow w` 和 :math:`w \\rightarrow z`。" +msgstr "" +"边 :math:`{2 \\rightarrow 3, 3 \\rightarrow 2}` 用一条边行表示,标识符其 :" +"math:`id=203` 。" -#, fuzzy msgid "" "Edges :math:`{3 \\rightarrow 4, 4 \\rightarrow 3}` are represented with one " "edge row with :math:`id=304`." -msgstr "从图中删除边 :math:`v \\rightarrow w` 和 :math:`w \\rightarrow z`。" +msgstr "" +"边 :math:`{3 \\rightarrow 4, 4 \\rightarrow 3}` 用一条边的行表示,标识符为 :" +"math:`id=304` 。" -#, fuzzy msgid "The graph can be created as follows:" -msgstr "图定义如下:" +msgstr "图表的创建过程如下:" -#, fuzzy msgid "Line Graph of a directed graph represented with shared edges" -msgstr "就有向图而言,就像有四个边" +msgstr "用共享边表示的有向图的线图" -#, fuzzy msgid "The result is a directed graph." -msgstr "有向图。" +msgstr "结果就是一个有向图。" -#, fuzzy msgid "" "For :math:`seq=4` from :math:`203 \\leftrightarrow 304` represent two edges" -msgstr "边 :math:`2` (:math:`1 \\rightarrow 3`) 不是图的一部分" +msgstr "对于 :math:`seq=4` ,从:math:`203 \\leftrightarrow 304` 表示两条边" msgid "For all the other values of ``seq`` represent one edge." -msgstr "" +msgstr "所有其他的 ``seq`` 值都代表一条边。" -#, fuzzy msgid "" "The ``cost`` and ``reverse_cost`` values represent the existence of the edge." -msgstr "使用 ``cost`` 和 ``reverse_cost`` 列来表示边的存在。" +msgstr "``cost`` 和 ``reverse_cost`` 的值表示边的存在。" -#, fuzzy msgid "When positive: the edge exists." -msgstr "当正数时是顶点的标识符。" +msgstr "当为正数时:边缘存在。" -#, fuzzy msgid "When negative: the edge does not exist." -msgstr "为负数时抛出错误。" +msgstr "负数时:边缘不存在。" msgid "Representation as directed with unique edge identifiers" -msgstr "" +msgstr "作为有向图表示,并使用唯一的边标识符" -#, fuzzy msgid "Single head arrows represent one edge (row) on the edges table." -msgstr "红色箭头对应边表中 ``cost`` > 0的情况。" +msgstr "单头箭头代表边表中的一条边(行)。" msgid "There are no double head arrows" -msgstr "" +msgstr "没有双向头箭" msgid "" "Two pair of edges share the same ending nodes and the ``reverse_cost`` " "column is not used." -msgstr "" +msgstr "两对边共享相同的结束节点,不使用 ``reverse_cost`` 列。" msgid "" "Edges :math:`{2 \\rightarrow 3, 3 \\rightarrow 2}` are represented with two " "edges :math:`id=203` and :math:`id=302` respectively." msgstr "" +"边 :math:`{2 \\rightarrow 3, 3 \\rightarrow 2}`分别用两条边表示,边标识符为 :" +"math:`id=203` 和:math:`id=302` 。" msgid "" "Edges :math:`{3 \\rightarrow 4, 4 \\rightarrow 3}` are represented with two " "edges :math:`id=304` and :math:`id=403` respectively." msgstr "" +"边 :math:`{3 \\rightarrow 4, 4 \\rightarrow 3}`分别用两条边表示,边标识符为 :" +"math:`id=304` 和 :math:`id=403` 。" -#, fuzzy msgid "Line Graph of a directed graph represented with unique edges" -msgstr "就有向图而言,就像有四个边" +msgstr "用唯一边表示的有向图的线图" -#, fuzzy msgid "" "For :math:`seq=7` from :math:`203 \\leftrightarrow 302` represent two edges." -msgstr "边 :math:`2` (:math:`1 \\rightarrow 3`) 不是图的一部分。" +msgstr "对于 :math:`seq=7` 从 :math:`203 \\leftrightarrow 302` 代表两条边。" -#, fuzzy msgid "" "For :math:`seq=8` from :math:`304 \\leftrightarrow 403` represent two edges." -msgstr "边 :math:`2` (:math:`1 \\rightarrow 3`) 不是图的一部分。" +msgstr "对于 :math:`seq=8` ,从 :math:`304 \\leftrightarrow 403` 表示两条边。" -#, fuzzy msgid "wikipedia: `Line Graph `__" -msgstr "`维基百科:二分图 `__" +msgstr "维基百科: `Line Graph `__" msgid "" "mathworld: `Line Graph `__" msgstr "" +"MathWorld在线数学资源: `Line Graph `__" msgid "``pgr_lineGraphFull`` - Experimental" msgstr "``pgr_lineGraphFull`` - 实验" @@ -13792,9 +13790,9 @@ msgstr "返回 |result-linegf| 的集合" msgid "Full line graph of subgraph of edges :math:`\\{4, 7, 8, 10\\}`" msgstr "边 :math:`\\{4, 7, 8, 10\\}` 子图的全线图" +#, fuzzy msgid "" -"The examples of this section are based on the :doc:`sampledata` network. The " -"examples include the subgraph including edges 4, 7, 8, and 10 with " +"The examples include the subgraph including edges 4, 7, 8, and 10 with " "``reverse_cost``." msgstr "" "本节的示例基于 :doc:`sampledata` 网络。 这些示例包括包含具有 " @@ -14028,30 +14026,36 @@ msgstr "pgr_makeConnected(`Edges SQL`_)" msgid "Returns set of |result-component-make|" msgstr "Returns set of |result-component-make|" -msgid "" -"Query done on :doc:`sampledata` network gives the list of edges that are " -"needed to connect the graph." +#, fuzzy +msgid "List of edges that are needed to connect the graph." msgstr "在 :doc:`sampledata` 网络上完成的查询给出了连接图所需的边列表。" -msgid "https://www.boost.org/libs/graph/doc/make_connected.html" +#, fuzzy +msgid "" +"`Boost: make connected `__" msgstr "https://www.boost.org/libs/graph/doc/make_connected.html" -msgid "pgr_maxCardinalityMatch" -msgstr "pgr_maxCardinalityMatch" +msgid "``pgr_maxCardinalityMatch``" +msgstr "``pgr_maxCardinalityMatch``" msgid "" "``pgr_maxCardinalityMatch`` — Calculates a maximum cardinality matching in a " "graph." msgstr "``pgr_maxCardinalityMatch`` — 计算图中的最大基数匹配。." +#, fuzzy +msgid "pgr_maxCardinalityMatch(text) returns only ``edge`` column." +msgstr "``pgr_maxCardinalityMatch(text)`` 仅仅返回``边`` 列." + msgid "Deprecated signature" msgstr "已弃用的签名" -msgid "``pgr_maxCardinalityMatch(text,boolean)``" -msgstr "``pgr_maxCardinalityMatch(text,boolean)``" +msgid "pgr_maxCardinalityMatch(text,boolean)" +msgstr "pgr_maxCardinalityMatch(text,boolean)" -msgid "``directed => false`` when used." -msgstr "使用时 ``directed => false``。" +msgid "directed => ``false`` when used." +msgstr "使用时 directed => ``false``。" msgid "Renamed from ``pgr_maximumCardinalityMatching``" msgstr "从 ``pgr_maximumCardinalityMatching`` 重命名" @@ -14101,7 +14105,10 @@ msgstr "正值表示存在边(``target``, ``source``)" msgid "Identifier of the edge in the original query." msgstr "原始查询中边的标识符。" -msgid "https://www.boost.org/libs/graph/doc/maximum_matching.html" +#, fuzzy +msgid "" +"`Boost: maximum_matching `__" msgstr "https://www.boost.org/libs/graph/doc/maximum_matching.html" msgid "https://en.wikipedia.org/wiki/Matching_%28graph_theory%29" @@ -14119,20 +14126,16 @@ msgid "" msgstr "" "``pgr_maxFlow`` —使用 Push Relabel 算法计算有向图中从源到目标的最大流量。" -msgid "``pgr_maxFlow`` (`Combinations`_)" -msgstr "``pgr_maxFlow`` (`组合`_)" - -msgid "New **Proposed** function" -msgstr "新 **拟议** 的函数" - -#, fuzzy msgid "Calculates the maximum flow from the sources to the targets." -msgstr "计算从 `source(s)` 到 `target(s)` 的最大流量。" +msgstr "计算从源头到目标的最大流量。" msgid "" "When the maximum flow is **0** then there is no flow and **0** is returned." msgstr "当最大流量为 **0** 时则没有流量,返回 **0** 。" +msgid "There is no flow when source has the same vaule as target." +msgstr "当 source与 target相同时,没有流量。" + msgid "Uses the :doc:`pgr_pushRelabel ` algorithm." msgstr "使用 :doc:`pgr_pushRelabel ` 算法。" @@ -14160,7 +14163,10 @@ msgstr "RETURNS ``BIGINT``" msgid "Maximum flow possible from the source(s) to the target(s)" msgstr "从 source(s)到 target(s)的可能最大流量" -msgid "https://www.boost.org/libs/graph/doc/push_relabel_max_flow.html" +#, fuzzy +msgid "" +"`Boost: push relabel max flow `__" msgstr "https://www.boost.org/libs/graph/doc/push_relabel_max_flow.html" msgid "" @@ -14176,8 +14182,11 @@ msgid "" "of the maximum flow on a graph" msgstr "``pgr_maxFlowMinCost`` — 计算图上最大流的总成本最小化的边" -msgid "``pgr_maxFlowMinCost`` (`Combinations`_)" -msgstr "``pgr_maxFlowMinCost`` (`组合`_)" +msgid "pgr_maxFlowMinCost(Combinations)" +msgstr "pgr_maxFlowMinCost(组合)" + +msgid "|boost| graph inside." +msgstr "|boost| 图内部。" msgid "**TODO** check which statement is true:" msgstr "**TODO** 检查哪个陈述是正确的:" @@ -14222,13 +14231,6 @@ msgstr "pgr_maxFlowMinCost(`Edges SQL`_, `Combinations SQL`_)" msgid "Returns set of |result-flow-mincost|" msgstr "返回 |result-flow-mincost| 的集合" -msgid "" -"https://www.boost.org/libs/graph/doc/" -"successive_shortest_path_nonnegative_weights.html" -msgstr "" -"https://www.boost.org/libs/graph/doc/" -"successive_shortest_path_nonnegative_weights.html" - msgid "``pgr_maxFlowMinCost_Cost`` - Experimental" msgstr "``pgr_maxFlowMinCost_Cost`` - 实验" @@ -14237,8 +14239,8 @@ msgid "" "maximum flow on a graph" msgstr "``pgr_maxFlowMinCost_Cost`` — 计算图上最大流量的最小总成本" -msgid "``pgr_maxFlowMinCost_Cost`` (`Combinations`_)" -msgstr "``pgr_maxFlowMinCost_Cost`` (`组合`_)" +msgid "pgr_maxFlowMinCost_Cost(Combinations)" +msgstr "pgr_maxFlowMinCost_Cost(组合)" msgid "**The cost value of all input edges must be nonnegative.**" msgstr "**所有输入边的成本值必须是非负的。**" @@ -14270,8 +14272,8 @@ msgstr "RETURNS FLOAT" msgid "Minimum Cost Maximum Flow possible from the source(s) to the target(s)" msgstr "从source(s) 到target(s)的最小成本最大流量" -msgid "pgr_nodeNetwork" -msgstr "pgr_nodeNetwork" +msgid "``pgr_nodeNetwork``" +msgstr "``pgr_nodeNetwork``" msgid "``pgr_nodeNetwork`` - Nodes an network edge table." msgstr "``pgr_nodeNetwork`` - 网络边表的节点。" @@ -14341,9 +14343,8 @@ msgstr "``bigint`` 表的唯一标识符" msgid "old_id" msgstr "old_id" -#, fuzzy msgid "``bigint`` Identifier of the edge in original table" -msgstr "``bigint`` 原表中边的标识符" +msgstr "``bigint`` 是原始表中边的标识符" msgid "sub_id" msgstr "sub_id" @@ -14437,9 +14438,8 @@ msgstr "仅具有进行拓扑分析的基本字段" msgid "Edges with 1 dead end: 1,6,24" msgstr "有 1 个死端的边:1、6、24" -#, fuzzy msgid "Edges with 2 dead ends: 17,18" -msgstr "有两个死端的边:17,18" +msgstr "边缘有 2 个死角:17,18" msgid "" "Edge 17's right node is a dead end because there is no other edge sharing " @@ -14452,9 +14452,8 @@ msgstr "有 1 个死端的边:1-1 ,6-1,14-2, 18-1 17-1 18-2" msgid "Isolated segments" msgstr "孤立的片段" -#, fuzzy msgid "two isolated segments: 17 and 18 both they have 2 dead ends" -msgstr "两个孤立的段:17 和 18 都有 2 个死端" +msgstr "两个孤立的段:17 和 18,它们都有两个死端" msgid "No Isolated segments" msgstr "无孤立段" @@ -14723,7 +14722,8 @@ msgstr "" "此数据示例 **lc101** 来自 https://www.sintef.no/projectweb/top/pdptw/li-lim-" "benchmark/ 上发布的数据" -msgid "There are 25 vehciles in the problem all with the same characteristics." +#, fuzzy +msgid "There are 25 vehicles in the problem all with the same characteristics." msgstr "问题中有 25 辆车都具有相同的特征。" msgid "The original orders" @@ -14734,7 +14734,8 @@ msgid "" "order." msgstr "对于同一订单的取货和配送,数据位于不同的行中。" -msgid "The original data needs to be converted to an appropiate table:" +#, fuzzy +msgid "The original data needs to be converted to an appropriate table:" msgstr "需要将原始数据转换为合适的表格:" msgid "The query" @@ -14787,12 +14788,12 @@ msgid "" "First Search ordering." msgstr "``pgr_primBFS`` — Prim 的深度优先搜索排序最小生成树算法。" -#, fuzzy msgid "" "Visits and extracts the nodes information in Breath First Search ordering of " "the Minimum Spanning Tree created using Prims's algorithm." msgstr "" -"访问并提取使用 Prims 算法创建的最小生成树的深度优先搜索顺序中的节点信息。" +"访问并提取使用 Prims 算法创建的最小生成树的 Breath First Search 排序中的节点" +"信息。" msgid "pgr_primBFS(`Edges SQL`_, **root vid**, [``max_depth``])" msgstr "pgr_primBFS(`Edges SQL`_, **root vid**, [``max_depth``])" @@ -14803,14 +14804,13 @@ msgstr "pgr_primBFS(`Edges SQL`_, **root vids**, [``max_depth``])" msgid "``pgr_primDD`` — Catchament nodes using Prim's algorithm." msgstr "``pgr_primDD`` — 使用 Prim 算法的集水区节点。" -#, fuzzy msgid "" "Using Prim's algorithm, extracts the nodes that have aggregate costs less " "than or equal to a distance from a root vertex (or vertices) within the " "calculated minimum spanning tree." msgstr "" -"使用 Prim 算法,在计算的最小生成树中提取总成本小于或等于距根顶点(或多个顶" -"点)距离的节点。" +"使用 Prim 算法,从计算出最小生成树中提取出那些与根节点(或根节点组)之间的聚" +"合成本小于或等于某个距离的节点。" msgid "pgr_primDD(`Edges SQL`_, **root vid**, **distance**)" msgstr "pgr_primDD(`Edges SQL`_, **root vid**, **distance**)" @@ -14845,9 +14845,6 @@ msgstr "" "``pgr_pushRelabel`` — 使用 Push Relabel 算法计算图边上的流量,以最大化从源到" "目标的流量。" -msgid "``pgr_pushRelabel`` (`Combinations`_)" -msgstr "``pgr_pushRelabel`` (`组合`_)" - msgid "Renamed from ``pgr_maxFlowPushRelabel``" msgstr "由 ``pgr_maxFlowPushRelabel`` 重命名" @@ -14866,17 +14863,14 @@ msgstr "pgr_pushRelabel(`Edges SQL`_, **start vids**, **end vids**)" msgid "pgr_pushRelabel(`Edges SQL`_, `Combinations SQL`_)" msgstr "pgr_pushRelabel(`Edges SQL`_, `Combinations SQL`_)" -msgid "pgr_sequentialVertexColoring - Proposed" -msgstr "pgr_sequentialVertexColoring - 拟议" +msgid "``pgr_sequentialVertexColoring`` - Proposed" +msgstr "``pgr_sequentialVertexColoring`` - 拟议" msgid "" "``pgr_sequentialVertexColoring`` — Returns the vertex coloring of an " "undirected graph, using greedy approach." msgstr "``pgr_sequentialVertexColoring`` — 使用贪婪方法返回无向图的顶点着色。" -msgid "Promoted to **proposed** signature" -msgstr "晋升为 **拟议** 签名" - msgid "" "Sequential vertex coloring algorithm is a graph coloring algorithm in which " "color identifiers are assigned to the vertices of a graph in a sequential " @@ -14923,8 +14917,16 @@ msgstr ":math:`k` 是使用的颜色数量。" msgid "pgr_sequentialVertexColoring(`Edges SQL`_)" msgstr "pgr_sequentialVertexColoring(`Edges SQL`_)" -msgid "pgr_stoerWagner - Experimental" -msgstr "pgr_stoerWagner - 实验" +#, fuzzy +msgid "" +"`Boost: Sequential Vertex Coloring `__" +msgstr "" +"`Boost:顺序顶点着色算法文档 `__" + +msgid "``pgr_stoerWagner`` - Experimental" +msgstr "``pgr_stoerWagner`` - 实验" msgid "``pgr_stoerWagner`` — The min-cut of graph using stoerWagner algorithm." msgstr "``pgr_stoerWagner`` — 使用 stoerWagner 算法对图进行最小分割。" @@ -15017,6 +15019,14 @@ msgstr "边的最小割" msgid "Using :doc:`pgr_connectedComponents`" msgstr "使用 :doc:`pgr_connectedComponents`" +#, fuzzy +msgid "" +"`Boost: Stoer Wagner min cut `__" +msgstr "" +"Boost: `强大组件 `__" + msgid "https://en.wikipedia.org/wiki/Stoer%E2%80%93Wagner_algorithm" msgstr "https://en.wikipedia.org/wiki/Stoer%E2%80%93Wagner_algorithm" @@ -15047,8 +15057,9 @@ msgstr "pgr_strongComponents(`Edges SQL`_)" msgid "The strong components of the graph" msgstr "图的重要组成部分" +#, fuzzy msgid "" -"Boost: `Strong components `__" msgstr "" "Boost: `强大组件 `__" +msgstr "" +"`Boost: is_bipartite `__" + msgid "``pgr_transitiveClosure`` - Experimental" msgstr "``pgr_transitiveClosure`` - 实验" @@ -15176,58 +15195,55 @@ msgstr "边目标的标识符" msgid "Identifiers of the vertices that are reachable from vertex v." msgstr "从顶点 v 可到达的顶点的标识符。" +#, fuzzy +msgid "" +"`Boost: transitive closure `__" +msgstr "" +"`Boost: is_bipartite `__" + msgid "https://en.wikipedia.org/wiki/Transitive_closure" msgstr "https://en.wikipedia.org/wiki/Transitive_closure" -msgid "pgr_trsp - Proposed" -msgstr "pgr_trsp - 拟议" +msgid "``pgr_trsp``" +msgstr "``pgr_trsp``" msgid "``pgr_trsp`` - routing vertices with restrictions." msgstr "``pgr_trsp`` -有限制的路由顶点。" -msgid "New proposed signatures" -msgstr "新拟议的签名" +msgid "pgr_trsp(One to One)" +msgstr "pgr_trsp (一对一)" -msgid "``pgr_trsp`` (`One to One`_)" -msgstr "``pgr_trsp`` (`一对一`_)" +msgid "pgr_trsp(One to Many)" +msgstr "pgr_trsp (一对多)" -msgid "``pgr_trsp`` (`One to Many`_)" -msgstr "``pgr_trsp`` (`一对多`_)" +msgid "pgr_trsp(Many to One)" +msgstr "pgr_trsp (多对一)" -msgid "``pgr_trsp`` (`Many to One`_)" -msgstr "``pgr_trsp`` (`多对一`_)" +msgid "pgr_trsp(Many to Many)" +msgstr "pgr_trsp (多对多)" -msgid "``pgr_trsp`` (`Many to Many`_)" -msgstr "``pgr_trsp`` (`多对多`_)" - -msgid "``pgr_trsp`` (`Combinations`_)" -msgstr "``pgr_trsp`` (`组合`_)" +msgid "pgr_trsp(Combinations)" +msgstr "pgr_trsp (组合)" msgid "Deprecated signatures" msgstr "弃用签名" -msgid "``pgr_trsp(text,integer,integer,boolean,boolean,text)``" -msgstr "``pgr_trsp(text,integer,integer,boolean,boolean,text)``" - -msgid "``pgr_trsp(text,integer,float,integer,float,boolean,boolean,text)``" -msgstr "``pgr_trsp(text,integer,float,integer,float,boolean,boolean,text)``" +msgid "pgr_trsp(text,integer,float,integer,float,boolean,boolean,text)" +msgstr "pgr_trsp(text,integer,float,integer,float,boolean,boolean,text)" -msgid "``pgr_trspViaVertices(text,anyarray,boolean,boolean,text)``" -msgstr "``pgr_trspViaVertices(text,anyarray,boolean,boolean,text)``" - -msgid "" -"``pgr_trspviaedges(text,integer[],double precision[],boolean,boolean,text)``" -msgstr "" -"``pgr_trspviaedges(text,integer[],double precision[],boolean,boolean,text)``" +msgid "pgr_trspViaVertices(text,anyarray,boolean,boolean,text)" +msgstr "pgr_trspViaVertices(text,anyarray,boolean,boolean,text)" msgid "New prototypes" msgstr "新原型" -msgid "``pgr_trspViaVertices``" -msgstr "``pgr_trspViaVertices``" +msgid "pgr_trspViaVertices" +msgstr "pgr_trspViaVertices" -msgid "``pgr_trspViaEdges``" -msgstr "``pgr_trspViaEdges``" +msgid "pgr_trspViaEdges" +msgstr "pgr_trspViaEdges" msgid "" "Turn restricted shortest path (TRSP) is an algorithm that receives turn " @@ -15311,19 +15327,13 @@ msgid "" "`Deprecated documentation `_" msgstr "` 已弃用文档 `_" -msgid "``pgr_trspVia`` - Proposed" -msgstr "``pgr_trspVia`` - 拟议" +msgid "``pgr_trspVia``" +msgstr "``pgr_trspVia``" msgid "" "``pgr_trspVia`` Route that goes through a list of vertices with restrictions." msgstr "``pgr_trspVia`` 穿过有限制的顶点列表的路线。" -msgid "New proposed function:" -msgstr "新提议的函数:" - -msgid "``pgr_trspVia`` (`One Via`_)" -msgstr "``pgr_trspVia`` (`One Via`_)" - msgid "" "Given a list of vertices and a graph, this function is equivalent to finding " "the shortest path between :math:`vertex_i` and :math:`vertex_{i+1}` for all :" @@ -15416,17 +15426,14 @@ msgstr "因此,当设置为 ``false`` 时,结果会忽略 ``U_turn_on_edge`` msgid ":doc:`via-category`" msgstr ":doc:`via-category`" -msgid "``pgr_trspVia_withPoints`` - Proposed" -msgstr "``pgr_trspVia_withPoints`` - 拟议" +msgid "``pgr_trspVia_withPoints``" +msgstr "``pgr_trspVia_withPoints``" msgid "" "``pgr_trspVia_withPoints`` - Route that goes through a list of vertices and/" "or points with restrictions." msgstr "``pgr_trspVia_withPoints`` - 经过一系列具有限制的顶点和/或点的路线。" -msgid "``pgr_trspVia_withPoints`` (`One Via`_)" -msgstr "``pgr_trspVia_withPoints`` (`One Via`_)" - msgid "" "Given a graph, a set of restriction on the graph edges, a set of points on " "the graphs edges and a list of vertices, this function is equivalent to " @@ -15610,35 +15617,17 @@ msgstr "" "`pgr_withPointsVia` 结果中,它删除了冲突路径,并使用 :doc:`pgr_trsp` 算法的结" "果构建解决方案。 在这种情况下,使用相同的边缘完成 U 形转弯。" -msgid "pgr_trsp_withPoints - Proposed" -msgstr "pgr_trsp_withPoints - 拟议" +msgid "``pgr_trsp_withPoints``" +msgstr "``pgr_trsp_withPoints``" msgid "``pgr_trsp_withPoints`` Routing Vertex/Point with restrictions." msgstr "``pgr_trsp_withPoints`` 有限制的路由顶点/点。" -msgid "New proposed signatures:" -msgstr "新拟议的签名:" - -msgid "``pgr_trsp_withPoints`` (`One to One`_)" -msgstr "``pgr_trsp_withPoints`` (`一对一`_)" - -msgid "``pgr_trsp_withPoints`` (`One to Many`_)" -msgstr "``pgr_trsp_withPoints`` (`一对多`_)" - -msgid "``pgr_trsp_withPoints`` (`Many to One`_)" -msgstr "``pgr_trsp_withPoints`` (`多对一`_)" - -msgid "``pgr_trsp_withPoints`` (`Many to Many`_)" -msgstr "``pgr_trsp_withPoints`` (`多对多`_)" - -msgid "``pgr_trsp_withPoints`` (`Combinations`_)" -msgstr "``pgr_trsp_withPoints`` (`组合`_)" - -#, fuzzy msgid "" "Modify the graph to include points defined by points_sql. Using Dijkstra " "algorithm, find the shortest path" -msgstr "修改图以包括由points_sql 定义的点。 使用 Dijkstra 算法,找到最短路径" +msgstr "" +"修改图形,使其包含由 points_sql 定义的点。使用 Dijkstra 算法找出最短路径" msgid "Characteristics:" msgstr "特征:" @@ -15759,17 +15748,15 @@ msgstr "" "无向图上从点 :math:`1` 和顶点 :math:`6` 到点 :math:`3`到顶点 :math:`1` 的详细" "信息。" -msgid "pgr_turnRestrictedPath - Experimental" -msgstr "pgr_turnRestrictedPath - 实验性" +msgid "``pgr_turnRestrictedPath`` - Experimental" +msgstr "``pgr_turnRestrictedPath`` - 实验性" +#, fuzzy msgid "" -"``pgr_turnRestrictedPath`` Using Yen's algorithm Vertex -Vertex routing with " -"restrictions" +"``pgr_turnRestrictedPath`` Using Yen's algorithm Vertex - Vertex routing " +"with restrictions" msgstr "``pgr_turnRestrictedPath`` 使用 Yen 算法顶点- 带限制的顶点路由" -msgid "New experimental function" -msgstr "新实验功能" - msgid "" "Using Yen's algorithm to obtain K shortest paths and analyze the paths to " "select the paths that do not use the restrictions" @@ -15843,8 +15830,8 @@ msgstr "pgr_version()" msgid "pgRouting Version for this documentation" msgstr "本文档的 pgRouting 版本" -msgid "pgr_vrpOneDepot - Experimental" -msgstr "pgr_vrpOneDepot -实验" +msgid "``pgr_vrpOneDepot`` - Experimental" +msgstr "``pgr_vrpOneDepot`` - 实验" msgid "**No documentation available**" msgstr "**无可用文档**" @@ -15852,8 +15839,8 @@ msgstr "**无可用文档**" msgid "**TBD**" msgstr "**TBD**" -msgid "``pgr_withPoints`` - Proposed" -msgstr "``pgr_withPoints`` -拟议" +msgid "``pgr_withPoints``" +msgstr "``pgr_withPoints``" msgid "" "``pgr_withPoints`` - Returns the shortest path in a graph with additional " @@ -16011,28 +15998,25 @@ msgstr "对于点 :math:`6` 和顶点 :math:`11`。" msgid "Passes in front or visits with left side driving." msgstr "从前方超车或以左侧驾驶方式行驶。" -msgid "``pgr_withPointsCost`` - Proposed" -msgstr "``pgr_withPointsCost`` -拟议" +msgid "``pgr_withPointsCost``" +msgstr "``pgr_withPointsCost``" -#, fuzzy msgid "" "``pgr_withPointsCost`` - Calculates the shortest path and returns only the " "aggregate cost of the shortest path found, for the combination of points " "given." msgstr "" -"``pgr_withPointsCost`` -对于给定的点组合,计算最短路径并仅返回找到的最短路径" -"的总成本。" +"``pgr_withPointsCost`` - 计算最短路径,并只返回所给点组合的最短路径的总成本。" msgid "pgr_withPointsCost(Combinations)" msgstr "pgr_withPointsCost(组合)" -#, fuzzy msgid "" "Modify the graph to include points defined by points_sql. Using Dijkstra " "algorithm, return only the aggregate cost of the shortest path found." msgstr "" -"修改图以包括由points_sql 定义的点。 使用 Dijkstra 算法,仅返回找到的最短路径" -"的总成本。" +"修改图形以包含由 points_sql 定义的点。使用 Dijkstra 算法,只返回找到的最短路" +"径的总成本。" msgid "" "Returns the sum of the costs of the shortest path for pair combination of " @@ -16182,8 +16166,8 @@ msgstr "左侧驾驶拓扑" msgid "Does not matter driving side driving topology" msgstr "与驱动端驱动拓扑无关" -msgid "``pgr_withPointsCostMatrix`` - proposed" -msgstr "``pgr_withPointsCostMatrix`` - 拟议" +msgid "``pgr_withPointsCostMatrix``" +msgstr "``pgr_withPointsCostMatrix``" msgid "" "``pgr_withPointsCostMatrix`` - Calculates a cost matrix using :doc:" @@ -16219,8 +16203,8 @@ msgid "" msgstr "" "求从顶点 :math:`1` 到图上点 `(2.9, 1.8)` 的两个最近位置的路线的矩阵成本。" -msgid "``pgr_withPointsDD`` - Proposed" -msgstr "``pgr_withPointsDD`` - 拟议" +msgid "``pgr_withPointsDD``" +msgstr "``pgr_withPointsDD``" msgid "" "``pgr_withPointsDD`` - Returns the driving **distance** from a starting " @@ -16234,8 +16218,11 @@ msgstr "" "签名更改: ``driving_side`` 参数从已命名的可选参数改为未命名的必选参数 " "**driving side**。" -msgid "``pgr_withPointsDD`` (`Single vertex`)" -msgstr "``pgr_withPointsDD`` (`单顶点`)" +msgid "pgr_withPointsDD(Single vertex)" +msgstr "pgr_withPointsDD (单顶点)" + +msgid "pgr_withPointsDD(Multiple vertices)" +msgstr "pgr_withPointsDD(多顶点)" msgid "Added ``depth``, ``pred`` and ``start_vid`` column." msgstr "添加了 ``depth``、``pred`` 和 ``start_vid`` 列。" @@ -16243,9 +16230,8 @@ msgstr "添加了 ``depth``、``pred`` 和 ``start_vid`` 列。" msgid "Added ``depth``, ``pred`` columns." msgstr "添加了 ``depth``,``pred`` 列。" -#, fuzzy msgid "When ``details`` is ``false``:" -msgstr "当 ``details`` 为``false`` 时:" +msgstr "当 ``details`` 为 ``false`` 时:" msgid "" "Only points that are visited are removed, that is, points reached within the " @@ -16255,18 +16241,16 @@ msgstr "" "被包含在内" msgid "" -"``pgr_withpointsdd(text,text,bigint,double precision,boolean,character," -"boolean)``" +"pgr_withpointsdd(text,text,bigint,double precision,boolean,character,boolean)" msgstr "" -"``pgr_withpointsdd(text,text,bigint,double precision,boolean,character," -"boolean)``" +"pgr_withpointsdd(text,text,bigint,double precision,boolean,character,boolean)" msgid "" -"``pgr_withpointsdd(text,text,anyarray,double precision,boolean,character," -"boolean,boolean)``" +"pgr_withpointsdd(text,text,anyarray,double precision,boolean,character," +"boolean,boolean)" msgstr "" -"``pgr_withpointsdd(text,text,anyarray,double precision,boolean,character," -"boolean,boolean)``" +"pgr_withpointsdd(text,text,anyarray,double precision,boolean,character," +"boolean,boolean)" msgid "" "Modify the graph to include points and using Dijkstra algorithm, extracts " @@ -16387,8 +16371,8 @@ msgstr "" msgid ":doc:`pgr_alphaShape`" msgstr ":doc:`pgr_alphaShape`" -msgid "pgr_withPointsKSP - Proposed" -msgstr "pgr_withPointsKSP -拟议" +msgid "``pgr_withPointsKSP``" +msgstr "``pgr_withPointsKSP``" msgid "" "``pgr_withPointsKSP`` — Yen's algorithm for K shortest paths using Dijkstra." @@ -16397,29 +16381,26 @@ msgstr "``pgr_withPointsKSP`` — Yen 使用 Dijkstra 计算 K 最短路径的 msgid "Standarizing output columns to |nksp-result|" msgstr "标准化输出列为 |nksp-result|" -msgid "``pgr_withPointsKSP`` (One to One)" -msgstr "``pgr_withPointsKSP`` (一对一)" - -msgid "New overload functions" -msgstr "新的重载函数" +msgid "pgr_withPointsKSP(One to One)" +msgstr "pgr_withPointsKSP(一对一)" -msgid "``pgr_withPointsKSP`` (One to Many)" -msgstr "``pgr_withPointsKSP`` (一对多)" +msgid "pgr_withPointsKSP(One to Many)" +msgstr "pgr_withPointsKSP (一对多)" -msgid "``pgr_withPointsKSP`` (Many to One)" -msgstr "``pgr_withPointsKSP`` (多对一)" +msgid "pgr_withPointsKSP(Many to One)" +msgstr "pgr_withPointsKSP(多对一)" -msgid "``pgr_withPointsKSP`` (Many to Many)" -msgstr "``pgr_withPointsKSP`` (多对多)" +msgid "pgr_withPointsKSP(Many to Many)" +msgstr "pgr_withPointsKSP(多对多)" -msgid "``pgr_withPointsKSP`` (Combinations)" -msgstr "``pgr_withPointsKSP`` (组合)" +msgid "pgr_withPointsKSP(Combinations)" +msgstr "pgr_withPointsKSP(组合)" msgid "" -"``pgr_withpointsksp(text,text,bigint,bigint,integer,boolean,boolean,char," +"pgr_withpointsksp(text,text,bigint,bigint,integer,boolean,boolean,char," "boolean)``" msgstr "" -"``pgr_withpointsksp(text,text,bigint,bigint,integer,boolean,boolean,char," +"pgr_withpointsksp(text,text,bigint,bigint,integer,boolean,boolean,char," "boolean)``" msgid "" @@ -16556,17 +16537,14 @@ msgstr "" "使用右侧驾驶拓扑,从点 :math:`1` 到点 :math:`2` 获取 :math:`2` 条路径,同时使" "用堆路径(heap paths)并包含详细信息。" -msgid "``pgr_withPointsVia`` - Proposed" -msgstr "``pgr_withPointsVia`` - 拟议" +msgid "``pgr_withPointsVia``" +msgstr "``pgr_withPointsVia``" msgid "" "``pgr_withPointsVia`` - Route that goes through a list of vertices and/or " "points." msgstr "``pgr_withPointsVia`` - 经过一系列顶点和/或点的路线。" -msgid "New **proposed** function ``pgr_withPointsVia`` (`One Via`_)" -msgstr "新 **拟议** 的函数 ``pgr_withPointsVia`` (`One Via`_)" - msgid "" "Given a graph, a set of points on the graphs edges and a list of vertices, " "this function is equivalent to finding the shortest path between :math:" @@ -16669,44 +16647,16 @@ msgstr ":doc:`pgr_withPointsDD` -行驶距离。" msgid ":doc:`pgr_withPointsVia` - Via routing" msgstr ":doc:`pgr_withPointsVia` - 通过路由" -msgid "These proposed functions do not modify the database." -msgstr "这些拟议的功能不会修改数据库。" - -msgid "" -":doc:`pgr_degree` - Returns a set of vertices and corresponding count of " -"incidet edges to the vertex." -msgstr ":doc:`pgr_degree` -返回一组顶点以及该顶点对应的关联边数。" - -msgid "" -":doc:`pgr_extractVertices` - Extracts vertex information based on the edge " -"table information." -msgstr ":doc:`pgr_extractVertices` - 根据边表信息提取顶点信息。" - msgid "" ":doc:`pgr_lineGraph` - Transformation algorithm for generating a Line Graph." msgstr ":doc:`pgr_lineGraph` - 用于生成折线图的转换算法。" -msgid ":doc:`pgr_withPointsVia`" -msgstr ":doc:`pgr_withPointsVia`" - -msgid ":doc:`pgr_trspVia`" -msgstr ":doc:`pgr_trspVia`" - -msgid ":doc:`pgr_trspVia_withPoints`" -msgstr ":doc:`pgr_trspVia_withPoints`" - msgid ":doc:`withPoints-family` - Functions based on Dijkstra algorithm." msgstr ":doc:`withPoints-family` -基于 Dijkstra 算法的函数。" msgid "From the :doc:`TRSP-family`:" msgstr "来自 :doc:`TRSP-family`:" -msgid "Utilities" -msgstr "实用程序" - -msgid ":doc:`pgr_findCloseEdges`" -msgstr ":doc:`pgr_findCloseEdges`" - msgid "Reference" msgstr "参考" @@ -16723,74 +16673,312 @@ msgstr "" msgid "Mayors" msgstr "主要版本" +msgid "pgRouting 4" +msgstr "pgRouting 4" + +msgid "Minors 4.x" +msgstr "Minors 4.x" + +msgid "pgRouting 4.0" +msgstr "pgRouting 4.0" + msgid "pgRouting 3" msgstr "pgRouting 3" msgid "Minors 3.x" msgstr "3.x小版本" +#, fuzzy +msgid "pgRouting 3.8" +msgstr "pgRouting 3.7" + +#, fuzzy +msgid "pgRouting 3.8.0 Release Notes" +msgstr "pgRouting 3.7.0 发布说明" + +#, fuzzy +msgid "Promotion to official function of pgRouting." +msgstr "pgRouting 中的拟议已升级为正式版本" + +msgid "pgr_extractVertices" +msgstr "pgr_extractVertices" + +msgid "pgr_degree" +msgstr "pgr_degree" + +#, fuzzy +msgid "pgr_findCloseEdges" +msgstr "``pgr_findCloseEdges``" + +msgid "Official functions changes" +msgstr "官方功能变更" + +#, fuzzy +msgid "" +"`#2786 `__: " +"pgr_contraction" +msgstr "" +"`#2266 `__:错误处理限制" + +msgid "New proposed functions" +msgstr "新的拟议函数" + +#, fuzzy +msgid "Contraction" +msgstr "收缩:" + +#, fuzzy +msgid "" +"`#2790 `__: " +"pgr_contractionDeadEnd" +msgstr "" +"`#2087 `__:拟议的 " +"pgr_extractVertices" + +#, fuzzy +msgid "" +"`#2791 `__: " +"pgr_contractionLinear" +msgstr "" +"`#1002 `__:修复收缩问" +"题:" + msgid "pgRouting 3.7" msgstr "pgRouting 3.7" -msgid "pgRouting 3.6" -msgstr "pgRouting 3.6" +msgid "pgRouting 3.7.3 Release Notes" +msgstr "pgRouting 3.7.3 发布说明" #, fuzzy -msgid "pgRouting 3.6.3 Release Notes" -msgstr "pgRouting 3.6.1 发布说明" +msgid "" +"To see all issues & pull requests closed by this release see the `Git closed " +"milestone for 3.7.3 `__" +msgstr "" +"要查看此版本关闭的所有问题和拉取请求,请参阅 `Git closed milestone for 3.7.1 " +"`__" + +#, fuzzy +msgid "" +"`#2731 `__ Build Failure " +"on Ubuntu 22" +msgstr "" +"`#2607 `__ 在 C++ 上读取 " +"postgresql 数据" + +msgid "pgRouting 3.7.2 Release Notes" +msgstr "pgRouting 3.7.2 发布说明" #, fuzzy msgid "" "To see all issues & pull requests closed by this release see the `Git closed " -"milestone for 3.6.3 `__" +"milestone for 3.7.2 `__" msgstr "" -"要查看此版本关闭的所有问题和拉取请求,请参阅 `3.6.1Git 关闭里程碑 `_" +"要查看此版本关闭的所有问题和拉取请求,请参阅 `Git closed milestone for 3.7.1 " +"`__" msgid "Build" msgstr "构建" -msgid "Explicit minimum requirements:" +#, fuzzy +msgid "" +"`#2713 `__ cmake missing " +"some policies and min version" msgstr "" +"`#2517 `__ Astar 代码简化。" -msgid "postgres 11.0.0" +msgid "Using OLD policies: CMP0148, CMP0144, CMP0167" +msgstr "" + +msgid "Minimum cmake version 3.12" +msgstr "" + +#, fuzzy +msgid "" +"`#2707 `__ Build failure " +"in pgRouting 3.7.1 on Alpine" +msgstr "" +"`#2607 `__ 在 C++ 上读取 " +"postgresql 数据" + +#, fuzzy +msgid "" +"`#2706 `__ winnie crashing " +"on pgr_betweennessCentrality" +msgstr "" +"`#2505 `__ 使用命名空间。" + +msgid "pgRouting 3.7.1 Release Notes" +msgstr "pgRouting 3.7.1 发布说明" + +msgid "" +"To see all issues & pull requests closed by this release see the `Git closed " +"milestone for 3.7.1 `__" +msgstr "" +"要查看此版本关闭的所有问题和拉取请求,请参阅 `Git closed milestone for 3.7.1 " +"`__" + +msgid "" +"`#2680 `__ fails to " +"compile under mingw64 gcc 13.2" +msgstr "" +"`#2680 `__ 在 mingw64 gcc " +"13.2 下编译失败" + +msgid "" +"`#2689 `__ When point is a " +"vertex, the withPoints family do not return results." +msgstr "" +"`#2689 `__ 当 point 是顶点" +"时,withPoints 系列不返回结果。" + +#, fuzzy +msgid "C/C++ code enhancemet" +msgstr "C/C++ 代码增强" + +#, fuzzy +msgid "TRSP family" +msgstr "Prim族" + +msgid "pgRouting 3.7.0 Release Notes" +msgstr "pgRouting 3.7.0 发布说明" + +msgid "" +"To see all issues & pull requests closed by this release see the `Git closed " +"milestone for 3.7.0 `__" +msgstr "" +"要查看此版本关闭的所有问题和拉取请求,请参阅 `3.7.0 `__ 的 Git 关闭里程碑" + +msgid "" +"`#2656 `__ Stop support of " +"PostgreSQL12 on pgrouting v3.7" msgstr "" +"`#2656 `__ 在 pgrouting " +"v3.7 上停止支持 PostgreSQL12" + +msgid "Stopping support of PostgreSQL 12" +msgstr "停止支持 PostgreSQL 12" + +msgid "CI does not test for PostgreSQL 12" +msgstr "CI 不测试 PostgreSQL 12" + +msgid "New experimental functions" +msgstr "新的实验函数" + +msgid "Metrics" +msgstr "Metrics" + +msgid "pgr_betweennessCentrality" +msgstr "pgr_betweennessCentrality" #, fuzzy +msgid "" +"`#2605 `__ Standardize " +"spanning tree functions output" +msgstr "" +"`#2605 `__ 将生成树函数输出" +"标准化" + +msgid "Functions:" +msgstr "新函数:" + +msgid "Experimental promoted to proposed." +msgstr "实验提升为拟议。" + +msgid "" +"`#2635 `__ pgr_LineGraph " +"ignores directed flag and use negative values for identifiers." +msgstr "" +"`#2635 `__ pgr_LineGraph 忽" +"略了有向标志,并使用负值作为标识符。" + +msgid "``pgr_lineGraph``" +msgstr "``pgr_lineGraph``" + +msgid "Code enhancement" +msgstr "代码改进" + +msgid "" +"`#2599 `__ Driving " +"distance cleanup" +msgstr "" +"`#2599 `__ 行车距离清理" + +msgid "" +"`#2607 `__ Read postgresql " +"data on C++" +msgstr "" +"`#2607 `__ 在 C++ 上读取 " +"postgresql 数据" + +msgid "" +"`#2614 `__ Clang tidy does " +"not work" +msgstr "" +"`#2614 `__ Clang tidy 不工" +"作" + +msgid "pgRouting 3.6" +msgstr "pgRouting 3.6" + +msgid "pgRouting 3.6.3 Release Notes" +msgstr "pgRouting 3.6.3 发布说明" + +msgid "" +"To see all issues & pull requests closed by this release see the `Git closed " +"milestone for 3.6.3 `__" +msgstr "" +"要查看此版本关闭的所有问题和拉取请求,请参阅 `Git closed milestone for 3.6.3 " +"`__" + +msgid "Explicit minimum requirements:" +msgstr "最低要求:" + +msgid "postgres 11.0.0" +msgstr "postgres 11.0.0" + msgid "postgis 3.0.0" -msgstr "版本3.0.0" +msgstr "postgis 3.0.0" msgid "g++ 13+ is supported" -msgstr "" +msgstr "支持 g++ 13+" msgid "Code fixes" msgstr "代码修正" msgid "Fix warnings from cpplint." -msgstr "" +msgstr "修复来自 cpplint 的警告。" msgid "Fix warnings from clang 18." -msgstr "" +msgstr "修复来自 clang 18 的警告。" -#, fuzzy msgid "CI tests" -msgstr "pgtap 测试" +msgstr "CI tests" msgid "Add a clang tidy test on changed files." -msgstr "" +msgstr "为已更改的文件添加 clang tidy 测试。" msgid "" "Update test not done on versions: 3.0.1, 3.0.2, 3.0.3, 3.0.4, 3.1.0, 3.1.1, " "3.1.2" msgstr "" +"未对以下版本进行更新测试3.0.1, 3.0.2, 3.0.3, 3.0.4, 3.1.0, 3.1.1, 3.1.2" msgid "Documentation" msgstr "文档" msgid "Results of documentation queries adujsted to boost 1.83.0 version:" -msgstr "" +msgstr "根据 boost 1.83.0 版本进行的文档查询结果:" msgid "pgr_edgeDisjointPaths" msgstr "pgr_edgeDisjointPaths" @@ -16801,32 +16989,29 @@ msgstr "pgr_stoerWagner" msgid "pgtap tests" msgstr "pgtap 测试" -#, fuzzy msgid "bug fixes" -msgstr "Bug修复" +msgstr "bug fixes" -#, fuzzy msgid "pgRouting 3.6.2 Release Notes" -msgstr "pgRouting 3.6.1 发布说明" +msgstr "pgRouting 3.6.2 发布说明" -#, fuzzy msgid "" "To see all issues & pull requests closed by this release see the `Git closed " "milestone for 3.6.2 `__" msgstr "" -"要查看此版本关闭的所有问题和拉取请求,请参阅 `3.6.1Git 关闭里程碑 `_" +"要查看此版本关闭的所有问题和拉取请求,请参阅 `Git closed milestone for 3.6.2 " +"`__" msgid "Upgrade fix" -msgstr "" +msgstr "升级修复" msgid "The upgrade was failing for same minor" -msgstr "" +msgstr "升级失败的主要原因是" msgid "Fix warnings from cpplint" -msgstr "" +msgstr "修复来自 cpplint 的警告" msgid "Others" msgstr "其他" @@ -16868,50 +17053,38 @@ msgstr "" "拉取请求 `_" +#, fuzzy msgid "" -"`#2516 `__ Standarize " +"`#2516 `__ Standardize " "output pgr_aStar" msgstr "" -"`#2516 `__ 标准化输出" -"pgr_aStar" - -msgid "" -"``pgr_aStar`` (`One to One`) added ``start_vid`` and ``end_vid`` columns." -msgstr "``pgr_aStar`` (`一对一`)增加了 ``start_vid`` 和 ``end_vid`` 列。" - -msgid "``pgr_aStar`` (`One to Many`) added ``end_vid`` column." -msgstr "``pgr_aStar``(`一对多`)添加了 ``end_vid`` 列。" +"`#2516 `__ 标准化输出" +"pgr_aStar" -msgid "``pgr_aStar`` (`Many to One`) added ``start_vid`` column." -msgstr "``pgr_aStar``(`多对一`)添加了 ``start_vid`` 列。" +#, fuzzy +msgid "Standardize output columns to |short-generic-result|" +msgstr "标准输出列|short-generic-result|" +#, fuzzy msgid "" -"`#2523 `__ Standarize " +"`#2523 `__ Standardize " "output pgr_bdAstar" msgstr "" "`#2523 `__ 标准化输出 " "pgr_bdAstar" +#, fuzzy msgid "" -"``pgr_bdAstar`` (`One to One`) added ``start_vid`` and ``end_vid`` columns." -msgstr "``pgr_bdAstar``(`一对一`)增加了 ``start_vid`` 和``end_vid`` 列。" - -msgid "``pgr_bdAstar`` (`One to Many`) added ``end_vid`` column." -msgstr "``pgr_bdAstar``(`一对多)添加了``end_vid`` 列。" - -msgid "``pgr_bdAstar`` (`Many to One`) added ``start_vid`` column." -msgstr "``pgr_bdAstar``(`多对一`)添加了``start_vid`` 列。" - -msgid "" -"`#2547 `__ Standarize " +"`#2547 `__ Standardize " "output and modifying signature pgr_KSP" msgstr "" "`#2547 `__ 标准化输出并修改" "签名 pgr_KSP" +#, fuzzy msgid "" -"`#2548 `__ Standarize " -"output pgr_drivingdistance" +"`#2548 `__ Standardize " +"output pgr_drivingDistance" msgstr "" "`#2548 `__ 标准化输出 " "pgr_drivingdistance" @@ -16919,15 +17092,17 @@ msgstr "" msgid "Proposed functions changes" msgstr "拟议函数改变" +#, fuzzy msgid "" -"`#2544 `__ Standarize " +"`#2544 `__ Standardize " "output and modifying signature pgr_withPointsDD" msgstr "" "`#2544 `__ 标准化输出并修改" "签名 pgr_withPointsDD" +#, fuzzy msgid "" -"`#2546 `__ Standarize " +"`#2546 `__ Standardize " "output and modifying signature pgr_withPointsKSP" msgstr "" "`#2546 `__ 标准化输出并修改" @@ -16985,11 +17160,13 @@ msgstr "" "`#2490 `__ 自动页面历史链" "接。" -msgid "..rubric:: SQL standarization" +#, fuzzy +msgid "..rubric:: Standardize SQL" msgstr "..rubric::SQL 标准化" +#, fuzzy msgid "" -"`#2555 `__ standarize " +"`#2555 `__ Standardize " "deprecated messages" msgstr "" "`#2555 `__ 标准化已弃用的消" @@ -17020,9 +17197,6 @@ msgstr "文档修复" msgid "Changes on the documentation to the following:" msgstr "将文件修改如下:" -msgid "pgr_degree" -msgstr "pgr_degree" - msgid "pgr_dijkstra" msgstr "pgr_dijkstra" @@ -17040,7 +17214,7 @@ msgstr "问题修复" msgid "" "`#2565 `__ " -"pgr_pgr_lengauerTarjanDominatorTree triggers an assertion" +"pgr_lengauerTarjanDominatorTree triggers an assertion" msgstr "" "`#2565 `__ " "pgr_pgr_lengauerTarjanDominatorTree 触发了一个断言" @@ -17089,16 +17263,6 @@ msgstr "" msgid "Dijkstra" msgstr "Dijkstra" -msgid "" -"``pgr_dijkstra`` (`One to One`) added ``start_vid`` and ``end_vid`` columns." -msgstr "``pgr_dijkstra``(`一对一`)增加了``start_vid`` 和``end_vid`` 列。" - -msgid "``pgr_dijkstra`` (`One to Many`) added ``end_vid`` column." -msgstr "``pgr_dijkstra``(`一对多`)添加了 ``end_vid`` 列。" - -msgid "``pgr_dijkstra`` (`Many to One`) added ``start_vid`` column." -msgstr "``pgr_dijkstra`` (`多对一`)添加了 ``start_vid`` 列。" - msgid "pgRouting 3.4" msgstr "pgRouting 3.4" @@ -17174,14 +17338,15 @@ msgstr "" "`#1891 `__: pgr_ksp 没有" "给出所有正确的最短路径" -msgid "New proposed functions" -msgstr "新的拟议函数" +msgid "New proposed functions." +msgstr "新的拟议函数。" msgid "With points" msgstr "带点" -msgid "``pgr_withPointsVia`` (One Via)" -msgstr "``pgr_withPointsVia`` (One Via)" +#, fuzzy +msgid "pgr_withPointsVia(One Via)" +msgstr "pgr_withPointsVia (One Via)" msgid "Turn Restrictions" msgstr "转弯限制" @@ -17189,83 +17354,70 @@ msgstr "转弯限制" msgid "Via with turn restrictions" msgstr "有转弯限制的通道" -msgid "``pgr_trspVia`` (One Via)" -msgstr "``pgr_trspVia`` (One Via)" - -msgid "``pgr_trspVia_withPoints`` (One Via)" -msgstr "pgr_trspVia_withPoints``(一次通过)" - -msgid "``pgr_trsp``" -msgstr "``pgr_trsp``" - -msgid "``pgr_trsp`` (One to One)" -msgstr "``pgr_trsp`` (一对一)" - -msgid "``pgr_trsp`` (One to Many)" -msgstr "``pgr_trsp`` (一对多)" - -msgid "``pgr_trsp`` (Many to One)" -msgstr "``pgr_trsp`` (多对一)" - -msgid "``pgr_trsp`` (Many to Many)" -msgstr "``pgr_trsp`` (多对多)" - -msgid "``pgr_trsp`` (Combinations)" -msgstr "``pgr_trsp`` (组合)" +#, fuzzy +msgid "pgr_trspVia(One Via)" +msgstr "pgr_trspVia(One Via)" -msgid "``pgr_trsp_withPoints``" -msgstr "``pgr_trsp_withPoints``" +msgid "pgr_trspVia_withPoints(One Via)" +msgstr "pgr_trspVia_withPoints(一次通过)" -msgid "``pgr_trsp_withPoints`` (One to One)" -msgstr "``pgr_trsp_withPoints`` (一对一)" +msgid "pgr_trsp_withPoints(One to One)" +msgstr "pgr_trsp_withPoints(一对一)" -msgid "``pgr_trsp_withPoints`` (One to Many)" -msgstr "``pgr_trsp_withPoints`` (一对多)" +msgid "pgr_trsp_withPoints(One to Many)" +msgstr "pgr_trsp_withPoints(一对多)" -msgid "``pgr_trsp_withPoints`` (Many to One)" -msgstr "pgr_trsp_withPoints``(多对一)" +msgid "pgr_trsp_withPoints(Many to One)" +msgstr "pgr_trsp_withPoints(多对一)" -msgid "``pgr_trsp_withPoints`` (Many to Many)" -msgstr "``pgr_trsp_withPoints`` (多对多)" +msgid "pgr_trsp_withPoints(Many to Many)" +msgstr "pgr_trsp_withPoints(多对多)" -msgid "``pgr_trsp_withPoints`` (Combinations)" -msgstr "``pgr_trsp_withPoints`` (组合)" +msgid "pgr_trsp_withPoints(Combinations)" +msgstr "pgr_trsp_withPoints(组合)" msgid "Topology" msgstr "拓扑结构" -msgid "``pgr_degree``" -msgstr "``pgr_degree``" +msgid "Utilities" +msgstr "实用程序" -msgid "``pgr_findCloseEdges`` (One point)" -msgstr "``pgr_findCloseEdges`` (单点)" +msgid "pgr_findCloseEdges(One point)" +msgstr "pgr_findCloseEdges(单点)" -msgid "``pgr_findCloseEdges`` (Many points)" -msgstr "``pgr_findCloseEdges`` (多点)" +msgid "pgr_findCloseEdges(Many points)" +msgstr "pgr_findCloseEdges(多点)" msgid "Ordering" msgstr "排序" -msgid "``pgr_cuthillMckeeOrdering``" -msgstr "``pgr_cuthillMckeeOrdering``" +msgid "pgr_cuthillMckeeOrdering" +msgstr "pgr_cuthillMckeeOrdering" + +msgid "Unclassified" +msgstr "未分类" + +msgid "pgr_hawickCircuits" +msgstr "pgr_hawickCircuits" msgid "Flow functions" msgstr "流程函数" -msgid "``pgr_maxCardinalityMatch(text)``" -msgstr "``pgr_maxCardinalityMatch(text)``" +msgid "pgr_maxCardinalityMatch(text)" +msgstr "pgr_maxCardinalityMatch(text)" -msgid "Deprecating ``pgr_maxCardinalityMatch(text,boolean)``" +#, fuzzy +msgid "Deprecating: pgr_maxCardinalityMatch(text,boolean)" msgstr "弃用 ``pgr_maxCardinalityMatch(text,boolean)``" msgid "Deprecated Functions" msgstr "已废弃的函数" -msgid "``pgr_trsp(text,integer,float8,integer,float8,boolean,boolean,text)``" -msgstr "``pgr_trsp(text,integer,float8,integer,float8,boolean,boolean,text)``" +msgid "pgr_trsp(text,integer,float8,integer,float8,boolean,boolean,text)" +msgstr "pgr_trsp(text,integer,float8,integer,float8,boolean,boolean,text)" -msgid "``pgr_trspViaEdges(text,integer[],float[],boolean,boolean,text)``" -msgstr "``pgr_trspViaEdges(text,integer[],float[],boolean,boolean,text)``" +msgid "pgr_trspViaEdges(text,integer[],float[],boolean,boolean,text)" +msgstr "pgr_trspViaEdges(text,integer[],float[],boolean,boolean,text)" msgid "pgRouting 3.3" msgstr "pgRouting 3.3" @@ -17486,9 +17638,6 @@ msgstr "pgr_dijkstraNearCost(一对多)" msgid "pgr_sequentialVertexColoring" msgstr "pgr_sequentialVertexColoring" -msgid "pgr_extractVertices" -msgstr "pgr_extractVertices" - msgid "Traversal" msgstr "遍历" @@ -17579,12 +17728,6 @@ msgstr "" msgid "Removing support for Boost v1.53, v1.54 & v1.55" msgstr "删除对 Boost v1.53、v1.54 和 v1.55 的支持" -msgid "pgr_bellmanFord(Combinations)" -msgstr "pgr_bellmanFord(组合)" - -msgid "pgr_binaryBreadthFirstSearch(Combinations)" -msgstr "pgr_binaryBreadthFirstSearch(组合)" - msgid "pgr_bipartite" msgstr "pgr_bipartite" @@ -17594,9 +17737,6 @@ msgstr "pgr_depthFirstSearch" msgid "Dijkstra Near" msgstr "Dijkstra Near" -msgid "pgr_edwardMoore(Combinations)" -msgstr "pgr_edwardMoore(组合)" - msgid "pgr_isPlanar" msgstr "pgr_isPlanar" @@ -17606,51 +17746,15 @@ msgstr "pgr_lengauerTarjanDominatorTree" msgid "pgr_makeConnected" msgstr "pgr_makeConnected" -msgid "pgr_maxFlowMinCost(Combinations)" -msgstr "pgr_maxFlowMinCost(组合)" - -msgid "pgr_maxFlowMinCost_Cost(Combinations)" -msgstr "pgr_maxFlowMinCost_Cost(组合)" - msgid "Astar" msgstr "Astar" -msgid "pgr_aStar(Combinations)" -msgstr "pgr_aStar(组合)" - -msgid "pgr_aStarCost(Combinations)" -msgstr "pgr_aStarCost(组合)" - msgid "Bidirectional Astar" msgstr "双向Astar" -msgid "pgr_bdAstar(Combinations)" -msgstr "pgr_bdAstar(组合)" - -msgid "pgr_bdAstarCost(Combinations)" -msgstr "pgr_bdAstarCost(组合)" - msgid "Bidirectional Dijkstra" msgstr "双向 Dijkstra" -msgid "pgr_bdDijkstra(Combinations)" -msgstr "pgr_bdDijkstra(组合)" - -msgid "pgr_bdDijkstraCost(Combinations)" -msgstr "pgr_bdDijkstraCost(组合)" - -msgid "pgr_boykovKolmogorov(Combinations)" -msgstr "pgr_boykovKolmogorov (组合)" - -msgid "pgr_edmondsKarp(Combinations)" -msgstr "pgr_edmondsKarp(组合)" - -msgid "pgr_maxFlow(Combinations)" -msgstr "pgr_maxFlow(组合)" - -msgid "pgr_pushRelabel(Combinations)" -msgstr "pgr_pushRelabel(组合)" - msgid "pgRouting 3.1" msgstr "pgRouting 3.1" @@ -17958,7 +18062,7 @@ msgid "" msgstr "" "`#1006 `__:无信息丢失" -msgid "New functions" +msgid "New Functions" msgstr "新函数" msgid "Kruskal family" @@ -17997,148 +18101,119 @@ msgstr "pgRouting 中的拟议已升级为正式版本" msgid "aStar Family" msgstr "aStar族" -msgid "pgr_aStar(one to many)" -msgstr "pgr_aStar(一对多)" - -msgid "pgr_aStar(many to one)" -msgstr "pgr_aStar(多对一)" - -msgid "pgr_aStar(many to many)" -msgstr "pgr_aStar(多对多)" - -msgid "pgr_aStarCost(one to one)" +#, fuzzy +msgid "pgr_aStarCost(One to One)" msgstr "pgr_aStarCost(一对一)" -msgid "pgr_aStarCost(one to many)" +#, fuzzy +msgid "pgr_aStarCost(One to Many)" msgstr "pgr_aStarCost(一对多)" -msgid "pgr_aStarCost(many to one)" +#, fuzzy +msgid "pgr_aStarCost(Many to One)" msgstr "pgr_aStarCost(多对一)" -msgid "pgr_aStarCost(many to many)" +#, fuzzy +msgid "pgr_aStarCost(Many to Many)" msgstr "pgr_aStarCost(多对多)" -msgid "pgr_aStarCostMatrix(one to one)" -msgstr "pgr_aStarCostMatrix(一对一)" - -msgid "pgr_aStarCostMatrix(one to many)" -msgstr "pgr_aStarCostMatrix (一对多)" - -msgid "pgr_aStarCostMatrix(many to one)" -msgstr "pgr_aStarCostMatrix (多对一)" - -msgid "pgr_aStarCostMatrix(many to many)" -msgstr "pgr_aStarCostMatrix(多对多)" +#, fuzzy +msgid "pgr_aStarCostMatrix" +msgstr "pgr_astarCostMatrix" msgid "bdAstar Family" msgstr "bdAstar 族" -msgid "pgr_bdAstar(one to many)" -msgstr "pgr_bdAstar(一对多)" - -msgid "pgr_bdAstar(many to one)" -msgstr "pgr_bdAstar(多对一)" - -msgid "pgr_bdAstar(many to many)" -msgstr "pgr_bdAstar(多对多)" - -msgid "pgr_bdAstarCost(one to one)" +#, fuzzy +msgid "pgr_bdAstarCost(One to One)" msgstr "pgr_bdAstarCost(一对一)" -msgid "pgr_bdAstarCost(one to many)" +#, fuzzy +msgid "pgr_bdAstarCost(One to Many)" msgstr "pgr_bdAstarCost(一对多)" -msgid "pgr_bdAstarCost(many to one)" +#, fuzzy +msgid "pgr_bdAstarCost(Many to One)" msgstr "pgr_bdAstarCost (多对一)" -msgid "pgr_bdAstarCost(many to many)" +#, fuzzy +msgid "pgr_bdAstarCost(Many to Many)" msgstr "pgr_bdAstarCost (多对多)" -msgid "pgr_bdAstarCostMatrix(one to one)" -msgstr "pgr_bdAstarCostMatrix(一对一)" - -msgid "pgr_bdAstarCostMatrix(one to many)" -msgstr "pgr_bdAstarCostMatrix(一对多)" - -msgid "pgr_bdAstarCostMatrix(many to one)" -msgstr "pgr_bdAstarCostMatrix (多对一)" - -msgid "pgr_bdAstarCostMatrix(many to many)" -msgstr "pgr_bdAstarCostMatrix (多对多)" +msgid "pgr_bdAstarCostMatrix" +msgstr "pgr_bdAstarCostMatrix" msgid "bdDijkstra Family" msgstr "bdDijkstra族" -msgid "pgr_bdDijkstra(one to many)" -msgstr "pgr_bdDijkstra(一对多)" - -msgid "pgr_bdDijkstra(many to one)" -msgstr "pgr_bdDijkstra(多对一)" - -msgid "pgr_bdDijkstra(many to many)" -msgstr "pgr_bdDijkstra(多对多)" - -msgid "pgr_bdDijkstraCost(one to one)" +#, fuzzy +msgid "pgr_bdDijkstraCost(One to One)" msgstr "pgr_bdDijkstraCost (一对一)" -msgid "pgr_bdDijkstraCost(one to many)" +#, fuzzy +msgid "pgr_bdDijkstraCost(One to Many)" msgstr "pgr_bdDijkstraCost(一对多)" -msgid "pgr_bdDijkstraCost(many to one)" +#, fuzzy +msgid "pgr_bdDijkstraCost(Many to One)" msgstr "pgr_bdDijkstraCost (多对一)" -msgid "pgr_bdDijkstraCost(many to many)" +#, fuzzy +msgid "pgr_bdDijkstraCost(Many to Many)" msgstr "pgr_bdDijkstraCost(多对多)" -msgid "pgr_bdDijkstraCostMatrix(one to one)" -msgstr "pgr_bdDijkstraCostMatrix(一对一)" - -msgid "pgr_bdDijkstraCostMatrix(one to many)" -msgstr "pgr_bdDijkstraCostMatrix(一对多)" - -msgid "pgr_bdDijkstraCostMatrix(many to one)" -msgstr "pgr_bdDijkstraCostMatrix (多对一)" - -msgid "pgr_bdDijkstraCostMatrix(many to many)" -msgstr "pgr_bdDijkstraCostMatrix(多对多)" +msgid "pgr_bdDijkstraCostMatrix" +msgstr "pgr_bdDijkstraCostMatrix" msgid "Flow Family" msgstr "Flow族" -msgid "pgr_pushRelabel(one to one)" +#, fuzzy +msgid "pgr_pushRelabel(One to One)" msgstr "pgr_pushRelabel(一对一)" -msgid "pgr_pushRelabel(one to many)" +#, fuzzy +msgid "pgr_pushRelabel(One to Many)" msgstr "pgr_pushRelabel(一对多)" -msgid "pgr_pushRelabel(many to one)" +#, fuzzy +msgid "pgr_pushRelabel(Many to One)" msgstr "pgr_pushRelabel(多对一)" -msgid "pgr_pushRelabel(many to many)" +#, fuzzy +msgid "pgr_pushRelabel(Many to Many)" msgstr "pgr_pushRelabel(多对多)" -msgid "pgr_edmondsKarp(one to one)" +#, fuzzy +msgid "pgr_edmondsKarp(One to One)" msgstr "pgr_edmondsKarp(一对一)" -msgid "pgr_edmondsKarp(one to many)" +#, fuzzy +msgid "pgr_edmondsKarp(One to Many)" msgstr "pgr_edmondsKarp(一对多)" -msgid "pgr_edmondsKarp(many to one)" +#, fuzzy +msgid "pgr_edmondsKarp(Many to One)" msgstr "pgr_edmondsKarp(多对一)" -msgid "pgr_edmondsKarp(many to many)" +#, fuzzy +msgid "pgr_edmondsKarp(Many to Many)" msgstr "pgr_edmondsKarp(多对多)" -msgid "pgr_boykovKolmogorov (one to one)" +#, fuzzy +msgid "pgr_boykovKolmogorov (One to One)" msgstr "pgr_boykovKolmogorov (一对一)" -msgid "pgr_boykovKolmogorov (one to many)" +#, fuzzy +msgid "pgr_boykovKolmogorov (One to Many)" msgstr "pgr_boykovKolmogorov (一对多)" -msgid "pgr_boykovKolmogorov (many to one)" +#, fuzzy +msgid "pgr_boykovKolmogorov (Many to One)" msgstr "pgr_boykovKolmogorov (多对一)" -msgid "pgr_boykovKolmogorov (many to many)" +#, fuzzy +msgid "pgr_boykovKolmogorov (Many to Many)" msgstr "pgr_boykovKolmogorov (多对多)" msgid "pgr_maxCardinalityMatching" @@ -18147,21 +18222,28 @@ msgstr "pgr_maxCardinalityMatching" msgid "pgr_maxFlow" msgstr "pgr_maxFlow" -msgid "pgr_edgeDisjointPaths(one to one)" +#, fuzzy +msgid "pgr_edgeDisjointPaths(One to One)" msgstr "pgr_edgeDisjointPaths (一对一)" -msgid "pgr_edgeDisjointPaths(one to many)" +#, fuzzy +msgid "pgr_edgeDisjointPaths(One to Many)" msgstr "pgr_edgeDisjointPaths (一对多)" -msgid "pgr_edgeDisjointPaths(many to one)" +#, fuzzy +msgid "pgr_edgeDisjointPaths(Many to One)" msgstr "pgr_edgeDisjointPaths (多对一)" -msgid "pgr_edgeDisjointPaths(many to many)" +#, fuzzy +msgid "pgr_edgeDisjointPaths(Many to Many)" msgstr "pgr_edgeDisjointPaths (多对多)" msgid "Components family" msgstr "分量族" +msgid "pgr_connectedComponents" +msgstr "pgr_connectedComponents" + msgid "pgr_strongComponents" msgstr "pgr_strongComponents" @@ -18369,8 +18451,8 @@ msgstr "pgr_floydWarshall" msgid "pgr_johnson" msgstr "pgr_johnson" -msgid "pgr_astar" -msgstr "pgr_astar" +msgid "pgr_aStar" +msgstr "pgr_aStar" msgid "pgr_bdAstar" msgstr "pgr_bdAstar" @@ -18390,6 +18472,9 @@ msgstr "pgr_dijkstraCost" msgid "pgr_drivingDistance" msgstr "pgr_drivingDistance" +msgid "pgr_KSP" +msgstr "pgr_KSP" + msgid "pgr_dijkstraVia (proposed)" msgstr "pgr_dijkstraVia (拟议)" @@ -18611,24 +18696,17 @@ msgstr "在结果中添加了 path_id、cost 和 agg_cost 列" msgid "Parameter names changed" msgstr "更改参数名称" -msgid "The many version results are the union of the one to one version" +#, fuzzy +msgid "The many version results are the union of the One to One version" msgstr "多版本结果是一对一版本的并集" msgid "New Signatures" msgstr "新签名" -msgid "pgr_bdAstar(one to one)" +#, fuzzy +msgid "pgr_bdAstar(One to One)" msgstr "pgr_bdAstar(一对一)" -msgid "New Proposed functions" -msgstr "新的拟议函数" - -msgid "pgr_bdAstarCostMatrix" -msgstr "pgr_bdAstarCostMatrix" - -msgid "pgr_bdDijkstraCostMatrix" -msgstr "pgr_bdDijkstraCostMatrix" - msgid "pgr_lineGraph" msgstr "pgr_lineGraph" @@ -18717,32 +18795,8 @@ msgstr "" msgid "pgr_bdDijkstra" msgstr "pgr_bdDijkstra" -msgid "New Proposed Signatures" -msgstr "新的拟议签名" - -msgid "pgr_astar(one to many)" -msgstr "pgr_astar(一对多)" - -msgid "pgr_astar(many to one)" -msgstr "pgr_astar(多对一)" - -msgid "pgr_astar(many to many)" -msgstr "pgr_astar(多对多)" - -msgid "pgr_astarCost(one to one)" -msgstr "pgr_astarCost(一对一)" - -msgid "pgr_astarCost(one to many)" -msgstr "pgr_astarCost(一对多)" - -msgid "pgr_astarCost(many to one)" -msgstr "pgr_astarCost(多对一)" - -msgid "pgr_astarCost(many to many)" -msgstr "pgr_astarCost(多对多)" - -msgid "pgr_astarCostMatrix" -msgstr "pgr_astarCostMatrix" +msgid "Deprecated signatures." +msgstr "弃用签名。" msgid "pgr_bddijkstra - use pgr_bdDijkstra instead" msgstr "pgr_bddijkstra - 使用 pgr_bdDijkstra代替" @@ -18822,52 +18876,55 @@ msgstr "" msgid "pgr_TSP" msgstr "pgr_TSP" -msgid "pgr_aStar" -msgstr "pgr_aStar" - -msgid "New Functions" -msgstr "新函数" - msgid "pgr_eucledianTSP" msgstr "pgr_eucledianTSP" -msgid "pgr_withPointsCostMatrix" -msgstr "pgr_withPointsCostMatrix" - -msgid "pgr_maxFlowPushRelabel(one to one)" +#, fuzzy +msgid "pgr_maxFlowPushRelabel(One to One)" msgstr "pgr_maxFlowPushRelabel(一对一)" -msgid "pgr_maxFlowPushRelabel(one to many)" +#, fuzzy +msgid "pgr_maxFlowPushRelabel(One to Many)" msgstr "pgr_maxFlowPushRelabel(一对多)" -msgid "pgr_maxFlowPushRelabel(many to one)" +#, fuzzy +msgid "pgr_maxFlowPushRelabel(Many to One)" msgstr "pgr_maxFlowPushRelabel(多对一)" -msgid "pgr_maxFlowPushRelabel(many to many)" +#, fuzzy +msgid "pgr_maxFlowPushRelabel(Many to Many)" msgstr "pgr_maxFlowPushRelabel(多对多)" -msgid "pgr_maxFlowEdmondsKarp(one to one)" +#, fuzzy +msgid "pgr_maxFlowEdmondsKarp(One to One)" msgstr "pgr_maxFlowEdmondsKarp(一对一)" -msgid "pgr_maxFlowEdmondsKarp(one to many)" +#, fuzzy +msgid "pgr_maxFlowEdmondsKarp(One to Many)" msgstr "pgr_maxFlowEdmondsKarp(一对多)" -msgid "pgr_maxFlowEdmondsKarp(many to one)" +#, fuzzy +msgid "pgr_maxFlowEdmondsKarp(Many to One)" msgstr "pgr_maxFlowEdmondsKarp(多对一)" -msgid "pgr_maxFlowEdmondsKarp(many to many)" +#, fuzzy +msgid "pgr_maxFlowEdmondsKarp(Many to Many)" msgstr "pgr_maxFlowEdmondsKarp(多对多)" -msgid "pgr_maxFlowBoykovKolmogorov (one to one)" +#, fuzzy +msgid "pgr_maxFlowBoykovKolmogorov (One to One)" msgstr "pgr_maxFlowBoykovKolmogorov (一对一)" -msgid "pgr_maxFlowBoykovKolmogorov (one to many)" +#, fuzzy +msgid "pgr_maxFlowBoykovKolmogorov (One to Many)" msgstr "pgr_maxFlowBoykovKolmogorov (一对多)" -msgid "pgr_maxFlowBoykovKolmogorov (many to one)" +#, fuzzy +msgid "pgr_maxFlowBoykovKolmogorov (Many to One)" msgstr "pgr_maxFlowBoykovKolmogorov (多对一)" -msgid "pgr_maxFlowBoykovKolmogorov (many to many)" +#, fuzzy +msgid "pgr_maxFlowBoykovKolmogorov (Many to Many)" msgstr "pgr_maxFlowBoykovKolmogorov (多对多)" msgid "pgr_maximumCardinalityMatching" @@ -18879,7 +18936,8 @@ msgstr "pgr_contractGraph" msgid "pgr_tsp - use pgr_TSP or pgr_eucledianTSP instead" msgstr "pgr_tsp - 使用 pgr_TSP 或 pgr_eucledianTSP 代替" -msgid "pgr_astar - use pgr_aStar instead" +#, fuzzy +msgid "pgr_aStar - use pgr_aStar instead" msgstr "pgr_astar - 使用 pgr_aStar 代替" msgid "pgr_flip_edges" @@ -18980,6 +19038,9 @@ msgstr "" msgid "Improvements" msgstr "改进" +msgid "pgr_nodeNetwork" +msgstr "pgr_nodeNetwork" + msgid "Adding a row_where and outall optional parameters" msgstr "添加 row_where 和 outall 可选参数" @@ -18992,43 +19053,55 @@ msgstr "pgr_dijkstra -- 与文档中的内容相匹配" msgid "pgr_Johnson" msgstr "pgr_Johnson" -msgid "pgr_dijkstraCost(one to one)" +#, fuzzy +msgid "pgr_dijkstraCost(One to One)" msgstr "pgr_dijkstraCost(一对一)" -msgid "pgr_dijkstraCost(one to many)" -msgstr "pgr_dijkstraCost(一对多)" +#, fuzzy +msgid "pgr_dijkstraCost(One to Many)" +msgstr "pgr_dijkstraNearCost(一对多)" -msgid "pgr_dijkstraCost(many to one)" -msgstr "pgr_dijkstraCost(多对一)" +#, fuzzy +msgid "pgr_dijkstraCost(Many to One)" +msgstr "pgr_dijkstraNearCost(多对一)" -msgid "pgr_dijkstraCost(many to many)" -msgstr "pgr_dijkstraCost(多对多)" +#, fuzzy +msgid "pgr_dijkstraCost(Many to Many)" +msgstr "pgr_dijkstraNearCost (多对多)" msgid "Proposed Functionality" msgstr "建议的功能" -msgid "pgr_withPoints(one to one)" -msgstr "pgr_withPoints(一对一)" +#, fuzzy +msgid "pgr_withPoints(One to One)" +msgstr "pgr_withPointsKSP(一对一)" -msgid "pgr_withPoints(one to many)" -msgstr "pgr_withPoints(一对多)" +#, fuzzy +msgid "pgr_withPoints(One to Many)" +msgstr "pgr_withPointsKSP (一对多)" -msgid "pgr_withPoints(many to one)" -msgstr "pgr_withPoints(多对一)" +#, fuzzy +msgid "pgr_withPoints(Many to One)" +msgstr "pgr_withPointsKSP(多对一)" -msgid "pgr_withPoints(many to many)" -msgstr "pgr_withPoints(多对多)" +#, fuzzy +msgid "pgr_withPoints(Many to Many)" +msgstr "pgr_withPointsKSP(多对多)" -msgid "pgr_withPointsCost(one to one)" +#, fuzzy +msgid "pgr_withPointsCost(One to One)" msgstr "pgr_withPointsCost(一对一)" -msgid "pgr_withPointsCost(one to many)" +#, fuzzy +msgid "pgr_withPointsCost(One to Many)" msgstr "pgr_withPointsCost(一对多)" -msgid "pgr_withPointsCost(many to one)" +#, fuzzy +msgid "pgr_withPointsCost(Many to One)" msgstr "pgr_withPointsCost(多对一)" -msgid "pgr_withPointsCost(many to many)" +#, fuzzy +msgid "pgr_withPointsCost(Many to Many)" msgstr "pgr_withPointsCost(多对多)" msgid "pgr_withPointsDD(single vertex)" @@ -19037,9 +19110,6 @@ msgstr "pgr_withPointsDD (单顶点)" msgid "pgr_withPointsDD(multiple vertices)" msgstr "pgr_withPointsDD(多顶点)" -msgid "pgr_withPointsKSP" -msgstr "pgr_withPointsKSP" - msgid "pgr_dijkstraVia" msgstr "pgr_dijkstraVia" @@ -19076,27 +19146,13 @@ msgstr "" "github.com/pgRouting/pgrouting/issues?" "q=is%3Aissue+milestone%3A%22Release+2.1.0%22+is%3Aclosed>`_ 。" -msgid "pgr_dijkstra(one to many)" -msgstr "pgr_dijkstra(一对多)" - -msgid "pgr_dijkstra(many to one)" -msgstr "pgr_dijkstra(多对一)" - -msgid "pgr_dijkstra(many to many)" -msgstr "pgr_dijkstra(多对多)" - -msgid "pgr_drivingDistance(multiple vertices)" -msgstr "pgr_drivingDistance (多顶点)" - msgid "Refactored" msgstr "重构" -msgid "pgr_dijkstra(one to one)" +#, fuzzy +msgid "pgr_dijkstra(One to One)" msgstr "pgr_dijkstra(一对一)" -msgid "pgr_drivingDistance(single vertex)" -msgstr "pgr_drivingDistance (单顶点)" - msgid "" "pgr_alphaShape function now can generate better (multi)polygon with holes " "and alpha parameter." @@ -19445,10 +19501,11 @@ msgstr "函数族" msgid "Sample Data" msgstr "示例数据" +#, fuzzy msgid "" "The documentation provides very simple example queries based on a small " -"sample network that resembles a city. To be able to execute the mayority of " -"the examples queries, follow the instructions bellow." +"sample network that resembles a city. To be able to execute the majority of " +"the examples queries, follow the instructions below." msgstr "" "该文档提供了基于类似于城市的小型示例网络的非常简单的示例查询。 为了能够执行大" "部分示例查询,请按照以下说明进行操作。" @@ -19462,9 +19519,11 @@ msgstr "图由一组边和一组顶点组成。" msgid "The following city is to be inserted into the database:" msgstr "要在数据库中插入以下城市:" +#, fuzzy msgid "" "Information known at this point is the geometry of the edges, cost values, " -"cpacity values, category values and some locations that are not in the graph." +"capacity values, category values and some locations that are not in the " +"graph." msgstr "" "此时已知的信息是边的几何形状、成本值、容量值、类别值和一些不在图中的位置。" @@ -19473,14 +19532,12 @@ msgid "" "that everything else is calculated." msgstr "拓扑结构的工作流程从插入边开始。然后再计算其他所有内容。" -msgid "Edges" -msgstr "边" - +#, fuzzy msgid "" "The database design for the documentation of pgRouting, keeps in the same " "row 2 segments, one in the direction of the geometry and the second in the " -"oposite direction. Therfore some information has the ``reverse_`` prefix " -"which corresponds to the segment on the oposite direction of the geometry." +"opposite direction. Therefore some information has the ``reverse_`` prefix " +"which corresponds to the segment on the opposite direction of the geometry." msgstr "" "pgRouting文档的数据库设计将同一行中的两段保留在一个方向上,其中一个是与几何形" "状相同方向的,另一个是与几何形状相反方向的。因此,一些信息具有 ``reverse_`` " @@ -19513,8 +19570,9 @@ msgstr "``reverse_category``" msgid ":math:`x` coordinate of the starting vertex of the geometry." msgstr ":math:`x` 几何图形起始顶点的坐标。" +#, fuzzy msgid "" -"For convinience it is saved on the table but can be calculated as " +"For convenience it is saved on the table but can be calculated as " "``ST_X(ST_StartPoint(geom))``." msgstr "" "为了方便起见,它被保存在表格中,但也可以计算为 " @@ -19523,8 +19581,9 @@ msgstr "" msgid ":math:`y` coordinate of the ending vertex of the geometry." msgstr ":math:`y` 几何图形结束顶点的坐标。" +#, fuzzy msgid "" -"For convinience it is saved on the table but can be calculated as " +"For convenience it is saved on the table but can be calculated as " "``ST_Y(ST_EndPoint(geom))``." msgstr "" "为方便起见,它保存在表格中,但也可以计算为 ``ST_Y(ST_EndPoint(geom))``。" @@ -19535,9 +19594,10 @@ msgstr "分段的几何形状。" msgid "Starting on PostgreSQL 12::" msgstr "从 PostgreSQL 12 开始::" +#, fuzzy msgid "" -"Optionally indexes on different columns can be created. The recomendation is " -"to have" +"Optionally indexes on different columns can be created. The recommendation " +"is to have" msgstr "可以选择在不同的列上创建索引。建议的做法是" msgid "``id`` indexed." @@ -19547,8 +19607,9 @@ msgid "" "``source`` and ``target`` columns indexed to speed up pgRouting queries." msgstr "``source`` 和 ``target`` 列建立索引以加快 pgRouting 查询。" +#, fuzzy msgid "" -"``geom`` indexed to speed up gemetry processes that might be needed in the " +"``geom`` indexed to speed up geometry processes that might be needed in the " "front end." msgstr "``geom`` 列建立索引以加快前端可能需要的 gemetry 处理。" @@ -19622,8 +19683,9 @@ msgstr "" "当需要从 ``source`` 到 ``target`` 的路由时,许多函数都可以与 ``(source, " "target)`` 对组合使用。" +#, fuzzy msgid "" -"For convinence of this documentations, some combinations will be stored on a " +"For convenience of this documentation, some combinations will be stored on a " "table:" msgstr "为便于阅读,某些组合将存储在一个表中:" @@ -19772,15 +19834,14 @@ msgid "" "User mailing list: https://lists.osgeo.org/mailman/listinfo/pgrouting-users" msgstr "用户邮件列表:https://lists.osgeo.org/mailman/listinfo/pgrouting-users" -#, fuzzy msgid "" "Developer mailing list: https://discourse.osgeo.org/c/pgrouting/pgrouting-" "dev/" -msgstr "开发者邮件列表:https://lists.osgeo.org/mailman/listinfo/pgrouting-dev" +msgstr "" +"开发人员邮件列表: https://discourse.osgeo.org/c/pgrouting/pgrouting-dev/" -#, fuzzy msgid "Subscribe: https://discourse.osgeo.org/g/pgrouting-dev" -msgstr "开发者邮件列表:https://lists.osgeo.org/mailman/listinfo/pgrouting-dev" +msgstr "订阅:https://discourse.osgeo.org/g/pgrouting-dev" msgid "" "For general questions and topics about how to use pgRouting, please write to " @@ -19857,9 +19918,10 @@ msgstr "" "与表关联的属性有助于指示图是有向的还是无向的,边是否是有向图上的单向,并且根" "据最终应用程序的需要,需要创建合适的拓扑。" +#, fuzzy msgid "" -"pgRouting suplies some functions to create a routing topology and to analyze " -"the topology." +"pgRouting supplies some functions to create a routing topology and to " +"analyze the topology." msgstr "pgRouting 提供一些函数来创建路由拓扑并分析拓扑。" msgid "Additional functions to create a graph:" @@ -19868,9 +19930,8 @@ msgstr "创建图表的附加函数:" msgid "Additional functions to analyze a graph:" msgstr "用于分析图表的附加函数:" -#, fuzzy msgid "Transformation - Family of functions" -msgstr "收缩 - 函数族" +msgstr "转换 - 函数族" msgid "" "This family of functions is used for transforming a given input graph :math:" @@ -19881,7 +19942,8 @@ msgstr "" msgid "Traversal - Family of functions" msgstr "Traversal - 函数族" -msgid "Aditionaly there are 2 categories under this family" +#, fuzzy +msgid "Additionally there are 2 categories under this family" msgstr "此外,该家族下还有 2 个类别" msgid "Via - Category" @@ -19897,8 +19959,9 @@ msgstr "" "给定一个图和一个顶点列表,找到所有相邻顶点对 :math:`vertex_i` 和 :math:" "`vertex_{i+1}` 之间的最短路径" +#, fuzzy msgid "" -"In other words, find a continuos route that visits all the vertices in the " +"In other words, find a continuous route that visits all the vertices in the " "order given." msgstr "换句话说,找到一条按给定顺序访问所有顶点的连续路线。" @@ -20277,6 +20340,6 @@ msgstr "pgr_withPointsKSP 是 **带有点** 的 pgr_ksp" msgid "pgr_withPointsDD is pgr_drivingDistance **with points**" msgstr "pgr_withPointsDD 是 **带有点** 的 pgr_drivenDistance" -#, fuzzy msgid "pgr_withPointsvia is pgr_dijkstraVia **with points**" -msgstr "pgr_withPointsvia 是 **带有点** 的" +msgstr "pgr_withPointsvia 是 pgr_dijkstraVia **with points** 的版本" + diff --git a/pgtap/contraction/combined/compare_dijsktra.pg b/pgtap/contraction/contraction/edge_cases/combined/compare_dijsktra.pg similarity index 100% rename from pgtap/contraction/combined/compare_dijsktra.pg rename to pgtap/contraction/contraction/edge_cases/combined/compare_dijsktra.pg diff --git a/pgtap/contraction/contraction/edge_cases/compare_dijkstra_combined.pg b/pgtap/contraction/contraction/edge_cases/compare_dijkstra_combined.pg new file mode 100644 index 0000000000..b90611db14 --- /dev/null +++ b/pgtap/contraction/contraction/edge_cases/compare_dijkstra_combined.pg @@ -0,0 +1,122 @@ +/*PGR-GNU***************************************************************** + +Copyright (c) 2025 pgRouting developers +Mail: project@pgrouting.org + +------ +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + ********************************************************************PGR-GNU*/ +BEGIN; + +SELECT CASE WHEN min_version('3.8.0') THEN plan(654) ELSE plan(4) END; + +UPDATE edges SET cost = sign(cost) + 0.001 * id * id, reverse_cost = sign(reverse_cost) + 0.001 * id * id; + +ALTER TABLE edges ADD is_new BOOLEAN DEFAULT false, ADD contracted_vertices integer[]; +ALTER TABLE vertices ADD is_contracted BOOLEAN DEFAULT false, ADD contracted_vertices integer[]; + +CREATE OR REPLACE FUNCTION check_cg(BOOLEAN) +RETURNS SETOF TEXT AS +$BODY$ +BEGIN + + IF NOT min_version('3.8.0') THEN + RETURN QUERY SELECT skip(1, 'contraction function/signature is new on 3.8.0'); + RETURN; + END IF; + + IF $1 THEN + RETURN QUERY + SELECT set_eq($$SELECT type, id, contracted_vertices, source, target FROM contraction_info$$, + $$ VALUES + ('v',7,ARRAY[1,3],-1,-1), + ('v',4,ARRAY[2],-1,-1), + ('v',14,ARRAY[13],-1,-1), + ('v',8,ARRAY[9],'-1','-1'), + ('v',6,ARRAY[5],'-1','-1') $$); + + RETURN QUERY + SELECT is_empty($$SELECT id FROM edges WHERE is_new$$); + + PREPARE c_expected_graph AS + SELECT source, target, cost, reverse_cost + FROM (VALUES + (16,17,'1.225'::TEXT,'1.225'::TEXT), + (10,15,'-0.991','1.009'), + (12,17,'1.169','-0.831'), + (15,16,'1.256','1.256'), + (6, 10, '-0.996', '1.004'), + (6, 7, '1.016', '1.016'), + (10, 11, '1.025', '-0.975'), + (7, 11, '1.064', '1.064'), + (11, 16, '1.081', '1.081'), + (11, 12, '1.121', '-0.879'), + (8, 12, '1.144', '-0.856'), + (7, 8, '1.100', '1.100')) + AS t(source, target, cost, reverse_cost); + + RETURN QUERY + SELECT set_eq('SELECT source, target, round(cost::numeric, 3)::TEXT AS cost, round(reverse_cost::numeric, 3)::TEXT FROM contracted_graph', + 'c_expected_graph', 'The contracted graph'); + ELSE + RETURN QUERY + SELECT set_eq($$SELECT type, id, contracted_vertices, source, target FROM contraction_info$$, + $$ VALUES + ('v',7,ARRAY[1,3],-1,-1), + ('v',4,ARRAY[2],-1,-1), + ('v',14,ARRAY[13],-1,-1), + ('e',-3,ARRAY[8,9],7,12), + ('e',-4,ARRAY[17],16,12), + ('e',-2,ARRAY[15],10,16), + ('e',-1,ARRAY[5,6],10,7)$$); + + RETURN QUERY + SELECT set_eq( + $$SELECT id FROM edges WHERE is_new$$, + $$SELECT unnest(ARRAY[19, 20, 21,22])$$ + ); + + PREPARE c_expected_graph AS + SELECT source, target, cost, reverse_cost + FROM (VALUES + (10, 11, '1.025', '-0.975'), + (7, 11, '1.064', '1.064'), + (11, 16, '1.081', '1.081'), + (11, 12, '1.121', '-0.879'), + (10,16,'2.265','-1.000'), + (16,12,'2.394','-1.000'), + (10,7,'2.020','-1.000'), + (7,12,'2.244','-1.000')) + AS t(source, target, cost, reverse_cost); + + RETURN QUERY + SELECT set_eq('SELECT source, target, round(cost::numeric, 3)::TEXT AS cost, round(reverse_cost::numeric, 3)::TEXT FROM contracted_graph', + 'c_expected_graph', 'The contracted graph'); + + END IF; + DEALLOCATE PREPARE c_expected_graph; +END +$BODY$ +LANGUAGE plpgsql; + + +CALL create_contracted_graph(false,'pgr_contraction', ARRAY[1,2]); +SELECT check_cg(false); +SELECT compare_dijkstra_contraction(false); + +CALL create_contracted_graph(true,'pgr_contraction', ARRAY[1,2]); +SELECT check_cg(true); +SELECT compare_dijkstra_contraction(true); + +SELECT finish(); +ROLLBACK; diff --git a/pgtap/trsp/trsp/compare_dijkstra/undirected/unrelated_restrictions.pg b/pgtap/contraction/contraction/edge_cases/compare_dijkstra_deadend.pg similarity index 61% rename from pgtap/trsp/trsp/compare_dijkstra/undirected/unrelated_restrictions.pg rename to pgtap/contraction/contraction/edge_cases/compare_dijkstra_deadend.pg index b44b2c5d8c..c38db3041b 100644 --- a/pgtap/trsp/trsp/compare_dijkstra/undirected/unrelated_restrictions.pg +++ b/pgtap/contraction/contraction/edge_cases/compare_dijkstra_deadend.pg @@ -1,7 +1,6 @@ - /*PGR-GNU***************************************************************** -Copyright (c) 2018 pgRouting developers +Copyright (c) 2025 pgRouting developers Mail: project@pgrouting.org ------ @@ -19,17 +18,22 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ********************************************************************PGR-GNU*/ BEGIN; -SELECT CASE WHEN min_version('3.4.0') THEN plan(648) ELSE plan(2) END; -SET extra_float_digits = -3; +SELECT CASE WHEN min_version('3.8.0') THEN plan(654) ELSE plan(4) END; UPDATE edges SET cost = sign(cost) + 0.001 * id * id, reverse_cost = sign(reverse_cost) + 0.001 * id * id; -PREPARE with_reverse_cost AS SELECT id, source, target, cost, reverse_cost from edges ORDER BY id; -PREPARE no_reverse_cost AS SELECT id, source, target, cost from edges ORDER BY id; -PREPARE unrelated1 AS SELECT * FROM restrictions WHERE id > 7; -PREPARE unrelated2 AS SELECT 1 AS id, 100::float AS cost, ARRAY[33, 32, 25] AS path; +ALTER TABLE edges ADD is_new BOOLEAN DEFAULT false, ADD contracted_vertices integer[]; +ALTER TABLE vertices ADD is_contracted BOOLEAN DEFAULT false, ADD contracted_vertices integer[]; + + + + +CALL create_contracted_graph(false,'pgr_contraction', ARRAY[1]); +SELECT check_contracted_graph_deadend(false); +SELECT compare_dijkstra_contraction(false); -SELECT compare_trsp_dijkstra_new(18, false, 'unrelated1'); -SELECT compare_trsp_dijkstra_new(18, false, 'unrelated2'); +CALL create_contracted_graph(true,'pgr_contraction', ARRAY[1]); +SELECT check_contracted_graph_deadend(true); +SELECT compare_dijkstra_contraction(true); -SELECT * FROM finish(); +SELECT finish(); ROLLBACK; diff --git a/pgtap/trsp/trsp/compare_dijkstra/directed/unrelated_restrictions.pg b/pgtap/contraction/contraction/edge_cases/compare_dijkstra_linear.pg similarity index 62% rename from pgtap/trsp/trsp/compare_dijkstra/directed/unrelated_restrictions.pg rename to pgtap/contraction/contraction/edge_cases/compare_dijkstra_linear.pg index 46d8f33dd8..42f800e7f1 100644 --- a/pgtap/trsp/trsp/compare_dijkstra/directed/unrelated_restrictions.pg +++ b/pgtap/contraction/contraction/edge_cases/compare_dijkstra_linear.pg @@ -1,7 +1,6 @@ - /*PGR-GNU***************************************************************** -Copyright (c) 2018 pgRouting developers +Copyright (c) 2025 pgRouting developers Mail: project@pgrouting.org ------ @@ -19,17 +18,19 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ********************************************************************PGR-GNU*/ BEGIN; -SELECT CASE WHEN min_version('3.4.0') THEN plan(648) ELSE plan(2) END; -SET extra_float_digits = -3; +SELECT CASE WHEN min_version('3.8.0') THEN plan(654) ELSE plan(4) END; UPDATE edges SET cost = sign(cost) + 0.001 * id * id, reverse_cost = sign(reverse_cost) + 0.001 * id * id; -PREPARE with_reverse_cost AS SELECT id, source, target, cost, reverse_cost from edges ORDER BY id; -PREPARE no_reverse_cost AS SELECT id, source, target, cost from edges ORDER BY id; -PREPARE unrelated1 AS SELECT * FROM restrictions WHERE id > 7; -PREPARE unrelated2 AS SELECT 1 AS id, 100::float AS cost, ARRAY[33, 32, 25] AS path; +ALTER TABLE edges ADD is_new BOOLEAN DEFAULT false, ADD contracted_vertices integer[]; +ALTER TABLE vertices ADD is_contracted BOOLEAN DEFAULT false, ADD contracted_vertices integer[]; + +CALL create_contracted_graph(false,'pgr_contraction', ARRAY[2]); +SELECT check_contracted_graph_linear(false); +SELECT compare_dijkstra_contraction(false); -SELECT compare_trsp_dijkstra_new(18, true, 'unrelated1'); -SELECT compare_trsp_dijkstra_new(18, true, 'unrelated2'); +CALL create_contracted_graph(true,'pgr_contraction', ARRAY[2]); +SELECT check_contracted_graph_linear(true); +SELECT compare_dijkstra_contraction(true); -SELECT * FROM finish(); +SELECT finish(); ROLLBACK; diff --git a/pgtap/contraction/edge_cases/cycle_directed.pg b/pgtap/contraction/contraction/edge_cases/cycle_directed.pg similarity index 100% rename from pgtap/contraction/edge_cases/cycle_directed.pg rename to pgtap/contraction/contraction/edge_cases/cycle_directed.pg diff --git a/pgtap/contraction/edge_cases/cycle_undirected.pg b/pgtap/contraction/contraction/edge_cases/cycle_undirected.pg similarity index 100% rename from pgtap/contraction/edge_cases/cycle_undirected.pg rename to pgtap/contraction/contraction/edge_cases/cycle_undirected.pg diff --git a/pgtap/contraction/deadend/directed/cases.pg b/pgtap/contraction/contraction/edge_cases/deadend/directed/cases.pg similarity index 100% rename from pgtap/contraction/deadend/directed/cases.pg rename to pgtap/contraction/contraction/edge_cases/deadend/directed/cases.pg diff --git a/pgtap/contraction/deadend/directed/compare_dijkstra.pg b/pgtap/contraction/contraction/edge_cases/deadend/directed/compare_dijkstra.pg similarity index 100% rename from pgtap/contraction/deadend/directed/compare_dijkstra.pg rename to pgtap/contraction/contraction/edge_cases/deadend/directed/compare_dijkstra.pg diff --git a/pgtap/contraction/deadend/directed/dev_cases.pg b/pgtap/contraction/contraction/edge_cases/deadend/directed/dev_cases.pg similarity index 100% rename from pgtap/contraction/deadend/directed/dev_cases.pg rename to pgtap/contraction/contraction/edge_cases/deadend/directed/dev_cases.pg diff --git a/pgtap/contraction/deadend/directed/id_size.pg b/pgtap/contraction/contraction/edge_cases/deadend/directed/id_size.pg similarity index 98% rename from pgtap/contraction/deadend/directed/id_size.pg rename to pgtap/contraction/contraction/edge_cases/deadend/directed/id_size.pg index 93f107590c..18868af61d 100644 --- a/pgtap/contraction/deadend/directed/id_size.pg +++ b/pgtap/contraction/contraction/edge_cases/deadend/directed/id_size.pg @@ -19,7 +19,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. BEGIN; UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost); -SELECT plan(18); +SELECT plan(12); SELECT test_ids_size(2, true); SELECT test_ids_size(8, true); diff --git a/pgtap/contraction/deadend/directed/inner_query.pg b/pgtap/contraction/contraction/edge_cases/deadend/directed/inner_query.pg similarity index 100% rename from pgtap/contraction/deadend/directed/inner_query.pg rename to pgtap/contraction/contraction/edge_cases/deadend/directed/inner_query.pg diff --git a/pgtap/contraction/deadend/directed/more_cases.pg b/pgtap/contraction/contraction/edge_cases/deadend/directed/more_cases.pg similarity index 100% rename from pgtap/contraction/deadend/directed/more_cases.pg rename to pgtap/contraction/contraction/edge_cases/deadend/directed/more_cases.pg diff --git a/pgtap/contraction/deadend/undirected/cases.pg b/pgtap/contraction/contraction/edge_cases/deadend/undirected/cases.pg similarity index 100% rename from pgtap/contraction/deadend/undirected/cases.pg rename to pgtap/contraction/contraction/edge_cases/deadend/undirected/cases.pg diff --git a/pgtap/contraction/deadend/undirected/compare_dijkstra.pg b/pgtap/contraction/contraction/edge_cases/deadend/undirected/compare_dijkstra.pg similarity index 100% rename from pgtap/contraction/deadend/undirected/compare_dijkstra.pg rename to pgtap/contraction/contraction/edge_cases/deadend/undirected/compare_dijkstra.pg diff --git a/pgtap/contraction/deadend/undirected/dev_cases.pg b/pgtap/contraction/contraction/edge_cases/deadend/undirected/dev_cases.pg similarity index 100% rename from pgtap/contraction/deadend/undirected/dev_cases.pg rename to pgtap/contraction/contraction/edge_cases/deadend/undirected/dev_cases.pg diff --git a/pgtap/contraction/deadend/undirected/id_size.pg b/pgtap/contraction/contraction/edge_cases/deadend/undirected/id_size.pg similarity index 98% rename from pgtap/contraction/deadend/undirected/id_size.pg rename to pgtap/contraction/contraction/edge_cases/deadend/undirected/id_size.pg index 76c0301024..4b557f8562 100644 --- a/pgtap/contraction/deadend/undirected/id_size.pg +++ b/pgtap/contraction/contraction/edge_cases/deadend/undirected/id_size.pg @@ -19,7 +19,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. BEGIN; UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost); -SELECT plan(18); +SELECT plan(12); SELECT test_ids_size(2, false); SELECT test_ids_size(8, false); diff --git a/pgtap/contraction/deadend/undirected/inner_query.pg b/pgtap/contraction/contraction/edge_cases/deadend/undirected/inner_query.pg similarity index 100% rename from pgtap/contraction/deadend/undirected/inner_query.pg rename to pgtap/contraction/contraction/edge_cases/deadend/undirected/inner_query.pg diff --git a/pgtap/contraction/deadend/undirected/more_cases.pg b/pgtap/contraction/contraction/edge_cases/deadend/undirected/more_cases.pg similarity index 100% rename from pgtap/contraction/deadend/undirected/more_cases.pg rename to pgtap/contraction/contraction/edge_cases/deadend/undirected/more_cases.pg diff --git a/pgtap/contraction/contraction/edge_cases/edge_cases.pg b/pgtap/contraction/contraction/edge_cases/edge_cases.pg new file mode 100644 index 0000000000..8d65388d20 --- /dev/null +++ b/pgtap/contraction/contraction/edge_cases/edge_cases.pg @@ -0,0 +1,274 @@ +/*PGR-GNU***************************************************************** + +Copyright (c) 2025 pgRouting developers +Mail: project@pgrouting.org + +------ +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + ********************************************************************PGR-GNU*/ +BEGIN; + +UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost); +SELECT CASE WHEN min_version('3.8.0') THEN plan(128) ELSE plan(1) END; + +CREATE TABLE test_deadend ( + id BIGINT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY, + source BIGINT, + target BIGINT, + cost BIGINT default 1, + reverse_cost BIGINT default 1, + dead_case INTEGER +); + +/* 2 -- {3 -- 4} ; 3 -- 4 */ +INSERT INTO test_deadend(source, target, dead_case) +VALUES +(2, 3, 0), +(2, 4, 0), +(3, 4, 0); + +INSERT INTO test_deadend(source, target, cost, reverse_cost, dead_case) +VALUES +/* 2->{3->4 [dir=both]} [dir=both]; 1->2 */ +(1, 2, 1, -1, 1), + +/* 2->{3->4 [dir=both]} [dir=both]; 2->1 */ +(2, 1, 1, -1, 2), + +/* 2->{3->4 [dir=both]} [dir=both]; 2->1 [dir=both] */ +(1, 2, 1, 1, 3), + +/* 2->{3->4 [dir=both]} [dir=both]; 2->1,2->1 */ +(2, 1, 1, -1, 4), +(2, 1, 1, -1, 4), + +/* 2->{3->4 [dir=both]} [dir=both]; {2,3}->1 */ +(2, 1, 1, -1, 5), +(3, 1, 1, -1, 5), + +/* 2->{3->4 [dir=both]} [dir=both]; 2->1;2->1;3->1 */ +(2, 1, 1, -1, 6), +(2, 1, 1, -1, 6), +(3, 1, 1, -1, 6); + +CREATE OR REPLACE FUNCTION edge_cases_sampledata(directed text) +RETURNS SETOF TEXT AS +$BODY$ +BEGIN + + -- SINGLE edge + + RETURN QUERY + SELECT set_eq($$"graph1" ('1','{}',$$||directed||$$)$$, $$ VALUES ('v',6,ARRAY[5]::BIGINT[]) $$, '5 <=> 6: Directed = ' || directed || ', no forbidden vertices'); + RETURN QUERY + SELECT set_eq($$"graph1" ('1','{6}',$$||directed||$$) $$, $$ VALUES ('v',6,ARRAY[5]::BIGINT[]) $$, '5 <=> 6: Directed = ' || directed || ',forbid 5'); + RETURN QUERY + SELECT set_eq($$"graph1" ('1','{5}',$$||directed||$$) $$, $$ VALUES ('v',5,ARRAY[6]::BIGINT[]) $$, '5 <=> 6: Directed = ' || directed || ',forbid 6'); + RETURN QUERY + SELECT is_empty($$"graph1" ('1','{5,6}',$$||directed||$$) $$, '5 <=> 6: Directed = ' || directed || ',forbid 5,6'); + + RETURN QUERY + SELECT set_eq($$"graph1" ('3','{}',$$||directed||$$)$$, $$ VALUES ('v',15,ARRAY[10]::BIGINT[]) $$, '10 -> 15: Directed = ' || directed || ', no forbidden vertices'); + RETURN QUERY + SELECT set_eq($$"graph1" ('3','{10}',$$||directed||$$)$$, $$ VALUES ('v',10,ARRAY[15]::BIGINT[]) $$, '10 -> 15: Directed = ' || directed || ',forbid 10'); + RETURN QUERY + SELECT set_eq($$"graph1" ('3','{15}',$$||directed||$$)$$, $$ VALUES ('v',15,ARRAY[10]::BIGINT[]) $$, '10 -> 15: Directed = ' || directed || ',forbid 15'); + RETURN QUERY + SELECT is_empty($$"graph1" ('3','{10,15}',$$||directed||$$) $$, '5 <=> 6: Directed = ' || directed || ',forbid 10,15'); + + RETURN QUERY + SELECT set_eq($$"graph1" ('12','{}',$$||directed||$$)$$, $$ VALUES ('v',12,ARRAY[8]::BIGINT[]) $$, '8 -> 12: Directed = ' || directed || ', no forbidden vertices'); + RETURN QUERY + SELECT set_eq($$"graph1" ('12','{8}',$$||directed||$$)$$, $$ VALUES ('v',8,ARRAY[12]::BIGINT[]) $$, '8 -> 12: Directed = ' || directed || ',forbid 8'); + RETURN QUERY + SELECT set_eq($$"graph1" ('12','{12}',$$||directed||$$)$$, $$ VALUES ('v',12,ARRAY[8]::BIGINT[]) $$, '8 -> 12: Directed = ' || directed || ',forbid 12'); + + -- TWO edges + + RETURN QUERY + SELECT set_eq($$"graph1" ('2,3','{}',$$||directed||$$)$$, $$ VALUES ('v',15,ARRAY[6,10]::BIGINT[]) $$, '15 -> 10 -> 6: Directed = ' || directed || ', no forbidden vertices'); + RETURN QUERY + SELECT set_eq($$"graph1" ('2,3','{6}',$$||directed||$$)$$, $$ VALUES ('v',6,ARRAY[10,15]::BIGINT[]) $$, '15 -> 10 -> 6: Directed = ' || directed || ',forbid 6'); + RETURN QUERY + SELECT set_eq($$"graph1" ('2,3','{10}',$$||directed||$$)$$, $$ VALUES ('v',10,ARRAY[6,15]::BIGINT[]) $$, '15 -> 10 -> 6: Directed = ' || directed || ',forbid 10'); + RETURN QUERY + SELECT set_eq($$"graph1" ('2,3','{15}',$$||directed||$$)$$, $$ VALUES ('v',15,ARRAY[6,10]::BIGINT[]) $$, '15 -> 10 -> 6: Directed = ' || directed || ',forbid 15'); + RETURN QUERY + SELECT set_eq($$"graph1" ('2,3','{6,10}',$$||directed||$$)$$, $$ VALUES ('v',10,ARRAY[15]::BIGINT[]) $$, '15 -> 10 -> 6: Directed = ' || directed || ',forbid 6,10'); + RETURN QUERY + SELECT is_empty($$"graph1" ('2,3','{6,15}',$$||directed||$$)$$, '15 -> 10 -> 6: Directed = ' || directed || ',forbid 6,15'); + RETURN QUERY + SELECT set_eq($$"graph1" ('2,3','{10,15}',$$||directed||$$)$$, $$ VALUES ('v',10,ARRAY[6]::BIGINT[]) $$, '15 -> 10 -> 6: Directed = ' || directed || ',forbid 10,15'); + RETURN QUERY + SELECT is_empty($$"graph1" ('2,3','{6,10,15}',$$||directed||$$)$$, '15 -> 10 -> 6: Directed = ' || directed || ',forbid 6,10,15'); + + + RETURN QUERY + SELECT set_eq($$"graph1" ('11,12','{}',$$||directed||$$)$$, $$ VALUES ('v',8,ARRAY[11,12]::BIGINT[]) $$, '11 -> 12 <- 8: Directed = ' || directed || ', no forbidden vertices'); + RETURN QUERY + SELECT set_eq($$"graph1" ('11,12','{8}',$$||directed||$$)$$, $$ VALUES ('v',8,ARRAY[11,12]::BIGINT[]) $$, '11 -> 12 <- 8: Directed = ' || directed || ',forbid 8'); + + IF directed THEN + RETURN QUERY + SELECT set_eq($$"graph1" ('11,12','{11}',$$||directed||$$)$$, $$ VALUES ('v',8,ARRAY[12]::BIGINT[]), ('v',11,ARRAY[12]::BIGINT[]) $$, '11 -> 12 <- 8: Directed = ' || directed || ',forbid 11'); + RETURN QUERY + SELECT set_eq($$"graph1" ('11,12','{8,11}',$$||directed||$$)$$, $$ VALUES ('v',8,ARRAY[12]::BIGINT[]), ('v',11,ARRAY[12]::BIGINT[]) $$, '11 -> 12 <- 8: Directed = ' || directed || ',forbid 8,11'); + ELSE + RETURN QUERY + SELECT set_eq($$"graph1" ('11,12','{11}',$$||directed||$$)$$, $$ VALUES ('v',11,ARRAY[8,12]::BIGINT[]) $$, '11 -> 12 <- 8: Directed = ' || directed || ',forbid 11'); + RETURN QUERY + SELECT is_empty($$"graph1" ('11,12','{8,11}',$$||directed||$$)$$, '11 -> 12 <- 8: Directed = ' || directed || ',forbid 8,11'); + END IF; + RETURN QUERY + SELECT set_eq($$"graph1" ('11,12','{12}',$$||directed||$$)$$, $$ VALUES ('v',12,ARRAY[8,11]::BIGINT[]) $$, '11 -> 12 <- 8: Directed = ' || directed || ',forbid 12'); + RETURN QUERY + SELECT set_eq($$"graph1" ('11,12','{8,12}',$$||directed||$$)$$, $$ VALUES ('v',12,ARRAY[11]::BIGINT[]) $$, '11 -> 12 <- 8: Directed = ' || directed || ',forbid 8,12'); + RETURN QUERY + SELECT set_eq($$"graph1" ('11,12','{11,12}',$$||directed||$$)$$, $$ VALUES ('v',12,ARRAY[8]::BIGINT[]) $$, '11 -> 12 <- 8: Directed = ' || directed || ',forbid 11,12'); + RETURN QUERY + SELECT is_empty($$"graph1" ('11,12','{8,11,12}',$$||directed||$$)$$, '11 -> 12 <- 8: Directed = ' || directed || ',forbid 8,11,12'); + + + RETURN QUERY + SELECT set_eq($$"graph1" ('2,12','{}',$$||directed||$$)$$, $$ VALUES ('v',10,ARRAY[6]),('v',12,ARRAY[8]::BIGINT[]) $$, '10 -> 6, 8 -> 12: Directed = ' || directed || ', no forbidden vertices'); + RETURN QUERY + SELECT set_eq($$"graph1" ('2,12','{6}',$$||directed||$$)$$, $$ VALUES ('v',6,ARRAY[10]::BIGINT[]), ('v',12,ARRAY[8]::BIGINT[]) $$, '10 -> 6, 8 -> 12: Directed = ' || directed || ',forbid 6'); + RETURN QUERY + SELECT set_eq($$"graph1" ('2,12','{8}',$$||directed||$$)$$, $$ VALUES ('v',10,ARRAY[6]::BIGINT[]), ('v',8,ARRAY[12]::BIGINT[]) $$, '10 -> 6, 8 -> 12: Directed = ' || directed || ',forbid 8'); + RETURN QUERY + SELECT set_eq($$"graph1" ('2,12','{10}',$$||directed||$$)$$, $$ VALUES ('v',10,ARRAY[6]::BIGINT[]), ('v',12,ARRAY[8]::BIGINT[]) $$, '10 -> 6, 8 -> 12: Directed = ' || directed || ',forbid 10'); + RETURN QUERY + SELECT set_eq($$"graph1" ('2,12','{12}',$$||directed||$$)$$, $$ VALUES ('v',10,ARRAY[6]::BIGINT[]), ('v',12,ARRAY[8]::BIGINT[]) $$, '10 -> 6, 8 -> 12: Directed = ' || directed || ',forbid 12'); + RETURN QUERY + SELECT set_eq($$"graph1" ('2,12','{6,8}',$$||directed||$$)$$, $$ VALUES ('v',6,ARRAY[10]::BIGINT[]), ('v',8,ARRAY[12]::BIGINT[]) $$, '10 -> 6, 8 -> 12: Directed = ' || directed || ',forbid 6,8'); + RETURN QUERY + SELECT set_eq($$"graph1" ('2,12','{6,10}',$$||directed||$$)$$, $$ VALUES ('v',12,ARRAY[8]::BIGINT[]) $$, '10 -> 6, 8 -> 12: Directed = ' || directed || ',forbid 6,10'); + RETURN QUERY + SELECT set_eq($$"graph1" ('2,12','{6,12}',$$||directed||$$)$$, $$ VALUES ('v',6,ARRAY[10]::BIGINT[]), ('v',12,ARRAY[8]::BIGINT[]) $$, '10 -> 6, 8 -> 12: Directed = ' || directed || ',forbid 6,12'); + RETURN QUERY + SELECT set_eq($$"graph1" ('2,12','{8,10}',$$||directed||$$)$$, $$ VALUES ('v',10,ARRAY[6]::BIGINT[]), ('v',8,ARRAY[12]::BIGINT[]) $$, '10 -> 6, 8 -> 12: Directed = ' || directed || ',forbid 8,10'); + RETURN QUERY + SELECT set_eq($$"graph1" ('2,12','{8,12}',$$||directed||$$)$$, $$ VALUES ('v',10,ARRAY[6]::BIGINT[]) $$, '10 -> 6, 8 -> 12: Directed = ' || directed || ',forbid 8,12'); + RETURN QUERY + SELECT set_eq($$"graph1" ('2,12','{6,8,10}',$$||directed||$$)$$, $$ VALUES ('v',8,ARRAY[12]::BIGINT[]) $$, '10 -> 6, 8 -> 12: Directed = ' || directed || ',forbid 6,8,10'); + RETURN QUERY + SELECT set_eq($$"graph1" ('2,12','{6,8,12}',$$||directed||$$)$$, $$ VALUES ('v',6,ARRAY[10]::BIGINT[]) $$, '10 -> 6, 8 -> 12: Directed = ' || directed || ',forbid 6,8,12'); + RETURN QUERY + SELECT set_eq($$"graph1" ('2,12','{6,10,12}',$$||directed||$$)$$, $$ VALUES ('v',12,ARRAY[8]::BIGINT[]) $$, '10 -> 6, 8 -> 12: Directed = ' || directed || ',forbid 6,10,12'); + RETURN QUERY + SELECT set_eq($$"graph1" ('2,12','{8,10,12}',$$||directed||$$)$$, $$ VALUES ('v',10,ARRAY[6]::BIGINT[]) $$, '10 -> 6, 8 -> 12: Directed = ' || directed || ',forbid 8,10,12'); + RETURN QUERY + SELECT is_empty($$"graph1" ('2,12','{6,8,10,12}',$$||directed||$$)$$, '10 -> 6, 8 -> 12: Directed = ' || directed || ',forbid 6,8,10,12'); + + + -- THREE edges + RETURN QUERY + SELECT set_eq($$"graph1" ('5,11,13','{}',$$||directed||$$)$$, $$ VALUES ('v',17,ARRAY[10,11,12]) $$, '10 -> 11 -> 12 -> 17: Directed = ' || directed || ', no forbidden vertices'); + RETURN QUERY + SELECT set_eq($$"graph1" ('5,11,13','{10}',$$||directed||$$)$$, $$ VALUES ('v',10,ARRAY[11,12,17]) $$, '10 -> 11 -> 12 -> 17: Directed = ' || directed || ',forbid 10'); + RETURN QUERY + SELECT set_eq($$"graph1" ('5,11,13','{11}',$$||directed||$$)$$, $$ VALUES ('v',11,ARRAY[10,12,17]) $$, '10 -> 11 -> 12 -> 17: Directed = ' || directed || ',forbid 11'); + RETURN QUERY + SELECT set_eq($$"graph1" ('5,11,13','{12}',$$||directed||$$)$$, $$ VALUES ('v',12,ARRAY[10,11,17]) $$, '10 -> 11 -> 12 -> 17: Directed = ' || directed || ',forbid 12'); + RETURN QUERY + SELECT set_eq($$"graph1" ('5,11,13','{17}',$$||directed||$$)$$, $$ VALUES ('v',17,ARRAY[10,11,12]) $$, '10 -> 11 -> 12 -> 17: Directed = ' || directed || ',forbid 17'); + RETURN QUERY + SELECT is_empty($$"graph1" ('5,11,13','{10,17}',$$||directed||$$)$$, '10 -> 11 -> 12 -> 17: Directed = ' || directed || ', forbid 10,17'); + + -- The graph1 + RETURN QUERY + SELECT set_eq($$"graph1" ('1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16','{}',$$||directed||$$)$$, + $$ VALUES ('v',8,ARRAY[9]),('v',7,ARRAY[1,3]),('v',6,ARRAY[5]) $$, 'the graph1: Directed = ' || directed || ', no forbidden vertices'); + RETURN QUERY + SELECT set_eq($$"graph1" ('1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16','{3}',$$||directed||$$)$$, + $$ VALUES ('v',8,ARRAY[9]),('v',3,ARRAY[1]),('v',6,ARRAY[5]) $$, 'the graph1: Directed = ' || directed || ', forbid 3'); + +END; +$BODY$ +LANGUAGE plpgsql; + + +CREATE OR REPLACE FUNCTION edge_cases(directed text) +RETURNS SETOF TEXT AS +$BODY$ +BEGIN + +RETURN QUERY SELECT is_empty(format($$"graph" ('0',%1$s)$$,directed),'empty graph: 0,'||directed); + +RETURN QUERY SELECT isnt_empty(format($$"graph" ('1',%1$s)$$,directed), 'not empty graph: 1,'||directed); +RETURN QUERY SELECT set_eq(format($$"graph" ('1',%1$s)$$,directed), $$ VALUES ('v',2,ARRAY[1]::BIGINT[],-1,-1,-1) $$, 'expected graph: 1,'||directed) ; + +RETURN QUERY SELECT isnt_empty(format($$"graph" ('0,1',%1$s)$$,directed), 'not empty graph: 0,1,'||directed); +RETURN QUERY SELECT set_eq(format($$"graph" ('0,1',%1$s)$$,directed), $$ VALUES ('v',2,ARRAY[1]::BIGINT[],-1,-1,-1) $$, 'expected graph: 0,1,'||directed) ; + +RETURN QUERY SELECT isnt_empty(format($$"graph" ('0,2',%1$s)$$,directed), 'not empty graph: 0,2,'||directed); +RETURN QUERY SELECT set_eq(format($$"graph" ('0,2',%1$s)$$,directed), $$ VALUES ('v',2,ARRAY[1]::BIGINT[],-1,-1,-1) $$, 'expected graph: 0,2,'||directed) ; + +RETURN QUERY SELECT isnt_empty(format($$"graph" ('0,3',%1$s)$$,directed), 'not empty graph: 0,3,'||directed); +RETURN QUERY SELECT set_eq(format($$"graph" ('0,3',%1$s)$$,directed), $$ VALUES ('v',2,ARRAY[1]::BIGINT[],-1,-1,-1) $$, 'expected graph: 0,3,'||directed) ; + +RETURN QUERY SELECT isnt_empty(format($$"graph" ('0,4',%1$s)$$,directed), 'not empty graph: 0,4,'||directed); +RETURN QUERY SELECT set_eq(format($$"graph" ('0,4',%1$s)$$,directed), $$ VALUES ('v',2,ARRAY[1]::BIGINT[],-1,-1,-1) $$, 'expected graph: 0,4,'||directed) ; + +RETURN QUERY +SELECT CASE WHEN directed::BOOLEAN THEN + collect_tap( + isnt_empty(format($$"graph" ('0,5',%1$s)$$,directed), 'empty graph: 0,5,'||directed), + set_eq(format($$"graph" ('0,5',%1$s)$$,directed), $$ VALUES ('v',2,ARRAY[1]::BIGINT[],-1,-1,-1), ('v',3,ARRAY[1]::BIGINT[],-1,-1,-1) $$, 'expected graph: 0,4,'||directed), + isnt_empty(format($$"graph" ('0,6',%1$s)$$,directed), 'empty graph: 0,6,'||directed), + set_eq(format($$"graph" ('0,6',%1$s)$$,directed), $$ VALUES ('v',2,ARRAY[1]::BIGINT[],-1,-1,-1), ('v',3,ARRAY[1]::BIGINT[],-1,-1,-1) $$, 'expected graph: 0,6,'||directed)) +ELSE + collect_tap( + is_empty(format($$"graph" ('0,5',%1$s)$$,directed), 'empty graph: 0,5,'||directed), + is_empty(format($$"graph" ('0,6',%1$s)$$,directed), 'empty graph: 0,6,'||directed)) +END; + +END; +$BODY$ +LANGUAGE plpgsql; + +CREATE OR REPLACE FUNCTION edge_cases() +RETURNS SETOF TEXT AS +$BODY$ +BEGIN + + IF NOT min_version('3.8.0') THEN + RETURN QUERY + SELECT skip(1, 'pgr_contraction new signature on 3.8.0'); + RETURN; + END IF; + + PREPARE graph1(text,text,text) AS + SELECT type, id, contracted_vertices FROM pgr_contraction( + format($$SELECT id, source, target, cost, reverse_cost FROM edges WHERE id IN (%s) ORDER BY id$$, $1), + $3::boolean,ARRAY[1],1,$2::BIGINT[]); + + prepare graph(text, text) AS + SELECT * FROM pgr_contraction( + format($$SELECT * FROM test_deadend WHERE dead_case IN (%1$s) ORDER BY id$$, $1), + $2::boolean,ARRAY[1]); + + RETURN QUERY SELECT edge_cases('true'); + RETURN QUERY SELECT edge_cases('false'); + RETURN QUERY SELECT edge_cases_sampledata('true'); + RETURN QUERY SELECT edge_cases_sampledata('false'); + +END; +$BODY$ +LANGUAGE plpgsql; + +SELECT edge_cases(); + +SELECT finish(); +ROLLBACK; + diff --git a/pgtap/contraction/contraction/edge_cases/edge_cases_deadend.pg b/pgtap/contraction/contraction/edge_cases/edge_cases_deadend.pg new file mode 100644 index 0000000000..b0dd533ff7 --- /dev/null +++ b/pgtap/contraction/contraction/edge_cases/edge_cases_deadend.pg @@ -0,0 +1,61 @@ +/*PGR-GNU***************************************************************** + +Copyright (c) 2025 pgRouting developers +Mail: project@pgrouting.org + +------ +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + ********************************************************************PGR-GNU*/ +BEGIN; + +UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost); +SELECT CASE WHEN min_version('3.8.0') THEN plan(128) ELSE plan(1) END; + +CREATE OR REPLACE FUNCTION edge_cases() +RETURNS SETOF TEXT AS +$BODY$ +BEGIN + + IF NOT min_version('3.8.0') THEN + RETURN QUERY + SELECT skip(1, 'pgr_contraction new signature on 3.8.0'); + RETURN; + END IF; + + CALL create_deadend_edge_cases(); + + + PREPARE graph1(text,text,text) AS + SELECT type, id, contracted_vertices FROM pgr_contraction( + format($$SELECT id, source, target, cost, reverse_cost FROM edges WHERE id IN (%s) ORDER BY id$$, $1), + $3::boolean, ARRAY[1],1,$2::BIGINT[]); + + prepare graph(text, text) AS + SELECT * FROM pgr_contraction( + format($$SELECT * FROM graphs WHERE dead_case IN (%1$s) ORDER BY id$$, $1), + $2::boolean,ARRAY[1]); + + RETURN QUERY SELECT deadend_edge_cases('true'); + RETURN QUERY SELECT deadend_edge_cases('false'); + RETURN QUERY SELECT deadend_edge_cases_sampledata('true'); + RETURN QUERY SELECT deadend_edge_cases_sampledata('false'); + +END; +$BODY$ +LANGUAGE plpgsql; + +SELECT edge_cases(); + +SELECT finish(); +ROLLBACK; + diff --git a/pgtap/contraction/contraction/edge_cases/edge_cases_linear.pg b/pgtap/contraction/contraction/edge_cases/edge_cases_linear.pg new file mode 100644 index 0000000000..7eeceaae63 --- /dev/null +++ b/pgtap/contraction/contraction/edge_cases/edge_cases_linear.pg @@ -0,0 +1,58 @@ +/*PGR-GNU***************************************************************** + +Copyright (c) 2025 pgRouting developers +Mail: project@pgrouting.org + +------ +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + ********************************************************************PGR-GNU*/ +BEGIN; + +UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost); +SELECT CASE WHEN min_version('3.8.0') THEN plan(112) ELSE plan(1) END; + +CREATE OR REPLACE FUNCTION edge_cases() +RETURNS SETOF TEXT AS +$BODY$ +BEGIN + + IF NOT min_version('3.8.0') THEN + RETURN QUERY + SELECT skip(1, 'pgr_contraction new signature on 3.8.0'); + RETURN; + END IF; + + CALL create_linear_edge_cases(); + + PREPARE graph1(text,text,text) AS + SELECT type, contracted_vertices,source,target,cost FROM pgr_contraction( + format($$SELECT id, source, target, cost, reverse_cost FROM edges WHERE id IN (%s) ORDER BY id$$, $1), + $3::boolean,ARRAY[2],1,$2::INTEGER[]); + + prepare graph(text, text) AS + SELECT * FROM pgr_contraction(format($$SELECT * FROM graphs WHERE dead_case IN (%1$s)$$, $1), $2::boolean,ARRAY[2]); + + RETURN QUERY SELECT linear_edge_cases('true'); + RETURN QUERY SELECT linear_edge_cases('false'); + RETURN QUERY SELECT linear_edge_cases_sampledata('true'); + RETURN QUERY SELECT linear_edge_cases_sampledata('false'); + +END; +$BODY$ +LANGUAGE plpgsql; + +SELECT edge_cases(); + +SELECT finish(); +ROLLBACK; + diff --git a/pgtap/contraction/edge_cases/issue_1002.pg b/pgtap/contraction/contraction/edge_cases/issue_1002.pg similarity index 100% rename from pgtap/contraction/edge_cases/issue_1002.pg rename to pgtap/contraction/contraction/edge_cases/issue_1002.pg diff --git a/pgtap/contraction/linear/directed/compare_dijkstra.pg b/pgtap/contraction/contraction/edge_cases/linear/directed/compare_dijkstra.pg similarity index 100% rename from pgtap/contraction/linear/directed/compare_dijkstra.pg rename to pgtap/contraction/contraction/edge_cases/linear/directed/compare_dijkstra.pg diff --git a/pgtap/contraction/linear/directed/edge_cases.pg b/pgtap/contraction/contraction/edge_cases/linear/directed/edge_cases.pg similarity index 97% rename from pgtap/contraction/linear/directed/edge_cases.pg rename to pgtap/contraction/contraction/edge_cases/linear/directed/edge_cases.pg index eebae547f5..31c88f95ef 100644 --- a/pgtap/contraction/linear/directed/edge_cases.pg +++ b/pgtap/contraction/contraction/edge_cases/linear/directed/edge_cases.pg @@ -74,17 +74,17 @@ SELECT is_empty('v3e2q20', 'graph_e_1_2 QUERY 2: Directed graph with two edges a -- GRAPH 5 - 6 - 7 PREPARE graph_e_1_4_q1 AS -SELECT type, id, contracted_vertices, source, target, cost +SELECT type, contracted_vertices, source, target, cost FROM pgr_contraction( 'graph_e_1_4', ARRAY[2]::INTEGER[], 5, ARRAY[]::INTEGER[], true); PREPARE graph_e_1_4_sol1 AS -SELECT type, id, contracted_vertices, source, target, cost +SELECT type, contracted_vertices, source, target, cost FROM (VALUES - ('e', -1, ARRAY[6]::BIGINT[], 7, 5, 2), - ('e', -2, ARRAY[6]::BIGINT[], 5, 7, 2)) -AS t(type, id, contracted_vertices, source, target, cost); + ('e', ARRAY[6]::BIGINT[], 7, 5, 2), + ('e', ARRAY[6]::BIGINT[], 5, 7, 2)) +AS t(type, contracted_vertices, source, target, cost); SELECT set_eq('graph_e_1_4_q1', 'graph_e_1_4_sol1', 'graph_e_1_4 QUERY 1: Directed graph with two edges and no forbidden vertices'); diff --git a/pgtap/contraction/linear/directed/inner_query.pg b/pgtap/contraction/contraction/edge_cases/linear/directed/inner_query.pg similarity index 100% rename from pgtap/contraction/linear/directed/inner_query.pg rename to pgtap/contraction/contraction/edge_cases/linear/directed/inner_query.pg diff --git a/pgtap/contraction/linear/directed/issue_1647.pg b/pgtap/contraction/contraction/edge_cases/linear/directed/issue_1647.pg similarity index 100% rename from pgtap/contraction/linear/directed/issue_1647.pg rename to pgtap/contraction/contraction/edge_cases/linear/directed/issue_1647.pg diff --git a/pgtap/contraction/linear/undirected/compare_dijkstra.pg b/pgtap/contraction/contraction/edge_cases/linear/undirected/compare_dijkstra.pg similarity index 100% rename from pgtap/contraction/linear/undirected/compare_dijkstra.pg rename to pgtap/contraction/contraction/edge_cases/linear/undirected/compare_dijkstra.pg diff --git a/pgtap/contraction/linear/undirected/edge_cases.pg b/pgtap/contraction/contraction/edge_cases/linear/undirected/edge_cases.pg similarity index 100% rename from pgtap/contraction/linear/undirected/edge_cases.pg rename to pgtap/contraction/contraction/edge_cases/linear/undirected/edge_cases.pg diff --git a/pgtap/contraction/linear/undirected/inner_query.pg b/pgtap/contraction/contraction/edge_cases/linear/undirected/inner_query.pg similarity index 100% rename from pgtap/contraction/linear/undirected/inner_query.pg rename to pgtap/contraction/contraction/edge_cases/linear/undirected/inner_query.pg diff --git a/pgtap/contraction/linear/undirected/issue_1647.pg b/pgtap/contraction/contraction/edge_cases/linear/undirected/issue_1647.pg similarity index 100% rename from pgtap/contraction/linear/undirected/issue_1647.pg rename to pgtap/contraction/contraction/edge_cases/linear/undirected/issue_1647.pg diff --git a/pgtap/contraction/edge_cases/remaining_tests.pg b/pgtap/contraction/contraction/edge_cases/remaining_tests.pg similarity index 96% rename from pgtap/contraction/edge_cases/remaining_tests.pg rename to pgtap/contraction/contraction/edge_cases/remaining_tests.pg index 30740360e4..e2bb4aded1 100644 --- a/pgtap/contraction/edge_cases/remaining_tests.pg +++ b/pgtap/contraction/contraction/edge_cases/remaining_tests.pg @@ -19,7 +19,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ********************************************************************PGR-GNU*/ BEGIN; UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost); -SELECT plan(49); +SELECT plan(48); SET client_min_messages TO WARNING; SELECT has_function('pgr_contraction'); @@ -34,26 +34,6 @@ SELECT function_returns('pgr_contraction', ARRAY[ ], 'setof record'); - -PREPARE parameters AS -SELECT array[ -'', -'', -'max_cycles', -'forbidden_vertices', -'directed', -'type', -'id', -'contracted_vertices', -'source', -'target', -'cost']; - -SELECT set_eq( - $$SELECT proargnames FROM pg_proc WHERE proname = 'pgr_contraction'$$, - 'parameters'); - - CREATE OR REPLACE FUNCTION test_anyInteger(fn TEXT, params TEXT[], parameter TEXT) RETURNS SETOF TEXT AS $BODY$ diff --git a/pgtap/contraction/contraction/inner_query.pg b/pgtap/contraction/contraction/inner_query.pg new file mode 100644 index 0000000000..ae7eb0b224 --- /dev/null +++ b/pgtap/contraction/contraction/inner_query.pg @@ -0,0 +1,105 @@ +/*PGR-GNU***************************************************************** + +Copyright (c) 2025 pgRouting developers +Mail: project@pgrouting.org + +------ +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + ********************************************************************PGR-GNU*/ +BEGIN; + +UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost); +SELECT CASE WHEN min_version('3.8.0') THEN plan(387) ELSE plan(1) END; + +CREATE OR REPLACE FUNCTION inner_query() +RETURNS SETOF TEXT AS +$BODY$ +BEGIN + + IF NOT min_version('3.8.0') THEN + RETURN QUERY SELECT skip(1, 'pgr_contraction new signature on 3.8.0'); + RETURN; + END IF; + + RETURN QUERY SELECT style_dijkstra('pgr_contraction(', ')'); + RETURN QUERY SELECT style_dijkstra('pgr_contraction(', ', true)'); + RETURN QUERY SELECT style_dijkstra('pgr_contraction(', ', false)'); + RETURN QUERY SELECT style_dijkstra('pgr_contraction(', ', true, ARRAY[1])'); + RETURN QUERY SELECT style_dijkstra('pgr_contraction(', ', false, ARRAY[1])'); + RETURN QUERY SELECT style_dijkstra('pgr_contraction(', ', true, ARRAY[2])'); + RETURN QUERY SELECT style_dijkstra('pgr_contraction(', ', false, ARRAY[2])'); + + RETURN QUERY SELECT throws_ok( + $$SELECT * FROM pgr_contraction( + 'SELECT id, source, target, cost, reverse_cost FROM edges', true, + ARRAY[1]::bigint[], 1, ARRAY[ 2 ]::bigint[])$$, + '42883', 'function pgr_contraction(unknown, boolean, bigint[], integer, bigint[]) does not exist', + 'Throws because methods is bigint[]'); + + RETURN QUERY SELECT throws_ok( + $$SELECT * FROM pgr_contraction( + 'SELECT id, source, target, cost, reverse_cost FROM edges', true, + ARRAY[]::INTEGER[], 1, ARRAY[ 2 ]::integer[])$$, + 'XX000', 'One dimension expected', 'Throws because methods is empty ARRAY[]'); + + RETURN QUERY SELECT throws_ok( + $$SELECT * FROM pgr_contraction( + 'SELECT id, source, target, cost, reverse_cost FROM edges', true, + ARRAY[], 1, ARRAY[ 2 ]::integer[])$$, + '42P18', 'cannot determine type of empty array', 'Throws because methods is empty ARRAY[]'); + + RETURN QUERY SELECT throws_ok( + $$SELECT * FROM pgr_contraction( + 'SELECT id, source, target, cost, reverse_cost FROM edges', true, + ARRAY[1], 1, ARRAY[ [2,3,4,5], [4,5,6,7] ]::integer[][])$$, + 'XX000', 'One dimension expected', 'Throws because forbidden is 2 dimensions'); + + RETURN QUERY SELECT lives_ok( + $$SELECT * FROM pgr_contraction( + 'SELECT id, source, target, cost, reverse_cost FROM edges', true, + ARRAY[1], 1, ARRAY[ 2 ])$$, + 'Lives when forbidden is not described'); + + RETURN QUERY SELECT lives_ok( + $$SELECT * FROM pgr_contraction( + 'SELECT id, source, target, cost, reverse_cost FROM edges', true, + ARRAY[1], 1, ARRAY[ 2 ]::integer[])$$, + 'Lives when forbidden is integer[]'); + + RETURN QUERY SELECT lives_ok( + $$SELECT * FROM pgr_contraction( + 'SELECT id, source, target, cost, reverse_cost FROM edges', true, + ARRAY[1], 1, ARRAY[ 2 ]::bigint[])$$, + 'Lives when forbidden is bigint[]'); + + RETURN QUERY SELECT lives_ok( + $$SELECT * FROM pgr_contraction( + 'SELECT id, source, target, cost, reverse_cost FROM edges', true, + ARRAY[1], 1, ARRAY[ 2 ]::smallint[])$$, + 'Lives when forbidden is smallint[]'); + + RETURN QUERY SELECT throws_ok( + $$SELECT * FROM pgr_contraction( + 'SELECT id, source, target, cost, reverse_cost FROM edges', true, + ARRAY[1], 1, ARRAY[ 2 ]::float8[])$$, + '42883', 'function pgr_contraction(unknown, boolean, integer[], integer, double precision[]) does not exist', + 'Throws because forbidden is float8[]'); + +END; +$BODY$ +LANGUAGE plpgsql; + +SELECT inner_query(); + +SELECT finish(); +ROLLBACK; diff --git a/pgtap/contraction/no_crash_test.pg b/pgtap/contraction/contraction/no_crash_test.pg similarity index 79% rename from pgtap/contraction/no_crash_test.pg rename to pgtap/contraction/contraction/no_crash_test.pg index 0a6a663be1..91133d6c86 100644 --- a/pgtap/contraction/no_crash_test.pg +++ b/pgtap/contraction/contraction/no_crash_test.pg @@ -1,4 +1,3 @@ - /*PGR-GNU***************************************************************** Copyright (c) 2018 pgRouting developers @@ -20,7 +19,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. BEGIN; UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost); -SELECT plan(7); +SELECT CASE WHEN min_version('3.8.0') THEN plan(11) ELSE plan(8) END; PREPARE edges AS SELECT id, source, target, cost, reverse_cost FROM edges; @@ -46,6 +45,21 @@ BEGIN RETURN query SELECT * FROM no_crash_test('pgr_contraction', params, subs); + IF NOT min_version('3.8.0') THEN + RETURN QUERY + SELECT skip(1, 'pgr_contraction new signature on 3.8.0'); + RETURN; + END IF; + + params = ARRAY[ + '$$SELECT id, source, target, cost, reverse_cost FROM edges$$' + ]::TEXT[]; + subs = ARRAY[ + 'NULL' + ]::TEXT[]; + + RETURN query SELECT * FROM no_crash_test('pgr_contraction', params, subs); + END $BODY$ LANGUAGE plpgsql VOLATILE; diff --git a/pgtap/contraction/contraction/types_check.pg b/pgtap/contraction/contraction/types_check.pg new file mode 100644 index 0000000000..f5650b3004 --- /dev/null +++ b/pgtap/contraction/contraction/types_check.pg @@ -0,0 +1,68 @@ +/*PGR-GNU***************************************************************** + +Copyright (c) 2018 pgRouting developers +Mail: project@pgrouting.org + +------ +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + ********************************************************************PGR-GNU*/ + +BEGIN; +SELECT CASE WHEN min_version('3.8.0') THEN plan(7) ELSE plan(5) END; + +CREATE OR REPLACE FUNCTION types_check() +RETURNS SETOF TEXT AS +$BODY$ +BEGIN + + IF min_version('3.8.0') THEN + RETURN QUERY SELECT has_function('pgr_contraction', ARRAY['text','boolean','integer[]','integer','bigint[]']); + RETURN QUERY SELECT function_returns('pgr_contraction', ARRAY['text','boolean','integer[]','integer','bigint[]'], 'setof record'); + + RETURN QUERY SELECT set_eq( + $$SELECT proargnames FROM pg_proc WHERE proname = 'pgr_contraction'$$, + $$VALUES + ('{"","",max_cycles,forbidden_vertices,directed,type,id,contracted_vertices,source,target,cost}'::TEXT[]), + ('{"",directed,methods,cycles,forbidden,type,id,contracted_vertices,source,target,cost}'::TEXT[]) + $$,'pgr_contraction: Column names'); + + RETURN QUERY SELECT function_types('pgr_contraction', + $$VALUES ('{text,bool,_int4,int4,_int8,text,int8,_int8,int8,int8,float8}'::TEXT[]), + ('{text,_int8,int4,_int8,bool,text,int8,_int8,int8,int8,float8}'::TEXT[]) $$); + + ELSE + + RETURN QUERY SELECT set_eq( + $$SELECT proargnames FROM pg_proc WHERE proname = 'pgr_contraction'$$, + $$VALUES + ('{"", "", "max_cycles", "forbidden_vertices", "directed", "type", "id", "contracted_vertices", "source", "target", "cost"}'::TEXT[]) + $$); + + RETURN QUERY SELECT set_eq( + $$SELECT proallargtypes from pg_proc where proname = 'pgr_contraction'$$, + $$SELECT '{25,1016,23,1016,16,25,20,1016,20,20,701}'::OID[] $$ + ); + +END IF; + +END; +$BODY$ +LANGUAGE plpgsql; + +SELECT has_function('pgr_contraction'); +SELECT has_function('pgr_contraction', ARRAY['text','bigint[]','integer','bigint[]','boolean']); +SELECT function_returns('pgr_contraction', ARRAY['text', 'bigint[]','integer','bigint[]','boolean'], 'setof record'); +SELECT types_check(); + +SELECT finish(); +ROLLBACK; diff --git a/pgtap/trsp/trsp/compare_dijkstra/no_restrictions_undirected.pg b/pgtap/contraction/contractionDeadEnd/edge_cases/compare_dijkstra.pg similarity index 62% rename from pgtap/trsp/trsp/compare_dijkstra/no_restrictions_undirected.pg rename to pgtap/contraction/contractionDeadEnd/edge_cases/compare_dijkstra.pg index ccc6ede82a..d8a8d26e61 100644 --- a/pgtap/trsp/trsp/compare_dijkstra/no_restrictions_undirected.pg +++ b/pgtap/contraction/contractionDeadEnd/edge_cases/compare_dijkstra.pg @@ -1,7 +1,6 @@ - /*PGR-GNU***************************************************************** -Copyright (c) 2018 pgRouting developers +Copyright (c) 2025 pgRouting developers Mail: project@pgrouting.org ------ @@ -19,13 +18,19 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ********************************************************************PGR-GNU*/ BEGIN; -SELECT plan(612); -SET extra_float_digits = -3; +SELECT CASE WHEN min_version('3.8.0') THEN plan(654) ELSE plan(4) END; UPDATE edges SET cost = sign(cost) + 0.001 * id * id, reverse_cost = sign(reverse_cost) + 0.001 * id * id; -SET client_min_messages TO ERROR; --- TEST of deprecated signature -SELECT compare_trsp_dijkstra(18, false); +ALTER TABLE edges ADD is_new BOOLEAN DEFAULT false, ADD contracted_vertices integer[]; +ALTER TABLE vertices ADD is_contracted BOOLEAN DEFAULT false, ADD contracted_vertices integer[]; + +CALL create_contracted_graph(false,'pgr_contractionDeadEnd'); +SELECT check_contracted_graph_deadend(false); +SELECT compare_dijkstra_contraction(false); + +CALL create_contracted_graph(true,'pgr_contractionDeadEnd'); +SELECT check_contracted_graph_deadend(true); +SELECT compare_dijkstra_contraction(true); SELECT finish(); ROLLBACK; diff --git a/pgtap/contraction/contractionDeadEnd/edge_cases/edge_cases.pg b/pgtap/contraction/contractionDeadEnd/edge_cases/edge_cases.pg new file mode 100644 index 0000000000..3575cdce83 --- /dev/null +++ b/pgtap/contraction/contractionDeadEnd/edge_cases/edge_cases.pg @@ -0,0 +1,60 @@ +/*PGR-GNU***************************************************************** + +Copyright (c) 2025 pgRouting developers +Mail: project@pgrouting.org + +------ +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + ********************************************************************PGR-GNU*/ +BEGIN; + +UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost); +SELECT CASE WHEN min_version('3.8.0') THEN plan(128) ELSE plan(1) END; + +CREATE OR REPLACE FUNCTION edge_cases() +RETURNS SETOF TEXT AS +$BODY$ +BEGIN + + IF NOT min_version('3.8.0') THEN + RETURN QUERY + SELECT skip(1, 'pgr_contractionDeadEnd is new on 3.8.0'); + RETURN; + END IF; + + CALL create_deadend_edge_cases(); + + PREPARE graph1(text,text,text) AS + SELECT type, id, contracted_vertices FROM pgr_contractionDeadEnd( + format($$SELECT id, source, target, cost, reverse_cost FROM edges WHERE id IN (%s) ORDER BY id$$, $1), + $3::boolean, $2::INTEGER[]); + + prepare graph(text, text) AS + SELECT * FROM pgr_contractionDeadEnd( + format($$SELECT * FROM graphs WHERE dead_case IN (%1$s) ORDER BY id$$, $1), + $2::boolean); + + RETURN QUERY SELECT deadend_edge_cases('true'); + RETURN QUERY SELECT deadend_edge_cases('false'); + RETURN QUERY SELECT deadend_edge_cases_sampledata('true'); + RETURN QUERY SELECT deadend_edge_cases_sampledata('false'); + +END; +$BODY$ +LANGUAGE plpgsql; + +SELECT edge_cases(); + +SELECT finish(); +ROLLBACK; + diff --git a/pgtap/contraction/contractionDeadEnd/inner_query.pg b/pgtap/contraction/contractionDeadEnd/inner_query.pg new file mode 100644 index 0000000000..2865f0d912 --- /dev/null +++ b/pgtap/contraction/contractionDeadEnd/inner_query.pg @@ -0,0 +1,79 @@ +/*PGR-GNU***************************************************************** + +Copyright (c) 2025 pgRouting developers +Mail: project@pgrouting.org + +------ +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + ********************************************************************PGR-GNU*/ +BEGIN; + +UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost); +SELECT CASE WHEN min_version('3.8.0') THEN plan(115) ELSE plan(1) END; + +CREATE OR REPLACE FUNCTION inner_query() +RETURNS SETOF TEXT AS +$BODY$ +BEGIN + + IF NOT min_version('3.8.0') THEN + RETURN QUERY SELECT skip(1, 'pgr_contractionDeadEnd is new on 3.8.0'); + RETURN; + END IF; + + RETURN QUERY SELECT style_dijkstra('pgr_contractionDeadEnd(', ', true, ARRAY[3]::BIGINT[])'); + RETURN QUERY SELECT style_dijkstra('pgr_contractionDeadEnd(', ', false, ARRAY[3]::BIGINT[])'); + + RETURN QUERY SELECT throws_ok( + $$SELECT * FROM pgr_contractionDeadEnd( + 'SELECT id, source, target, cost, reverse_cost FROM edges', true, ARRAY[ [2,3,4,5], [4,5,6,7] ]::integer[][])$$, + 'XX000', 'One dimension expected', 'Throws because forbidden is 2 dimensions'); + + RETURN QUERY SELECT lives_ok( + $$SELECT * FROM pgr_contractionDeadEnd( + 'SELECT id, source, target, cost, reverse_cost FROM edges', true, ARRAY[ 2 ])$$, + 'Lives when forbidden is not described'); + + RETURN QUERY SELECT lives_ok( + $$SELECT * FROM pgr_contractionDeadEnd('SELECT id, source, target, cost, reverse_cost FROM edges', true, ARRAY[ 12341234567890123 ])$$, + 'Lives when forbidden is not described and its big'); + + RETURN QUERY SELECT lives_ok( + $$SELECT * FROM pgr_contractionDeadEnd( + 'SELECT id, source, target, cost, reverse_cost FROM edges', true, ARRAY[ 2 ]::integer[])$$, + 'Lives when forbidden is integer[]'); + + RETURN QUERY SELECT lives_ok( + $$SELECT * FROM pgr_contractionDeadEnd( + 'SELECT id, source, target, cost, reverse_cost FROM edges', true, ARRAY[ 2 ]::bigint[])$$, + 'Lives when forbidden is bigint[]'); + + RETURN QUERY SELECT lives_ok( + $$SELECT * FROM pgr_contractionDeadEnd( + 'SELECT id, source, target, cost, reverse_cost FROM edges', true, ARRAY[ 2 ]::smallint[])$$, + 'Lives when forbidden is smallint[]'); + + RETURN QUERY SELECT throws_ok( + $$SELECT * FROM pgr_contractionDeadEnd( + 'SELECT id, source, target, cost, reverse_cost FROM edges', true, ARRAY[ 2 ]::float8[])$$, + '42883', 'function pgr_contractiondeadend(unknown, boolean, double precision[]) does not exist', + 'Throws because forbidden is float8[]'); + +END; +$BODY$ +LANGUAGE plpgsql; + +SELECT inner_query(); + +SELECT finish(); +ROLLBACK; diff --git a/pgtap/contraction/contractionDeadEnd/no_crash_test.pg b/pgtap/contraction/contractionDeadEnd/no_crash_test.pg new file mode 100644 index 0000000000..baffa1e70a --- /dev/null +++ b/pgtap/contraction/contractionDeadEnd/no_crash_test.pg @@ -0,0 +1,61 @@ + +/*PGR-GNU***************************************************************** + +Copyright (c) 2025 pgRouting developers +Mail: project@pgrouting.org + +------ +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + ********************************************************************PGR-GNU*/ +BEGIN; + +UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost); +SELECT CASE WHEN min_version('3.8.0') THEN plan(5) ELSE plan(2) END; + +PREPARE edges AS +SELECT id, source, target, cost, reverse_cost FROM edges; + +SELECT isnt_empty('edges', 'Should be not empty to tests be meaningful'); + + +CREATE OR REPLACE FUNCTION test_function() +RETURNS SETOF TEXT AS +$BODY$ +DECLARE +params TEXT[]; +subs TEXT[]; +BEGIN + + IF NOT min_version('3.8.0') THEN + RETURN QUERY SELECT skip(1, 'contraction function/signature is new on 3.8.0'); + RETURN; + END IF; + + params = ARRAY[ + '$$SELECT id, source, target, cost, reverse_cost FROM edges$$' + ]::TEXT[]; + subs = ARRAY[ + 'NULL' + ]::TEXT[]; + + RETURN query SELECT * FROM no_crash_test('pgr_contractionDeadEnd', params, subs); + +END +$BODY$ +LANGUAGE plpgsql VOLATILE; + + +SELECT * FROM test_function(); + +SELECT finish(); +ROLLBACK; diff --git a/pgtap/contraction/contractionDeadEnd/types_check.pg b/pgtap/contraction/contractionDeadEnd/types_check.pg new file mode 100644 index 0000000000..cff291a86e --- /dev/null +++ b/pgtap/contraction/contractionDeadEnd/types_check.pg @@ -0,0 +1,53 @@ +/*PGR-GNU***************************************************************** + +Copyright (c) 2025 pgRouting developers +Mail: project@pgrouting.org + +------ +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + ********************************************************************PGR-GNU*/ +BEGIN; + +SELECT CASE WHEN min_version('3.8.0') THEN plan(5) ELSE plan(1) END; + +CREATE OR REPLACE FUNCTION types_check() +RETURNS SETOF TEXT AS +$BODY$ +BEGIN + + IF NOT min_version('3.8.0') THEN + RETURN QUERY SELECT skip(1,'pgr_contractiondeadend new on version 3.8.0'); + RETURN; + END IF; + + RETURN QUERY SELECT has_function('pgr_contractiondeadend'); + RETURN QUERY SELECT has_function('pgr_contractiondeadend', ARRAY['text','boolean','bigint[]']); + RETURN QUERY SELECT function_returns('pgr_contractiondeadend', ARRAY['text','boolean','bigint[]'], 'setof record'); + + RETURN QUERY SELECT set_eq( + $$SELECT proargnames FROM pg_proc WHERE proname = 'pgr_contractiondeadend'$$, + $$VALUES + ('{"","directed","forbidden","type","id","contracted_vertices","source","target","cost"}'::TEXT[]) + $$); + + RETURN QUERY SELECT function_types('pgr_contractiondeadend', + $$VALUES ('{text,bool,_int8,text,int8,_int8,int8,int8,float8}'::TEXT[]) $$); + +END; +$BODY$ +LANGUAGE plpgsql; + +SELECT types_check(); + +SELECT finish(); +ROLLBACK; diff --git a/pgtap/trsp/trspViaVertices/compare_dijkstra/no_restrictions_undirected.pg b/pgtap/contraction/contractionLinear/edge_cases/compare_dijkstra.pg similarity index 63% rename from pgtap/trsp/trspViaVertices/compare_dijkstra/no_restrictions_undirected.pg rename to pgtap/contraction/contractionLinear/edge_cases/compare_dijkstra.pg index a4a1de5a8d..5944a59332 100644 --- a/pgtap/trsp/trspViaVertices/compare_dijkstra/no_restrictions_undirected.pg +++ b/pgtap/contraction/contractionLinear/edge_cases/compare_dijkstra.pg @@ -1,7 +1,6 @@ - /*PGR-GNU***************************************************************** -Copyright (c) 2018 pgRouting developers +Copyright (c) 2025 pgRouting developers Mail: project@pgrouting.org ------ @@ -19,16 +18,19 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ********************************************************************PGR-GNU*/ BEGIN; - -SELECT plan(1024); -SET client_min_messages TO ERROR; - +SELECT CASE WHEN min_version('3.8.0') THEN plan(654) ELSE plan(4) END; UPDATE edges SET cost = sign(cost) + 0.001 * id * id, reverse_cost = sign(reverse_cost) + 0.001 * id * id; +ALTER TABLE edges ADD is_new BOOLEAN DEFAULT false, ADD contracted_vertices integer[]; +ALTER TABLE vertices ADD is_contracted BOOLEAN DEFAULT false, ADD contracted_vertices integer[]; -SELECT compare_trspViaV_dijstraVia(16, false); +CALL create_contracted_graph(false,'pgr_contractionLinear'); +SELECT check_contracted_graph_linear(false); +SELECT compare_dijkstra_contraction(false); + +CALL create_contracted_graph(true,'pgr_contractionLinear'); +SELECT check_contracted_graph_linear(true); +SELECT compare_dijkstra_contraction(true); --- Finish the tests and clean up. SELECT finish(); ROLLBACK; - diff --git a/pgtap/contraction/contractionLinear/edge_cases/edge_cases.pg b/pgtap/contraction/contractionLinear/edge_cases/edge_cases.pg new file mode 100644 index 0000000000..53dac6839e --- /dev/null +++ b/pgtap/contraction/contractionLinear/edge_cases/edge_cases.pg @@ -0,0 +1,58 @@ +/*PGR-GNU***************************************************************** + +Copyright (c) 2025 pgRouting developers +Mail: project@pgrouting.org + +------ +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + ********************************************************************PGR-GNU*/ +BEGIN; + +UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost); +SELECT CASE WHEN min_version('3.8.0') THEN plan(112) ELSE plan(1) END; + +CREATE OR REPLACE FUNCTION edge_cases() +RETURNS SETOF TEXT AS +$BODY$ +BEGIN + + IF NOT min_version('3.8.0') THEN + RETURN QUERY + SELECT skip(1, 'pgr_contractionLinear is new on 3.8.0'); + RETURN; + END IF; + + CALL create_linear_edge_cases(); + + PREPARE graph1(text,text,text) AS + SELECT type, contracted_vertices,source,target,cost FROM pgr_contractionLinear( + format($$SELECT id, source, target, cost, reverse_cost FROM edges WHERE id IN (%s) ORDER BY id$$, $1), + $3::boolean, $2::INTEGER[]); + + prepare graph(text, text) AS + SELECT * FROM pgr_contractionLinear(format($$SELECT * FROM graphs WHERE dead_case IN (%1$s)$$, $1), $2::boolean); + + RETURN QUERY SELECT linear_edge_cases('true'); + RETURN QUERY SELECT linear_edge_cases('false'); + RETURN QUERY SELECT linear_edge_cases_sampledata('true'); + RETURN QUERY SELECT linear_edge_cases_sampledata('false'); + +END; +$BODY$ +LANGUAGE plpgsql; + +SELECT edge_cases(); + +SELECT finish(); +ROLLBACK; + diff --git a/pgtap/contraction/contractionLinear/inner_query.pg b/pgtap/contraction/contractionLinear/inner_query.pg new file mode 100644 index 0000000000..6dd2e00f27 --- /dev/null +++ b/pgtap/contraction/contractionLinear/inner_query.pg @@ -0,0 +1,79 @@ +/*PGR-GNU***************************************************************** + +Copyright (c) 2025 pgRouting developers +Mail: project@pgrouting.org + +------ +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + ********************************************************************PGR-GNU*/ +BEGIN; + +UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost); +SELECT CASE WHEN min_version('3.8.0') THEN plan(115) ELSE plan(1) END; + +CREATE OR REPLACE FUNCTION inner_query() +RETURNS SETOF TEXT AS +$BODY$ +BEGIN + + IF NOT min_version('3.8.0') THEN + RETURN QUERY SELECT skip(1, 'pgr_contractionLinear new function on 3.8.0'); + RETURN; + END IF; + + RETURN QUERY SELECT style_dijkstra('pgr_contractionLinear(', ', true)'); + RETURN QUERY SELECT style_dijkstra('pgr_contractionLinear(', ', false)'); + + RETURN QUERY SELECT throws_ok( + $$SELECT * FROM pgr_contractionLinear( + 'SELECT id, source, target, cost, reverse_cost FROM edges', true, ARRAY[ [2,3,4,5], [4,5,6,7] ]::integer[][])$$, + 'XX000', 'One dimension expected', 'Throws because forbidden is 2 dimensions'); + + RETURN QUERY SELECT lives_ok( + $$SELECT * FROM pgr_contractionLinear( + 'SELECT id, source, target, cost, reverse_cost FROM edges', true, ARRAY[ 2 ])$$, + 'Lives when forbidden is not described'); + + RETURN QUERY SELECT lives_ok( + $$SELECT * FROM pgr_contractionLinear('SELECT id, source, target, cost, reverse_cost FROM edges', true, ARRAY[ 12341234567890123 ])$$, + 'Lives when forbidden is not described and its big'); + + RETURN QUERY SELECT lives_ok( + $$SELECT * FROM pgr_contractionLinear( + 'SELECT id, source, target, cost, reverse_cost FROM edges', true, ARRAY[ 2 ]::integer[])$$, + 'Lives when forbidden is integer[]'); + + RETURN QUERY SELECT lives_ok( + $$SELECT * FROM pgr_contractionLinear( + 'SELECT id, source, target, cost, reverse_cost FROM edges', true, ARRAY[ 2 ]::bigint[])$$, + 'Lives when forbidden is bigint[]'); + + RETURN QUERY SELECT lives_ok( + $$SELECT * FROM pgr_contractionLinear( + 'SELECT id, source, target, cost, reverse_cost FROM edges', true, ARRAY[ 2 ]::smallint[])$$, + 'Lives when forbidden is smallint[]'); + + RETURN QUERY SELECT throws_ok( + $$SELECT * FROM pgr_contractionLinear( + 'SELECT id, source, target, cost, reverse_cost FROM edges', true, ARRAY[ 2 ]::float8[])$$, + '42883', 'function pgr_contractionlinear(unknown, boolean, double precision[]) does not exist', + 'Throws because forbidden is float8[]'); + +END; +$BODY$ +LANGUAGE plpgsql; + +SELECT inner_query(); + +SELECT finish(); +ROLLBACK; diff --git a/pgtap/contraction/contractionLinear/no_crash_test.pg b/pgtap/contraction/contractionLinear/no_crash_test.pg new file mode 100644 index 0000000000..b1bdda7671 --- /dev/null +++ b/pgtap/contraction/contractionLinear/no_crash_test.pg @@ -0,0 +1,59 @@ +/*PGR-GNU***************************************************************** + +Copyright (c) 2025 pgRouting developers +Mail: project@pgrouting.org + +------ +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + ********************************************************************PGR-GNU*/ +BEGIN; + +UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost); +SELECT CASE WHEN min_version('3.8.0') THEN plan(5) ELSE plan(2) END; + +PREPARE edges AS +SELECT id, source, target, cost, reverse_cost FROM edges; + +SELECT isnt_empty('edges', 'Should be not empty to tests be meaningful'); + + +CREATE OR REPLACE FUNCTION test_function() +RETURNS SETOF TEXT AS +$BODY$ +DECLARE +params TEXT[]; +subs TEXT[]; +BEGIN + IF NOT min_version('3.8.0') THEN + RETURN QUERY SELECT skip(1, 'contraction function/signature is new on 3.8.0'); + RETURN; + END IF; + + params = ARRAY[ + '$$SELECT id, source, target, cost, reverse_cost FROM edges$$' + ]::TEXT[]; + subs = ARRAY[ + 'NULL' + ]::TEXT[]; + + RETURN query SELECT * FROM no_crash_test('pgr_contractionLinear', params, subs); + +END +$BODY$ +LANGUAGE plpgsql VOLATILE; + + +SELECT * FROM test_function(); + +SELECT finish(); +ROLLBACK; diff --git a/pgtap/contraction/contractionLinear/types_check.pg b/pgtap/contraction/contractionLinear/types_check.pg new file mode 100644 index 0000000000..f40ea19975 --- /dev/null +++ b/pgtap/contraction/contractionLinear/types_check.pg @@ -0,0 +1,53 @@ +/*PGR-GNU***************************************************************** + +Copyright (c) 2025 pgRouting developers +Mail: project@pgrouting.org + +------ +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + ********************************************************************PGR-GNU*/ + +BEGIN; +SELECT CASE WHEN min_version('3.8.0') THEN plan(5) ELSE plan(1) END; + +CREATE OR REPLACE FUNCTION types_check() +RETURNS SETOF TEXT AS +$BODY$ +BEGIN + + IF NOT min_version('3.8.0') THEN + RETURN QUERY SELECT skip(1,'pgr_contractionlinear new on version 3.8.0'); + RETURN; + END IF; + + RETURN QUERY SELECT has_function('pgr_contractionlinear'); + RETURN QUERY SELECT has_function('pgr_contractionlinear', ARRAY['text','boolean','bigint[]']); + RETURN QUERY SELECT function_returns('pgr_contractionlinear', ARRAY['text','boolean','bigint[]'], 'setof record'); + + RETURN QUERY SELECT set_eq( + $$SELECT proargnames FROM pg_proc WHERE proname = 'pgr_contractionlinear'$$, + $$VALUES + ('{"",directed,forbidden,type,id,contracted_vertices,source,target,cost}'::TEXT[]) + $$,'pgr_contractionlinear: Column names'); + + RETURN QUERY SELECT function_types('pgr_contractionlinear', + $$VALUES ('{text,bool,_int8,text,int8,_int8,int8,int8,float8}'::TEXT[]) $$); + +END; +$BODY$ +LANGUAGE plpgsql; + +SELECT types_check(); + +SELECT finish(); +ROLLBACK; diff --git a/pgtap/contraction/deadend/directed/big_ids.pg b/pgtap/contraction/deadend/directed/big_ids.pg deleted file mode 100644 index 1709f50444..0000000000 --- a/pgtap/contraction/deadend/directed/big_ids.pg +++ /dev/null @@ -1,138 +0,0 @@ - -/*PGR-GNU***************************************************************** - -Copyright (c) 2018 pgRouting developers -Mail: project@pgrouting.org - ------- -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - ********************************************************************PGR-GNU*/ -BEGIN; - -UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost); -SELECT plan(6); - -UPDATE edges -SET id = id + POWER(10, 8), - source = source + POWER(10, 8), - target = target + POWER(10, 8); - - --- input: 5 <-> 6, forbidden = 20 --- output: 2{1} ---Checking dead end contraction with invalid forbidden vertices -PREPARE q1 AS -SELECT * FROM pgr_contraction( - $$SELECT id, source, target, cost, reverse_cost FROM edges - WHERE id = 100000005$$, - ARRAY[1]::integer[], 1, ARRAY[20]::BIGINT[], true); - -SELECT set_eq('q1', - $$SELECT - 'v'::CHAR AS type, - 100000011::BIGINT AS id, - ARRAY[100000010]::BIGINT[] AS contracted_vertices, - -1::BIGINT AS source, - -1::BIGINT AS target, - -1::FLOAT AS cost$$); - --- Checking dead end contraction with no dead end node --- input: 10->6 6<->7, 7<->11, 10->11 --q1 --- output: -PREPARE q2 AS -SELECT * FROM pgr_contraction( - $$SELECT id, source, target, cost, reverse_cost FROM edges - WHERE id IN (100000002, 100000004, 100000005, 100000008)$$, - ARRAY[1]::integer[], 1, ARRAY[]::BIGINT[], true); - -SELECT is_empty('q2'); - --- input: 5 <-> 6 --- outputt: 6{5} ---Checking dead end contraction for single dead end node -PREPARE q3 AS -SELECT * FROM pgr_contraction( - $$SELECT id, source, target, cost, reverse_cost FROM edges - WHERE id = 100000001$$, - ARRAY[1]::integer[], 1, ARRAY[]::BIGINT[], true); - -SELECT set_eq('q3', - $$SELECT - 'v'::CHAR AS type, - 100000006::BIGINT AS id, - ARRAY[100000005]::BIGINT[] AS contracted_vertices, - -1::BIGINT AS source, - -1::BIGINT AS target, - -1::FLOAT AS cost$$); - --- Checking dead end contraction for two dead end nodes --- input: 6 <- 10 <- 15 --- output: 15{6, 10} -PREPARE q4 AS -SELECT * FROM pgr_contraction( - $$SELECT id, source, target, cost, reverse_cost FROM edges - WHERE id IN (100000002, 100000003)$$, - ARRAY[1]::integer[], 1, ARRAY[]::BIGINT[], true); - -SELECT set_eq('q4', - $$SELECT - 'v'::CHAR AS type, - 100000006::BIGINT AS id, - ARRAY[100000010,100000015]::BIGINT[] AS contracted_vertices, - -1::BIGINT AS source, - -1::BIGINT AS target, - -1::FLOAT AS cost$$); - ---Checking dead end contraction for multiple dead end nodes --- input: 5 <-> 6 <- 10 <- 15 --- output: 6{5, 10, 15} -PREPARE q5 AS -SELECT * FROM pgr_contraction( - $$SELECT id, source, target, cost, reverse_cost FROM edges - WHERE id IN (100000001, 100000002, 100000003)$$, - ARRAY[1]::integer[], 1, ARRAY[]::BIGINT[], true); - -PREPARE sol5 AS -SELECT type, id, contracted_vertices, source, target, cost -FROM (VALUES - ('v'::CHAR, 100000006::BIGINT, ARRAY[100000005, 100000010, 100000015]::BIGINT[], -1::BIGINT, -1::BIGINT, -1::FLOAT) -) AS t(type, id, contracted_vertices, source, target, cost ); - -SELECT set_eq('q5', 'sol5'); - --- all table --- 15{14} --- 16{17} --- 10{13} --- 5{7,8} --- 2{1} --- Checking dead end contraction for sample data -PREPARE q6 AS -SELECT * FROM pgr_contraction( - 'SELECT id, source, target, cost, reverse_cost FROM edges', - ARRAY[1]::integer[], 1, ARRAY[]::BIGINT[], true); - -PREPARE sol6 AS -SELECT type, id, contracted_vertices, source, target, cost -FROM (VALUES - ('v'::CHAR, 100000004::BIGINT, ARRAY[100000002]::BIGINT[], -1::BIGINT, -1::BIGINT, -1::FLOAT), - ('v', 100000007, ARRAY[100000001,100000003], -1, -1, -1), - ('v', 100000006, ARRAY[100000005], -1, -1, -1), - ('v', 100000008, ARRAY[100000009], -1, -1, -1), - ('v', 100000014, ARRAY[100000013], -1, -1, -1) -) AS t(type, id, contracted_vertices, source, target, cost ); - -SELECT set_eq('q6', 'sol6'); - -SELECT finish(); -ROLLBACK; diff --git a/pgtap/contraction/types_check.pg b/pgtap/contraction/types_check.pg deleted file mode 100644 index 8dd9524a77..0000000000 --- a/pgtap/contraction/types_check.pg +++ /dev/null @@ -1,39 +0,0 @@ - -/*PGR-GNU***************************************************************** - -Copyright (c) 2018 pgRouting developers -Mail: project@pgrouting.org - ------- -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - ********************************************************************PGR-GNU*/ -BEGIN; -SELECT plan(5); - -SELECT has_function('pgr_contraction'); -SELECT has_function('pgr_contraction', ARRAY['text','bigint[]','integer','bigint[]','boolean']); -SELECT function_returns('pgr_contraction', ARRAY['text', 'bigint[]','integer','bigint[]','boolean'], 'setof record'); - -SELECT set_eq( - $$SELECT proargnames FROM pg_proc WHERE proname = 'pgr_contraction'$$, - $$VALUES - ('{"", "", "max_cycles", "forbidden_vertices", "directed", "type", "id", "contracted_vertices", "source", "target", "cost"}'::TEXT[]) - $$); - -SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_contraction'$$, - $$SELECT '{25,1016,23,1016,16,25,20,1016,20,20,701}'::OID[] $$ -); - -SELECT finish(); -ROLLBACK; diff --git a/pgtap/dijkstra/driving_distance/edge_cases/issue_519.pg b/pgtap/dijkstra/driving_distance/edge_cases/issue_519.pg index 16f4d6c9b4..53660738b0 100644 --- a/pgtap/dijkstra/driving_distance/edge_cases/issue_519.pg +++ b/pgtap/dijkstra/driving_distance/edge_cases/issue_519.pg @@ -19,7 +19,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. BEGIN; UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost); -SELECT plan(3); +SELECT CASE WHEN NOT min_version('3.6.0') AND min_lib_version('5.0.0') THEN plan(1) ELSE plan(3) END; CREATE OR REPLACE FUNCTION test_function() RETURNS SETOF TEXT AS $BODY$ @@ -41,6 +41,11 @@ BEGIN RETURN QUERY SELECT bag_has('q4', 'q2', '2: DD from [1, 5, 25] should have results of DD from 5'); RETURN QUERY SELECT bag_has('q4', 'q3', '3: DD from [1, 5, 25] should have results of DD from 25'); ELSE + IF min_lib_version('5.0.0') THEN + RETURN QUERY SELECT skip(1, 'Internal function deprecated on 3.6.0 and removed on 5.0.0'); + ELSE + --Internal function deprecated on 3.6.0 + SET client_min_messages TO WARNING; PREPARE q1 AS SELECT 1 AS from_v, node, edge, cost, agg_cost FROM pgr_drivingDistance('SELECT id, source, target, cost FROM edges', 1, 3.5); @@ -56,6 +61,8 @@ BEGIN RETURN QUERY SELECT bag_has('q4', 'q1', '1: DD from [1, 5, 25] should have results of DD from 1'); RETURN QUERY SELECT bag_has('q4', 'q2', '2: DD from [1, 5, 25] should have results of DD from 5'); RETURN QUERY SELECT bag_has('q4', 'q3', '3: DD from [1, 5, 25] should have results of DD from 25'); + SET client_min_messages TO NOTICE; + END IF; END IF; END; $BODY$ diff --git a/pgtap/dijkstra/driving_distance/inner_query.pg b/pgtap/dijkstra/driving_distance/inner_query.pg index 58b147ac00..957df4eb14 100644 --- a/pgtap/dijkstra/driving_distance/inner_query.pg +++ b/pgtap/dijkstra/driving_distance/inner_query.pg @@ -20,16 +20,23 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. BEGIN; UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost); -SELECT plan(108); +SELECT CASE WHEN NOT min_version('3.6.0') AND min_lib_version('5.0.0') THEN plan(1) ELSE plan(108) END; --- ONE SOURCE -SELECT style_dijkstra('pgr_drivingdistance(', ',2, 1, true)'); - --- MANY SOURCES -SELECT style_dijkstra('pgr_drivingdistance(', ',ARRAY[2,3], 1, true)'); - +CREATE OR REPLACE FUNCTION inner_query() RETURNS SETOF TEXT AS +$BODY$ +BEGIN + IF NOT min_version('3.6.0') AND min_lib_version('5.0.0') THEN + RETURN NEXT skip(1, 'Internal function deprecated on 3.6.0 and removed on 5.0.0'); + RETURN; + END IF; + RETURN QUERY SELECT style_dijkstra('pgr_drivingdistance(', ',2, 1, true)'); + RETURN QUERY SELECT style_dijkstra('pgr_drivingdistance(', ',ARRAY[2,3], 1, true)'); +END; +$BODY$ +LANGUAGE plpgsql; +SELECT inner_query(); SELECT finish(); ROLLBACK; diff --git a/pgtap/dijkstra/driving_distance/no_crash_test.pg b/pgtap/dijkstra/driving_distance/no_crash_test.pg index ea2324d34d..890633d90e 100644 --- a/pgtap/dijkstra/driving_distance/no_crash_test.pg +++ b/pgtap/dijkstra/driving_distance/no_crash_test.pg @@ -20,7 +20,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. BEGIN; UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost); -SELECT plan(34); +SELECT CASE WHEN NOT min_version('3.6.0') AND min_lib_version('5.0.0') THEN plan(1) ELSE plan(34) END; PREPARE edges AS SELECT id, source, target, cost, reverse_cost FROM edges; @@ -39,6 +39,11 @@ DECLARE params TEXT[]; subs TEXT[]; BEGIN + IF NOT min_version('3.6.0') AND min_lib_version('5.0.0') THEN + RETURN NEXT skip(1, 'Internal function deprecated on 3.6.0 and removed on 5.0.0'); + RETURN; + END IF; + -- 1 to distance params = ARRAY['$$SELECT id, source, target, cost, reverse_cost FROM edges$$','1', '1.3::FLOAT']::TEXT[]; subs = ARRAY[ diff --git a/pgtap/dijkstra/driving_distance/types_check.pg b/pgtap/dijkstra/driving_distance/types_check.pg index 0068a8629f..e3dc5e85c7 100644 --- a/pgtap/dijkstra/driving_distance/types_check.pg +++ b/pgtap/dijkstra/driving_distance/types_check.pg @@ -29,49 +29,38 @@ SELECT has_function('pgr_drivingdistance', ARRAY['text','anyarray','double preci SELECT function_returns('pgr_drivingdistance', ARRAY['text','bigint','double precision','boolean'],'setof record'); SELECT function_returns('pgr_drivingdistance', ARRAY['text','anyarray','double precision','boolean','boolean'],'setof record'); -CREATE OR REPLACE FUNCTION types_check() -RETURNS SETOF TEXT AS -$BODY$ -BEGIN +SELECT CASE +WHEN (min_version('3.6.0')) THEN + collect_tap( + set_eq( + $$SELECT proargnames from pg_proc where proname = 'pgr_drivingdistance'$$, + $$VALUES + ('{"","","","directed","seq","depth","start_vid","pred","node","edge","cost","agg_cost"}'::TEXT[]), + ('{"","","","directed","equicost","seq","depth","start_vid","pred","node","edge","cost","agg_cost"}'::TEXT[]) + $$), -IF (min_version('3.6.0')) THEN -RETURN QUERY -SELECT set_eq( - $$SELECT proargnames from pg_proc where proname = 'pgr_drivingdistance'$$, - $$VALUES - ('{"","","","directed","seq","depth","start_vid","pred","node","edge","cost","agg_cost"}'::TEXT[]), - ('{"","","","directed","equicost","seq","depth","start_vid","pred","node","edge","cost","agg_cost"}'::TEXT[]) - $$); + set_eq( + $$SELECT proallargtypes from pg_proc where proname = 'pgr_drivingdistance'$$, + $$VALUES + ('{25,20,701,16,20,20,20,20,20,20,701,701}'::OID[]), + ('{25,2277,701,16,16,20,20,20,20,20,20,701,701}'::OID[]) + $$)) + ELSE + collect_tap( + set_eq( + $$SELECT proargnames from pg_proc where proname = 'pgr_drivingdistance'$$, + $$VALUES + ('{"","","","directed","seq","node","edge","cost","agg_cost"}'::TEXT[]), + ('{"","","","directed","equicost","seq","from_v","node","edge","cost","agg_cost"}'::TEXT[]) + $$), -RETURN QUERY -SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_drivingdistance'$$, - $$VALUES - ('{25,20,701,16,20,20,20,20,20,20,701,701}'::OID[]), - ('{25,2277,701,16,16,20,20,20,20,20,20,701,701}'::OID[]) - $$); -ELSE --- old signatures -RETURN QUERY -SELECT set_eq( - $$SELECT proargnames from pg_proc where proname = 'pgr_drivingdistance'$$, - $$VALUES - ('{"","","","directed","seq","node","edge","cost","agg_cost"}'::TEXT[]), - ('{"","","","directed","equicost","seq","from_v","node","edge","cost","agg_cost"}'::TEXT[]) - $$); - -RETURN QUERY -SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_drivingdistance'$$, - $$VALUES - ('{25,20,701,16,23,20,20,701,701}'::OID[]), - ('{25,2277,701,16,16,23,20,20,20,701,701}'::OID[]) - $$); -END IF; + set_eq( + $$SELECT proallargtypes from pg_proc where proname = 'pgr_drivingdistance'$$, + $$VALUES + ('{25,20,701,16,23,20,20,701,701}'::OID[]), + ('{25,2277,701,16,16,23,20,20,20,701,701}'::OID[]) + $$)) END; -$BODY$ -LANGUAGE plpgsql; -SELECT * FROM types_check(); SELECT finish(); ROLLBACK; diff --git a/pgtap/ksp/withPointsKSP/edge_cases/point_in_vertex.pg b/pgtap/ksp/withPointsKSP/edge_cases/point_in_vertex.pg new file mode 100644 index 0000000000..9dcd0f7d6d --- /dev/null +++ b/pgtap/ksp/withPointsKSP/edge_cases/point_in_vertex.pg @@ -0,0 +1,186 @@ +/*PGR-GNU***************************************************************** + +Copyright (c) 2024 pgRouting developers +Mail: project@pgrouting.org + +------ +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + ********************************************************************PGR-GNU*/ +BEGIN; + +SET extra_float_digits=-3; + +SELECT CASE WHEN min_version('3.6.0') THEN plan(38) ELSE plan(1) END; + +CREATE VIEW four_edges AS +SELECT * FROM edges WHERE id IN (1,4,10,14); + +CREATE OR REPLACE FUNCTION test_vertex_points() RETURNS SETOF TEXT AS +$BODY$ +BEGIN + + IF NOT min_version('3.6.0') THEN + RETURN QUERY SELECT skip(1, 'Signature added on 3.6.0'); + RETURN; + END IF; + + +PREPARE dijkstra1(BIGINT, BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_KSP( + $$SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $1, $2, 3, true) WHERE edge < 0; + +-- its a straigh line and one extreme are reachable +RETURN QUERY SELECT results_eq($$dijkstra1(5,9)$$, ARRAY[4]::TEXT[]); +RETURN QUERY SELECT results_eq($$dijkstra1(9,5)$$, ARRAY[4]::TEXT[]); + + +/* Points + midpoint of edge 1 (-1 by default) +*/ +PREPARE expectedCost1(BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_withPointsKSP( + $$ SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$ SELECT 1 AS edge_id, 0.5::float AS fraction$$, + -1, $1, 3, 'r', true) WHERE edge < 0; + +RETURN QUERY SELECT results_eq($$expectedCost1(6)$$, ARRAY[0.5]::TEXT[], 'Cost from midpoint on 1 (-1 default) to 6'); +RETURN QUERY SELECT results_eq($$expectedCost1(7)$$, ARRAY[1.5]::TEXT[] , 'Cost from midpoint on 1 to 7'); +RETURN QUERY SELECT results_eq($$expectedCost1(8)$$, ARRAY[2.5]::TEXT[] , 'Cost from midpoint on 1 to 8'); +RETURN QUERY SELECT results_eq($$expectedCost1(9)$$, ARRAY[3.5]::TEXT[] , 'Cost from midpoint on 1 to 9'); + +/* Points + midpoint of edge 1 (-2 assigned) +*/ +PREPARE expectedCost2(BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_withPointsKSP( + $$ SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$ SELECT 2 AS pid, 1 AS edge_id, 0.5::float AS fraction$$, + -2, $1, 3, 'r', true) WHERE edge < 0; + +RETURN QUERY SELECT results_eq($$expectedCost2(6)$$, $$expectedCost1(6)$$, 'Cost from midpoint on 1 (-2 assigned) to 6'); +RETURN QUERY SELECT results_eq($$expectedCost2(7)$$, $$expectedCost1(7)$$, 'Cost from midpoint on 1 to 7'); +RETURN QUERY SELECT results_eq($$expectedCost2(8)$$, $$expectedCost1(8)$$, 'Cost from midpoint on 1 to 8'); +RETURN QUERY SELECT results_eq($$expectedCost2(9)$$, $$expectedCost1(9)$$, 'Cost from midpoint on 1 to 9'); + +/* UNION ALL data is not sorted + source point of edge 10 (-1 by default) + midpoint of edge 1 (-2 by default) +*/ +PREPARE expectedCost3(BIGINT, BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_withPointsKSP( + $$SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$SELECT 10 AS edge_id, 0::float AS fraction UNION ALL SELECT 1, 0.5 $$, + $1, $2, 3, 'r', true) WHERE edge < 0; + +RETURN QUERY SELECT results_eq($$expectedCost3(-2,6)$$, $$expectedCost1(6)$$, '(UNION ALL) Cost from midpoint on 1 (-2 default) to 6'); +RETURN QUERY SELECT results_eq($$expectedCost3(-2,7)$$, $$expectedCost1(7)$$, 'Cost from midpoint on 1 to 7'); +RETURN QUERY SELECT results_eq($$expectedCost3(-2,8)$$, $$expectedCost1(8)$$, 'Cost from midpoint on 1 to 8'); +RETURN QUERY SELECT results_eq($$expectedCost3(-2,9)$$, $$expectedCost1(9)$$, 'Cost from midpoint on 1 to 9'); + +RETURN QUERY SELECT CASE WHEN min_version('3.7.1') +THEN + collect_tap( + set_eq($$expectedCost3(-1,9)$$, $$dijkstra1(7,9)$$, 'Cost from target on 10 (-1 default, aka 7) to 9'), + set_eq($$expectedCost3(-1,8)$$, $$dijkstra1(7,8)$$, 'Cost from target on 10 to 8'), + set_eq($$expectedCost3(-1,7)$$, ARRAY[0]::TEXT[], 'Cost from target on 10 to 7') + ) +ELSE skip('Fix implemented on 3.7.1',3) +END; + +/* UNION data is sorted + midpoint of edge 1 (-1 by default) + source point of edge 10 (-2 by default) +*/ +DEALLOCATE PREPARE expectedCost3; +PREPARE expectedCost3(BIGINT, BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_withPointsKSP( + $$SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$SELECT 10 AS edge_id, 0::float AS fraction UNION SELECT 1, 0.5 $$, + $1, $2, 3, 'r', true) WHERE edge < 0; + +RETURN QUERY SELECT results_eq($$expectedCost3(-1,6)$$, $$expectedCost1(6)$$, '(UNION) Cost from midpoint on 1 (-2 default) to 6'); +RETURN QUERY SELECT results_eq($$expectedCost3(-1,7)$$, $$expectedCost1(7)$$, 'Cost from midpoint on 1 to 7'); +RETURN QUERY SELECT results_eq($$expectedCost3(-1,8)$$, $$expectedCost1(8)$$, 'Cost from midpoint on 1 to 8'); +RETURN QUERY SELECT results_eq($$expectedCost3(-1,9)$$, $$expectedCost1(9)$$, 'Cost from midpoint on 1 to 9'); + +RETURN QUERY SELECT CASE WHEN min_version('3.7.1') +THEN + collect_tap( + set_eq($$expectedCost3(-2,9)$$, $$dijkstra1(7,9)$$, 'Cost from target on 10 (-1 default, aka 7) to 9'), + set_eq($$expectedCost3(-2,8)$$, $$dijkstra1(7,8)$$, 'Cost from target on 10 to 8'), + set_eq($$expectedCost3(-2,7)$$, ARRAY[0]::TEXT[], 'Cost from target on 10 to 7') + ) +ELSE skip('Fix implemented on 3.7.1',3) +END; + +/* VALUES data is not sorted + midpoint of edge 1 (-1 by default) + source point of edge 10 (-2 by default) +*/ +DEALLOCATE PREPARE expectedCost3; +PREPARE expectedCost3(BIGINT, BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_withPointsKSP( + $$SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$SELECT * FROM (VALUES (1,0.5), (10, 0)) AS t (edge_id, fraction)$$, + $1, $2, 3, 'r', true) WHERE edge < 0; + +RETURN QUERY SELECT results_eq($$expectedCost3(-1,6)$$, $$expectedCost1(6)$$, '(VALUES) Cost from midpoint on 1 (-1 default) to 6'); +RETURN QUERY SELECT results_eq($$expectedCost3(-1,7)$$, $$expectedCost1(7)$$, 'Cost from midpoint on 1 to 7'); +RETURN QUERY SELECT results_eq($$expectedCost3(-1,8)$$, $$expectedCost1(8)$$, 'Cost from midpoint on 1 to 8'); +RETURN QUERY SELECT results_eq($$expectedCost3(-1,9)$$, $$expectedCost1(9)$$, 'Cost from midpoint on 1 to 9'); + +RETURN QUERY SELECT CASE WHEN min_version('3.7.1') +THEN + collect_tap( + set_eq($$expectedCost3(-2,9)$$, $$dijkstra1(7,9)$$, 'Cost from target on 10 (-1 default, aka 7) to 9'), + set_eq($$expectedCost3(-2,8)$$, $$dijkstra1(7,8)$$, 'Cost from target on 10 to 8'), + set_eq($$expectedCost3(-2,7)$$, ARRAY[0]::TEXT[], 'Cost from target on 10 to 7') + ) +ELSE skip('Fix implemented on 3.7.1',3) +END; + +/* Points + midpoint of edge 1 (-2 assigned) + source point of edge 10 (-1 assigned) +*/ +DEALLOCATE PREPARE expectedCost3; +PREPARE expectedCost3(BIGINT, BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_withPointsKSP( + $$SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$SELECT 2 AS pid, 1 AS edge_id, 0.5::float AS fraction UNION SELECT 1, 10, 0 $$, + $1, $2, 3, 'r', true) WHERE edge < 0; + +RETURN QUERY SELECT results_eq($$expectedCost3(-2,6)$$, $$expectedCost1(6)$$, '(ASSIGNED) Cost from midpoint on 1 (-2 default) to 6'); +RETURN QUERY SELECT results_eq($$expectedCost3(-2,7)$$, $$expectedCost1(7)$$, 'Cost from midpoint on 1 to 7'); +RETURN QUERY SELECT results_eq($$expectedCost3(-2,8)$$, $$expectedCost1(8)$$, 'Cost from midpoint on 1 to 8'); +RETURN QUERY SELECT results_eq($$expectedCost3(-2,9)$$, $$expectedCost1(9)$$, 'Cost from midpoint on 1 to 9'); + +RETURN QUERY SELECT CASE WHEN min_version('3.7.1') +THEN + collect_tap( + set_eq($$expectedCost3(-1,9)$$, $$dijkstra1(7,9)$$, 'Cost from target on 10 (-1 default, aka 7) to 9'), + set_eq($$expectedCost3(-1,8)$$, $$dijkstra1(7,8)$$, 'Cost from target on 10 to 8'), + set_eq($$expectedCost3(-1,7)$$, ARRAY[0]::TEXT[], 'Cost from target on 10 to 7') + ) +ELSE skip('Fix implemented on 3.7.1',3) +END; + +END +$BODY$ +LANGUAGE plpgsql VOLATILE; + +SELECT test_vertex_points(); + +SELECT finish(); +ROLLBACK; diff --git a/pgtap/metrics/betweennessCentrality/edge_cases.pg b/pgtap/metrics/betweennessCentrality/edge_cases.pg index d4582a4889..14bc11acb3 100644 --- a/pgtap/metrics/betweennessCentrality/edge_cases.pg +++ b/pgtap/metrics/betweennessCentrality/edge_cases.pg @@ -75,7 +75,7 @@ RETURN QUERY SELECT lives_ok('idless4_q'); RETURN QUERY -SELECT results_eq('idless4_q', 'idless4_r'); +SELECT results_eq('idless4_q', 'idless4_r', 'test 4'); PREPARE idless3_q AS @@ -95,7 +95,7 @@ RETURN QUERY SELECT lives_ok('idless3_q'); RETURN QUERY -SELECT results_eq('idless3_q', 'idless3_r'); +SELECT results_eq('idless3_q', 'idless3_r', 'test 6'); PREPARE idless2_q AS SELECT * FROM pgr_betweennessCentrality( @@ -120,7 +120,7 @@ SELECT results_eq('idless2_q', 'idless2_r'); PREPARE idless5ud_q AS SELECT * FROM pgr_betweennessCentrality( 'SELECT id, source, target, cost, reverse_cost - FROM edges WHERE id < 5', directed => false ) ORDER BY vid; + FROM edges WHERE id < 5', directed => false ) ORDER BY vid; PREPARE idless5ud_r AS SELECT * FROM (VALUES @@ -135,18 +135,20 @@ RETURN QUERY SELECT lives_ok('idless5ud_q'); RETURN QUERY -SELECT results_eq('idless5ud_q', 'idless5ud_r'); +SELECT results_eq('idless5ud_q', 'idless5ud_r', 'test 10'); + PREPARE idless4ud_q AS SELECT * FROM pgr_betweennessCentrality( 'SELECT id, source, target, cost, reverse_cost - FROM edges WHERE id < 4', directed => false ) ORDER BY vid; + FROM edges WHERE id < 4', directed => false) ORDER BY vid; PREPARE idless4ud_r AS SELECT * FROM (VALUES (5::BIGINT , 0::FLOAT), (6 , 0.6666666666666666), - (10 , 0.6666666666666666), (15 , 0)) + (10 , 0.6666666666666666), + (15 , 0)) AS t(vid, centrality); RETURN QUERY @@ -159,7 +161,7 @@ SELECT results_eq('idless4ud_q', 'idless4ud_r'); PREPARE idless3ud_q AS SELECT * FROM pgr_betweennessCentrality( 'SELECT id, source, target, cost, reverse_cost - FROM edges WHERE id < 3', directed => false ) ORDER BY vid; + FROM edges WHERE id < 3', directed => false) ORDER BY vid; PREPARE idless3ud_r AS SELECT * FROM (VALUES @@ -172,7 +174,7 @@ RETURN QUERY SELECT lives_ok('idless3ud_q'); RETURN QUERY -SELECT results_eq('idless3ud_q', 'idless3ud_r'); +SELECT results_eq('idless3ud_q', 'idless3ud_r', 'test 14'); PREPARE idless2ud_q AS SELECT * FROM pgr_betweennessCentrality( @@ -190,7 +192,7 @@ RETURN QUERY SELECT lives_ok('idless2ud_q'); RETURN QUERY -SELECT results_eq('idless2ud_q', 'idless2ud_r'); +SELECT results_eq('idless2ud_q', 'idless2ud_r', 'test 16'); /* Explicit Directed Cases */ @@ -198,7 +200,7 @@ SELECT results_eq('idless2ud_q', 'idless2ud_r'); PREPARE idless5d_q AS SELECT * FROM pgr_betweennessCentrality( 'SELECT id, source, target, cost, reverse_cost - FROM edges WHERE id < 5', directed => true ) ORDER BY vid; + FROM edges WHERE id < 5', directed => true ) ORDER BY vid; PREPARE idless5d_r AS SELECT * FROM (VALUES @@ -213,13 +215,13 @@ RETURN QUERY SELECT lives_ok('idless5d_q'); RETURN QUERY -SELECT results_eq('idless5d_q', 'idless5d_r'); +SELECT results_eq('idless5d_q', 'idless5d_r', 'test 18'); PREPARE idless4d_q AS SELECT * FROM pgr_betweennessCentrality( 'SELECT id, source, target, cost, reverse_cost - FROM edges WHERE id < 4', directed => true ) ORDER BY vid; + FROM edges WHERE id < 4', directed => true) ORDER BY vid; PREPARE idless4d_r AS SELECT * FROM (VALUES @@ -233,13 +235,13 @@ RETURN QUERY SELECT lives_ok('idless4d_q'); RETURN QUERY -SELECT results_eq('idless4d_q', 'idless4d_r'); +SELECT results_eq('idless4d_q', 'idless4d_r', 'test 20'); PREPARE idless3d_q AS SELECT * FROM pgr_betweennessCentrality( 'SELECT id, source, target, cost, reverse_cost - FROM edges WHERE id < 3', directed => true ) ORDER BY vid; + FROM edges WHERE id < 3', directed => true) ORDER BY vid; PREPARE idless3d_r AS SELECT * FROM (VALUES @@ -252,7 +254,8 @@ RETURN QUERY SELECT lives_ok('idless3d_q'); RETURN QUERY -SELECT results_eq('idless3d_q', 'idless3d_r'); +SELECT results_eq('idless3d_q', 'idless3d_r', 'test 22'); + PREPARE idless2d_q AS SELECT * FROM pgr_betweennessCentrality( @@ -270,7 +273,7 @@ RETURN QUERY SELECT lives_ok('idless2d_q'); RETURN QUERY -SELECT results_eq('idless2d_q', 'idless2d_r'); +SELECT results_eq('idless2d_q', 'idless2d_r', 'test 24'); END; $BODY$ diff --git a/pgtap/topology/degree/edge_cases.pg b/pgtap/metrics/degree/edge_cases.pg similarity index 55% rename from pgtap/topology/degree/edge_cases.pg rename to pgtap/metrics/degree/edge_cases.pg index a762c24828..76a75312a8 100644 --- a/pgtap/topology/degree/edge_cases.pg +++ b/pgtap/metrics/degree/edge_cases.pg @@ -20,7 +20,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. BEGIN; UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost); -SELECT CASE WHEN min_version('3.4.0') THEN plan(12) ELSE plan(1) END; +SELECT CASE WHEN min_version('3.8.0') THEN plan(23) WHEN min_version('3.4.0') THEN plan(16) ELSE plan(1) END; CREATE OR REPLACE FUNCTION edge_cases() @@ -59,11 +59,13 @@ BEGIN SELECT * FROM pgr_degree('edges','SELECT id, out_edges FROM vertices'); RETURN QUERY SELECT lives_ok('query_1', 'Good execution'); - RETURN QUERY SELECT throws_ok('query_2', 'P0001', 'Missing column', 'Incomlete data -> throws'); - RETURN QUERY SELECT throws_ok('query_3', 'P0001', 'Missing column', 'Incomlete data -> throws'); - RETURN QUERY SELECT throws_ok('query_4', 'P0001', 'Missing column', 'Incomlete data -> throws'); + RETURN QUERY SELECT column_missing('query_2', 'id'); + RETURN QUERY SELECT column_missing('query_3', 'in_edges'); + RETURN QUERY SELECT column_missing('query_4', 'id'); RETURN QUERY SELECT lives_ok('query_5', 'Missing column out_edges but usable'); RETURN QUERY SELECT lives_ok('query_5', 'Missing column in_edges but usable'); + RETURN QUERY SELECT wrong_relation($$SELECT * FROM pgr_degree('SELECT id FROM foo', 'SELECT * FROM vertices')$$, 'foo'); + RETURN QUERY SELECT wrong_relation($$SELECT * FROM pgr_degree('SELECT id FROM edges', 'SELECT * FROM bar')$$, 'bar'); PREPARE subedges AS SELECT id FROM edges WHERE id < 17; @@ -90,12 +92,55 @@ BEGIN SELECT * FROM pgr_degree('subedges','SELECT id, out_edges FROM vertices'); RETURN QUERY SELECT lives_ok('query_7', 'Good execution'); - RETURN QUERY SELECT throws_ok('query_8', 'P0001', 'Missing column', 'Incomlete data -> throws'); - RETURN QUERY SELECT throws_ok('query_9', 'P0001', 'Missing column', 'Incomlete data -> throws'); - RETURN QUERY SELECT throws_ok('query_10', 'P0001', 'Missing column', 'Incomlete data -> throws'); + RETURN QUERY SELECT column_missing('query_8', 'id'); + RETURN QUERY SELECT column_missing('query_9', 'in_edges'); + RETURN QUERY SELECT column_missing('query_10', 'id'); RETURN QUERY SELECT lives_ok('query_11', 'Missing column out_edges but usable'); RETURN QUERY SELECT lives_ok('query_12', 'Missing column in_edges but usable'); + PREPARE empty_vertices AS + SELECT * FROM pgr_degree('SELECT id FROM edges', 'SELECT * FROM vertices WHERE id > 20'); + RETURN QUERY SELECT is_empty('empty_vertices', 'Empty vertices give empty result'); + + PREPARE empty_graph AS + SELECT * FROM pgr_degree('SELECT id FROM edges WHERE id > 20', 'SELECT * FROM vertices') ORDER BY node; + + IF min_version('3.8.0') THEN + RETURN QUERY + SELECT is_empty('empty_graph', 'is empty: Empty edges give 0 count on all vertices so none is in result'); + ELSE + RETURN QUERY + SELECT results_eq('empty_graph', 'SELECT generate_series (1,17)::BIGINT, 0::BIGINT', 'Empty edges give 0 count'); + END IF; + + IF NOT min_version('3.8.0') THEN RETURN; END IF; + + -- TESTS FOR edges_sql only + + PREPARE edges_1 AS + SELECT id, source, target FROM edges; + + PREPARE subedges_1 AS + SELECT id, source, target FROM edges WHERE id < 17; + + RETURN QUERY + SELECT set_eq($$SELECT * FROM pgr_degree('edges_1')$$, 'query_1', + 'degree(edges) = degree(edges,vertices)'); + + RETURN QUERY + SELECT set_eq($$SELECT * FROM pgr_degree('subedges_1')$$, 'query_7', + 'degree(subedges) = degree(subedges,vertices)'); + + RETURN QUERY SELECT lives_ok($$SELECT * FROM pgr_degree('SELECT id, source, target FROM edges')$$, 'good execution'); + RETURN QUERY SELECT throws_ok($$SELECT * FROM pgr_degree('SELECT source, target FROM edges')$$, + '42703','column "id" does not exist'); + RETURN QUERY SELECT throws_ok($$SELECT * FROM pgr_degree('SELECT id, target FROM edges')$$, + '42703','column "source" does not exist'); + RETURN QUERY SELECT throws_ok($$SELECT * FROM pgr_degree('SELECT id, source FROM edges')$$, + '42703','column "target" does not exist'); + RETURN QUERY SELECT wrong_relation($$SELECT * FROM pgr_degree('SELECT id FROM foo')$$, 'foo'); + + END; $BODY$ LANGUAGE plpgsql; diff --git a/pgtap/topology/degree/inner_query.pg b/pgtap/metrics/degree/inner_query.pg similarity index 100% rename from pgtap/topology/degree/inner_query.pg rename to pgtap/metrics/degree/inner_query.pg diff --git a/pgtap/topology/degree/no_crash_test.pg b/pgtap/metrics/degree/no_crash_test.pg similarity index 100% rename from pgtap/topology/degree/no_crash_test.pg rename to pgtap/metrics/degree/no_crash_test.pg diff --git a/pgtap/topology/degree/types_check.pg b/pgtap/metrics/degree/types_check.pg similarity index 56% rename from pgtap/topology/degree/types_check.pg rename to pgtap/metrics/degree/types_check.pg index cd4ad3287b..7c242e3305 100644 --- a/pgtap/topology/degree/types_check.pg +++ b/pgtap/metrics/degree/types_check.pg @@ -19,7 +19,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ********************************************************************PGR-GNU*/ BEGIN; -SELECT CASE WHEN min_version('3.4.0') THEN plan(5) ELSE plan(1) END; +SELECT CASE WHEN min_version('3.8.0') THEN plan(7) WHEN min_version('3.4.0') THEN plan(5) ELSE plan(1) END; CREATE OR REPLACE FUNCTION types_check() RETURNS SETOF TEXT AS $BODY$ @@ -33,13 +33,37 @@ BEGIN RETURN QUERY SELECT has_function('pgr_degree', ARRAY['text', 'text', 'boolean']); RETURN QUERY SELECT function_returns('pgr_degree', ARRAY['text', 'text', 'boolean'], 'setof record'); - RETURN QUERY SELECT set_eq( - $$SELECT proargnames from pg_proc where proname = 'pgr_degree'$$, - $$SELECT '{"","","dryrun","node","degree"}'::TEXT[] $$); + RETURN QUERY + SELECT CASE + WHEN min_version('3.8.0') THEN + collect_tap( - RETURN QUERY SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_degree'$$, - $$VALUES ('{25,25,16,20,20}'::OID[])$$); + has_function('pgr_degree', ARRAY['text', 'boolean']), + + function_returns('pgr_degree', ARRAY['text', 'boolean'], 'setof record'), + + set_eq($$SELECT proargnames from pg_proc where proname = 'pgr_degree'$$, + $$VALUES + ('{"","dryrun","node","degree"}'::TEXT[]), + ('{"","","dryrun","node","degree"}'::TEXT[]) + $$, 'proargnames'), + + set_eq($$SELECT proallargtypes from pg_proc where proname = 'pgr_degree'$$, + $$VALUES + ('{25,16,20,20}'::OID[]), + ('{25,25,16,20,20}'::OID[]) + $$, 'proallargtypes') + ) + ELSE + collect_tap( + + set_eq($$SELECT proargnames from pg_proc where proname = 'pgr_degree'$$, + $$VALUES ('{"","","dryrun","node","degree"}'::TEXT[]) $$, 'proargnames'), + + set_eq($$SELECT proallargtypes from pg_proc where proname = 'pgr_degree'$$, + $$VALUES ('{25,25,16,20,20}'::OID[])$$, 'proallargtypes') + ) + END; END $BODY$ diff --git a/pgtap/topology/extractVertices/edge_cases.pg b/pgtap/topology/extractVertices/edge_cases.pg index 430727e708..4e3756f7f3 100644 --- a/pgtap/topology/extractVertices/edge_cases.pg +++ b/pgtap/topology/extractVertices/edge_cases.pg @@ -25,103 +25,43 @@ SELECT plan(30); UPDATE edges SET cost = sign(cost) + 0.001 * id * id, reverse_cost = sign(reverse_cost) + 0.001 * id * id; -- -PREPARE query_1 AS -SELECT * FROM pgr_extractVertices( - 'SELECT source - FROM edges' -); - -PREPARE query_2 AS -SELECT * -FROM pgr_extractVertices( - 'SELECT target - FROM edges' -); - -SELECT throws_ok('query_1', 'P0001', 'Missing column', 'Incomlete data -> throws'); -SELECT throws_ok('query_2', 'P0001', 'Missing column', 'Incomlete data -> throws'); --- -PREPARE query_3 AS -SELECT * -FROM pgr_extractVertices( - 'SELECT ST_StartPoint(geom) AS startpoint - FROM edges' -); - -PREPARE query_4 AS -SELECT * -FROM pgr_extractVertices( - 'SELECT ST_EndPoint(geom) AS endpoint - FROM edges' -); - -SELECT throws_ok('query_3', 'P0001', 'Missing column', 'Incomlete data -> throws'); -SELECT throws_ok('query_4', 'P0001', 'Missing column', 'Incomlete data -> throws'); +PREPARE test_1(TEXT) AS +SELECT * FROM pgr_extractVertices('SELECT ' || $1 || ' FROM edges'); + +SELECT column_missing($$test_1('source')$$, 'target'); +SELECT column_missing($$test_1('target')$$, 'source'); -- -PREPARE query_5 AS -SELECT * FROM pgr_extractVertices( - 'SELECT source, geom - FROM edges' -); +SELECT column_missing($$"test_1"('ST_StartPoint(geom) AS startpoint')$$, 'endpoint'); +SELECT column_missing($$"test_1"('ST_EndPoint(geom) AS endpoint')$$, 'startpoint'); -PREPARE query_6 AS -SELECT * -FROM pgr_extractVertices( - 'SELECT target, geom - FROM edges' -); +-- -SELECT lives_ok('query_5', 'geom column makes data complete'); -SELECT lives_ok('query_6', 'geom column makes data complete'); +SELECT lives_ok($$"test_1"('source, geom')$$, 'geom column makes data complete'); +SELECT lives_ok($$"test_1"('target, geom')$$, 'geom column makes data complete'); -- -PREPARE query_7 AS -SELECT * -FROM pgr_extractVertices( - 'SELECT ST_StartPoint(geom) AS startpoint, geom - FROM edges' -); - -PREPARE query_8 AS -SELECT * -FROM pgr_extractVertices( - 'SELECT ST_EndPoint(geom) AS endpoint, geom - FROM edges' -); - -SELECT lives_ok('query_7', 'geom column makes data complete'); -SELECT lives_ok('query_8', 'geom column makes data complete'); --- +SELECT lives_ok($$"test_1"('ST_StartPoint(geom) AS startpoint, geom')$$, 'geom column makes data complete'); +SELECT lives_ok($$"test_1"('ST_EndPoint(geom) AS endpoint, geom')$$, 'geom column makes data complete'); -SELECT set_eq( - $$SELECT count(*) FROM pgr_extractVertices( 'SELECT geom FROM edges')$$, - $$VALUES (17)$$, - '17: Number of vertices extracted'); -SELECT set_eq( - $$SELECT count(*) FROM pgr_extractVertices( 'SELECT ST_StartPoint(geom) AS startpoint, ST_EndPoint(geom) AS endpoint FROM edges')$$, - $$VALUES (17)$$, - '17: Number of vertices extracted'); -SELECT set_eq( - $$SELECT count(*) FROM pgr_extractVertices( 'SELECT source, target FROM edges')$$, - $$VALUES (17)$$, - '17: Number of vertices extracted'); +-- -SELECT set_eq( - $$SELECT count(*) FROM pgr_extractVertices( 'SELECT id, geom FROM edges')$$, - $$VALUES (17)$$, - '17: Number of vertices extracted'); -SELECT set_eq( - $$SELECT count(*) FROM pgr_extractVertices( 'SELECT id, ST_StartPoint(geom) AS startpoint, ST_EndPoint(geom) AS endpoint FROM edges')$$, - $$VALUES (17)$$, - '17: Number of vertices extracted'); -SELECT set_eq( - $$SELECT count(*) FROM pgr_extractVertices( 'SELECT id, source, target FROM edges')$$, - $$VALUES (17)$$, - '17: Number of vertices extracted'); +SELECT is((SELECT count(*) FROM pgr_extractVertices('SELECT geom FROM edges')), + 17::BIGINT, '17 vertices with geom'); +SELECT is((SELECT count(*) FROM pgr_extractVertices('SELECT ST_StartPoint(geom) AS startpoint, ST_EndPoint(geom) AS endpoint FROM edges')), + 17::BIGINT, '17 vertices with points'); +SELECT is((SELECT count(*) FROM pgr_extractVertices('SELECT source, target FROM edges')), + 17::BIGINT, '17 vertices with source, target'); + +SELECT is((SELECT count(*) FROM pgr_extractVertices('SELECT id, geom FROM edges')), + 17::BIGINT, '17 vertices with id, geom'); +SELECT is((SELECT count(*) FROM pgr_extractVertices('SELECT id, ST_StartPoint(geom) AS startpoint, ST_EndPoint(geom) AS endpoint FROM edges')), + 17::BIGINT, '17 vertices with id, points'); +SELECT is((SELECT count(*) FROM pgr_extractVertices('SELECT id, source, target FROM edges')), + 17::BIGINT, '17 vertices with id, source, target'); -- SELECT set_eq( diff --git a/pgtap/trsp/trsp/compare_dijkstra/blank_restrictions.pg b/pgtap/trsp/trsp/compare_dijkstra/blank_restrictions.pg deleted file mode 100644 index fba5adccfb..0000000000 --- a/pgtap/trsp/trsp/compare_dijkstra/blank_restrictions.pg +++ /dev/null @@ -1,75 +0,0 @@ - -/*PGR-GNU***************************************************************** - -Copyright (c) 2018 pgRouting developers -Mail: project@pgrouting.org - ------- -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - ********************************************************************PGR-GNU*/ -BEGIN; - -UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost); -SELECT plan(1296); -SET client_min_messages TO ERROR; - - --- TEST of deprecated signature --- This test does not make sense on new signatures due to the fact that the functions are STRICT (aka no nulls) -create or REPLACE FUNCTION foo(cant INTEGER default 18, flag boolean default true ) -RETURNS SETOF TEXT AS -$BODY$ -DECLARE -dijkstra_sql TEXT; -turnRestricted_sql TEXT; -inner_sql1 TEXT; -inner_sql2 TEXT; -k integer; -directed TEXT; -msg TEXT; -blank TEXT; -BEGIN - directed = 'Undirected'; - blank := quote_literal(''); - IF flag THEN directed = 'Directed'; END IF; - k := 1; - inner_sql1 = quote_literal('SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost from edges ORDER BY id'); - inner_sql2 = quote_literal('SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost from edges ORDER BY id'); - FOR i IN 1.. cant LOOP - FOR j IN 1..cant LOOP - dijkstra_sql := 'SELECT seq-1, node::integer, edge::integer, cost - FROM pgr_dijkstra( ' || inner_sql1 || ', ' || i || ', ' || j || ', ' || flag || ')'; - turnRestricted_sql := 'SELECT * from pgr_trsp( ' || inner_sql1 || ', ' || i || ', ' || j || ', ' || flag || ', true, ' || blank || ')'; - msg := k || ' ' || directed || ', with reverse_cost: from ' || i || ' to ' || j; - RETURN query SELECT set_eq(dijkstra_sql, turnRestricted_sql, msg); - k := k + 1; - dijkstra_sql := 'SELECT seq-1, node::integer, edge::integer, cost - FROM pgr_dijkstra( ' || inner_sql2 || ', ' || i || ', ' || j || ', ' || flag || ')'; - turnRestricted_sql := 'SELECT * from pgr_trsp( ' || inner_sql2 || ', ' || i || ', ' || j || ', ' || flag || ', false, ' || blank || ')'; - msg := k || ' ' || directed || ', no reverse_cost: from ' || i || ' to ' || j; - RETURN query SELECT set_eq(dijkstra_sql, turnRestricted_sql, msg); - k := k + 1; - END LOOP; - END LOOP; -END -$BODY$ -language plpgsql; - -SELECT * from foo(18, true); -SELECT * from foo(18, false); - - --- Finish the tests and clean up. -SELECT * FROM finish(); -ROLLBACK; - diff --git a/pgtap/trsp/trsp/compare_dijkstra/directed/related_restrictions.pg b/pgtap/trsp/trsp/compare_dijkstra/directed/related_restrictions.pg deleted file mode 100644 index 8f5775d639..0000000000 --- a/pgtap/trsp/trsp/compare_dijkstra/directed/related_restrictions.pg +++ /dev/null @@ -1,33 +0,0 @@ - -/*PGR-GNU***************************************************************** - -Copyright (c) 2018 pgRouting developers -Mail: project@pgrouting.org - ------- -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - ********************************************************************PGR-GNU*/ -BEGIN; - -SELECT CASE WHEN min_version('3.4.0') THEN plan(18) ELSE plan(1) END; -SET extra_float_digits = -3; -UPDATE edges SET cost = sign(cost) + 0.001 * id * id, reverse_cost = sign(reverse_cost) + 0.001 * id * id; - -PREPARE with_reverse_cost AS SELECT id, source, target, cost, reverse_cost from edges ORDER BY id; -PREPARE no_reverse_cost AS SELECT id, source, target, cost from edges ORDER BY id; -PREPARE related AS SELECT * FROM restrictions; - -SELECT compare_trsp_dijkstra_new(18, true, 'related'); - -SELECT * FROM finish(); -ROLLBACK; diff --git a/pgtap/trsp/trsp/compare_dijkstra/no_restrictions_directed.pg b/pgtap/trsp/trsp/compare_dijkstra/no_restrictions_directed.pg deleted file mode 100644 index 95eab2db76..0000000000 --- a/pgtap/trsp/trsp/compare_dijkstra/no_restrictions_directed.pg +++ /dev/null @@ -1,31 +0,0 @@ - -/*PGR-GNU***************************************************************** - -Copyright (c) 2018 pgRouting developers -Mail: project@pgrouting.org - ------- -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - ********************************************************************PGR-GNU*/ -BEGIN; - -SELECT plan(612); -SET extra_float_digits = -3; -UPDATE edges SET cost = sign(cost) + 0.001 * id * id, reverse_cost = sign(reverse_cost) + 0.001 * id * id; -SET client_min_messages TO ERROR; - --- TEST of deprecated signature -SELECT compare_trsp_dijkstra(18, true); - -SELECT * FROM finish(); -ROLLBACK; diff --git a/pgtap/trsp/trsp/compare_dijkstra/undirected/related_restrictions.pg b/pgtap/trsp/trsp/compare_dijkstra/undirected/related_restrictions.pg deleted file mode 100644 index ebddccf7eb..0000000000 --- a/pgtap/trsp/trsp/compare_dijkstra/undirected/related_restrictions.pg +++ /dev/null @@ -1,33 +0,0 @@ - -/*PGR-GNU***************************************************************** - -Copyright (c) 2018 pgRouting developers -Mail: project@pgrouting.org - ------- -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - ********************************************************************PGR-GNU*/ -BEGIN; - -SELECT CASE WHEN min_version('3.4.0') THEN plan(18) ELSE plan(1) END; -SET extra_float_digits = -3; -UPDATE edges SET cost = sign(cost) + 0.001 * id * id, reverse_cost = sign(reverse_cost) + 0.001 * id * id; - -PREPARE with_reverse_cost AS SELECT id, source, target, cost, reverse_cost from edges ORDER BY id; -PREPARE no_reverse_cost AS SELECT id, source, target, cost from edges ORDER BY id; -PREPARE related AS SELECT * FROM restrictions; - -SELECT compare_trsp_dijkstra_new(18, false, 'related'); - -SELECT * FROM finish(); -ROLLBACK; diff --git a/pgtap/trsp/trsp/edge_cases/compare_dijkstra.pg b/pgtap/trsp/trsp/edge_cases/compare_dijkstra.pg index 586ae1e8c9..86acfa78cb 100644 --- a/pgtap/trsp/trsp/edge_cases/compare_dijkstra.pg +++ b/pgtap/trsp/trsp/edge_cases/compare_dijkstra.pg @@ -1,4 +1,3 @@ - /*PGR-GNU***************************************************************** Copyright (c) 2018 pgRouting developers @@ -18,52 +17,29 @@ along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ********************************************************************PGR-GNU*/ BEGIN; -SELECT plan(1); +SET extra_float_digits = -3; UPDATE edges SET cost = sign(cost) + 0.001 * id * id, reverse_cost = sign(reverse_cost) + 0.001 * id * id; -CREATE OR REPLACE FUNCTION do_test() RETURNS SETOF TEXT AS -$BODY$ -BEGIN - - IF min_version('3.4.0') THEN - prepare q1 AS - SELECT seq, node, edge, cost::TEXT FROM pgr_trsp( - 'select id, source, target, cost, reverse_cost from edges', - $$SELECT 1 AS id, 100::float AS cost, 25::INTEGER AS target_id, ARRAY[33, 32, 25] AS path$$, - 1, -- node_id of start - 5, -- node_id of end - true); -- directed graph? - - prepare q2 AS - SELECT seq, node, edge, cost::TEXT FROM pgr_dijkstra( - 'select id, source, target, cost, reverse_cost from edges', - 1, 5); - ELSE +SELECT CASE WHEN min_lib_version('4.0.0') AND min_version('3.6.0') THEN plan(1882) + WHEN NOT min_lib_version('4.0.0') AND min_version('3.4.0') THEN plan(1882) + ELSE plan(6) END; - prepare q1 AS - SELECT seq, id1, id2, cost::TEXT FROM pgr_trsp( - 'select id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost from edges', - 1, -- node_id of start - 5, -- node_id of end - true, -- directed graph? - true, -- has_reverse_cost? - null); -- no turn restrictions +PREPARE with_reverse_cost AS SELECT id, source, target, cost, reverse_cost from edges ORDER BY id; +PREPARE no_reverse_cost AS SELECT id, source, target, cost from edges ORDER BY id; +PREPARE related AS SELECT * FROM restrictions; +PREPARE unrelated1 AS SELECT * FROM restrictions WHERE id > 7; +PREPARE unrelated2 AS SELECT 1 AS id, 100::float AS cost, ARRAY[33, 32, 25] AS path; - prepare q2 AS - SELECT seq-1, node::INTEGER, edge::INTEGER, cost::TEXT FROM pgr_dijkstra( - 'select id, source, target, cost, reverse_cost from edges', - 1, 5); - END IF; - RETURN QUERY - SELECT set_eq('q2', 'q1', 'No turn restriction from 1 to 5 returns same as dijkstra'); -END; +SELECT compare_trsp_dijkstra_new(18, true, 'related'); +SELECT compare_trsp_dijkstra_new(18, false, 'related'); -$BODY$ -LANGUAGE plpgSQL; +SELECT compare_trsp_dijkstra_new(18, true, 'unrelated1'); +SELECT compare_trsp_dijkstra_new(18, false, 'unrelated1'); -SELECT do_test(); +SELECT compare_trsp_dijkstra_new(18, true, 'unrelated2'); +SELECT compare_trsp_dijkstra_new(18, false, 'unrelated2'); -SELECT finish(); +SELECT * FROM finish(); ROLLBACK; diff --git a/pgtap/trsp/trsp/edge_cases/compare_dijkstraVia.pg b/pgtap/trsp/trsp/edge_cases/compare_dijkstraVia.pg index e2aa2bf5eb..7f60a76c59 100644 --- a/pgtap/trsp/trsp/edge_cases/compare_dijkstraVia.pg +++ b/pgtap/trsp/trsp/edge_cases/compare_dijkstraVia.pg @@ -1,4 +1,3 @@ - /*PGR-GNU***************************************************************** Copyright (c) 2018 pgRouting developers @@ -19,162 +18,105 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ********************************************************************PGR-GNU*/ BEGIN; -SELECT plan(7); - +SET extra_float_digits=-3; UPDATE edges SET cost = sign(cost) + 0.001 * id * id, reverse_cost = sign(reverse_cost) + 0.001 * id * id; +SELECT CASE WHEN min_lib_version('4.0.0') AND min_version('3.6.0') THEN plan(6) + WHEN NOT min_lib_version('4.0.0') AND min_version('3.4.0') THEN plan(6) + ELSE plan(1) END; + +PREPARE related_restriction AS SELECT 100.2 AS cost, ARRAY[4,8] AS path; +PREPARE unrelated_restriction AS SELECT 100 AS cost, ARRAY[33, 32, 25] AS path; + CREATE OR REPLACE FUNCTION edge_cases() RETURNS SETOF TEXT AS $BODY$ BEGIN - IF min_version('3.4.0') THEN - - PREPARE q1 AS - SELECT * from pgr_trsp( - 'SELECT id, source, target, cost, reverse_cost from edges', - $$SELECT 1 AS id, 100::float AS cost, 25::INTEGER AS target_id, ARRAY[33, 32, 25] AS path$$, - 5, 5, - true); - - PREPARE q2 AS - SELECT * from pgr_trsp( - 'SELECT id, source, target, cost, reverse_cost from edges', - $$SELECT 1 AS id, 100::float AS cost, 25::INTEGER AS target_id, ARRAY[33, 32, 25] AS path$$, - 5, 10, - true); - - PREPARE q21 AS - SELECT seq, node, edge, round(cost::numeric, 3) from pgr_trsp( - 'SELECT id, source, target, cost, reverse_cost from edges', - $$SELECT 1 AS id, 100::float AS cost, 25::INTEGER AS target_id, ARRAY[33, 32, 25] AS path$$, - 5, 10, - true); - - PREPARE q22 AS - SELECT seq, node, edge, round(cost::numeric, 3) from pgr_dijkstra( - 'SELECT id, source, target, cost, reverse_cost from edges', - 5, 10, true); - - PREPARE q31 AS - SELECT seq-1::INTEGER, node::INTEGER, edge::INTEGER, round(cost::numeric, 3) from pgr_trsp( - 'SELECT id, source, target, cost, reverse_cost from edges', - $$SELECT 1 AS id, 100.2 AS cost, 6 AS target_id, ARRAY[4,8] AS path$$, - 5, 10, - true); - - PREPARE q41 AS - SELECT * from pgr_trsp( - 'SELECT id, source, target, cost, reverse_cost from edges', - $$SELECT 1 AS id, 100::float AS cost, 25::INTEGER AS target_id, ARRAY[33, 32, 25] AS path$$, - 5, 5, - FALSE); - - PREPARE q51 AS - SELECT seq, node, edge, cost::text from pgr_trsp( - 'SELECT id, source, target, cost, reverse_cost from edges', - $$SELECT 1 AS id, 100::float AS cost, 25::INTEGER AS target_id, ARRAY[33, 32, 25] AS path$$, - 5, 10, - FALSE); - - PREPARE q52 AS - SELECT seq, node, edge, cost::text from pgr_dijkstra( - 'SELECT id, source, target, cost, reverse_cost from edges', - 5, 10, FALSE); - - PREPARE q61 AS - SELECT seq-1::INTEGER, node::INTEGER, edge::INTEGER, cost::TEXT from pgr_trsp( - 'SELECT id, source, target, cost, reverse_cost from edges', - $$SELECT 1 AS id, 100.2::float AS cost, 6::INTEGER AS target_id, ARRAY[4,8] AS path$$, - 5, 10, - FALSE); - - ELSE - - PREPARE q1 AS - SELECT * from pgr_trsp( - 'select id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost from edges', - 5, 5, - true, true); - - PREPARE q2 AS - SELECT * from pgr_trsp( - 'select id::INTEGER, source::BIGINT, target::INTEGER, cost, reverse_cost from edges', - 5, 10, - true, true); - - PREPARE q21 AS - SELECT seq, id1, id2, round(cost::numeric, 3) from pgr_trsp( - 'select id::INTEGER, source::INTEGER, target::INTEGER,cost, reverse_cost from edges', - 5, 10, - true, true); - - PREPARE q22 AS - SELECT seq-1, node::INTEGER, edge::INTEGER, round(cost::numeric, 3) from pgr_dijkstra( - 'select id::INTEGER, source::INTEGER, target::INTEGER,cost, reverse_cost from edges', - 5, 10, true); - - PREPARE q31 AS - SELECT seq, id1, id2, round(cost::numeric, 3) from pgr_trsp( - 'select id::INTEGER, source::INTEGER, target::INTEGER,cost, reverse_cost from edges', - 5, 10, - true, true, - 'select 8::INTEGER as target_id, ''4''::TEXT as via_path, 100.2::FLOAT to_cost'); - - PREPARE q41 AS - SELECT * from pgr_trsp( - 'select id::INTEGER, source::INTEGER, target::INTEGER,cost, reverse_cost from edges', - 5, 5, - FALSE, true); - - PREPARE q51 AS - SELECT seq, id1, id2, cost::text from pgr_trsp( - 'select id::INTEGER, source::INTEGER, target::INTEGER,cost, reverse_cost from edges', - 5, 10, - FALSE, true); - - PREPARE q52 AS - SELECT seq-1, node::INTEGER, edge::INTEGER, cost::text from pgr_dijkstra( - 'select id::INTEGER, source::INTEGER, target::INTEGER,cost, reverse_cost from edges', - 5, 10, FALSE); - - PREPARE q61 AS - SELECT seq, id1, id2, cost::text from pgr_trsp( - 'select id::INTEGER, source::INTEGER, target::INTEGER,cost, reverse_cost from edges', - 5, 10, - FALSE, true, - 'select 8::INTEGER as target_id, ''4''::TEXT as via_path, 100.2::FLOAT to_cost'); + IF NOT min_version('3.4.0') THEN + RETURN QUERY SELECT skip(1, 'New signatures added on 3.4.0'); + RETURN; + END IF; + IF min_lib_version('4.0.0') and NOT min_version('3.6.0') THEN + RETURN QUERY SELECT skip(1, 'Internal function __v4trsp deprecated on 3.6.0 deleted on 4.0.0'); + RETURN; END IF; - PREPARE q32 AS - SELECT (row_number() over() -1)::INTEGER, node::INTEGER, - (CASE WHEN edge = -2 THEN -1 ELSE edge END)::INTEGER, round(cost::numeric, 3) + /* Directed */ + PREPARE q1 AS + SELECT * from pgr_trsp( + 'SELECT id, source, target, cost, reverse_cost from edges', + $$SELECT 100 AS cost, ARRAY[33, 32, 25] AS path$$, + 5, 5, true); + + RETURN QUERY SELECT is_empty('q1', 'Directed: No path from 5 to 5'); + + PREPARE q21 AS + SELECT seq, node, edge, cost from pgr_trsp( + 'SELECT id, source, target, cost, reverse_cost from edges', + 'unrelated_restriction', + 5, 10, true); + + PREPARE q21_expected AS + SELECT seq, node, edge, cost from pgr_dijkstra( + 'SELECT id, source, target, cost, reverse_cost from edges', + 5, 10, true); + + RETURN QUERY SELECT set_eq('q21','q21_expected','Directed: without retrictions expected the same as pgr_dijkstra'); + + PREPARE q31 AS + SELECT seq-1, node, edge, cost::TEXT FROM pgr_trsp( + 'SELECT id, source, target, cost, reverse_cost from edges', + 'related_restriction', + 5, 10, true); + + PREPARE q31_expected AS + SELECT (row_number() over() -1), node, CASE WHEN edge = -2 THEN -1 ELSE edge END, cost::TEXT FROM pgr_dijkstraVia( 'select id, source, target, cost, reverse_cost from edges', ARRAY[5, 8, 17, 15, 10], - true) where edge != -1; + true) WHERE edge != -1; - RETURN QUERY SELECT is_empty('q1', '1: Directed: No path from 1 to 1'); - IF NOT min_version('3.4.0') THEN - PERFORM todo(1, 'Function does not accept ANY-INTEGER and ANY-NUMERICAL'); - END IF; - RETURN QUERY SELECT lives_ok('q2', '2: ANY_INTEGER and ANY_NUMERICAL are accepted'); - RETURN QUERY SELECT set_eq('q21','q22','3: Directed: without retrictions returns the same as pgr_dijkstra'); - RETURN QUERY SELECT set_eq('q31','q32','4: Directed: with retrictions returns expected path'); + RETURN QUERY SELECT set_eq('q31','q31_expected','Directed: with retrictions expected the same as pgr_dijkstraVia'); + + /* Undirected */ + PREPARE q41 AS + SELECT * from pgr_trsp( + 'SELECT id, source, target, cost, reverse_cost from edges', + 'unrelated_restriction', + 5, 5, false); + RETURN QUERY SELECT is_empty('q41', '5: Undirected: No path from 5 to 5'); - PREPARE q62 AS - SELECT (row_number() over() -1)::INTEGER, node::INTEGER, - (CASE WHEN edge = -2 THEN -1 ELSE edge END)::INTEGER, cost::text + PREPARE q51 AS + SELECT seq, node, edge, cost::text from pgr_trsp( + 'SELECT id, source, target, cost, reverse_cost from edges', + 'unrelated_restriction', + 5, 10, false); + + PREPARE q51_expected AS + SELECT seq, node, edge, cost::text from pgr_dijkstra( + 'SELECT id, source, target, cost, reverse_cost from edges', + 5, 10, false); + + RETURN QUERY SELECT set_eq('q51','q51_expected','6: Undirected: without retrictions returns the same as pgr_dijkstra'); + + PREPARE q61 AS + SELECT seq-1, node, edge, cost::TEXT from pgr_trsp( + 'SELECT id, source, target, cost, reverse_cost from edges', + 'related_restriction', + 5, 10, false); + + PREPARE q61_expected AS + SELECT (row_number() over() -1), node, + (CASE WHEN edge = -2 THEN -1 ELSE edge END), cost::text FROM pgr_dijkstraVia( - 'select id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost from edges', + 'select id, source, target, cost, reverse_cost from edges', ARRAY[5, 6, 10], - FALSE) where edge != -1; + false) WHERE edge != -1; - RETURN QUERY SELECT is_empty('q41', '5: Undirected: No path from 1 to 1'); - RETURN QUERY SELECT set_eq('q51','q52','6: Undirected: without retrictions returns the same as pgr_dijkstra'); - RETURN QUERY SELECT set_eq('q61','q62','7: Undirected: with retrictions returns expected path'); + RETURN QUERY SELECT set_eq('q61','q61_expected','7: Undirected: with retrictions returns expected path'); END; $BODY$ LANGUAGE plpgsql; diff --git a/pgtap/trsp/trsp/edge_cases/directed_compare_dijkstraVia.pg b/pgtap/trsp/trsp/edge_cases/directed_compare_dijkstraVia.pg index f30fb8cf66..5aae5d32d7 100644 --- a/pgtap/trsp/trsp/edge_cases/directed_compare_dijkstraVia.pg +++ b/pgtap/trsp/trsp/edge_cases/directed_compare_dijkstraVia.pg @@ -19,88 +19,72 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ********************************************************************PGR-GNU*/ BEGIN; -SELECT plan(3); - SET extra_float_digits = -3; UPDATE edges SET cost = sign(cost) + 0.001 * id * id, reverse_cost = sign(reverse_cost) + 0.001 * id * id; +SELECT CASE WHEN min_lib_version('4.0.0') AND min_version('3.6.0') THEN plan(3) + WHEN NOT min_lib_version('4.0.0') AND min_version('3.4.0') THEN plan(3) + ELSE plan(1) END; + +PREPARE related_restriction AS SELECT 100.2 AS cost, ARRAY[5,9] AS path; +PREPARE unrelated_restriction AS SELECT 100 AS cost, ARRAY[33, 32, 25] AS path; -CREATE OR REPLACE FUNCTION edge_case() RETURNS SETOF TEXT AS +CREATE OR REPLACE FUNCTION edge_cases() RETURNS SETOF TEXT AS $BODY$ BEGIN - IF min_version('3.4.0') THEN - PREPARE q1 AS - SELECT * from pgr_trsp( - 'select id, source, target,cost, reverse_cost from edges', - $$SELECT 1 AS id, 100::float AS cost, 25::INTEGER AS target_id, ARRAY[33, 32, 25] AS path$$, - 5, 5, - true); - - PREPARE q2 AS - SELECT seq, node, edge, round(cost::numeric, 12) from pgr_trsp( - 'select id, source, target,cost, reverse_cost from edges', - $$SELECT 1 AS id, 100::float AS cost, 25::INTEGER AS target_id, ARRAY[33, 32, 25] AS path$$, - 10, 15, - true); - - PREPARE e2 AS - SELECT seq, node, edge, round(cost::numeric, 12) from pgr_dijkstra( - 'select id, source, target, cost, reverse_cost from edges', - 10, 15); - - PREPARE q3 AS - SELECT seq-1::INTEGER, node::INTEGER, edge::INTEGER, round(cost::numeric, 12) from pgr_trsp( - 'select id, source, target, cost, reverse_cost from edges', - $$SELECT 1 AS id, 100.2::float AS cost, ARRAY[5,9] AS path$$, - 10, 15, - true); - - ELSE - - PREPARE q1 AS - SELECT * from pgr_trsp( - 'select id::INTEGER, source::INTEGER, target::INTEGER,cost, reverse_cost from edges', - 5, 5, - true, true); - - PREPARE q2 AS - SELECT seq, id1, id2, round(cost::numeric, 12) from pgr_trsp( - 'select id::INTEGER, source::INTEGER, target::INTEGER,cost, reverse_cost from edges', - 10, 15, - true, true); - - PREPARE e2 AS - SELECT seq-1, node::INTEGER, edge::INTEGER, round(cost::numeric, 12) from pgr_dijkstra( - 'select id, source, target, cost, reverse_cost from edges', - 10, 15, true); - - PREPARE q3 AS - SELECT seq, id1, id2, round(cost::numeric, 12) from pgr_trsp( - 'select id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost from edges', - 10, 15, - true, true, - 'select 9::INTEGER as target_id, ''5''::TEXT as via_path, 100.2::FLOAT to_cost'); + IF NOT min_version('3.4.0') THEN + RETURN QUERY SELECT skip(1, 'New signatures added on 3.4.0'); + RETURN; + END IF; + IF min_lib_version('4.0.0') and NOT min_version('3.6.0') THEN + RETURN QUERY SELECT skip(1, 'Internal function __v4trsp deprecated on 3.6.0 deleted on 4.0.0'); + RETURN; END IF; - PREPARE e3 AS - SELECT (row_number() over() -1)::INTEGER, node::INTEGER, - (CASE WHEN edge = -2 THEN -1 ELSE edge END)::INTEGER, round(cost::numeric, 12) + PREPARE q1 AS + SELECT * from pgr_trsp( + 'select id, source, target,cost, reverse_cost from edges', + 'unrelated_restriction', + 5, 5, + true); + RETURN QUERY SELECT is_empty('q1', '1: No path from 1 to 1'); + + PREPARE q2 AS + SELECT seq, node, edge, cost from pgr_trsp( + 'select id, source, target,cost, reverse_cost from edges', + 'unrelated_restriction', + 10, 15, + true); + + PREPARE q2_expected AS + SELECT seq, node, edge, cost from pgr_dijkstra( + 'select id, source, target, cost, reverse_cost from edges', + 10, 15); + RETURN QUERY SELECT set_eq('q2','q2_expected','2: without retrictions returns the same as pgr_dijkstra'); + + PREPARE q3 AS + SELECT seq-1, node, edge, cost::TEXT from pgr_trsp( + 'select id, source, target, cost, reverse_cost from edges', + 'related_restriction', + 10, 15, + true); + + PREPARE q3_expected AS + SELECT (row_number() over() -1), node, (CASE WHEN edge = -2 THEN -1 ELSE edge END), cost::TEXT FROM pgr_dijkstraVia( 'select id, source, target, cost, reverse_cost from edges', ARRAY[10, 6, 15], true) where edge != -1; - RETURN QUERY SELECT is_empty('q1', '1: No path from 1 to 1'); - RETURN QUERY SELECT set_eq('q2','e2','2: without retrictions returns the same as pgr_dijkstra'); - RETURN QUERY SELECT set_eq('q3','e3','3: with retrictions returns expected path'); + RETURN QUERY SELECT set_eq('q3','q3_expected','2: without retrictions returns the same as pgr_dijkstraVia'); END; $BODY$ LANGUAGE plpgsql; -SELECT edge_case(); +SELECT edge_cases(); SELECT finish(); ROLLBACK; diff --git a/pgtap/trsp/trsp/edge_cases.pg b/pgtap/trsp/trsp/edge_cases/edge_cases.pg similarity index 84% rename from pgtap/trsp/trsp/edge_cases.pg rename to pgtap/trsp/trsp/edge_cases/edge_cases.pg index cfafb86514..59acae109b 100644 --- a/pgtap/trsp/trsp/edge_cases.pg +++ b/pgtap/trsp/trsp/edge_cases/edge_cases.pg @@ -1,4 +1,3 @@ - /*PGR-GNU***************************************************************** Copyright (c) 2018 pgRouting developers @@ -21,8 +20,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. BEGIN; UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost); -SELECT CASE WHEN min_version('3.4.0') THEN plan(5) ELSE plan(1) END; -SET client_min_messages TO ERROR; +SELECT CASE WHEN min_lib_version('4.0.0') AND min_version('3.6.0') THEN plan(5) + WHEN NOT min_lib_version('4.0.0') AND min_version('3.4.0') THEN plan(5) + ELSE plan(1) END; CREATE OR REPLACE FUNCTION edge_cases() RETURNS SETOF TEXT AS @@ -34,7 +34,12 @@ DECLARE BEGIN IF NOT min_version('3.4.0') THEN - RETURN QUERY SELECT skip(1, 'New function on 3.4'); + RETURN QUERY SELECT skip(1, 'New signatures added on 3.4.0'); + RETURN; + END IF; + + IF min_lib_version('4.0.0') and NOT min_version('3.6.0') THEN + RETURN QUERY SELECT skip(1, 'Internal function _v4trsp deprecated on 3.6.0 deleted on 4.0.0'); RETURN; END IF; diff --git a/pgtap/trsp/trsp/edge_cases/emptyset_from_i_to_i.pg b/pgtap/trsp/trsp/edge_cases/emptyset_from_i_to_i.pg index 83674f28cf..6ae7d79bc4 100644 --- a/pgtap/trsp/trsp/edge_cases/emptyset_from_i_to_i.pg +++ b/pgtap/trsp/trsp/edge_cases/emptyset_from_i_to_i.pg @@ -20,10 +20,15 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. BEGIN; UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost); -SELECT plan(144); +SELECT CASE WHEN min_lib_version('4.0.0') AND min_version('3.6.0') THEN plan(72) + WHEN NOT min_lib_version('4.0.0') AND min_version('3.4.0') THEN plan(72) + ELSE plan(2) END; +PREPARE restriction AS SELECT * FROM restrictions; +PREPARE with_reverse AS SELECT id, source, target, cost, reverse_cost FROM edges ORDER BY id; +PREPARE no_reverse AS SELECT id, source, target, cost FROM edges ORDER BY id; -create or REPLACE FUNCTION edge_cases(cant INTEGER default 18, flag boolean default true ) +CREATE OR REPLACE FUNCTION edge_cases(cant INTEGER DEFAULT 18, flag BOOLEAN DEFAULT true ) RETURNS SETOF TEXT AS $BODY$ DECLARE @@ -36,138 +41,43 @@ directed TEXT; msg TEXT; parameters TEXT; BEGIN -IF min_version('3.4.0') THEN + + IF NOT min_version('3.4.0') THEN + RETURN QUERY SELECT skip(1, 'New signatures added on 3.4.0'); + RETURN; + END IF; + + IF min_lib_version('4.0.0') and NOT min_version('3.6.0') THEN + RETURN QUERY SELECT skip(1, 'Internal function __v4trsp deprecated on 3.6.0 deleted on 4.0.0'); + RETURN; + END IF; + directed = 'Undirected'; IF flag THEN directed = 'Directed'; END IF; + k := 1; - with_reverse_cost = quote_literal('SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost from edges ORDER BY id'); - no_reverse_cost = quote_literal('SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost from edges ORDER BY id'); - restrictions_sql = quote_literal('SELECT 100::float AS to_cost, 25::INTEGER AS target_id, ''32, 33''::TEXT AS via_path'); - restrictions_sql = 'NULL::TEXT'; + with_reverse_cost = quote_literal('with_reverse'); + no_reverse_cost = quote_literal('no_reverse'); + restrictions_sql = quote_literal('restriction'); FOR i IN 1.. cant LOOP + parameters = restrictions_sql || ', ' || i || ', ' || i || ', ' || flag; trsp_sql := 'SELECT * from pgr_trsp( ' || with_reverse_cost || ', ' || parameters || ')'; - msg := k || ' ' || directed || ', with reverse_cost and saying we use it: from ' || i || ' to ' || i; - BEGIN - execute trsp_sql; - RETURN query SELECT is_empty(trsp_sql, msg || ' is_empty'); - EXCEPTION WHEN OTHERS THEN - IF (i < 18) THEN - RETURN query SELECT throws_ok(trsp_sql,'38001','Error computing path: Path Not Found', msg); - ELSE - RETURN query SELECT throws_ok(trsp_sql,'XX000','Start id was not found.', msg); - END IF; - END; - k := k + 1; - + msg := k || ' ' || trsp_sql; + EXECUTE trsp_sql; + RETURN query SELECT is_empty(trsp_sql, msg); + k := k + 1; - trsp_sql := 'SELECT * from pgr_trsp( ' || with_reverse_cost || ', ' || parameters || ')'; - msg := k || ' ' || directed || ', with reverse_cost and saying we dont use it: from ' || i || ' to ' || i; - BEGIN - execute trsp_sql; - RETURN query SELECT is_empty(trsp_sql, msg || 'is empty'); - EXCEPTION WHEN OTHERS THEN - IF (i < 18) THEN - RETURN query SELECT throws_ok(trsp_sql,'38001','Error computing path: Path Not Found', msg); - ELSE - RETURN query SELECT throws_ok(trsp_sql,'XX000','Start id was not found.', msg); - END IF; - END; - k := k + 1; - - trsp_sql := 'SELECT * from pgr_trsp( ' || no_reverse_cost || ', ' || parameters || ')'; - msg := k || ' ' || directed || ', No reverse_cost and saying we dont use it: from ' || i || ' to ' || i; - BEGIN - execute trsp_sql; - RETURN query SELECT is_empty(trsp_sql, msg || 'is empty'); - EXCEPTION WHEN OTHERS THEN - IF (i < 18) THEN - RETURN query SELECT throws_ok(trsp_sql,'38001','Error computing path: Path Not Found', msg); - ELSE - RETURN query SELECT throws_ok(trsp_sql,'XX000','Start id was not found.', msg); - END IF; - END; - k := k + 1; - - /* Ignoring has_rcost flag */ - trsp_sql := 'SELECT * from pgr_trsp( ' || no_reverse_cost || ', ' || parameters || ')'; - msg := k || ' ' || directed || ', No reverse_cost and saying we use it: from ' || i || ' to ' || i; - BEGIN - execute trsp_sql; - RETURN query SELECT is_empty(trsp_sql, msg || 'is empty'); - EXCEPTION WHEN OTHERS THEN - RETURN query SELECT throws_ok(trsp_sql,'XX000',$$Error, reverse_cost is used, but query did't return 'reverse_cost' column$$); - END; - k := k + 1; + trsp_sql := 'SELECT * from pgr_trsp( ' || no_reverse_cost || ', ' || parameters || ')'; + msg := k || ' ' || trsp_sql; + EXECUTE trsp_sql; + RETURN query SELECT is_empty(trsp_sql, msg); + k := k + 1; END LOOP; -ELSE - - directed = 'Undirected'; - IF flag THEN directed = 'Directed'; END IF; - k := 1; - with_reverse_cost = quote_literal('SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost from edges ORDER BY id'); - no_reverse_cost = quote_literal('SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost from edges ORDER BY id'); - - FOR i IN 1.. cant LOOP - trsp_sql := 'SELECT * from pgr_trsp( ' || with_reverse_cost || ', ' || i || ', ' || i || ', ' || flag || ', true)'; - msg := k || ' ' || directed || ', with reverse_cost and saying we use it: from ' || i || ' to ' || i; - BEGIN - execute trsp_sql; - RETURN query SELECT is_empty(trsp_sql, msg || ' is_empty'); - EXCEPTION WHEN OTHERS THEN - IF (i < 18) THEN - RETURN query SELECT throws_ok(trsp_sql,'38001','Error computing path: Path Not Found', msg); - ELSE - RETURN query SELECT throws_ok(trsp_sql,'XX000','Start id was not found.', msg); - END IF; - END; - k := k + 1; - - - trsp_sql := 'SELECT * from pgr_trsp( ' || with_reverse_cost || ', ' || i || ', ' || i || ', ' || flag || ', false)'; - msg := k || ' ' || directed || ', with reverse_cost and saying we dont use it: from ' || i || ' to ' || i; - BEGIN - execute trsp_sql; - RETURN query SELECT is_empty(trsp_sql, msg || 'is empty'); - EXCEPTION WHEN OTHERS THEN - IF (i < 18) THEN - RETURN query SELECT throws_ok(trsp_sql,'38001','Error computing path: Path Not Found', msg); - ELSE - RETURN query SELECT throws_ok(trsp_sql,'XX000','Start id was not found.', msg); - END IF; - END; - k := k + 1; - - trsp_sql := 'SELECT * from pgr_trsp( ' || no_reverse_cost || ', ' || i || ', ' || i || ', ' || flag || ', false)'; - msg := k || ' ' || directed || ', No reverse_cost and saying we dont use it: from ' || i || ' to ' || i; - BEGIN - execute trsp_sql; - RETURN query SELECT is_empty(trsp_sql, msg || 'is empty'); - EXCEPTION WHEN OTHERS THEN - IF (i < 18) THEN - RETURN query SELECT throws_ok(trsp_sql,'38001','Error computing path: Path Not Found', msg); - ELSE - RETURN query SELECT throws_ok(trsp_sql,'XX000','Start id was not found.', msg); - END IF; - END; - k := k + 1; - - /* Ignoring has_rcost flag */ - trsp_sql := 'SELECT * from pgr_trsp( ' || no_reverse_cost || ', ' || i || ', ' || i || ', ' || flag || ', true)'; - msg := k || ' ' || directed || ', No reverse_cost and saying we use it: from ' || i || ' to ' || i; - BEGIN - execute trsp_sql; - RETURN query SELECT is_empty(trsp_sql, msg || 'is empty'); - EXCEPTION WHEN OTHERS THEN - RETURN query SELECT throws_ok(trsp_sql,'XX000',$$Error, reverse_cost is used, but query did't return 'reverse_cost' column$$); - END; - k := k + 1; - END LOOP; -END IF; END $BODY$ language plpgsql; @@ -175,8 +85,6 @@ language plpgsql; SELECT * from edge_cases(18, true); SELECT * from edge_cases(18, false); - --- Finish the tests and clean up. SELECT * FROM finish(); ROLLBACK; diff --git a/pgtap/trsp/trsp/edge_cases/issue_244.pg b/pgtap/trsp/trsp/edge_cases/issue_244.pg index e6bc445895..fdcb7106a5 100644 --- a/pgtap/trsp/trsp/edge_cases/issue_244.pg +++ b/pgtap/trsp/trsp/edge_cases/issue_244.pg @@ -22,44 +22,40 @@ BEGIN; SELECT plan(1); UPDATE edges SET cost = sign(cost) + 0.001 * id * id, reverse_cost = sign(reverse_cost) + 0.001 * id * id; --- should be a procedure CREATE OR REPLACE FUNCTION edge_cases() -RETURNS void AS +RETURNS SETOF TEXT AS $BODY$ BEGIN - IF min_version('3.4.0') THEN - PREPARE q1 AS - SELECT seq, node, edge, cost::text FROM pgr_trsp( - $$SELECT id, source, target, cost FROM edges$$, - $$SELECT * FROM restrictions WHERE id > 10$$, - 7, 12, false); - PREPARE q2 AS - (SELECT seq, node, edge, cost::text - FROM pgr_dijkstra('SELECT id, source, target, cost FROM edges order by id',7, 12, FALSE)) - UNION - (SELECT seq, node, edge, cost::text - FROM pgr_dijkstra('SELECT id, source, target, cost FROM edges order by source',7, 12, FALSE)); - ELSE - - PREPARE q1 AS - SELECT seq, id1, id2, cost::text - FROM pgr_trsp($$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost FROM edges$$, 7, 12, FALSE, false); - PREPARE q2 AS - (SELECT seq-1, node::INTEGER, edge::INTEGER, cost::text - FROM pgr_dijkstra('SELECT id, source, target, cost FROM edges order by id',7, 12, FALSE)) - UNION ALL - (SELECT seq-1, node::INTEGER, edge::INTEGER, cost::text - FROM pgr_dijkstra('SELECT id, source, target, cost FROM edges order by source',7, 12, FALSE)); + IF NOT min_version('3.4.0') THEN + RETURN QUERY SELECT skip(1, 'New signatures added on 3.4.0'); + RETURN; + END IF; + IF min_lib_version('4.0.0') and NOT min_version('3.6.0') THEN + RETURN QUERY SELECT skip(1, 'Internal function __v4trsp deprecated on 3.6.0 deleted on 4.0.0'); + RETURN; END IF; + + PREPARE q1 AS + SELECT seq, node, edge, cost::text FROM pgr_trsp( + $$SELECT id, source, target, cost FROM edges$$, + $$SELECT * FROM restrictions WHERE id > 10$$, + 7, 12, false); + PREPARE q2 AS + (SELECT seq, node, edge, cost::text + FROM pgr_dijkstra('SELECT id, source, target, cost FROM edges order by id',7, 12, FALSE)) + UNION + (SELECT seq, node, edge, cost::text + FROM pgr_dijkstra('SELECT id, source, target, cost FROM edges order by source',7, 12, FALSE)); + + RETURN QUERY SELECT set_eq('q2', 'q1', 'path found'); END; $BODY$ LANGUAGE plpgsql; SELECT edge_cases(); -SELECT set_eq('q2', 'q1', 'path found'); SELECT finish(); ROLLBACK; diff --git a/pgtap/trsp/trsp/edge_cases/no_restrictions_compare_withPoints.pg b/pgtap/trsp/trsp/edge_cases/no_restrictions_compare_withPoints.pg deleted file mode 100644 index 523b185fa7..0000000000 --- a/pgtap/trsp/trsp/edge_cases/no_restrictions_compare_withPoints.pg +++ /dev/null @@ -1,50 +0,0 @@ - -/*PGR-GNU***************************************************************** - -Copyright (c) 2018 pgRouting developers -Mail: project@pgrouting.org - ------- -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - ********************************************************************PGR-GNU*/ -BEGIN; - -SELECT plan(1); -UPDATE edges SET cost = sign(cost) + 0.001 * id * id, reverse_cost = sign(reverse_cost) + 0.001 * id * id; -SET client_min_messages TO ERROR; - -PREPARE q1 AS -SELECT seq, id1, id2, cost::TEXT FROM pgr_trsp( - 'select id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost from edges', - 1, -- edge_id for start - 0.5, -- midpoint of edge - 6, -- edge_id of route end - 0.5, -- midpoint of edge - true, -- directed graph? - true, -- has_reverse_cost? - null); -- no turn restrictions - - -PREPARE q2 AS -SELECT seq-1, node::INTEGER, edge::INTEGER, cost::TEXT FROM pgr_withPoints( - $$SELECT id, source, target, cost, reverse_cost from edges$$, - $$(SELECT 1 AS pid, 1 AS edge_id, 0.5::float AS fraction) - UNION - (SELECT 2, 6, 0.5)$$, - -1, -2); - -SELECT set_eq('q2', 'q1', 'No turn restriction from 1 to 5 returns same as pgr_withPoints'); - --- Finish the tests and clean up. -SELECT * FROM finish(); -ROLLBACK; diff --git a/pgtap/trsp/trsp/inner_query.pg b/pgtap/trsp/trsp/inner_query.pg index 638c7f92eb..afb9661b4f 100644 --- a/pgtap/trsp/trsp/inner_query.pg +++ b/pgtap/trsp/trsp/inner_query.pg @@ -1,4 +1,3 @@ - /*PGR-GNU***************************************************************** Copyright (c) 2018 pgRouting developers @@ -19,9 +18,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ********************************************************************PGR-GNU*/ BEGIN; -UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost); -SELECT CASE WHEN min_version('3.4.0') THEN plan(540) ELSE plan(324) END; -SET client_min_messages TO ERROR; +UPDATE edges SET cost = sign(cost) + 0.001 * id * id, reverse_cost = sign(reverse_cost) + 0.001 * id * id; +SELECT CASE WHEN min_lib_version('4.0.0') AND min_version('3.6.0') THEN plan(216) + WHEN NOT min_lib_version('4.0.0') AND min_version('3.4.0') THEN plan(216) + ELSE plan(1) END; CREATE OR REPLACE FUNCTION inner_query() RETURNS SETOF TEXT AS @@ -32,9 +32,17 @@ DECLARE empty_restriction TEXT; BEGIN - IF min_version('3.4.0') THEN + IF NOT min_version('3.4.0') THEN + RETURN QUERY SELECT skip(1, 'New signatures added on 3.4.0'); + RETURN; + END IF; + + IF min_lib_version('4.0.0') and NOT min_version('3.6.0') THEN + RETURN QUERY SELECT skip(1, 'Internal function _v4trsp deprecated on 3.6.0 deleted on 4.0.0'); + RETURN; + END IF; - unrelated_restriction := '$$SELECT 1 AS id, 100::float AS cost, 25::INTEGER AS target_id, ARRAY[33, 32, 25] AS path$$'; + unrelated_restriction := '$$SELECT 1 AS id, 100 AS cost, ARRAY[33, 32, 25] AS path$$'; empty_restriction := '$$SELECT * FROM restrictions WHERE id > 7$$'; RETURN QUERY SELECT style_dijkstra('pgr_trsp(', ', ' || empty_restriction || ', 6, 16, false)'); @@ -43,27 +51,6 @@ BEGIN RETURN QUERY SELECT style_dijkstra('pgr_trsp(', ', ' || unrelated_restriction || ', 6, 16, false)'); RETURN QUERY SELECT style_dijkstra('pgr_trsp(', ', ' || unrelated_restriction || ', 6, 16, true)'); - END IF; - - restriction := '$$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, ''32, 33''::TEXT AS via_path$$)'; - - - RETURN QUERY SELECT style_dijkstra_trsp('pgr_trsp', ', 6, 16, false, true)', TRUE); - RETURN QUERY SELECT style_dijkstra_trsp('pgr_trsp', ', 6, 16, false, true, NULL)', TRUE); - RETURN QUERY SELECT style_dijkstra_trsp('pgr_trsp', ', 6, 16, false, true, ' || restriction, TRUE); - - RETURN QUERY SELECT style_dijkstra_trsp('pgr_trsp', ', 6, 16, true, true)', TRUE); - RETURN QUERY SELECT style_dijkstra_trsp('pgr_trsp', ', 6, 16, true, true, NULL)', TRUE); - RETURN QUERY SELECT style_dijkstra_trsp('pgr_trsp', ', 6, 16, true, true, ' || restriction, TRUE); - - RETURN QUERY SELECT style_dijkstra_trsp('pgr_trsp', ', 6, 16, false, false)', FALSE); - RETURN QUERY SELECT style_dijkstra_trsp('pgr_trsp', ', 6, 16, false, false, NULL)', FALSE); - RETURN QUERY SELECT style_dijkstra_trsp('pgr_trsp', ', 6, 16, false, false, ' || restriction, FALSE); - - RETURN QUERY SELECT style_dijkstra_trsp('pgr_trsp', ', 6, 16, true, false)', FALSE); - RETURN QUERY SELECT style_dijkstra_trsp('pgr_trsp', ', 6, 16, true, false, NULL)', FALSE); - RETURN QUERY SELECT style_dijkstra_trsp('pgr_trsp', ', 6, 16, true, false, ' || restriction, FALSE); - END; $BODY$ LANGUAGE plpgsql; diff --git a/pgtap/trsp/trsp/no_crash_test.pg b/pgtap/trsp/trsp/no_crash_test.pg index acd250d0cb..15f0dd28c1 100644 --- a/pgtap/trsp/trsp/no_crash_test.pg +++ b/pgtap/trsp/trsp/no_crash_test.pg @@ -20,7 +20,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. BEGIN; UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost); -SELECT CASE WHEN min_version('3.4.0') THEN plan(147) ELSE plan(1) END; +SELECT CASE WHEN min_lib_version('4.0.0') AND min_version('3.6.0') THEN plan(147) + WHEN NOT min_lib_version('4.0.0') AND min_version('3.4.0') THEN plan(147) + ELSE plan(1) END; + SET client_min_messages TO ERROR; PREPARE all_edges AS @@ -92,8 +95,14 @@ params TEXT[]; params1 TEXT[]; subs TEXT[]; BEGIN + IF NOT min_version('3.4.0') THEN - RETURN QUERY SELECT skip(1, 'New signatures on 3.4.0'); + RETURN QUERY SELECT skip(1, 'New signatures added on 3.4.0'); + RETURN; + END IF; + + IF min_lib_version('4.0.0') and NOT min_version('3.6.0') THEN + RETURN QUERY SELECT skip(1, 'Internal function _v4trsp deprecated on 3.6.0 deleted on 4.0.0'); RETURN; END IF; diff --git a/pgtap/trsp/trsp/no_crash_test/int_flt.pg b/pgtap/trsp/trsp/no_crash_test/int_flt.pg deleted file mode 100644 index e504cd3539..0000000000 --- a/pgtap/trsp/trsp/no_crash_test/int_flt.pg +++ /dev/null @@ -1,125 +0,0 @@ - -/*PGR-GNU***************************************************************** - -Copyright (c) 2018 pgRouting developers -Mail: project@pgrouting.org - ------- -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - ********************************************************************PGR-GNU*/ -BEGIN; - -UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost); -SELECT plan(32); -SET client_min_messages TO ERROR; - -PREPARE edges AS -SELECT id, source, target, cost, reverse_cost FROM edges; - -PREPARE null_ret AS -SELECT id FROM vertices WHERE id IN (-1); - -SELECT isnt_empty('edges', 'Should not be empty to tests be meaningful'); -SELECT is_empty('null_ret', 'Should be empty to tests be meaningful'); - - -CREATE OR REPLACE FUNCTION test(params TEXT[], subs TEXT[]) -RETURNS SETOF TEXT AS -$BODY$ -DECLARE -mp TEXT[]; -q1 TEXT; -q TEXT; -BEGIN - FOR i IN 0..array_length(params, 1) LOOP - mp := params; - IF i != 0 THEN - mp[i] = subs[i]; - END IF; - - q1 := format($$ - SELECT * FROM pgr_trsp( - %1$L, %2$s, %3$s, %4$s, %5$s, %6$s, %7$s - ) - $$, - mp[1], mp[2], mp[3], mp[4], mp[5], mp[6], mp[7] - ); - - - IF i IN (1) THEN - RETURN query SELECT * FROM throws_ok(q1); - ELSE - RETURN query SELECT * FROM lives_ok(q1, 'should live i ' || i); - IF i IN (0,7) THEN - RETURN query SELECT * FROM isnt_empty(q1, 'should not be empty i' || i); - ELSE - RETURN query SELECT * FROM is_empty(q1, 'should be empty i' || i); - END IF; - END IF; - - - END LOOP; - -END -$BODY$ -LANGUAGE plpgsql VOLATILE; - -CREATE OR REPLACE FUNCTION test_function() -RETURNS SETOF TEXT AS -$BODY$ -DECLARE -params TEXT[]; -subs TEXT[]; -BEGIN - params = ARRAY['SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT FROM edges', - '1', - '0.5::FLOAT', - '2', - '0.5::FLOAT', - 'true', - 'true' - ]::TEXT[]; - subs = ARRAY[ - NULL, - '(SELECT id::INTEGER FROM vertices WHERE id IN (-1))', - 'NULL', - '(SELECT id::INTEGER FROM vertices WHERE id IN (-1))', - 'NULL', - 'NULL', - 'NULL' - ]::TEXT[]; - - RETURN query SELECT * FROM test(params, subs); - - - subs = ARRAY[ - NULL, - 'NULL', - 'NULL', - 'NULL', - 'NULL', - 'NULL', - 'NULL' - ]::TEXT[]; - RETURN query SELECT * FROM test(params, subs); - - -END -$BODY$ -LANGUAGE plpgsql VOLATILE; - - -SELECT * FROM test_function(); - -SELECT finish(); -ROLLBACK; diff --git a/pgtap/trsp/trsp/no_crash_test/int_int.pg b/pgtap/trsp/trsp/no_crash_test/int_int.pg deleted file mode 100644 index 228dc824ba..0000000000 --- a/pgtap/trsp/trsp/no_crash_test/int_int.pg +++ /dev/null @@ -1,294 +0,0 @@ - -/*PGR-GNU***************************************************************** - -Copyright (c) 2018 pgRouting developers -Mail: project@pgrouting.org - ------- -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - ********************************************************************PGR-GNU*/ -BEGIN; - --- Test for deprecated signature -UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost); -SELECT CASE WHEN min_version('3.4.0') THEN plan(176) ELSE plan(23) END; -SET client_min_messages TO ERROR; - -PREPARE edges AS -SELECT id, source, target, cost, reverse_cost FROM edges; - -PREPARE null_ret AS -SELECT id FROM vertices WHERE id IN (-1); - -CREATE OR REPLACE FUNCTION test(params TEXT[], subs TEXT[]) -RETURNS SETOF TEXT AS -$BODY$ -DECLARE -mp TEXT[]; -q1 TEXT; -q TEXT; -BEGIN - FOR i IN 0..array_length(params, 1) LOOP - mp := params; - IF i != 0 THEN - mp[i] = subs[i]; - END IF; - - q1 := format($$ - SELECT * FROM pgr_trsp( - %1$L, %2$s, %3$s, %4$s, %5$s - ) - $$, - mp[1], mp[2], mp[3], mp[4], mp[5] - ); - - if i IN (1) THEN - RETURN query SELECT * FROM throws_ok(q1); - ELSE - RETURN query SELECT * FROM lives_ok(q1, 'should live i ' || i); - IF i IN (0,5) THEN - RETURN query SELECT * FROM isnt_empty(q1, 'should not be empty i' || i); - ELSE - RETURN query SELECT * FROM is_empty(q1, 'should be empty i' || i); - END IF; - END IF; - END LOOP; - -END -$BODY$ -LANGUAGE plpgsql VOLATILE; - -CREATE OR REPLACE FUNCTION test_function() -RETURNS SETOF TEXT AS -$BODY$ -DECLARE -params TEXT[]; -subs TEXT[]; -BEGIN - IF min_version('3.4.0') THEN - - -- ONE TO ONE - RETURN QUERY SELECT isnt_empty('edges', 'Should not be empty to tests be meaningful'); - RETURN QUERY SELECT is_empty('null_ret', 'Should be empty to tests be meaningful'); - - params = ARRAY[ - '$$SELECT id, source, target, cost, reverse_cost FROM edges$$', - '$$SELECT * FROM restrictions$$', - '5', - '6', - 'true' - ]::TEXT[]; - subs = ARRAY[ - 'NULL::TEXT', - 'NULL::TEXT', - '(SELECT id::INTEGER FROM vertices WHERE id IN (-1))', - '(SELECT id::INTEGER FROM vertices WHERE id IN (-1))', - 'NULL' - ]::TEXT[]; - - RETURN query SELECT * FROM no_crash_test('pgr_trsp', params, subs); - - subs = ARRAY[ - 'NULL::TEXT', - 'NULL', - 'NULL::BIGINT', - 'NULL::BIGINT', - 'NULL' - ]::TEXT[]; - RETURN query SELECT * FROM no_crash_test('pgr_trsp', params, subs); - - params = ARRAY[ - '$$edges$$', - '$$SELECT * FROM restrictions$$', - '5', - '6', - 'true' - ]::TEXT[]; - RETURN query SELECT no_crash_test('pgr_trsp', params, subs); - - -- ONE TO MANY - params = ARRAY[ - '$$SELECT id, source, target, cost, reverse_cost FROM edges$$', - '$$SELECT * FROM restrictions$$', - '5', - 'ARRAY[6,10]::BIGINT[]', - 'true' - ]::TEXT[]; - subs = ARRAY[ - 'NULL::TEXT', - 'NULL::TEXT', - '(SELECT id::INTEGER FROM vertices WHERE id IN (-1))', - 'NULL::BIGINT[]', - 'NULL' - ]::TEXT[]; - RETURN query SELECT * FROM no_crash_test('pgr_trsp', params, subs); - - subs = ARRAY[ - 'NULL::TEXT', - 'NULL', - 'NULL::BIGINT', - 'NULL::BIGINT[]', - 'NULL' - ]::TEXT[]; - RETURN query SELECT * FROM no_crash_test('pgr_trsp', params, subs); - - params = ARRAY[ - '$$edges$$', - '$$SELECT * FROM restrictions$$', - '5', - 'ARRAY[6,10]::BIGINT[]', - 'true' - ]::TEXT[]; - RETURN query SELECT no_crash_test('pgr_trsp', params, subs); - - -- MANY TO ONE - params = ARRAY[ - '$$SELECT id, source, target, cost, reverse_cost FROM edges$$', - '$$SELECT * FROM restrictions$$', - 'ARRAY[6,10]::BIGINT[]', - '5', - 'true' - ]::TEXT[]; - subs = ARRAY[ - 'NULL::TEXT', - 'NULL::TEXT', - 'NULL::BIGINT[]', - '(SELECT id::INTEGER FROM vertices WHERE id IN (-1))', - 'NULL' - ]::TEXT[]; - RETURN query SELECT * FROM no_crash_test('pgr_trsp', params, subs); - - subs = ARRAY[ - 'NULL::TEXT', - 'NULL', - 'NULL::BIGINT[]', - 'NULL::BIGINT', - 'NULL' - ]::TEXT[]; - RETURN query SELECT * FROM no_crash_test('pgr_trsp', params, subs); - - params = ARRAY[ - '$$edges$$', - '$$SELECT * FROM restrictions$$', - 'ARRAY[6,10]::BIGINT[]', - '5', - 'true' - ]::TEXT[]; - RETURN query SELECT no_crash_test('pgr_trsp', params, subs); - - -- MANY TO MANY - params = ARRAY[ - '$$SELECT id, source, target, cost, reverse_cost FROM edges$$', - '$$SELECT * FROM restrictions$$', - 'ARRAY[6,10]::BIGINT[]', - 'ARRAY[5,7]::BIGINT[]', - 'true' - ]::TEXT[]; - subs = ARRAY[ - 'NULL::TEXT', - 'NULL::TEXT', - 'NULL::BIGINT[]', - 'NULL::BIGINT[]', - 'NULL' - ]::TEXT[]; - RETURN query SELECT * FROM no_crash_test('pgr_trsp', params, subs); - - subs = ARRAY[ - 'NULL::TEXT', - 'NULL', - 'NULL::BIGINT[]', - 'NULL::BIGINT[]', - 'NULL' - ]::TEXT[]; - RETURN query SELECT * FROM no_crash_test('pgr_trsp', params, subs); - - params = ARRAY[ - '$$edges$$', - '$$SELECT * FROM restrictions$$', - 'ARRAY[6,10]::BIGINT[]', - 'ARRAY[5,7]::BIGINT[]', - 'true' - ]::TEXT[]; - RETURN query SELECT no_crash_test('pgr_trsp', params, subs); - - -- COMBINATIONS - params = ARRAY[ - '$$SELECT id, source, target, cost, reverse_cost FROM edges$$', - '$$SELECT * FROM restrictions$$', - '$$SELECT * FROM (VALUES (6,5), (6,8),(10,5),(10,8)) AS t(source, target)$$', - 'true' - ]::TEXT[]; - subs = ARRAY[ - 'NULL::TEXT', - 'NULL::TEXT', - 'NULL::TEXT', - 'NULL::BOOLEAN' - ]::TEXT[]; - RETURN query SELECT * FROM no_crash_test('pgr_trsp', params, subs); - - subs = ARRAY[ - 'NULL::TEXT', - 'NULL', - 'NULL', - 'NULL::BOOLEAN' - ]::TEXT[]; - RETURN query SELECT * FROM no_crash_test('pgr_trsp', params, subs); - - params = ARRAY[ - '$$edges$$', - '$$SELECT * FROM restrictions$$', - '$$SELECT * FROM (VALUES (6,5), (6,8),(10,5),(10,8)) AS t(source, target)$$', - 'true' - ]::TEXT[]; - RETURN query SELECT no_crash_test('pgr_trsp', params, subs); - - ELSE - - params = ARRAY['SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT FROM edges', - '5', - '6', - 'true', - 'true' - ]::TEXT[]; - subs = ARRAY[ - NULL, - '(SELECT id::INTEGER FROM vertices WHERE id IN (-1))', - '(SELECT id::INTEGER FROM vertices WHERE id IN (-1))', - 'NULL', - 'NULL' - ]::TEXT[]; - - RETURN query SELECT test(params, subs); - - subs = ARRAY[ - NULL, - 'NULL', - 'NULL', - 'NULL', - 'NULL' - ]::TEXT[]; - RETURN query SELECT test(params, subs); - - RETURN QUERY SELECT skip(1, 'pgr_trsp Has some crashes'); - - END IF; - -END -$BODY$ -LANGUAGE plpgsql VOLATILE; - - -SELECT * FROM test_function(); - -SELECT finish(); -ROLLBACK; diff --git a/pgtap/trsp/trsp/types_check.pg b/pgtap/trsp/trsp/types_check.pg index 4e6629ac42..8cc32c3e1f 100644 --- a/pgtap/trsp/trsp/types_check.pg +++ b/pgtap/trsp/trsp/types_check.pg @@ -20,31 +20,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. BEGIN; -SELECT CASE WHEN min_version('3.4.0') THEN plan(20) ELSE plan(8) END; +SELECT CASE WHEN min_version('3.4.0') THEN plan(14) ELSE plan(2) END; SELECT has_function('pgr_trsp'); -SELECT has_function('pgr_trsp', ARRAY['text','integer','integer','boolean','boolean','text']); -SELECT has_function('pgr_trsp', ARRAY['text','integer','double precision','integer','double precision','boolean','boolean','text']); - -SELECT function_returns('pgr_trsp', ARRAY['text','integer','integer','boolean','boolean','text'],'setof record'); -SELECT function_returns('pgr_trsp', ARRAY['text','integer','double precision','integer','double precision','boolean','boolean','text'],'setof record'); - -SELECT bag_has( - $$SELECT proargnames from pg_proc where proname = 'pgr_trsp'$$, - $$VALUES - ('{"","","","","","restrictions_sql","seq","id1","id2","cost"}'::TEXT[]), - ('{"","","","","","","","turn_restrict_sql","seq","id1","id2","cost"}'::TEXT[]) - $$, 'old signature names'); - -SELECT bag_has( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_trsp'$$, - $$VALUES - ('{25,23,23,16,16,25,23,23,23,701}'::OID[]), - ('{25,23,701,23,701,16,16,25,23,23,23,701}'::OID[]) - $$, 'old signature types'); - - SELECT types_check_general('pgr_trsp'); SELECT finish(); diff --git a/pgtap/trsp/trspViaEdges/inner_query.pg b/pgtap/trsp/trspViaEdges/inner_query.pg deleted file mode 100644 index 9006c9ab2d..0000000000 --- a/pgtap/trsp/trspViaEdges/inner_query.pg +++ /dev/null @@ -1,62 +0,0 @@ - -/*PGR-GNU***************************************************************** - -Copyright (c) 2018 pgRouting developers -Mail: project@pgrouting.org - ------- -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - ********************************************************************PGR-GNU*/ -BEGIN; - --- This test is prepared for when: --- Tentatively trsp will accepts ANY-INTEGER and ANY-NUMERICAL on 4.0.0 --- Adjust style_dijkstra_trsp -> style_dijkstra when that happens - -UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost); -SELECT plan(324); -SET client_min_messages TO ERROR; - -CREATE OR REPLACE FUNCTION inner_query() -RETURNS SETOF TEXT AS -$BODY$ -DECLARE - restriction TEXT; -BEGIN - - restriction := '$$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, ''32, 33''::TEXT AS via_path$$)'; - - RETURN QUERY SELECT style_dijkstra_trsp('pgr_trspViaEdges', ', ARRAY[4,9,15]::INTEGER[], ARRAY[0.5, 0.5, 0.5]::FLOAT[], true, true)', TRUE); - RETURN QUERY SELECT style_dijkstra_trsp('pgr_trspViaEdges', ', ARRAY[4,9,15]::INTEGER[], ARRAY[0.5, 0.5, 0.5]::FLOAT[], true, true, NULL)', TRUE); - RETURN QUERY SELECT style_dijkstra_trsp('pgr_trspViaEdges', ', ARRAY[4,9,15]::INTEGER[], ARRAY[0.5, 0.5, 0.5]::FLOAT[], true, true, ' || restriction, TRUE); - - RETURN QUERY SELECT style_dijkstra_trsp('pgr_trspViaEdges', ', ARRAY[4,9,15]::INTEGER[], ARRAY[0.5, 0.5, 0.5]::FLOAT[], false, true)', TRUE); - RETURN QUERY SELECT style_dijkstra_trsp('pgr_trspViaEdges', ', ARRAY[4,9,15]::INTEGER[], ARRAY[0.5, 0.5, 0.5]::FLOAT[], false, true, NULL)', TRUE); - RETURN QUERY SELECT style_dijkstra_trsp('pgr_trspViaEdges', ', ARRAY[4,9,15]::INTEGER[], ARRAY[0.5, 0.5, 0.5]::FLOAT[], false, true, ' || restriction, TRUE); - - RETURN QUERY SELECT style_dijkstra_trsp('pgr_trspViaEdges', ', ARRAY[4,9,15]::INTEGER[], ARRAY[0.5, 0.5, 0.5]::FLOAT[], true, false)', FALSE); - RETURN QUERY SELECT style_dijkstra_trsp('pgr_trspViaEdges', ', ARRAY[4,9,15]::INTEGER[], ARRAY[0.5, 0.5, 0.5]::FLOAT[], true, false, NULL)', FALSE); - RETURN QUERY SELECT style_dijkstra_trsp('pgr_trspViaEdges', ', ARRAY[4,9,15]::INTEGER[], ARRAY[0.5, 0.5, 0.5]::FLOAT[], true, false, ' || restriction, FALSE); - - RETURN QUERY SELECT style_dijkstra_trsp('pgr_trspViaEdges', ', ARRAY[4,9,15]::INTEGER[], ARRAY[0.5, 0.5, 0.5]::FLOAT[], false, false)', FALSE); - RETURN QUERY SELECT style_dijkstra_trsp('pgr_trspViaEdges', ', ARRAY[4,9,15]::INTEGER[], ARRAY[0.5, 0.5, 0.5]::FLOAT[], false, false, NULL)', FALSE); - RETURN QUERY SELECT style_dijkstra_trsp('pgr_trspViaEdges', ', ARRAY[4,9,15]::INTEGER[], ARRAY[0.5, 0.5, 0.5]::FLOAT[], false, false, ' || restriction, FALSE); - -END; -$BODY$ -LANGUAGE plpgsql; - -SELECT inner_query(); - -SELECT finish(); -ROLLBACK; diff --git a/pgtap/trsp/trspViaEdges/no_crash_test.pg b/pgtap/trsp/trspViaEdges/no_crash_test.pg deleted file mode 100644 index c7bb851381..0000000000 --- a/pgtap/trsp/trspViaEdges/no_crash_test.pg +++ /dev/null @@ -1,143 +0,0 @@ - -/*PGR-GNU***************************************************************** - -Copyright (c) 2018 pgRouting developers -Mail: project@pgrouting.org - ------- -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - ********************************************************************PGR-GNU*/ -BEGIN; - -UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost); -SELECT CASE WHEN min_version('4.0.0') THEN plan(22) ELSE plan(21) END; -SET client_min_messages TO ERROR; - -PREPARE edges AS -SELECT id, source, target, cost, reverse_cost FROM edges; - -PREPARE null_ret AS -SELECT id FROM vertices WHERE id IN (-1); - - -CREATE OR REPLACE FUNCTION test(params TEXT[], subs TEXT[]) -RETURNS SETOF TEXT AS -$BODY$ -DECLARE -mp TEXT[]; -q1 TEXT; -q TEXT; -BEGIN - FOR i IN 0..array_length(params, 1) LOOP - mp := params; - IF i != 0 THEN - mp[i] = subs[i]; - END IF; - - q1 := format($$ - SELECT * FROM pgr_trspViaEdges( - %1$L, %2$s, %3$s, %4$s, %5$s - ) - $$, - mp[1], mp[2], mp[3], mp[4], mp[5] - ); - - if i IN (1,3) THEN - RETURN query SELECT * FROM throws_ok(q1); - ELSE - RETURN query SELECT * FROM lives_ok(q1, 'should live i ' || i); - RETURN query SELECT * FROM is_empty(q1, 'should be empty i' || i); - END IF; - - END LOOP; - -END -$BODY$ -LANGUAGE plpgsql VOLATILE; - -CREATE OR REPLACE FUNCTION test_function() -RETURNS SETOF TEXT AS -$BODY$ -DECLARE -params TEXT[]; -subs TEXT[]; -BEGIN - IF min_version('4.0.0') THEN - - RETURN QUERY SELECT isnt_empty('edges', 'Should not be empty to tests be meaningful'); - RETURN QUERY SELECT is_empty('null_ret', 'Should be empty to tests be meaningful'); - - params = ARRAY['$$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT FROM edges$$', - 'ARRAY[1, 2]', - 'ARRAY[0.5, 0.5]::FLOAT[]', - 'true', - 'true' - ]::TEXT[]; - subs = ARRAY[ - 'NULL', - '(SELECT array_agg(id)::INTEGER[] FROM vertices WHERE id IN (-1))', - 'NULL::FLOAT[]', - 'NULL', - 'NULL' - ]::TEXT[]; - RETURN query SELECT no_crash_test('pgr_trspViaEdges', params, subs); - - subs = ARRAY[ - 'NULL', - 'NULL::INTEGER[]', - 'NULL::FLOAT[]', - 'NULL', - 'NULL' - ]::TEXT[]; - RETURN query SELECT no_crash_test('pgr_trspViaEdges', params, subs); - - ELSE - - params = ARRAY['SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT FROM edges', - 'ARRAY[1]', - 'ARRAY[1.5]::FLOAT[]', - 'true', - 'true' - ]::TEXT[]; - subs = ARRAY[ - NULL, - '(SELECT array_agg(id)::INTEGER[] FROM vertices WHERE id IN (-1))', - 'NULL::FLOAT[]', - 'NULL', - 'NULL' - ]::TEXT[]; - - RETURN query SELECT test(params, subs); - - subs = ARRAY[ - NULL, - 'NULL::INTEGER[]', - 'NULL::FLOAT[]', - 'NULL', - 'NULL' - ]::TEXT[]; - RETURN query SELECT test(params, subs); - - RETURN QUERY SELECT skip(1, 'pgr_trspViaEdges Has some crashes'); - - END IF; - -END -$BODY$ -LANGUAGE plpgsql VOLATILE; - - -SELECT test_function(); - -SELECT finish(); -ROLLBACK; diff --git a/pgtap/trsp/trspViaEdges/types_check.pg b/pgtap/trsp/trspViaEdges/types_check.pg deleted file mode 100644 index 632cda71f8..0000000000 --- a/pgtap/trsp/trspViaEdges/types_check.pg +++ /dev/null @@ -1,45 +0,0 @@ - -/*PGR-GNU***************************************************************** - -Copyright (c) 2018 pgRouting developers -Mail: project@pgrouting.org - ------- -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - ********************************************************************PGR-GNU*/ - -BEGIN; - -SELECT plan(5); - -SELECT has_function('pgr_trspviaedges'); - -SELECT has_function('pgr_trspviaedges', ARRAY['text','integer[]','double precision[]','boolean','boolean','text']); - -SELECT function_returns('pgr_trspviaedges', ARRAY['text','integer[]','double precision[]','boolean','boolean','text'],'setof record'); - - -SELECT set_eq( - $$SELECT proargnames from pg_proc where proname = 'pgr_trspviaedges'$$, - $$VALUES - ('{"","","","","","turn_restrict_sql","seq","id1","id2","id3","cost"}'::TEXT[]) - $$); - -SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_trspviaedges'$$, - $$VALUES - ('{25,1007,1022,16,16,25,23,23,23,23,701}'::OID[]) - $$); - -SELECT finish(); -ROLLBACK; diff --git a/pgtap/trsp/trspViaVertices/compare_dijkstra/no_restrictions_directed.pg b/pgtap/trsp/trspViaVertices/compare_dijkstra/no_restrictions_directed.pg deleted file mode 100644 index 2bd9c11ac1..0000000000 --- a/pgtap/trsp/trspViaVertices/compare_dijkstra/no_restrictions_directed.pg +++ /dev/null @@ -1,33 +0,0 @@ - -/*PGR-GNU***************************************************************** - -Copyright (c) 2018 pgRouting developers -Mail: project@pgrouting.org - ------- -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - ********************************************************************PGR-GNU*/ -BEGIN; - - -SELECT plan(1024); -SET client_min_messages TO ERROR; - -UPDATE edges SET cost = sign(cost) + 0.001 * id * id, reverse_cost = sign(reverse_cost) + 0.001 * id * id; - -SELECT compare_trspViaV_dijstraVia(16, true); - --- Finish the tests and clean up. -SELECT * FROM finish(); -ROLLBACK; - diff --git a/pgtap/trsp/trspViaVertices/inner_query.pg b/pgtap/trsp/trspViaVertices/inner_query.pg deleted file mode 100644 index c2708a023c..0000000000 --- a/pgtap/trsp/trspViaVertices/inner_query.pg +++ /dev/null @@ -1,62 +0,0 @@ - -/*PGR-GNU***************************************************************** - -Copyright (c) 2018 pgRouting developers -Mail: project@pgrouting.org - ------- -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - ********************************************************************PGR-GNU*/ -BEGIN; - --- This test is prepared for when: --- Tentatively trsp will accepts ANY-INTEGER and ANY-NUMERICAL on 4.0.0 --- Adjust style_dijkstra_trsp -> style_dijkstra when that happens - -UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost); -SELECT plan(324); -SET client_min_messages TO ERROR; - -CREATE OR REPLACE FUNCTION inner_query() -RETURNS SETOF TEXT AS -$BODY$ -DECLARE - restriction TEXT; -BEGIN - - restriction := '$$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, ''32, 33''::TEXT AS via_path$$)'; - - RETURN QUERY SELECT style_dijkstra_trsp('pgr_trspViaVertices', ', ARRAY[6,16,17]::INTEGER[], true, true)', TRUE); - RETURN QUERY SELECT style_dijkstra_trsp('pgr_trspViaVertices', ', ARRAY[6,16,17]::INTEGER[], true, true, NULL)', TRUE); - RETURN QUERY SELECT style_dijkstra_trsp('pgr_trspViaVertices', ', ARRAY[6,16,17]::INTEGER[], true, true, ' || restriction, TRUE); - - RETURN QUERY SELECT style_dijkstra_trsp('pgr_trspViaVertices', ', ARRAY[6,16,17]::INTEGER[], false, true)', TRUE); - RETURN QUERY SELECT style_dijkstra_trsp('pgr_trspViaVertices', ', ARRAY[6,16,17]::INTEGER[], false, true, NULL)', TRUE); - RETURN QUERY SELECT style_dijkstra_trsp('pgr_trspViaVertices', ', ARRAY[6,16,17]::INTEGER[], false, true, ' || restriction, TRUE); - - RETURN QUERY SELECT style_dijkstra_trsp('pgr_trspViaVertices', ', ARRAY[6,16,17]::INTEGER[], true, false)', FALSE); - RETURN QUERY SELECT style_dijkstra_trsp('pgr_trspViaVertices', ', ARRAY[6,16,17]::INTEGER[], true, false, NULL)', FALSE); - RETURN QUERY SELECT style_dijkstra_trsp('pgr_trspViaVertices', ', ARRAY[6,16,17]::INTEGER[], true, false, ' || restriction, FALSE); - - RETURN QUERY SELECT style_dijkstra_trsp('pgr_trspViaVertices', ', ARRAY[6,16,17]::INTEGER[], false, false)', FALSE); - RETURN QUERY SELECT style_dijkstra_trsp('pgr_trspViaVertices', ', ARRAY[6,16,17]::INTEGER[], false, false, NULL)', FALSE); - RETURN QUERY SELECT style_dijkstra_trsp('pgr_trspViaVertices', ', ARRAY[6,16,17]::INTEGER[], false, false, ' || restriction, FALSE); - -END; -$BODY$ -LANGUAGE plpgsql; - -SELECT inner_query(); - -SELECT finish(); -ROLLBACK; diff --git a/pgtap/trsp/trspViaVertices/no_crash_test.pg b/pgtap/trsp/trspViaVertices/no_crash_test.pg deleted file mode 100644 index 5fa675eb5e..0000000000 --- a/pgtap/trsp/trspViaVertices/no_crash_test.pg +++ /dev/null @@ -1,136 +0,0 @@ - -/*PGR-GNU***************************************************************** - -Copyright (c) 2018 pgRouting developers -Mail: project@pgrouting.org - ------- -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - ********************************************************************PGR-GNU*/ -BEGIN; - -UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost); -SELECT CASE WHEN min_version('4.0.0') THEN plan(22) ELSE plan(19) END; -SET client_min_messages TO ERROR; - -PREPARE edges AS -SELECT id, source, target, cost, reverse_cost FROM edges; - -PREPARE null_ret AS -SELECT id FROM vertices WHERE id IN (-1); - -CREATE OR REPLACE FUNCTION test(params TEXT[], subs TEXT[]) -RETURNS SETOF TEXT AS -$BODY$ -DECLARE -mp TEXT[]; -q1 TEXT; -q TEXT; -BEGIN - FOR i IN 0..array_length(params, 1) LOOP - mp := params; - IF i != 0 THEN - mp[i] = subs[i]; - END IF; - - q1 := format($$ - SELECT * FROM pgr_trspViaVertices( - %1$L, %2$s, %3$s, %4$s - ) - $$, - mp[1], mp[2], mp[3], mp[4] - ); - - if i IN (1) THEN - RETURN query SELECT * FROM throws_ok(q1); - ELSE - RETURN query SELECT * FROM lives_ok(q1, 'should live i' || i); - RETURN query SELECT * FROM is_empty(q1, 'should be empty i' || i); - END IF; - END LOOP; - -END -$BODY$ -LANGUAGE plpgsql VOLATILE; - -CREATE OR REPLACE FUNCTION test_function() -RETURNS SETOF TEXT AS -$BODY$ -DECLARE -params TEXT[]; -subs TEXT[]; -BEGIN - IF min_version('4.0.0') THEN - - RETURN QUERY SELECT isnt_empty('edges', 'Should not be empty to tests be meaningful'); - RETURN QUERY SELECT is_empty('null_ret', 'Should be empty to tests be meaningful'); - - params = ARRAY['$$SELECT id, source, target, cost, reverse_cost FROM edges$$', - 'ARRAY[1, 3]', - 'true', - 'true' - ]::TEXT[]; - subs = ARRAY[ - 'NULL', - '(SELECT array_agg(id)::INTEGER[] FROM vertices WHERE id IN (-1))', - 'NULL', - 'NULL' - ]::TEXT[]; - - RETURN query SELECT * FROM no_crash_test('pgr_trspViaVertices', params, subs); - - subs = ARRAY[ - 'NULL', - 'NULL::INTEGER[]', - 'NULL', - 'NULL' - ]::TEXT[]; - RETURN query SELECT * FROM no_crash_test('pgr_trspViaVertices', params, subs); - - ELSE - - params = ARRAY['SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT FROM edges', - 'ARRAY[1]', - 'true', - 'true' - ]::TEXT[]; - subs = ARRAY[ - NULL, - '(SELECT array_agg(id)::INTEGER[] FROM vertices WHERE id IN (-1))', - 'NULL', - 'NULL' - ]::TEXT[]; - - RETURN query SELECT * FROM test(params, subs); - - subs = ARRAY[ - NULL, - 'NULL::INTEGER[]', - 'NULL', - 'NULL' - ]::TEXT[]; - RETURN query SELECT * FROM test(params, subs); - - RETURN QUERY SELECT skip(1, 'pgr_trspViaVertices Has some crashes'); - - END IF; - -END -$BODY$ -LANGUAGE plpgsql VOLATILE; - - -SELECT test_function(); - -SELECT finish(); -ROLLBACK; diff --git a/pgtap/trsp/trspViaVertices/types_check.pg b/pgtap/trsp/trspViaVertices/types_check.pg deleted file mode 100644 index 8f48cfe2cc..0000000000 --- a/pgtap/trsp/trspViaVertices/types_check.pg +++ /dev/null @@ -1,44 +0,0 @@ - -/*PGR-GNU***************************************************************** - -Copyright (c) 2018 pgRouting developers -Mail: project@pgrouting.org - ------- -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - ********************************************************************PGR-GNU*/ - -BEGIN; - -SELECT plan(5); - -SELECT has_function('pgr_trspviavertices'); - -SELECT has_function('pgr_trspviavertices', ARRAY['text','anyarray','boolean','boolean','text']); - -SELECT function_returns('pgr_trspviavertices', ARRAY['text','anyarray','boolean','boolean','text'],'setof record'); - -SELECT set_eq( - $$SELECT proargnames from pg_proc where proname = 'pgr_trspviavertices'$$, - $$VALUES - ('{"","","","","restrictions_sql","seq","id1","id2","id3","cost"}'::TEXT[]) - $$); - -SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_trspviavertices'$$, - $$VALUES - ('{25,2277,16,16,25,23,23,23,23,701}'::OID[]) - $$); - -SELECT finish(); -ROLLBACK; diff --git a/pgtap/trsp/trspVia_withPoints/edge_cases/point_in_vertex.pg b/pgtap/trsp/trspVia_withPoints/edge_cases/point_in_vertex.pg new file mode 100644 index 0000000000..0a95f2d882 --- /dev/null +++ b/pgtap/trsp/trspVia_withPoints/edge_cases/point_in_vertex.pg @@ -0,0 +1,192 @@ +/*PGR-GNU***************************************************************** + +Copyright (c) 2024 pgRouting developers +Mail: project@pgrouting.org + +------ +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + ********************************************************************PGR-GNU*/ +BEGIN; + +SET extra_float_digits=-3; + +SELECT CASE WHEN min_version('3.4.0') THEN plan(38) ELSE plan(1) END; + +CREATE VIEW four_edges AS +SELECT * FROM edges WHERE id IN (1,4,10,14); + +CREATE OR REPLACE FUNCTION test_vertex_points() RETURNS SETOF TEXT AS +$BODY$ +BEGIN + + IF NOT min_version('3.4.0') THEN + RETURN QUERY SELECT skip(1, 'Signature added on 3.4.0'); + RETURN; + END IF; + + +PREPARE dijkstra1(BIGINT, BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_dijkstraVia( + $$SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + ARRAY[$1, $2], true) WHERE node = $2 and edge < 0; + +-- its a straigh line and one extreme are reachable +RETURN QUERY SELECT results_eq($$dijkstra1(5,9)$$, ARRAY[4]::TEXT[]); +RETURN QUERY SELECT results_eq($$dijkstra1(9,5)$$, ARRAY[4]::TEXT[]); + + +/* Points + midpoint of edge 1 (-1 by default) +*/ +PREPARE expectedCost1(BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_trspVia_withPoints( + $$ SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$ SELECT path, cost FROM restrictions$$, + $$ SELECT 1 AS edge_id, 0.5::float AS fraction$$, + ARRAY[-1, $1], true) WHERE node = $1 and edge < 0; + +RETURN QUERY SELECT results_eq($$expectedCost1(6)$$, ARRAY[0.5]::TEXT[], 'Cost from midpoint on 1 (-1 default) to 6'); +RETURN QUERY SELECT results_eq($$expectedCost1(7)$$, ARRAY[1.5]::TEXT[] , 'Cost from midpoint on 1 to 7'); +RETURN QUERY SELECT results_eq($$expectedCost1(8)$$, ARRAY[2.5]::TEXT[] , 'Cost from midpoint on 1 to 8'); +RETURN QUERY SELECT results_eq($$expectedCost1(9)$$, ARRAY[3.5]::TEXT[] , 'Cost from midpoint on 1 to 9'); + +/* Points + midpoint of edge 1 (-2 assigned) +*/ +PREPARE expectedCost2(BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_trspVia_withPoints( + $$ SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$ SELECT path, cost FROM restrictions$$, + $$ SELECT 2 AS pid, 1 AS edge_id, 0.5::float AS fraction$$, + ARRAY[-2, $1], true) WHERE node = $1 and edge < 0; + +RETURN QUERY SELECT results_eq($$expectedCost2(6)$$, $$expectedCost1(6)$$, 'Cost from midpoint on 1 (-2 assigned) to 6'); +RETURN QUERY SELECT results_eq($$expectedCost2(7)$$, $$expectedCost1(7)$$, 'Cost from midpoint on 1 to 7'); +RETURN QUERY SELECT results_eq($$expectedCost2(8)$$, $$expectedCost1(8)$$, 'Cost from midpoint on 1 to 8'); +RETURN QUERY SELECT results_eq($$expectedCost2(9)$$, $$expectedCost1(9)$$, 'Cost from midpoint on 1 to 9'); + +/* UNION ALL data is not sorted + source point of edge 10 (-1 by default) + midpoint of edge 1 (-2 by default) +*/ +PREPARE expectedCost3(BIGINT, BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_trspVia_withPoints( + $$SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$ SELECT path, cost FROM restrictions$$, + $$SELECT 10 AS edge_id, 0::float AS fraction UNION ALL SELECT 1, 0.5 $$, + ARRAY[$1, $2], true) WHERE node = $2 and edge < 0; + +RETURN QUERY SELECT results_eq($$expectedCost3(-2,6)$$, $$expectedCost1(6)$$, '(UNION ALL) Cost from midpoint on 1 (-2 default) to 6'); +RETURN QUERY SELECT results_eq($$expectedCost3(-2,7)$$, $$expectedCost1(7)$$, 'Cost from midpoint on 1 to 7'); +RETURN QUERY SELECT results_eq($$expectedCost3(-2,8)$$, $$expectedCost1(8)$$, 'Cost from midpoint on 1 to 8'); +RETURN QUERY SELECT results_eq($$expectedCost3(-2,9)$$, $$expectedCost1(9)$$, 'Cost from midpoint on 1 to 9'); + +RETURN QUERY SELECT CASE WHEN min_version('3.7.1') +THEN + collect_tap( + set_eq($$expectedCost3(-1,9)$$, $$dijkstra1(7,9)$$, 'Cost from target on 10 (-1 default, aka 7) to 9'), + set_eq($$expectedCost3(-1,8)$$, $$dijkstra1(7,8)$$, 'Cost from target on 10 to 8'), + set_eq($$expectedCost3(-1,7)$$, ARRAY[0]::TEXT[], 'Cost from target on 10 to 7') + ) +ELSE skip('Fix implemented on 3.7.1',3) +END; + +/* UNION data is sorted + midpoint of edge 1 (-1 by default) + source point of edge 10 (-2 by default) +*/ +DEALLOCATE PREPARE expectedCost3; +PREPARE expectedCost3(BIGINT, BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_trspVia_withPoints( + $$SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$ SELECT path, cost FROM restrictions$$, + $$SELECT 10 AS edge_id, 0::float AS fraction UNION SELECT 1, 0.5 $$, + ARRAY[$1, $2], true) WHERE node = $2 and edge < 0; + +RETURN QUERY SELECT results_eq($$expectedCost3(-1,6)$$, $$expectedCost1(6)$$, '(UNION) Cost from midpoint on 1 (-2 default) to 6'); +RETURN QUERY SELECT results_eq($$expectedCost3(-1,7)$$, $$expectedCost1(7)$$, 'Cost from midpoint on 1 to 7'); +RETURN QUERY SELECT results_eq($$expectedCost3(-1,8)$$, $$expectedCost1(8)$$, 'Cost from midpoint on 1 to 8'); +RETURN QUERY SELECT results_eq($$expectedCost3(-1,9)$$, $$expectedCost1(9)$$, 'Cost from midpoint on 1 to 9'); + +RETURN QUERY SELECT CASE WHEN min_version('3.7.1') +THEN + collect_tap( + set_eq($$expectedCost3(-2,9)$$, $$dijkstra1(7,9)$$, 'Cost from target on 10 (-1 default, aka 7) to 9'), + set_eq($$expectedCost3(-2,8)$$, $$dijkstra1(7,8)$$, 'Cost from target on 10 to 8'), + set_eq($$expectedCost3(-2,7)$$, ARRAY[0]::TEXT[], 'Cost from target on 10 to 7') + ) +ELSE skip('Fix implemented on 3.7.1',3) +END; + +/* VALUES data is not sorted + midpoint of edge 1 (-1 by default) + source point of edge 10 (-2 by default) +*/ +DEALLOCATE PREPARE expectedCost3; +PREPARE expectedCost3(BIGINT, BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_trspVia_withPoints( + $$SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$ SELECT path, cost FROM restrictions$$, + $$SELECT * FROM (VALUES (1,0.5), (10, 0)) AS t (edge_id, fraction)$$, + ARRAY[$1, $2], true) WHERE node = $2 and edge < 0; + +RETURN QUERY SELECT results_eq($$expectedCost3(-1,6)$$, $$expectedCost1(6)$$, '(VALUES) Cost from midpoint on 1 (-1 default) to 6'); +RETURN QUERY SELECT results_eq($$expectedCost3(-1,7)$$, $$expectedCost1(7)$$, 'Cost from midpoint on 1 to 7'); +RETURN QUERY SELECT results_eq($$expectedCost3(-1,8)$$, $$expectedCost1(8)$$, 'Cost from midpoint on 1 to 8'); +RETURN QUERY SELECT results_eq($$expectedCost3(-1,9)$$, $$expectedCost1(9)$$, 'Cost from midpoint on 1 to 9'); + +RETURN QUERY SELECT CASE WHEN min_version('3.7.1') +THEN + collect_tap( + set_eq($$expectedCost3(-2,9)$$, $$dijkstra1(7,9)$$, 'Cost from target on 10 (-1 default, aka 7) to 9'), + set_eq($$expectedCost3(-2,8)$$, $$dijkstra1(7,8)$$, 'Cost from target on 10 to 8'), + set_eq($$expectedCost3(-2,7)$$, ARRAY[0]::TEXT[], 'Cost from target on 10 to 7') + ) +ELSE skip('Fix implemented on 3.7.1',3) +END; + +/* Points + midpoint of edge 1 (-2 assigned) + source point of edge 10 (-1 assigned) +*/ +DEALLOCATE PREPARE expectedCost3; +PREPARE expectedCost3(BIGINT, BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_trspVia_withPoints( + $$SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$ SELECT path, cost FROM restrictions$$, + $$SELECT 2 AS pid, 1 AS edge_id, 0.5::float AS fraction UNION SELECT 1, 10, 0 $$, + ARRAY[$1, $2], true) WHERE node = $2 and edge < 0; + +RETURN QUERY SELECT results_eq($$expectedCost3(-2,6)$$, $$expectedCost1(6)$$, '(ASSIGNED) Cost from midpoint on 1 (-2 default) to 6'); +RETURN QUERY SELECT results_eq($$expectedCost3(-2,7)$$, $$expectedCost1(7)$$, 'Cost from midpoint on 1 to 7'); +RETURN QUERY SELECT results_eq($$expectedCost3(-2,8)$$, $$expectedCost1(8)$$, 'Cost from midpoint on 1 to 8'); +RETURN QUERY SELECT results_eq($$expectedCost3(-2,9)$$, $$expectedCost1(9)$$, 'Cost from midpoint on 1 to 9'); + +RETURN QUERY SELECT CASE WHEN min_version('3.7.1') +THEN + collect_tap( + set_eq($$expectedCost3(-1,9)$$, $$dijkstra1(7,9)$$, 'Cost from target on 10 (-1 default, aka 7) to 9'), + set_eq($$expectedCost3(-1,8)$$, $$dijkstra1(7,8)$$, 'Cost from target on 10 to 8'), + set_eq($$expectedCost3(-1,7)$$, ARRAY[0]::TEXT[], 'Cost from target on 10 to 7') + ) +ELSE skip('Fix implemented on 3.7.1',3) +END; + +END +$BODY$ +LANGUAGE plpgsql VOLATILE; + +SELECT test_vertex_points(); + +SELECT finish(); +ROLLBACK; diff --git a/pgtap/trsp/trsp_withpoints/issue2575.sql b/pgtap/trsp/trsp_withpoints/issue2575.sql new file mode 100644 index 0000000000..59c824a0af --- /dev/null +++ b/pgtap/trsp/trsp_withpoints/issue2575.sql @@ -0,0 +1,105 @@ + +/*PGR-GNU***************************************************************** + +Copyright (c) 2018 pgRouting developers +Mail: project@pgrouting.org + +------ +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + ********************************************************************PGR-GNU*/ +BEGIN; + +SELECT plan(3); + +-- Create network table +CREATE TABLE railroad ( + id serial, + source integer, + target integer, + cost double precision, + reverse_cost double precision, + x1 double precision, + y1 double precision, + x2 double precision, + y2 double precision, + the_geom geometry +); + +-- Create restrictions table +CREATE TABLE restrictions_railroad ( + id serial, + cost FLOAT, + path BIGINT[] +); + +-- Populate network table +INSERT INTO railroad (x1,y1,x2,y2) VALUES + (0,0,1,0),(1,0,4,0),(4,0,5,0),(5,0,5,5),(5,5,0,5),(0,5,0,0), + (1,0,2,1),(2,1,3,1),(3,1,4,0) +; + +UPDATE railroad SET the_geom = ST_makeline(ST_point(x1,y1),ST_point(x2,y2)); +UPDATE railroad SET cost = ST_length(the_geom), reverse_cost = ST_length(the_geom); +SELECT pgr_createTopology('railroad',0.001); + +INSERT INTO restrictions_railroad (cost, path) +VALUES (100, ARRAY[9,2]),(100, ARRAY[2,9]),(100, ARRAY[7,2]),(100, ARRAY[2,7]); + +PREPARE dijkstra AS +SELECT seq, path_seq, node, edge, cost, agg_cost +FROM pgr_dijkstra('SELECT * FROM railroad', 4, 1); + +SELECT set_eq('dijkstra', $$VALUES + (1, 1, 4, 3, 1, 0), + (2, 2, 3, 2, 3, 1), + (3, 3, 2, 1, 1, 4), + (4, 4, 1,-1, 0, 5) + $$, 'expected dijkstra'); + +PREPARE between2nodes AS +SELECT seq, path_seq, node, edge, cost, agg_cost +FROM pgr_withPoints( + $$SELECT id, source, target, cost, reverse_cost FROM railroad$$, + $$SELECT * FROM (VALUES (1, 2, 0.75),(2, 8, 0.5)) AS t(pid, edge_id, fraction)$$, + -1, -2); + +SELECT set_eq('between2nodes', $$VALUES + (1, 1, -1, 2, 0.75, 0), + (2, 2, 3, 9, 1.4142135623730951, 0.75), + (3, 3, 8, 8, 0.5, 2.164213562373095), + (4, 4, -2,-1, 0, 2.664213562373095) + $$, 'expected withPoints'); + +PREPARE between2nodeswithRestriction AS +SELECT seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost +FROM pgr_trsp_withPoints( + $$SELECT id, source, target, cost, reverse_cost FROM railroad$$, + $$SELECT * FROM restrictions_railroad$$, + $$SELECT * FROM (VALUES (1, 2, 0.75),(2, 8, 0.5)) AS t(pid, edge_id, fraction)$$, + -1, -2); +SELECT set_eq('between2nodeswithRestriction', $$VALUES + (1, 1, -1, -2, -1, 2, 0.75, 0), + (2, 2, -1, -2, 3, 3, 1, 0.75), + (3, 3, -1, -2, 4, 4, 5, 1.75), + (4, 4, -1, -2, 5, 5, 5, 6.75), + (5, 5, -1, -2, 6, 6, 5, 11.75), + (6, 6, -1, -2, 1, 1, 1, 16.75), + (7, 7, -1, -2, 2, 7, 1.4142135623730958, 17.75), + (8, 8, -1, -2, 7, 8, 0.5, 19.164213562373096), + (9, 9, -1, -2, -2,-1, 0, 19.664213562373096) + $$, 'expected withPoints'); + +SELECT finish(); +ROLLBACK; + + diff --git a/pgtap/tsp/TSPeuclidean/edge_cases/illegal_values.pg b/pgtap/tsp/TSPeuclidean/edge_cases/illegal_values.pg index 800a1526af..acdde4d591 100644 --- a/pgtap/tsp/TSPeuclidean/edge_cases/illegal_values.pg +++ b/pgtap/tsp/TSPeuclidean/edge_cases/illegal_values.pg @@ -22,7 +22,7 @@ BEGIN; SET client_min_messages TO WARNING; UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost); -SELECT CASE WHEN min_version('4.0.0') THEN plan(1) ELSE plan(9) END; +SELECT CASE WHEN min_version('4.0.1') THEN plan(1) ELSE plan(9) END; CREATE TEMP TABLE data AS SELECT id, ST_X(geom) AS x, ST_Y(geom) AS y diff --git a/pgtap/tsp/tsp/edge_cases/illegal_values.pg b/pgtap/tsp/tsp/edge_cases/illegal_values.pg index 7d665657f8..513644d375 100644 --- a/pgtap/tsp/tsp/edge_cases/illegal_values.pg +++ b/pgtap/tsp/tsp/edge_cases/illegal_values.pg @@ -22,7 +22,7 @@ BEGIN; SET client_min_messages TO WARNING; UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost); -SELECT CASE WHEN min_version('4.0.0') THEN plan(1) ELSE plan(9) END; +SELECT CASE WHEN min_version('4.0.1') THEN plan(1) ELSE plan(9) END; CREATE TEMP TABLE data AS SELECT * FROM pgr_dijkstraCostMatrix( diff --git a/pgtap/utilities/findCloseEdges/edge_cases.pg b/pgtap/utilities/findCloseEdges/edge_cases.pg index 90c58046a2..705f33b473 100644 --- a/pgtap/utilities/findCloseEdges/edge_cases.pg +++ b/pgtap/utilities/findCloseEdges/edge_cases.pg @@ -20,7 +20,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. BEGIN; UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost); -SELECT CASE WHEN min_version('3.4.0') THEN plan(12) ELSE plan(1) END; +SELECT CASE WHEN min_version('3.8.0') THEN plan(17) WHEN min_version('3.8.0') THEN plan(33) WHEN min_version('3.4.0') THEN plan(34) ELSE plan(1) END; SET client_min_messages TO 'WARNING'; @@ -58,11 +58,16 @@ BEGIN RETURN QUERY SELECT lives_ok('query_1', 'With defaults'); RETURN QUERY SELECT lives_ok('query_2', 'two rows'); RETURN QUERY SELECT lives_ok('query_3', 'dryrun'); - RETURN QUERY SELECT is_empty('query_3', 'dryrun'); + RETURN QUERY SELECT is_empty('query_3', 'dryrun results empty'); - RETURN QUERY SELECT throws_ok('err1', 'P0001', 'Missing column', 'Incomlete data -> throws'); - RETURN QUERY SELECT throws_ok('err2', 'P0001', 'Missing column', 'Incomlete data -> throws'); + RETURN QUERY SELECT column_missing('err1', 'geom'); + RETURN QUERY SELECT column_missing('err2', 'id'); + RETURN QUERY SELECT wrong_relation($$SELECT * FROM pgr_findCloseEdges( + 'SELECT id, geom FROM foo', (SELECT geom FROM pointsOfInterest WHERE pid = 5), 0.5)$$, 'foo'); + RETURN QUERY SELECT throws_ok($$SELECT * FROM pgr_findCloseEdges( + 'SELECT id, geom FROM edges', (SELECT geom FROM bar WHERE pid = 5), 0.5)$$, + '42P01', 'relation "bar" does not exist'); -- Many points PREPARE query_4 AS @@ -80,12 +85,95 @@ BEGIN RETURN QUERY SELECT lives_ok('query_4', 'With defaults'); RETURN QUERY SELECT lives_ok('query_5', 'two rows'); RETURN QUERY SELECT lives_ok('query_6', 'dryrun'); - RETURN QUERY SELECT is_empty('query_6', 'dryrun'); + RETURN QUERY SELECT is_empty('query_6', 'dryrun results empty'); - RETURN QUERY SELECT throws_ok('err3', 'P0001', 'Missing column', 'Incomlete data -> throws'); - RETURN QUERY SELECT throws_ok('err4', 'P0001', 'Missing column', 'Incomlete data -> throws'); + RETURN QUERY SELECT column_missing('err3', 'geom'); + RETURN QUERY SELECT column_missing('err4', 'id'); + RETURN QUERY SELECT wrong_relation($$SELECT * FROM pgr_findCloseEdges( + 'SELECT id, geom FROM foo', (SELECT array_agg(geom) FROM pointsOfInterest), 0.5)$$, 'foo'); + RETURN QUERY SELECT throws_ok($$SELECT * FROM pgr_findCloseEdges( + 'SELECT id, geom FROM edges', (SELECT array_agg(geom) FROM bar), 0.5)$$, + '42P01', 'relation "bar" does not exist'); + + IF min_version('4.0.0') THEN + RETURN QUERY SELECT skip(1, 'Signatures with partial flag is removed on 4.0.0'); + RETURN; + END IF; + + -- Test with partial flag + RETURN QUERY SELECT is_empty($$SELECT * FROM pgr_findCloseEdges( + 'SELECT id, geom FROM edges', (SELECT geom FROM pointsOfInterest WHERE pid = 5), 0.5, 1, true, true)$$, 'One geom: partial,dryrun = true,true'); + RETURN QUERY SELECT isnt_empty($$SELECT * FROM pgr_findCloseEdges( + 'SELECT id, geom FROM edges', (SELECT geom FROM pointsOfInterest WHERE pid = 5), 0.5, 1, true, false)$$, 'One geom: partial,dryrun = true,false'); + RETURN QUERY SELECT is_empty($$SELECT * FROM pgr_findCloseEdges( + 'SELECT id, geom FROM edges', (SELECT geom FROM pointsOfInterest WHERE pid = 5), 0.5, 1, false, true)$$, 'One geom: partial,dryrun = false,true'); + RETURN QUERY SELECT isnt_empty($$SELECT * FROM pgr_findCloseEdges( + 'SELECT id, geom FROM edges', (SELECT geom FROM pointsOfInterest WHERE pid = 5), 0.5, 1, false, false)$$, 'One geom: partial,dryrun = false,false'); + + RETURN QUERY SELECT is_empty($$SELECT * FROM pgr_findCloseEdges( + 'SELECT id, geom FROM edges', (SELECT array_agg(geom) FROM pointsOfInterest), 0.5, 1, true, true)$$, 'Many geom: partial,dryrun = true,true'); + RETURN QUERY SELECT isnt_empty($$SELECT * FROM pgr_findCloseEdges( + 'SELECT id, geom FROM edges', (SELECT array_agg(geom) FROM pointsOfInterest), 0.5, 1, true, false)$$, 'Many geom: partial,dryrun = true,false'); + RETURN QUERY SELECT is_empty($$SELECT * FROM pgr_findCloseEdges( + 'SELECT id, geom FROM edges', (SELECT array_agg(geom) FROM pointsOfInterest), 0.5, 1, false, true)$$, 'Many geom: partial,dryrun = false,true'); + RETURN QUERY SELECT isnt_empty($$SELECT * FROM pgr_findCloseEdges( + 'SELECT id, geom FROM edges', (SELECT array_agg(geom) FROM pointsOfInterest), 0.5, 1, false, false)$$, 'Many geom: partial,dryrun = false,false'); + + RETURN QUERY SELECT + CASE WHEN min_version('3.8.0') THEN + collect_tap( + throws_ok($$SELECT * FROM pgr_findCloseEdges( + 'SELECT id, geom FROM edges', (SELECT geom FROM pointsOfInterest WHERE pid = 5), 0.5, 1, partial => true) WHERE distance IS NOT NULL$$, + '42883','function pgr_findcloseedges(unknown, geometry, numeric, integer, partial => boolean) does not exist', 'throws: One geom, with cap value, naming partial => true'), + throws_ok($$SELECT * FROM pgr_findCloseEdges( + 'SELECT id, geom FROM edges', (SELECT geom FROM pointsOfInterest WHERE pid = 5), 0.5, partial => true) WHERE distance IS NOT NULL$$, + '42883','function pgr_findcloseedges(unknown, geometry, numeric, partial => boolean) does not exist', 'throws: One geom, without cap value naming partial => true'), + isnt_empty($$SELECT * FROM pgr_findCloseEdges( + 'SELECT id, geom FROM edges', (SELECT geom FROM pointsOfInterest WHERE pid = 5), 0.5, 1, true, false) WHERE distance IS NOT NULL$$, 'partial, One geom: isnt_empty distance'), + isnt_empty($$SELECT * FROM pgr_findCloseEdges( + 'SELECT id, geom FROM edges', (SELECT geom FROM pointsOfInterest WHERE pid = 5), 0.5, 1, true, false) WHERE geom IS NOT NULL$$, 'partial, One geom: isnt_empty geom'), + isnt_empty($$SELECT * FROM pgr_findCloseEdges( + 'SELECT id, geom FROM edges', (SELECT geom FROM pointsOfInterest WHERE pid = 5), 0.5, 1, true, false) WHERE edge IS NOT NULL$$, 'partial, One geom: isnt_empty edge'), + + throws_ok($$SELECT * FROM pgr_findCloseEdges( + 'SELECT id, geom FROM edges', (SELECT array_agg(geom) FROM pointsOfInterest), 0.5, 1, partial => true) WHERE distance IS NOT NULL$$, + '42883','function pgr_findcloseedges(unknown, geometry[], numeric, integer, partial => boolean) does not exist', 'throws: Many geom, with cap value, naming partial => true'), + throws_ok($$SELECT * FROM pgr_findCloseEdges( + 'SELECT id, geom FROM edges', (SELECT array_agg(geom) FROM pointsOfInterest), 0.5, partial => true) WHERE distance IS NOT NULL$$, + '42883','function pgr_findcloseedges(unknown, geometry[], numeric, partial => boolean) does not exist', 'throws: Many geom, without cap value naming partial => true'), + isnt_empty($$SELECT * FROM pgr_findCloseEdges( + 'SELECT id, geom FROM edges', (SELECT array_agg(geom) FROM pointsOfInterest), 0.5, 1, true, false) WHERE distance IS NOT NULL$$, 'partial, Many geom: isnt_empty distance'), + isnt_empty($$SELECT * FROM pgr_findCloseEdges( + 'SELECT id, geom FROM edges', (SELECT array_agg(geom) FROM pointsOfInterest), 0.5, 1, true, false) WHERE edge IS NOT NULL$$, 'partial, Many geom: isnt_empty edge') + ) + + ELSE + collect_tap( + lives_ok($$SELECT * FROM pgr_findCloseEdges( + 'SELECT id, geom FROM edges', (SELECT geom FROM pointsOfInterest WHERE pid = 5), 0.5, 1, partial => true) WHERE distance IS NOT NULL$$, 'One geom, with cap value, naming partial => true'), + lives_ok($$SELECT * FROM pgr_findCloseEdges( + 'SELECT id, geom FROM edges', (SELECT geom FROM pointsOfInterest WHERE pid = 5), 0.5, partial => true) WHERE distance IS NOT NULL$$, 'One geom, without cap value, naming partial => true'), + is_empty($$SELECT * FROM pgr_findCloseEdges( + 'SELECT id, geom FROM edges', (SELECT geom FROM pointsOfInterest WHERE pid = 5), 0.5, 1, true, false) WHERE distance IS NOT NULL$$, 'partial, One geom: is_empty distance'), + is_empty($$SELECT * FROM pgr_findCloseEdges( + 'SELECT id, geom FROM edges', (SELECT geom FROM pointsOfInterest WHERE pid = 5), 0.5, 1, true, false) WHERE geom IS NOT NULL$$, 'partial, One geom: is_empty geom'), + is_empty($$SELECT * FROM pgr_findCloseEdges( + 'SELECT id, geom FROM edges', (SELECT geom FROM pointsOfInterest WHERE pid = 5), 0.5, 1, true, false) WHERE edge IS NOT NULL$$, 'partial, One geom: is_empty edge'), + + lives_ok($$SELECT * FROM pgr_findCloseEdges( + 'SELECT id, geom FROM edges', (SELECT array_agg(geom) FROM pointsOfInterest), 0.5, 1, partial => true) WHERE distance IS NOT NULL$$, 'Many geom, with cap value, naming partial => true'), + lives_ok($$SELECT * FROM pgr_findCloseEdges( + 'SELECT id, geom FROM edges', (SELECT array_agg(geom) FROM pointsOfInterest), 0.5, partial => true) WHERE distance IS NOT NULL$$, 'Many geom, without cap value, naming partial => true'), + isnt_empty($$SELECT * FROM pgr_findCloseEdges( + 'SELECT id, geom FROM edges', (SELECT array_agg(geom) FROM pointsOfInterest), 0.5, 1, true, false) WHERE distance IS NOT NULL$$, 'partial, Many geom: isnt_empty distance'), + isnt_empty($$SELECT * FROM pgr_findCloseEdges( + 'SELECT id, geom FROM edges', (SELECT array_agg(geom) FROM pointsOfInterest), 0.5, 1, true, false) WHERE geom IS NOT NULL$$, 'partial, Many geom: isnt_empty geom'), + is_empty($$SELECT * FROM pgr_findCloseEdges( + 'SELECT id, geom FROM edges', (SELECT array_agg(geom) FROM pointsOfInterest), 0.5, 1, true, false) WHERE edge IS NOT NULL$$, 'partial, Many geom: is_empty edge') + ) + END; END; $BODY$ diff --git a/pgtap/utilities/findCloseEdges/types_check.pg b/pgtap/utilities/findCloseEdges/types_check.pg index 58d8c0e17f..b022f60b3b 100644 --- a/pgtap/utilities/findCloseEdges/types_check.pg +++ b/pgtap/utilities/findCloseEdges/types_check.pg @@ -42,26 +42,45 @@ BEGIN SELECT function_returns('pgr_findcloseedges', ARRAY['text', 'geometry[]','double precision','integer','boolean','boolean'],'setof record'); + IF min_version('3.8.0') THEN - RETURN QUERY SELECT set_eq( - $$SELECT proargnames from pg_proc where proname = 'pgr_findcloseedges'$$, - $$SELECT '{"","","","cap","partial","dryrun","edge_id","fraction","side","distance","geom","edge"}'::TEXT[] $$); + RETURN QUERY SELECT bag_eq( + $$SELECT proargnames from pg_proc where proname = 'pgr_findcloseedges'$$, + $$VALUES + ('{"","","","cap","dryrun","edge_id","fraction","side","distance","geom","edge"}'::TEXT[]), + ('{"","","","cap","dryrun","edge_id","fraction","side","distance","geom","edge"}'::TEXT[]), + ('{"","","","cap","partial","dryrun","edge_id","fraction","side","distance","geom","edge"}'::TEXT[]), + ('{"","","","cap","partial","dryrun","edge_id","fraction","side","distance","geom","edge"}'::TEXT[]) + $$, + 'proargnames'); - /* pgtap does not like geometry type, this is a workaround */ - RETURN QUERY - SELECT set_eq( - $$WITH a AS (SELECT unnest(proallargtypes) FROM pg_proc WHERE proname = 'pgr_findcloseedges') - SELECT typname FROM a JOIN pg_type ON(oid = unnest)$$, - $$VALUES - ('bool'), - ('int4'), - ('text'), - ('float8'), - ('geometry'), - ('_geometry'), - ('int8'), - ('bpchar') - $$); + RETURN QUERY + SELECT function_types('pgr_findcloseedges', + $$ VALUES + ('{text,_geometry,float8,int4,bool,int8,float8,bpchar,float8,geometry,geometry}'::TEXT[]), + ('{text,geometry,float8,int4,bool,int8,float8,bpchar,float8,geometry,geometry}'::TEXT[]), + ('{text,geometry,float8,int4,bool,bool,int8,float8,bpchar,float8,geometry,geometry}'::TEXT[]), + ('{text,_geometry,float8,int4,bool,bool,int8,float8,bpchar,float8,geometry,geometry}'::TEXT[]) + $$); + + ELSE + + RETURN QUERY SELECT bag_eq( + $$SELECT proargnames from pg_proc where proname = 'pgr_findcloseedges'$$, + $$VALUES + ('{"","","","cap","partial","dryrun","edge_id","fraction","side","distance","geom","edge"}'::TEXT[]), + ('{"","","","cap","partial","dryrun","edge_id","fraction","side","distance","geom","edge"}'::TEXT[]) + $$, + 'proargnames'); + + RETURN QUERY + SELECT function_types('pgr_findcloseedges', + $$ VALUES + ('{text,geometry,float8,int4,bool,bool,int8,float8,bpchar,float8,geometry,geometry}'::TEXT[]), + ('{text,_geometry,float8,int4,bool,bool,int8,float8,bpchar,float8,geometry,geometry}'::TEXT[]) + $$); + + END IF; END $BODY$ diff --git a/pgtap/withPoints/withPoints/edge_cases/point_in_vertex.pg b/pgtap/withPoints/withPoints/edge_cases/point_in_vertex.pg new file mode 100644 index 0000000000..d5ac988e0b --- /dev/null +++ b/pgtap/withPoints/withPoints/edge_cases/point_in_vertex.pg @@ -0,0 +1,170 @@ +/*PGR-GNU***************************************************************** + +Copyright (c) 2024 pgRouting developers +Mail: project@pgrouting.org + +------ +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + ********************************************************************PGR-GNU*/ +BEGIN; + +SET extra_float_digits=-3; + +SELECT plan(38); + +CREATE VIEW four_edges AS +SELECT * FROM edges WHERE id IN (1,4,10,14); + +PREPARE dijkstra1(BIGINT, BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_dijkstra( + $$SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $1, $2, true) WHERE edge < 0; + +-- its a straigh line and one extreme are reachable +SELECT results_eq($$dijkstra1(5,9)$$, ARRAY[4]::TEXT[]); +SELECT results_eq($$dijkstra1(9,5)$$, ARRAY[4]::TEXT[]); + + +/* Points + midpoint of edge 1 (-1 by default) +*/ +PREPARE expectedCost1(BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_withPoints( + $$ SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$ SELECT 1 AS edge_id, 0.5::float AS fraction$$, + -1, $1, true) WHERE edge < 0; + +SELECT results_eq($$expectedCost1(6)$$, ARRAY[0.5]::TEXT[], 'Cost from midpoint on 1 (-1 default) to 6'); +SELECT results_eq($$expectedCost1(7)$$, ARRAY[1.5]::TEXT[] , 'Cost from midpoint on 1 to 7'); +SELECT results_eq($$expectedCost1(8)$$, ARRAY[2.5]::TEXT[] , 'Cost from midpoint on 1 to 8'); +SELECT results_eq($$expectedCost1(9)$$, ARRAY[3.5]::TEXT[] , 'Cost from midpoint on 1 to 9'); + +/* Points + midpoint of edge 1 (-2 assigned) +*/ +PREPARE expectedCost2(BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_withPoints( + $$ SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$ SELECT 2 AS pid, 1 AS edge_id, 0.5::float AS fraction$$, + -2, $1, true) WHERE edge < 0; + +SELECT results_eq($$expectedCost2(6)$$, $$expectedCost1(6)$$, 'Cost from midpoint on 1 (-2 assigned) to 6'); +SELECT results_eq($$expectedCost2(7)$$, $$expectedCost1(7)$$, 'Cost from midpoint on 1 to 7'); +SELECT results_eq($$expectedCost2(8)$$, $$expectedCost1(8)$$, 'Cost from midpoint on 1 to 8'); +SELECT results_eq($$expectedCost2(9)$$, $$expectedCost1(9)$$, 'Cost from midpoint on 1 to 9'); + +/* UNION ALL data is not sorted + source point of edge 10 (-1 by default) + midpoint of edge 1 (-2 by default) +*/ +PREPARE expectedCost3(BIGINT, BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_withPoints( + $$SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$SELECT 10 AS edge_id, 0::float AS fraction UNION ALL SELECT 1, 0.5 $$, + $1, $2, true) WHERE edge < 0; + +SELECT results_eq($$expectedCost3(-2,6)$$, $$expectedCost1(6)$$, '(UNION ALL) Cost from midpoint on 1 (-2 default) to 6'); +SELECT results_eq($$expectedCost3(-2,7)$$, $$expectedCost1(7)$$, 'Cost from midpoint on 1 to 7'); +SELECT results_eq($$expectedCost3(-2,8)$$, $$expectedCost1(8)$$, 'Cost from midpoint on 1 to 8'); +SELECT results_eq($$expectedCost3(-2,9)$$, $$expectedCost1(9)$$, 'Cost from midpoint on 1 to 9'); + +SELECT CASE WHEN min_version('3.7.1') +THEN + collect_tap( + set_eq($$expectedCost3(-1,9)$$, $$dijkstra1(7,9)$$, 'Cost from target on 10 (-1 default, aka 7) to 9'), + set_eq($$expectedCost3(-1,8)$$, $$dijkstra1(7,8)$$, 'Cost from target on 10 to 8'), + set_eq($$expectedCost3(-1,7)$$, ARRAY[0]::TEXT[], 'Cost from target on 10 to 7') + ) +ELSE skip('Fix implemented on 3.7.1',3) +END; + +/* UNION data is sorted + midpoint of edge 1 (-1 by default) + source point of edge 10 (-2 by default) +*/ +DEALLOCATE PREPARE expectedCost3; +PREPARE expectedCost3(BIGINT, BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_withPoints( + $$SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$SELECT 10 AS edge_id, 0::float AS fraction UNION SELECT 1, 0.5 $$, + $1, $2, true) WHERE edge < 0; + +SELECT results_eq($$expectedCost3(-1,6)$$, $$expectedCost1(6)$$, '(UNION) Cost from midpoint on 1 (-2 default) to 6'); +SELECT results_eq($$expectedCost3(-1,7)$$, $$expectedCost1(7)$$, 'Cost from midpoint on 1 to 7'); +SELECT results_eq($$expectedCost3(-1,8)$$, $$expectedCost1(8)$$, 'Cost from midpoint on 1 to 8'); +SELECT results_eq($$expectedCost3(-1,9)$$, $$expectedCost1(9)$$, 'Cost from midpoint on 1 to 9'); + +SELECT CASE WHEN min_version('3.7.1') +THEN + collect_tap( + set_eq($$expectedCost3(-2,9)$$, $$dijkstra1(7,9)$$, 'Cost from target on 10 (-1 default, aka 7) to 9'), + set_eq($$expectedCost3(-2,8)$$, $$dijkstra1(7,8)$$, 'Cost from target on 10 to 8'), + set_eq($$expectedCost3(-2,7)$$, ARRAY[0]::TEXT[], 'Cost from target on 10 to 7') + ) +ELSE skip('Fix implemented on 3.7.1',3) +END; + +/* VALUES data is not sorted + midpoint of edge 1 (-1 by default) + source point of edge 10 (-2 by default) +*/ +DEALLOCATE PREPARE expectedCost3; +PREPARE expectedCost3(BIGINT, BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_withPoints( + $$SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$SELECT * FROM (VALUES (1,0.5), (10, 0)) AS t (edge_id, fraction)$$, + $1, $2, true) WHERE edge < 0; + +SELECT results_eq($$expectedCost3(-1,6)$$, $$expectedCost1(6)$$, '(VALUES) Cost from midpoint on 1 (-1 default) to 6'); +SELECT results_eq($$expectedCost3(-1,7)$$, $$expectedCost1(7)$$, 'Cost from midpoint on 1 to 7'); +SELECT results_eq($$expectedCost3(-1,8)$$, $$expectedCost1(8)$$, 'Cost from midpoint on 1 to 8'); +SELECT results_eq($$expectedCost3(-1,9)$$, $$expectedCost1(9)$$, 'Cost from midpoint on 1 to 9'); + +SELECT CASE WHEN min_version('3.7.1') +THEN + collect_tap( + set_eq($$expectedCost3(-2,9)$$, $$dijkstra1(7,9)$$, 'Cost from target on 10 (-1 default, aka 7) to 9'), + set_eq($$expectedCost3(-2,8)$$, $$dijkstra1(7,8)$$, 'Cost from target on 10 to 8'), + set_eq($$expectedCost3(-2,7)$$, ARRAY[0]::TEXT[], 'Cost from target on 10 to 7') + ) +ELSE skip('Fix implemented on 3.7.1',3) +END; + +/* Points + midpoint of edge 1 (-2 assigned) + source point of edge 10 (-1 assigned) +*/ +DEALLOCATE PREPARE expectedCost3; +PREPARE expectedCost3(BIGINT, BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_withPoints( + $$SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$SELECT 2 AS pid, 1 AS edge_id, 0.5::float AS fraction UNION SELECT 1, 10, 0 $$, + $1, $2, true) WHERE edge < 0; + +SELECT results_eq($$expectedCost3(-2,6)$$, $$expectedCost1(6)$$, '(ASSIGNED) Cost from midpoint on 1 (-2 default) to 6'); +SELECT results_eq($$expectedCost3(-2,7)$$, $$expectedCost1(7)$$, 'Cost from midpoint on 1 to 7'); +SELECT results_eq($$expectedCost3(-2,8)$$, $$expectedCost1(8)$$, 'Cost from midpoint on 1 to 8'); +SELECT results_eq($$expectedCost3(-2,9)$$, $$expectedCost1(9)$$, 'Cost from midpoint on 1 to 9'); + +SELECT CASE WHEN min_version('3.7.1') +THEN + collect_tap( + set_eq($$expectedCost3(-1,9)$$, $$dijkstra1(7,9)$$, 'Cost from target on 10 (-1 default, aka 7) to 9'), + set_eq($$expectedCost3(-1,8)$$, $$dijkstra1(7,8)$$, 'Cost from target on 10 to 8'), + set_eq($$expectedCost3(-1,7)$$, ARRAY[0]::TEXT[], 'Cost from target on 10 to 7') + ) +ELSE skip('Fix implemented on 3.7.1',3) +END; + +SELECT finish(); +ROLLBACK; diff --git a/pgtap/withPoints/withPointsCost/edge_cases/point_in_vertex.pg b/pgtap/withPoints/withPointsCost/edge_cases/point_in_vertex.pg new file mode 100644 index 0000000000..8a6a230d9c --- /dev/null +++ b/pgtap/withPoints/withPointsCost/edge_cases/point_in_vertex.pg @@ -0,0 +1,170 @@ +/*PGR-GNU***************************************************************** + +Copyright (c) 2024 pgRouting developers +Mail: project@pgrouting.org + +------ +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + ********************************************************************PGR-GNU*/ +BEGIN; + +SET extra_float_digits=-3; + +SELECT plan(38); + +CREATE VIEW four_edges AS +SELECT * FROM edges WHERE id IN (1,4,10,14); + +PREPARE dijkstra1(BIGINT, BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_dijkstraCost( + $$SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $1, $2, true); + +-- its a straigh line and one extreme are reachable +SELECT results_eq($$dijkstra1(5,9)$$, ARRAY[4]::TEXT[]); +SELECT results_eq($$dijkstra1(9,5)$$, ARRAY[4]::TEXT[]); + + +/* Points + midpoint of edge 1 (-1 by default) +*/ +PREPARE expectedCost1(BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_withPointsCost( + $$ SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$ SELECT 1 AS edge_id, 0.5::float AS fraction$$, + -1, $1, true) ; + +SELECT results_eq($$expectedCost1(6)$$, ARRAY[0.5]::TEXT[], 'Cost from midpoint on 1 (-1 default) to 6'); +SELECT results_eq($$expectedCost1(7)$$, ARRAY[1.5]::TEXT[] , 'Cost from midpoint on 1 to 7'); +SELECT results_eq($$expectedCost1(8)$$, ARRAY[2.5]::TEXT[] , 'Cost from midpoint on 1 to 8'); +SELECT results_eq($$expectedCost1(9)$$, ARRAY[3.5]::TEXT[] , 'Cost from midpoint on 1 to 9'); + +/* Points + midpoint of edge 1 (-2 assigned) +*/ +PREPARE expectedCost2(BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_withPointsCost( + $$ SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$ SELECT 2 AS pid, 1 AS edge_id, 0.5::float AS fraction$$, + -2, $1, true) ; + +SELECT results_eq($$expectedCost2(6)$$, $$expectedCost1(6)$$, 'Cost from midpoint on 1 (-2 assigned) to 6'); +SELECT results_eq($$expectedCost2(7)$$, $$expectedCost1(7)$$, 'Cost from midpoint on 1 to 7'); +SELECT results_eq($$expectedCost2(8)$$, $$expectedCost1(8)$$, 'Cost from midpoint on 1 to 8'); +SELECT results_eq($$expectedCost2(9)$$, $$expectedCost1(9)$$, 'Cost from midpoint on 1 to 9'); + +/* UNION ALL data is not sorted + source point of edge 10 (-1 by default) + midpoint of edge 1 (-2 by default) +*/ +PREPARE expectedCost3(BIGINT, BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_withPointsCost( + $$SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$SELECT 10 AS edge_id, 0::float AS fraction UNION ALL SELECT 1, 0.5 $$, + $1, $2, true); + +SELECT results_eq($$expectedCost3(-2,6)$$, $$expectedCost1(6)$$, '(UNION ALL) Cost from midpoint on 1 (-2 default) to 6'); +SELECT results_eq($$expectedCost3(-2,7)$$, $$expectedCost1(7)$$, 'Cost from midpoint on 1 to 7'); +SELECT results_eq($$expectedCost3(-2,8)$$, $$expectedCost1(8)$$, 'Cost from midpoint on 1 to 8'); +SELECT results_eq($$expectedCost3(-2,9)$$, $$expectedCost1(9)$$, 'Cost from midpoint on 1 to 9'); + +SELECT CASE WHEN min_version('3.7.1') +THEN + collect_tap( + set_eq($$expectedCost3(-1,9)$$, $$dijkstra1(7,9)$$, 'Cost from target on 10 (-1 default, aka 7) to 9'), + set_eq($$expectedCost3(-1,8)$$, $$dijkstra1(7,8)$$, 'Cost from target on 10 to 8'), + set_eq($$expectedCost3(-1,7)$$, ARRAY[0]::TEXT[], 'Cost from target on 10 to 7') + ) +ELSE skip('Fix implemented on 3.7.1',3) +END; + +/* UNION data is sorted + midpoint of edge 1 (-1 by default) + source point of edge 10 (-2 by default) +*/ +DEALLOCATE PREPARE expectedCost3; +PREPARE expectedCost3(BIGINT, BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_withPointsCost( + $$SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$SELECT 10 AS edge_id, 0::float AS fraction UNION SELECT 1, 0.5 $$, + $1, $2, true); + +SELECT results_eq($$expectedCost3(-1,6)$$, $$expectedCost1(6)$$, '(UNION) Cost from midpoint on 1 (-2 default) to 6'); +SELECT results_eq($$expectedCost3(-1,7)$$, $$expectedCost1(7)$$, 'Cost from midpoint on 1 to 7'); +SELECT results_eq($$expectedCost3(-1,8)$$, $$expectedCost1(8)$$, 'Cost from midpoint on 1 to 8'); +SELECT results_eq($$expectedCost3(-1,9)$$, $$expectedCost1(9)$$, 'Cost from midpoint on 1 to 9'); + +SELECT CASE WHEN min_version('3.7.1') +THEN + collect_tap( + set_eq($$expectedCost3(-2,9)$$, $$dijkstra1(7,9)$$, 'Cost from target on 10 (-1 default, aka 7) to 9'), + set_eq($$expectedCost3(-2,8)$$, $$dijkstra1(7,8)$$, 'Cost from target on 10 to 8'), + set_eq($$expectedCost3(-2,7)$$, ARRAY[0]::TEXT[], 'Cost from target on 10 to 7') + ) +ELSE skip('Fix implemented on 3.7.1',3) +END; + +/* VALUES data is not sorted + midpoint of edge 1 (-1 by default) + source point of edge 10 (-2 by default) +*/ +DEALLOCATE PREPARE expectedCost3; +PREPARE expectedCost3(BIGINT, BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_withPointsCost( + $$SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$SELECT * FROM (VALUES (1,0.5), (10, 0)) AS t (edge_id, fraction)$$, + $1, $2, true); + +SELECT results_eq($$expectedCost3(-1,6)$$, $$expectedCost1(6)$$, '(VALUES) Cost from midpoint on 1 (-1 default) to 6'); +SELECT results_eq($$expectedCost3(-1,7)$$, $$expectedCost1(7)$$, 'Cost from midpoint on 1 to 7'); +SELECT results_eq($$expectedCost3(-1,8)$$, $$expectedCost1(8)$$, 'Cost from midpoint on 1 to 8'); +SELECT results_eq($$expectedCost3(-1,9)$$, $$expectedCost1(9)$$, 'Cost from midpoint on 1 to 9'); + +SELECT CASE WHEN min_version('3.7.1') +THEN + collect_tap( + set_eq($$expectedCost3(-2,9)$$, $$dijkstra1(7,9)$$, 'Cost from target on 10 (-1 default, aka 7) to 9'), + set_eq($$expectedCost3(-2,8)$$, $$dijkstra1(7,8)$$, 'Cost from target on 10 to 8'), + set_eq($$expectedCost3(-2,7)$$, ARRAY[0]::TEXT[], 'Cost from target on 10 to 7') + ) +ELSE skip('Fix implemented on 3.7.1',3) +END; + +/* Points + midpoint of edge 1 (-2 assigned) + source point of edge 10 (-1 assigned) +*/ +DEALLOCATE PREPARE expectedCost3; +PREPARE expectedCost3(BIGINT, BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_withPointsCost( + $$SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$SELECT 2 AS pid, 1 AS edge_id, 0.5::float AS fraction UNION SELECT 1, 10, 0 $$, + $1, $2, true); + +SELECT results_eq($$expectedCost3(-2,6)$$, $$expectedCost1(6)$$, '(ASSIGNED) Cost from midpoint on 1 (-2 default) to 6'); +SELECT results_eq($$expectedCost3(-2,7)$$, $$expectedCost1(7)$$, 'Cost from midpoint on 1 to 7'); +SELECT results_eq($$expectedCost3(-2,8)$$, $$expectedCost1(8)$$, 'Cost from midpoint on 1 to 8'); +SELECT results_eq($$expectedCost3(-2,9)$$, $$expectedCost1(9)$$, 'Cost from midpoint on 1 to 9'); + +SELECT CASE WHEN min_version('3.7.1') +THEN + collect_tap( + set_eq($$expectedCost3(-1,9)$$, $$dijkstra1(7,9)$$, 'Cost from target on 10 (-1 default, aka 7) to 9'), + set_eq($$expectedCost3(-1,8)$$, $$dijkstra1(7,8)$$, 'Cost from target on 10 to 8'), + set_eq($$expectedCost3(-1,7)$$, ARRAY[0]::TEXT[], 'Cost from target on 10 to 7') + ) +ELSE skip('Fix implemented on 3.7.1',3) +END; + +SELECT finish(); +ROLLBACK; diff --git a/pgtap/withPoints/withPointsCostMatrix/edge_cases/point_in_vertex.pg b/pgtap/withPoints/withPointsCostMatrix/edge_cases/point_in_vertex.pg new file mode 100644 index 0000000000..a0dddf51fd --- /dev/null +++ b/pgtap/withPoints/withPointsCostMatrix/edge_cases/point_in_vertex.pg @@ -0,0 +1,170 @@ +/*PGR-GNU***************************************************************** + +Copyright (c) 2024 pgRouting developers +Mail: project@pgrouting.org + +------ +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + ********************************************************************PGR-GNU*/ +BEGIN; + +SET extra_float_digits=-3; + +SELECT plan(38); + +CREATE VIEW four_edges AS +SELECT * FROM edges WHERE id IN (1,4,10,14); + +PREPARE dijkstra1(BIGINT, BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_dijkstraCostMatrix( + $$SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + ARRAY[$1, $2], true) LIMIT 1; + +-- its a straigh line and one extreme are reachable +SELECT results_eq($$dijkstra1(5,9)$$, ARRAY[4]::TEXT[]); +SELECT results_eq($$dijkstra1(9,5)$$, ARRAY[4]::TEXT[]); + + +/* Points + midpoint of edge 1 (-1 by default) +*/ +PREPARE expectedCost1(BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_withPointsCostMatrix( + $$ SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$ SELECT 1 AS edge_id, 0.5::float AS fraction$$, + ARRAY[-1, $1], true) LIMIT 1; + +SELECT results_eq($$expectedCost1(6)$$, ARRAY[0.5]::TEXT[], 'Cost from midpoint on 1 (-1 default) to 6'); +SELECT results_eq($$expectedCost1(7)$$, ARRAY[1.5]::TEXT[] , 'Cost from midpoint on 1 to 7'); +SELECT results_eq($$expectedCost1(8)$$, ARRAY[2.5]::TEXT[] , 'Cost from midpoint on 1 to 8'); +SELECT results_eq($$expectedCost1(9)$$, ARRAY[3.5]::TEXT[] , 'Cost from midpoint on 1 to 9'); + +/* Points + midpoint of edge 1 (-2 assigned) +*/ +PREPARE expectedCost2(BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_withPointsCostMatrix( + $$ SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$ SELECT 2 AS pid, 1 AS edge_id, 0.5::float AS fraction$$, + ARRAY[-2, $1], true) LIMIT 1; + +SELECT results_eq($$expectedCost2(6)$$, $$expectedCost1(6)$$, 'Cost from midpoint on 1 (-2 assigned) to 6'); +SELECT results_eq($$expectedCost2(7)$$, $$expectedCost1(7)$$, 'Cost from midpoint on 1 to 7'); +SELECT results_eq($$expectedCost2(8)$$, $$expectedCost1(8)$$, 'Cost from midpoint on 1 to 8'); +SELECT results_eq($$expectedCost2(9)$$, $$expectedCost1(9)$$, 'Cost from midpoint on 1 to 9'); + +/* UNION ALL data is not sorted + source point of edge 10 (-1 by default) + midpoint of edge 1 (-2 by default) +*/ +PREPARE expectedCost3(BIGINT, BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_withPointsCostMatrix( + $$SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$SELECT 10 AS edge_id, 0::float AS fraction UNION ALL SELECT 1, 0.5 $$, + ARRAY[$1, $2], true)LIMIT 1; + +SELECT results_eq($$expectedCost3(-2,6)$$, $$expectedCost1(6)$$, '(UNION ALL) Cost from midpoint on 1 (-2 default) to 6'); +SELECT results_eq($$expectedCost3(-2,7)$$, $$expectedCost1(7)$$, 'Cost from midpoint on 1 to 7'); +SELECT results_eq($$expectedCost3(-2,8)$$, $$expectedCost1(8)$$, 'Cost from midpoint on 1 to 8'); +SELECT results_eq($$expectedCost3(-2,9)$$, $$expectedCost1(9)$$, 'Cost from midpoint on 1 to 9'); + +SELECT CASE WHEN min_version('3.7.1') +THEN + collect_tap( + set_eq($$expectedCost3(-1,9)$$, $$dijkstra1(7,9)$$, 'Cost from target on 10 (-1 default, aka 7) to 9'), + set_eq($$expectedCost3(-1,8)$$, $$dijkstra1(7,8)$$, 'Cost from target on 10 to 8'), + set_eq($$expectedCost3(-1,7)$$, ARRAY[0]::TEXT[], 'Cost from target on 10 to 7') + ) +ELSE skip('Fix implemented on 3.7.1',3) +END; + +/* UNION data is sorted + midpoint of edge 1 (-1 by default) + source point of edge 10 (-2 by default) +*/ +DEALLOCATE PREPARE expectedCost3; +PREPARE expectedCost3(BIGINT, BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_withPointsCostMatrix( + $$SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$SELECT 10 AS edge_id, 0::float AS fraction UNION SELECT 1, 0.5 $$, + ARRAY[$1, $2], true) LIMIT 1; + +SELECT results_eq($$expectedCost3(-1,6)$$, $$expectedCost1(6)$$, '(UNION) Cost from midpoint on 1 (-2 default) to 6'); +SELECT results_eq($$expectedCost3(-1,7)$$, $$expectedCost1(7)$$, 'Cost from midpoint on 1 to 7'); +SELECT results_eq($$expectedCost3(-1,8)$$, $$expectedCost1(8)$$, 'Cost from midpoint on 1 to 8'); +SELECT results_eq($$expectedCost3(-1,9)$$, $$expectedCost1(9)$$, 'Cost from midpoint on 1 to 9'); + +SELECT CASE WHEN min_version('3.7.1') +THEN + collect_tap( + set_eq($$expectedCost3(-2,9)$$, $$dijkstra1(7,9)$$, 'Cost from target on 10 (-1 default, aka 7) to 9'), + set_eq($$expectedCost3(-2,8)$$, $$dijkstra1(7,8)$$, 'Cost from target on 10 to 8'), + set_eq($$expectedCost3(-2,7)$$, ARRAY[0]::TEXT[], 'Cost from target on 10 to 7') + ) +ELSE skip('Fix implemented on 3.7.1',3) +END; + +/* VALUES data is not sorted + midpoint of edge 1 (-1 by default) + source point of edge 10 (-2 by default) +*/ +DEALLOCATE PREPARE expectedCost3; +PREPARE expectedCost3(BIGINT, BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_withPointsCostMatrix( + $$SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$SELECT * FROM (VALUES (1,0.5), (10, 0)) AS t (edge_id, fraction)$$, + ARRAY[$1, $2], true) LIMIT 1; + +SELECT results_eq($$expectedCost3(-1,6)$$, $$expectedCost1(6)$$, '(VALUES) Cost from midpoint on 1 (-1 default) to 6'); +SELECT results_eq($$expectedCost3(-1,7)$$, $$expectedCost1(7)$$, 'Cost from midpoint on 1 to 7'); +SELECT results_eq($$expectedCost3(-1,8)$$, $$expectedCost1(8)$$, 'Cost from midpoint on 1 to 8'); +SELECT results_eq($$expectedCost3(-1,9)$$, $$expectedCost1(9)$$, 'Cost from midpoint on 1 to 9'); + +SELECT CASE WHEN min_version('3.7.1') +THEN + collect_tap( + set_eq($$expectedCost3(-2,9)$$, $$dijkstra1(7,9)$$, 'Cost from target on 10 (-1 default, aka 7) to 9'), + set_eq($$expectedCost3(-2,8)$$, $$dijkstra1(7,8)$$, 'Cost from target on 10 to 8'), + set_eq($$expectedCost3(-2,7)$$, ARRAY[0]::TEXT[], 'Cost from target on 10 to 7') + ) +ELSE skip('Fix implemented on 3.7.1',3) +END; + +/* Points + midpoint of edge 1 (-2 assigned) + source point of edge 10 (-1 assigned) +*/ +DEALLOCATE PREPARE expectedCost3; +PREPARE expectedCost3(BIGINT, BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_withPointsCostMatrix( + $$SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$SELECT 2 AS pid, 1 AS edge_id, 0.5::float AS fraction UNION SELECT 1, 10, 0 $$, + ARRAY[$1, $2], true) LIMIT 1; + +SELECT results_eq($$expectedCost3(-2,6)$$, $$expectedCost1(6)$$, '(ASSIGNED) Cost from midpoint on 1 (-2 default) to 6'); +SELECT results_eq($$expectedCost3(-2,7)$$, $$expectedCost1(7)$$, 'Cost from midpoint on 1 to 7'); +SELECT results_eq($$expectedCost3(-2,8)$$, $$expectedCost1(8)$$, 'Cost from midpoint on 1 to 8'); +SELECT results_eq($$expectedCost3(-2,9)$$, $$expectedCost1(9)$$, 'Cost from midpoint on 1 to 9'); + +SELECT CASE WHEN min_version('3.7.1') +THEN + collect_tap( + set_eq($$expectedCost3(-1,9)$$, $$dijkstra1(7,9)$$, 'Cost from target on 10 (-1 default, aka 7) to 9'), + set_eq($$expectedCost3(-1,8)$$, $$dijkstra1(7,8)$$, 'Cost from target on 10 to 8'), + set_eq($$expectedCost3(-1,7)$$, ARRAY[0]::TEXT[], 'Cost from target on 10 to 7') + ) +ELSE skip('Fix implemented on 3.7.1',3) +END; + +SELECT finish(); +ROLLBACK; diff --git a/pgtap/withPoints/withPointsDD/edge_cases/point_in_vertex.pg b/pgtap/withPoints/withPointsDD/edge_cases/point_in_vertex.pg new file mode 100644 index 0000000000..eab2cf5eee --- /dev/null +++ b/pgtap/withPoints/withPointsDD/edge_cases/point_in_vertex.pg @@ -0,0 +1,186 @@ +/*PGR-GNU***************************************************************** + +Copyright (c) 2024 pgRouting developers +Mail: project@pgrouting.org + +------ +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + ********************************************************************PGR-GNU*/ +BEGIN; + +SET extra_float_digits=-3; + +SELECT CASE WHEN min_version('3.6.0') THEN plan(38) ELSE plan(1) END; + +CREATE VIEW four_edges AS +SELECT * FROM edges WHERE id IN (1,4,10,14); + +CREATE OR REPLACE FUNCTION test_vertex_points() RETURNS SETOF TEXT AS +$BODY$ +BEGIN + + IF NOT min_version('3.6.0') THEN + RETURN QUERY SELECT skip(1, 'Signature added on 3.6.0'); + RETURN; + END IF; + + +PREPARE dijkstra1(BIGINT, BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_drivingDistance( + $$SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $1, 5, true) WHERE node = $2; + +-- its a straigh line and one extreme are reachable +RETURN QUERY SELECT results_eq($$dijkstra1(5,9)$$, ARRAY[4]::TEXT[]); +RETURN QUERY SELECT results_eq($$dijkstra1(9,5)$$, ARRAY[4]::TEXT[]); + + +/* Points + midpoint of edge 1 (-1 by default) +*/ +PREPARE expectedCost1(BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_withPointsDD( + $$ SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$ SELECT 1 AS edge_id, 0.5::float AS fraction$$, + -1, 3200.0, 'r', true) WHERE node = $1; + +RETURN QUERY SELECT results_eq($$expectedCost1(6)$$, ARRAY[0.5]::TEXT[], 'Cost from midpoint on 1 (-1 default) to 6'); +RETURN QUERY SELECT results_eq($$expectedCost1(7)$$, ARRAY[1.5]::TEXT[] , 'Cost from midpoint on 1 to 7'); +RETURN QUERY SELECT results_eq($$expectedCost1(8)$$, ARRAY[2.5]::TEXT[] , 'Cost from midpoint on 1 to 8'); +RETURN QUERY SELECT results_eq($$expectedCost1(9)$$, ARRAY[3.5]::TEXT[] , 'Cost from midpoint on 1 to 9'); + +/* Points + midpoint of edge 1 (-2 assigned) +*/ +PREPARE expectedCost2(BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_withPointsDD( + $$ SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$ SELECT 2 AS pid, 1 AS edge_id, 0.5::float AS fraction$$, + -2, 3200.0, 'r', true) WHERE node = $1; + +RETURN QUERY SELECT results_eq($$expectedCost2(6)$$, $$expectedCost1(6)$$, 'Cost from midpoint on 1 (-2 assigned) to 6'); +RETURN QUERY SELECT results_eq($$expectedCost2(7)$$, $$expectedCost1(7)$$, 'Cost from midpoint on 1 to 7'); +RETURN QUERY SELECT results_eq($$expectedCost2(8)$$, $$expectedCost1(8)$$, 'Cost from midpoint on 1 to 8'); +RETURN QUERY SELECT results_eq($$expectedCost2(9)$$, $$expectedCost1(9)$$, 'Cost from midpoint on 1 to 9'); + +/* UNION ALL data is not sorted + source point of edge 10 (-1 by default) + midpoint of edge 1 (-2 by default) +*/ +PREPARE expectedCost3(BIGINT, BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_withPointsDD( + $$SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$SELECT 10 AS edge_id, 0::float AS fraction UNION ALL SELECT 1, 0.5 $$, + $1, 3200.0, 'r', true) WHERE node = $2; + +RETURN QUERY SELECT results_eq($$expectedCost3(-2,6)$$, $$expectedCost1(6)$$, '(UNION ALL) Cost from midpoint on 1 (-2 default) to 6'); +RETURN QUERY SELECT results_eq($$expectedCost3(-2,7)$$, $$expectedCost1(7)$$, 'Cost from midpoint on 1 to 7'); +RETURN QUERY SELECT results_eq($$expectedCost3(-2,8)$$, $$expectedCost1(8)$$, 'Cost from midpoint on 1 to 8'); +RETURN QUERY SELECT results_eq($$expectedCost3(-2,9)$$, $$expectedCost1(9)$$, 'Cost from midpoint on 1 to 9'); + +RETURN QUERY SELECT CASE WHEN min_version('3.7.1') +THEN + collect_tap( + set_eq($$expectedCost3(-1,9)$$, $$dijkstra1(7,9)$$, 'Cost from target on 10 (-1 default, aka 7) to 9'), + set_eq($$expectedCost3(-1,8)$$, $$dijkstra1(7,8)$$, 'Cost from target on 10 to 8'), + set_eq($$expectedCost3(-1,7)$$, ARRAY[0]::TEXT[], 'Cost from target on 10 to 7') + ) +ELSE skip('Fix implemented on 3.7.1',3) +END; + +/* UNION data is sorted + midpoint of edge 1 (-1 by default) + source point of edge 10 (-2 by default) +*/ +DEALLOCATE PREPARE expectedCost3; +PREPARE expectedCost3(BIGINT, BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_withPointsDD( + $$SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$SELECT 10 AS edge_id, 0::float AS fraction UNION SELECT 1, 0.5 $$, + $1, 3200.0, 'r', true) WHERE node = $2; + +RETURN QUERY SELECT results_eq($$expectedCost3(-1,6)$$, $$expectedCost1(6)$$, '(UNION) Cost from midpoint on 1 (-2 default) to 6'); +RETURN QUERY SELECT results_eq($$expectedCost3(-1,7)$$, $$expectedCost1(7)$$, 'Cost from midpoint on 1 to 7'); +RETURN QUERY SELECT results_eq($$expectedCost3(-1,8)$$, $$expectedCost1(8)$$, 'Cost from midpoint on 1 to 8'); +RETURN QUERY SELECT results_eq($$expectedCost3(-1,9)$$, $$expectedCost1(9)$$, 'Cost from midpoint on 1 to 9'); + +RETURN QUERY SELECT CASE WHEN min_version('3.7.1') +THEN + collect_tap( + set_eq($$expectedCost3(-2,9)$$, $$dijkstra1(7,9)$$, 'Cost from target on 10 (-1 default, aka 7) to 9'), + set_eq($$expectedCost3(-2,8)$$, $$dijkstra1(7,8)$$, 'Cost from target on 10 to 8'), + set_eq($$expectedCost3(-2,7)$$, ARRAY[0]::TEXT[], 'Cost from target on 10 to 7') + ) +ELSE skip('Fix implemented on 3.7.1',3) +END; + +/* VALUES data is not sorted + midpoint of edge 1 (-1 by default) + source point of edge 10 (-2 by default) +*/ +DEALLOCATE PREPARE expectedCost3; +PREPARE expectedCost3(BIGINT, BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_withPointsDD( + $$SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$SELECT * FROM (VALUES (1,0.5), (10, 0)) AS t (edge_id, fraction)$$, + $1, 3200.0, 'r', true) WHERE node = $2; + +RETURN QUERY SELECT results_eq($$expectedCost3(-1,6)$$, $$expectedCost1(6)$$, '(VALUES) Cost from midpoint on 1 (-1 default) to 6'); +RETURN QUERY SELECT results_eq($$expectedCost3(-1,7)$$, $$expectedCost1(7)$$, 'Cost from midpoint on 1 to 7'); +RETURN QUERY SELECT results_eq($$expectedCost3(-1,8)$$, $$expectedCost1(8)$$, 'Cost from midpoint on 1 to 8'); +RETURN QUERY SELECT results_eq($$expectedCost3(-1,9)$$, $$expectedCost1(9)$$, 'Cost from midpoint on 1 to 9'); + +RETURN QUERY SELECT CASE WHEN min_version('3.7.1') +THEN + collect_tap( + set_eq($$expectedCost3(-2,9)$$, $$dijkstra1(7,9)$$, 'Cost from target on 10 (-1 default, aka 7) to 9'), + set_eq($$expectedCost3(-2,8)$$, $$dijkstra1(7,8)$$, 'Cost from target on 10 to 8'), + set_eq($$expectedCost3(-2,7)$$, ARRAY[0]::TEXT[], 'Cost from target on 10 to 7') + ) +ELSE skip('Fix implemented on 3.7.1',3) +END; + +/* Points + midpoint of edge 1 (-2 assigned) + source point of edge 10 (-1 assigned) +*/ +DEALLOCATE PREPARE expectedCost3; +PREPARE expectedCost3(BIGINT, BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_withPointsDD( + $$SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$SELECT 2 AS pid, 1 AS edge_id, 0.5::float AS fraction UNION SELECT 1, 10, 0 $$, + $1, 3200.0, 'r', true) WHERE node = $2; + +RETURN QUERY SELECT results_eq($$expectedCost3(-2,6)$$, $$expectedCost1(6)$$, '(ASSIGNED) Cost from midpoint on 1 (-2 default) to 6'); +RETURN QUERY SELECT results_eq($$expectedCost3(-2,7)$$, $$expectedCost1(7)$$, 'Cost from midpoint on 1 to 7'); +RETURN QUERY SELECT results_eq($$expectedCost3(-2,8)$$, $$expectedCost1(8)$$, 'Cost from midpoint on 1 to 8'); +RETURN QUERY SELECT results_eq($$expectedCost3(-2,9)$$, $$expectedCost1(9)$$, 'Cost from midpoint on 1 to 9'); + +RETURN QUERY SELECT CASE WHEN min_version('3.7.1') +THEN + collect_tap( + set_eq($$expectedCost3(-1,9)$$, $$dijkstra1(7,9)$$, 'Cost from target on 10 (-1 default, aka 7) to 9'), + set_eq($$expectedCost3(-1,8)$$, $$dijkstra1(7,8)$$, 'Cost from target on 10 to 8'), + set_eq($$expectedCost3(-1,7)$$, ARRAY[0]::TEXT[], 'Cost from target on 10 to 7') + ) +ELSE skip('Fix implemented on 3.7.1',3) +END; + +END +$BODY$ +LANGUAGE plpgsql VOLATILE; + +SELECT test_vertex_points(); + +SELECT finish(); +ROLLBACK; diff --git a/pgtap/withPoints/withPointsVia/edge_cases/point_in_vertex.pg b/pgtap/withPoints/withPointsVia/edge_cases/point_in_vertex.pg new file mode 100644 index 0000000000..15db9d8984 --- /dev/null +++ b/pgtap/withPoints/withPointsVia/edge_cases/point_in_vertex.pg @@ -0,0 +1,186 @@ +/*PGR-GNU***************************************************************** + +Copyright (c) 2024 pgRouting developers +Mail: project@pgrouting.org + +------ +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + ********************************************************************PGR-GNU*/ +BEGIN; + +SET extra_float_digits=-3; + +SELECT CASE WHEN min_version('3.4.0') THEN plan(38) ELSE plan(1) END; + +CREATE VIEW four_edges AS +SELECT * FROM edges WHERE id IN (1,4,10,14); + +CREATE OR REPLACE FUNCTION test_vertex_points() RETURNS SETOF TEXT AS +$BODY$ +BEGIN + + IF NOT min_version('3.4.0') THEN + RETURN QUERY SELECT skip(1, 'Signature added on 3.4.0'); + RETURN; + END IF; + + +PREPARE dijkstra1(BIGINT, BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_dijkstraVia( + $$SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + ARRAY[$1, $2], true) WHERE node = $2 and edge < 0; + +-- its a straigh line and one extreme are reachable +RETURN QUERY SELECT results_eq($$dijkstra1(5,9)$$, ARRAY[4]::TEXT[]); +RETURN QUERY SELECT results_eq($$dijkstra1(9,5)$$, ARRAY[4]::TEXT[]); + + +/* Points + midpoint of edge 1 (-1 by default) +*/ +PREPARE expectedCost1(BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_withPointsVia( + $$ SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$ SELECT 1 AS edge_id, 0.5::float AS fraction$$, + ARRAY[-1, $1], true) WHERE node = $1 and edge < 0; + +RETURN QUERY SELECT results_eq($$expectedCost1(6)$$, ARRAY[0.5]::TEXT[], 'Cost from midpoint on 1 (-1 default) to 6'); +RETURN QUERY SELECT results_eq($$expectedCost1(7)$$, ARRAY[1.5]::TEXT[] , 'Cost from midpoint on 1 to 7'); +RETURN QUERY SELECT results_eq($$expectedCost1(8)$$, ARRAY[2.5]::TEXT[] , 'Cost from midpoint on 1 to 8'); +RETURN QUERY SELECT results_eq($$expectedCost1(9)$$, ARRAY[3.5]::TEXT[] , 'Cost from midpoint on 1 to 9'); + +/* Points + midpoint of edge 1 (-2 assigned) +*/ +PREPARE expectedCost2(BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_withPointsVia( + $$ SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$ SELECT 2 AS pid, 1 AS edge_id, 0.5::float AS fraction$$, + ARRAY[-2, $1], true) WHERE node = $1 and edge < 0; + +RETURN QUERY SELECT results_eq($$expectedCost2(6)$$, $$expectedCost1(6)$$, 'Cost from midpoint on 1 (-2 assigned) to 6'); +RETURN QUERY SELECT results_eq($$expectedCost2(7)$$, $$expectedCost1(7)$$, 'Cost from midpoint on 1 to 7'); +RETURN QUERY SELECT results_eq($$expectedCost2(8)$$, $$expectedCost1(8)$$, 'Cost from midpoint on 1 to 8'); +RETURN QUERY SELECT results_eq($$expectedCost2(9)$$, $$expectedCost1(9)$$, 'Cost from midpoint on 1 to 9'); + +/* UNION ALL data is not sorted + source point of edge 10 (-1 by default) + midpoint of edge 1 (-2 by default) +*/ +PREPARE expectedCost3(BIGINT, BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_withPointsVia( + $$SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$SELECT 10 AS edge_id, 0::float AS fraction UNION ALL SELECT 1, 0.5 $$, + ARRAY[$1, $2], true) WHERE node = $2 and edge < 0; + +RETURN QUERY SELECT results_eq($$expectedCost3(-2,6)$$, $$expectedCost1(6)$$, '(UNION ALL) Cost from midpoint on 1 (-2 default) to 6'); +RETURN QUERY SELECT results_eq($$expectedCost3(-2,7)$$, $$expectedCost1(7)$$, 'Cost from midpoint on 1 to 7'); +RETURN QUERY SELECT results_eq($$expectedCost3(-2,8)$$, $$expectedCost1(8)$$, 'Cost from midpoint on 1 to 8'); +RETURN QUERY SELECT results_eq($$expectedCost3(-2,9)$$, $$expectedCost1(9)$$, 'Cost from midpoint on 1 to 9'); + +RETURN QUERY SELECT CASE WHEN min_version('3.7.1') +THEN + collect_tap( + set_eq($$expectedCost3(-1,9)$$, $$dijkstra1(7,9)$$, 'Cost from target on 10 (-1 default, aka 7) to 9'), + set_eq($$expectedCost3(-1,8)$$, $$dijkstra1(7,8)$$, 'Cost from target on 10 to 8'), + set_eq($$expectedCost3(-1,7)$$, ARRAY[0]::TEXT[], 'Cost from target on 10 to 7') + ) +ELSE skip('Fix implemented on 3.7.1',3) +END; + +/* UNION data is sorted + midpoint of edge 1 (-1 by default) + source point of edge 10 (-2 by default) +*/ +DEALLOCATE PREPARE expectedCost3; +PREPARE expectedCost3(BIGINT, BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_withPointsVia( + $$SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$SELECT 10 AS edge_id, 0::float AS fraction UNION SELECT 1, 0.5 $$, + ARRAY[$1, $2], true) WHERE node = $2 and edge < 0; + +RETURN QUERY SELECT results_eq($$expectedCost3(-1,6)$$, $$expectedCost1(6)$$, '(UNION) Cost from midpoint on 1 (-2 default) to 6'); +RETURN QUERY SELECT results_eq($$expectedCost3(-1,7)$$, $$expectedCost1(7)$$, 'Cost from midpoint on 1 to 7'); +RETURN QUERY SELECT results_eq($$expectedCost3(-1,8)$$, $$expectedCost1(8)$$, 'Cost from midpoint on 1 to 8'); +RETURN QUERY SELECT results_eq($$expectedCost3(-1,9)$$, $$expectedCost1(9)$$, 'Cost from midpoint on 1 to 9'); + +RETURN QUERY SELECT CASE WHEN min_version('3.7.1') +THEN + collect_tap( + set_eq($$expectedCost3(-2,9)$$, $$dijkstra1(7,9)$$, 'Cost from target on 10 (-1 default, aka 7) to 9'), + set_eq($$expectedCost3(-2,8)$$, $$dijkstra1(7,8)$$, 'Cost from target on 10 to 8'), + set_eq($$expectedCost3(-2,7)$$, ARRAY[0]::TEXT[], 'Cost from target on 10 to 7') + ) +ELSE skip('Fix implemented on 3.7.1',3) +END; + +/* VALUES data is not sorted + midpoint of edge 1 (-1 by default) + source point of edge 10 (-2 by default) +*/ +DEALLOCATE PREPARE expectedCost3; +PREPARE expectedCost3(BIGINT, BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_withPointsVia( + $$SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$SELECT * FROM (VALUES (1,0.5), (10, 0)) AS t (edge_id, fraction)$$, + ARRAY[$1, $2], true) WHERE node = $2 and edge < 0; + +RETURN QUERY SELECT results_eq($$expectedCost3(-1,6)$$, $$expectedCost1(6)$$, '(VALUES) Cost from midpoint on 1 (-1 default) to 6'); +RETURN QUERY SELECT results_eq($$expectedCost3(-1,7)$$, $$expectedCost1(7)$$, 'Cost from midpoint on 1 to 7'); +RETURN QUERY SELECT results_eq($$expectedCost3(-1,8)$$, $$expectedCost1(8)$$, 'Cost from midpoint on 1 to 8'); +RETURN QUERY SELECT results_eq($$expectedCost3(-1,9)$$, $$expectedCost1(9)$$, 'Cost from midpoint on 1 to 9'); + +RETURN QUERY SELECT CASE WHEN min_version('3.7.1') +THEN + collect_tap( + set_eq($$expectedCost3(-2,9)$$, $$dijkstra1(7,9)$$, 'Cost from target on 10 (-1 default, aka 7) to 9'), + set_eq($$expectedCost3(-2,8)$$, $$dijkstra1(7,8)$$, 'Cost from target on 10 to 8'), + set_eq($$expectedCost3(-2,7)$$, ARRAY[0]::TEXT[], 'Cost from target on 10 to 7') + ) +ELSE skip('Fix implemented on 3.7.1',3) +END; + +/* Points + midpoint of edge 1 (-2 assigned) + source point of edge 10 (-1 assigned) +*/ +DEALLOCATE PREPARE expectedCost3; +PREPARE expectedCost3(BIGINT, BIGINT) AS +SELECT agg_cost::TEXT FROM pgr_withPointsVia( + $$SELECT id, source, target, cost, reverse_cost FROM four_edges$$, + $$SELECT 2 AS pid, 1 AS edge_id, 0.5::float AS fraction UNION SELECT 1, 10, 0 $$, + ARRAY[$1, $2], true) WHERE node = $2 and edge < 0; + +RETURN QUERY SELECT results_eq($$expectedCost3(-2,6)$$, $$expectedCost1(6)$$, '(ASSIGNED) Cost from midpoint on 1 (-2 default) to 6'); +RETURN QUERY SELECT results_eq($$expectedCost3(-2,7)$$, $$expectedCost1(7)$$, 'Cost from midpoint on 1 to 7'); +RETURN QUERY SELECT results_eq($$expectedCost3(-2,8)$$, $$expectedCost1(8)$$, 'Cost from midpoint on 1 to 8'); +RETURN QUERY SELECT results_eq($$expectedCost3(-2,9)$$, $$expectedCost1(9)$$, 'Cost from midpoint on 1 to 9'); + +RETURN QUERY SELECT CASE WHEN min_version('3.7.1') +THEN + collect_tap( + set_eq($$expectedCost3(-1,9)$$, $$dijkstra1(7,9)$$, 'Cost from target on 10 (-1 default, aka 7) to 9'), + set_eq($$expectedCost3(-1,8)$$, $$dijkstra1(7,8)$$, 'Cost from target on 10 to 8'), + set_eq($$expectedCost3(-1,7)$$, ARRAY[0]::TEXT[], 'Cost from target on 10 to 7') + ) +ELSE skip('Fix implemented on 3.7.1',3) +END; + +END +$BODY$ +LANGUAGE plpgsql VOLATILE; + +SELECT test_vertex_points(); + +SELECT finish(); +ROLLBACK; diff --git a/requirements.txt b/requirements.txt index ef307a8bab..85758d9a5a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,3 @@ Sphinx>4.0.0,<7.0.0 sphinx-bootstrap-theme>=0.8.0 +sphinx-collapse diff --git a/sql/common/_checkcolumn.sql b/sql/common/_checkcolumn.sql index eb0a59108c..36edfe3b87 100644 --- a/sql/common/_checkcolumn.sql +++ b/sql/common/_checkcolumn.sql @@ -36,12 +36,23 @@ $BODY$ DECLARE has_column BOOLEAN := TRUE; rec RECORD; + sqlhint TEXT; BEGIN BEGIN EXECUTE format('SELECT %1$s FROM ( %2$s ) AS __a__ limit 1', $2, $1); + EXCEPTION WHEN OTHERS THEN + BEGIN + IF NOT is_optional THEN + RAISE EXCEPTION '%', SQLERRM USING HINT = $1, ERRCODE = SQLSTATE; + ELSE + has_column := FALSE; + END IF; + END; + END; + BEGIN EXECUTE format('SELECT pg_typeof(%1$s) FROM ( %2$s ) AS __a__ limit 1', $2, $1) INTO rec; @@ -89,7 +100,5 @@ END; $BODY$ LANGUAGE plpgsql VOLATILE STRICT; - --- COMMENTS COMMENT ON FUNCTION _pgr_checkColumn(TEXT, TEXT, TEXT, BOOLEAN, BOOLEAN) IS 'pgRouting internal function'; diff --git a/sql/common/_checkquery.sql b/sql/common/_checkquery.sql index ef6550e8d6..d649b775ee 100644 --- a/sql/common/_checkquery.sql +++ b/sql/common/_checkquery.sql @@ -33,18 +33,19 @@ DECLARE BEGIN - BEGIN + IF $1 !~ '[[:space:]]' THEN + -- prepared statements no arguments EXECUTE format($$ SELECT regexp_replace(regexp_replace(statement, %1$L,'','i'),';$','') FROM pg_prepared_statements WHERE name = %2$L$$, '.*' || $1 || '\s*as', $1) INTO main_sql; - EXCEPTION WHEN OTHERS - THEN main_sql := $1; - END; - - IF main_sql IS NULL THEN + IF main_sql IS NULL THEN + RAISE EXCEPTION 'prepared statement "%" does not exist', $1; + END IF; + ELSE + -- normal query main_sql := $1; END IF; @@ -52,8 +53,7 @@ BEGIN EXECUTE format('SELECT * FROM ( %1$s ) AS __a__ limit 1', main_sql); EXCEPTION WHEN OTHERS THEN - RAISE EXCEPTION '%', SQLERRM - USING HINT = 'Please check query: '|| $1; + RAISE EXCEPTION '%', SQLERRM USING HINT = $1, ERRCODE = SQLSTATE; END; RETURN main_sql; @@ -62,7 +62,5 @@ END; $BODY$ LANGUAGE plpgsql VOLATILE STRICT; - --- COMMENTS COMMENT ON FUNCTION _pgr_checkquery(TEXT) IS 'pgrouting internal function'; diff --git a/sql/common/pgrouting.control b/sql/common/pgrouting.control index 5b6ddcf1df..7461bdd082 100644 --- a/sql/common/pgrouting.control +++ b/sql/common/pgrouting.control @@ -3,5 +3,4 @@ comment = 'pgRouting Extension' default_version = '${PROJECT_VERSION}' module_pathname = '${PROJECT_MODULE_PATHNAME}' relocatable = true -requires = 'plpgsql' -requires = 'postgis' +requires = 'plpgsql,postgis' diff --git a/sql/contraction/CMakeLists.txt b/sql/contraction/CMakeLists.txt index 3f20af5990..1bf544f345 100644 --- a/sql/contraction/CMakeLists.txt +++ b/sql/contraction/CMakeLists.txt @@ -2,6 +2,8 @@ SET(LOCAL_FILES _contraction.sql contraction.sql + deadEndContraction.sql + linearContraction.sql ) foreach (f ${LOCAL_FILES}) diff --git a/sql/contraction/contraction.sql b/sql/contraction/contraction.sql index ce65e59305..4ac224f04d 100644 --- a/sql/contraction/contraction.sql +++ b/sql/contraction/contraction.sql @@ -27,25 +27,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ********************************************************************PGR-GNU*/ --------------------- --------------------- --- contraction --------------------- --------------------- - --------------------- --- pgr_contraction --------------------- - - ---v3.0 +--v3.8 CREATE FUNCTION pgr_contraction( TEXT, -- edges_sql (required) - BIGINT[], -- contraction_order (required) - - max_cycles INTEGER DEFAULT 1, - forbidden_vertices BIGINT[] DEFAULT ARRAY[]::BIGINT[], directed BOOLEAN DEFAULT true, + methods INTEGER[] DEFAULT ARRAY[1,2]::INTEGER[], + cycles INTEGER DEFAULT 1, + forbidden BIGINT[] DEFAULT ARRAY[]::BIGINT[], OUT type TEXT, OUT id BIGINT, @@ -55,22 +43,50 @@ CREATE FUNCTION pgr_contraction( OUT cost FLOAT) RETURNS SETOF RECORD AS $BODY$ - SELECT type, id, contracted_vertices, source, target, cost - FROM _pgr_contraction(_pgr_get_statement($1), $2::BIGINT[], $3, $4, $5); + SELECT type, id, contracted_vertices, source, target, cost + FROM _pgr_contraction(_pgr_get_statement($1), methods::BIGINT[], cycles, forbidden, directed); $BODY$ LANGUAGE SQL VOLATILE STRICT; --- COMMENTS - -COMMENT ON FUNCTION pgr_contraction(TEXT, BIGINT[], INTEGER, BIGINT[], BOOLEAN) +COMMENT ON FUNCTION pgr_contraction(TEXT, BOOLEAN, INTEGER[], INTEGER, BIGINT[]) IS 'pgr_contraction - Parameters: - Edges SQL with columns: id, source, target, cost [,reverse_cost] - - ARRAY [Contraction order] - Optional Parameters - - max_cycles := 1 - - forbidden_vertices := ARRAY[]::BIGINT[] - directed := true + - methods := ARRAY[1,2] + - cycles := 1 + - forbidden := ARRAY[]::BIGINT[] - Documentation: - ${PROJECT_DOC_LINK}/pgr_contraction.html '; + +--v3.0 +CREATE FUNCTION pgr_contraction( + TEXT, -- edges_sql (required) + BIGINT[], -- contraction_order (required) + + max_cycles INTEGER DEFAULT 1, + forbidden_vertices BIGINT[] DEFAULT ARRAY[]::BIGINT[], + directed BOOLEAN DEFAULT true, + + OUT type TEXT, + OUT id BIGINT, + OUT contracted_vertices BIGINT[], + OUT source BIGINT, + OUT target BIGINT, + OUT cost FLOAT) +RETURNS SETOF RECORD AS +$BODY$ +BEGIN + RAISE NOTICE 'Deprecated Signature pgr_contraction(text,bigint[],integer,integer[],bigint[],boolean) in v3.8.0'; + RETURN QUERY + SELECT a.type, a.id, a.contracted_vertices, a.source, a.target, a.cost + FROM _pgr_contraction(_pgr_get_statement($1), $2::BIGINT[], $3, $4, $5) AS a; +END; +$BODY$ +LANGUAGE plpgsql VOLATILE STRICT; + +COMMENT ON FUNCTION pgr_contraction(TEXT, BIGINT[], INTEGER, BIGINT[], BOOLEAN) +IS 'pgr_contraction deprecated in 3.8.0'; + diff --git a/sql/contraction/deadEndContraction.sql b/sql/contraction/deadEndContraction.sql new file mode 100644 index 0000000000..c6cfa7437f --- /dev/null +++ b/sql/contraction/deadEndContraction.sql @@ -0,0 +1,54 @@ +/*PGR-GNU***************************************************************** +File: deadEndContraction.sql + +Copyright (c) 2025 pgRouting developers +Mail: project@pgrouting.org + +------ + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + ********************************************************************PGR-GNU*/ + +--v3.8 +CREATE FUNCTION pgr_contractionDeadEnd( + TEXT, -- edges_sql (required) + + directed BOOLEAN DEFAULT true, + forbidden BIGINT[] DEFAULT ARRAY[]::BIGINT[], + + OUT type TEXT, + OUT id BIGINT, + OUT contracted_vertices BIGINT[], + OUT source BIGINT, + OUT target BIGINT, + OUT cost FLOAT) +RETURNS SETOF RECORD AS +$BODY$ + SELECT type, id, contracted_vertices, source, target, cost + FROM _pgr_contraction(_pgr_get_statement($1), ARRAY[1]::BIGINT[], 1, $3, $2); +$BODY$ +LANGUAGE SQL VOLATILE STRICT; + +COMMENT ON FUNCTION pgr_contractionDeadEnd(TEXT, BOOLEAN, BIGINT[]) +IS 'pgr_contractionDeadEnd +- Parameters: + - Edges SQL with columns: id, source, target, cost [,reverse_cost] +- Optional Parameters + - directed := true + - forbidden := ARRAY[]::BIGINT[] +- Documentation: + - ${PROJECT_DOC_LINK}/pgr_contractionDeadEnd.html +'; diff --git a/sql/contraction/linearContraction.sql b/sql/contraction/linearContraction.sql new file mode 100644 index 0000000000..6fe617a119 --- /dev/null +++ b/sql/contraction/linearContraction.sql @@ -0,0 +1,54 @@ +/*PGR-GNU***************************************************************** +File: linearContraction.sql + +Copyright (c) 2025 pgRouting developers +Mail: project@pgrouting.org + +------ + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + ********************************************************************PGR-GNU*/ + +--v3.8 +CREATE FUNCTION pgr_contractionLinear( + TEXT, -- edges_sql (required) + + directed BOOLEAN DEFAULT true, + forbidden BIGINT[] DEFAULT ARRAY[]::BIGINT[], + + OUT type TEXT, + OUT id BIGINT, + OUT contracted_vertices BIGINT[], + OUT source BIGINT, + OUT target BIGINT, + OUT cost FLOAT) +RETURNS SETOF RECORD AS +$BODY$ + SELECT type, id, contracted_vertices, source, target, cost + FROM _pgr_contraction(_pgr_get_statement($1), ARRAY[2]::BIGINT[], 1, $3, $2); +$BODY$ +LANGUAGE SQL VOLATILE STRICT; + +COMMENT ON FUNCTION pgr_contractionLinear(TEXT, BOOLEAN, BIGINT[]) +IS 'pgr_contractionLinear +- Parameters: + - Edges SQL with columns: id, source, target, cost [,reverse_cost] +- Optional Parameters + - directed := true + - forbidden := ARRAY[]::BIGINT[] +- Documentation: + - ${PROJECT_DOC_LINK}/pgr_contractionLinear.html +'; diff --git a/sql/dijkstra/CMakeLists.txt b/sql/dijkstra/CMakeLists.txt index 2d8700845a..22806073bf 100644 --- a/sql/dijkstra/CMakeLists.txt +++ b/sql/dijkstra/CMakeLists.txt @@ -6,7 +6,6 @@ SET(LOCAL_FILES dijkstraCostMatrix.sql _dijkstraVia.sql dijkstraVia.sql - _dijkstraNear.sql dijkstraNear.sql dijkstraNearCost.sql ) diff --git a/sql/dijkstra/_dijkstra.sql b/sql/dijkstra/_dijkstra.sql index 524cb99d71..e4db5d7455 100644 --- a/sql/dijkstra/_dijkstra.sql +++ b/sql/dijkstra/_dijkstra.sql @@ -28,12 +28,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ********************************************************************PGR-GNU*/ ---------------- ---------------- --- dijkstra ---------------- ---------------- - --v3.2 CREATE FUNCTION _pgr_dijkstra( edges_sql TEXT, @@ -86,56 +80,3 @@ IS 'pgRouting internal function'; COMMENT ON FUNCTION _pgr_dijkstra(TEXT, TEXT, BOOLEAN, BOOLEAN, BIGINT, BOOLEAN) IS 'pgRouting internal function'; - - -/** The following are kept for backward compatibility on signatures **/ ---v3.0 -CREATE FUNCTION _pgr_dijkstra( - edges_sql TEXT, - start_vids ANYARRAY, - end_vids ANYARRAY, - directed BOOLEAN DEFAULT true, - only_cost BOOLEAN DEFAULT false, - normal BOOLEAN DEFAULT true, - n_goals BIGINT DEFAULT 0, - - OUT seq INTEGER, - OUT path_seq INTEGER, - OUT start_vid BIGINT, - OUT end_vid BIGINT, - OUT node BIGINT, - OUT edge BIGINT, - OUT cost FLOAT, - OUT agg_cost FLOAT) -RETURNS SETOF RECORD AS -'MODULE_PATHNAME' -LANGUAGE C VOLATILE STRICT; - - ---v3.1 -CREATE FUNCTION _pgr_dijkstra( - edges_sql TEXT, - combinations_sql TEXT, - directed BOOLEAN DEFAULT true, - only_cost BOOLEAN DEFAULT false, - normal BOOLEAN DEFAULT true, - - OUT seq INTEGER, - OUT path_seq INTEGER, - OUT start_vid BIGINT, - OUT end_vid BIGINT, - OUT node BIGINT, - OUT edge BIGINT, - OUT cost FLOAT, - OUT agg_cost FLOAT) -RETURNS SETOF RECORD AS -'MODULE_PATHNAME' -LANGUAGE C VOLATILE STRICT; - --- COMMENTS - -COMMENT ON FUNCTION _pgr_dijkstra(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, BOOLEAN, BOOLEAN, BIGINT) -IS 'pgRouting internal function'; - -COMMENT ON FUNCTION _pgr_dijkstra(TEXT, TEXT, BOOLEAN, BOOLEAN, BOOLEAN) -IS 'pgRouting internal function'; diff --git a/sql/dijkstra/_dijkstraNear.sql b/sql/dijkstra/_dijkstraNear.sql deleted file mode 100644 index f84ec497c4..0000000000 --- a/sql/dijkstra/_dijkstraNear.sql +++ /dev/null @@ -1,121 +0,0 @@ -/*PGR-GNU***************************************************************** - -Copyright (c) 2018 pgRouting developers -Mail: project@pgrouting.org - -Copyright (c) 2018 Celia Virginia Vergara Castillo -mail: vicky_vergara@hotmail.com - ------- - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - ********************************************************************PGR-GNU*/ - --------------------- --- _pgr_dijkstraNear --------------------- -/* this file is kept for backward compatibility */ - --- ONE to MANY ---v3.0 -CREATE FUNCTION _pgr_dijkstraNear( - TEXT, -- edges_sql (required) - BIGINT, -- from_vid (required) - ANYARRAY, -- to_vids (required) - BIGINT, -- stop_at (required) - - directed BOOLEAN DEFAULT true, - - OUT seq INTEGER, - OUT path_seq INTEGER, - OUT end_vid BIGINT, - OUT node BIGINT, - OUT edge BIGINT, - OUT cost FLOAT, - OUT agg_cost FLOAT) -RETURNS SETOF RECORD AS -$BODY$ - SELECT seq, path_seq, end_vid, node, edge, cost, agg_cost - FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $5, false, true, $4); -$BODY$ -LANGUAGE sql VOLATILE -COST 100 -ROWS 1000; - - --- MANY to ONE ---v3.0 -CREATE FUNCTION _pgr_dijkstraNear( - TEXT, -- edges_sql (required) - ANYARRAY, -- from_vids (required) - BIGINT, -- to_vid (required) - BIGINT, -- stop_at (required) - - directed BOOLEAN DEFAULT true, - - OUT seq INTEGER, - OUT path_seq INTEGER, - OUT start_vid BIGINT, - OUT node BIGINT, - OUT edge BIGINT, - OUT cost FLOAT, - OUT agg_cost FLOAT) -RETURNS SETOF RECORD AS -$BODY$ - SELECT seq, path_seq, start_vid, node, edge, cost, agg_cost - FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $5, false, false, $4); -$BODY$ -LANGUAGE sql VOLATILE -COST 100 -ROWS 1000; - --- MANY to MANY ---v3.0 -CREATE FUNCTION _pgr_dijkstraNear( - TEXT, -- edges_sql (required) - ANYARRAY, -- from_vids (required) - ANYARRAY, -- to_vids (required) - BIGINT, -- stop_at (required) - - directed BOOLEAN DEFAULT true, - - OUT seq INTEGER, - OUT path_seq INTEGER, - OUT end_vid BIGINT, - OUT start_vid BIGINT, - OUT node BIGINT, - OUT edge BIGINT, - OUT cost FLOAT, - OUT agg_cost FLOAT) -RETURNS SETOF RECORD AS -$BODY$ - SELECT seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost - FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $5, false, false, $4); -$BODY$ -LANGUAGE sql VOLATILE -COST 100 -ROWS 1000; - --- COMMENTS - -COMMENT ON FUNCTION _pgr_dijkstraNear(TEXT, BIGINT, ANYARRAY, BIGINT, BOOLEAN) -IS 'pgRouting internal function'; - -COMMENT ON FUNCTION _pgr_dijkstraNear(TEXT, ANYARRAY, BIGINT, BIGINT, BOOLEAN) -IS 'pgRouting internal function'; - -COMMENT ON FUNCTION _pgr_dijkstraNear(TEXT, ANYARRAY, ANYARRAY, BIGINT, BOOLEAN) -IS 'pgRouting internal function'; diff --git a/sql/dijkstra/dijkstra.sql b/sql/dijkstra/dijkstra.sql index d2c4595e78..681f3816f6 100644 --- a/sql/dijkstra/dijkstra.sql +++ b/sql/dijkstra/dijkstra.sql @@ -53,7 +53,7 @@ CREATE FUNCTION pgr_dijkstra( RETURNS SETOF RECORD AS $BODY$ SELECT seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost - FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, false, true); + FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, false, true, 0, false); $BODY$ LANGUAGE sql VOLATILE STRICT COST 100 @@ -79,7 +79,7 @@ CREATE FUNCTION pgr_dijkstra( RETURNS SETOF RECORD AS $BODY$ SELECT seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost - FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, false, true); + FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, false, true, 0, false); $BODY$ LANGUAGE sql VOLATILE STRICT COST 100 @@ -105,7 +105,7 @@ CREATE FUNCTION pgr_dijkstra( RETURNS SETOF RECORD AS $BODY$ SELECT seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost - FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, false, false); + FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, false, false, 0, false); $BODY$ LANGUAGE sql VOLATILE STRICT COST 100 @@ -131,7 +131,7 @@ CREATE FUNCTION pgr_dijkstra( RETURNS SETOF RECORD AS $BODY$ SELECT seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost - FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, false, true); + FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, false, true, 0, false); $BODY$ LANGUAGE sql VOLATILE STRICT COST 100 @@ -156,7 +156,7 @@ CREATE FUNCTION pgr_dijkstra( RETURNS SETOF RECORD AS $BODY$ SELECT seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost - FROM _pgr_dijkstra(_pgr_get_statement($1), _pgr_get_statement($2), $3, false, true); + FROM _pgr_dijkstra(_pgr_get_statement($1), _pgr_get_statement($2), $3, false, 0, false); $BODY$ LANGUAGE sql VOLATILE STRICT COST 100 diff --git a/sql/dijkstra/dijkstraCost.sql b/sql/dijkstra/dijkstraCost.sql index f3f3612d61..02aa15087e 100644 --- a/sql/dijkstra/dijkstraCost.sql +++ b/sql/dijkstra/dijkstraCost.sql @@ -43,7 +43,7 @@ CREATE FUNCTION pgr_dijkstraCost( RETURNS SETOF RECORD AS $BODY$ SELECT start_vid, end_vid, agg_cost - FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, true); + FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, true, true, 0, false); $BODY$ LANGUAGE sql VOLATILE STRICT COST 100 @@ -66,7 +66,7 @@ CREATE FUNCTION pgr_dijkstraCost( RETURNS SETOF RECORD AS $BODY$ SELECT start_vid, end_vid, agg_cost - FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, true); + FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, true, true, 0, false); $BODY$ LANGUAGE sql VOLATILE STRICT COST 100 @@ -90,7 +90,7 @@ CREATE FUNCTION pgr_dijkstraCost( RETURNS SETOF RECORD AS $BODY$ SELECT start_vid, end_vid, agg_cost - FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, true); + FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, true, true, 0, false); $BODY$ LANGUAGE sql VOLATILE STRICT COST 100 @@ -114,7 +114,7 @@ CREATE FUNCTION pgr_dijkstraCost( RETURNS SETOF RECORD AS $BODY$ SELECT start_vid, end_vid, agg_cost - FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, true); + FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, true, true, 0, false); $BODY$ LANGUAGE sql VOLATILE STRICT COST 100 @@ -134,7 +134,7 @@ CREATE FUNCTION pgr_dijkstraCost( RETURNS SETOF RECORD AS $BODY$ SELECT start_vid, end_vid, agg_cost - FROM _pgr_dijkstra(_pgr_get_statement($1), _pgr_get_statement($2), $3, true, true); + FROM _pgr_dijkstra(_pgr_get_statement($1), _pgr_get_statement($2), $3, true, 0, false); $BODY$ LANGUAGE sql VOLATILE STRICT COST 100 diff --git a/sql/dijkstra/dijkstraCostMatrix.sql b/sql/dijkstra/dijkstraCostMatrix.sql index 44629ff9cd..fc6ec7fd85 100644 --- a/sql/dijkstra/dijkstraCostMatrix.sql +++ b/sql/dijkstra/dijkstraCostMatrix.sql @@ -42,7 +42,7 @@ CREATE FUNCTION pgr_dijkstraCostMatrix( RETURNS SETOF RECORD AS $BODY$ SELECT a.start_vid, a.end_vid, a.agg_cost - FROM _pgr_dijkstra(_pgr_get_statement($1), $2, $2, $3, TRUE) a; + FROM _pgr_dijkstra(_pgr_get_statement($1), $2, $2, $3, true, true, 0, false) a; $BODY$ LANGUAGE SQL VOLATILE STRICT COST 100 diff --git a/sql/dijkstra/dijkstraNear.sql b/sql/dijkstra/dijkstraNear.sql index e0c8256285..3fd1cd74a6 100644 --- a/sql/dijkstra/dijkstraNear.sql +++ b/sql/dijkstra/dijkstraNear.sql @@ -49,7 +49,7 @@ CREATE FUNCTION pgr_dijkstraNear( RETURNS SETOF RECORD AS $BODY$ SELECT seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost - FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], directed, false, true, cap); + FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], directed, false, true, cap, false); $BODY$ LANGUAGE sql VOLATILE STRICT COST 100 @@ -76,7 +76,7 @@ CREATE FUNCTION pgr_dijkstraNear( RETURNS SETOF RECORD AS $BODY$ SELECT seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost - FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], directed, false, false, cap); + FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], directed, false, false, cap, false); $BODY$ LANGUAGE sql VOLATILE STRICT COST 100 diff --git a/sql/driving_distance/_drivingDistance.sql b/sql/driving_distance/_drivingDistance.sql index 55513c7773..1674f748ae 100644 --- a/sql/driving_distance/_drivingDistance.sql +++ b/sql/driving_distance/_drivingDistance.sql @@ -25,10 +25,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ********************************************************************PGR-GNU*/ ----------------------- --- pgr_drivingDistance ----------------------- - --v3.6 CREATE FUNCTION _pgr_drivingDistancev4( TEXT, -- edges_sql @@ -48,31 +44,5 @@ RETURNS SETOF RECORD AS 'MODULE_PATHNAME' LANGUAGE c VOLATILE STRICT; --- COMMENTS - COMMENT ON FUNCTION _pgr_drivingDistancev4(TEXT, ANYARRAY, FLOAT, BOOLEAN, BOOLEAN) IS 'pgRouting internal function'; - -/* Below functions are for backward compatibility to be removed on v4*/ - ---v3.0 -CREATE FUNCTION _pgr_drivingDistance( - edges_sql TEXT, - start_vids ANYARRAY, - distance FLOAT, - directed BOOLEAN DEFAULT TRUE, - equicost BOOLEAN DEFAULT FALSE, - OUT seq INTEGER, - OUT from_v BIGINT, - OUT node BIGINT, - OUT edge BIGINT, - OUT cost FLOAT, - OUT agg_cost FLOAT) -RETURNS SETOF RECORD AS -'MODULE_PATHNAME' -LANGUAGE c VOLATILE STRICT; - --- COMMENTS - -COMMENT ON FUNCTION _pgr_drivingDistance(TEXT, ANYARRAY, FLOAT, BOOLEAN, BOOLEAN) -IS 'pgRouting internal function deprecated on v3.6.0'; diff --git a/sql/driving_distance/withPointsDD.sql b/sql/driving_distance/withPointsDD.sql index 35b0433366..193b2ab6ef 100644 --- a/sql/driving_distance/withPointsDD.sql +++ b/sql/driving_distance/withPointsDD.sql @@ -94,7 +94,6 @@ ROWS 1000; COMMENT ON FUNCTION pgr_withPointsDD(TEXT, TEXT, BIGINT, FLOAT, CHAR, BOOLEAN, BOOLEAN) IS 'pgr_withPointsDD(Single Vertex) -- PROPOSED - Parameters: - Edges SQL with columns: id, source, target, cost [,reverse_cost] - Points SQL with columns: [pid], edge_id, fraction[,side] @@ -111,7 +110,6 @@ IS 'pgr_withPointsDD(Single Vertex) COMMENT ON FUNCTION pgr_withPointsDD(TEXT, TEXT, ANYARRAY, FLOAT, CHAR, BOOLEAN, BOOLEAN, BOOLEAN) IS 'pgr_withPointsDD(Multiple Vertices) -- PROPOSED - Parameters: - Edges SQL with columns: id, source, target, cost [,reverse_cost] - Points SQL with columns: [pid], edge_id, fraction[,side] diff --git a/sql/ksp/withPointsKSP.sql b/sql/ksp/withPointsKSP.sql index 4543a12539..62148219cd 100644 --- a/sql/ksp/withPointsKSP.sql +++ b/sql/ksp/withPointsKSP.sql @@ -188,7 +188,6 @@ ROWS 1000; COMMENT ON FUNCTION pgr_withPointsKSP(TEXT, TEXT, BIGINT, BIGINT, INTEGER, CHAR, BOOLEAN, BOOLEAN, BOOLEAN) IS 'pgr_withPointsKSP -- PROPOSED - Parameters: - Edges SQL with columns: id, source, target, cost [,reverse_cost] - Points SQL with columns: [pid], edge_id, fraction[,side] @@ -205,7 +204,6 @@ IS 'pgr_withPointsKSP COMMENT ON FUNCTION pgr_withPointsKSP(TEXT, TEXT, BIGINT, ANYARRAY, INTEGER, CHAR, BOOLEAN, BOOLEAN, BOOLEAN) IS 'pgr_withPointsKSP -- PROPOSED - Parameters: - Edges SQL with columns: id, source, target, cost [,reverse_cost] - Points SQL with columns: [pid], edge_id, fraction[,side] @@ -222,7 +220,6 @@ IS 'pgr_withPointsKSP COMMENT ON FUNCTION pgr_withPointsKSP(TEXT, TEXT, ANYARRAY, BIGINT, INTEGER, CHAR, BOOLEAN, BOOLEAN, BOOLEAN) IS 'pgr_withPointsKSP -- PROPOSED - Parameters: - Edges SQL with columns: id, source, target, cost [,reverse_cost] - Points SQL with columns: [pid], edge_id, fraction[,side] @@ -239,7 +236,6 @@ IS 'pgr_withPointsKSP COMMENT ON FUNCTION pgr_withPointsKSP(TEXT, TEXT, ANYARRAY, ANYARRAY, INTEGER, CHAR, BOOLEAN, BOOLEAN, BOOLEAN) IS 'pgr_withPointsKSP -- PROPOSED - Parameters: - Edges SQL with columns: id, source, target, cost [,reverse_cost] - Points SQL with columns: [pid], edge_id, fraction[,side] @@ -256,7 +252,6 @@ IS 'pgr_withPointsKSP COMMENT ON FUNCTION pgr_withPointsKSP(TEXT, TEXT, TEXT, INTEGER, CHAR, BOOLEAN, BOOLEAN, BOOLEAN) IS 'pgr_withPointsKSP -- PROPOSED - Parameters: - Edges SQL with columns: id, source, target, cost [,reverse_cost] - Points SQL with columns: [pid], edge_id, fraction[,side] diff --git a/sql/legacy/alpha_shape.sql b/sql/legacy/alpha_shape.sql deleted file mode 100644 index 90585414a8..0000000000 --- a/sql/legacy/alpha_shape.sql +++ /dev/null @@ -1,74 +0,0 @@ -/*PGR-GNU***************************************************************** - -Copyright (c) 2019 Celia Virginia Vergara Castillo -Mail: project@pgrouting.org - ------- - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - ********************************************************************PGR-GNU*/ - ------------------------------------------------------------------------ --- legacy --- The sql should return vertex x,y values. - -- Before: id is compulsory - -- Legacy: id is ignored --- Return ordered vertex ids. - -- Before: the sequence was does not represent a closed linestring - -- Legacy: the sequence was represent a closed linestring ------------------------------------------------------------------------ -CREATE OR REPLACE FUNCTION pgr_alphashape( - text, -- SQL with x, y - alpha float8 DEFAULT 0, - OUT x float8, - OUT y float8) -RETURNS SETOF record -AS -$BODY$ -DECLARE - rec record; - old_poly_seq BIGINT = 1; - old_ring BIGINT = 1; -BEGIN - FOR rec IN - WITH - multiPoly AS (SELECT pgr_pointsAsPolygon($1, sqrt(alpha)) AS geom), - singlePoly AS (SELECT (ST_dump(geom)).path[1] AS poly_seq, (ST_dump(geom)).geom FROM multipoly), - polydump AS (SELECT poly_seq, ST_DumpPoints(geom) dp FROM singlePoly) - SELECT poly_seq, (dp).path[1] AS ring, (dp).path[2] AS point_seq, st_asText((dp).geom) AS geom - FROM polydump - ORDER BY poly_seq, ring, point_seq - LOOP - IF (old_poly_seq != rec.poly_seq OR old_ring != rec.ring) THEN - RAISE NOTICE '% %', rec.poly_seq, rec.ring; - x = NULL; - y = NULL; - RETURN NEXT; - old_poly_seq := rec.poly_seq; - old_ring := rec.ring; - END IF; - - x = ST_X(rec.geom); - y = ST_Y(rec.geom); - - RETURN NEXT; - END LOOP; -END -$BODY$ -LANGUAGE plpgsql VOLATILE STRICT; - -COMMENT ON FUNCTION pgr_alphaShape(TEXT, FLOAT) -IS 'Legacy'; diff --git a/sql/legacy/legacy-developers.sql b/sql/legacy/legacy-developers.sql deleted file mode 100644 index 77c7fbb61a..0000000000 --- a/sql/legacy/legacy-developers.sql +++ /dev/null @@ -1,470 +0,0 @@ -/*PGR-GNU***************************************************************** - -FILE: legacy-developers.sql - -Copyright (c) 2015 pgRouting developers -Mail: project@pgrouting.org - ------- - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - ********************************************************************PGR-GNU*/ -------------------------------------------------------------------------------- --- Legacy FUNCTIONs that were meant to be used by --- pgRouting developers --- These FUNCTIONs wer used on the plpgsql FUNCTIONs - - --- FILE intended to be used on 3.0 -------------------------------------------------------------------------------- - ------------------------------------------------------------------------------- --- Deprecated on 2.3 --- --- pgr_getColumnName --- pgr_getTableName --- pgr_isColumnIndexed --- pgr_isColumnInTable --- pgr_quote_ident --- pgr_versionless --- pgr_startPoint --- pgr_endPoint --- pgr_pointToid RENAMED and deprecated and never announced no one has complained ------------------------------------------------------------------------------- - - --- deprecated on 2.1.0 -CREATE OR REPLACE FUNCTION pgr_getColumnName(tab text, col text) -RETURNS text AS -$BODY$ -DECLARE - sname text; - tname text; - table_name text; -BEGIN - IF pgr_isColumnInTable(tab, col) THEN RETURN NULL; - END IF; - SELECT pgr_getTableName($1) into sname, tname; - table_name := sname || '.' || tname; - EXECUTE 'SELECT ' || quote_ident(col) || ' FROM ' || table_name || ' LIMIT 1'; - RETURN col; - EXCEPTION WHEN others THEN - BEGIN - EXECUTE 'SELECT ' || quote_ident(lower(col)) || ' FROM ' || table_name || ' LIMIT 1'; - RETURN lower(col); - EXCEPTION WHEN others THEN - RETURN NULL; - END; - -END; -$BODY$ -LANGUAGE plpgsql VOLATILE STRICT; - - - - --- deprecated on 2.1.0 -CREATE OR REPLACE FUNCTION pgr_getTableName(IN tab text,OUT sname text,OUT tname text) -RETURNS RECORD AS -$BODY$ -DECLARE - table_oid regclass; - table_name text; -BEGIN - table_oid := $1::regclass; - -- $1 := replace($1, '"', ''); - SELECT sname, tname FROM _pgr_getTableName($1, 0, 'pgr_getTableName') into sname,tname; - EXCEPTION WHEN others THEN - BEGIN - table_oid := lower($1)::regclass; - SELECT sname, tname FROM _pgr_getTableName(lower($1), 0, 'pgr_getTableName') into sname,tname; - EXCEPTION WHEN others THEN - sname = 'public'; - tname = NULL; - END; -END; -$BODY$ -LANGUAGE plpgsql VOLATILE STRICT; - - - - - --- deprecated on 2.1.0 -CREATE OR REPLACE FUNCTION pgr_isColumnIndexed(tab text, col text) -RETURNS boolean AS -$BODY$ -DECLARE table_oid regclass; -BEGIN - table_oid := $1::regclass; - $1 := replace(tab, '"', ''); - RETURN _pgr_isColumnIndexed($1, $2); -END; -$BODY$ -LANGUAGE plpgsql VOLATILE STRICT; - - - - --- deprecated on 2.1.0 -CREATE OR REPLACE FUNCTION pgr_isColumnInTable(tab text, col text) -RETURNS boolean AS -$BODY$ -DECLARE - cname text; - sname text; - tname text; - table_name text; -BEGIN - SELECT pgr_getTableName($1) into sname, tname; - table_name := sname || '.' || tname; - EXECUTE 'SELECT ' || quote_ident(col) || ' FROM ' || table_name || ' LIMIT 1'; - RETURN true; - EXCEPTION WHEN others THEN - BEGIN - EXECUTE 'SELECT ' || quote_ident(lower(col)) || ' FROM ' || table_name || ' LIMIT 1'; - RETURN true; - EXCEPTION WHEN others THEN - RETURN false; - END; -END; -$BODY$ - LANGUAGE plpgsql VOLATILE STRICT; - - - - --- deprecated on 2.1.0 -CREATE OR REPLACE FUNCTION pgr_quote_ident(idname text) -RETURNS text as -$BODY$ - SELECT quote_ident($1); -$BODY$ -LANGUAGE sql IMMUTABLE; - - - - - --- deprecated on 2.1.0 -CREATE OR REPLACE FUNCTION pgr_versionless(v1 text, v2 text) -RETURNS boolean AS -$BODY$ - SELECT _pgr_versionless($1, $2); -$BODY$ -LANGUAGE sql VOLATILE STRICT; - - - - --- deprecated on 2.1.0 -CREATE OR REPLACE FUNCTION pgr_startPoint(g geometry) - RETURNS geometry as -$BODY$ - SELECT ST_startPoint($1); -$BODY$ -LANGUAGE sql IMMUTABLE; - - - - --- deprecated on 2.1.0 -CREATE OR REPLACE FUNCTION pgr_endPoint(g geometry) - RETURNS geometry as -$BODY$ - SELECT ST_endPoint($1); -$BODY$ -LANGUAGE sql IMMUTABLE; - - - -/* RENAMED and deprecated and never announced no one has complained --- deprecated on 2.1.0 -CREATE OR REPLACE FUNCTION pgr_pointToId(point geometry, tolerance double precision, vertname text, srid integer) -RETURNS bigint AS -$BODY$ - SELECT _pgr_pointToId($1, $2, $3, $4); -$BODY$ -LANGUAGE sql VOLATILE STRICT; -*/ - ------------------------------------------------------------------------------- --- Deprecated on 2.3 --- --- pgr_flipedges --- pgr_texttopoints --- pgr_vidsToDMatrix --- pgr_vidsToDMatrix --- pgr_pointstodmatrix ------------------------------------------------------------------------------- - --- Added on 2.1.0 --- deprecated on 2.3.0 -CREATE OR REPLACE FUNCTION pgr_flipedges(ga geometry[]) - RETURNS geometry[] as -$BODY$ -DECLARE - nn integer; - i integer; - g geometry; - -BEGIN - nn := array_length(ga, 1); - IF nn = 1 THEN - RETURN ga; - END IF; - - g := ST_StartPoint(ga[1]); - - IF ST_StartPoint(ga[2]) = g or ST_EndPoint(ga[2]) = g THEN - ga[1] := ST_Reverse(ga[1]); - END IF; - - g := ST_EndPoint(ga[1]); - - FOR i in 2 .. nn LOOP - IF g = ST_EndPoint(ga[i]) THEN - ga[i] := ST_Reverse(ga[i]); - END IF; - g := ST_EndPoint(ga[i]); - END LOOP; - - RETURN ga; -end; -$BODY$ -LANGUAGE plpgsql immutable; - - - --- Added on 2.1.0 --- deprecated on 2.3.0 -CREATE OR REPLACE FUNCTION pgr_texttopoints(pnts text, srid integer DEFAULT(4326)) - RETURNS geometry[] as -$BODY$ -DECLARE - a text[]; - t text; - p geometry; - g geometry[]; - -BEGIN - a := string_to_array(replace(pnts, ',', ' '), ';'); - FOR t in SELECT unnest(a) LOOP - p := ST_pointfromtext('POINT(' || t || ')', srid); - g := g || p; - END LOOP; - - RETURN g; -end; -$BODY$ -LANGUAGE plpgsql immutable; - - - --- Added on 2.1.0 --- deprecated on 2.3.0 -CREATE OR REPLACE FUNCTION pgr_vidsToDMatrix(sql TEXT, vids INTEGER[], dir BOOLEAN, has_rcost BOOLEAN, want_symmetric BOOLEAN) -RETURNS float8[] AS -$BODY$ -DECLARE -dmatrix_row float8[]; -dmatrix float8[]; -rr RECORD; -ids INTEGER[]; -total BIGINT; -BEGIN - ids := ARRAY(SELECT DISTINCT UNNEST(vids) ORDER BY 1); - - IF want_symmetric THEN - dir = false; - END IF; - - total := array_length(ids, 1); - - FOR i in 1 .. total LOOP - dmatrix_row := dmatrix_row || '+Infinity'::float8; - END LOOP; - - FOR i in 1 .. total LOOP - dmatrix := dmatrix || ARRAY[dmatrix_row]; - dmatrix[i][i] = 0; - END LOOP; - - FOR rr IN EXECUTE - 'SELECT start_vid, end_vid, agg_cost FROM pgr_dijkstraCostMatrix($1, $2, $3)' - USING - sql, ids, dir - LOOP - dmatrix[(SELECT idx FROM generate_subscripts(ids, 1) AS idx WHERE ids[idx] = rr.start_vid)] - [(SELECT idx FROM generate_subscripts(ids, 1) AS idx WHERE ids[idx] = rr.end_vid)] := rr.agg_cost; - END LOOP; - - RETURN dmatrix; -END -$BODY$ -LANGUAGE plpgsql VOLATILE -COST 100; - - --- Added on 2.1.0 --- deprecated on 2.3.0 -CREATE OR REPLACE FUNCTION pgr_vidstodmatrix( - IN vids integer[], - IN pnts geometry[], - IN edges text, - tol float8 DEFAULT(0.1), - OUT dmatrix double precision[], - OUT ids integer[]) - RETURNS record as -$BODY$ -DECLARE - dmatrix_row float8[]; - nn integer; - rr record; - t float8[]; - -BEGIN - ids := array(SELECT DISTINCT unnest(vids::integer[]) ORDER BY 1); - - nn := array_length(ids, 1); - - FOR i in 1 .. nn LOOP - dmatrix_row := dmatrix_row || '+Infinity'::float8; - END LOOP; - - FOR i in 1 .. nn LOOP - dmatrix := dmatrix || ARRAY[dmatrix_row]; - dmatrix[i][i] = 0; - END LOOP; - - FOR i in 1 .. nn LOOP - dmatrix := dmatrix || ARRAY[t]; - END LOOP; - - FOR rr IN EXECUTE - 'SELECT start_vid, end_vid, agg_cost FROM pgr_dijkstraCostMatrix($1, $2, false)' - USING - 'SELECT id, source, target, cost FROM ' || edges, - ids - LOOP - dmatrix[(SELECT idx FROM generate_subscripts(ids, 1) AS idx WHERE ids[idx] = rr.start_vid)] - [(SELECT idx FROM generate_subscripts(ids, 1) AS idx WHERE ids[idx] = rr.end_vid)] := rr.agg_cost; - END LOOP; - - RETURN; -end; -$BODY$ -LANGUAGE plpgsql STABLE cost 200; - - - --- Added on 2.1.0 --- deprecated on 2.3.0 -CREATE OR REPLACE FUNCTION pgr_pointstodmatrix(pnts geometry[], mode integer default (0), OUT dmatrix double precision[], OUT ids integer[]) - RETURNS record as -$BODY$ -DECLARE - r record; - -BEGIN - dmatrix := array[]::double precision[]; - ids := array[]::integer[]; - - FOR r in with nodes AS (SELECT row_number() over()::integer AS id, p FROM (select unnest(pnts) AS p) AS foo) - SELECT i, array_agg(dist) AS arow FROM ( - SELECT a.id AS i, b.id AS j, - case when mode=0 - THEN ST_distance(a.p, b.p) - ELSE ST_distance_sphere(a.p, b.p) - END AS dist - FROM nodes a, nodes b - ORDER BY a.id, b.id - ) AS foo group by i ORDER BY i LOOP - - dmatrix := array_cat(dmatrix, array[r.arow]); - ids := ids || array[r.i]; - END LOOP; -end; -$BODY$ -LANGUAGE plpgsql STABLE; - ------------------------------------------------------------------------ - --- Added on 2.1.0 --- deprecated on 2.4.0 -CREATE OR REPLACE FUNCTION pgr_pointstovids(pnts geometry[], edges text, tol float8 DEFAULT(0.01)) - RETURNS integer[] as -$BODY$ -DECLARE - v integer[]; - g geometry; -BEGIN - FOR g in SELECT unnest(pnts) LOOP - v := v || pgr_pointtoedgenode(edges, g, tol); - END LOOP; - - RETURN v; -end; -$BODY$ -LANGUAGE plpgsql STABLE; - - - ------------------------------------------------------------------------ - --- Added on 2.1.0 --- deprecated on 2.5.0 -CREATE OR REPLACE FUNCTION pgr_pointtoedgenode(edges text, pnt geometry, tol float8) - RETURNS integer as -$BODY$ -DECLARE - rr record; - pct float; - debuglevel text; - -BEGIN - execute 'SELECT source, target, the_geom FROM ' || quote_ident(edges) || - ' where ST_dwithin(''' || pnt::text || - '''::geometry, the_geom, ' || tol || ') ORDER BY ST_distance(''' || pnt::text || - '''::geometry, the_geom) asc limit 1' into rr; - - IF rr.the_geom IS NOT null THEN - IF geometrytype(rr.the_geom)='MULTILINESTRING' THEN - rr.the_geom := ST_GeometryN(rr.the_geom, 1); - END IF; - - IF _pgr_versionless(postgis_version(), '2.0') THEN - pct := ST_line_locate_point(rr.the_geom, pnt); - ELSE - pct := ST_lineLocatePoint(rr.the_geom, pnt); - END IF; - - IF pct < 0.5 THEN - RETURN rr.source; - ELSE - RETURN rr.target; - END IF; - ELSE - RETURN -1; - END IF; -end; -$BODY$ -LANGUAGE plpgsql VOLATILE -cost 5; - - - ------------------------------------------------------------------------------- diff --git a/sql/legacy/legacy_experimental.sql b/sql/legacy/legacy_experimental.sql deleted file mode 100644 index 2c22c75d67..0000000000 --- a/sql/legacy/legacy_experimental.sql +++ /dev/null @@ -1,496 +0,0 @@ -/*PGR-GNU***************************************************************** - -Copyright (c) 2015 ~ pgRouting developers -Mail: project@pgrouting.org - ------- - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - ********************************************************************PGR-GNU*/ - ----------------------------------------------------------------------------- --- Experimental function: pgr_labelGraph --- Original developer: Zia Mohammed --- --- Availability: --- - from v2.1 --- - up to v2.6 --- - moved to legacy on v3.0 --- --- Use Components family of functions instead ----------------------------------------------------------------------------- - -CREATE OR REPLACE FUNCTION pgr_labelGraph( - edge_table text, - id text default 'id', - source text default 'source', - target text default 'target', - subgraph text default 'subgraph', - rows_where text default 'true' - ) - RETURNS character varying AS -$BODY$ - -DECLARE - naming record; - schema_name text; - table_name text; - garbage text; - incre integer; - table_schema_name text; - query text; - ecnt integer; - sql1 text; - rec1 record; - sql2 text; - rec2 record; - rec_count record; - rec_single record; - graph_id integer; - gids int []; - -BEGIN - raise notice 'Processing:'; - raise notice 'pgr_brokenGraph(''%'',''%'',''%'',''%'',''%'',''%'')', edge_table,id,source,target,subgraph,rows_where; - raise notice 'Performing initial checks, please hold on ...'; - - Raise Notice 'Starting - Checking table ...'; - BEGIN - raise debug 'Checking % table existance', edge_table; - execute 'select * from pgr_getTableName('|| quote_literal(edge_table) ||')' into naming; - schema_name = naming.sname; - table_name = naming.tname; - table_schema_name = schema_name||'.'||table_name; - IF schema_name is null then - raise notice 'no schema'; - return 'FAIL'; - else - if table_name is null then - raise notice 'no table'; - return 'FAIL'; - end if; - end if; - END; - Raise Notice 'Ending - Checking table'; - - Raise Notice 'Starting - Checking columns'; - BEGIN - raise debug 'Checking exitance of necessary columns inside % table', edge_table; - execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(id) ||')' into naming; - if naming.pgr_iscolumnintable = 'f' then - raise notice 'no id column'; - return 'FAIL'; - end if; - execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(source) ||')' into naming; - if naming.pgr_iscolumnintable = 'f' then - raise notice 'no source column'; - return 'FAIL'; - end if; - execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(target) ||')' into naming; - if naming.pgr_iscolumnintable = 'f' then - raise notice 'no target column'; - return 'FAIL'; - end if; - execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(subgraph) ||')' into naming; - if naming.pgr_iscolumnintable = 't' then - raise notice 'subgraph column already in the table'; - return 'FAIL'; - end if; - END; - Raise Notice 'Ending - Checking columns'; - - Raise Notice 'Starting - Checking rows_where condition'; - BEGIN - raise debug 'Checking rows_where condition'; - query='select count(*) from '|| pgr_quote_ident(table_schema_name) ||' where '|| rows_where; - execute query into ecnt; - raise debug '-->Rows where condition: OK'; - raise debug ' --> OK'; - EXCEPTION WHEN OTHERS THEN - raise notice 'Got %', SQLERRM; - Raise notice 'ERROR: Condition is not correct. Please execute the following query to test your condition'; - Raise notice '%', query; - return 'FAIL'; - END; - Raise Notice 'Ending - Checking rows_where condition'; - - garbage := 'garbage001'; - incre := 1; - Raise Notice 'Starting - Checking temporary column'; - Begin - raise debug 'Checking Checking temporary columns existance'; - - While True - Loop - execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(garbage) ||')' into naming; - If naming.pgr_iscolumnintable = 't' THEN - incre := incre + 1; - garbage := 'garbage00'||incre||''; - ELSE - EXIT; - END IF; - End Loop; - End; - Raise Notice 'Ending - Checking temporary column'; - - Raise Notice 'Starting - Calculating subgraphs'; - BEGIN - --------- Add necessary columns ---------- - EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' ADD COLUMN ' || pgr_quote_ident(subgraph) || ' INTEGER DEFAULT -1'; - EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' ADD COLUMN ' || pgr_quote_ident(garbage) || ' INTEGER DEFAULT 0'; - graph_id := 1; - - EXECUTE 'select count(*) as count from '|| pgr_quote_ident(table_schema_name) ||' where '|| rows_where ||'' into rec_count; - if rec_count.count = 0 then - RETURN 'rows_where condition generated 0 rows'; - end if; - - WHILE TRUE - LOOP - ---------- Assign the very first -1 row graph_id ---------- - EXECUTE 'SELECT ' || pgr_quote_ident(id) || ' AS gid FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| rows_where ||' AND ' || pgr_quote_ident(subgraph) || ' = -1 LIMIT 1' INTO rec_single; - EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' WHERE ' || pgr_quote_ident(id) || ' = ' || rec_single.gid || ''; - - --------- Search other rows with that particular graph_id ----------- - WHILE TRUE - LOOP - EXECUTE 'SELECT COUNT(*) FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' AND ' || pgr_quote_ident(garbage) || ' = 0' into rec_count; - ----------- The following if else will check those rows which already have entertained ------------ - IF (rec_count.count > 0) THEN - sql1 := 'SELECT ' || pgr_quote_ident(id) || ' AS gid, ' || pgr_quote_ident(source) || ' AS source, ' || pgr_quote_ident(target) || ' AS target FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' AND ' || pgr_quote_ident(garbage) || ' = 0'; - FOR rec1 IN EXECUTE sql1 - LOOP - sql2 := 'SELECT ' || pgr_quote_ident(id) || ' AS gid, ' || pgr_quote_ident(source) || ' AS source, ' || pgr_quote_ident(target) || ' AS target FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| pgr_quote_ident(source) ||' = '|| rec1.source ||' OR '|| pgr_quote_ident(target) ||' = '|| rec1.source ||' OR '|| pgr_quote_ident(source) ||' = '|| rec1.target ||' OR '|| pgr_quote_ident(target) ||' = '|| rec1.target ||''; - FOR rec2 IN EXECUTE sql2 - LOOP - EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' WHERE ' || pgr_quote_ident(id) || ' = ' || rec2.gid || ''; - END LOOP; - EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(garbage) || ' = 1 WHERE ' || pgr_quote_ident(id) || ' = ' || rec1.gid || ''; - END LOOP; - ELSE - EXIT; - END IF; - END LOOP; - - ------ Following is to exit the while loop. 0 means no more -1 id. - EXECUTE 'SELECT COUNT(*) AS count FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| rows_where ||' AND ' || pgr_quote_ident(subgraph) || ' = -1' INTO rec_count; - If (rec_count.count = 0) THEN - EXIT; - ELSE - graph_id := graph_id + 1; - END IF; - END LOOP; - - ----------- Drop garbage column ------------ - EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' DROP COLUMN ' || pgr_quote_ident(garbage) ||''; - Raise Notice 'Successfully complicated calculating subgraphs'; - END; - Raise Notice 'Ending - Calculating subgraphs'; - - RETURN 'OK'; - -END; -$BODY$ -LANGUAGE plpgsql VOLATILE STRICT; - ----------------------------------------------------------------------------- --- Experimental functions: --- pgr_maxFlowPushRelabel --- pgr_maximumcardinalitymatching --- pgr_maxFlowBoykovKolmogorov --- pgr_maxFlowEdmondsKarp --- --- Original developer: Andrea Nardelli --- mail: nrd.nardelli@gmail.com --- --- Availability: --- - from v2.3 --- - renamed on v2.5 --- - moved old names to legacy on v3.0 --- --- Use current names of Flow family of functions instead ----------------------------------------------------------------------------- - ----------------------------------------------------------------------------- --- pgr_maxFlowPushRelabel ----------------------------------------------------------------------------- -CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel( - edges_sql TEXT, - source_vertex BIGINT, - sink_vertex BIGINT, - OUT seq INTEGER, - OUT edge_id BIGINT, - OUT source BIGINT, - OUT target BIGINT, - OUT flow BIGINT, - OUT residual_capacity BIGINT - ) - RETURNS SETOF RECORD AS - $BODY$ - BEGIN - RETURN QUERY SELECT seq, edge_id, source, target, flow, residual_capacity - FROM pgr_PushRelabel($1, $2, $3); - END - $BODY$ - LANGUAGE plpgsql VOLATILE; - -CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel( - edges_sql TEXT, - source_vertex BIGINT, - sink_vertices ANYARRAY, - OUT seq INTEGER, - OUT edge_id BIGINT, - OUT source BIGINT, - OUT target BIGINT, - OUT flow BIGINT, - OUT residual_capacity BIGINT - ) - RETURNS SETOF RECORD AS - $BODY$ - BEGIN - RETURN QUERY SELECT seq, edge_id, source, target, flow, residual_capacity - FROM pgr_PushRelabel($1, $2, $3); - END - $BODY$ - LANGUAGE plpgsql VOLATILE; - -CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel( - edges_sql TEXT, - source_vertices ANYARRAY, - sink_vertex BIGINT, - OUT seq INTEGER, - OUT edge_id BIGINT, - OUT source BIGINT, - OUT target BIGINT, - OUT flow BIGINT, - OUT residual_capacity BIGINT - ) - RETURNS SETOF RECORD AS - $BODY$ - BEGIN - RETURN QUERY SELECT seq, edge_id, source, target, flow, residual_capacity - FROM pgr_PushRelabel($1, $2, $3); - END - $BODY$ - LANGUAGE plpgsql VOLATILE; - -CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel( - edges_sql TEXT, - source_vertices ANYARRAY, - sink_vertices ANYARRAY, - OUT seq INTEGER, - OUT edge_id BIGINT, - OUT source BIGINT, - OUT target BIGINT, - OUT flow BIGINT, - OUT residual_capacity BIGINT - ) - RETURNS SETOF RECORD AS - $BODY$ - BEGIN - RETURN QUERY SELECT seq, edge_id, source, target, flow, residual_capacity - FROM pgr_PushRelabel($1, $2, $3); - END - $BODY$ - LANGUAGE plpgsql VOLATILE; - ----------------------------------------------------------------------------- --- pgr_maxFlowBoykovKolmogorov ----------------------------------------------------------------------------- -CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov( - edges_sql TEXT, - source_vertex BIGINT, - sink_vertex BIGINT, - OUT seq INTEGER, - OUT edge_id BIGINT, - OUT source BIGINT, - OUT target BIGINT, - OUT flow BIGINT, - OUT residual_capacity BIGINT - ) - RETURNS SETOF RECORD AS - $BODY$ - BEGIN - RETURN QUERY SELECT seq, edge_id, source, target, flow, residual_capacity - FROM pgr_boykovKolmogorov($1, $2, $3); - END - $BODY$ - LANGUAGE plpgsql VOLATILE; - -CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov( - edges_sql TEXT, - source_vertex BIGINT, - sink_vertices ANYARRAY, - OUT seq INTEGER, - OUT edge_id BIGINT, - OUT source BIGINT, - OUT target BIGINT, - OUT flow BIGINT, - OUT residual_capacity BIGINT - ) - RETURNS SETOF RECORD AS - $BODY$ - BEGIN - RETURN QUERY SELECT seq, edge_id, source, target, flow, residual_capacity - FROM pgr_boykovKolmogorov($1, $2, $3); - END - $BODY$ - LANGUAGE plpgsql VOLATILE; - -CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov( - edges_sql TEXT, - source_vertices ANYARRAY, - sink_vertex BIGINT, - OUT seq INTEGER, - OUT edge_id BIGINT, - OUT source BIGINT, - OUT target BIGINT, - OUT flow BIGINT, - OUT residual_capacity BIGINT - ) - RETURNS SETOF RECORD AS - $BODY$ - BEGIN - RETURN QUERY SELECT seq, edge_id, source, target, flow, residual_capacity - FROM pgr_boykovKolmogorov($1, $2, $3); - END - $BODY$ - LANGUAGE plpgsql VOLATILE; - -CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov( - edges_sql TEXT, - source_vertices ANYARRAY, - sink_vertices ANYARRAY, - OUT seq INTEGER, - OUT edge_id BIGINT, - OUT source BIGINT, - OUT target BIGINT, - OUT flow BIGINT, - OUT residual_capacity BIGINT - ) - RETURNS SETOF RECORD AS - $BODY$ - BEGIN - RETURN QUERY SELECT seq, edge_id, source, target, flow, residual_capacity - FROM pgr_boykovKolmogorov($1, $2, $3); - END - $BODY$ - LANGUAGE plpgsql VOLATILE; - ----------------------------------------------------------------------------- --- pgr_maxFlowEdmondsKarp ----------------------------------------------------------------------------- -CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp( - edges_sql TEXT, - source_vertex BIGINT, - sink_vertex BIGINT, - OUT seq INTEGER, - OUT edge_id BIGINT, - OUT source BIGINT, - OUT target BIGINT, - OUT flow BIGINT, - OUT residual_capacity BIGINT - ) - RETURNS SETOF RECORD AS - $BODY$ - BEGIN - RETURN QUERY SELECT seq, edge_id, source, target, flow, residual_capacity - FROM pgr_edmondsKarp($1, $2, $3); - END - $BODY$ - LANGUAGE plpgsql VOLATILE; - - -CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp( - edges_sql TEXT, - source_vertex BIGINT, - sink_vertices ANYARRAY, - OUT seq INTEGER, - OUT edge_id BIGINT, - OUT source BIGINT, - OUT target BIGINT, - OUT flow BIGINT, - OUT residual_capacity BIGINT - ) - RETURNS SETOF RECORD AS - $BODY$ - BEGIN - RETURN QUERY SELECT seq, edge_id, source, target, flow, residual_capacity - FROM pgr_edmondsKarp($1, $2, $3); - END - $BODY$ - LANGUAGE plpgsql VOLATILE; - -CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp( - edges_sql TEXT, - source_vertices ANYARRAY, - sink_vertex BIGINT, - OUT seq INTEGER, - OUT edge_id BIGINT, - OUT source BIGINT, - OUT target BIGINT, - OUT flow BIGINT, - OUT residual_capacity BIGINT - ) - RETURNS SETOF RECORD AS - $BODY$ - BEGIN - RETURN QUERY SELECT seq, edge_id, source, target, flow, residual_capacity - FROM pgr_edmondsKarp($1, $2, $3); - END - $BODY$ - LANGUAGE plpgsql VOLATILE; - -CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp( - edges_sql TEXT, - source_vertices ANYARRAY, - sink_vertices ANYARRAY, - OUT seq INTEGER, - OUT edge_id BIGINT, - OUT source BIGINT, - OUT target BIGINT, - OUT flow BIGINT, - OUT residual_capacity BIGINT - ) - RETURNS SETOF RECORD AS - $BODY$ - BEGIN - RETURN QUERY SELECT seq, edge_id, source, target, flow, residual_capacity - FROM pgr_edmondsKarp($1, $2, $3); - END - $BODY$ - LANGUAGE plpgsql VOLATILE; - - ----------------------------------------------------------------------------- --- pgr_maximumcardinalitymatching ----------------------------------------------------------------------------- -CREATE OR REPLACE FUNCTION pgr_maximumcardinalitymatching( - edges_sql TEXT, - directed BOOLEAN DEFAULT TRUE, - OUT seq INTEGER, - OUT edge_id BIGINT, - OUT source BIGINT, - OUT target BIGINT - ) - RETURNS SETOF RECORD AS - $BODY$ - BEGIN - RETURN QUERY SELECT seq, edge_id, source, target, flow, residual_capacity - FROM pgr_maxCardinalityMatch($1, $2); - END - $BODY$ - LANGUAGE plpgsql VOLATILE; diff --git a/sql/legacy/pgrouting_version.sql b/sql/legacy/pgrouting_version.sql deleted file mode 100644 index 263d7fd683..0000000000 --- a/sql/legacy/pgrouting_version.sql +++ /dev/null @@ -1,56 +0,0 @@ -/*PGR-MIT***************************************************************** - -FILE: pgrouting_version.sql - -Copyright (c) 2013 pgRouting developers -Mail: project@pgrouting.org -Author: Stephen Woodbridge - ------- -MIT/X license - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - -********************************************************************PGR-MIT*/ - ---v3.0 -CREATE FUNCTION pgr_version() -RETURNS TABLE( - "version" varchar, - tag varchar, - hash varchar, - branch varchar, - boost varchar - ) AS -$BODY$ - SELECT '${PROJECT_VERSION}'::varchar AS version, - '${PROJECT_FULL_VERSION}'::varchar AS tag, - '${PROJECT_GIT_HASH}'::varchar AS hash, - '${PROJECT_GIT_BRANCH}'::varchar AS branch, - '${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION}'::varchar AS boost; -$BODY$ -LANGUAGE sql IMMUTABLE; - -COMMENT ON FUNCTION pgr_version() IS -'pgr_version -- Documentation - - ${PROJECT_DOC_LINK}/pgr_version.html -'; diff --git a/sql/legacy/pointsAsPolygon.sql b/sql/legacy/pointsAsPolygon.sql deleted file mode 100644 index 0bd3b6c381..0000000000 --- a/sql/legacy/pointsAsPolygon.sql +++ /dev/null @@ -1,73 +0,0 @@ -/*PGR-GNU***************************************************************** - -Copyright (c) 2015~2019 Celia Virginia Vergara Castillo -Mail: project@pgrouting.org - ------- - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - ********************************************************************PGR-GNU*/ - ----------------------- --- pgr_pointsAsPolygon ----------------------- - - -/* ----------------------------------------------------------- --- Draws an alpha shape around given set of points. --- ** This should be rewritten as an aggregate. ** ----------------------------------------------------------- -*/ -CREATE OR REPLACE FUNCTION pgr_pointsAsPolygon( - VARCHAR, -- query (required) - alpha FLOAT8 DEFAULT 0) - -RETURNS geometry AS -$BODY$ -DECLARE - geoms geometry[]; - vertex_result record; - i BIGINT; - q TEXT; - -BEGIN - q = format($$ - WITH - a AS ( - %1$s - ), - b AS (SELECT ST_makePoint(x, y) AS geom FROM a) - SELECT array_agg(geom) FROM b - $$, $1); - -- RAISE NOTICE '%', q; - EXECUTE q INTO geoms; - - -- RAISE NOTICE 'length = %', array_length(geoms, 1); - RETURN pgr_alphashape1(geoms, sqrt(alpha), false); -END; -$BODY$ -LANGUAGE plpgsql VOLATILE STRICT; - -COMMENT ON FUNCTION pgr_pointsAsPolygon(VARCHAR, FLOAT8) -IS 'pgr_pointsAsPolygon -- Parameters: - - An SQL with columns: id, x, y -- Optional Parameters: - - alpha := 0 -- Documentation: - - ${PROJECT_DOC_LINK}/pgr_pointsAsPolygon.html -'; diff --git a/sql/legacy/routing_legacy.sql b/sql/legacy/routing_legacy.sql deleted file mode 100644 index 65913e154c..0000000000 --- a/sql/legacy/routing_legacy.sql +++ /dev/null @@ -1,316 +0,0 @@ -/*PGR-GNU***************************************************************** - -Copyright (c) 2015 ~ pgRouting developers -Mail: project@pgrouting.org - -Copyright (c) 2015 Celia Virginia Vergara Castillo -mail: vicky_vergara@hotmail.com - ------- - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - ********************************************************************PGR-GNU*/ - -CREATE TYPE pgr_costResult AS -( - seq integer, - id1 integer, - id2 integer, - cost float8 -); - -CREATE TYPE pgr_costResult3 AS -( - seq integer, - id1 integer, - id2 integer, - id3 integer, - cost float8 -); - -CREATE TYPE pgr_geomResult AS -( - seq integer, - id1 integer, - id2 integer, - geom geometry -); - ----------------------------------------------------------------------------- --- Routing function: pgr_dijkstra --- Developer: Vicky Vergara --- --- --- Availability: --- - Created on v2.0.0 --- - Deprecated signature on v2.1.0 --- - Moved to legacy on v3.0 --- --- Use the new signatures of pgr_dijkstra instead ----------------------------------------------------------------------------- - -CREATE OR REPLACE FUNCTION pgr_dijkstra( - edges_sql TEXT, - start_vid INTEGER, - end_vid INTEGER, - directed BOOLEAN, - has_rcost BOOLEAN) -RETURNS SETOF pgr_costresult AS -$BODY$ -DECLARE -has_reverse BOOLEAN; -sql TEXT; -BEGIN - RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost - FROM _pgr_dijkstra(sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false); - END -$BODY$ -LANGUAGE plpgsql VOLATILE -COST 100 -ROWS 1000; - - ------------------------------------------------------------------------------ ---- Routing function: pgr_drivingDistance ---- Developer: Vicky Vergara ---- ---- ---- Availability: ---- - Created on v2.0.0 ---- - Deprecated on v2.1.0 ---- - moved to legacy on v3.0.0 ---- ---- Use the new signatures of pgr_drivingDistance instead ------------------------------------------------------------------------------ -CREATE OR REPLACE FUNCTION pgr_drivingDistance(edges_sql text, source INTEGER, distance FLOAT8, directed BOOLEAN, has_rcost BOOLEAN) -RETURNS SETOF pgr_costresult AS -$BODY$ - SELECT seq - 1, node::INTEGER, edge::INTEGER, agg_cost - FROM pgr_drivingDistance($1, ARRAY[$2]::BIGINT[], $3, $4); -$BODY$ -LANGUAGE sql VOLATILE -COST 100 -ROWS 1000; - ----------------------------------------------------------------------------- --- Routing function: pgr_ksp --- Developer: Vicky Vergara --- --- --- Availability: --- - Created on v2.0.0 --- - Deprecated on v2.1.0 --- - moved to legacy on v3.0 --- --- Use the new signature of pgr_KSP instead ----------------------------------------------------------------------------- -CREATE OR REPLACE FUNCTION pgr_ksp(edges_sql text, start_vid integer, end_vid integer, k integer, has_rcost boolean) -RETURNS SETOF pgr_costresult3 AS -$BODY$ - SELECT ((row_number() over()) -1)::integer, (path_id - 1)::integer, node::integer, edge::integer, cost - FROM pgr_ksp($1::text, $2::BIGINT, $3::BIGINT, $4, TRUE, FALSE) WHERE path_id <= k; -$BODY$ -LANGUAGE sql VOLATILE -COST 100 -ROWS 1000; - ----------------------------------------------------------------------------- --- Routing function: pgr_kdijkstraPath --- Developer: Steve Woodbridge --- --- Availability: --- - Created on v2.0.0 --- - Deprecated signature on v2.2.0 --- - Moved to legacy on v3.0 --- --- Use the new signatures of pgr_dijkstra instead ----------------------------------------------------------------------------- -CREATE OR REPLACE FUNCTION pgr_kdijkstraPath( - sql text, - source INTEGER, - targets INTEGER ARRAY, - directed BOOLEAN, - has_rcost BOOLEAN) -RETURNS SETOF pgr_costResult3 AS -$BODY$ -SELECT (row_number() over () -1)::integer, end_vid::INTEGER, node::INTEGER, edge::INTEGER, cost -FROM pgr_dijkstra($1, $2, $3, $4); -$BODY$ -LANGUAGE sql VOLATILE -COST 100 -ROWS 1000; - - ----------------------------------------------------------------------------- --- Routing function: pgr_kdijkstraCost --- Developer: Steve Woodbridge --- --- Availability: --- - Created on v2.0.0 --- - Deprecated signature on v2.2.0 --- - Moved to legacy on v3.0 --- --- Use the new signatures of pgr_dijkstraCost instead ----------------------------------------------------------------------------- -CREATE OR REPLACE FUNCTION pgr_kdijkstracost( - sql text, - source INTEGER, - targets INTEGER array, - directed BOOLEAN, - has_rcost BOOLEAN) -RETURNS SETOF pgr_costResult AS -$BODY$ - SELECT (row_number() over () -1)::integer, start_vid::integer, end_vid::INTEGER, agg_cost - FROM pgr_dijkstraCost($1, $2, $3, $4); -$BODY$ -LANGUAGE sql VOLATILE -COST 100 -ROWS 1000; - ----------------------------------------------------------------------------- --- Routing function: pgr_apspJohnson --- Developer: Vicky Vergara --- --- --- Availability: --- - Created on v2.0.0 --- - Deprecated on v2.2.0 --- - Moved to legacy on v3.0 --- --- Use the new signatures of pgr_johnson instead ----------------------------------------------------------------------------- - -CREATE OR REPLACE FUNCTION pgr_apspJohnson(edges_sql text) -RETURNS SETOF pgr_costResult AS -$BODY$ - SELECT (row_number() over () - 1)::INTEGER, start_vid::INTEGER, end_vid::INTEGER, agg_cost - FROM pgr_johnson($1, TRUE); -$BODY$ -LANGUAGE sql VOLATILE -COST 100 -ROWS 1000; - - - - ----------------------------------------------------------------------------- --- Routing function: pgr_apspWarshall --- Developer: Vicky Vergara --- --- --- Availability: --- - Created on v2.0.0 --- - Deprecated on v2.2.0 --- - Moved to legacy on v3.0 --- --- Use the new signatures of pgr_floydWarshall instead ----------------------------------------------------------------------------- -CREATE OR REPLACE FUNCTION pgr_apspWarshall(edges_sql text, directed BOOLEAN, has_rcost BOOLEAN) -RETURNS SETOF pgr_costResult AS -$BODY$ - SELECT (row_number() over () -1)::INTEGER, start_vid::INTEGER, end_vid::INTEGER, agg_cost - FROM pgr_floydWarshall($1, $2); -$BODY$ -LANGUAGE sql VOLATILE -COST 100 -ROWS 1000; - ----------------------------------------------------------------------------- --- Routing function: pgr_astar --- Developer: Vicky Vergara --- --- --- Availability: --- - Created on v2.0.0 --- - Deprecated on v2.3.0 --- - Moved to legacy on v3.0 --- --- Use the new signatures of pgr_aStar instead ----------------------------------------------------------------------------- - -CREATE OR REPLACE FUNCTION pgr_astar(edges_sql TEXT, source_id INTEGER, target_id INTEGER, directed BOOLEAN, has_rcost BOOLEAN) -RETURNS SETOF pgr_costresult AS -$BODY$ -DECLARE -has_reverse BOOLEAN; -sql TEXT; -BEGIN - RETURN query SELECT seq - 1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost - FROM pgr_astar(sql, ARRAY[$2], ARRAY[$3], directed); -END -$BODY$ -LANGUAGE plpgsql VOLATILE -COST 100 -ROWS 1000; - - - ----------------------------------------------------------------------------- --- Routing function: pgr_bdDijkstra --- Developer: Vicky Vergara --- --- --- Availability: --- - Created on v2.0.0 --- - Deprecated on v2.4.0 --- - Moved to legacy on v3.0 --- --- Use the new signatures of pgr_bdDijkstra instead ----------------------------------------------------------------------------- -CREATE OR REPLACE FUNCTION pgr_bdDijkstra(edges_sql TEXT, start_vid INTEGER, end_vid INTEGER, directed BOOLEAN, has_rcost BOOLEAN) -RETURNS SETOF pgr_costresult AS -$BODY$ -DECLARE -has_reverse BOOLEAN; -sql TEXT; -BEGIN - SELECT seq - 1 AS seq, node::integer AS id1, edge::integer AS id2, cost - FROM pgr_bdDijkstra($1, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4); -END -$BODY$ -LANGUAGE plpgsql VOLATILE -COST 100 -ROWS 1000; - - - - ----------------------------------------------------------------------------- --- Routing function: pgr_bdAstar --- Developer: Vicky Vergara --- --- --- Availability: --- - Created on v2.0.0 --- - Deprecated on v2.5.0 --- - Moved to legacy on v3.0 --- --- Use the new signatures of pgr_bdAstar instead ----------------------------------------------------------------------------- -CREATE OR REPLACE FUNCTION pgr_bdAstar( - edges_sql TEXT, - start_vid INTEGER, - end_vid INTEGER, - directed BOOLEAN, - has_rcost BOOLEAN) -RETURNS SETOF pgr_costresult AS -$BODY$ - SELECT seq - 1 AS seq, node::integer AS id1, edge::integer AS id2, cost - FROM pgr_bdAstar($1, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4); -$BODY$ -LANGUAGE sql VOLATILE -COST 100 -ROWS 1000; diff --git a/sql/legacy/tsp/TSPeucledian.sql b/sql/legacy/tsp/TSPeucledian.sql deleted file mode 100644 index d3bb611a3f..0000000000 --- a/sql/legacy/tsp/TSPeucledian.sql +++ /dev/null @@ -1,69 +0,0 @@ -/*PGR-GNU***************************************************************** - -Copyright (c) 2016 pgRouting developers -Mail: project@pgrouting.org - -Copyright (c) 2016 Celia Virginia Vergara Castillo -mail: vicky_vergara@hotmail.com - ------- - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - ********************************************************************PGR-GNU*/ - - --------------------- --- pgr_euclideanTSP --------------------- - -CREATE OR REPLACE FUNCTION pgr_euclideanTSP( - TEXT, -- coordinates_sql (required) - - start_id BIGINT DEFAULT 0, - end_id BIGINT DEFAULT 0, - - max_processing_time FLOAT DEFAULT '+infinity'::FLOAT, - - tries_per_temperature INTEGER DEFAULT 500, - max_changes_per_temperature INTEGER DEFAULT 60, - max_consecutive_non_changes INTEGER DEFAULT 100, - - initial_temperature FLOAT DEFAULT 100, - final_temperature FLOAT DEFAULT 0.1, - cooling_factor FLOAT DEFAULT 0.9, - - randomize BOOLEAN DEFAULT true, - - OUT seq integer, - OUT node BIGINT, - OUT cost FLOAT, - OUT agg_cost FLOAT) -RETURNS SETOF RECORD AS -$BODY$ - SELECT seq, node, cost, agg_cost - FROM pgr_TSPeuclidean(_pgr_get_statement($1), $2,$3, $4, $5,$6,$7, $8,$9,$10, $11); -$BODY$ -LANGUAGE SQL VOLATILE STRICT -COST 100 -ROWS 1000; - - --- COMMENTS - - -COMMENT ON FUNCTION pgr_eucledianTSP(TEXT, BIGINT, BIGINT, FLOAT, INTEGER, INTEGER, INTEGER, FLOAT, FLOAT, FLOAT, BOOLEAN) -IS 'pgRouting deprecated function -Use pgr_TSPeuclidean instead'; diff --git a/sql/legacy/tsp/_makeDistanceMatrix.sql b/sql/legacy/tsp/_makeDistanceMatrix.sql deleted file mode 100644 index 07da120eb9..0000000000 --- a/sql/legacy/tsp/_makeDistanceMatrix.sql +++ /dev/null @@ -1,77 +0,0 @@ -/*PGR-MIT***************************************************************** - --- --- Copyright (c) 2013 Stephen Woodbridge --- --- This files is released under an MIT-X license. -Copyright (c) 2015 pgRouting developers -Mail: project@pgrouting.org - ------- -MIT/X license - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - -********************************************************************PGR-MIT*/ - - ----------------------------- --- _pgr_makeDistanceMatrix ----------------------------- - - -create or replace function _pgr_makeDistanceMatrix - (sqlin text, - - OUT dmatrix double precision[], - OUT ids integer[]) - as -$body$ -declare - sql text; - r record; - -begin - dmatrix := array[]::double precision[]; - ids := array[]::integer[]; - - sql := 'with nodes as (' || sqlin || ') - select i, array_agg(dist) as arow from ( - select a.id as i, b.id as j, st_distance(st_makepoint(a.x, a.y), st_makepoint(b.x, b.y)) as dist - from nodes a, nodes b - order by a.id, b.id - ) as foo group by i order by i'; - - for r in execute sql loop - dmatrix := array_cat(dmatrix, array[r.arow]); - ids := ids || array[r.i]; - end loop; - -end; -$body$ -language plpgsql stable cost 10; - - --- COMMENTS - - -COMMENT ON FUNCTION _pgr_makeDistanceMatrix(TEXT) -IS 'pgRouting internal function'; diff --git a/sql/legacy/tsp/tsp_v2.0_coordinates.sql b/sql/legacy/tsp/tsp_v2.0_coordinates.sql deleted file mode 100644 index 7e2837746f..0000000000 --- a/sql/legacy/tsp/tsp_v2.0_coordinates.sql +++ /dev/null @@ -1,108 +0,0 @@ -/*PGR-GNU***************************************************************** - -Copyright (c) 2016 pgRouting developers -Mail: project@pgrouting.org - -Copyright (c) 2016 Celia Virginia Vergara Castillo -mail: vicky_vergara@hotmail.com - ------- - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - ********************************************************************PGR-GNU*/ -/* - Old signature has: - sql: id INTEGER, x FLOAT, y FLOAT -*/ - - ------------------------ --- pgr_tsp ------------------------ - - -CREATE OR REPLACE FUNCTION pgr_tsp( - sql text, - start_id INTEGER, - end_id INTEGER default (-1), - - OUT seq INTEGER, - OUT id1 INTEGER, - OUT id2 INTEGER, - OUT cost FLOAT -) -returns setof record as -$body$ -DECLARE -table_sql TEXT; -rec RECORD; -debuglevel TEXT; -n BIGINT; - -BEGIN - RAISE NOTICE 'Deprecated Signature pgr_tsp(sql, integer, integer)'; - - table_sql := 'CREATE TEMP TABLE ___tmp ON COMMIT DROP AS ' || sql ; - EXECUTE table_sql; - - - BEGIN - EXECUTE 'SELECT id, x, y FROM ___tmp' INTO rec; - EXCEPTION - WHEN OTHERS THEN - RAISE EXCEPTION 'An expected column was not found in the query' - USING ERRCODE = 'XX000', - HINT = 'Please verify the column names: id, x, y'; - END; - - EXECUTE - 'SELECT - pg_typeof(id)::text as id_type, - pg_typeof(x)::text as x_type, - pg_typeof(y)::text as y_type FROM ___tmp' INTO rec; - - - IF NOT((rec.id_type in ('integer'::text)) - AND (rec.x_type = 'double precision'::text) - AND (rec.y_type = 'double precision'::text)) THEN - RAISE EXCEPTION '''id'' must be of type INTEGER, ''x'' ad ''y'' must be of type FLOAT' - USING ERRCODE = 'XX000'; - END IF; - - EXECUTE 'SELECT count(*) AS n FROM (' || sql || ') AS __a__' INTO rec; - n = rec.n; - - RETURN query - SELECT (seq - 1)::INTEGER AS seq, node::INTEGER AS id1, node::INTEGER AS id2, cost - FROM pgr_eucledianTSP(sql, start_id, end_id, - - tries_per_temperature := 500 * n :: INTEGER, - max_changes_per_temperature := 60 * n :: INTEGER, - max_consecutive_non_changes := 500 * n :: INTEGER, - - randomize := false) WHERE seq <= n; - DROP TABLE ___tmp; - -END; -$body$ -language plpgsql volatile STRICT cost 500 ROWS 50; - - --- COMMENTS - - -COMMENT ON FUNCTION pgr_tsp(text, INTEGER, INTEGER) -IS 'DEPRECATED'; diff --git a/sql/legacy/tsp/tsp_v2.0_matrix.sql b/sql/legacy/tsp/tsp_v2.0_matrix.sql deleted file mode 100644 index b24d988a4c..0000000000 --- a/sql/legacy/tsp/tsp_v2.0_matrix.sql +++ /dev/null @@ -1,133 +0,0 @@ -/*PGR-GNU***************************************************************** - -Copyright (c) 2016 pgRouting developers -Mail: project@pgrouting.org - -Copyright (c) 2016 Celia Virginia Vergara Castillo -mail: vicky_vergara@hotmail.com - ------- - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - ********************************************************************PGR-GNU*/ - - ----------------- ----------------- --- tsp ----------------- ----------------- - - ------------------------ --- _pgr_unnest_matrix ------------------------ - - -CREATE OR REPLACE FUNCTION _pgr_unnest_matrix - (matrix float8[][], - - OUT start_vid integer, - OUT end_vid integer, - out agg_cost float8) -RETURNS SETOF record AS - -$body$ -DECLARE - -m float8[]; - -BEGIN - start_vid = 1; - foreach m slice 1 in ARRAY matrix - LOOP - end_vid = 1; - foreach agg_cost in ARRAY m - LOOP - RETURN next; - end_vid = end_vid + 1; - END LOOP; - start_vid = start_vid + 1; - END LOOP; -END; -$body$ -language plpgsql volatile STRICT cost 500 ROWS 50; - - -CREATE OR REPLACE FUNCTION pgr_tsp - (matrix float8[][], - - startpt INTEGER, - endpt INTEGER DEFAULT -1, - - OUT seq INTEGER, - OUT id INTEGER) -RETURNS SETOF record AS -$body$ -DECLARE -table_sql TEXT; -debuglevel TEXT; -BEGIN - RAISE NOTICE 'Deprecated Signature pgr_tsp(float8[][], integer, integer)'; - - CREATE TEMP TABLE ___tmp2 ON COMMIT DROP AS - SELECT start_vid, end_vid, agg_cost FROM _pgr_unnest_matrix( matrix ); - - - startpt := startpt + 1; - IF endpt = -1 THEN endpt := startpt; - END IF; - - - RETURN QUERY - WITH - result AS ( - SELECT seq, id FROM pgr_TSP( - $$SELECT start_vid, end_vid, agg_cost FROM ___tmp2 $$, - startpt, endpt, - - tries_per_temperature := 500 :: INTEGER, - max_changes_per_temperature := 30 :: INTEGER, - max_consecutive_non_changes := 500 :: INTEGER, - - randomize:=false) - ) - SELECT (row_number() over(ORDER BY result.seq) - 1)::INTEGER AS seq, (result.node - 1)::INTEGER AS id - - FROM result WHERE NOT(result.node = startpt AND result.seq != 1); - - DROP TABLE ___tmp2; -END; -$body$ -language plpgsql volatile STRICT cost 500 ROWS 50; - - --- COMMENTS - - -COMMENT ON FUNCTION _pgr_unnest_matrix(FLOAT[][]) -IS 'DEPRECATED'; - - -COMMENT ON FUNCTION pgr_tsp(FLOAT[][], INTEGER, INTEGER) -IS 'pgr_tsp -- Parameters - - Matrix - - startpt - - endpt -- Documentation: - - ${PGROUTING_DOC_LINK}/pgr_tsp.html -'; diff --git a/sql/legacy/vrppdtw/_gsoc_vrppdtw.sql b/sql/legacy/vrppdtw/_gsoc_vrppdtw.sql deleted file mode 100644 index 9265086f2a..0000000000 --- a/sql/legacy/vrppdtw/_gsoc_vrppdtw.sql +++ /dev/null @@ -1,105 +0,0 @@ -/*PGR-GNU***************************************************************** -File: _gsoc_vrppdtw.sql - -Generated with Template by: -Copyright (c) 2017 pgRouting developers -Mail: project@pgrouting.org - -Function's developer: -Copyright (c) 2017 Celia Virginia Vergara Castillo -Mail: - ------- - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - ********************************************************************PGR-GNU*/ - - ----------------------------- --- _pgr_gsoc_vrppdtw ----------------------------- - - -CREATE OR REPLACE FUNCTION _pgr_gsoc_vrppdtw( - customers_sql TEXT, - max_vehicles INTEGER, - capacity FLOAT, - speed FLOAT DEFAULT 1, - max_cycles INTEGER DEFAULT 10, - - OUT seq INTEGER, - OUT vehicle_id INTEGER, - OUT vehicle_seq INTEGER, - OUT stop_id BIGINT, - OUT travel_time FLOAT, - OUT arrival_time FLOAT, - OUT wait_time FLOAT, - OUT service_time FLOAT, - OUT departure_time FLOAT -) -RETURNS SETOF RECORD AS -$BODY$ -DECLARE - orders_sql TEXT; - vehicles_sql TEXT; - final_sql TEXT; -BEGIN - orders_sql = $$WITH - customer_data AS ($$ || customers_sql || $$ ), - pickups AS ( - SELECT id, demand, x as p_x, y as p_y, opentime as p_open, closetime as p_close, servicetime as p_service - FROM customer_data WHERE pindex = 0 AND id != 0 - ), - deliveries AS ( - SELECT pindex AS id, x as d_x, y as d_y, opentime as d_open, closetime as d_close, servicetime as d_service - FROM customer_data WHERE dindex = 0 AND id != 0 - ) - SELECT id, demand, p_x, p_y, p_open, p_close, p_service, d_x, d_y, d_open, d_close, d_service - FROM pickups JOIN deliveries USING(id) ORDER BY pickups.id - $$; - - vehicles_sql = $$WITH - customer_data AS ($$ || customers_sql || $$ ) - SELECT id, x AS start_x, y AS start_y, - opentime AS start_open, closetime AS start_close, $$ || - capacity || $$ AS capacity, $$ || max_vehicles || $$ AS number, $$ || speed || $$ AS speed - FROM customer_data WHERE id = 0 LIMIT 1 - $$; --- seq | vehicle_id | vehicle_seq | stop_id | travel_time | arrival_time | wait_time | service_time | departure_time - final_sql = $$ WITH - customer_data AS ($$ || customers_sql || $$ ), - p_deliver AS (SELECT seq, vehicle_seq, vehicle_id, stop_seq, stop_type, order_id, cargo, travel_time, arrival_time, wait_time, service_time, departure_time - FROM _pgr_pickDeliverEuclidean('$$ || orders_sql || $$', '$$ || vehicles_sql || $$', 1, $$ || max_cycles || $$ )), - picks AS (SELECT p_deliver.*, pindex, dindex, id AS the_id FROM p_deliver JOIN customer_data ON (id = order_id AND stop_type = 2)), - delivers AS (SELECT p_deliver.*, pindex, dindex, dindex AS the_id FROM p_deliver JOIN customer_data ON (id = order_id AND stop_type = 3)), - depots AS (SELECT p_deliver.*, 0 as pindex, 0 as dindex, 0 AS the_id FROM p_deliver WHERE (stop_type IN (-1,1,6))), - the_union AS (SELECT * FROM picks UNION SELECT * FROM delivers UNION SELECT * from depots) - - SELECT (row_number() over(ORDER BY a.seq))::INTEGER, vehicle_seq, a.stop_seq, the_id::BIGINT, a.travel_time, a.arrival_time, a.wait_time, a.service_time, a.departure_time - FROM (SELECT * FROM the_union) AS a ORDER BY a.seq - $$; - RETURN QUERY EXECUTE final_sql; -END; -$BODY$ -LANGUAGE plpgsql VOLATILE STRICT; - - --- COMMENTS - - -COMMENT ON FUNCTION _pgr_gsoc_vrppdtw(TEXT, INTEGER, FLOAT, FLOAT, INTEGER) -IS 'pgRouting Deprecated internal function'; - diff --git a/sql/legacy/vrppdtw/gsoc_vrppdtw.sql b/sql/legacy/vrppdtw/gsoc_vrppdtw.sql deleted file mode 100644 index f2c85d2654..0000000000 --- a/sql/legacy/vrppdtw/gsoc_vrppdtw.sql +++ /dev/null @@ -1,66 +0,0 @@ -/*PGR-GNU***************************************************************** -File: reginabook.sql - -Generated with Template by: -Copyright (c) 2017 pgRouting developers -Mail: project@pgrouting.org - -Function's developer: -Copyright (c) 2017 Celia Virginia Vergara Castillo -Mail: - ------- - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - ********************************************************************PGR-GNU*/ - - ----------------------------- --- pgr_gsoc_vrppdtw ----------------------------- - - -CREATE OR REPLACE FUNCTION pgr_gsoc_vrppdtw( - text, -- SQL (required) - INTEGER, -- vehicle_num (required) - INTEGER, -- capacity (required) - - OUT seq INTEGER, - OUT id1 INTEGER, - OUT id2 INTEGER, - OUT cost FLOAT -) -RETURNS SETOF record AS -$BODY$ -DECLARE -has_reverse BOOLEAN; -customers_sql TEXT; -BEGIN - RETURN query - SELECT a.seq, vehicle_id::INTEGER AS id1, stop_id::INTEGER AS id2, departure_time AS cost - FROM _pgr_gsoc_vrppdtw($1, $2, $3, 1, 30) AS a WHERE vehicle_id NOT IN (-2); -END -$BODY$ -LANGUAGE plpgsql VOLATILE STRICT -COST 100 -ROWS 1000; - - --- COMMENTS - - -COMMENT ON FUNCTION pgr_gsoc_vrppdtw(TEXT, INTEGER, INTEGER) -IS 'pgr_gsoc_vrppdtw deprecated experimental function'; diff --git a/sql/metrics/CMakeLists.txt b/sql/metrics/CMakeLists.txt index c047b395e5..9b748324e2 100644 --- a/sql/metrics/CMakeLists.txt +++ b/sql/metrics/CMakeLists.txt @@ -2,6 +2,7 @@ SET(LOCAL_FILES _betweennessCentrality.sql betweennessCentrality.sql + degree.sql ) foreach (f ${LOCAL_FILES}) diff --git a/sql/topology/degree.sql b/sql/metrics/degree.sql similarity index 54% rename from sql/topology/degree.sql rename to sql/metrics/degree.sql index 033a63ee20..2270d80499 100644 --- a/sql/topology/degree.sql +++ b/sql/metrics/degree.sql @@ -43,16 +43,30 @@ DECLARE eids TEXT; query TEXT; + sqlhint TEXT; + BEGIN - edges_sql := _pgr_checkQuery($1); - PERFORM _pgr_checkColumn(edges_sql, 'id', 'ANY-INTEGER', dryrun => $3); + BEGIN + edges_sql := _pgr_checkQuery($1); + PERFORM _pgr_checkColumn(edges_sql, 'id', 'ANY-INTEGER', dryrun => $3); + + vertices_sql := _pgr_checkQuery($2); + PERFORM _pgr_checkColumn(vertices_sql, 'id', 'ANY-INTEGER', dryrun => $3); + + EXCEPTION WHEN OTHERS THEN + GET STACKED DIAGNOSTICS sqlhint = PG_EXCEPTION_HINT; + RAISE EXCEPTION '%', SQLERRM USING HINT = sqlhint, ERRCODE = SQLSTATE; + END; - vertices_sql := _pgr_checkQuery($2); - PERFORM _pgr_checkColumn(vertices_sql, 'id', 'ANY-INTEGER', dryrun => $3); has_in_edges := _pgr_checkColumn(vertices_sql, 'in_edges', 'ANY-INTEGER[]', true, dryrun => $3); has_out_edges := _pgr_checkColumn(vertices_sql, 'out_edges', 'ANY-INTEGER[]', true, dryrun => $3); + IF NOT has_in_edges AND NOT has_out_edges THEN + RAISE EXCEPTION 'column "in_edges" does not exist' USING HINT = vertices_sql, ERRCODE = 42703; + END IF; + + IF has_in_edges THEN eids = $$coalesce(in_edges::BIGINT[], '{}'::BIGINT[])$$; END IF; @@ -93,11 +107,11 @@ BEGIN totals AS ( SELECT v.id, count(*) - FROM g_vertices AS v - JOIN g_edges AS e ON (e.id = eid) GROUP BY v.id + FROM g_vertices v + JOIN g_edges e ON (v.eid = e.id) GROUP BY v.id ) - SELECT id::BIGINT, coalesce(count, 0)::BIGINT FROM all_vertices LEFT JOIN totals USING (id) + SELECT id::BIGINT, count::BIGINT FROM all_vertices JOIN totals USING (id) $q$, eids); IF dryrun THEN @@ -106,22 +120,93 @@ BEGIN RETURN QUERY EXECUTE query; END IF; - EXCEPTION WHEN OTHERS THEN - RAISE EXCEPTION '%', SQLERRM - USING HINT = 'Please check query: '|| $1; - END; $BODY$ LANGUAGE plpgsql VOLATILE STRICT; - --- COMMENTS COMMENT ON FUNCTION pgr_degree(TEXT, TEXT, BOOLEAN) IS 'pgr_degree -- PROPOSED - Parameters - Edges SQL with columns: id - Vertices SQL with columns: id, in_edges, out_edges - Documentation: - ${PROJECT_DOC_LINK}/pgr_degree.html '; + +--v3.8 +CREATE FUNCTION pgr_degree( + TEXT, -- Edges SQL + + dryrun BOOLEAN DEFAULT false, + + OUT node BIGINT, + OUT degree BIGINT +) +RETURNS SETOF RECORD AS +$BODY$ +DECLARE + edges_sql TEXT; + has_id BOOLEAN; + has_source BOOLEAN; + has_target BOOLEAN; + eids TEXT; + query TEXT; + + sqlhint TEXT; + +BEGIN + + -- Verify the data is complete + BEGIN + edges_sql := _pgr_checkQuery($1); + has_id := _pgr_checkColumn(edges_sql, 'id', 'ANY-INTEGER', dryrun => $2); + has_source := _pgr_checkColumn(edges_sql, 'source', 'ANY-INTEGER', dryrun => $2); + has_target := _pgr_checkColumn(edges_sql, 'target', 'ANY-INTEGER', dryrun => $2); + EXCEPTION WHEN OTHERS THEN + GET STACKED DIAGNOSTICS sqlhint = PG_EXCEPTION_HINT; + RAISE EXCEPTION '%', SQLERRM USING HINT = sqlhint, ERRCODE = SQLSTATE; + END; + + query := format($q$ + + WITH + + -- a sub set of edges of the graph goes here + g_edges AS ( + %1$s + ), + + -- sub set of vertices of the graph goes here + g_vertices AS ( + SELECT source, id FROM g_edges + UNION ALL + SELECT target, id FROM g_edges + ), + + totals AS ( + SELECT source AS node, count(*) AS degree + FROM g_vertices + GROUP BY node + ) + + SELECT node::BIGINT, degree::BIGINT + FROM totals + $q$, edges_sql); + + IF dryrun THEN + RAISE NOTICE '%', query || ';'; + ELSE + RETURN QUERY EXECUTE query; + END IF; + +END; +$BODY$ +LANGUAGE plpgsql VOLATILE STRICT; + +COMMENT ON FUNCTION pgr_degree(TEXT, BOOLEAN) +IS 'pgr_degree +- Parameters +- Edges SQL with columns: id +- Documentation: +- ${PROJECT_DOC_LINK}/pgr_degree.html +'; diff --git a/sql/scripts/build-extension-update-files.pl b/sql/scripts/build-extension-update-files.pl index 8fa5358852..74744480b6 100755 --- a/sql/scripts/build-extension-update-files.pl +++ b/sql/scripts/build-extension-update-files.pl @@ -64,6 +64,8 @@ my $version_3_5 = qr/(3.5.[\d+])/; my $version_3_6 = qr/(3.6.[\d+])/; my $version_3_7 = qr/(3.7.[\d+])/; +my $version_3_8 = qr/(3.8.[\d+])/; +my $version_4_0 = qr/(4.0.[\d+])/; # add minor here my $version_2 = qr/(2.[\d+].[\d+])/; @@ -73,7 +75,7 @@ my $mayor_format = qr/([\d+]).[\d+].[\d+]/; -my $current = $version_3_7; +my $current = $version_4_0; sub Usage { @@ -221,19 +223,19 @@ sub generate_upgrade_script { } # updating to 3.4+ - if ($old_mayor == 2 or ($old_mayor == 3 and $old_minor < 4)) { + if ($old_minor < 3.4) { push @commands, drop_special_case_function("pgr_maxcardinalitymatch(text,boolean)"); } # updating to 3.5+ - if ($old_mayor == 2 or ($old_mayor == 3 && $old_minor < 5)) { + if ($old_minor < 3.5) { push @commands, drop_special_case_function("pgr_dijkstra(text,anyarray,bigint,boolean)"); push @commands, drop_special_case_function("pgr_dijkstra(text,bigint,anyarray,boolean)"); push @commands, drop_special_case_function("pgr_dijkstra(text,bigint,bigint,boolean)"); } # updating to 3.6+ - if ($old_mayor == 2 or ($old_mayor == 3 && $old_minor < 6)) { + if ($old_minor < 3.6) { push @commands, drop_special_case_function("pgr_withpointsksp(text, text, bigint, bigint, integer, boolean, boolean, char, boolean)"); push @commands, drop_special_case_function("pgr_astar(text,anyarray,bigint,boolean,integer,double precision,double precision)"); push @commands, drop_special_case_function("pgr_astar(text,bigint,anyarray,boolean,integer,double precision,double precision)"); @@ -249,7 +251,7 @@ sub generate_upgrade_script { } # updating to 3.7+ - if ($old_mayor == 2 or ($old_mayor == 3 && $old_minor < 7)) { + if ($old_mayor >= 3.0 && $old_minor < 3.7) { push @commands, drop_special_case_function("pgr_primbfs(text,anyarray,bigint)"); push @commands, drop_special_case_function("pgr_primbfs(text,bigint,bigint)"); push @commands, drop_special_case_function("pgr_primdfs(text,anyarray,bigint)"); @@ -268,6 +270,12 @@ sub generate_upgrade_script { push @commands, drop_special_case_function("pgr_kruskaldd(text,anyarray,double precision)"); } + # updating to 3.7+ + if ($old_minor >= 3.4 && $old_minor < 3.8) { + push @commands, drop_special_case_function("pgr_findcloseedges(text,geometry,double precision,integer,boolean,boolean)"); + push @commands, drop_special_case_function("pgr_findcloseedges(text,geometry[],double precision,integer,boolean,boolean)"); + } + } #------------------------------------ @@ -277,14 +285,17 @@ sub generate_upgrade_script { if ($old_mayor == 2) { push @commands, update_from_version_2(); } + +=pod if ("$old_version" eq "3.0.0") { push @commands, update_from_version_3_0_0(); } +=cut # UGH! someone change the definition of the TYPE or reused an existing - # TYPE name which is VERY BAD because other poeple might be dependent + # TYPE name which is VERY BAD because other people might be dependent # on the old TYPE so we can DROP TYPE CASCADE; or we might drop - # a user's function. So juse DIE and maybe someone can resolve this + # a user's function. So just DIE and maybe someone can resolve this die "ERROR: pgrouting TYPE changed! Cannot continue!\n" if $err; @@ -445,6 +456,7 @@ sub others_3_0_0 { '"",seq,vid,target_array'); return @commands; } + =pod ***************************************************************** code beyond this point is v2.6 specific diff --git a/sql/sigs/pgrouting--3.8.sig b/sql/sigs/pgrouting--3.8.sig new file mode 100644 index 0000000000..09ce9c0dd3 --- /dev/null +++ b/sql/sigs/pgrouting--3.8.sig @@ -0,0 +1,350 @@ +pgr_alphashape(geometry,double precision) +_pgr_alphashape(text,double precision) +pgr_analyzegraph(text,double precision,text,text,text,text,text) +pgr_analyzeoneway(text,text[],text[],text[],text[],boolean,text,text,text) +_pgr_array_reverse(anyarray) +_pgr_articulationpoints(text) +pgr_articulationpoints(text) +pgr_astarcostmatrix(text,anyarray,boolean,integer,double precision,double precision) +pgr_astarcost(text,anyarray,anyarray,boolean,integer,double precision,double precision) +pgr_astarcost(text,anyarray,bigint,boolean,integer,double precision,double precision) +pgr_astarcost(text,bigint,anyarray,boolean,integer,double precision,double precision) +pgr_astarcost(text,bigint,bigint,boolean,integer,double precision,double precision) +pgr_astarcost(text,text,boolean,integer,double precision,double precision) +pgr_astar(text,anyarray,anyarray,boolean,integer,double precision,double precision) +_pgr_astar(text,anyarray,anyarray,boolean,integer,double precision,double precision,boolean,boolean) +pgr_astar(text,anyarray,bigint,boolean,integer,double precision,double precision) +pgr_astar(text,bigint,anyarray,boolean,integer,double precision,double precision) +pgr_astar(text,bigint,bigint,boolean,integer,double precision,double precision) +pgr_astar(text,text,boolean,integer,double precision,double precision) +_pgr_astar(text,text,boolean,integer,double precision,double precision,boolean) +pgr_bdastarcostmatrix(text,anyarray,boolean,integer,numeric,numeric) +pgr_bdastarcost(text,anyarray,anyarray,boolean,integer,numeric,numeric) +pgr_bdastarcost(text,anyarray,bigint,boolean,integer,numeric,numeric) +pgr_bdastarcost(text,bigint,anyarray,boolean,integer,numeric,numeric) +pgr_bdastarcost(text,bigint,bigint,boolean,integer,numeric,numeric) +pgr_bdastarcost(text,text,boolean,integer,numeric,numeric) +_pgr_bdastar(text,anyarray,anyarray,boolean,integer,double precision,double precision,boolean) +pgr_bdastar(text,anyarray,anyarray,boolean,integer,numeric,numeric) +pgr_bdastar(text,anyarray,bigint,boolean,integer,numeric,numeric) +pgr_bdastar(text,bigint,anyarray,boolean,integer,numeric,numeric) +pgr_bdastar(text,bigint,bigint,boolean,integer,numeric,numeric) +_pgr_bdastar(text,text,boolean,integer,double precision,double precision,boolean) +pgr_bdastar(text,text,boolean,integer,numeric,numeric) +pgr_bddijkstracostmatrix(text,anyarray,boolean) +pgr_bddijkstracost(text,anyarray,anyarray,boolean) +pgr_bddijkstracost(text,anyarray,bigint,boolean) +pgr_bddijkstracost(text,bigint,anyarray,boolean) +pgr_bddijkstracost(text,bigint,bigint,boolean) +pgr_bddijkstracost(text,text,boolean) +pgr_bddijkstra(text,anyarray,anyarray,boolean) +_pgr_bddijkstra(text,anyarray,anyarray,boolean,boolean) +pgr_bddijkstra(text,anyarray,bigint,boolean) +pgr_bddijkstra(text,bigint,anyarray,boolean) +pgr_bddijkstra(text,bigint,bigint,boolean) +pgr_bddijkstra(text,text,boolean) +_pgr_bddijkstra(text,text,boolean,boolean) +pgr_bellmanford(text,anyarray,anyarray,boolean) +_pgr_bellmanford(text,anyarray,anyarray,boolean,boolean) +pgr_bellmanford(text,anyarray,bigint,boolean) +pgr_bellmanford(text,bigint,anyarray,boolean) +pgr_bellmanford(text,bigint,bigint,boolean) +pgr_bellmanford(text,text,boolean) +_pgr_bellmanford(text,text,boolean,boolean) +_pgr_betweennesscentrality(text,boolean) +pgr_betweennesscentrality(text,boolean) +_pgr_biconnectedcomponents(text) +pgr_biconnectedcomponents(text) +_pgr_binarybreadthfirstsearch(text,anyarray,anyarray,boolean) +pgr_binarybreadthfirstsearch(text,anyarray,anyarray,boolean) +pgr_binarybreadthfirstsearch(text,anyarray,bigint,boolean) +pgr_binarybreadthfirstsearch(text,bigint,anyarray,boolean) +pgr_binarybreadthfirstsearch(text,bigint,bigint,boolean) +_pgr_binarybreadthfirstsearch(text,text,boolean) +pgr_binarybreadthfirstsearch(text,text,boolean) +_pgr_bipartite(text) +pgr_bipartite(text) +_pgr_boost_version() +pgr_boykovkolmogorov(text,anyarray,anyarray) +pgr_boykovkolmogorov(text,anyarray,bigint) +pgr_boykovkolmogorov(text,bigint,anyarray) +pgr_boykovkolmogorov(text,bigint,bigint) +pgr_boykovkolmogorov(text,text) +_pgr_breadthfirstsearch(text,anyarray,bigint,boolean) +pgr_breadthfirstsearch(text,anyarray,bigint,boolean) +pgr_breadthfirstsearch(text,bigint,bigint,boolean) +_pgr_bridges(text) +pgr_bridges(text) +_pgr_build_type() +_pgr_checkcolumn(text,text,text,boolean,boolean) +_pgr_checkquery(text) +_pgr_checkverttab(text,text[],integer,text) +pgr_chinesepostmancost(text) +pgr_chinesepostman(text) +_pgr_chinesepostman(text,boolean) +_pgr_compilation_date() +_pgr_compiler_version() +_pgr_connectedcomponents(text) +pgr_connectedcomponents(text) +pgr_contractiondeadend(text,boolean,bigint[]) +pgr_contractionlinear(text,boolean,bigint[]) +_pgr_contraction(text,bigint[],integer,bigint[],boolean) +pgr_contraction(text,bigint[],integer,bigint[],boolean) +pgr_contraction(text,boolean,integer[],integer,bigint[]) +_pgr_createindex(text,text,text,integer,text) +_pgr_createindex(text,text,text,text,integer,text) +pgr_createtopology(text,double precision,text,text,text,text,text,boolean) +pgr_createverticestable(text,text,text,text,text) +_pgr_cuthillmckeeordering(text) +pgr_cuthillmckeeordering(text) +pgr_dagshortestpath(text,anyarray,anyarray) +_pgr_dagshortestpath(text,anyarray,anyarray,boolean,boolean) +pgr_dagshortestpath(text,anyarray,bigint) +pgr_dagshortestpath(text,bigint,anyarray) +pgr_dagshortestpath(text,bigint,bigint) +pgr_dagshortestpath(text,text) +_pgr_dagshortestpath(text,text,boolean,boolean) +pgr_degree(text,boolean) +pgr_degree(text,text,boolean) +_pgr_depthfirstsearch(text,anyarray,boolean,bigint) +pgr_depthfirstsearch(text,anyarray,boolean,bigint) +pgr_depthfirstsearch(text,bigint,boolean,bigint) +pgr_dijkstracostmatrix(text,anyarray,boolean) +pgr_dijkstracost(text,anyarray,anyarray,boolean) +pgr_dijkstracost(text,anyarray,bigint,boolean) +pgr_dijkstracost(text,bigint,anyarray,boolean) +pgr_dijkstracost(text,bigint,bigint,boolean) +pgr_dijkstracost(text,text,boolean) +pgr_dijkstranearcost(text,anyarray,anyarray,boolean,bigint,boolean) +pgr_dijkstranearcost(text,anyarray,bigint,boolean,bigint) +pgr_dijkstranearcost(text,bigint,anyarray,boolean,bigint) +pgr_dijkstranearcost(text,text,boolean,bigint,boolean) +_pgr_dijkstranear(text,anyarray,anyarray,bigint,boolean) +pgr_dijkstranear(text,anyarray,anyarray,boolean,bigint,boolean) +_pgr_dijkstranear(text,anyarray,bigint,bigint,boolean) +pgr_dijkstranear(text,anyarray,bigint,boolean,bigint) +_pgr_dijkstranear(text,bigint,anyarray,bigint,boolean) +pgr_dijkstranear(text,bigint,anyarray,boolean,bigint) +pgr_dijkstranear(text,text,boolean,bigint,boolean) +pgr_dijkstra(text,anyarray,anyarray,boolean) +_pgr_dijkstra(text,anyarray,anyarray,boolean,boolean,boolean,bigint) +_pgr_dijkstra(text,anyarray,anyarray,boolean,boolean,boolean,bigint,boolean) +pgr_dijkstra(text,anyarray,bigint,boolean) +pgr_dijkstra(text,bigint,anyarray,boolean) +pgr_dijkstra(text,bigint,bigint,boolean) +pgr_dijkstra(text,text,boolean) +_pgr_dijkstra(text,text,boolean,boolean,bigint,boolean) +_pgr_dijkstra(text,text,boolean,boolean,boolean) +_pgr_dijkstravia(text,anyarray,boolean,boolean,boolean) +pgr_dijkstravia(text,anyarray,boolean,boolean,boolean) +_pgr_drivingdistance(text,anyarray,double precision,boolean,boolean) +pgr_drivingdistance(text,anyarray,double precision,boolean,boolean) +pgr_drivingdistance(text,bigint,double precision,boolean) +_pgr_drivingdistancev4(text,anyarray,double precision,boolean,boolean) +_pgr_edgecoloring(text) +pgr_edgecoloring(text) +_pgr_edgedisjointpaths(text,anyarray,anyarray,boolean) +pgr_edgedisjointpaths(text,anyarray,anyarray,boolean) +pgr_edgedisjointpaths(text,anyarray,bigint,boolean) +pgr_edgedisjointpaths(text,bigint,anyarray,boolean) +pgr_edgedisjointpaths(text,bigint,bigint,boolean) +_pgr_edgedisjointpaths(text,text,boolean) +pgr_edgedisjointpaths(text,text,boolean) +pgr_edmondskarp(text,anyarray,anyarray) +pgr_edmondskarp(text,anyarray,bigint) +pgr_edmondskarp(text,bigint,anyarray) +pgr_edmondskarp(text,bigint,bigint) +pgr_edmondskarp(text,text) +_pgr_edwardmoore(text,anyarray,anyarray,boolean) +pgr_edwardmoore(text,anyarray,anyarray,boolean) +pgr_edwardmoore(text,anyarray,bigint,boolean) +pgr_edwardmoore(text,bigint,anyarray,boolean) +pgr_edwardmoore(text,bigint,bigint,boolean) +_pgr_edwardmoore(text,text,boolean) +pgr_edwardmoore(text,text,boolean) +_pgr_endpoint(geometry) +pgr_extractvertices(text,boolean) +pgr_findcloseedges(text,geometry,double precision,integer,boolean) +pgr_findcloseedges(text,geometry[],double precision,integer,boolean) +pgr_findcloseedges(text,geometry,double precision,integer,boolean,boolean) +pgr_findcloseedges(text,geometry[],double precision,integer,boolean,boolean) +_pgr_floydwarshall(text,boolean) +pgr_floydwarshall(text,boolean) +pgr_full_version() +_pgr_getcolumnname(text,text,integer,text) +_pgr_getcolumnname(text,text,text,integer,text) +_pgr_getcolumntype(text,text,integer,text) +_pgr_getcolumntype(text,text,text,integer,text) +_pgr_get_statement(text) +_pgr_gettablename(text,integer,text) +_pgr_git_hash() +_pgr_hawickcircuits(text) +pgr_hawickcircuits(text) +_pgr_iscolumnindexed(text,text,integer,text) +_pgr_iscolumnindexed(text,text,text,integer,text) +_pgr_iscolumnintable(text,text) +_pgr_isplanar(text) +pgr_isplanar(text) +_pgr_johnson(text,boolean) +pgr_johnson(text,boolean) +pgr_kruskalbfs(text,anyarray,bigint) +pgr_kruskalbfs(text,bigint,bigint) +pgr_kruskaldd(text,anyarray,double precision) +pgr_kruskaldd(text,anyarray,numeric) +pgr_kruskaldd(text,bigint,double precision) +pgr_kruskaldd(text,bigint,numeric) +pgr_kruskaldfs(text,anyarray,bigint) +pgr_kruskaldfs(text,bigint,bigint) +pgr_kruskal(text) +_pgr_kruskal(text,anyarray,text,bigint,double precision) +_pgr_kruskalv4(text,anyarray,text,bigint,double precision) +pgr_ksp(text,anyarray,anyarray,integer,boolean,boolean) +_pgr_ksp(text,anyarray,anyarray,integer,boolean,boolean,boolean) +pgr_ksp(text,anyarray,bigint,integer,boolean,boolean) +pgr_ksp(text,bigint,anyarray,integer,boolean,boolean) +_pgr_ksp(text,bigint,bigint,integer,boolean,boolean) +pgr_ksp(text,bigint,bigint,integer,boolean,boolean) +_pgr_ksp(text,text,integer,boolean,boolean) +pgr_ksp(text,text,integer,boolean,boolean) +_pgr_lengauertarjandominatortree(text,bigint) +pgr_lengauertarjandominatortree(text,bigint) +_pgr_lib_version() +_pgr_linegraphfull(text) +pgr_linegraphfull(text) +_pgr_linegraph(text,boolean) +pgr_linegraph(text,boolean) +_pgr_makeconnected(text) +pgr_makeconnected(text) +pgr_maxcardinalitymatch(text) +_pgr_maxcardinalitymatch(text,boolean) +pgr_maxcardinalitymatch(text,boolean) +pgr_maxflowmincost_cost(text,anyarray,anyarray) +pgr_maxflowmincost_cost(text,anyarray,bigint) +pgr_maxflowmincost_cost(text,bigint,anyarray) +pgr_maxflowmincost_cost(text,bigint,bigint) +pgr_maxflowmincost_cost(text,text) +pgr_maxflowmincost(text,anyarray,anyarray) +_pgr_maxflowmincost(text,anyarray,anyarray,boolean) +pgr_maxflowmincost(text,anyarray,bigint) +pgr_maxflowmincost(text,bigint,anyarray) +pgr_maxflowmincost(text,bigint,bigint) +pgr_maxflowmincost(text,text) +_pgr_maxflowmincost(text,text,boolean) +pgr_maxflow(text,anyarray,anyarray) +_pgr_maxflow(text,anyarray,anyarray,integer,boolean) +pgr_maxflow(text,anyarray,bigint) +pgr_maxflow(text,bigint,anyarray) +pgr_maxflow(text,bigint,bigint) +pgr_maxflow(text,text) +_pgr_maxflow(text,text,integer,boolean) +_pgr_msg(integer,text,text) +pgr_nodenetwork(text,double precision,text,text,text,text,boolean) +_pgr_onerror(boolean,integer,text,text,text,text) +_pgr_operating_system() +_pgr_parameter_check(text,text,boolean) +_pgr_pgsql_version() +_pgr_pickdelivereuclidean(text,text,double precision,integer,integer) +pgr_pickdelivereuclidean(text,text,double precision,integer,integer) +_pgr_pickdeliver(text,text,text,double precision,integer,integer) +pgr_pickdeliver(text,text,text,double precision,integer,integer) +_pgr_pointtoid(geometry,double precision,text,integer) +pgr_primbfs(text,anyarray,bigint) +pgr_primbfs(text,bigint,bigint) +pgr_primdd(text,anyarray,double precision) +pgr_primdd(text,anyarray,numeric) +pgr_primdd(text,bigint,double precision) +pgr_primdd(text,bigint,numeric) +pgr_primdfs(text,anyarray,bigint) +pgr_primdfs(text,bigint,bigint) +pgr_prim(text) +_pgr_prim(text,anyarray,text,bigint,double precision) +_pgr_primv4(text,anyarray,text,bigint,double precision) +pgr_pushrelabel(text,anyarray,anyarray) +pgr_pushrelabel(text,anyarray,bigint) +pgr_pushrelabel(text,bigint,anyarray) +pgr_pushrelabel(text,bigint,bigint) +pgr_pushrelabel(text,text) +_pgr_quote_ident(text) +_pgr_sequentialvertexcoloring(text) +pgr_sequentialvertexcoloring(text) +_pgr_startpoint(geometry) +_pgr_stoerwagner(text) +pgr_stoerwagner(text) +_pgr_strongcomponents(text) +pgr_strongcomponents(text) +_pgr_topologicalsort(text) +pgr_topologicalsort(text) +_pgr_transitiveclosure(text) +pgr_transitiveclosure(text) +_pgr_trsp(text,integer,double precision,integer,double precision,boolean,boolean,text) +pgr_trsp(text,integer,double precision,integer,double precision,boolean,boolean,text) +pgr_trsp(text,integer,integer,boolean,boolean,text) +_pgr_trsp(text,text,anyarray,anyarray,boolean) +pgr_trsp(text,text,anyarray,anyarray,boolean) +_pgr_trsp(text,text,anyarray,bigint,boolean) +pgr_trsp(text,text,anyarray,bigint,boolean) +_pgr_trsp(text,text,bigint,anyarray,boolean) +pgr_trsp(text,text,bigint,anyarray,boolean) +_pgr_trsp(text,text,bigint,bigint,boolean) +pgr_trsp(text,text,bigint,bigint,boolean) +pgr_trsp(text,text,text,boolean) +_pgr_trspv4(text,text,anyarray,anyarray,boolean) +_pgr_trspv4(text,text,text,boolean) +pgr_trspviaedges(text,integer[],double precision[],boolean,boolean,text) +_pgr_trspvia(text,text,anyarray,boolean,boolean,boolean) +pgr_trspvia(text,text,anyarray,boolean,boolean,boolean) +pgr_trspviavertices(text,anyarray,boolean,boolean,text) +_pgr_trspviavertices(text,integer[],boolean,boolean,text) +_pgr_trspvia_withpoints(text,text,text,anyarray,boolean,boolean,boolean,character,boolean) +pgr_trspvia_withpoints(text,text,text,anyarray,boolean,boolean,boolean,character,boolean) +_pgr_trsp_withpoints(text,text,text,anyarray,anyarray,boolean,character,boolean) +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_trsp_withpoints(text,text,text,text,boolean,character,boolean) +_pgr_tspeuclidean(text,bigint,bigint,double precision,integer,integer,integer,double precision,double precision,double precision,boolean) +pgr_tspeuclidean(text,bigint,bigint,double precision,integer,integer,integer,double precision,double precision,double precision,boolean) +_pgr_tsp(text,bigint,bigint,double precision,integer,integer,integer,double precision,double precision,double precision,boolean) +pgr_tsp(text,bigint,bigint,double precision,integer,integer,integer,double precision,double precision,double precision,boolean) +_pgr_turnrestrictedpath(text,text,bigint,bigint,integer,boolean,boolean,boolean,boolean) +pgr_turnrestrictedpath(text,text,bigint,bigint,integer,boolean,boolean,boolean,boolean) +pgr_version() +_pgr_versionless(text,text) +_pgr_vrponedepot(text,text,text,integer) +pgr_vrponedepot(text,text,text,integer) +pgr_withpointscostmatrix(text,text,anyarray,boolean,character) +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_withpointsdd(text,text,anyarray,double precision,boolean,character,boolean,boolean) +pgr_withpointsdd(text,text,anyarray,double precision,boolean,character,boolean,boolean) +pgr_withpointsdd(text,text,anyarray,double precision,character,boolean,boolean,boolean) +pgr_withpointsdd(text,text,bigint,double precision,boolean,character,boolean) +pgr_withpointsdd(text,text,bigint,double precision,character,boolean,boolean) +_pgr_withpointsddv4(text,text,anyarray,double precision,character,boolean,boolean,boolean) +pgr_withpointsksp(text,text,anyarray,anyarray,integer,character,boolean,boolean,boolean) +_pgr_withpointsksp(text,text,anyarray,anyarray,integer,character,boolean,boolean,boolean,boolean) +pgr_withpointsksp(text,text,anyarray,bigint,integer,character,boolean,boolean,boolean) +pgr_withpointsksp(text,text,bigint,anyarray,integer,character,boolean,boolean,boolean) +_pgr_withpointsksp(text,text,bigint,bigint,integer,boolean,boolean,character,boolean) +pgr_withpointsksp(text,text,bigint,bigint,integer,boolean,boolean,character,boolean) +pgr_withpointsksp(text,text,bigint,bigint,integer,character,boolean,boolean,boolean) +_pgr_withpointsksp(text,text,text,integer,character,boolean,boolean,boolean) +pgr_withpointsksp(text,text,text,integer,character,boolean,boolean,boolean) +pgr_withpoints(text,text,anyarray,anyarray,boolean,character,boolean) +_pgr_withpoints(text,text,anyarray,anyarray,boolean,character,boolean,boolean,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_withpoints(text,text,text,boolean,character,boolean,boolean) +_pgr_withpointsvia(text,bigint[],double precision[],boolean) +_pgr_withpointsvia(text,text,anyarray,boolean,boolean,boolean,character,boolean) +pgr_withpointsvia(text,text,anyarray,boolean,boolean,boolean,character,boolean) +_trsp(text,text,anyarray,anyarray,boolean) +_v4trsp(text,text,anyarray,anyarray,boolean) +_v4trsp(text,text,text,boolean) diff --git a/sql/sigs/pgrouting--4.0.sig b/sql/sigs/pgrouting--4.0.sig new file mode 100644 index 0000000000..954f4c19f2 --- /dev/null +++ b/sql/sigs/pgrouting--4.0.sig @@ -0,0 +1,328 @@ +pgr_alphashape(geometry,double precision) +_pgr_alphashape(text,double precision) +pgr_analyzegraph(text,double precision,text,text,text,text,text) +pgr_analyzeoneway(text,text[],text[],text[],text[],boolean,text,text,text) +_pgr_array_reverse(anyarray) +_pgr_articulationpoints(text) +pgr_articulationpoints(text) +pgr_astarcostmatrix(text,anyarray,boolean,integer,double precision,double precision) +pgr_astarcost(text,anyarray,anyarray,boolean,integer,double precision,double precision) +pgr_astarcost(text,anyarray,bigint,boolean,integer,double precision,double precision) +pgr_astarcost(text,bigint,anyarray,boolean,integer,double precision,double precision) +pgr_astarcost(text,bigint,bigint,boolean,integer,double precision,double precision) +pgr_astarcost(text,text,boolean,integer,double precision,double precision) +pgr_astar(text,anyarray,anyarray,boolean,integer,double precision,double precision) +_pgr_astar(text,anyarray,anyarray,boolean,integer,double precision,double precision,boolean,boolean) +pgr_astar(text,anyarray,bigint,boolean,integer,double precision,double precision) +pgr_astar(text,bigint,anyarray,boolean,integer,double precision,double precision) +pgr_astar(text,bigint,bigint,boolean,integer,double precision,double precision) +pgr_astar(text,text,boolean,integer,double precision,double precision) +_pgr_astar(text,text,boolean,integer,double precision,double precision,boolean) +pgr_bdastarcostmatrix(text,anyarray,boolean,integer,numeric,numeric) +pgr_bdastarcost(text,anyarray,anyarray,boolean,integer,numeric,numeric) +pgr_bdastarcost(text,anyarray,bigint,boolean,integer,numeric,numeric) +pgr_bdastarcost(text,bigint,anyarray,boolean,integer,numeric,numeric) +pgr_bdastarcost(text,bigint,bigint,boolean,integer,numeric,numeric) +pgr_bdastarcost(text,text,boolean,integer,numeric,numeric) +_pgr_bdastar(text,anyarray,anyarray,boolean,integer,double precision,double precision,boolean) +pgr_bdastar(text,anyarray,anyarray,boolean,integer,numeric,numeric) +pgr_bdastar(text,anyarray,bigint,boolean,integer,numeric,numeric) +pgr_bdastar(text,bigint,anyarray,boolean,integer,numeric,numeric) +pgr_bdastar(text,bigint,bigint,boolean,integer,numeric,numeric) +_pgr_bdastar(text,text,boolean,integer,double precision,double precision,boolean) +pgr_bdastar(text,text,boolean,integer,numeric,numeric) +pgr_bddijkstracostmatrix(text,anyarray,boolean) +pgr_bddijkstracost(text,anyarray,anyarray,boolean) +pgr_bddijkstracost(text,anyarray,bigint,boolean) +pgr_bddijkstracost(text,bigint,anyarray,boolean) +pgr_bddijkstracost(text,bigint,bigint,boolean) +pgr_bddijkstracost(text,text,boolean) +pgr_bddijkstra(text,anyarray,anyarray,boolean) +_pgr_bddijkstra(text,anyarray,anyarray,boolean,boolean) +pgr_bddijkstra(text,anyarray,bigint,boolean) +pgr_bddijkstra(text,bigint,anyarray,boolean) +pgr_bddijkstra(text,bigint,bigint,boolean) +pgr_bddijkstra(text,text,boolean) +_pgr_bddijkstra(text,text,boolean,boolean) +pgr_bellmanford(text,anyarray,anyarray,boolean) +_pgr_bellmanford(text,anyarray,anyarray,boolean,boolean) +pgr_bellmanford(text,anyarray,bigint,boolean) +pgr_bellmanford(text,bigint,anyarray,boolean) +pgr_bellmanford(text,bigint,bigint,boolean) +pgr_bellmanford(text,text,boolean) +_pgr_bellmanford(text,text,boolean,boolean) +_pgr_betweennesscentrality(text,boolean) +pgr_betweennesscentrality(text,boolean) +_pgr_biconnectedcomponents(text) +pgr_biconnectedcomponents(text) +_pgr_binarybreadthfirstsearch(text,anyarray,anyarray,boolean) +pgr_binarybreadthfirstsearch(text,anyarray,anyarray,boolean) +pgr_binarybreadthfirstsearch(text,anyarray,bigint,boolean) +pgr_binarybreadthfirstsearch(text,bigint,anyarray,boolean) +pgr_binarybreadthfirstsearch(text,bigint,bigint,boolean) +_pgr_binarybreadthfirstsearch(text,text,boolean) +pgr_binarybreadthfirstsearch(text,text,boolean) +_pgr_bipartite(text) +pgr_bipartite(text) +_pgr_boost_version() +pgr_boykovkolmogorov(text,anyarray,anyarray) +pgr_boykovkolmogorov(text,anyarray,bigint) +pgr_boykovkolmogorov(text,bigint,anyarray) +pgr_boykovkolmogorov(text,bigint,bigint) +pgr_boykovkolmogorov(text,text) +_pgr_breadthfirstsearch(text,anyarray,bigint,boolean) +pgr_breadthfirstsearch(text,anyarray,bigint,boolean) +pgr_breadthfirstsearch(text,bigint,bigint,boolean) +_pgr_bridges(text) +pgr_bridges(text) +_pgr_build_type() +_pgr_checkcolumn(text,text,text,boolean,boolean) +_pgr_checkquery(text) +_pgr_checkverttab(text,text[],integer,text) +pgr_chinesepostmancost(text) +pgr_chinesepostman(text) +_pgr_chinesepostman(text,boolean) +_pgr_compilation_date() +_pgr_compiler_version() +_pgr_connectedcomponents(text) +pgr_connectedcomponents(text) +pgr_contractiondeadend(text,boolean,bigint[]) +pgr_contractionlinear(text,boolean,bigint[]) +_pgr_contraction(text,bigint[],integer,bigint[],boolean) +pgr_contraction(text,bigint[],integer,bigint[],boolean) +pgr_contraction(text,boolean,integer[],integer,bigint[]) +_pgr_createindex(text,text,text,integer,text) +_pgr_createindex(text,text,text,text,integer,text) +pgr_createtopology(text,double precision,text,text,text,text,text,boolean) +pgr_createverticestable(text,text,text,text,text) +_pgr_cuthillmckeeordering(text) +pgr_cuthillmckeeordering(text) +pgr_dagshortestpath(text,anyarray,anyarray) +_pgr_dagshortestpath(text,anyarray,anyarray,boolean,boolean) +pgr_dagshortestpath(text,anyarray,bigint) +pgr_dagshortestpath(text,bigint,anyarray) +pgr_dagshortestpath(text,bigint,bigint) +pgr_dagshortestpath(text,text) +_pgr_dagshortestpath(text,text,boolean,boolean) +pgr_degree(text,boolean) +pgr_degree(text,text,boolean) +_pgr_depthfirstsearch(text,anyarray,boolean,bigint) +pgr_depthfirstsearch(text,anyarray,boolean,bigint) +pgr_depthfirstsearch(text,bigint,boolean,bigint) +pgr_dijkstracostmatrix(text,anyarray,boolean) +pgr_dijkstracost(text,anyarray,anyarray,boolean) +pgr_dijkstracost(text,anyarray,bigint,boolean) +pgr_dijkstracost(text,bigint,anyarray,boolean) +pgr_dijkstracost(text,bigint,bigint,boolean) +pgr_dijkstracost(text,text,boolean) +pgr_dijkstranearcost(text,anyarray,anyarray,boolean,bigint,boolean) +pgr_dijkstranearcost(text,anyarray,bigint,boolean,bigint) +pgr_dijkstranearcost(text,bigint,anyarray,boolean,bigint) +pgr_dijkstranearcost(text,text,boolean,bigint,boolean) +pgr_dijkstranear(text,anyarray,anyarray,boolean,bigint,boolean) +pgr_dijkstranear(text,anyarray,bigint,boolean,bigint) +pgr_dijkstranear(text,bigint,anyarray,boolean,bigint) +pgr_dijkstranear(text,text,boolean,bigint,boolean) +pgr_dijkstra(text,anyarray,anyarray,boolean) +_pgr_dijkstra(text,anyarray,anyarray,boolean,boolean,boolean,bigint,boolean) +pgr_dijkstra(text,anyarray,bigint,boolean) +pgr_dijkstra(text,bigint,anyarray,boolean) +pgr_dijkstra(text,bigint,bigint,boolean) +pgr_dijkstra(text,text,boolean) +_pgr_dijkstra(text,text,boolean,boolean,bigint,boolean) +_pgr_dijkstravia(text,anyarray,boolean,boolean,boolean) +pgr_dijkstravia(text,anyarray,boolean,boolean,boolean) +pgr_drivingdistance(text,anyarray,double precision,boolean,boolean) +pgr_drivingdistance(text,bigint,double precision,boolean) +_pgr_drivingdistancev4(text,anyarray,double precision,boolean,boolean) +_pgr_edgecoloring(text) +pgr_edgecoloring(text) +_pgr_edgedisjointpaths(text,anyarray,anyarray,boolean) +pgr_edgedisjointpaths(text,anyarray,anyarray,boolean) +pgr_edgedisjointpaths(text,anyarray,bigint,boolean) +pgr_edgedisjointpaths(text,bigint,anyarray,boolean) +pgr_edgedisjointpaths(text,bigint,bigint,boolean) +_pgr_edgedisjointpaths(text,text,boolean) +pgr_edgedisjointpaths(text,text,boolean) +pgr_edmondskarp(text,anyarray,anyarray) +pgr_edmondskarp(text,anyarray,bigint) +pgr_edmondskarp(text,bigint,anyarray) +pgr_edmondskarp(text,bigint,bigint) +pgr_edmondskarp(text,text) +_pgr_edwardmoore(text,anyarray,anyarray,boolean) +pgr_edwardmoore(text,anyarray,anyarray,boolean) +pgr_edwardmoore(text,anyarray,bigint,boolean) +pgr_edwardmoore(text,bigint,anyarray,boolean) +pgr_edwardmoore(text,bigint,bigint,boolean) +_pgr_edwardmoore(text,text,boolean) +pgr_edwardmoore(text,text,boolean) +_pgr_endpoint(geometry) +pgr_extractvertices(text,boolean) +pgr_findcloseedges(text,geometry,double precision,integer,boolean) +pgr_findcloseedges(text,geometry[],double precision,integer,boolean) +pgr_findcloseedges(text,geometry,double precision,integer,boolean,boolean) +pgr_findcloseedges(text,geometry[],double precision,integer,boolean,boolean) +_pgr_floydwarshall(text,boolean) +pgr_floydwarshall(text,boolean) +pgr_full_version() +_pgr_getcolumnname(text,text,integer,text) +_pgr_getcolumnname(text,text,text,integer,text) +_pgr_getcolumntype(text,text,integer,text) +_pgr_getcolumntype(text,text,text,integer,text) +_pgr_get_statement(text) +_pgr_gettablename(text,integer,text) +_pgr_git_hash() +_pgr_hawickcircuits(text) +pgr_hawickcircuits(text) +_pgr_iscolumnindexed(text,text,integer,text) +_pgr_iscolumnindexed(text,text,text,integer,text) +_pgr_iscolumnintable(text,text) +_pgr_isplanar(text) +pgr_isplanar(text) +_pgr_johnson(text,boolean) +pgr_johnson(text,boolean) +pgr_kruskalbfs(text,anyarray,bigint) +pgr_kruskalbfs(text,bigint,bigint) +pgr_kruskaldd(text,anyarray,double precision) +pgr_kruskaldd(text,anyarray,numeric) +pgr_kruskaldd(text,bigint,double precision) +pgr_kruskaldd(text,bigint,numeric) +pgr_kruskaldfs(text,anyarray,bigint) +pgr_kruskaldfs(text,bigint,bigint) +pgr_kruskal(text) +_pgr_kruskalv4(text,anyarray,text,bigint,double precision) +pgr_ksp(text,anyarray,anyarray,integer,boolean,boolean) +_pgr_ksp(text,anyarray,anyarray,integer,boolean,boolean,boolean) +pgr_ksp(text,anyarray,bigint,integer,boolean,boolean) +pgr_ksp(text,bigint,anyarray,integer,boolean,boolean) +_pgr_ksp(text,bigint,bigint,integer,boolean,boolean) +pgr_ksp(text,bigint,bigint,integer,boolean,boolean) +_pgr_ksp(text,text,integer,boolean,boolean) +pgr_ksp(text,text,integer,boolean,boolean) +_pgr_lengauertarjandominatortree(text,bigint) +pgr_lengauertarjandominatortree(text,bigint) +_pgr_lib_version() +_pgr_linegraphfull(text) +pgr_linegraphfull(text) +_pgr_linegraph(text,boolean) +pgr_linegraph(text,boolean) +_pgr_makeconnected(text) +pgr_makeconnected(text) +pgr_maxcardinalitymatch(text) +_pgr_maxcardinalitymatch(text,boolean) +pgr_maxcardinalitymatch(text,boolean) +pgr_maxflowmincost_cost(text,anyarray,anyarray) +pgr_maxflowmincost_cost(text,anyarray,bigint) +pgr_maxflowmincost_cost(text,bigint,anyarray) +pgr_maxflowmincost_cost(text,bigint,bigint) +pgr_maxflowmincost_cost(text,text) +pgr_maxflowmincost(text,anyarray,anyarray) +_pgr_maxflowmincost(text,anyarray,anyarray,boolean) +pgr_maxflowmincost(text,anyarray,bigint) +pgr_maxflowmincost(text,bigint,anyarray) +pgr_maxflowmincost(text,bigint,bigint) +pgr_maxflowmincost(text,text) +_pgr_maxflowmincost(text,text,boolean) +pgr_maxflow(text,anyarray,anyarray) +_pgr_maxflow(text,anyarray,anyarray,integer,boolean) +pgr_maxflow(text,anyarray,bigint) +pgr_maxflow(text,bigint,anyarray) +pgr_maxflow(text,bigint,bigint) +pgr_maxflow(text,text) +_pgr_maxflow(text,text,integer,boolean) +_pgr_msg(integer,text,text) +pgr_nodenetwork(text,double precision,text,text,text,text,boolean) +_pgr_onerror(boolean,integer,text,text,text,text) +_pgr_operating_system() +_pgr_parameter_check(text,text,boolean) +_pgr_pgsql_version() +_pgr_pickdelivereuclidean(text,text,double precision,integer,integer) +pgr_pickdelivereuclidean(text,text,double precision,integer,integer) +_pgr_pickdeliver(text,text,text,double precision,integer,integer) +pgr_pickdeliver(text,text,text,double precision,integer,integer) +_pgr_pointtoid(geometry,double precision,text,integer) +pgr_primbfs(text,anyarray,bigint) +pgr_primbfs(text,bigint,bigint) +pgr_primdd(text,anyarray,double precision) +pgr_primdd(text,anyarray,numeric) +pgr_primdd(text,bigint,double precision) +pgr_primdd(text,bigint,numeric) +pgr_primdfs(text,anyarray,bigint) +pgr_primdfs(text,bigint,bigint) +pgr_prim(text) +_pgr_primv4(text,anyarray,text,bigint,double precision) +pgr_pushrelabel(text,anyarray,anyarray) +pgr_pushrelabel(text,anyarray,bigint) +pgr_pushrelabel(text,bigint,anyarray) +pgr_pushrelabel(text,bigint,bigint) +pgr_pushrelabel(text,text) +_pgr_quote_ident(text) +_pgr_sequentialvertexcoloring(text) +pgr_sequentialvertexcoloring(text) +_pgr_startpoint(geometry) +_pgr_stoerwagner(text) +pgr_stoerwagner(text) +_pgr_strongcomponents(text) +pgr_strongcomponents(text) +_pgr_topologicalsort(text) +pgr_topologicalsort(text) +_pgr_transitiveclosure(text) +pgr_transitiveclosure(text) +pgr_trsp(text,text,anyarray,anyarray,boolean) +pgr_trsp(text,text,anyarray,bigint,boolean) +pgr_trsp(text,text,bigint,anyarray,boolean) +pgr_trsp(text,text,bigint,bigint,boolean) +pgr_trsp(text,text,text,boolean) +_pgr_trspv4(text,text,anyarray,anyarray,boolean) +_pgr_trspv4(text,text,text,boolean) +_pgr_trspvia(text,text,anyarray,boolean,boolean,boolean) +pgr_trspvia(text,text,anyarray,boolean,boolean,boolean) +_pgr_trspvia_withpoints(text,text,text,anyarray,boolean,boolean,boolean,character,boolean) +pgr_trspvia_withpoints(text,text,text,anyarray,boolean,boolean,boolean,character,boolean) +_pgr_trsp_withpoints(text,text,text,anyarray,anyarray,boolean,character,boolean) +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_trsp_withpoints(text,text,text,text,boolean,character,boolean) +_pgr_tspeuclidean(text,bigint,bigint,double precision,integer,integer,integer,double precision,double precision,double precision,boolean) +pgr_tspeuclidean(text,bigint,bigint,double precision,integer,integer,integer,double precision,double precision,double precision,boolean) +_pgr_tsp(text,bigint,bigint,double precision,integer,integer,integer,double precision,double precision,double precision,boolean) +pgr_tsp(text,bigint,bigint,double precision,integer,integer,integer,double precision,double precision,double precision,boolean) +_pgr_turnrestrictedpath(text,text,bigint,bigint,integer,boolean,boolean,boolean,boolean) +pgr_turnrestrictedpath(text,text,bigint,bigint,integer,boolean,boolean,boolean,boolean) +pgr_version() +_pgr_versionless(text,text) +_pgr_vrponedepot(text,text,text,integer) +pgr_vrponedepot(text,text,text,integer) +pgr_withpointscostmatrix(text,text,anyarray,boolean,character) +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_withpointsdd(text,text,anyarray,double precision,boolean,character,boolean,boolean) +pgr_withpointsdd(text,text,anyarray,double precision,boolean,character,boolean,boolean) +pgr_withpointsdd(text,text,anyarray,double precision,character,boolean,boolean,boolean) +pgr_withpointsdd(text,text,bigint,double precision,boolean,character,boolean) +pgr_withpointsdd(text,text,bigint,double precision,character,boolean,boolean) +_pgr_withpointsddv4(text,text,anyarray,double precision,character,boolean,boolean,boolean) +pgr_withpointsksp(text,text,anyarray,anyarray,integer,character,boolean,boolean,boolean) +_pgr_withpointsksp(text,text,anyarray,anyarray,integer,character,boolean,boolean,boolean,boolean) +pgr_withpointsksp(text,text,anyarray,bigint,integer,character,boolean,boolean,boolean) +pgr_withpointsksp(text,text,bigint,anyarray,integer,character,boolean,boolean,boolean) +_pgr_withpointsksp(text,text,bigint,bigint,integer,boolean,boolean,character,boolean) +pgr_withpointsksp(text,text,bigint,bigint,integer,boolean,boolean,character,boolean) +pgr_withpointsksp(text,text,bigint,bigint,integer,character,boolean,boolean,boolean) +_pgr_withpointsksp(text,text,text,integer,character,boolean,boolean,boolean) +pgr_withpointsksp(text,text,text,integer,character,boolean,boolean,boolean) +pgr_withpoints(text,text,anyarray,anyarray,boolean,character,boolean) +_pgr_withpoints(text,text,anyarray,anyarray,boolean,character,boolean,boolean,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_withpoints(text,text,text,boolean,character,boolean,boolean) +_pgr_withpointsvia(text,text,anyarray,boolean,boolean,boolean,character,boolean) +pgr_withpointsvia(text,text,anyarray,boolean,boolean,boolean,character,boolean) diff --git a/sql/spanningTree/_kruskal.sql b/sql/spanningTree/_kruskal.sql index 8842258bfb..cbddb46d5e 100644 --- a/sql/spanningTree/_kruskal.sql +++ b/sql/spanningTree/_kruskal.sql @@ -53,29 +53,3 @@ LANGUAGE C VOLATILE STRICT; COMMENT ON FUNCTION _pgr_kruskalv4(TEXT, ANYARRAY, TEXT, BIGINT, FLOAT) IS 'pgRouting internal function'; - ---v3.0 -CREATE FUNCTION _pgr_kruskal( - TEXT, -- Edge sql - ANYARRAY, -- tree root for traversal - fn_suffix TEXT, - max_depth BIGINT, - distance FLOAT, - - OUT seq BIGINT, - OUT depth BIGINT, - OUT start_vid BIGINT, - OUT node BIGINT, - OUT edge BIGINT, - OUT cost FLOAT, - OUT agg_cost FLOAT) -RETURNS SETOF RECORD AS -'MODULE_PATHNAME' -LANGUAGE C VOLATILE STRICT; - - --- COMMENTS - - -COMMENT ON FUNCTION _pgr_kruskal(TEXT, ANYARRAY, TEXT, BIGINT, FLOAT) -IS 'pgRouting internal function deprecated on v3.7.0'; diff --git a/sql/spanningTree/_prim.sql b/sql/spanningTree/_prim.sql index 3401e2812d..9da3da2593 100644 --- a/sql/spanningTree/_prim.sql +++ b/sql/spanningTree/_prim.sql @@ -27,18 +27,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ********************************************************************PGR-GNU*/ ----------- ----------- --- mst ----------- ----------- - - ----------------- --- _pgr_prim ----------------- - - --v3.7 CREATE FUNCTION _pgr_primv4( TEXT, -- Edge sql @@ -61,30 +49,3 @@ LANGUAGE C VOLATILE STRICT; COMMENT ON FUNCTION _pgr_primv4(TEXT, ANYARRAY, TEXT, BIGINT, FLOAT) IS 'pgRouting internal function'; - ---v3.0 -CREATE FUNCTION _pgr_prim( - TEXT, -- Edge sql - ANYARRAY, -- tree root for traversal - order_by TEXT, - max_depth BIGINT, - distance FLOAT, - - OUT seq BIGINT, - OUT depth BIGINT, - OUT start_vid BIGINT, - OUT node BIGINT, - OUT edge BIGINT, - OUT cost FLOAT, - OUT agg_cost FLOAT) -RETURNS SETOF RECORD AS -'MODULE_PATHNAME' -LANGUAGE C VOLATILE STRICT; - - --- COMMENTS - - -COMMENT ON FUNCTION _pgr_prim(TEXT, ANYARRAY, TEXT, BIGINT, FLOAT) -IS 'pgRouting internal function deprecated on v3.7.0'; - diff --git a/sql/topology/CMakeLists.txt b/sql/topology/CMakeLists.txt index 61719f1555..fdd181295d 100644 --- a/sql/topology/CMakeLists.txt +++ b/sql/topology/CMakeLists.txt @@ -6,7 +6,6 @@ SET(LOCAL_FILES createverticestable.sql nodeNetwork.sql extractVertices.sql - degree.sql ) foreach (f ${LOCAL_FILES}) diff --git a/sql/topology/extractVertices.sql b/sql/topology/extractVertices.sql index 1dc5180e1e..c3158b3a8b 100644 --- a/sql/topology/extractVertices.sql +++ b/sql/topology/extractVertices.sql @@ -44,20 +44,49 @@ DECLARE quoted TEXT; query TEXT; has_geom BOOLEAN := TRUE; + has_st BOOLEAN := TRUE; has_source BOOLEAN := TRUE; + has_target BOOLEAN := TRUE; has_points BOOLEAN := TRUE; + has_start BOOLEAN := TRUE; + has_end BOOLEAN := TRUE; has_id BOOLEAN := TRUE; rec RECORD; + sqlhint TEXT; + BEGIN - edges_sql := _pgr_checkQuery($1); + BEGIN + edges_sql := _pgr_checkQuery($1); + EXCEPTION WHEN OTHERS THEN + GET STACKED DIAGNOSTICS sqlhint = PG_EXCEPTION_HINT; + RAISE EXCEPTION '%', SQLERRM USING HINT = sqlhint, ERRCODE = SQLSTATE; + END; + has_id := _pgr_checkColumn(edges_sql, 'id', 'ANY-INTEGER', true, dryrun => $2); - has_source := _pgr_checkColumn(edges_sql, 'source', 'ANY-INTEGER', true, dryrun => $2) - AND _pgr_checkColumn(edges_sql, 'target', 'ANY-INTEGER', true, dryrun => $2); + has_source := _pgr_checkColumn(edges_sql, 'source', 'ANY-INTEGER', true, dryrun => $2); + has_target := _pgr_checkColumn(edges_sql, 'target', 'ANY-INTEGER', true, dryrun => $2); has_geom := _pgr_checkColumn(edges_sql, 'geom', 'geometry', true, dryrun => $2); - has_points := _pgr_checkColumn(edges_sql, 'startpoint', 'geometry', true, dryrun => $2) - AND _pgr_checkColumn(edges_sql, 'endpoint', 'geometry', true, dryrun => $2); + has_start := _pgr_checkColumn(edges_sql, 'startpoint', 'geometry', true, dryrun => $2); + has_end := _pgr_checkColumn(edges_sql, 'endpoint', 'geometry', true, dryrun => $2); + has_points := has_start AND has_end; + has_st := has_source AND has_target; + + IF (NOT has_geom) THEN + IF (has_target AND NOT has_source) THEN + RAISE EXCEPTION 'column "source" does not exist' USING HINT = $1, ERRCODE = 42703; + ELSIF (NOT has_target AND has_source) THEN + RAISE EXCEPTION 'column "target" does not exist' USING HINT = $1, ERRCODE = 42703; + ELSIF (has_start AND NOT has_end) THEN + RAISE EXCEPTION 'column "endpoint" does not exist' USING HINT = $1, ERRCODE = 42703; + ELSIF (NOT has_start AND has_end) THEN + RAISE EXCEPTION 'column "startpoint" does not exist' USING HINT = $1, ERRCODE = 42703; + ELSIF (NOT has_st AND NOT has_points AND NOT has_geom) THEN + RAISE EXCEPTION 'column "geom" does not exist' USING HINT = $1, ERRCODE = 42703; + END IF; + END IF; + IF has_geom AND has_id THEN -- SELECT id, geom @@ -202,7 +231,7 @@ BEGIN SELECT row_number() over(ORDER BY ST_X(geom), ST_Y(geom)) AS id, NULL::BIGINT[], NULL::BIGINT[], x, y, geom FROM the_points$q$; - ELSIF has_source AND has_id THEN + ELSIF has_st AND has_id THEN -- SELECT id, source, target query := $q$ WITH @@ -232,7 +261,7 @@ BEGIN FROM the_points$q$; - ELSIF has_source AND NOT has_id THEN + ELSIF has_st AND NOT has_id THEN -- SELECT source, target query := $q$ WITH @@ -251,10 +280,6 @@ BEGIN SELECT DISTINCT vid::BIGINT AS id, NULL::BIGINT[], NULL::BIGINT[], NULL::FLOAT, NULL::FLOAT, NULL::geometry FROM the_points$q$; - ELSE - RAISE EXCEPTION 'Missing column' - USING HINT = 'Please check query: '|| $1; - END IF; IF dryrun THEN @@ -263,10 +288,6 @@ BEGIN RETURN QUERY EXECUTE query; END IF; - EXCEPTION WHEN OTHERS THEN - RAISE EXCEPTION '%', SQLERRM - USING HINT = 'Please check query: '|| $1; - END; $BODY$ LANGUAGE plpgsql VOLATILE STRICT; @@ -277,7 +298,6 @@ LANGUAGE plpgsql VOLATILE STRICT; COMMENT ON FUNCTION pgr_extractVertices(TEXT, BOOLEAN) IS 'pgr_extractVertices -- PROPOSED - Parameters - Edges SQL with columns: [id,] startpoint, endpoint OR diff --git a/sql/trsp/CMakeLists.txt b/sql/trsp/CMakeLists.txt index c2b60d62ee..42a1b61871 100644 --- a/sql/trsp/CMakeLists.txt +++ b/sql/trsp/CMakeLists.txt @@ -2,16 +2,10 @@ SET(LOCAL_FILES _trsp.sql trsp.sql - _trsp_deprecated.sql _array_reverse.sql - trsp_deprecated.sql - _trspViaVertices_deprecated.sql - trspViaVertices_deprecated.sql - - trspViaEdges_deprecated.sql - _trsp_withPoints.sql trsp_withPoints.sql + _trsp_withPoints.sql trspVia.sql _trspVia.sql diff --git a/sql/trsp/_trsp.sql b/sql/trsp/_trsp.sql index 4bafa32838..980a8aa4ae 100644 --- a/sql/trsp/_trsp.sql +++ b/sql/trsp/_trsp.sql @@ -24,17 +24,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ********************************************************************PGR-GNU*/ --------------- --------------- --- trsp --------------- --------------- - - --------------- --- _trsp --------------- - --v3.6 CREATE FUNCTION _pgr_trspv4( TEXT, -- edges SQL @@ -80,77 +69,3 @@ IS 'pgRouting internal function'; COMMENT ON FUNCTION _pgr_trspv4(TEXT, TEXT, TEXT, BOOLEAN) IS 'pgRouting internal function'; ---v2.6 -CREATE FUNCTION _trsp( - TEXT, -- edges SQL - TEXT, -- restrictions SQL - ANYARRAY, - ANYARRAY, - directed BOOLEAN DEFAULT true, - - OUT seq INTEGER, - OUT path_seq INTEGER, - OUT start_vid BIGINT, - OUT end_vid BIGINT, - OUT node BIGINT, - OUT edge BIGINT, - OUT cost FLOAT, - OUT agg_cost FLOAT) -RETURNS SETOF RECORD AS -'MODULE_PATHNAME' -LANGUAGE 'c' VOLATILE; - ---v3.4 -CREATE FUNCTION _v4trsp( - TEXT, -- edges SQL - TEXT, -- restrictions SQL - ANYARRAY, - ANYARRAY, - directed BOOLEAN DEFAULT true, - - OUT seq INTEGER, - OUT path_seq INTEGER, - OUT start_vid BIGINT, - OUT end_vid BIGINT, - OUT node BIGINT, - OUT edge BIGINT, - OUT cost FLOAT, - OUT agg_cost FLOAT) -RETURNS SETOF RECORD AS -$BODY$ - SELECT seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost - FROM _pgr_trspv4( $1, $2, $3, $4, $5); -$BODY$ -LANGUAGE SQL VOLATILE STRICT; - ---v3.4 -CREATE FUNCTION _v4trsp( - TEXT, -- edges SQL - TEXT, -- restrictions SQL - TEXT, -- combinations SQL - directed BOOLEAN DEFAULT true, - - OUT seq INTEGER, - OUT path_seq INTEGER, - OUT start_vid BIGINT, - OUT end_vid BIGINT, - OUT node BIGINT, - OUT edge BIGINT, - OUT cost FLOAT, - OUT agg_cost FLOAT) -RETURNS SETOF RECORD AS -$BODY$ - SELECT seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost - FROM _pgr_trspv4( $1, $2, $3, $4); -$BODY$ -LANGUAGE SQL VOLATILE STRICT; - --- COMMENTS -COMMENT ON FUNCTION _trsp(TEXT, TEXT, ANYARRAY, ANYARRAY, BOOLEAN) -IS 'pgRouting internal function deprecated on v3.4.0'; - -COMMENT ON FUNCTION _v4trsp(TEXT, TEXT, ANYARRAY, ANYARRAY, BOOLEAN) -IS 'pgRouting internal function deprecated on v3.6.0'; - -COMMENT ON FUNCTION _v4trsp(TEXT, TEXT, TEXT, BOOLEAN) -IS 'pgRouting internal function deprecated on v3.6.0'; diff --git a/sql/trsp/_trspViaVertices_deprecated.sql b/sql/trsp/_trspViaVertices_deprecated.sql deleted file mode 100644 index 2ee513c579..0000000000 --- a/sql/trsp/_trspViaVertices_deprecated.sql +++ /dev/null @@ -1,126 +0,0 @@ -/*PGR-GNU***************************************************************** -File: _trspViaVertices_deprecated.sql - -Copyright (c) 2015 pgRouting developers -Mail: project@pgrouting.org - ------- - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - ********************************************************************PGR-GNU*/ - ------------------------ --- _pgr_trspViaVertices ------------------------ - - ---v3.0 -CREATE FUNCTION _pgr_trspViaVertices - (sql text, - vids integer[], - directed boolean, - has_rcost boolean, - turn_restrict_sql text DEFAULT NULL, - - OUT seq INTEGER, - OUT id1 INTEGER, - OUT id2 INTEGER, - OUT id3 INTEGER, - OUT cost FLOAT -) -RETURNS SETOF RECORD AS -$body$ -/* - * pgr_trsp(sql text, vids integer[], directed boolean, has_reverse_cost boolean, turn_restrict_sql text DEFAULT NULL::text) - * - * Compute TRSP with via points. We compute the path between vids[i] and vids[i+1] and chain the results together. - * - * NOTE: this is a prototype function, we can gain a lot of efficiencies by implementing this in C/C++ - * -*/ -declare - i integer; - rr RECORD; - lrr RECORD; - lrra boolean := false; - seq1 integer := 0; - seq2 integer := 0; - restrictions_query TEXT; - -begin - IF (turn_restrict_sql IS NULL) THEN - RAISE EXCEPTION 'Restrictions Missing'; - END IF; - - restrictions_query = $$ - WITH old_restrictions AS ( $$ || - $5 || $$ - ) - SELECT ROW_NUMBER() OVER() AS id, - _pgr_array_reverse(array_prepend(target_id, string_to_array(via_path, ',')::INTEGER[])) AS path, - to_cost AS cost - FROM old_restrictions; - $$; - - - -- loop through each pair of vids and compute the path - for i in 1 .. array_length(vids, 1)-1 loop - seq2 := seq2 + 1; - for rr in select a.seq, seq2 as id1, a.node::INTEGER as id2, a.edge::INTEGER as id3, a.cost - from _pgr_trsp(sql, restrictions_query, vids[i], vids[i+1], directed) as a loop - -- filter out the individual path ends except the last one - -- we might not want to do this so we can know where the via points are in the path result - -- but this needs more thought - --raise notice 'rr: %', rr; - if rr.id3 = -1 then - lrr := rr; - lrra := true; - else - seq1 := seq1 + 1; - rr.seq := seq1; - - seq := rr.seq; - id1 := rr.id1; - id2 := rr.id2; - id3 := rr.id3; - cost := rr.cost; - return next; - end if; - end loop; - end loop; - - if lrra then - seq1 := seq1 + 1; - lrr.seq := seq1; - - seq := lrr.seq; - id1 := lrr.id1; - id2 := lrr.id2; - id3 := lrr.id3; - cost := lrr.cost; - return next; - end if; - return; -end; -$body$ -language plpgsql stable -cost 100 -rows 1000; - --- COMMENTS - -COMMENT ON FUNCTION _pgr_trspViaVertices(TEXT, INTEGER [], BOOLEAN, BOOLEAN, TEXT) -IS 'pgRouting internal function deprecated on v3.4.0'; diff --git a/sql/trsp/_trsp_deprecated.sql b/sql/trsp/_trsp_deprecated.sql deleted file mode 100644 index fd81e5e382..0000000000 --- a/sql/trsp/_trsp_deprecated.sql +++ /dev/null @@ -1,53 +0,0 @@ -/*PGR-GNU***************************************************************** -File: _trsp_deprecated.sql - -Copyright (c) 2015 pgRouting developers -Mail: project@pgrouting.org - ------- - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - ********************************************************************PGR-GNU*/ --------------- --- _pgr_trsp --------------- - - ---v2.6 -CREATE FUNCTION _pgr_trsp( - sql text, - source_eid integer, - source_pos float8, - target_eid integer, - target_pos float8, - directed boolean, - has_reverse_cost boolean, - turn_restrict_sql text DEFAULT null, - - OUT seq INTEGER, - OUT id1 INTEGER, - OUT id2 INTEGER, - OUT cost FLOAT -) -RETURNS SETOF record -AS 'MODULE_PATHNAME' -LANGUAGE 'c' IMMUTABLE; - --- COMMENTS - - -COMMENT ON FUNCTION _pgr_trsp(TEXT, INTEGER, FLOAT, INTEGER, FLOAT, BOOLEAN, BOOLEAN, TEXT) -IS 'pgRouting internal function deprecated on v3.4.0'; diff --git a/sql/trsp/trsp.sql b/sql/trsp/trsp.sql index 80ced40202..4a9cc86721 100644 --- a/sql/trsp/trsp.sql +++ b/sql/trsp/trsp.sql @@ -191,7 +191,6 @@ ROWS 1000; COMMENT ON FUNCTION pgr_trsp(TEXT, TEXT, BIGINT, BIGINT, BOOLEAN) IS 'pgr_trsp(one to one) -- PROPOSED - Parameters - Edges SQL with columns: id, source, target, cost [,reverse_cost] - Restrictions SQL with columns: cost, path @@ -205,7 +204,6 @@ IS 'pgr_trsp(one to one) COMMENT ON FUNCTION pgr_trsp(TEXT, TEXT, BIGINT, ANYARRAY, BOOLEAN) IS 'pgr_trsp(one to many) -- PROPOSED - Parameters - Edges SQL with columns: id, source, target, cost [,reverse_cost] - Restrictions SQL with columns: cost, path @@ -219,7 +217,6 @@ IS 'pgr_trsp(one to many) COMMENT ON FUNCTION pgr_trsp(TEXT, TEXT, ANYARRAY, BIGINT, BOOLEAN) IS 'pgr_trsp(many to one) -- PROPOSED - Parameters - Edges SQL with columns: id, source, target, cost [,reverse_cost] - Restrictions SQL with columns: cost, path @@ -233,7 +230,6 @@ IS 'pgr_trsp(many to one) COMMENT ON FUNCTION pgr_trsp(TEXT, TEXT, ANYARRAY, ANYARRAY, BOOLEAN) IS 'pgr_trsp(many to many) -- PROPOSED - Parameters - Edges SQL with columns: id, source, target, cost [,reverse_cost] - Restrictions SQL with columns: cost, path @@ -247,7 +243,6 @@ IS 'pgr_trsp(many to many) COMMENT ON FUNCTION pgr_trsp(TEXT, TEXT, TEXT, BOOLEAN) IS 'pgr_trsp(combinations) -- PROPOSED - Parameters - Edges SQL with columns: id, source, target, cost [,reverse_cost] - Restrictions SQL with columns: cost, path @@ -257,140 +252,3 @@ IS 'pgr_trsp(combinations) - Documentation: - ${PROJECT_DOC_LINK}/pgr_trsp.html '; - - --- ONE to ONE ---v2.6 -CREATE FUNCTION _pgr_trsp( - TEXT, -- edges_sql - TEXT, -- restrictions_sql - BIGINT, -- start_vid - BIGINT, -- end_vid - directed BOOLEAN DEFAULT true, - - OUT seq INTEGER, - OUT path_seq INTEGER, - OUT node BIGINT, - OUT edge BIGINT, - OUT cost FLOAT, - OUT agg_cost FLOAT) - -RETURNS SETOF RECORD AS -$BODY$ - SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost - FROM _trsp( - _pgr_get_statement($1), - _pgr_get_statement($2), - ARRAY[$3]::BIGINT[], - ARRAY[$4]::BIGINT[], - directed) AS a; -$BODY$ -LANGUAGE sql VOLATILE STRICT -COST 100 -ROWS 1000; - - --- ONE to MANY ---v2.6 -CREATE FUNCTION _pgr_trsp( - TEXT, -- edges_sql - TEXT, -- restrictions_sql - BIGINT, -- start_vid - ANYARRAY, -- end_vids - directed BOOLEAN DEFAULT true, - - OUT seq INTEGER, - OUT path_seq INTEGER, - OUT end_vid BIGINT, - OUT node BIGINT, - OUT edge BIGINT, - OUT cost FLOAT, - OUT agg_cost FLOAT) - -RETURNS SETOF RECORD AS -$BODY$ - SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost - FROM _trsp( - _pgr_get_statement($1), - _pgr_get_statement($2), - ARRAY[$3]::BIGINT[], - $4::bigint[], - directed) AS a; -$BODY$ -LANGUAGE sql VOLATILE STRICT -COST 100 -ROWS 1000; - - --- MANY to ONE ---v2.6 -CREATE FUNCTION _pgr_trsp( - TEXT, -- edges_sql - TEXT, -- restrictions_sql - ANYARRAY, -- start_vids - BIGINT, -- end_vid - directed BOOLEAN DEFAULT true, - - OUT seq INTEGER, - OUT path_seq INTEGER, - OUT start_vid BIGINT, - OUT node BIGINT, - OUT edge BIGINT, - OUT cost FLOAT, - OUT agg_cost FLOAT) - -RETURNS SETOF RECORD AS -$BODY$ - SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost - FROM _trsp( - _pgr_get_statement($1), - _pgr_get_statement($2), - $3::bigint[], - ARRAY[$4]::BIGINT[], - $5) AS a; -$BODY$ -LANGUAGE sql VOLATILE STRICT -COST 100 -ROWS 1000; - - --- MANY to MANY ---v2.6 -CREATE FUNCTION _pgr_trsp( - TEXT, -- edges_sql - TEXT, -- restrictions_sql - ANYARRAY, -- start_vids - ANYARRAY, -- end_vids - directed BOOLEAN DEFAULT true, - - OUT seq INTEGER, - OUT path_seq INTEGER, - OUT start_vid BIGINT, - OUT end_vid BIGINT, - OUT node BIGINT, - OUT edge BIGINT, - OUT cost FLOAT, - OUT agg_cost FLOAT) - -RETURNS SETOF RECORD AS -$BODY$ - SELECT a.seq, a.path_seq, a.start_vid, a.end_vid, a.node, a.edge, a.cost, a.agg_cost - FROM _trsp( - _pgr_get_statement($1), - _pgr_get_statement($2), - $3::bigint[], - $4::bigint[], - $5) AS a; -$BODY$ -LANGUAGE sql VOLATILE STRICT -COST 100 -ROWS 1000; - - --- COMMENTS - -COMMENT ON FUNCTION _pgr_trsp(TEXT, TEXT, BIGINT, BIGINT, BOOLEAN) IS 'pgRouting internal function deprecated on v3.4.0'; -COMMENT ON FUNCTION _pgr_trsp(TEXT, TEXT, BIGINT, ANYARRAY, BOOLEAN) IS 'pgRouting internal function deprecated on v3.4.0'; -COMMENT ON FUNCTION _pgr_trsp(TEXT, TEXT, ANYARRAY, BIGINT, BOOLEAN) IS 'pgRouting internal function deprecated on v3.4.0'; -COMMENT ON FUNCTION _pgr_trsp(TEXT, TEXT, ANYARRAY, ANYARRAY, BOOLEAN) IS 'pgRouting internal function deprecated on v3.4.0'; - diff --git a/sql/trsp/trspVia.sql b/sql/trsp/trspVia.sql index 7f3eda4f38..4ff171d702 100644 --- a/sql/trsp/trspVia.sql +++ b/sql/trsp/trspVia.sql @@ -58,7 +58,6 @@ ROWS 1000; COMMENT ON FUNCTION pgr_trspVia(TEXT, TEXT, ANYARRAY, BOOLEAN, BOOLEAN, BOOLEAN) IS 'pgr_trspVia -- PROPOSED - Parameters: - Edges SQL with columns: id, source, target, cost [,reverse_cost] - Restrictions SQL with columns: cost, path diff --git a/sql/trsp/trspViaEdges_deprecated.sql b/sql/trsp/trspViaEdges_deprecated.sql deleted file mode 100644 index 3bb7028dbf..0000000000 --- a/sql/trsp/trspViaEdges_deprecated.sql +++ /dev/null @@ -1,178 +0,0 @@ -/*PGR-GNU***************************************************************** -File: trspViaEdges_deprecated.sql - -Copyright (c) 2015 pgRouting developers -Mail: project@pgrouting.org - ------- - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - ********************************************************************PGR-GNU*/ - - ---v3.0 -CREATE FUNCTION pgr_trspViaEdges( - text, -- SQL (required) - integer[], -- eids (required) - FLOAT[], -- pcts (required) - BOOLEAN, -- directed (required) - BOOLEAN, -- has_rcost (requierd) - - turn_restrict_sql text DEFAULT NULL::text, - - OUT seq INTEGER, - OUT id1 INTEGER, - OUT id2 INTEGER, - OUT id3 INTEGER, - OUT cost FLOAT -) -RETURNS SETOF RECORD AS -$body$ -/* - * pgr_trsp(sql text, eids integer[], pcts float8[], directed boolean, has_reverse_cost boolean, turn_restrict_sql text DEFAULT NULL::text) - * - * Compute TRSP with edge_ids and pposition along edge. We compute the path between eids[i], pcts[i] and eids[i+1], pcts[i+1] - * and chain the results together. - * - * NOTE: this is a prototype function, we can gain a lot of efficiencies by implementing this in C/C++ - * -*/ -declare - sql TEXT := $1; - eids INTEGER[] := $2; - pcts FLOAT[] := $3; - directed BOOLEAN := $4; - has_rcost BOOLEAN := $5; - - i integer; - rr RECORD; - lrr RECORD; - first boolean := true; - seq1 integer := 0; - seq2 integer :=0; - has_reverse BOOLEAN; - point_is_vertex BOOLEAN := false; - edges_sql TEXT; - f float; - -begin - RAISE WARNING 'pgr_trspViaEdges(text,integer[],float[],boolean,boolean,text) deprecated function on v3.4.0'; - SELECT 0::INTEGER AS seq, NULL::INTEGER AS id1, NULL::INTEGER AS id2, NULL::INTEGER AS id3, NULL::FLOAT AS cost INTO lrr; - has_reverse =_pgr_parameter_check('dijkstra', sql, false); - edges_sql := sql; - IF (has_reverse != has_rcost) THEN - IF (NOT has_rcost) THEN - -- user does not want to use reverse cost column - edges_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a'; - ELSE - raise EXCEPTION 'has_rcost set to true but reverse_cost not found'; - END IF; - END IF; - - FOREACH f IN ARRAY pcts LOOP - IF f in (0,1) THEN - point_is_vertex := true; - END IF; - END LOOP; - - IF (turn_restrict_sql IS NULL OR length(turn_restrict_sql) = 0) AND NOT point_is_vertex THEN - -- no restrictions then its a _pgr_withPointsVia - RETURN query SELECT a.seq::INTEGER, path_id::INTEGER AS id1, node::INTEGER AS id2, edge::INTEGER AS id3, a.cost - FROM _pgr_withPointsVia(edges_sql, eids, pcts, directed) a; - RETURN; - END IF; - - if array_length(eids, 1) != array_length(pcts, 1) then - raise exception 'The length of arrays eids and pcts must be the same!'; - end if; - - -- loop through each pair of vids and compute the path - for i in 1 .. array_length(eids, 1)-1 loop - seq2 := seq2 + 1; - for rr in select a.seq, seq2 as id1, a.id1 as id2, a.id2 as id3, a.cost - from pgr_trsp(edges_sql, - eids[i], pcts[i], - eids[i+1], pcts[i+1], - directed, - has_rcost, - turn_restrict_sql) as a loop - -- combine intermediate via costs when cost is split across - -- two parts of a segment because it stops it and - -- restarts the next leg also on it - -- we might not want to do this so we can know where the via points are in the path result - -- but this needs more thought - -- - -- there are multiple condition we have to deal with - -- between the end of one leg and start of the next - -- 1. same vertex_id. edge_id=-1; drop record with edge_id=-1 - -- means: path ends on vertex - -- NOTICE: rr: (19,1,44570022,-1,0) - -- NOTICE: rr: (0,2,44570022,1768045,2.89691196717448) - -- 2. vertex_id=-1; sum cost components - -- means: path end/starts with the segment - -- NOTICE: rr: (11,2,44569628,1775909,9.32885885148532) - -- NOTICE: rr: (0,3,-1,1775909,0.771386350984395) - - --raise notice 'rr: %', rr; - if first then - lrr := rr; - first := false; - else - if lrr.id3 = -1 then - lrr := rr; - elsif lrr.id3 = rr.id3 then - lrr.cost := lrr.cost + rr.cost; - if rr.id2 = -1 then - rr.id2 := lrr.id2; - end if; - else - seq1 := seq1 + 1; - lrr.seq := seq1; - - seq := lrr.seq; - id1 := lrr.id1; - id2 := lrr.id2; - id3 := lrr.id3; - cost := lrr.cost; - return next; - lrr := rr; - end if; - end if; - end loop; - end loop; - - seq1 := seq1 + 1; - lrr.seq := seq1; - - seq := lrr.seq; - id1 := lrr.id1; - id2 := lrr.id2; - id3 := lrr.id3; - cost := lrr.cost; - return next; - return; -end; -$body$ -language plpgsql stable -cost 100 -rows 1000; - - --- COMMENTS - -COMMENT ON FUNCTION pgr_trspViaEdges(TEXT, INTEGER[], FLOAT[], BOOLEAN, BOOLEAN, TEXT) -IS 'pgr_trspViaEdges deprecated function on v3.4.0 -- Documentation: ${PROJECT_DOC_LINK}/pgr_trspVia_withPoints.html'; diff --git a/sql/trsp/trspViaVertices_deprecated.sql b/sql/trsp/trspViaVertices_deprecated.sql deleted file mode 100644 index e4f712e972..0000000000 --- a/sql/trsp/trspViaVertices_deprecated.sql +++ /dev/null @@ -1,99 +0,0 @@ -/*PGR-GNU***************************************************************** -File: trspViaVertices_deprecated.sql - -Copyright (c) 2015 pgRouting developers -Mail: project@pgrouting.org - ------- - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - ********************************************************************PGR-GNU*/ - -/* pgr_trspVia Vertices - - if size of restrictions_sql is Zero or no restrictions_sql are given - then call to pgr_dijkstra is made - - - because it reads the data wrong, when there is a reverse_cost column: - - put all data costs in one cost column and - - a call is made to original code in _pgr_trspViaVertices without only the positive values -*/ ---v3.0 -CREATE FUNCTION pgr_trspViaVertices( - TEXT, -- edges SQL (required) - ANYARRAY, -- via vids (required) - BOOLEAN, -- directed (required) - BOOLEAN, -- has_rcost (required) - - restrictions_sql TEXT DEFAULT NULL, - - OUT seq INTEGER, - OUT id1 INTEGER, - OUT id2 INTEGER, - OUT id3 INTEGER, - OUT cost FLOAT -) -RETURNS SETOF RECORD AS - -$BODY$ -DECLARE - edges_sql TEXT := $1; - via_vids INTEGER[] := $2; - directed BOOLEAN := $3; - has_rcost BOOLEAN := $4; - -has_reverse BOOLEAN; -new_sql TEXT; -BEGIN - RAISE WARNING 'pgr_trspViaVertices(text,anyarray,boolean,boolean,text) deprecated function on v3.4.0'; - - has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false); - - new_sql := edges_sql; - IF (has_reverse != has_rcost) THEN -- user contradiction - IF (has_reverse) THEN -- it has reverse_cost but user don't want it. - new_sql := - 'WITH old_sql AS (' || edges_sql || ')' || - ' SELECT id, source, target, cost FROM old_sql'; - ELSE -- it does not have reverse_cost but user wants it - RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column' - USING ERRCODE := 'XX000'; - END IF; - END IF; - - IF (restrictions_sql IS NULL OR length(restrictions_sql) = 0) THEN - RETURN query SELECT (row_number() over())::INTEGER, path_id:: INTEGER, node::INTEGER, - (CASE WHEN edge = -2 THEN -1 ELSE edge END)::INTEGER, a.cost - FROM pgr_dijkstraVia(new_sql, via_vids, directed, strict:=true) AS a WHERE edge != -1; - RETURN; - END IF; - - - -- make the call without contradiction from part of the user - RETURN query SELECT a.seq, a.id1, a.id2, a.id3, a.cost FROM _pgr_trspViaVertices(new_sql, via_vids::INTEGER[], directed, has_rcost, restrictions_sql) AS a; - IF NOT FOUND THEN - RAISE EXCEPTION 'Error computing path: Path Not Found'; - END IF; -END -$BODY$ -LANGUAGE plpgsql VOLATILE -COST 100 -ROWS 1000; - --- COMMENTS - -COMMENT ON FUNCTION pgr_trspViaVertices(TEXT, ANYARRAY, BOOLEAN, BOOLEAN, TEXT) -IS 'pgr_trspViaVertices deprecated function on v3.4.0 -- Documentation: ${PROJECT_DOC_LINK}/pgr_trspVia.html'; diff --git a/sql/trsp/trspVia_withPoints.sql b/sql/trsp/trspVia_withPoints.sql index d21cc437b8..adc6b26aca 100644 --- a/sql/trsp/trspVia_withPoints.sql +++ b/sql/trsp/trspVia_withPoints.sql @@ -66,7 +66,6 @@ ROWS 1000; COMMENT ON FUNCTION pgr_trspVia_withPoints(TEXT, TEXT, TEXT, ANYARRAY, BOOLEAN, BOOLEAN, BOOLEAN, CHAR, BOOLEAN) IS 'pgr_trspVia_withPoints -- PROPOSED - Parameters: - Edges SQL with columns: id, source, target, cost [,reverse_cost] - Restrictions SQL with columns: cost, path diff --git a/sql/trsp/trsp_deprecated.sql b/sql/trsp/trsp_deprecated.sql deleted file mode 100644 index 011b937334..0000000000 --- a/sql/trsp/trsp_deprecated.sql +++ /dev/null @@ -1,271 +0,0 @@ -/*PGR-GNU***************************************************************** -File: trsp_deprecated.sql - -Copyright (c) 2015 pgRouting developers -Mail: project@pgrouting.org - ------- - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - ********************************************************************PGR-GNU*/ -/* pgr_trsp VERTEX - - - if size of restrictions_sql is Zero or no restrictions_sql are given - then call to pgr_dijkstra is made - - - because it reads the data wrong, when there is a reverse_cost column: - - put all data costs in one cost column and - - a call is made to trsp without only the positive values -*/ ---v3.0 -CREATE FUNCTION pgr_trsp( - TEXT, -- edges SQL (required) - INTEGER, -- from_vid (required) - INTEGER, -- to_vid (required) - BOOLEAN, -- directed (required) - BOOLEAN, -- has_rcost (required) - - restrictions_sql TEXT DEFAULT NULL, - - OUT seq INTEGER, - OUT id1 INTEGER, - OUT id2 INTEGER, - OUT cost FLOAT -) -RETURNS SETOF record AS -$BODY$ -DECLARE - edges_sql TEXT := $1; - start_vid INTEGER := $2; - end_vid INTEGER := $3; - directed BOOLEAN := $4; - has_rcost BOOLEAN := $5; - -has_reverse BOOLEAN; -new_sql TEXT; -restrictions_query TEXT; -trsp_sql TEXT; -BEGIN - RAISE WARNING 'pgr_trsp(text,integer,integer,boolean,boolean) deprecated signature on v3.4.0'; - has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false); - - new_sql := edges_sql; - IF (has_reverse != has_rcost) THEN -- user contradiction - IF (has_reverse) THEN -- it has reverse_cost but user don't want it. - -- to be on the safe side because it reads the data wrong, sending only postitive values - new_sql := - 'WITH old_sql AS (' || edges_sql || ')' || - ' SELECT id, source, target, cost FROM old_sql'; - ELSE -- it does not have reverse_cost but user wants it - RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column' - USING ERRCODE := 'XX000'; - END IF; - END IF; - - IF (restrictions_sql IS NULL OR length(restrictions_sql) = 0) THEN - -- no restrictions then its a dijkstra - RETURN query SELECT a.seq - 1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, a.cost - FROM pgr_dijkstra(new_sql, start_vid, end_vid, directed) a; - RETURN; - END IF; - - - restrictions_query = $$ - WITH old_restrictions AS ( $$ || - $6 || $$ - ) - SELECT ROW_NUMBER() OVER() AS id, - _pgr_array_reverse(array_prepend(target_id, string_to_array(via_path::text, ',')::INTEGER[])) AS path, - to_cost AS cost - FROM old_restrictions; - $$; - - - - RETURN query - SELECT (a.seq - 1)::INTEGER, a.node::INTEGER, a.edge::INTEGER, a.cost - FROM _pgr_trsp(new_sql, restrictions_query, start_vid, end_vid, directed) AS a; - IF NOT FOUND THEN - RAISE EXCEPTION 'Error computing path: Path Not Found'; - END IF; - -END -$BODY$ -LANGUAGE plpgsql VOLATILE -COST 100 -ROWS 1000; - - -/* - Wrapper change on v2.6 - - without restrictions - - call pgr_dijkstra when both end points have a fraction IN (0,1) - - call pgr_withPoints when at least one fraction NOT IN (0,1) - - - with restrictions - - calls original trsp code -*/ ---v3.0 -CREATE FUNCTION pgr_trsp( - TEXT, -- sql (required) - INTEGER, -- source_eid (required) - FLOAT, -- source_pos (required) - INTEGER, -- target_eid (required) - FLOAT, -- target_pos (required) - BOOLEAN, -- directed (required) - BOOLEAN, -- has_reverse_cost (required) - - turn_restrict_sql text DEFAULT null, - - OUT seq INTEGER, - OUT id1 INTEGER, - OUT id2 INTEGER, - OUT cost FLOAT -) -RETURNS SETOF record AS -$BODY$ -DECLARE - sql TEXT := $1; - source_eid INTEGER := $2; - source_pos FLOAT := $3; - target_eid INTEGER := $4; - target_pos FLOAT := $5; - directed BOOLEAN := $6; - has_reverse_cost BOOLEAN := $7; - -has_reverse BOOLEAN; -new_sql TEXT; -trsp_sql TEXT; -source_sql TEXT; -target_sql TEXT; -union_sql TEXT; -union_sql1 TEXT; -union_sql2 TEXT; -final_sql TEXT; - -BEGIN - IF $2 IS NULL OR $3 IS NULL OR $4 IS NULL OR $5 IS NULL OR $6 IS NULL THEN - RETURN; - END IF; - RAISE WARNING 'pgr_trsp(text,integer,float,integer,float,boolean,boolean) deprecated signature on v3.4.0'; - has_reverse =_pgr_parameter_check('dijkstra', sql, false); - - new_sql := sql; - IF (has_reverse != has_reverse_cost) THEN -- user contradiction - IF (has_reverse) THEN - -- it has reverse_cost but user don't want it. - -- to be on the safe side because it reads the data wrong, sending only postitive values - new_sql := - 'WITH old_sql AS (' || sql || ')' || - ' SELECT id, source, target, cost FROM old_sql'; - ELSE -- it does not have reverse_cost but user wants it - RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column' - USING ERRCODE := 'XX000'; - END IF; - END IF; - - IF (turn_restrict_sql IS NULL OR length(turn_restrict_sql) = 0) THEN - -- no restrictions then its a withPoints or dijkstra - IF source_pos = 0 THEN - source_sql = '(SELECT source FROM (' || sql || ') b WHERE id = ' || source_eid || ')'; - ELSE IF source_pos = 1 THEN - source_sql = '(SELECT target FROM (' || sql || ') b WHERE id = ' || source_eid || ')'; - ELSE - source_sql = '-1'; - union_sql1 = '(SELECT 1 as pid, ' || source_eid || ' as edge_id, ' || source_pos || '::float8 as fraction)'; - END IF; - END IF; - -- raise notice 'source_sql %', source_sql; - -- raise notice 'union_sql1 %', union_sql1; - - - IF target_pos = 0 THEN - target_sql = '(SELECT source FROM (' || sql || ') c WHERE id = ' || target_eid || ')'; - ELSE IF target_pos = 1 THEN - target_sql = '(SELECT target FROM (' || sql || ') c WHERE id = ' || target_eid || ')'; - ELSE - target_sql = '-2'; - union_sql2 = ' (SELECT 2 as pid, ' || target_eid || ' as edge_id, ' || target_pos || '::float8 as fraction)'; - END IF; - END IF; - - -- raise notice 'target_sql %', target_sql; - -- raise notice 'union_sql2 %', union_sql2; - - IF union_sql1 IS NOT NULL AND union_sql2 IS NOT NULL THEN - union_sql = union_sql1 || ' UNION ' || union_sql2; - ELSE IF union_sql1 IS NOT NULL AND union_sql2 IS NULL THEN - union_sql = union_sql1; - ELSE IF union_sql1 IS NULL AND union_sql2 IS NOT NULL THEN - union_sql = union_sql2; - END IF; - END IF; - END IF; - - IF union_sql IS NULL THEN - -- no points then its a dijkstra - final_sql = 'WITH final_sql AS ( - SELECT a.seq-1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost FROM pgr_dijkstra($$' || new_sql || '$$ - ,' || source_sql || ' - ,' || target_sql || ' - , directed := ' || directed || ' - ) a ) - SELECT seq, id1, id2, cost FROM final_sql ORDER BY seq'; - ELSE - -- points then its a withPoints - final_sql = 'WITH final_sql AS ( - SELECT a.seq-1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost FROM pgr_withpoints($$' || new_sql || '$$ - , $$' || union_sql || '$$ - ,' || source_sql || ' - ,' || target_sql || ' - , directed := ' || directed || ' - ) a ) - SELECT seq, CASE WHEN seq = 0 AND ' || source_pos || '=0 THEN id1 - WHEN seq = 0 AND ' || source_pos || '!=0 THEN -1 - WHEN id2 = -1 AND ' || target_pos || '=0 THEN id1 - WHEN id2 = -1 AND ' || target_pos || '!=0 THEN id1 - ELSE id1 END AS id1, id2, cost FROM final_sql ORDER BY seq'; - END IF; - - - -- raise notice 'final_sql %', final_sql; - RETURN QUERY EXECUTE final_sql; - RETURN; - - END IF; - - -- with restrictions calls the original code - RETURN query - SELECT a.seq, a.id1, a.id2, a.cost - FROM _pgr_trsp(new_sql, source_eid, source_pos, target_eid, target_pos, directed, has_reverse_cost, turn_restrict_sql) AS a; - RETURN; - -END -$BODY$ -LANGUAGE plpgsql VOLATILE -COST 100 -ROWS 1000; - --- COMMENTS - -COMMENT ON FUNCTION pgr_trsp(TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN, TEXT) -IS 'pgr_trsp deprecated signature on v3.4.0 -- Documentation: ${PROJECT_DOC_LINK}/pgr_trsp.html'; - - -COMMENT ON FUNCTION pgr_trsp(TEXT, INTEGER, FLOAT, INTEGER, FLOAT, BOOLEAN, BOOLEAN, TEXT) -IS 'pgr_trsp deprecated signature on v3.4.0 -- Documentation: ${PROJECT_DOC_LINK}/pgr_trsp_withPoints.html'; diff --git a/sql/trsp/trsp_withPoints.sql b/sql/trsp/trsp_withPoints.sql index 4562100675..ab45ba4bc7 100644 --- a/sql/trsp/trsp_withPoints.sql +++ b/sql/trsp/trsp_withPoints.sql @@ -199,7 +199,6 @@ ROWS 1000; -- COMMENTS COMMENT ON FUNCTION pgr_trsp_withPoints(TEXT, TEXT, TEXT, BIGINT, BIGINT, BOOLEAN, CHAR, BOOLEAN) IS 'pgr_trsp_withPoints (One to One) -- PROPOSED - Parameters: - Edges SQL with columns: id, source, target, cost [,reverse_cost] - Restrictions SQL with columns: id, cost, path @@ -217,7 +216,6 @@ IS 'pgr_trsp_withPoints (One to One) COMMENT ON FUNCTION pgr_trsp_withPoints(TEXT, TEXT, TEXT, BIGINT, ANYARRAY, BOOLEAN, CHAR, BOOLEAN) IS 'pgr_trsp_withPoints(One to Many) -- PROPOSED - Parameters: - Edges SQL with columns: id, source, target, cost [,reverse_cost] - Restrictions SQL with columns: id, cost, path @@ -234,7 +232,6 @@ IS 'pgr_trsp_withPoints(One to Many) COMMENT ON FUNCTION pgr_trsp_withPoints(TEXT, TEXT, TEXT, ANYARRAY, BIGINT, BOOLEAN, CHAR, BOOLEAN) IS 'pgr_trsp_withPoints(Many to One) -- PROPOSED - Parameters: - Edges SQL with columns: id, source, target, cost [,reverse_cost] - Restrictions SQL with columns: id, cost, path @@ -251,7 +248,6 @@ IS 'pgr_trsp_withPoints(Many to One) COMMENT ON FUNCTION pgr_trsp_withPoints(TEXT, TEXT, TEXT, ANYARRAY, ANYARRAY, BOOLEAN, CHAR, BOOLEAN) IS 'pgr_trsp_withPoints(Many to Many) -- PROPOSED - Parameters: - Edges SQL with columns: id, source, target, cost [,reverse_cost] - Restrictions SQL with columns: id, cost, path diff --git a/sql/utilities/findCloseEdges.sql b/sql/utilities/findCloseEdges.sql index 5b207f9a52..abd4a48934 100644 --- a/sql/utilities/findCloseEdges.sql +++ b/sql/utilities/findCloseEdges.sql @@ -1,7 +1,7 @@ /*PGR-GNU***************************************************************** -Copyright (c) 2022 Celia Virginia Vergara Castillo -Mail: vicky at georepublic dot de +Copyright (c) 2025 Celia Virginia Vergara Castillo +Mail: vicky at erosion.dev ------ @@ -21,14 +21,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ********************************************************************PGR-GNU*/ ---v3.4 +--v3.8 CREATE FUNCTION pgr_findCloseEdges( TEXT, - geometry, + geometry[], FLOAT, cap INTEGER DEFAULT 1, - partial BOOLEAN DEFAULT true, - dryrun BOOLEAN DEFAULT false, + dryrun BOOLEAN default false, OUT edge_id BIGINT, OUT fraction FLOAT, @@ -39,131 +38,36 @@ CREATE FUNCTION pgr_findCloseEdges( returns SETOF RECORD AS $BODY$ DECLARE + geom_arr geometry[] := $2; + tolerance FLOAT := $3; + cap INTEGER := $4; + dryrun BOOLEAN := $5; edges_SQL TEXT; has_id BOOLEAN; has_geom BOOLEAN; ret_query TEXT; ret_query_end TEXT; -BEGIN - - IF ($3 < 0) THEN - RAISE EXCEPTION 'Invalid value for tolerance'; - END IF; - - IF (cap <= 0) THEN - RAISE EXCEPTION 'Invalid value for cap'; - END IF; - edges_sql := _pgr_checkQuery($1); - has_id := _pgr_checkColumn(edges_sql, 'id', 'ANY-INTEGER', false, dryrun => dryrun); - has_geom := _pgr_checkColumn(edges_sql, 'geom', 'geometry', false, dryrun => dryrun); - - - ret_query = format( - $q$ - WITH - edges_sql AS (%1$s), - point_sql AS (SELECT %2$L::geometry AS point) - - SELECT - id::BIGINT AS edge_id, - ST_LineLocatePoint(geom, point) AS fraction, - CASE WHEN ST_Intersects(ST_Buffer(geom, %3$s, 'side=right endcap=flat'), point) - THEN 'r' - ELSE 'l' END::CHAR AS side, - $q$, edges_sql, $2, $3); - - ret_query_end = format( - $q$ - FROM edges_sql, point_sql - WHERE ST_DWithin(geom, point, %1$s) - ORDER BY geom <-> point LIMIT %2$s - $q$, $3, cap); - - IF partial AND cap = 1 AND NOT dryrun THEN - /* one answer and partialimal columns */ - - ret_query = - ret_query - || $q$ - NULL::FLOAT, - NULL::geometry, - NULL::geometry - $q$ - || ret_query_end; + sqlhint TEXT; - ELSIF partial AND NOT dryrun THEN - /* more than one answer and partialimal columns - * needs distance info for further sorting by use - */ - - ret_query = - ret_query - || $q$ - geom <-> point AS distance, - NULL::geometry, - NULL::geometry - $q$ - || ret_query_end; - - ELSE - /* More than one answer and all columns, or dryrun*/ - - ret_query = - ret_query - || $q$ - geom <-> point AS distance, - ST_ClosestPoint(geom, point) AS new_point, - ST_MakeLine(point, ST_ClosestPoint(geom, point)) AS new_line - $q$ - || ret_query_end; +BEGIN + IF (tolerance < 0) THEN + RAISE EXCEPTION 'Invalid value for "tolerance"'; END IF; - IF dryrun THEN - RAISE NOTICE '%', ret_query; - RETURN; - END IF; - - RETURN query EXECUTE ret_query; - -END; -$BODY$ -LANGUAGE PLPGSQL VOLATILE STRICT -COST 5; - ---v3.4 -CREATE FUNCTION pgr_findCloseEdges( - TEXT, - geometry[], - FLOAT, - cap INTEGER DEFAULT 1, - partial BOOLEAN DEFAULT true, - dryrun BOOLEAN DEFAULT false, - - OUT edge_id BIGINT, - OUT fraction FLOAT, - OUT side CHAR, - OUT distance FLOAT, - OUT geom geometry, - OUT edge geometry) -returns SETOF RECORD AS -$BODY$ -DECLARE - edges_SQL TEXT; - has_id BOOLEAN; - has_geom BOOLEAN; - ret_query TEXT; - ret_query_end TEXT; -BEGIN - - IF ($3 < 0) THEN - RAISE EXCEPTION 'Invalid value for tolerance'; + IF (cap < 0) THEN + RAISE EXCEPTION 'Invalid value for "cap"'; END IF; - edges_sql := _pgr_checkQuery($1); - has_id := _pgr_checkColumn(edges_sql, 'id', 'ANY-INTEGER', false, dryrun => dryrun); - has_geom := _pgr_checkColumn(edges_sql, 'geom', 'geometry', false, dryrun => dryrun); + BEGIN + edges_sql := _pgr_checkQuery($1); + has_id := _pgr_checkColumn(edges_sql, 'id', 'ANY-INTEGER', false, dryrun => dryrun); + has_geom := _pgr_checkColumn(edges_sql, 'geom', 'geometry', false, dryrun => dryrun); + EXCEPTION WHEN OTHERS THEN + GET STACKED DIAGNOSTICS sqlhint = PG_EXCEPTION_HINT; + RAISE EXCEPTION '%', SQLERRM USING HINT = sqlhint, ERRCODE = SQLSTATE; + END; ret_query = format( $q$ @@ -179,7 +83,7 @@ results AS ( ELSE 'l' END::CHAR AS side, geom <-> point AS distance, point, - $q$, edges_sql, $2, $3); + $q$, edges_sql, geom_arr, tolerance); ret_query_end = format( $q$ @@ -192,22 +96,12 @@ prepare_cap AS ( SELECT edge_id, fraction, side, distance, point, new_line FROM prepare_cap WHERE rn <= %2$s - $q$, $3, cap); - - IF partial AND NOT dryrun THEN - - ret_query = ret_query - || $q$NULL::geometry AS new_line$q$ - || ret_query_end; - - ELSE + $q$, tolerance, cap); ret_query = ret_query || $q$ST_MakeLine(point, ST_ClosestPoint(geom, point)) AS new_line $q$ || ret_query_end; - END IF; - IF dryrun THEN RAISE NOTICE '%', ret_query; RETURN; @@ -220,31 +114,98 @@ $BODY$ LANGUAGE PLPGSQL VOLATILE STRICT COST 5; --- COMMENTS -COMMENT ON FUNCTION pgr_findCloseEdges(TEXT, GEOMETRY, FLOAT, INTEGER, BOOLEAN, BOOLEAN) -IS 'pgr_findCloseEdges(One Point) +COMMENT ON FUNCTION pgr_findCloseEdges(TEXT, GEOMETRY[], FLOAT, INTEGER, BOOLEAN) +IS 'pgr_findCloseEdges(Many Points) - Parameters: - Edges SQL with columns: id, geom - - POINT geometry + - Array of POINT geometries - Maximum separation between geometries - Optional Parameters - cap => 1: at most one answer - - partial => true: do minimal calculations - dryrun => false: do not output code - Documentation: - ${PROJECT_DOC_LINK}/pgr_findCloseEdges.html '; -COMMENT ON FUNCTION pgr_findCloseEdges(TEXT, GEOMETRY, FLOAT, INTEGER, BOOLEAN, BOOLEAN) -IS 'pgr_findCloseEdges(Many Points) +--v3.8 +CREATE FUNCTION pgr_findCloseEdges( + TEXT, + geometry, + FLOAT, + cap INTEGER DEFAULT 1, + dryrun BOOLEAN default false, + OUT edge_id BIGINT, + OUT fraction FLOAT, + OUT side CHAR, + OUT distance FLOAT, + OUT geom geometry, + OUT edge geometry) +returns SETOF RECORD AS +$BODY$ + SELECT edge_id, fraction, side, distance, geom, edge + FROM pgr_findCloseEdges($1, ARRAY[$2]::GEOMETRY[], $3, cap, dryrun); +$BODY$ +LANGUAGE SQL VOLATILE STRICT COST 5; + +COMMENT ON FUNCTION pgr_findCloseEdges(TEXT, GEOMETRY, FLOAT, INTEGER, BOOLEAN) +IS 'pgr_findCloseEdges(One Point) - Parameters: - Edges SQL with columns: id, geom - - Array of POINT geometries + - POINT geometry - Maximum separation between geometries - Optional Parameters - cap => 1: at most one answer - - partial => true: do minimal calculations - dryrun => false: do not output code - Documentation: - ${PROJECT_DOC_LINK}/pgr_findCloseEdges.html '; + +--v3.4 +CREATE FUNCTION pgr_findCloseEdges( + TEXT, + geometry, + FLOAT, + cap INTEGER, + partial BOOLEAN, + dryrun BOOLEAN, + + OUT edge_id BIGINT, + OUT fraction FLOAT, + OUT side CHAR, + OUT distance FLOAT, + OUT geom geometry, + OUT edge geometry) +returns SETOF RECORD AS +$BODY$ + SELECT edge_id, fraction, side, distance, geom, edge + FROM pgr_findCloseEdges($1, ARRAY[$2]::GEOMETRY[], $3, cap, dryrun); +$BODY$ +LANGUAGE SQL VOLATILE STRICT COST 5; + +COMMENT ON FUNCTION pgr_findCloseEdges(TEXT, GEOMETRY, FLOAT, INTEGER, BOOLEAN, BOOLEAN) +IS 'pgr_findCloseEdges deprecated signature on v3.8.0'; + +--v3.4 +CREATE FUNCTION pgr_findCloseEdges( + TEXT, + geometry[], + FLOAT, + cap INTEGER, + partial BOOLEAN, + dryrun BOOLEAN, + + OUT edge_id BIGINT, + OUT fraction FLOAT, + OUT side CHAR, + OUT distance FLOAT, + OUT geom geometry, + OUT edge geometry) +returns SETOF RECORD AS +$BODY$ + SELECT edge_id, fraction, side, distance, geom, edge + FROM pgr_findCloseEdges($1, $2, $3, cap, dryrun); +$BODY$ +LANGUAGE SQL VOLATILE STRICT COST 5; + +COMMENT ON FUNCTION pgr_findCloseEdges(TEXT, GEOMETRY[], FLOAT, INTEGER, BOOLEAN, BOOLEAN) +IS 'pgr_findCloseEdges deprecated signature on v3.8.0'; diff --git a/sql/withPoints/withPoints.sql b/sql/withPoints/withPoints.sql index 63baa2ad75..6c80202dc7 100644 --- a/sql/withPoints/withPoints.sql +++ b/sql/withPoints/withPoints.sql @@ -185,7 +185,6 @@ ROWS 1000; COMMENT ON FUNCTION pgr_withPoints(TEXT, TEXT, BIGINT, BIGINT, BOOLEAN, CHAR, BOOLEAN) IS 'pgr_withPoints (One to One) -- PROPOSED - Parameters: - Edges SQL with columns: id, source, target, cost [,reverse_cost] - Points SQL with columns: [pid], edge_id, fraction[,side] @@ -202,7 +201,6 @@ IS 'pgr_withPoints (One to One) COMMENT ON FUNCTION pgr_withPoints(TEXT, TEXT, BIGINT, ANYARRAY, BOOLEAN, CHAR, BOOLEAN) IS 'pgr_withPoints (One to Many) -- PROPOSED - Parameters: - Edges SQL with columns: id, source, target, cost [,reverse_cost] - Points SQL with columns: [pid], edge_id, fraction[,side] @@ -219,7 +217,6 @@ IS 'pgr_withPoints (One to Many) COMMENT ON FUNCTION pgr_withPoints(TEXT, TEXT, ANYARRAY, BIGINT, BOOLEAN, CHAR, BOOLEAN) IS 'pgr_withPoints (Many to One) -- PROPOSED - Parameters: - Edges SQL with columns: id, source, target, cost [,reverse_cost] - Points SQL with columns: [pid], edge_id, fraction[,side] @@ -236,7 +233,6 @@ IS 'pgr_withPoints (Many to One) COMMENT ON FUNCTION pgr_withPoints(TEXT, TEXT, ANYARRAY, ANYARRAY, BOOLEAN, CHAR, BOOLEAN) IS 'pgr_withPoints (Many to Many) -- PROPOSED - Parameters: - Edges SQL with columns: id, source, target, cost [,reverse_cost] - Points SQL with columns: [pid], edge_id, fraction[,side] diff --git a/sql/withPoints/withPointsCost.sql b/sql/withPoints/withPointsCost.sql index cb7c0828df..f5264b3a8e 100644 --- a/sql/withPoints/withPointsCost.sql +++ b/sql/withPoints/withPointsCost.sql @@ -157,7 +157,6 @@ ROWS 1000; COMMENT ON FUNCTION pgr_withPointsCost(TEXT, TEXT, BIGINT, BIGINT, BOOLEAN, CHAR) IS 'pgr_withPointsCost (One to One) -- PROPOSED - Parameters: - Edges SQL with columns: id, source, target, cost [,reverse_cost] - Points SQL with columns: [pid], edge_id, fraction[,side] @@ -173,7 +172,6 @@ IS 'pgr_withPointsCost (One to One) COMMENT ON FUNCTION pgr_withPointsCost(TEXT, TEXT, BIGINT, ANYARRAY, BOOLEAN, CHAR) IS 'pgr_withPointsCost (One to Many) -- PROPOSED - Parameters: - Edges SQL with columns: id, source, target, cost [,reverse_cost] - Points SQL with columns: [pid], edge_id, fraction[,side] @@ -189,7 +187,6 @@ IS 'pgr_withPointsCost (One to Many) COMMENT ON FUNCTION pgr_withPointsCost(TEXT, TEXT, ANYARRAY, BIGINT, BOOLEAN, CHAR) IS 'pgr_withPointsCost (Many to One) -- PROPOSED - Parameters: - Edges SQL with columns: id, source, target, cost [,reverse_cost] - Points SQL with columns: [pid], edge_id, fraction[,side] diff --git a/sql/withPoints/withPointsCostMatrix.sql b/sql/withPoints/withPointsCostMatrix.sql index c8b52fec5e..08df1432a2 100644 --- a/sql/withPoints/withPointsCostMatrix.sql +++ b/sql/withPoints/withPointsCostMatrix.sql @@ -27,17 +27,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ********************************************************************PGR-GNU*/ ---------------------- ---------------------- --- costMatrix ---------------------- ---------------------- - --------------------------- -- pgr_withPointsCostMatrix --------------------------- - --v2.6 CREATE FUNCTION pgr_withPointsCostMatrix( TEXT, -- edges_sql (required) @@ -63,7 +56,6 @@ ROWS 1000; COMMENT ON FUNCTION pgr_withPointsCostMatrix(TEXT, TEXT, ANYARRAY, BOOLEAN, CHAR) IS'pgr_withPointsCostMatrix -- PROPOSED - Parameters: - Edges SQL with columns: id, source, target, cost [,reverse_cost] - Points SQL with columns: [pid], edge_id, fraction[,side] diff --git a/sql/withPoints/withPointsVia.sql b/sql/withPoints/withPointsVia.sql index 87a054b647..4ecd73f181 100644 --- a/sql/withPoints/withPointsVia.sql +++ b/sql/withPoints/withPointsVia.sql @@ -64,7 +64,6 @@ ROWS 1000; COMMENT ON FUNCTION pgr_withPointsVia(TEXT, TEXT, ANYARRAY, BOOLEAN, BOOLEAN, BOOLEAN, CHAR, BOOLEAN) IS 'pgr_withPointsVia -- PROPOSED - Parameters: - Edges SQL with columns: id, source, target, cost [,reverse_cost] - Points SQL with columns: [pid], edge_id, fraction [,side] @@ -78,150 +77,3 @@ IS 'pgr_withPointsVia - Documentation: - ${PROJECT_DOC_LINK}/pgr_withPointsVia.html '; - ---v2.6 -CREATE FUNCTION _pgr_withPointsVia( - sql TEXT, - via_edges BIGINT[], - fraction FLOAT[], - directed BOOLEAN DEFAULT TRUE, - - OUT seq INTEGER, - OUT path_id INTEGER, - OUT path_seq INTEGER, - OUT start_vid BIGINT, - OUT end_vid BIGINT, - OUT node BIGINT, - OUT edge BIGINT, - OUT cost FLOAT, - OUT agg_cost FLOAT, - OUT route_agg_cost FLOAT) - - RETURNS SETOF RECORD AS - $BODY$ - DECLARE - has_rcost boolean; - sql_new_vertices text := ' '; - sql_on_vertex text; - v_union text := ' '; - dummyrec record; - rec1 record; - via_vertices int[]; - sql_safe text; - new_edges text; - BEGIN - BEGIN - sql_safe = 'SELECT id, source, target, cost, reverse_cost FROM ('|| sql || ') AS __a'; - - EXECUTE 'select reverse_cost, pg_typeof(reverse_cost)::text as rev_type from ('||sql_safe||' ) AS __b__ limit 1 ' INTO rec1; - has_rcost := true; - EXCEPTION - WHEN OTHERS THEN - has_rcost = false; - END; - - - IF array_length(via_edges, 1) != array_length(fraction, 1) then - RAISE EXCEPTION 'The length of via_edges is different of length of via_edges'; - END IF; - - FOR i IN 1 .. array_length(via_edges, 1) - LOOP - IF fraction[i] = 0 THEN - sql_on_vertex := 'SELECT source FROM ('|| sql || ') __a where id = ' || via_edges[i]; - EXECUTE sql_on_vertex into dummyrec; - via_vertices[i] = dummyrec.source; - ELSE IF fraction[i] = 1 THEN - sql_on_vertex := 'SELECT target FROM ('|| sql || ') __a where id = ' || via_edges[i]; - EXECUTE sql_on_vertex into dummyrec; - via_vertices[i] = dummyrec.target; - ELSE - via_vertices[i] = -i; - IF has_rcost THEN - sql_new_vertices = sql_new_vertices || v_union || - '(SELECT id, source, ' || -i || ' AS target, cost * ' || fraction[i] || ' AS cost, - reverse_cost * (1 - ' || fraction[i] || ') AS reverse_cost - FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||') - UNION - (SELECT id, ' || -i || ' AS source, target, cost * (1 -' || fraction[i] || ') AS cost, - reverse_cost * ' || fraction[i] || ' AS reverse_cost - FROM (SELECT * FROM (' || sql || ') __b' || i || ' where id = ' || via_edges[i] || ') __a' || i ||')'; - v_union = ' UNION '; - ELSE - sql_new_vertices = sql_new_vertices || v_union || - '(SELECT id, source, ' || -i || ' AS target, cost * ' || fraction[i] || ' AS cost - FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||') - UNION - (SELECT id, ' || -i || ' AS source, target, cost * (1 -' || fraction[i] || ') AS cost - FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')'; - v_union = ' UNION '; - END IF; - END IF; - END IF; - END LOOP; - - IF sql_new_vertices = ' ' THEN - new_edges := sql; - ELSE - IF has_rcost THEN - new_edges:= 'WITH - orig AS ( ' || sql || '), - original AS (SELECT id, source, target, cost, reverse_cost FROM orig), - the_union AS ( ' || sql_new_vertices || '), - first_part AS ( SELECT * FROM (SELECT id, target AS source, lead(target) OVER w AS target, - lead(cost) OVER w - cost AS cost, - lead(cost) OVER w - cost AS reverse_cost - FROM the_union WHERE source > 0 AND cost > 0 - WINDOW w AS (PARTITION BY id ORDER BY cost ASC) ) as n2 - WHERE target IS NOT NULL), - second_part AS ( SELECT * FROM (SELECT id, lead(source) OVER w AS source, source as target, - reverse_cost - lead(reverse_cost) OVER w AS cost, - reverse_cost - lead(reverse_cost) OVER w AS reverse_cost - FROM the_union WHERE target > 0 and reverse_cost > 0 - WINDOW w AS (PARTITION BY id ORDER BY reverse_cost ASC) ) as n2 - WHERE source IS NOT NULL), - more_union AS ( SELECT * from ( - (SELECT * FROM original) - UNION - (SELECT * FROM the_union) - UNION - (SELECT * FROM first_part) - UNION - (SELECT * FROM second_part) ) _union ) - SELECT * FROM more_union'; - ELSE - new_edges:= 'WITH - orig AS ( ' || sql || '), - original AS (SELECT id, source, target, cost FROM orig), - the_union AS ( ' || sql_new_vertices || '), - first_part AS ( SELECT * FROM (SELECT id, target AS source, lead(target) OVER w AS target, - lead(cost) OVER w - cost AS cost - FROM the_union WHERE source > 0 AND cost > 0 - WINDOW w AS (PARTITION BY id ORDER BY cost ASC) ) as n2 - WHERE target IS NOT NULL ), - more_union AS ( SELECT * from ( - (SELECT * FROM original) - UNION - (SELECT * FROM the_union) - UNION - (SELECT * FROM first_part) ) _union ) - SELECT * FROM more_union'; - END IF; - END IF; - - sql_new_vertices := sql_new_vertices || v_union || ' (' || sql || ')'; - - RETURN query SELECT * - FROM pgr_dijkstraVia(new_edges, via_vertices, directed, has_rcost); - END - $BODY$ - LANGUAGE plpgsql VOLATILE STRICT - COST 100 - ROWS 1000; - - --- COMMENTS - - -COMMENT ON FUNCTION _pgr_withPointsVia(TEXT, BIGINT[], FLOAT[], BOOLEAN) -IS 'pgRouting internal function deprecated on v3.4.0'; diff --git a/src/allpairs/floydWarshall_driver.cpp b/src/allpairs/floydWarshall_driver.cpp index a016e03d09..a4ef3b5028 100644 --- a/src/allpairs/floydWarshall_driver.cpp +++ b/src/allpairs/floydWarshall_driver.cpp @@ -49,7 +49,7 @@ pgr_do_floydWarshall( size_t *return_count, char ** log_msg, char ** err_msg) { - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; std::ostringstream log; @@ -85,35 +85,33 @@ pgr_do_floydWarshall( if (*return_count == 0) { err << "No result generated, report this error\n"; - *err_msg = pgr_msg(err.str().c_str()); + *err_msg = to_pg_msg(err); *return_tuples = NULL; *return_count = 0; return; } - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); + *log_msg = to_pg_msg(log); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/allpairs/johnson_driver.cpp b/src/allpairs/johnson_driver.cpp index dea9c9f8f1..8573bb7246 100644 --- a/src/allpairs/johnson_driver.cpp +++ b/src/allpairs/johnson_driver.cpp @@ -48,7 +48,7 @@ pgr_do_johnson( size_t *return_count, char ** log_msg, char ** err_msg) { - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; std::ostringstream log; @@ -84,35 +84,33 @@ pgr_do_johnson( if (*return_count == 0) { err << "No result generated, report this error\n"; - *err_msg = pgr_msg(err.str().c_str()); + *err_msg = to_pg_msg(err); *return_tuples = NULL; *return_count = 0; return; } - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); + *log_msg = to_pg_msg(log); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/alpha_shape/alphaShape_driver.cpp b/src/alpha_shape/alphaShape_driver.cpp index e3441771d8..86f8d14af6 100644 --- a/src/alpha_shape/alphaShape_driver.cpp +++ b/src/alpha_shape/alphaShape_driver.cpp @@ -73,7 +73,7 @@ pgr_do_alphaShape( char **notice_msg, char **err_msg) { using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; std::ostringstream log; @@ -180,7 +180,7 @@ pgr_do_alphaShape( *return_tuples = pgr_alloc(*return_count, (*return_tuples)); std::stringstream ss; ss << "MULTIPOLYGON EMPTY"; - (*return_tuples)[0].geom = pgr_msg(ss.str().c_str()); + (*return_tuples)[0].geom = to_pg_msg(ss.str()); } else { *return_count = results.size(); *return_tuples = pgr_alloc(*return_count, (*return_tuples)); @@ -188,38 +188,34 @@ pgr_do_alphaShape( for (const auto &r : results) { std::stringstream ss; ss << bg::wkt(r); - (*return_tuples)[row].geom = pgr_msg(ss.str().c_str()); + (*return_tuples)[row].geom = to_pg_msg(ss.str()); ++row; } } - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/astar/astar_driver.cpp b/src/astar/astar_driver.cpp index 6a14a78f90..d69288098a 100644 --- a/src/astar/astar_driver.cpp +++ b/src/astar/astar_driver.cpp @@ -61,7 +61,7 @@ void pgr_do_astar( char** log_msg, char** notice_msg, char** err_msg) { using pgrouting::Path; using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; using pgrouting::utilities::get_combinations; @@ -85,8 +85,8 @@ void pgr_do_astar( hint = nullptr; if (combinations.empty() && combinations_sql) { - *notice_msg = pgr_msg("No (source, target) pairs found"); - *log_msg = pgr_msg(combinations_sql); + *notice_msg = to_pg_msg("No (source, target) pairs found"); + *log_msg = to_pg_msg(combinations_sql); return; } @@ -96,8 +96,8 @@ void pgr_do_astar( hint = nullptr; if (edges.empty()) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = pgr_msg(edges_sql); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = to_pg_msg(edges_sql); return; } @@ -128,39 +128,35 @@ void pgr_do_astar( (*return_tuples) = nullptr; (*return_count) = 0; notice << "No paths found\n"; - *log_msg = pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(notice); return; } (*return_tuples) = pgr_alloc(count, (*return_tuples)); (*return_count) = (collapse_paths(return_tuples, paths)); - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/bdAstar/bdAstar_driver.cpp b/src/bdAstar/bdAstar_driver.cpp index 8f685608e4..47d78db4d3 100644 --- a/src/bdAstar/bdAstar_driver.cpp +++ b/src/bdAstar/bdAstar_driver.cpp @@ -62,7 +62,7 @@ void pgr_do_bdAstar( char** log_msg, char** notice_msg, char** err_msg) { using pgrouting::Path; using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; using pgrouting::utilities::get_combinations; @@ -83,8 +83,8 @@ void pgr_do_bdAstar( hint = nullptr; if (combinations.empty() && combinations_sql) { - *notice_msg = pgr_msg("No (source, target) pairs found"); - *log_msg = pgr_msg(combinations_sql); + *notice_msg = to_pg_msg("No (source, target) pairs found"); + *log_msg = to_pg_msg(combinations_sql); return; } @@ -92,8 +92,8 @@ void pgr_do_bdAstar( auto edges = pgrouting::pgget::get_edges_xy(std::string(edges_sql), true); if (edges.empty()) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } hint = nullptr; @@ -118,39 +118,35 @@ void pgr_do_bdAstar( (*return_tuples) = nullptr; (*return_count) = 0; notice << "No paths found\n"; - *log_msg = pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(notice); return; } (*return_tuples) = pgr_alloc(count, (*return_tuples)); (*return_count) = (collapse_paths(return_tuples, paths)); - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/bdDijkstra/bdDijkstra_driver.cpp b/src/bdDijkstra/bdDijkstra_driver.cpp index 1411dd50fd..92b2bf256b 100644 --- a/src/bdDijkstra/bdDijkstra_driver.cpp +++ b/src/bdDijkstra/bdDijkstra_driver.cpp @@ -95,7 +95,7 @@ pgr_do_bdDijkstra( char **err_msg) { using pgrouting::Path; using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; using pgrouting::utilities::get_combinations; @@ -116,8 +116,8 @@ pgr_do_bdDijkstra( hint = nullptr; if (combinations.empty() && combinations_sql) { - *notice_msg = pgr_msg("No (source, target) pairs found"); - *log_msg = pgr_msg(combinations_sql); + *notice_msg = to_pg_msg("No (source, target) pairs found"); + *log_msg = to_pg_msg(combinations_sql); return; } @@ -127,8 +127,8 @@ pgr_do_bdDijkstra( auto edges = pgrouting::pgget::get_edges(std::string(edges_sql), true, false); if (edges.empty()) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } hint = nullptr; @@ -151,39 +151,35 @@ pgr_do_bdDijkstra( (*return_tuples) = NULL; (*return_count) = 0; notice << "No paths found"; - *log_msg = pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(notice); return; } (*return_tuples) = pgr_alloc(count, (*return_tuples)); (*return_count) = (collapse_paths(return_tuples, paths)); - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/bellman_ford/bellman_ford_driver.cpp b/src/bellman_ford/bellman_ford_driver.cpp index 2203aad4a6..5e302992a5 100644 --- a/src/bellman_ford/bellman_ford_driver.cpp +++ b/src/bellman_ford/bellman_ford_driver.cpp @@ -79,7 +79,7 @@ pgr_do_bellman_ford( char ** err_msg) { using pgrouting::Path; using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; using pgrouting::utilities::get_combinations; using pgrouting::pgget::get_edges; @@ -103,8 +103,8 @@ pgr_do_bellman_ford( hint = nullptr; if (combinations.empty() && combinations_sql) { - *notice_msg = pgr_msg("No (source, target) pairs found"); - *log_msg = pgr_msg(combinations_sql); + *notice_msg = to_pg_msg("No (source, target) pairs found"); + *log_msg = to_pg_msg(combinations_sql); return; } @@ -112,8 +112,8 @@ pgr_do_bellman_ford( auto edges = get_edges(std::string(edges_sql), true, false); if (edges.empty()) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } hint = nullptr; @@ -136,39 +136,35 @@ pgr_do_bellman_ford( (*return_tuples) = NULL; (*return_count) = 0; notice << "No paths found"; - *log_msg = pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(notice); return; } (*return_tuples) = pgr_alloc(count, (*return_tuples)); (*return_count) = (collapse_paths(return_tuples, paths)); - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/bellman_ford/bellman_ford_neg_driver.cpp b/src/bellman_ford/bellman_ford_neg_driver.cpp index 200946d105..1dc919c59d 100644 --- a/src/bellman_ford/bellman_ford_neg_driver.cpp +++ b/src/bellman_ford/bellman_ford_neg_driver.cpp @@ -81,7 +81,7 @@ pgr_do_bellman_ford_neg( char ** err_msg) { using pgrouting::Path; using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; using pgrouting::utilities::get_combinations; using pgrouting::pgget::get_edges; @@ -105,8 +105,8 @@ pgr_do_bellman_ford_neg( hint = nullptr; if (combinations.empty() && combinations_sql) { - *notice_msg = pgr_msg("No (source, target) pairs found"); - *log_msg = pgr_msg(combinations_sql); + *notice_msg = to_pg_msg("No (source, target) pairs found"); + *log_msg = to_pg_msg(combinations_sql); return; } @@ -117,8 +117,8 @@ pgr_do_bellman_ford_neg( auto neg_edges = get_edges(std::string(neg_edges_sql), true, false); if (edges.size() + neg_edges.empty()) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } hint = nullptr; @@ -143,39 +143,35 @@ pgr_do_bellman_ford_neg( (*return_tuples) = NULL; (*return_count) = 0; notice << "No paths found"; - *log_msg = pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(notice); return; } (*return_tuples) = pgr_alloc(count, (*return_tuples)); (*return_count) = (collapse_paths(return_tuples, paths)); - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/bellman_ford/edwardMoore_driver.cpp b/src/bellman_ford/edwardMoore_driver.cpp index 1905212205..bf859d5eea 100644 --- a/src/bellman_ford/edwardMoore_driver.cpp +++ b/src/bellman_ford/edwardMoore_driver.cpp @@ -79,7 +79,7 @@ pgr_do_edwardMoore( char ** err_msg) { using pgrouting::Path; using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; using pgrouting::utilities::get_combinations; using pgrouting::pgget::get_edges; @@ -103,8 +103,8 @@ pgr_do_edwardMoore( hint = nullptr; if (combinations.empty() && combinations_sql) { - *notice_msg = pgr_msg("No (source, target) pairs found"); - *log_msg = pgr_msg(combinations_sql); + *notice_msg = to_pg_msg("No (source, target) pairs found"); + *log_msg = to_pg_msg(combinations_sql); return; } @@ -112,8 +112,8 @@ pgr_do_edwardMoore( auto edges = get_edges(std::string(edges_sql), true, false); if (edges.empty()) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } hint = nullptr; @@ -136,39 +136,35 @@ pgr_do_edwardMoore( (*return_tuples) = NULL; (*return_count) = 0; notice << "No paths found"; - *log_msg = pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(notice); return; } (*return_tuples) = pgr_alloc(count, (*return_tuples)); (*return_count) = (collapse_paths(return_tuples, paths)); - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/breadthFirstSearch/binaryBreadthFirstSearch_driver.cpp b/src/breadthFirstSearch/binaryBreadthFirstSearch_driver.cpp index d2a0d9fa77..9506cbb2c8 100644 --- a/src/breadthFirstSearch/binaryBreadthFirstSearch_driver.cpp +++ b/src/breadthFirstSearch/binaryBreadthFirstSearch_driver.cpp @@ -136,7 +136,7 @@ pgr_do_binaryBreadthFirstSearch( char ** err_msg) { using pgrouting::Path; using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; using pgrouting::utilities::get_combinations; using pgrouting::pgget::get_edges; @@ -162,8 +162,8 @@ pgr_do_binaryBreadthFirstSearch( hint = nullptr; if (combinations.empty() && combinations_sql) { - *notice_msg = pgr_msg("No (source, target) pairs found"); - *log_msg = pgr_msg(combinations_sql); + *notice_msg = to_pg_msg("No (source, target) pairs found"); + *log_msg = to_pg_msg(combinations_sql); return; } @@ -172,8 +172,8 @@ pgr_do_binaryBreadthFirstSearch( auto edges = pgrouting::pgget::get_edges(std::string(edges_sql), true, false); if (edges.empty()) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } @@ -184,7 +184,7 @@ pgr_do_binaryBreadthFirstSearch( if (!(costCheck(digraph))) { err << c_err_msg; - *err_msg = pgr_msg(err.str().c_str()); + *err_msg = to_pg_msg(err); return; } paths = binaryBreadthFirstSearch(digraph, combinations); @@ -195,7 +195,7 @@ pgr_do_binaryBreadthFirstSearch( if (!(costCheck(undigraph))) { err << c_err_msg; - *err_msg = pgr_msg(err.str().c_str()); + *err_msg = to_pg_msg(err); return; } @@ -210,7 +210,7 @@ pgr_do_binaryBreadthFirstSearch( (*return_count) = 0; notice << "No paths found"; - *log_msg = pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(notice); return; } @@ -218,32 +218,28 @@ pgr_do_binaryBreadthFirstSearch( log << "\nConverting a set of paths into the tuples"; (*return_count) = (collapse_paths(return_tuples, paths)); - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/breadthFirstSearch/breadthFirstSearch_driver.cpp b/src/breadthFirstSearch/breadthFirstSearch_driver.cpp index 06eb026f2a..282df2dea2 100644 --- a/src/breadthFirstSearch/breadthFirstSearch_driver.cpp +++ b/src/breadthFirstSearch/breadthFirstSearch_driver.cpp @@ -67,7 +67,7 @@ pgr_do_breadthFirstSearch( char ** notice_msg, char ** err_msg) { using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; using pgrouting::pgget::get_intSet; @@ -91,8 +91,8 @@ pgr_do_breadthFirstSearch( auto edges = pgrouting::pgget::get_edges(std::string(edges_sql), true, false); if (edges.empty()) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } hint = nullptr; @@ -117,7 +117,7 @@ pgr_do_breadthFirstSearch( (*return_tuples) = NULL; (*return_count) = 0; notice << "No traversal found"; - *log_msg = pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(notice); return; } @@ -127,32 +127,28 @@ pgr_do_breadthFirstSearch( *((*return_tuples) + i) = results[i]; } - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/chinese/chinesePostman_driver.cpp b/src/chinese/chinesePostman_driver.cpp index 6685c91627..e4968f0293 100644 --- a/src/chinese/chinesePostman_driver.cpp +++ b/src/chinese/chinesePostman_driver.cpp @@ -52,7 +52,7 @@ pgr_do_directedChPP( char ** notice_msg, char ** err_msg) { using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; std::ostringstream log; @@ -71,8 +71,8 @@ pgr_do_directedChPP( hint = edges_sql; auto edges = pgrouting::pgget::get_edges(std::string(edges_sql), true, false); if (edges.empty()) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } hint = nullptr; @@ -101,7 +101,7 @@ pgr_do_directedChPP( (*return_count) = 0; notice << "No paths found"; - *log_msg = pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(notice); return; } @@ -112,33 +112,29 @@ pgr_do_directedChPP( } *return_count = count; - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/circuits/hawickCircuits_driver.cpp b/src/circuits/hawickCircuits_driver.cpp index b506deee1b..5e8a626441 100644 --- a/src/circuits/hawickCircuits_driver.cpp +++ b/src/circuits/hawickCircuits_driver.cpp @@ -70,7 +70,7 @@ pgr_do_hawickCircuits( char ** err_msg) { using pgrouting::Path; using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; std::ostringstream log; @@ -88,8 +88,8 @@ pgr_do_hawickCircuits( hint = edges_sql; auto edges = pgrouting::pgget::get_edges(std::string(edges_sql), true, false); if (edges.empty()) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } hint = nullptr; @@ -107,7 +107,7 @@ pgr_do_hawickCircuits( (*return_tuples) = NULL; (*return_count) = 0; notice << "No Circuit found"; - *log_msg = pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(notice); return; } @@ -118,32 +118,28 @@ pgr_do_hawickCircuits( (*return_count) = count; pgassert(*err_msg == NULL); - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/coloring/bipartite_driver.cpp b/src/coloring/bipartite_driver.cpp index 66f1f779eb..3ed6ec8e7a 100644 --- a/src/coloring/bipartite_driver.cpp +++ b/src/coloring/bipartite_driver.cpp @@ -53,7 +53,7 @@ pgr_do_bipartite( char **notice_msg, char **err_msg) { using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; std::ostringstream log; @@ -74,8 +74,8 @@ pgr_do_bipartite( hint = edges_sql; auto edges = pgrouting::pgget::get_edges(std::string(edges_sql), true, false); if (edges.empty()) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } hint = nullptr; @@ -92,12 +92,8 @@ pgr_do_bipartite( if (count == 0) { (*return_tuples) = NULL; (*return_count) = 0; - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); return; } (*return_tuples) = pgr_alloc(count, (*return_tuples)); @@ -107,32 +103,28 @@ pgr_do_bipartite( (*return_count) = count; pgassert(*err_msg == NULL); - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/coloring/edgeColoring_driver.cpp b/src/coloring/edgeColoring_driver.cpp index a69188ad68..916d92dc37 100644 --- a/src/coloring/edgeColoring_driver.cpp +++ b/src/coloring/edgeColoring_driver.cpp @@ -47,7 +47,7 @@ void pgr_do_edgeColoring( char **notice_msg, char **err_msg) { using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; std::ostringstream log; @@ -65,8 +65,8 @@ void pgr_do_edgeColoring( hint = edges_sql; auto edges = pgrouting::pgget::get_edges(std::string(edges_sql), true, false); if (edges.empty()) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } hint = nullptr; @@ -84,7 +84,7 @@ void pgr_do_edgeColoring( (*return_tuples) = NULL; (*return_count) = 0; notice << "No results found"; - *log_msg = pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(notice); return; } @@ -95,28 +95,28 @@ void pgr_do_edgeColoring( (*return_count) = count; pgassert(*err_msg == NULL); - *log_msg = log.str().empty() ? *log_msg : pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty() ? *notice_msg : pgr_msg(notice.str().c_str()); + *log_msg = log.str().empty() ? *log_msg : to_pg_msg(log); + *notice_msg = notice.str().empty() ? *notice_msg : to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/coloring/sequentialVertexColoring_driver.cpp b/src/coloring/sequentialVertexColoring_driver.cpp index 40cb7908da..7d54418216 100644 --- a/src/coloring/sequentialVertexColoring_driver.cpp +++ b/src/coloring/sequentialVertexColoring_driver.cpp @@ -65,7 +65,7 @@ pgr_do_sequentialVertexColoring( char ** notice_msg, char ** err_msg) { using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; std::ostringstream log; @@ -83,8 +83,8 @@ pgr_do_sequentialVertexColoring( hint = edges_sql; auto edges = pgrouting::pgget::get_edges(std::string(edges_sql), true, false); if (edges.empty()) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } hint = nullptr; @@ -103,7 +103,7 @@ pgr_do_sequentialVertexColoring( (*return_tuples) = NULL; (*return_count) = 0; notice << "No traversal found"; - *log_msg = pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(notice); return; } @@ -114,32 +114,28 @@ pgr_do_sequentialVertexColoring( (*return_count) = count; pgassert(*err_msg == NULL); - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/common/alloc.cpp b/src/common/alloc.cpp index 1ff667663e..710409915f 100644 --- a/src/common/alloc.cpp +++ b/src/common/alloc.cpp @@ -31,13 +31,19 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. namespace pgrouting { -char * -pgr_msg(const std::string &msg) { - char* duplicate = NULL; +char* +to_pg_msg(const std::string &msg) { + if (msg.empty()) return nullptr; + char* duplicate = nullptr; duplicate = pgr_alloc(msg.size() + 1, duplicate); memcpy(duplicate, msg.c_str(), msg.size()); duplicate[msg.size()] = '\0'; return duplicate; } +char* +to_pg_msg(const std::ostringstream &msg) { + return to_pg_msg(msg.str()); +} + } // namespace pgrouting diff --git a/src/common/basePath_SSEC.cpp b/src/common/basePath_SSEC.cpp index c2f62c6825..23a7f84e29 100644 --- a/src/common/basePath_SSEC.cpp +++ b/src/common/basePath_SSEC.cpp @@ -160,8 +160,6 @@ Path Path::getSubpath(unsigned int j) const { for (auto i = path.begin(); i != path.begin() + j; ++i) { result.push_back((*i)); } - pgassert(result.tot_cost() != 0); - pgassert(this->tot_cost() != 0); return result; } diff --git a/src/common/e_report.c b/src/common/e_report.c index 15500c849d..4c7d0f4e93 100644 --- a/src/common/e_report.c +++ b/src/common/e_report.c @@ -44,7 +44,7 @@ pgr_throw_error(char *err, char *hint) { * ~~~~{.c} * std::ostringstream log; * log << "the message"; - * *log_msg = to_pg_msg(log.str().c_str()); + * *log_msg = to_pg_msg(log); * ~~~~ * * Then on the C side diff --git a/src/components/articulationPoints_driver.cpp b/src/components/articulationPoints_driver.cpp index 7feb62160e..86a8db677b 100644 --- a/src/components/articulationPoints_driver.cpp +++ b/src/components/articulationPoints_driver.cpp @@ -52,7 +52,7 @@ pgr_do_articulationPoints( char ** notice_msg, char ** err_msg) { using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; using pgrouting::pgget::get_edges; @@ -71,8 +71,8 @@ pgr_do_articulationPoints( hint = edges_sql; auto edges = get_edges(std::string(edges_sql), true, false); if (edges.empty()) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } hint = nullptr; @@ -100,33 +100,29 @@ pgr_do_articulationPoints( (*return_count) = count; pgassert(*err_msg == NULL); - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/components/biconnectedComponents_driver.cpp b/src/components/biconnectedComponents_driver.cpp index 58bef62d84..fff2fe935b 100644 --- a/src/components/biconnectedComponents_driver.cpp +++ b/src/components/biconnectedComponents_driver.cpp @@ -53,7 +53,7 @@ pgr_do_biconnectedComponents( char ** notice_msg, char ** err_msg) { using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; using pgrouting::pgget::get_edges; @@ -72,8 +72,8 @@ pgr_do_biconnectedComponents( hint = edges_sql; auto edges = get_edges(std::string(edges_sql), true, false); if (edges.empty()) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } hint = nullptr; @@ -99,33 +99,29 @@ pgr_do_biconnectedComponents( (*return_count) = count; pgassert(*err_msg == NULL); - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/components/bridges_driver.cpp b/src/components/bridges_driver.cpp index 6cf50be12c..44ab23442e 100644 --- a/src/components/bridges_driver.cpp +++ b/src/components/bridges_driver.cpp @@ -51,7 +51,7 @@ pgr_do_bridges( char ** notice_msg, char ** err_msg) { using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; using pgrouting::pgget::get_edges; @@ -70,8 +70,8 @@ pgr_do_bridges( hint = edges_sql; auto edges = get_edges(std::string(edges_sql), true, false); if (edges.empty()) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } hint = nullptr; @@ -98,33 +98,29 @@ pgr_do_bridges( (*return_count) = count; pgassert(*err_msg == NULL); - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/components/connectedComponents_driver.cpp b/src/components/connectedComponents_driver.cpp index 3145192392..51bbadd205 100644 --- a/src/components/connectedComponents_driver.cpp +++ b/src/components/connectedComponents_driver.cpp @@ -52,7 +52,7 @@ pgr_do_connectedComponents( char ** notice_msg, char ** err_msg) { using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; using pgrouting::pgget::get_edges; @@ -71,8 +71,8 @@ pgr_do_connectedComponents( hint = edges_sql; auto edges = get_edges(std::string(edges_sql), true, false); if (edges.empty()) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } hint = nullptr; @@ -97,33 +97,29 @@ pgr_do_connectedComponents( (*return_count) = count; pgassert(*err_msg == NULL); - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/components/makeConnected_driver.cpp b/src/components/makeConnected_driver.cpp index ecfd615543..ffb34bb079 100644 --- a/src/components/makeConnected_driver.cpp +++ b/src/components/makeConnected_driver.cpp @@ -51,7 +51,7 @@ pgr_do_makeConnected( char ** notice_msg, char ** err_msg) { using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; using pgrouting::pgget::get_edges; @@ -73,8 +73,8 @@ pgr_do_makeConnected( hint = edges_sql; auto edges = get_edges(std::string(edges_sql), true, false); if (edges.empty()) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } hint = nullptr; @@ -93,7 +93,7 @@ pgr_do_makeConnected( (*return_count) = 0; notice << "No Vertices"; - *log_msg = pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(notice); return; } @@ -105,32 +105,28 @@ pgr_do_makeConnected( (*return_count) = count; pgassert(*err_msg == NULL); - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/components/strongComponents_driver.cpp b/src/components/strongComponents_driver.cpp index fb12e1d14e..237385a1ac 100644 --- a/src/components/strongComponents_driver.cpp +++ b/src/components/strongComponents_driver.cpp @@ -53,7 +53,7 @@ pgr_do_strongComponents( char ** notice_msg, char ** err_msg) { using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; using pgrouting::pgget::get_edges; @@ -72,8 +72,8 @@ pgr_do_strongComponents( hint = edges_sql; auto edges = get_edges(std::string(edges_sql), true, false); if (edges.empty()) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } hint = nullptr; @@ -98,33 +98,29 @@ pgr_do_strongComponents( (*return_count) = count; pgassert(*err_msg == NULL); - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/contraction/contractGraph_driver.cpp b/src/contraction/contractGraph_driver.cpp index fcd6a8d258..829b2f1687 100644 --- a/src/contraction/contractGraph_driver.cpp +++ b/src/contraction/contractGraph_driver.cpp @@ -184,7 +184,7 @@ pgr_do_contractGraph( char **notice_msg, char **err_msg) { using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; using pgrouting::pgget::get_intArray; using pgrouting::pgget::get_edges; @@ -205,8 +205,8 @@ pgr_do_contractGraph( hint = edges_sql; auto edges = get_edges(std::string(edges_sql), true, false); if (edges.empty()) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } hint = nullptr; @@ -216,9 +216,9 @@ pgr_do_contractGraph( for (const auto kind : ordering) { if (!pgrouting::contraction::is_valid_contraction(static_cast(kind))) { - *err_msg = pgr_msg("Invalid contraction type found"); + *err_msg = to_pg_msg("Invalid contraction type found"); log << "Contraction type " << kind << " not valid"; - *log_msg = pgr_msg(log.str().c_str()); + *log_msg = to_pg_msg(log); return; } } @@ -249,32 +249,28 @@ pgr_do_contractGraph( } pgassert(err.str().empty()); - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/cpp_common/CMakeLists.txt b/src/cpp_common/CMakeLists.txt index f45cce63ba..85dd8d47e2 100644 --- a/src/cpp_common/CMakeLists.txt +++ b/src/cpp_common/CMakeLists.txt @@ -9,9 +9,4 @@ ADD_LIBRARY(cpp_common OBJECT get_check_data.cpp pgdata_fetchers.cpp pgdata_getters.cpp - - # for old trsp code - trsp_pgfetch.cpp - # linked as C, but compiled as C++ - trsp_pgget.cpp ) diff --git a/src/cpp_common/combinations.cpp b/src/cpp_common/combinations.cpp index 739685c449..5b58922c95 100644 --- a/src/cpp_common/combinations.cpp +++ b/src/cpp_common/combinations.cpp @@ -37,35 +37,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. namespace pgrouting { namespace utilities { -#if 1 -std::map> -get_combinations(const II_t_rt *combinations, size_t total) { - std::map> result; - - /* TODO(vicky) maybe use std::for_each */ - for (size_t i = 0; i < total; i++) { - auto row = combinations[i]; - result[row.d1.source].insert(row.d2.target); - } - return result; -} - -std::map> -get_combinations( - int64_t *start_arr, - size_t size_start_arr, - int64_t *end_arr, - size_t size_end_arr) { - std::map> result; - - for (size_t i = 0; i < size_start_arr; ++i) { - for (size_t j = 0; j < size_end_arr; ++j) { - result[start_arr[i]].insert(end_arr[j]); - } - } - return result; -} -#endif std::map> get_combinations( diff --git a/src/cpp_common/trsp_pgfetch.cpp b/src/cpp_common/trsp_pgfetch.cpp deleted file mode 100644 index aa4a502860..0000000000 --- a/src/cpp_common/trsp_pgfetch.cpp +++ /dev/null @@ -1,108 +0,0 @@ -/*PGR-GNU***************************************************************** -File: trsp_pgfetch.cpp - -Copyright (c) 2015 pgRouting developers -Mail: project@pgrouting.org - -Copyright (c) 2023 Celia Virginia Vergara Castillo -mail: vicky at erosion.dev -Copyright (c) 2020 Mahmoud SAKR and Esteban ZIMANYI -mail: m_attia_sakrcw at yahoo.com, estebanzimanyicw at gmail.com -Copyright (c) 2016 Rohith Reddy -Copyright (c) 2016 Andrea Nardelli -mail: nrd.nardelli at gmail.com -Copyright (c) 2015 Celia Virginia Vergara Castillo -mail: vicky at erosion.dev - - ------- - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - ********************************************************************PGR-GNU*/ -/** @file - -This is a copy of pgdata_fetchers.cpp - -The old version of TRSP -- Is the only function that has its own edge reader within its code, - hence the name of the file. -- The old version of TRSP will exist during 3.x series - - -Notes -- The only function that remains is `fetch_edge` -- The old version of TRSP will be removed on V4 - -@todo: V4 TODO Delete this file - */ - -#include "cpp_common/trsp_pgfetch.hpp" - -#include -#include -#include - -#include "cpp_common/get_check_data.hpp" - -#include "cpp_common/info_t.hpp" -#include "c_types/edge_rt.h" - - -namespace pgrouting { - -void fetch_edge( - const HeapTuple tuple, - const TupleDesc &tupdesc, - const std::vector &info, - int64_t *default_id, - Edge_t *edge, - size_t *valid_edges, - bool normal) { - if (pgrouting::column_found(info[0].colNumber)) { - edge->id = pgrouting::getBigInt(tuple, tupdesc, info[0]); - } else { - edge->id = *default_id; - ++(*default_id); - } - - if (normal) { - edge->source = pgrouting::getBigInt(tuple, tupdesc, info[1]); - edge->target = pgrouting::getBigInt(tuple, tupdesc, info[2]); - } else { - edge->target = pgrouting::getBigInt(tuple, tupdesc, info[1]); - edge->source = pgrouting::getBigInt(tuple, tupdesc, info[2]); - } - - edge->cost = pgrouting::getFloat8(tuple, tupdesc, info[3]); - - if (pgrouting::column_found(info[4].colNumber)) { - edge->reverse_cost = pgrouting::getFloat8(tuple, tupdesc, info[4]); - } else { - edge->reverse_cost = -1; - } - - edge->cost = std::isinf(edge->cost)? - DBL_MAX : edge->cost; - - edge->reverse_cost = std::isinf(edge->reverse_cost)? - DBL_MAX : edge->reverse_cost; - - *valid_edges = edge->cost < 0? *valid_edges: *valid_edges + 1; - *valid_edges = edge->reverse_cost < 0? *valid_edges: *valid_edges + 1; -} - - -} // namespace pgrouting diff --git a/src/cpp_common/trsp_pgget.cpp b/src/cpp_common/trsp_pgget.cpp deleted file mode 100644 index 59dfe49a16..0000000000 --- a/src/cpp_common/trsp_pgget.cpp +++ /dev/null @@ -1,110 +0,0 @@ -/*PGR-GNU***************************************************************** -File: trsp_pgget.cpp - -Copyright (c) 2015 pgRouting developers -Mail: project@pgrouting.org - -Copyright (c) 2023 Celia Virginia Vergara Castillo -mail: vicky at erosion.dev -Copyright (c) 2020 Mahmoud SAKR and Esteban ZIMANYI -mail: m_attia_sakrcw at yahoo.com, estebanzimanyicw at gmail.com -Copyright (c) 2016 Rohith Reddy -Copyright (c) 2016 Andrea Nardelli -mail: nrd.nardelli at gmail.com -Copyright (c) 2015 Celia Virginia Vergara Castillo -mail: vicky at erosion.dev - - ------- - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - ********************************************************************PGR-GNU*/ -/** file - -This is a copy of pgdata_getters.cpp - -The old version of TRSP -- Is the only function that has its own edge reader within its code, - hence the name of the file. -- The old version of TRSP will exist during 3.x series - - -@note -- The only function that remains is `fetch_edge` -- The old version of TRSP will be removed on V4 - - @todo: V4 TODO Delete this file -*/ - -#include "c_common/trsp_pgget.h" -#include -#include -#include -#include - -#include "cpp_common/get_data.hpp" -#include "cpp_common/get_check_data.hpp" -#include "cpp_common/alloc.hpp" -#include "cpp_common/trsp_pgfetch.hpp" - -#include "cpp_common/info_t.hpp" -#include "c_types/edge_rt.h" - - -/** - For queries of the type: - ~~~~{.c} - SELECT id, source, target, cost, [reverse_cost] FROM edge_table; - ~~~~ - - @param[in] sql The query - @param[out] rows the edges array - @param[out] total_rows size of edges - @param[in] normal when false then the graph is reversed - @param[in] ignore_id when true id value of edge is ignored - @param[out] err_msg when not null, there was an error and contains the message - */ -void -pgr_get_edges( - char *sql, - Edge_t **rows, - size_t *total_rows, - bool normal, - bool ignore_id, - char **err_msg) { - using pgrouting::pgr_msg; - using pgrouting::pgr_free; - using pgrouting::Column_info_t; - try { - std::vector info{ - {-1, 0, !ignore_id, "id", pgrouting::ANY_INTEGER}, - {-1, 0, true, "source", pgrouting::ANY_INTEGER}, - {-1, 0, true, "target", pgrouting::ANY_INTEGER}, - {-1, 0, true, "cost", pgrouting::ANY_NUMERICAL}, - {-1, 0, false, "reverse_cost", pgrouting::ANY_NUMERICAL}}; - - pgrouting::get_data(sql, rows, total_rows, normal, info, &pgrouting::fetch_edge); - } catch (const std::string &ex) { - (*rows) = pgr_free(*rows); - (*total_rows) = 0; - *err_msg = pgr_msg(ex.c_str()); - } catch(...) { - (*rows) = pgr_free(*rows); - (*total_rows) = 0; - *err_msg = pgr_msg("Caught unknown exception!"); - } -} - diff --git a/src/dagShortestPath/dagShortestPath_driver.cpp b/src/dagShortestPath/dagShortestPath_driver.cpp index 10923ae6ea..91df4d52cb 100644 --- a/src/dagShortestPath/dagShortestPath_driver.cpp +++ b/src/dagShortestPath/dagShortestPath_driver.cpp @@ -77,7 +77,7 @@ pgr_do_dagShortestPath( char **err_msg) { using pgrouting::Path; using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; using pgrouting::utilities::get_combinations; using pgrouting::pgget::get_edges; @@ -100,8 +100,8 @@ pgr_do_dagShortestPath( hint = nullptr; if (combinations.empty() && combinations_sql) { - *notice_msg = pgr_msg("No (source, target) pairs found"); - *log_msg = pgr_msg(combinations_sql); + *notice_msg = to_pg_msg("No (source, target) pairs found"); + *log_msg = to_pg_msg(combinations_sql); return; } @@ -111,8 +111,8 @@ pgr_do_dagShortestPath( auto edges = get_edges(std::string(edges_sql), true, false); if (edges.empty()) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } hint = nullptr; @@ -134,39 +134,35 @@ pgr_do_dagShortestPath( (*return_tuples) = NULL; (*return_count) = 0; notice << "No paths found"; - *log_msg = pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(notice); return; } (*return_tuples) = pgr_alloc(count, (*return_tuples)); (*return_count) = (collapse_paths(return_tuples, paths)); - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/dijkstra/dijkstra.c b/src/dijkstra/dijkstra.c index 0e47f3a641..af4e7ee9b2 100644 --- a/src/dijkstra/dijkstra.c +++ b/src/dijkstra/dijkstra.c @@ -126,8 +126,6 @@ _pgr_dijkstra(PG_FUNCTION_ARGS) { oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx); if (PG_NARGS() == 7) { - /* kept for backwards compatibility - * TODO remove on 4.0.0 */ process( text_to_cstring(PG_GETARG_TEXT_P(0)), NULL, @@ -142,8 +140,6 @@ _pgr_dijkstra(PG_FUNCTION_ARGS) { &result_count); } else if (PG_NARGS() == 5) { - /* kept for backwards compatibility - * TODO remove on 4.0.0 */ process( text_to_cstring(PG_GETARG_TEXT_P(0)), text_to_cstring(PG_GETARG_TEXT_P(1)), diff --git a/src/dijkstra/dijkstraVia_driver.cpp b/src/dijkstra/dijkstraVia_driver.cpp index 0fb0842e17..f417f63743 100644 --- a/src/dijkstra/dijkstraVia_driver.cpp +++ b/src/dijkstra/dijkstraVia_driver.cpp @@ -103,7 +103,7 @@ pgr_do_dijkstraVia( char** err_msg) { using pgrouting::Path; using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; using pgrouting::pgget::get_intArray; using pgrouting::pgget::get_edges; @@ -128,8 +128,8 @@ pgr_do_dijkstraVia( auto edges = get_edges(std::string(edges_sql), true, false); if (edges.empty()) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } hint = nullptr; @@ -138,7 +138,7 @@ pgr_do_dijkstraVia( if (directed) { pgrouting::DirectedGraph digraph; digraph.insert_edges(edges); - pgrouting::pgr_dijkstraVia( + pgrouting::dijkstraVia( digraph, via, paths, @@ -148,7 +148,7 @@ pgr_do_dijkstraVia( } else { pgrouting::UndirectedGraph undigraph; undigraph.insert_edges(edges); - pgrouting::pgr_dijkstraVia( + pgrouting::dijkstraVia( undigraph, via, paths, @@ -164,7 +164,7 @@ pgr_do_dijkstraVia( (*return_count) = 0; notice << "No paths found"; - *log_msg = pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(notice); return; } @@ -174,32 +174,28 @@ pgr_do_dijkstraVia( (*return_count) = (get_route(return_tuples, paths)); (*return_tuples)[count - 1].edge = -2; - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/dijkstra/dijkstra_driver.cpp b/src/dijkstra/dijkstra_driver.cpp index 5c9aecc51f..44984b6ab3 100644 --- a/src/dijkstra/dijkstra_driver.cpp +++ b/src/dijkstra/dijkstra_driver.cpp @@ -122,7 +122,7 @@ pgr_do_dijkstra( char **err_msg) { using pgrouting::Path; using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; using pgrouting::utilities::get_combinations; using pgrouting::pgget::get_edges; @@ -144,8 +144,8 @@ pgr_do_dijkstra( hint = nullptr; if (combinations.empty() && combinations_sql) { - *notice_msg = pgr_msg("No (source, target) pairs found"); - *log_msg = pgr_msg(combinations_sql); + *notice_msg = to_pg_msg("No (source, target) pairs found"); + *log_msg = to_pg_msg(combinations_sql); return; } @@ -155,8 +155,8 @@ pgr_do_dijkstra( auto edges = get_edges(std::string(edges_sql), normal, false); if (edges.empty()) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } hint = nullptr; @@ -182,39 +182,35 @@ pgr_do_dijkstra( (*return_tuples) = NULL; (*return_count) = 0; notice << "No paths found"; - *log_msg = pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(notice); return; } (*return_tuples) = pgr_alloc(count, (*return_tuples)); (*return_count) = (collapse_paths(return_tuples, paths)); - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/dominator/lengauerTarjanDominatorTree_driver.cpp b/src/dominator/lengauerTarjanDominatorTree_driver.cpp index b9d014dc2b..01eb126c37 100644 --- a/src/dominator/lengauerTarjanDominatorTree_driver.cpp +++ b/src/dominator/lengauerTarjanDominatorTree_driver.cpp @@ -56,7 +56,7 @@ pgr_do_LTDTree( char **err_msg) { using pgrouting::Path; using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; std::ostringstream log; @@ -74,8 +74,8 @@ pgr_do_LTDTree( hint = edges_sql; auto edges = pgrouting::pgget::get_edges(std::string(edges_sql), true, false); if (edges.empty()) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } hint = nullptr; @@ -97,12 +97,8 @@ pgr_do_LTDTree( (*return_tuples) = NULL; (*return_count) = 0; notice << "No result found"; - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); return; } (*return_tuples) = pgr_alloc(count, (*return_tuples)); @@ -112,32 +108,28 @@ pgr_do_LTDTree( (*return_count) = count; pgassert(*err_msg == NULL); - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/driving_distance/driving_distance.c b/src/driving_distance/driving_distance.c index d687beb3da..6a03b89246 100644 --- a/src/driving_distance/driving_distance.c +++ b/src/driving_distance/driving_distance.c @@ -37,10 +37,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include "drivers/driving_distance/driving_distance_driver.h" - -PGDLLEXPORT Datum _pgr_drivingdistance(PG_FUNCTION_ARGS); -PG_FUNCTION_INFO_V1(_pgr_drivingdistance); - PGDLLEXPORT Datum _pgr_drivingdistancev4(PG_FUNCTION_ARGS); PG_FUNCTION_INFO_V1(_pgr_drivingdistancev4); @@ -164,10 +160,15 @@ _pgr_drivingdistancev4(PG_FUNCTION_ARGS) { } -/* Old code starts here - * TODO(v4) remove old code - * its code that is used when there is an old version of SQL 3.5 and under +/* Deprecated code starts here + * This code is used on v3.5 and under + * + * TODO(v5) Move to legacy */ + +PGDLLEXPORT Datum _pgr_drivingdistance(PG_FUNCTION_ARGS); +PG_FUNCTION_INFO_V1(_pgr_drivingdistance); + PGDLLEXPORT Datum _pgr_drivingdistance(PG_FUNCTION_ARGS) { FuncCallContext *funcctx; @@ -176,6 +177,12 @@ _pgr_drivingdistance(PG_FUNCTION_ARGS) { MST_rt *result_tuples = 0; size_t result_count = 0; + ereport(NOTICE, ( + errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("A stored procedure is using deprecated C internal function '%s'", __func__), + errdetail("Library function '%s' was deprecated in pgRouting %s", __func__, "3.6.0"), + errhint("Consider upgrade pgRouting"))); + if (SRF_IS_FIRSTCALL()) { MemoryContext oldcontext; diff --git a/src/driving_distance/driving_distance_driver.cpp b/src/driving_distance/driving_distance_driver.cpp index e41e38967d..a2343469ef 100644 --- a/src/driving_distance/driving_distance_driver.cpp +++ b/src/driving_distance/driving_distance_driver.cpp @@ -56,7 +56,7 @@ pgr_do_drivingDistance( char **err_msg) { using pgrouting::Path; using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; using pgrouting::algorithm::drivingDistance; using pgrouting::pgget::get_intSet; @@ -80,8 +80,8 @@ pgr_do_drivingDistance( auto edges = pgrouting::pgget::get_edges(std::string(edges_sql), true, false); if (edges.empty()) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } hint = nullptr; @@ -103,7 +103,7 @@ pgr_do_drivingDistance( if (count == 0) { log << "\nNo return values were found"; - *notice_msg = pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg(log); return; } @@ -124,32 +124,28 @@ pgr_do_drivingDistance( } (*return_count) = count; - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch( ... ) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/driving_distance/driving_distance_withPoints_driver.cpp b/src/driving_distance/driving_distance_withPoints_driver.cpp index 6816f2589a..d01620938f 100644 --- a/src/driving_distance/driving_distance_withPoints_driver.cpp +++ b/src/driving_distance/driving_distance_withPoints_driver.cpp @@ -67,7 +67,7 @@ pgr_do_withPointsDD( char** err_msg) { using pgrouting::Path; using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; using pgrouting::pgget::get_intSet; using pgrouting::utilities::get_combinations; @@ -99,8 +99,8 @@ pgr_do_withPointsDD( auto edges = get_edges(std::string(edges_sql), true, false); if (edges.size() + edges_of_points.size() == 0) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } hint = nullptr; @@ -114,8 +114,8 @@ pgr_do_withPointsDD( if (pg_graph.has_error()) { log << pg_graph.get_log(); err << pg_graph.get_error(); - *log_msg = pgr_msg(log.str().c_str()); - *err_msg = pgr_msg(err.str().c_str()); + *log_msg = to_pg_msg(log); + *err_msg = to_pg_msg(err); return; } @@ -148,7 +148,7 @@ pgr_do_withPointsDD( (*return_tuples) = NULL; (*return_count) = 0; notice << "No paths found"; - *log_msg = pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(notice); return; } @@ -176,32 +176,28 @@ pgr_do_withPointsDD( std::stable_sort((*return_tuples), (*return_tuples) + count, [](const MST_rt &l, const MST_rt &r) {return l.from_v < r.from_v;}); - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/ksp/ksp_driver.cpp b/src/ksp/ksp_driver.cpp index 96a8a5fd1d..0dc4d23c38 100644 --- a/src/ksp/ksp_driver.cpp +++ b/src/ksp/ksp_driver.cpp @@ -64,7 +64,7 @@ void pgr_do_ksp( char **err_msg) { using pgrouting::Path; using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; using pgrouting::utilities::get_combinations; using pgrouting::yen::Pgr_ksp; @@ -92,8 +92,8 @@ void pgr_do_ksp( } if (combinations.empty() && combinations_sql) { - *notice_msg = pgr_msg("No (source, target) pairs found"); - *log_msg = pgr_msg(combinations_sql); + *notice_msg = to_pg_msg("No (source, target) pairs found"); + *log_msg = to_pg_msg(combinations_sql); return; } @@ -101,8 +101,8 @@ void pgr_do_ksp( auto edges = pgrouting::pgget::get_edges(std::string(edges_sql), true, false); if (edges.empty()) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } hint = nullptr; @@ -126,7 +126,7 @@ void pgr_do_ksp( (*return_tuples) = NULL; (*return_count) = 0; notice << "No paths found"; - *log_msg = pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(notice); return; } @@ -139,32 +139,28 @@ void pgr_do_ksp( } *return_count = count; - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/ksp/turnRestrictedPath_driver.cpp b/src/ksp/turnRestrictedPath_driver.cpp index d79b49a9c5..a041c01f6a 100644 --- a/src/ksp/turnRestrictedPath_driver.cpp +++ b/src/ksp/turnRestrictedPath_driver.cpp @@ -99,7 +99,7 @@ pgr_do_turnRestrictedPath( char ** err_msg) { using pgrouting::Path; using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; using pgrouting::yen::Pgr_turnRestrictedPath; using pgrouting::trsp::Rule; @@ -123,8 +123,8 @@ pgr_do_turnRestrictedPath( auto edges = get_edges(std::string(edges_sql), true, false); if (edges.empty()) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } hint = nullptr; @@ -205,33 +205,29 @@ pgr_do_turnRestrictedPath( pgassert(*err_msg == NULL); - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); pgassert(!log.str().empty()); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/ksp/withPoints_ksp_driver.cpp b/src/ksp/withPoints_ksp_driver.cpp index dae3a9e856..ba64f2dbe0 100644 --- a/src/ksp/withPoints_ksp_driver.cpp +++ b/src/ksp/withPoints_ksp_driver.cpp @@ -70,7 +70,7 @@ pgr_do_withPointsKsp( char ** err_msg) { using pgrouting::Path; using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; using pgrouting::yen::Pgr_ksp; using pgrouting::utilities::get_combinations; @@ -99,8 +99,8 @@ pgr_do_withPointsKsp( } if (combinations.empty() && combinations_sql) { - *notice_msg = pgr_msg("No (source, target) pairs found"); - *log_msg = pgr_msg(combinations_sql); + *notice_msg = to_pg_msg("No (source, target) pairs found"); + *log_msg = to_pg_msg(combinations_sql); return; } @@ -116,8 +116,8 @@ pgr_do_withPointsKsp( auto edges = get_edges(std::string(edges_sql), true, false); if (edges.size() + edges_of_points.size() == 0) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } hint = nullptr; @@ -130,8 +130,8 @@ pgr_do_withPointsKsp( if (pg_graph.has_error()) { log << pg_graph.get_log(); err << pg_graph.get_error(); - *log_msg = pgr_msg(log.str().c_str()); - *err_msg = pgr_msg(err.str().c_str()); + *log_msg = to_pg_msg(log); + *err_msg = to_pg_msg(err); return; } @@ -163,7 +163,7 @@ pgr_do_withPointsKsp( (*return_tuples) = NULL; (*return_count) = 0; notice << "No paths found"; - *log_msg = pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(notice); return; } @@ -180,37 +180,33 @@ pgr_do_withPointsKsp( if (count != sequence) { (*return_count) = 0; notice << "Something went wrong"; - *log_msg = pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(notice); return; } (*return_count) = sequence; - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/legacy/CMakeLists.txt b/src/legacy/CMakeLists.txt new file mode 100644 index 0000000000..bf5805b4fb --- /dev/null +++ b/src/legacy/CMakeLists.txt @@ -0,0 +1,3 @@ +ADD_LIBRARY(legacy OBJECT + legacy.c +) diff --git a/src/legacy/legacy.c b/src/legacy/legacy.c new file mode 100644 index 0000000000..452da3e011 --- /dev/null +++ b/src/legacy/legacy.c @@ -0,0 +1,57 @@ +/*PGR-GNU***************************************************************** +File: legacy.c + +Copyright (c) 2017 pgRouting developers +Mail: project@pgrouting.org + +Copyright (c) 2018-2020 Regina Obe +------ + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + ********************************************************************PGR-GNU*/ + +/****************************************************************************** + * This file is to hold functions we no longer use, + * but we need to keep because they were used at one time behind SQL API functions. + * This is to ease pg_upgrade upgrades + * + * All functions in this file should throw an error telling the user to upgrade + * the install + * + *****************************************************************************/ + +#include "postgres.h" +#include "utils/builtins.h" + +#define PGROUTING_DEPRECATE(version, funcname) \ + Datum funcname(PG_FUNCTION_ARGS); \ + PG_FUNCTION_INFO_V1(funcname); \ + Datum funcname(__attribute__((unused)) PG_FUNCTION_ARGS) \ + { \ + ereport(ERROR, (\ + errcode(ERRCODE_FEATURE_NOT_SUPPORTED), \ + errmsg("A stored procedure tried to use deprecated C internal function '%s'", \ + __func__), \ + errdetail("Library function '%s' was deprecated in pgRouting %s", \ + __func__, version), \ + errhint("Consider upgrade pgRouting"))); \ + PG_RETURN_POINTER(NULL); \ + } + +PGROUTING_DEPRECATE("4.0.0", _pgr_trsp) +PGROUTING_DEPRECATE("4.0.0", _v4trsp) +PGROUTING_DEPRECATE("4.0.0", _trsp) + diff --git a/src/lineGraph/lineGraphFull_driver.cpp b/src/lineGraph/lineGraphFull_driver.cpp index ac19b177dc..19255dd534 100644 --- a/src/lineGraph/lineGraphFull_driver.cpp +++ b/src/lineGraph/lineGraphFull_driver.cpp @@ -75,7 +75,7 @@ pgr_do_lineGraphFull( char ** log_msg, char ** notice_msg, char ** err_msg) { - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; std::ostringstream log; @@ -93,8 +93,8 @@ pgr_do_lineGraphFull( hint = edges_sql; auto edges = pgrouting::pgget::get_edges(std::string(edges_sql), true, false); if (edges.empty()) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } hint = nullptr; @@ -128,36 +128,32 @@ pgr_do_lineGraphFull( (*return_count) = sequence; } #if 1 - log << line.log.str().c_str() << "\n\n\n"; + log << line.log.str() << "\n\n\n"; log << line << "\n"; #endif pgassert(*err_msg == NULL); - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/lineGraph/lineGraph_driver.cpp b/src/lineGraph/lineGraph_driver.cpp index 2f837e5282..71592c0c87 100644 --- a/src/lineGraph/lineGraph_driver.cpp +++ b/src/lineGraph/lineGraph_driver.cpp @@ -65,7 +65,7 @@ pgr_do_lineGraph( char ** log_msg, char ** notice_msg, char ** err_msg) { - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; std::ostringstream log; @@ -84,8 +84,8 @@ pgr_do_lineGraph( hint = edges_sql; auto edges = pgrouting::pgget::get_edges(std::string(edges_sql), true, false); if (edges.empty()) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } hint = nullptr; @@ -106,7 +106,7 @@ pgr_do_lineGraph( if (count == 0) { (*return_tuples) = NULL; (*return_count) = 0; - *log_msg = pgr_msg(log.str().c_str()); + *log_msg = to_pg_msg(log); return; } @@ -122,28 +122,28 @@ pgr_do_lineGraph( (*return_count) = sequence; pgassert(*err_msg == NULL); - *log_msg = log.str().empty()? *log_msg : pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? *notice_msg : pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/max_flow/edge_disjoint_paths_driver.cpp b/src/max_flow/edge_disjoint_paths_driver.cpp index 35fadb4069..cf1b30af65 100644 --- a/src/max_flow/edge_disjoint_paths_driver.cpp +++ b/src/max_flow/edge_disjoint_paths_driver.cpp @@ -83,7 +83,7 @@ pgr_do_edge_disjoint_paths( char** notice_msg, char **err_msg) { using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; using pgrouting::utilities::get_combinations; @@ -104,8 +104,8 @@ pgr_do_edge_disjoint_paths( hint = nullptr; if (combinations.empty() && combinations_sql) { - *notice_msg = pgr_msg("No (source, target) pairs found"); - *log_msg = pgr_msg(combinations_sql); + *notice_msg = to_pg_msg("No (source, target) pairs found"); + *log_msg = to_pg_msg(combinations_sql); return; } @@ -114,8 +114,8 @@ pgr_do_edge_disjoint_paths( hint = nullptr; if (edges.empty()) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = pgr_msg(edges_sql); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = to_pg_msg(edges_sql); return; } @@ -184,32 +184,28 @@ pgr_do_edge_disjoint_paths( *return_count = paths.size(); - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/max_flow/max_flow_driver.cpp b/src/max_flow/max_flow_driver.cpp index 7f7fd67cd6..b59db20d36 100644 --- a/src/max_flow/max_flow_driver.cpp +++ b/src/max_flow/max_flow_driver.cpp @@ -58,7 +58,7 @@ pgr_do_max_flow( char** notice_msg, char **err_msg) { using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; using pgrouting::utilities::get_combinations; @@ -79,8 +79,8 @@ pgr_do_max_flow( hint = nullptr; if (combinations.empty() && combinations_sql) { - *notice_msg = pgr_msg("No (source, target) pairs found"); - *log_msg = pgr_msg(combinations_sql); + *notice_msg = to_pg_msg("No (source, target) pairs found"); + *log_msg = to_pg_msg(combinations_sql); return; } @@ -95,7 +95,7 @@ pgr_do_max_flow( vertices.insert(targets.begin(), targets.end()); if (vertices.size() != (sources.size() + targets.size())) { - *err_msg = pgr_msg("A source found as sink"); + *err_msg = to_pg_msg("A source found as sink"); return; } @@ -104,7 +104,7 @@ pgr_do_max_flow( hint = nullptr; if (edges.empty()) { - *notice_msg = pgr_msg("No edges found"); + *notice_msg = to_pg_msg("No edges found"); *log_msg = edges_sql; return; } @@ -123,7 +123,7 @@ pgr_do_max_flow( max_flow = digraph.boykov_kolmogorov(); } else { log << "Unspecified algorithm!\n"; - *err_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(log); (*return_tuples) = NULL; (*return_count) = 0; return; @@ -145,32 +145,28 @@ pgr_do_max_flow( *return_count = flow_edges.size(); - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/max_flow/maximum_cardinality_matching_driver.cpp b/src/max_flow/maximum_cardinality_matching_driver.cpp index fc1587e7dd..9693cce2ed 100644 --- a/src/max_flow/maximum_cardinality_matching_driver.cpp +++ b/src/max_flow/maximum_cardinality_matching_driver.cpp @@ -58,7 +58,7 @@ pgr_do_maximum_cardinality_matching( char** notice_msg, char **err_msg) { using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; std::ostringstream log; @@ -71,8 +71,8 @@ pgr_do_maximum_cardinality_matching( auto edges = pgrouting::pgget::get_basic_edges(std::string(edges_sql)); if (edges.empty()) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } hint = nullptr; @@ -86,32 +86,28 @@ pgr_do_maximum_cardinality_matching( } *return_count = matched_vertices.size(); - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/max_flow/minCostMaxFlow_driver.cpp b/src/max_flow/minCostMaxFlow_driver.cpp index 512b39c227..0e5d505424 100644 --- a/src/max_flow/minCostMaxFlow_driver.cpp +++ b/src/max_flow/minCostMaxFlow_driver.cpp @@ -59,7 +59,7 @@ pgr_do_minCostMaxFlow( char **notice_msg, char **err_msg) { using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; using pgrouting::utilities::get_combinations; @@ -80,8 +80,8 @@ pgr_do_minCostMaxFlow( hint = nullptr; if (combinations.empty() && combinations_sql) { - *notice_msg = pgr_msg("No (source, target) pairs found"); - *log_msg = pgr_msg(combinations_sql); + *notice_msg = to_pg_msg("No (source, target) pairs found"); + *log_msg = to_pg_msg(combinations_sql); return; } @@ -96,7 +96,7 @@ pgr_do_minCostMaxFlow( vertices.insert(targets.begin(), targets.end()); if (vertices.size() != (sources.size() + targets.size())) { - *err_msg = pgr_msg("A source found as sink"); + *err_msg = to_pg_msg("A source found as sink"); return; } @@ -104,8 +104,8 @@ pgr_do_minCostMaxFlow( auto edges = pgrouting::pgget::get_costFlow_edges(std::string(edges_sql)); if (edges.empty()) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } hint = nullptr; @@ -140,32 +140,28 @@ pgr_do_minCostMaxFlow( *return_count = flow_edges.size(); pgassert(*err_msg == NULL); - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/metrics/betweennessCentrality.c b/src/metrics/betweennessCentrality.c index bbebd4f3cd..6890c259a9 100644 --- a/src/metrics/betweennessCentrality.c +++ b/src/metrics/betweennessCentrality.c @@ -60,7 +60,7 @@ process( result_count, &log_msg, &err_msg); - time_msg(" processing Centrality", start_t, clock()); + time_msg(" processing pgr_betweenessCentrality", start_t, clock()); if (err_msg && (*result_tuples)) { pfree(*result_tuples); diff --git a/src/metrics/betweennessCentrality_driver.cpp b/src/metrics/betweennessCentrality_driver.cpp index 5b71b13234..4b3791f062 100644 --- a/src/metrics/betweennessCentrality_driver.cpp +++ b/src/metrics/betweennessCentrality_driver.cpp @@ -35,7 +35,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include "metrics/betweennessCentrality.hpp" #include "cpp_common/pgdata_getters.hpp" - +#include "cpp_common/to_postgres.hpp" #include "cpp_common/assert.hpp" @@ -48,7 +48,7 @@ pgr_do_betweennessCentrality( size_t *return_count, char ** log_msg, char ** err_msg) { - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; std::ostringstream log; @@ -61,6 +61,9 @@ pgr_do_betweennessCentrality( pgassert(!(*return_tuples)); pgassert(*return_count == 0); + using pgrouting::metrics::betweennessCentrality; + using pgrouting::to_postgres::vector_to_tuple; + hint = edges_sql; auto edges = pgrouting::pgget::get_edges(std::string(edges_sql), true, true); @@ -73,46 +76,44 @@ pgr_do_betweennessCentrality( log << "Processing Directed graph\n"; pgrouting::DirectedGraph digraph; digraph.insert_edges(edges); - pgr_betweennesscentrality(digraph, *return_count, return_tuples); + vector_to_tuple(digraph, betweennessCentrality(digraph), *return_count, return_tuples); } else { log << "Processing Undirected graph\n"; pgrouting::UndirectedGraph undigraph; undigraph.insert_edges(edges); - pgr_betweennesscentrality(undigraph, *return_count, return_tuples); + vector_to_tuple(undigraph, betweennessCentrality(undigraph), *return_count, return_tuples); } if (*return_count == 0) { err << "No result generated, report this error\n"; - *err_msg = pgr_msg(err.str().c_str()); + *err_msg = to_pg_msg(err); *return_tuples = NULL; *return_count = 0; return; } - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); + *log_msg = to_pg_msg(log); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/mincut/stoerWagner_driver.cpp b/src/mincut/stoerWagner_driver.cpp index 14200fddf8..2a923eb265 100644 --- a/src/mincut/stoerWagner_driver.cpp +++ b/src/mincut/stoerWagner_driver.cpp @@ -61,7 +61,7 @@ pgr_do_stoerWagner( char ** notice_msg, char ** err_msg) { using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; std::ostringstream log; @@ -79,8 +79,8 @@ pgr_do_stoerWagner( hint = edges_sql; auto edges = pgrouting::pgget::get_edges(std::string(edges_sql), true, false); if (edges.empty()) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } hint = nullptr; @@ -109,32 +109,28 @@ pgr_do_stoerWagner( (*return_count) = count; pgassert(*err_msg == NULL); - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/ordering/cuthillMckeeOrdering_driver.cpp b/src/ordering/cuthillMckeeOrdering_driver.cpp index cc2315d7a1..0171a20c9c 100644 --- a/src/ordering/cuthillMckeeOrdering_driver.cpp +++ b/src/ordering/cuthillMckeeOrdering_driver.cpp @@ -79,7 +79,7 @@ void pgr_do_cuthillMckeeOrdering( char **notice_msg, char **err_msg) { using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; std::ostringstream log; @@ -97,8 +97,8 @@ void pgr_do_cuthillMckeeOrdering( hint = edges_sql; auto edges = pgrouting::pgget::get_edges(std::string(edges_sql), true, false); if (edges.empty()) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } hint = nullptr; @@ -114,7 +114,7 @@ void pgr_do_cuthillMckeeOrdering( (*return_tuples) = NULL; (*return_count) = 0; notice << "No results found"; - *log_msg = pgr_msg(log.str().c_str()); + *log_msg = to_pg_msg(log); } (*return_tuples) = pgr_alloc(count, (*return_tuples)); @@ -126,30 +126,30 @@ void pgr_do_cuthillMckeeOrdering( pgassert(*err_msg == NULL); *log_msg = log.str().empty() ? *log_msg : - pgr_msg(log.str().c_str()); + to_pg_msg(log); *notice_msg = notice.str().empty() ? *notice_msg : - pgr_msg(notice.str().c_str()); + to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/pickDeliver/pickDeliverEuclidean_driver.cpp b/src/pickDeliver/pickDeliverEuclidean_driver.cpp index f21e95d4f4..ccb66f8a7d 100644 --- a/src/pickDeliver/pickDeliverEuclidean_driver.cpp +++ b/src/pickDeliver/pickDeliverEuclidean_driver.cpp @@ -61,7 +61,7 @@ pgr_do_pickDeliverEuclidean( char **notice_msg, char **err_msg) { using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; std::ostringstream log; @@ -76,16 +76,16 @@ pgr_do_pickDeliverEuclidean( hint = customers_sql; auto orders = pgrouting::pgget::get_orders(std::string(customers_sql), false); if (orders.size() == 0) { - *notice_msg = pgr_msg("Insufficient data found on inner query"); - *log_msg = hint? pgr_msg(hint) : nullptr; + *notice_msg = to_pg_msg("Insufficient data found on inner query"); + *log_msg = hint? to_pg_msg(hint) : nullptr; return; } hint = vehicles_sql; auto vehicles = pgrouting::pgget::get_vehicles(std::string(vehicles_sql), false); if (vehicles.size() == 0) { - *notice_msg = pgr_msg("Insufficient data found on inner query"); - *log_msg = hint? pgr_msg(hint) : nullptr; + *notice_msg = to_pg_msg("Insufficient data found on inner query"); + *log_msg = hint? to_pg_msg(hint) : nullptr; return; } @@ -141,8 +141,8 @@ pgr_do_pickDeliverEuclidean( log.clear(); log << pd_problem.msg.get_error(); log << pd_problem.msg.get_log(); - *log_msg = pgr_msg(log.str().c_str()); - *err_msg = pgr_msg(err.str().c_str()); + *log_msg = to_pg_msg(log); + *err_msg = to_pg_msg(err); return; } log << pd_problem.msg.get_log(); @@ -179,40 +179,36 @@ pgr_do_pickDeliverEuclidean( log << pd_problem.msg.get_log(); pgassert(*err_msg == NULL); - *log_msg = log.str().empty()? - nullptr : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - nullptr : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { if (*return_tuples) free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (std::exception& except) { if (*return_tuples) free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (const std::pair& ex) { (*return_count) = 0; err << ex.first; log.str(""); log.clear(); log << ex.second; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { if (*return_tuples) free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/pickDeliver/pickDeliver_driver.cpp b/src/pickDeliver/pickDeliver_driver.cpp index 275f0ff056..00df3db3ed 100644 --- a/src/pickDeliver/pickDeliver_driver.cpp +++ b/src/pickDeliver/pickDeliver_driver.cpp @@ -66,7 +66,7 @@ pgr_do_pickDeliver( char **notice_msg, char **err_msg) { using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; std::ostringstream log; @@ -84,16 +84,16 @@ pgr_do_pickDeliver( hint = customers_sql; auto orders = pgrouting::pgget::get_orders(std::string(customers_sql), true); if (orders.size() == 0) { - *notice_msg = pgr_msg("Insufficient data found on inner query"); - *log_msg = hint? pgr_msg(hint) : nullptr; + *notice_msg = to_pg_msg("Insufficient data found on inner query"); + *log_msg = hint? to_pg_msg(hint) : nullptr; return; } hint = vehicles_sql; auto vehicles = pgrouting::pgget::get_vehicles(std::string(vehicles_sql), true); if (vehicles.size() == 0) { - *notice_msg = pgr_msg("Insufficient data found on inner query"); - *log_msg = hint? pgr_msg(hint) : nullptr; + *notice_msg = to_pg_msg("Insufficient data found on inner query"); + *log_msg = hint? to_pg_msg(hint) : nullptr; return; } @@ -101,8 +101,8 @@ pgr_do_pickDeliver( auto data_costs = pgrouting::pgget::get_matrixRows(std::string(matrix_sql)); if (data_costs.size() == 0) { - *notice_msg = pgr_msg("Insufficient data found on inner query"); - *log_msg = hint? pgr_msg(hint) : nullptr; + *notice_msg = to_pg_msg("Insufficient data found on inner query"); + *log_msg = hint? to_pg_msg(hint) : nullptr; return; } hint = nullptr; @@ -121,7 +121,7 @@ pgr_do_pickDeliver( for (const auto &v : vehicles) { if (v.start_node_id != depot_node && v.end_node_id != depot_node) { err << "All vehicles must depart & arrive to same node"; - *err_msg = pgr_msg(err.str().c_str()); + *err_msg = to_pg_msg(err); return; } } @@ -132,7 +132,7 @@ pgr_do_pickDeliver( for (const auto &o : orders) { if (o.pick_node_id != depot_node) { err << "All orders must be picked at depot"; - *err_msg = pgr_msg(err.str().c_str()); + *err_msg = to_pg_msg(err); return; } } @@ -140,7 +140,7 @@ pgr_do_pickDeliver( if (!cost_matrix.has_no_infinity()) { err << "An Infinity value was found on the Matrix"; - *err_msg = pgr_msg(err.str().c_str()); + *err_msg = to_pg_msg(err); return; } @@ -156,8 +156,8 @@ pgr_do_pickDeliver( err << pd_problem.msg.get_error(); if (!err.str().empty()) { log << pd_problem.msg.get_log(); - *log_msg = pgr_msg(log.str().c_str()); - *err_msg = pgr_msg(err.str().c_str()); + *log_msg = to_pg_msg(log); + *err_msg = to_pg_msg(err); return; } log << pd_problem.msg.get_log(); @@ -198,48 +198,44 @@ pgr_do_pickDeliver( (*return_count) = solution.size(); pgassert(*err_msg == NULL); - *log_msg = log.str().empty()? - nullptr : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - nullptr : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { if (*return_tuples) free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (std::exception& except) { if (*return_tuples) free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (const std::pair& ex) { (*return_count) = 0; err << ex.first; log.str(""); log.clear(); log << ex.second; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::pair& ex) { (*return_count) = 0; err << ex.first; log.str(""); log.clear(); log << "Node missing on matrix: id = " << ex.second; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { if (*return_tuples) free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/planar/boyerMyrvold_driver.cpp b/src/planar/boyerMyrvold_driver.cpp index dea82dfb12..1d9ccd334b 100644 --- a/src/planar/boyerMyrvold_driver.cpp +++ b/src/planar/boyerMyrvold_driver.cpp @@ -53,7 +53,7 @@ pgr_do_boyerMyrvold( char ** notice_msg, char ** err_msg) { using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; using pgrouting::pgget::get_edges; @@ -97,7 +97,7 @@ pgr_do_boyerMyrvold( (*return_count) = 0; notice << "No Vertices"; - *log_msg = pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(notice); return; } @@ -108,32 +108,28 @@ pgr_do_boyerMyrvold( (*return_count) = count; pgassert(*err_msg == NULL); - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/planar/isPlanar_driver.cpp b/src/planar/isPlanar_driver.cpp index bc707f9859..4e37463a56 100644 --- a/src/planar/isPlanar_driver.cpp +++ b/src/planar/isPlanar_driver.cpp @@ -50,7 +50,7 @@ pgr_do_isPlanar( char ** notice_msg, char ** err_msg) { using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; using pgrouting::pgget::get_edges; @@ -79,28 +79,24 @@ pgr_do_isPlanar( result = fn_isPlanar.isPlanar(undigraph); pgassert(*err_msg == NULL); - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); return result; } catch (AssertFailedException &except) { err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } return false; } diff --git a/src/spanningTree/kruskal.c b/src/spanningTree/kruskal.c index 7e0d11c888..aa5bb47dfa 100644 --- a/src/spanningTree/kruskal.c +++ b/src/spanningTree/kruskal.c @@ -170,7 +170,11 @@ PGDLLEXPORT Datum _pgr_kruskalv4(PG_FUNCTION_ARGS) { } } -/***********************************************************************************/ +/* Deprecated code starts here + * This code is used on v3.6 and under + * + * TODO(v5) Move to legacy + */ PGDLLEXPORT Datum _pgr_kruskal(PG_FUNCTION_ARGS); PG_FUNCTION_INFO_V1(_pgr_kruskal); @@ -182,6 +186,12 @@ PGDLLEXPORT Datum _pgr_kruskal(PG_FUNCTION_ARGS) { MST_rt *result_tuples = NULL; size_t result_count = 0; + ereport(NOTICE, ( + errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("A stored procedure is using deprecated C internal function '%s'", __func__), + errdetail("Library function '%s' was deprecated in pgRouting %s", __func__, "3.7.0"), + errhint("Consider upgrade pgRouting"))); + if (SRF_IS_FIRSTCALL()) { MemoryContext oldcontext; funcctx = SRF_FIRSTCALL_INIT(); diff --git a/src/spanningTree/kruskal_driver.cpp b/src/spanningTree/kruskal_driver.cpp index 91d9b2328a..8fc6181273 100644 --- a/src/spanningTree/kruskal_driver.cpp +++ b/src/spanningTree/kruskal_driver.cpp @@ -58,7 +58,7 @@ pgr_do_kruskal( char ** notice_msg, char ** err_msg) { using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; using pgrouting::pgget::get_intArray; @@ -92,8 +92,8 @@ pgr_do_kruskal( if (edges.empty()) { results = pgrouting::details::get_no_edge_graph_result(roots); - *notice_msg = pgr_msg("No edges found"); - *log_msg = pgr_msg(edges_sql); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = to_pg_msg(edges_sql); } else { if (suffix == "") { results = kruskal.kruskal(undigraph); @@ -105,7 +105,7 @@ pgr_do_kruskal( results = kruskal.kruskalDD(undigraph, roots, distance); } else { err << "Unknown Kruskal function"; - *err_msg = pgr_msg(err.str().c_str()); + *err_msg = to_pg_msg(err); return; } } @@ -119,32 +119,28 @@ pgr_do_kruskal( (*return_count) = count; pgassert(*err_msg == NULL); - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/spanningTree/mst_common.cpp b/src/spanningTree/mst_common.cpp index 1f2a4f6818..c9fbaacb80 100644 --- a/src/spanningTree/mst_common.cpp +++ b/src/spanningTree/mst_common.cpp @@ -35,7 +35,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. int get_order(char * fn_suffix, char ** err_msg) { - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; std::ostringstream err; try { pgassert(!(*err_msg)); @@ -45,10 +45,10 @@ get_order(char * fn_suffix, char ** err_msg) { if (suffix == "BFS") return 2; if (suffix == "DD") return 1; err << "Unknown function suffix" << suffix; - *err_msg = pgr_msg(err.str().c_str()); + *err_msg = to_pg_msg(err); } catch (std::exception &except) { err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); + *err_msg = to_pg_msg(err); } return -1; } @@ -56,7 +56,7 @@ get_order(char * fn_suffix, char ** err_msg) { char * get_name(int fn_id, char * fn_suffix, char ** err_msg) { - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; std::ostringstream err; try { pgassert(!(*err_msg)); @@ -68,15 +68,15 @@ get_name(int fn_id, char * fn_suffix, char ** err_msg) { break; default : name = "unknown"; err << "Unknown function name"; - *err_msg = pgr_msg(err.str().c_str()); + *err_msg = to_pg_msg(err); } std::string suffix(fn_suffix); name += suffix; - char * full_name = pgr_msg(name.c_str()); + char * full_name = to_pg_msg(name.c_str()); return full_name; } catch (std::exception &except) { err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); + *err_msg = to_pg_msg(err); } return nullptr; } diff --git a/src/spanningTree/prim.c b/src/spanningTree/prim.c index 93071398f3..141ae580f6 100644 --- a/src/spanningTree/prim.c +++ b/src/spanningTree/prim.c @@ -171,7 +171,11 @@ PGDLLEXPORT Datum _pgr_primv4(PG_FUNCTION_ARGS) { } } -/******************************************************************************/ +/* Deprecated code starts here + * This code is used on v3.6 and under + * + * TODO(v5) Move to legacy + */ PGDLLEXPORT Datum _pgr_prim(PG_FUNCTION_ARGS); PG_FUNCTION_INFO_V1(_pgr_prim); @@ -183,6 +187,12 @@ PGDLLEXPORT Datum _pgr_prim(PG_FUNCTION_ARGS) { MST_rt *result_tuples = NULL; size_t result_count = 0; + ereport(NOTICE, ( + errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("A stored procedure is using deprecated C internal function '%s'", __func__), + errdetail("Library function '%s' was deprecated in pgRouting %s", __func__, "3.7.0"), + errhint("Consider upgrade pgRouting"))); + if (SRF_IS_FIRSTCALL()) { MemoryContext oldcontext; funcctx = SRF_FIRSTCALL_INIT(); diff --git a/src/spanningTree/prim_driver.cpp b/src/spanningTree/prim_driver.cpp index de2f06b5ff..b194b2ac33 100644 --- a/src/spanningTree/prim_driver.cpp +++ b/src/spanningTree/prim_driver.cpp @@ -60,7 +60,7 @@ pgr_do_prim( char ** notice_msg, char ** err_msg) { using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; using pgrouting::pgget::get_intArray; @@ -94,8 +94,8 @@ pgr_do_prim( if (edges.empty()) { results = pgrouting::details::get_no_edge_graph_result(roots); - *notice_msg = pgr_msg("No edges found"); - *log_msg = pgr_msg(edges_sql); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = to_pg_msg(edges_sql); } else { if (suffix == "") { results = prim.prim(undigraph); @@ -107,7 +107,7 @@ pgr_do_prim( results = prim.primDD(undigraph, roots, distance); } else { err << "Unknown Prim function"; - *err_msg = pgr_msg(err.str().c_str()); + *err_msg = to_pg_msg(err); return; } } @@ -121,32 +121,28 @@ pgr_do_prim( (*return_count) = count; pgassert(*err_msg == NULL); - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/spanningTree/randomSpanningTree_driver.cpp b/src/spanningTree/randomSpanningTree_driver.cpp index 9c5fca8549..c56c59fe90 100644 --- a/src/spanningTree/randomSpanningTree_driver.cpp +++ b/src/spanningTree/randomSpanningTree_driver.cpp @@ -61,7 +61,7 @@ pgr_do_randomSpanningTree( char ** notice_msg, char ** err_msg) { using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; std::ostringstream log; @@ -81,8 +81,8 @@ pgr_do_randomSpanningTree( auto edges = pgrouting::pgget::get_edges(std::string(edges_sql), true, false); if (edges.empty()) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } hint = nullptr; @@ -123,32 +123,28 @@ pgr_do_randomSpanningTree( (*return_count) = count; pgassert(*err_msg == NULL); - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/topologicalSort/topologicalSort_driver.cpp b/src/topologicalSort/topologicalSort_driver.cpp index 8e98f706af..339587822f 100644 --- a/src/topologicalSort/topologicalSort_driver.cpp +++ b/src/topologicalSort/topologicalSort_driver.cpp @@ -66,7 +66,7 @@ pgr_do_topologicalSort( char ** notice_msg, char ** err_msg) { using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; std::ostringstream log; @@ -84,8 +84,8 @@ pgr_do_topologicalSort( hint = edges_sql; auto edges = pgrouting::pgget::get_edges(std::string(edges_sql), true, false); if (edges.empty()) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } hint = nullptr; @@ -113,32 +113,28 @@ pgr_do_topologicalSort( (*return_count) = count; pgassert(*err_msg == NULL); - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/transitiveClosure/transitiveClosure_driver.cpp b/src/transitiveClosure/transitiveClosure_driver.cpp index d2e0dd9278..e4f3d34449 100644 --- a/src/transitiveClosure/transitiveClosure_driver.cpp +++ b/src/transitiveClosure/transitiveClosure_driver.cpp @@ -102,7 +102,7 @@ pgr_do_transitiveClosure( char **log_msg, char **notice_msg, char **err_msg) { - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; std::ostringstream log; @@ -120,8 +120,8 @@ pgr_do_transitiveClosure( hint = edges_sql; auto edges = pgrouting::pgget::get_edges(std::string(edges_sql), true, false); if (edges.empty()) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } hint = nullptr; @@ -134,32 +134,28 @@ pgr_do_transitiveClosure( return_tuples, return_count); - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/traversal/depthFirstSearch_driver.cpp b/src/traversal/depthFirstSearch_driver.cpp index 7f23c2c17f..2e41e78c6c 100644 --- a/src/traversal/depthFirstSearch_driver.cpp +++ b/src/traversal/depthFirstSearch_driver.cpp @@ -94,7 +94,7 @@ pgr_do_depthFirstSearch( char ** notice_msg, char ** err_msg) { using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; using pgrouting::pgget::get_intArray; @@ -119,8 +119,8 @@ pgr_do_depthFirstSearch( if (edges.empty()) { results = pgrouting::details::get_no_edge_graph_result(roots); - *notice_msg = pgr_msg("No edges found"); - *log_msg = pgr_msg(edges_sql); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = to_pg_msg(edges_sql); } else { if (directed) { pgrouting::DirectedGraph digraph; @@ -149,7 +149,7 @@ pgr_do_depthFirstSearch( (*return_tuples) = NULL; (*return_count) = 0; notice << "No traversal found"; - *log_msg = pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(notice); return; } @@ -160,32 +160,28 @@ pgr_do_depthFirstSearch( (*return_count) = count; pgassert(*err_msg == NULL); - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/trsp/CMakeLists.txt b/src/trsp/CMakeLists.txt index 981520e675..10e32d4661 100644 --- a/src/trsp/CMakeLists.txt +++ b/src/trsp/CMakeLists.txt @@ -1,8 +1,5 @@ add_library(trsp OBJECT # keeping these for backwards compatibility - trsp_deprecated.c - trsp_deprecated_driver.cpp - GraphDefinition.cpp edgeInfo.cpp trspHandler.cpp diff --git a/src/trsp/GraphDefinition.cpp b/src/trsp/GraphDefinition.cpp deleted file mode 100644 index 8c3847ac3e..0000000000 --- a/src/trsp/GraphDefinition.cpp +++ /dev/null @@ -1,663 +0,0 @@ -/*PGR-GNU***************************************************************** -File: GraphDefinition.cpp - -Copyright (c) 2015 pgRouting developers -Mail: project@pgrouting.org - ------- - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - ********************************************************************PGR-GNU*/ - -#include "trsp/GraphDefinition.hpp" - -#include -#include -#include -#include - -#include "c_types/edge_rt.h" - -// ------------------------------------------------------------------------- -GraphDefinition::GraphDefinition(void) { - m_lStartEdgeId = -1; - m_lEndEdgeId = 0; - m_dStartpart = 0.0; - m_dEndPart = 0.0; - m_dCost = NULL; - m_bIsturnRestrictOn = false; - m_bIsGraphConstructed = false; - parent = NULL; - init(); -} - -// ------------------------------------------------------------------------- -GraphDefinition::~GraphDefinition(void) { -} - - -// ------------------------------------------------------------------------- -void GraphDefinition::init() { - max_edge_id = 0; - max_node_id = 0; - isStartVirtual = false; - isEndVirtual = false; -} - - -// ------------------------------------------------------------------------- -void GraphDefinition::deleteall() { - std::vector::iterator it; - for (it = m_vecEdgeVector.begin(); it != m_vecEdgeVector.end(); ++it) { - delete *it; - } - m_vecEdgeVector.clear(); - - delete [] parent; - delete [] m_dCost; -} - - -// ------------------------------------------------------------------------- -double GraphDefinition::construct_path(int64 ed_id, int64 v_pos) { - if (parent[ed_id].ed_ind[v_pos] == -1) { - path_element_tt pelement; - GraphEdgeInfo* cur_edge = m_vecEdgeVector[static_cast(ed_id)]; - if (v_pos == 0) { - pelement.vertex_id = cur_edge->m_lStartNode; - pelement.cost = cur_edge->m_dCost; - } else { - pelement.vertex_id = cur_edge->m_lEndNode; - pelement.cost = cur_edge->m_dReverseCost; - } - pelement.edge_id = cur_edge->m_lEdgeID; - - m_vecPath.push_back(pelement); - return pelement.cost; - } - double ret = construct_path(parent[ed_id].ed_ind[v_pos], - parent[ed_id].v_pos[v_pos]); - path_element_tt pelement; - GraphEdgeInfo* cur_edge = m_vecEdgeVector[static_cast(ed_id)]; - if (v_pos == 0) { - pelement.vertex_id = cur_edge->m_lStartNode; - pelement.cost = m_dCost[ed_id].endCost - ret; // cur_edge.m_dCost; - ret = m_dCost[ed_id].endCost; - } else { - pelement.vertex_id = cur_edge->m_lEndNode; - pelement.cost = m_dCost[ed_id].startCost - ret; - ret = m_dCost[ed_id].startCost; - } - pelement.edge_id = cur_edge->m_lEdgeID; - - m_vecPath.push_back(pelement); - - return ret; -} - - -// ------------------------------------------------------------------------- -double GraphDefinition::getRestrictionCost( - int64 edge_ind, - GraphEdgeInfo& new_edge, - bool isStart) { - double cost = 0.0; - int64 edge_id = new_edge.m_lEdgeID; - if (m_ruleTable.find(edge_id) == m_ruleTable.end()) { - return(0.0); - } - std::vector vecRules = m_ruleTable[edge_id]; - int64 st_edge_ind = edge_ind; - for (const auto &rule : vecRules) { - bool flag = true; - int64 v_pos = (isStart?0:1); - edge_ind = st_edge_ind; - for (auto const &precedence : rule.precedencelist) { - if (edge_ind == -1) { - flag = false; - break; - } - if (precedence != m_vecEdgeVector[static_cast(edge_ind)]->m_lEdgeID) { - flag = false; - break; - } - auto parent_ind = parent[static_cast(edge_ind)].ed_ind[static_cast(v_pos)]; - v_pos = parent[edge_ind].v_pos[v_pos]; - edge_ind = parent_ind; - } - if (flag) - cost += rule.cost; - } - return cost; -} - - -// ------------------------------------------------------------------------- -void GraphDefinition::explore( - int64 cur_node, - GraphEdgeInfo& cur_edge, - bool isStart, - LongVector &vecIndex, - std::priority_queue, - std::greater > &que) { - double totalCost; - for (const auto &index : vecIndex) { - auto new_edge = m_vecEdgeVector[static_cast(index)]; - double extCost = 0.0; - if (m_bIsturnRestrictOn) { - extCost = getRestrictionCost(cur_edge.m_lEdgeIndex, - *new_edge, isStart); - } - if (new_edge->m_lStartNode == cur_node) { - if (new_edge->m_dCost >= 0.0) { - if (isStart) - totalCost = m_dCost[cur_edge.m_lEdgeIndex].endCost + - new_edge->m_dCost + extCost; - else - totalCost = m_dCost[cur_edge.m_lEdgeIndex].startCost + - new_edge->m_dCost + extCost; - if (totalCost < m_dCost[index].endCost) { - m_dCost[index].endCost = totalCost; - parent[new_edge->m_lEdgeIndex].v_pos[0] = (isStart?0:1); - parent[new_edge->m_lEdgeIndex].ed_ind[0] = - cur_edge.m_lEdgeIndex; - que.push(std::make_pair(totalCost, - std::make_pair(new_edge->m_lEdgeIndex, true))); - } - } - } else { - if (new_edge->m_dReverseCost >= 0.0) { - if (isStart) - totalCost = m_dCost[cur_edge.m_lEdgeIndex].endCost + - new_edge->m_dReverseCost + extCost; - else - totalCost = m_dCost[cur_edge.m_lEdgeIndex].startCost + - new_edge->m_dReverseCost + extCost; - if (totalCost < m_dCost[index].startCost) { - m_dCost[index].startCost = totalCost; - parent[new_edge->m_lEdgeIndex].v_pos[1] = (isStart?0:1); - parent[new_edge->m_lEdgeIndex].ed_ind[1] = - cur_edge.m_lEdgeIndex; - que.push(std::make_pair(totalCost, - std::make_pair(new_edge->m_lEdgeIndex, false))); - } - } - } - } -} - - - - -// ------------------------------------------------------------------------- -int GraphDefinition::my_dijkstra1( - Edge_t *edges, size_t edge_count, - int64 start_edge_id, double start_part, - int64 end_edge_id, double end_part, - bool directed, bool has_reverse_cost, - - path_element_tt **path, - size_t *path_count, - char **err_msg, - std::vector &ruleList) { - if (!m_bIsGraphConstructed) { - init(); - construct_graph(edges, edge_count, has_reverse_cost, directed); - m_bIsGraphConstructed = true; - } - GraphEdgeInfo* start_edge_info = - m_vecEdgeVector[static_cast(m_mapEdgeId2Index[static_cast(start_edge_id)])]; - Edge_t start_edge; - int64 start_vertex, end_vertex; - m_dStartpart = start_part; - m_dEndPart = end_part; - m_lStartEdgeId = start_edge_id; - m_lEndEdgeId = end_edge_id; - - if (start_part == 0.0) { - start_vertex = start_edge_info->m_lStartNode; - } else if (start_part == 1.0) { - start_vertex = start_edge_info->m_lEndNode; - } else { - isStartVirtual = true; - m_lStartEdgeId = start_edge_id; - start_vertex = max_node_id + 1; - max_node_id++; - start_edge.id = max_edge_id + 1; - max_edge_id++; - start_edge.source = start_vertex; - start_edge.reverse_cost = -1.0; - if (start_edge_info->m_dCost >= 0.0) { - start_edge.target = start_edge_info->m_lEndNode; - start_edge.cost = (1.0 - start_part) * start_edge_info->m_dCost; - addEdge(start_edge); - edge_count++; - } - if (start_edge_info->m_dReverseCost >= 0.0) { - start_edge.id = max_edge_id + 1; - max_edge_id++; - start_edge.target = start_edge_info->m_lStartNode; - start_edge.cost = start_part * start_edge_info->m_dReverseCost; - addEdge(start_edge); - edge_count++; - } - } - - GraphEdgeInfo* end_edge_info = - m_vecEdgeVector[static_cast(m_mapEdgeId2Index[static_cast(end_edge_id)])]; - Edge_t end_edge; - - if (end_part == 0.0) { - end_vertex = end_edge_info->m_lStartNode; - } else if (end_part == 1.0) { - end_vertex = end_edge_info->m_lEndNode; - } else { - isEndVirtual = true; - m_lEndEdgeId = end_edge_id; - end_vertex = max_node_id + 1; - max_node_id++; - end_edge.id = max_edge_id + 1; - max_edge_id++; - end_edge.target = end_vertex; - end_edge.reverse_cost = -1.0; - if (end_edge_info->m_dCost >= 0.0) { - end_edge.source = end_edge_info->m_lStartNode; - end_edge.cost = end_part * end_edge_info->m_dCost; - addEdge(end_edge); - edge_count++; - } - if (end_edge_info->m_dReverseCost >= 0.0) { - end_edge.source = end_edge_info->m_lEndNode; - end_edge.id = max_edge_id + 1; - end_edge.cost = (1.0 - end_part) * end_edge_info->m_dReverseCost; - addEdge(end_edge); - edge_count++; - } - } - - return(my_dijkstra2( - edges, edge_count, - start_vertex, end_vertex, - directed, has_reverse_cost, - - path, path_count, err_msg, - - ruleList)); -} - - -// ------------------------------------------------------------------------- -int GraphDefinition:: my_dijkstra2( - Edge_t *edges, size_t edge_count, - int64 start_vertex, int64 end_vertex, - bool directed, bool has_reverse_cost, - - path_element_tt **path, size_t *path_count, - char **err_msg, - std::vector &ruleList) { - m_ruleTable.clear(); - LongVector vecsource; - for (const auto &rule : ruleList) { - size_t j; - size_t seq_cnt = rule.second.size(); - std::vector temp_precedencelist; - temp_precedencelist.clear(); - for (j = 1; j < seq_cnt; j++) { - temp_precedencelist.push_back(rule.second[j]); - } - int64 dest_edge_id = rule.second[0]; - if (m_ruleTable.find(dest_edge_id) != m_ruleTable.end()) { - m_ruleTable[dest_edge_id].push_back(Rule(rule.first, - temp_precedencelist)); - } else { - std::vector temprules; - temprules.clear(); - temprules.push_back(Rule(rule.first, temp_precedencelist)); - m_ruleTable.insert(std::make_pair(dest_edge_id, temprules)); - } - - if (isStartVirtual) { - if (seq_cnt == 2 && rule.second[1] == m_lStartEdgeId) { - vecsource = m_mapNodeId2Edge[start_vertex]; - for (const auto &source : vecsource) { - temp_precedencelist.clear(); - temp_precedencelist.push_back( - m_vecEdgeVector[static_cast(source)]->m_lEdgeID); - m_ruleTable[dest_edge_id].push_back(Rule(rule.first, - temp_precedencelist)); - } - } - } - } - if (isEndVirtual) { - if (m_ruleTable.find(m_lEndEdgeId) != m_ruleTable.end()) { - std::vector tmpRules = m_ruleTable[m_lEndEdgeId]; - vecsource = m_mapNodeId2Edge[end_vertex]; - for (const auto &source : vecsource) { - m_ruleTable.insert(std::make_pair( - m_vecEdgeVector[static_cast(source)]->m_lEdgeID, tmpRules)); - } - } - } - m_bIsturnRestrictOn = true; - return(my_dijkstra3( - edges, edge_count, - start_vertex, end_vertex, - directed, has_reverse_cost, - path, path_count, err_msg)); -} - -// ------------------------------------------------------------------------- -int GraphDefinition:: my_dijkstra3( - Edge_t *edges, size_t edge_count, - int64 start_vertex, int64 end_vertex, - bool directed, bool has_reverse_cost, - path_element_tt **path, size_t *path_count, char **err_msg - ) { - if (!m_bIsGraphConstructed) { - init(); - construct_graph(edges, edge_count, has_reverse_cost, directed); - m_bIsGraphConstructed = true; - } - - std::priority_queue, std::greater > que; - parent = new PARENT_PATH[edge_count + 1]; - m_dCost = new CostHolder[edge_count + 1]; - m_vecPath.clear(); - - unsigned int i; - for (i = 0; i <= edge_count; i++) { - m_dCost[i].startCost = 1e15; - m_dCost[i].endCost = 1e15; - } - - if (m_mapNodeId2Edge.find(start_vertex) == m_mapNodeId2Edge.end()) { - *err_msg = const_cast("Source Not Found"); - deleteall(); - return -1; - } - - if (m_mapNodeId2Edge.find(end_vertex) == m_mapNodeId2Edge.end()) { - *err_msg = const_cast("Destination Not Found"); - deleteall(); - return -1; - } - - LongVector vecsource = m_mapNodeId2Edge[start_vertex]; - GraphEdgeInfo* cur_edge = NULL; - - for (const auto &source : vecsource) { - cur_edge = m_vecEdgeVector[static_cast(source)]; - if (cur_edge->m_lStartNode == start_vertex) { - if (cur_edge->m_dCost >= 0.0) { - m_dCost[cur_edge->m_lEdgeIndex].endCost = cur_edge->m_dCost; - parent[cur_edge->m_lEdgeIndex].v_pos[0] = -1; - parent[cur_edge->m_lEdgeIndex].ed_ind[0] = -1; - que.push(std::make_pair(cur_edge->m_dCost, - std::make_pair(cur_edge->m_lEdgeIndex, true))); - } - } else { - if (cur_edge->m_dReverseCost >= 0.0) { - m_dCost[cur_edge->m_lEdgeIndex].startCost = - cur_edge->m_dReverseCost; - parent[cur_edge->m_lEdgeIndex].v_pos[1] = -1; - parent[cur_edge->m_lEdgeIndex].ed_ind[1] = -1; - que.push(std::make_pair(cur_edge->m_dReverseCost, - std::make_pair(cur_edge->m_lEdgeIndex, false))); - } - } - } - int64 cur_node = -1; - - while (!que.empty()) { - PDP cur_pos = que.top(); - que.pop(); - int64 cured_index = cur_pos.second.first; - cur_edge = m_vecEdgeVector[static_cast(cured_index)]; - - if (cur_pos.second.second) { // explore edges connected to end node - cur_node = cur_edge->m_lEndNode; - if (cur_edge->m_dCost < 0.0) - continue; - if (cur_node == end_vertex) - break; - explore(cur_node, *cur_edge, true, cur_edge->m_vecEndConnedtedEdge, - que); - } else { // explore edges connected to start node - cur_node = cur_edge->m_lStartNode; - if (cur_edge->m_dReverseCost < 0.0) - continue; - if (cur_node == end_vertex) - break; - explore(cur_node, *cur_edge, false, - cur_edge->m_vecStartConnectedEdge, que); - } - } - if (cur_node != end_vertex) { - if (m_lStartEdgeId == m_lEndEdgeId) { - if (get_single_cost(1000.0, path, path_count)) { - return 0; - } - } - *err_msg = const_cast("Path Not Found"); - deleteall(); - return -1; - } else { - double total_cost; - if (cur_node == cur_edge->m_lStartNode) { - total_cost = m_dCost[cur_edge->m_lEdgeIndex].startCost; - construct_path(cur_edge->m_lEdgeIndex, 1); - } else { - total_cost = m_dCost[cur_edge->m_lEdgeIndex].endCost; - construct_path(cur_edge->m_lEdgeIndex, 0); - } - path_element_tt pelement; - pelement.vertex_id = end_vertex; - pelement.edge_id = -1; - pelement.cost = 0.0; - m_vecPath.push_back(pelement); - - if (m_lStartEdgeId == m_lEndEdgeId) { - if (get_single_cost(total_cost, path, path_count)) { - return 0; - } - } - - *path = reinterpret_cast( - malloc(sizeof(path_element_tt) * (m_vecPath.size() + 1))); - *path_count = m_vecPath.size(); - - for (size_t i = 0; i < *path_count; i++) { - (*path)[i].vertex_id = m_vecPath[i].vertex_id; - (*path)[i].edge_id = m_vecPath[i].edge_id; - (*path)[i].cost = m_vecPath[i].cost; - } - if (isStartVirtual) { - (*path)[0].vertex_id = -1; - (*path)[0].edge_id = m_lStartEdgeId; - } - if (isEndVirtual) { - *path_count = *path_count - 1; - (*path)[*path_count - 1].edge_id = m_lEndEdgeId; - } - } - deleteall(); - return 0; -} - -// ------------------------------------------------------------------------- -bool GraphDefinition::get_single_cost(double total_cost, path_element_tt **path, - size_t *path_count) { - GraphEdgeInfo* start_edge_info = - m_vecEdgeVector[static_cast(m_mapEdgeId2Index[m_lStartEdgeId])]; - if (m_dEndPart >= m_dStartpart) { - if (start_edge_info->m_dCost >= 0.0 && start_edge_info->m_dCost * - (m_dEndPart - m_dStartpart) <= total_cost) { - *path = reinterpret_cast(malloc( - sizeof(path_element_tt) * (1))); - *path_count = 1; - (*path)[0].vertex_id = -1; - (*path)[0].edge_id = m_lStartEdgeId; - (*path)[0].cost = start_edge_info->m_dCost * - (m_dEndPart - m_dStartpart); - - return true; - } - } else { - if (start_edge_info->m_dReverseCost >= 0.0 && - start_edge_info->m_dReverseCost * (m_dStartpart - m_dEndPart) <= - total_cost) { - *path = reinterpret_cast(malloc( - sizeof(path_element_tt) * (1))); - *path_count = 1; - (*path)[0].vertex_id = -1; - (*path)[0].edge_id = m_lStartEdgeId; - (*path)[0].cost = start_edge_info->m_dReverseCost * - (m_dStartpart - m_dEndPart); - - return true; - } - } - return false; -} - - -// ------------------------------------------------------------------------- -bool GraphDefinition::construct_graph(Edge_t* edges, size_t edge_count, - bool has_reverse_cost, bool directed) { - for (size_t i = 0; i < edge_count; i++) { - if (!has_reverse_cost) { - if (directed) { - edges[i].reverse_cost = -1.0; - } else { - edges[i].reverse_cost = edges[i].cost; - } - } - addEdge(edges[i]); - } - m_bIsGraphConstructed = true; - return true; -} - - -// ------------------------------------------------------------------------- -bool GraphDefinition::connectEdge(GraphEdgeInfo& firstEdge, - GraphEdgeInfo& secondEdge, bool bIsStartNodeSame) { - if (bIsStartNodeSame) { - if (firstEdge.m_dReverseCost >= 0.0) - firstEdge.m_vecStartConnectedEdge.push_back( - secondEdge.m_lEdgeIndex); - if (firstEdge.m_lStartNode == secondEdge.m_lStartNode) { - if (secondEdge.m_dReverseCost >= 0.0) - secondEdge.m_vecStartConnectedEdge.push_back( - firstEdge.m_lEdgeIndex); - } else { - if (secondEdge.m_dCost >= 0.0) - secondEdge.m_vecEndConnedtedEdge.push_back( - firstEdge.m_lEdgeIndex); - } - } else { - if (firstEdge.m_dCost >= 0.0) - firstEdge.m_vecEndConnedtedEdge.push_back(secondEdge.m_lEdgeIndex); - if (firstEdge.m_lEndNode == secondEdge.m_lStartNode) { - if (secondEdge.m_dReverseCost >= 0.0) - secondEdge.m_vecStartConnectedEdge.push_back( - firstEdge.m_lEdgeIndex); - } else { - if (secondEdge.m_dCost >= 0.0) - secondEdge.m_vecEndConnedtedEdge.push_back( - firstEdge.m_lEdgeIndex); - } - } - return true; -} - - -// ------------------------------------------------------------------------- -bool GraphDefinition::addEdge(Edge_t edgeIn) { - // int64 lTest; - Long2LongMap::iterator itMap = m_mapEdgeId2Index.find(edgeIn.id); - if (itMap != m_mapEdgeId2Index.end()) - return false; - - - GraphEdgeInfo* newEdge = new GraphEdgeInfo(); - newEdge->m_vecStartConnectedEdge.clear(); - newEdge->m_vecEndConnedtedEdge.clear(); - newEdge->m_vecRestrictedEdge.clear(); - newEdge->m_lEdgeID = edgeIn.id; - newEdge->m_lEdgeIndex = static_cast(m_vecEdgeVector.size()); - newEdge->m_lStartNode = edgeIn.source; - newEdge->m_lEndNode = edgeIn.target; - newEdge->m_dCost = edgeIn.cost; - newEdge->m_dReverseCost = edgeIn.reverse_cost; - - if (edgeIn.id > max_edge_id) { - max_edge_id = edgeIn.id; - } - - if (newEdge->m_lStartNode > max_node_id) { - max_node_id = newEdge->m_lStartNode; - } - if (newEdge->m_lEndNode > max_node_id) { - max_node_id = newEdge->m_lEndNode; - } - - // Searching the start node for connectivity - Long2LongVectorMap::iterator itNodeMap = m_mapNodeId2Edge.find( - edgeIn.source); - if (itNodeMap != m_mapNodeId2Edge.end()) { - // Connect current edge with existing edge with start node - // connectEdge( - int64 lEdgeCount = static_cast(itNodeMap->second.size()); - int64 lEdgeIndex; - for (lEdgeIndex = 0; lEdgeIndex < lEdgeCount; lEdgeIndex++) { - int64 lEdge = itNodeMap->second.at(static_cast(lEdgeIndex)); - connectEdge(*newEdge, *m_vecEdgeVector[static_cast(lEdge)], true); - } - } - - - // Searching the end node for connectivity - itNodeMap = m_mapNodeId2Edge.find(edgeIn.target); - if (itNodeMap != m_mapNodeId2Edge.end()) { - // Connect current edge with existing edge with end node - // connectEdge( - int64 lEdgeCount = static_cast(itNodeMap->second.size()); - int64 lEdgeIndex; - for (lEdgeIndex = 0; lEdgeIndex < lEdgeCount; lEdgeIndex++) { - int64 lEdge = itNodeMap->second.at(static_cast(lEdgeIndex)); - connectEdge(*newEdge, *m_vecEdgeVector[static_cast(lEdge)], false); - } - } - - - - // Add this node and edge into the data structure - m_mapNodeId2Edge[edgeIn.source].push_back(newEdge->m_lEdgeIndex); - m_mapNodeId2Edge[edgeIn.target].push_back(newEdge->m_lEdgeIndex); - - - // Adding edge to the list - m_mapEdgeId2Index.insert(std::make_pair(newEdge->m_lEdgeID, - m_vecEdgeVector.size())); - m_vecEdgeVector.push_back(newEdge); - - // - - - return true; -} diff --git a/src/trsp/trsp.c b/src/trsp/trsp.c index 8a221bd575..3574150186 100644 --- a/src/trsp/trsp.c +++ b/src/trsp/trsp.c @@ -1,10 +1,10 @@ /*PGR-GNU***************************************************************** -File: new_trsp.c +File: trsp.c Copyright (c) 2017 pgRouting developers Mail: project@pgrouting.org Copyright (c) 2017 Vicky Vergara -Mail: vicky at georepublic.de +Mail: vicky at erosion.dev ------ @@ -37,12 +37,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. PGDLLEXPORT Datum _pgr_trspv4(PG_FUNCTION_ARGS); PG_FUNCTION_INFO_V1(_pgr_trspv4); -PGDLLEXPORT Datum _trsp(PG_FUNCTION_ARGS); -PG_FUNCTION_INFO_V1(_trsp); - -PGDLLEXPORT Datum _v4trsp(PG_FUNCTION_ARGS); -PG_FUNCTION_INFO_V1(_v4trsp); - static void process( @@ -183,183 +177,3 @@ _pgr_trspv4(PG_FUNCTION_ARGS) { SRF_RETURN_DONE(funcctx); } } - - -PGDLLEXPORT Datum -_v4trsp(PG_FUNCTION_ARGS) { - FuncCallContext *funcctx; - TupleDesc tuple_desc; - - size_t result_count = 0; - Path_rt *result_tuples = NULL; - - if (SRF_IS_FIRSTCALL()) { - MemoryContext oldcontext; - funcctx = SRF_FIRSTCALL_INIT(); - oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx); - - if (PG_NARGS() == 5) { - process( - text_to_cstring(PG_GETARG_TEXT_P(0)), - text_to_cstring(PG_GETARG_TEXT_P(1)), - NULL, - PG_GETARG_ARRAYTYPE_P(2), - PG_GETARG_ARRAYTYPE_P(3), - PG_GETARG_BOOL(4), - &result_tuples, &result_count); - } else /* (PG_NARGS() == 4) */ { - process( - text_to_cstring(PG_GETARG_TEXT_P(0)), - text_to_cstring(PG_GETARG_TEXT_P(1)), - text_to_cstring(PG_GETARG_TEXT_P(2)), - NULL, - NULL, - PG_GETARG_BOOL(3), - &result_tuples, &result_count); - } - - funcctx->max_calls = result_count; - funcctx->user_fctx = result_tuples; - - if (get_call_result_type(fcinfo, NULL, &tuple_desc) - != TYPEFUNC_COMPOSITE) { - ereport(ERROR, - (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("function returning record called in context " - "that cannot accept type record"))); - } - - funcctx->tuple_desc = tuple_desc; - MemoryContextSwitchTo(oldcontext); - } - - funcctx = SRF_PERCALL_SETUP(); - - tuple_desc = funcctx->tuple_desc; - result_tuples = (Path_rt *) funcctx->user_fctx; - - if (funcctx->call_cntr < funcctx->max_calls) { - HeapTuple tuple; - Datum result; - Datum *values; - bool* nulls; - size_t call_cntr = funcctx->call_cntr; - - size_t numb = 8; - values = palloc(numb * sizeof(Datum)); - nulls = palloc(numb * sizeof(bool)); - - size_t i; - for (i = 0; i < numb; ++i) { - nulls[i] = false; - } - - int64_t path_seq = call_cntr == 0? 1 : result_tuples[call_cntr - 1].start_id; - - values[0] = Int32GetDatum((int32_t)call_cntr + 1); - values[1] = Int32GetDatum((int32_t)path_seq); - values[2] = Int64GetDatum(result_tuples[call_cntr].start_id); - values[3] = Int64GetDatum(result_tuples[call_cntr].end_id); - values[4] = Int64GetDatum(result_tuples[call_cntr].node); - values[5] = Int64GetDatum(result_tuples[call_cntr].edge); - values[6] = Float8GetDatum(result_tuples[call_cntr].cost); - values[7] = Float8GetDatum(result_tuples[call_cntr].agg_cost); - - result_tuples[call_cntr].start_id = result_tuples[call_cntr].edge < 0? 1 : path_seq + 1; - - tuple = heap_form_tuple(tuple_desc, values, nulls); - - result = HeapTupleGetDatum(tuple); - - pfree(values); - pfree(nulls); - - SRF_RETURN_NEXT(funcctx, result); - } else { - SRF_RETURN_DONE(funcctx); - } -} - -PGDLLEXPORT Datum -_trsp(PG_FUNCTION_ARGS) { - FuncCallContext *funcctx; - TupleDesc tuple_desc; - - size_t result_count = 0; - Path_rt *result_tuples = NULL; - - if (SRF_IS_FIRSTCALL()) { - MemoryContext oldcontext; - funcctx = SRF_FIRSTCALL_INIT(); - oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx); - - process( - text_to_cstring(PG_GETARG_TEXT_P(0)), - text_to_cstring(PG_GETARG_TEXT_P(1)), - NULL, - PG_GETARG_ARRAYTYPE_P(2), - PG_GETARG_ARRAYTYPE_P(3), - PG_GETARG_BOOL(4), - &result_tuples, &result_count); - - funcctx->max_calls = result_count; - funcctx->user_fctx = result_tuples; - - if (get_call_result_type(fcinfo, NULL, &tuple_desc) - != TYPEFUNC_COMPOSITE) { - ereport(ERROR, - (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("function returning record called in context " - "that cannot accept type record"))); - } - - funcctx->tuple_desc = tuple_desc; - MemoryContextSwitchTo(oldcontext); - } - - funcctx = SRF_PERCALL_SETUP(); - - tuple_desc = funcctx->tuple_desc; - result_tuples = (Path_rt *) funcctx->user_fctx; - - if (funcctx->call_cntr < funcctx->max_calls) { - HeapTuple tuple; - Datum result; - Datum *values; - bool* nulls; - size_t call_cntr = funcctx->call_cntr; - - - size_t numb = 8; - values = palloc(numb * sizeof(Datum)); - nulls = palloc(numb * sizeof(bool)); - - size_t i; - for (i = 0; i < numb; ++i) { - nulls[i] = false; - } - - int64_t path_seq = call_cntr == 0? 1 : result_tuples[call_cntr - 1].start_id; - - values[0] = Int32GetDatum((int32_t)call_cntr + 1); - values[1] = Int32GetDatum((int32_t)path_seq); - values[2] = Int64GetDatum(result_tuples[call_cntr].start_id); - values[3] = Int64GetDatum(result_tuples[call_cntr].end_id); - values[4] = Int64GetDatum(result_tuples[call_cntr].node); - values[5] = Int64GetDatum(result_tuples[call_cntr].edge); - values[6] = Float8GetDatum(result_tuples[call_cntr].cost); - values[7] = Float8GetDatum(result_tuples[call_cntr].agg_cost); - - result_tuples[call_cntr].start_id = result_tuples[call_cntr].edge < 0? 1 : path_seq + 1; - - tuple = heap_form_tuple(tuple_desc, values, nulls); - result = HeapTupleGetDatum(tuple); - - pfree(values); - pfree(nulls); - - SRF_RETURN_NEXT(funcctx, result); - } else { - SRF_RETURN_DONE(funcctx); - } -} diff --git a/src/trsp/trspHandler.cpp b/src/trsp/trspHandler.cpp index 29963e5407..b14f472b95 100644 --- a/src/trsp/trspHandler.cpp +++ b/src/trsp/trspHandler.cpp @@ -42,8 +42,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. namespace pgrouting { namespace trsp { -// ------------------------------------------------------------------------- -Pgr_trspHandler::Pgr_trspHandler( +TrspHandler::TrspHandler( std::vector &edges, const bool directed, const std::vector &ruleList) : @@ -55,29 +54,10 @@ Pgr_trspHandler::Pgr_trspHandler( m_idx_to_id[id.second] = id.first; } - construct_graph(edges, directed); + construct_graph(edges, std::vector(), directed); } -Pgr_trspHandler::Pgr_trspHandler( - Edge_t *edges, - const size_t edge_count, - const bool directed, - const std::vector &ruleList) : - m_ruleTable() { - initialize_restrictions(ruleList); - - renumber_edges(edges, edge_count); - for (const auto& id : m_id_to_idx) { - m_idx_to_id[id.second] = id.first; - } - - construct_graph( - edges, - edge_count, - directed); -} - -Pgr_trspHandler::Pgr_trspHandler( +TrspHandler::TrspHandler( std::vector &edges, const std::vector &new_edges, const bool directed, @@ -92,44 +72,14 @@ Pgr_trspHandler::Pgr_trspHandler( m_idx_to_id[id.second] = id.first; } - construct_graph( - edges, - directed); - add_point_edges( - point_edges, - directed); -} - -Pgr_trspHandler::Pgr_trspHandler( - Edge_t *edges, - const size_t edge_count, - const std::vector &new_edges, - const bool directed, - const std::vector &ruleList) : - m_ruleTable() { - initialize_restrictions(ruleList); - - auto point_edges = new_edges; - renumber_edges(edges, edge_count, point_edges); - - for (const auto& id : m_id_to_idx) { - m_idx_to_id[id.second] = id.first; - } - - construct_graph( - edges, - edge_count, - directed); - add_point_edges( - point_edges, - directed); + construct_graph(edges, point_edges, directed); } // ------------------------------------------------------------------------- void -Pgr_trspHandler::renumber_edges(std::vector &edges) { +TrspHandler::renumber_edges(std::vector &edges) { int64_t idx(0); for (auto &e : edges) { if (m_id_to_idx.find(e.source) == m_id_to_idx.end()) { @@ -145,27 +95,9 @@ Pgr_trspHandler::renumber_edges(std::vector &edges) { } } -void -Pgr_trspHandler::renumber_edges( - Edge_t *edges, - size_t total_edges) { - int64_t idx(0); - for (size_t i = 0; i < total_edges; ++i) { - if (m_id_to_idx.find(edges[i].source) == m_id_to_idx.end()) { - m_id_to_idx[edges[i].source] = idx; - ++idx; - } - if (m_id_to_idx.find(edges[i].target) == m_id_to_idx.end()) { - m_id_to_idx[edges[i].target] = idx; - ++idx; - } - edges[i].source = m_id_to_idx.at(edges[i].source); - edges[i].target = m_id_to_idx.at(edges[i].target); - } -} void -Pgr_trspHandler::renumber_edges( +TrspHandler::renumber_edges( std::vector &edges, std::vector &new_edges) { int64_t idx(0); @@ -195,42 +127,10 @@ Pgr_trspHandler::renumber_edges( } } -void -Pgr_trspHandler::renumber_edges( - Edge_t *edges, - size_t total_edges, - std::vector& new_edges) { - int64_t idx(0); - for (size_t i = 0; i < total_edges; ++i) { - if (m_id_to_idx.find(edges[i].source) == m_id_to_idx.end()) { - m_id_to_idx[edges[i].source] = idx; - ++idx; - } - if (m_id_to_idx.find(edges[i].target) == m_id_to_idx.end()) { - m_id_to_idx[edges[i].target] = idx; - ++idx; - } - edges[i].source = m_id_to_idx.at(edges[i].source); - edges[i].target = m_id_to_idx.at(edges[i].target); - } - for (auto &e : new_edges) { - if (m_id_to_idx.find(e.source) == m_id_to_idx.end()) { - m_id_to_idx[e.source] = idx; - ++idx; - } - if (m_id_to_idx.find(e.target) == m_id_to_idx.end()) { - m_id_to_idx[e.target] = idx; - ++idx; - } - e.source = m_id_to_idx.at(e.source); - e.target = m_id_to_idx.at(e.target); - } -} - // ------------------------------------------------------------------------- -void Pgr_trspHandler::clear() { +void TrspHandler::clear() { m_parent.clear(); m_dCost.clear(); m_path.clear(); @@ -238,7 +138,7 @@ void Pgr_trspHandler::clear() { // ------------------------------------------------------------------------- -double Pgr_trspHandler::construct_path(int64_t ed_id, Position pos) { +double TrspHandler::construct_path(int64_t ed_id, Position pos) { if (pos == ILLEGAL) return (std::numeric_limits::max)(); pgassert(pos != ILLEGAL); @@ -282,7 +182,7 @@ double Pgr_trspHandler::construct_path(int64_t ed_id, Position pos) { // ------------------------------------------------------------------------- -double Pgr_trspHandler::getRestrictionCost( +double TrspHandler::getRestrictionCost( int64_t edge_ind, const EdgeInfo &edge, bool isStart) { @@ -315,7 +215,7 @@ double Pgr_trspHandler::getRestrictionCost( } -double Pgr_trspHandler::get_tot_cost( +double TrspHandler::get_tot_cost( double cost, size_t edge_idx, bool isStart) { @@ -329,7 +229,7 @@ double Pgr_trspHandler::get_tot_cost( // ------------------------------------------------------------------------- -void Pgr_trspHandler::explore( +void TrspHandler::explore( int64_t cur_node, const EdgeInfo cur_edge, bool isStart) { @@ -380,7 +280,7 @@ void Pgr_trspHandler::explore( // ------------------------------------------------------------------------- -int Pgr_trspHandler::initialize_restrictions( +int TrspHandler::initialize_restrictions( const std::vector &ruleList) { for (const auto &rule : ruleList) { auto dest_edge_id = rule.dest_id(); @@ -402,7 +302,7 @@ int Pgr_trspHandler::initialize_restrictions( * */ Path -Pgr_trspHandler::process( +TrspHandler::process( const int64_t start_vertex, const int64_t end_vertex) { if (m_id_to_idx.find(start_vertex) == m_id_to_idx.end() @@ -438,7 +338,7 @@ Pgr_trspHandler::process( * */ std::deque -Pgr_trspHandler::process( +TrspHandler::process( const std::map> &combinations ) { std::deque paths; @@ -451,77 +351,40 @@ Pgr_trspHandler::process( return paths; } -/** process - * - * does many to many processisng - * - */ -std::deque -Pgr_trspHandler::process( - const std::vector sources, - const std::vector targets) { - std::deque paths; - for (const auto &s : sources) { - for (const auto &t : targets) { - paths.push_back(process(s, t)); - } - } - - std::sort(paths.begin(), paths.end(), - [](const Path &e1, const Path &e2)->bool { - return e1.end_id() < e2.end_id(); - }); - std::stable_sort(paths.begin(), paths.end(), - [](const Path &e1, const Path &e2)->bool { - return e1.start_id() < e2.start_id(); - }); - return paths; -} - - -void Pgr_trspHandler::add_to_que( - double cost, - size_t e_idx, - bool isStart) { - que.push(std::make_pair(cost, - std::make_pair(e_idx, isStart))); -} - - // ------------------------------------------------------------------------- +void TrspHandler::add_to_que(double cost, size_t e_idx, bool isStart) { + m_que.push(std::make_pair(cost, std::make_pair(e_idx, isStart))); +} -void Pgr_trspHandler::initialize_que() { +void TrspHandler::initialize_que() { /* * For each adjacent edge to the start_vertex */ for (const auto source : m_adjacency[m_start_vertex]) { EdgeInfo &cur_edge = m_edges[source]; - if (cur_edge.startNode() == m_start_vertex - && cur_edge.cost() >= 0.0) { + if (cur_edge.startNode() == m_start_vertex && cur_edge.cost() >= 0.0) { m_dCost[cur_edge.idx()].endCost = cur_edge.cost(); m_parent[cur_edge.idx()].v_pos[0] = ILLEGAL; add_to_que(cur_edge.cost(), cur_edge.idx(), true); } - if (cur_edge.endNode() == m_start_vertex - && cur_edge.r_cost() >= 0.0) { - m_dCost[cur_edge.idx()].startCost = - cur_edge.r_cost(); + if (cur_edge.endNode() == m_start_vertex && cur_edge.r_cost() >= 0.0) { + m_dCost[cur_edge.idx()].startCost = cur_edge.r_cost(); m_parent[cur_edge.idx()].v_pos[1] = ILLEGAL; add_to_que(cur_edge.r_cost(), cur_edge.idx(), false); } } } -EdgeInfo Pgr_trspHandler::dijkstra_exploration() { +EdgeInfo TrspHandler::dijkstra_exploration() { EdgeInfo cur_edge; - pgassert(current_node == m_start_vertex); + pgassert(m_current_node == m_start_vertex); - while (!que.empty()) { - auto cur_pos = que.top(); - que.pop(); + while (!m_que.empty()) { + auto cur_pos = m_que.top(); + m_que.pop(); auto cure_idxex = cur_pos.second.first; cur_edge = m_edges[static_cast(cure_idxex)]; @@ -530,18 +393,18 @@ EdgeInfo Pgr_trspHandler::dijkstra_exploration() { /* * explore edges connected to end node */ - current_node = cur_edge.endNode(); + m_current_node = cur_edge.endNode(); if (cur_edge.cost() < 0.0) continue; - if (current_node == m_end_vertex) break; - explore(current_node, cur_edge, false); + if (m_current_node == m_end_vertex) break; + explore(m_current_node, cur_edge, false); } else { /* * explore edges connected to start node */ - current_node = cur_edge.startNode(); + m_current_node = cur_edge.startNode(); if (cur_edge.r_cost() < 0.0) continue; - if (current_node == m_end_vertex) break; - explore(current_node, cur_edge, true); + if (m_current_node == m_end_vertex) break; + explore(m_current_node, cur_edge, true); } } return cur_edge; @@ -551,7 +414,7 @@ EdgeInfo Pgr_trspHandler::dijkstra_exploration() { Path -Pgr_trspHandler::process_trsp( +TrspHandler::process_trsp( size_t edge_count) { pgassert(m_path.start_id() == m_start_vertex); pgassert(m_path.end_id() == m_end_vertex); @@ -562,25 +425,21 @@ Pgr_trspHandler::process_trsp( initialize_que(); - current_node = m_start_vertex; + m_current_node = m_start_vertex; pgassert(m_path.start_id() == m_start_vertex); auto cur_edge = dijkstra_exploration(); pgassert(m_path.start_id() == m_start_vertex); - if (current_node != m_end_vertex) { + if (m_current_node != m_end_vertex) { Path result(m_start_vertex, m_end_vertex); return result.renumber_vertices(m_idx_to_id);; } pgassert(m_path.start_id() == m_start_vertex); - if (current_node == cur_edge.startNode()) { - construct_path(static_cast(cur_edge.idx()), C_EDGE); - } else { - construct_path(static_cast(cur_edge.idx()), RC_EDGE); - } + construct_path(static_cast(cur_edge.idx()), m_current_node == cur_edge.startNode()? C_EDGE : RC_EDGE); Path_t pelement = {}; pelement.node = m_end_vertex; @@ -593,41 +452,23 @@ Pgr_trspHandler::process_trsp( } - - - -// ------------------------------------------------------------------------- -void Pgr_trspHandler::construct_graph( +void TrspHandler::construct_graph( const std::vector &edges, + const std::vector &new_edges, const bool directed) { for (const auto &e : edges) { addEdge(e, directed); } - m_mapEdgeId2Index.clear(); -} - -void Pgr_trspHandler::construct_graph( - Edge_t* edges, - const size_t edge_count, - const bool directed) { - for (size_t i = 0; i < edge_count; i++) { - addEdge(edges[i], directed); + for (const auto &e : new_edges) { + addEdge(e, directed); } m_mapEdgeId2Index.clear(); } -void Pgr_trspHandler::add_point_edges( - const std::vector &new_edges, - const bool directed) { - for (auto current_edge : new_edges) { - addEdge(current_edge, directed); - } - m_mapEdgeId2Index.clear(); -} // ------------------------------------------------------------------------- -void Pgr_trspHandler::connectStartEdge( +void TrspHandler::connectStartEdge( size_t firstEdge_idx, size_t secondEdge_idx) { EdgeInfo &firstEdge = m_edges[firstEdge_idx]; @@ -650,7 +491,7 @@ void Pgr_trspHandler::connectStartEdge( // ------------------------------------------------------------------------- -void Pgr_trspHandler::connectEndEdge( +void TrspHandler::connectEndEdge( size_t firstEdge_idx, size_t secondEdge_idx) { EdgeInfo &firstEdge = m_edges[firstEdge_idx]; @@ -673,7 +514,7 @@ void Pgr_trspHandler::connectEndEdge( // ------------------------------------------------------------------------- -bool Pgr_trspHandler::addEdge(Edge_t edgeIn, bool directed) { +bool TrspHandler::addEdge(Edge_t edgeIn, bool directed) { /* * making all "cost" > 0 */ @@ -682,33 +523,33 @@ bool Pgr_trspHandler::addEdge(Edge_t edgeIn, bool directed) { std::swap(edgeIn.source, edgeIn.target); } - if (!directed) { - if (edgeIn.reverse_cost < 0) { - edgeIn.reverse_cost = edgeIn.cost; - } + /* This gives a value to reverse_cost when:" + * graph is undirected + * reverse_cost is negative + */ + if (!directed && edgeIn.reverse_cost < 0) { + edgeIn.reverse_cost = edgeIn.cost; } - /* * the index of this new edge in the edges container is * m_edges.size() */ EdgeInfo edge(edgeIn, m_edges.size()); - + /* + * Add to the set of edges + */ m_edges.push_back(edge); - EdgeInfo &newEdge = m_edges[m_edges.size()-1]; - - /* * Searching the start node for connectivity */ auto itNodeMap = m_adjacency.find(edgeIn.source); if (itNodeMap != m_adjacency.end()) { - for (const auto e_idx : itNodeMap->second) { + for (const auto &e_idx : itNodeMap->second) { connectStartEdge(edge.idx(), e_idx); } } @@ -719,7 +560,7 @@ bool Pgr_trspHandler::addEdge(Edge_t edgeIn, bool directed) { */ itNodeMap = m_adjacency.find(edgeIn.target); if (itNodeMap != m_adjacency.end()) { - for (const auto e_idx : itNodeMap->second) { + for (const auto &e_idx : itNodeMap->second) { connectEndEdge(edge.idx(), e_idx); } } diff --git a/src/trsp/trspVia_driver.cpp b/src/trsp/trspVia_driver.cpp index 9c5a0cf39b..aa026c9049 100644 --- a/src/trsp/trspVia_driver.cpp +++ b/src/trsp/trspVia_driver.cpp @@ -148,7 +148,7 @@ pgr_do_trspVia( char** err_msg) { using pgrouting::Path; using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; using pgrouting::pgget::get_intArray; @@ -171,8 +171,8 @@ pgr_do_trspVia( auto edges = pgrouting::pgget::get_edges(std::string(edges_sql), true, false); if (edges.empty()) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = pgr_msg(edges_sql); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = to_pg_msg(edges_sql); return; } hint = nullptr; @@ -184,7 +184,7 @@ pgr_do_trspVia( if (directed) { pgrouting::DirectedGraph digraph; digraph.insert_edges(edges); - pgrouting::pgr_dijkstraVia( + pgrouting::dijkstraVia( digraph, via, paths, @@ -194,7 +194,7 @@ pgr_do_trspVia( } else { pgrouting::UndirectedGraph undigraph; undigraph.insert_edges(edges); - pgrouting::pgr_dijkstraVia( + pgrouting::dijkstraVia( undigraph, via, paths, @@ -207,7 +207,7 @@ pgr_do_trspVia( if (count == 0) { notice << "No paths found"; - *log_msg = pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(notice); return; } @@ -239,7 +239,7 @@ pgr_do_trspVia( auto new_combinations = pgrouting::utilities::get_combinations(paths, ruleList); if (!new_combinations.empty()) { - pgrouting::trsp::Pgr_trspHandler gdef(edges, directed, ruleList); + pgrouting::trsp::TrspHandler gdef(edges, directed, ruleList); auto new_paths = gdef.process(new_combinations); paths.insert(paths.end(), new_paths.begin(), new_paths.end()); } @@ -257,32 +257,28 @@ pgr_do_trspVia( (*return_count) = (get_route(return_tuples, paths)); (*return_tuples)[count - 1].edge = -2; - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/trsp/trspVia_withPoints_driver.cpp b/src/trsp/trspVia_withPoints_driver.cpp index 5c057cb13f..ed48655a04 100644 --- a/src/trsp/trspVia_withPoints_driver.cpp +++ b/src/trsp/trspVia_withPoints_driver.cpp @@ -151,7 +151,7 @@ pgr_do_trspVia_withPoints( char** err_msg) { using pgrouting::Path; using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; using pgrouting::pgget::get_intArray; @@ -179,8 +179,8 @@ pgr_do_trspVia_withPoints( auto edges = pgrouting::pgget::get_edges(std::string(edges_sql), true, false); if (edges.size() + edges_of_points.size() == 0) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } @@ -199,8 +199,8 @@ pgr_do_trspVia_withPoints( if (pg_graph.has_error()) { log << pg_graph.get_log(); err << pg_graph.get_error(); - *log_msg = pgr_msg(log.str().c_str()); - *err_msg = pgr_msg(err.str().c_str()); + *log_msg = to_pg_msg(log); + *err_msg = to_pg_msg(err); return; } @@ -212,7 +212,7 @@ pgr_do_trspVia_withPoints( pgrouting::DirectedGraph digraph; digraph.insert_edges(edges); digraph.insert_edges(pg_graph.new_edges()); - pgrouting::pgr_dijkstraVia( + pgrouting::dijkstraVia( digraph, via, paths, @@ -223,7 +223,7 @@ pgr_do_trspVia_withPoints( pgrouting::UndirectedGraph undigraph; undigraph.insert_edges(edges); undigraph.insert_edges(pg_graph.new_edges()); - pgrouting::pgr_dijkstraVia( + pgrouting::dijkstraVia( undigraph, via, paths, @@ -240,7 +240,7 @@ pgr_do_trspVia_withPoints( if (count == 0) { notice << "No paths found"; - *log_msg = pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(notice); return; } @@ -261,7 +261,7 @@ pgr_do_trspVia_withPoints( auto new_combinations = pgrouting::utilities::get_combinations(paths, ruleList); if (!new_combinations.empty()) { - pgrouting::trsp::Pgr_trspHandler gdef( + pgrouting::trsp::TrspHandler gdef( edges, pg_graph.new_edges(), directed, @@ -287,32 +287,28 @@ pgr_do_trspVia_withPoints( (*return_count) = (get_route(return_tuples, paths)); (*return_tuples)[count - 1].edge = -2; - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/trsp/trsp_deprecated.c b/src/trsp/trsp_deprecated.c deleted file mode 100644 index 00f450914c..0000000000 --- a/src/trsp/trsp_deprecated.c +++ /dev/null @@ -1,453 +0,0 @@ -/*PGR-GNU***************************************************************** -File: trsp_deprecated.c - -Generated with Template by: -Copyright (c) 2013 pgRouting developers -Mail: project@pgrouting.org - ------- - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - ********************************************************************PGR-GNU*/ - - -#include "c_common/postgres_connection.h" -#include "catalog/pg_type.h" - -#include "c_common/debug_macro.h" -#include "c_common/e_report.h" -#include "c_types/trsp/trsp.h" -#include "c_types/edge_rt.h" -#include "c_common/trsp_pgget.h" -#include "drivers/trsp/trsp_deprecated_driver.h" - -typedef struct restrict_t restrict_t; -typedef struct Edge_rt Edge_t; -typedef struct path_element_tt path_element_tt; - -PGDLLEXPORT Datum _pgr_trsp(PG_FUNCTION_ARGS); - - -typedef struct edge_columns { - int id; - int source; - int target; - int cost; - int reverse_cost; -} edge_columns_t; - -typedef struct restrict_columns { - int target_id; - int via_path; - int to_cost; -} restrict_columns_t; - - -/* - * This function fetches the resturction columns from an SPITupleTable.. - * -*/ -static int -fetch_restrict_columns(SPITupleTable *tuptable, - restrict_columns_t *restrict_columns) { - restrict_columns->target_id = SPI_fnumber(tuptable->tupdesc, "target_id"); - restrict_columns->via_path = SPI_fnumber(tuptable->tupdesc, "via_path"); - restrict_columns->to_cost = SPI_fnumber(tuptable->tupdesc, "to_cost"); - if (restrict_columns->target_id == SPI_ERROR_NOATTRIBUTE || - restrict_columns->via_path == SPI_ERROR_NOATTRIBUTE || - restrict_columns->to_cost == SPI_ERROR_NOATTRIBUTE) { - elog(ERROR, "Error, restriction query must return columns " - "'target_id', 'via_path' and 'to_cost'"); - return -1; - } - - if (SPI_gettypeid(tuptable->tupdesc, - restrict_columns->target_id) != INT4OID || - SPI_gettypeid(tuptable->tupdesc, restrict_columns->via_path) != TEXTOID || - SPI_gettypeid(tuptable->tupdesc, restrict_columns->to_cost) != FLOAT8OID) { - elog(ERROR, "Error, restriction columns 'target_id' must be of type int4," - "'via_path' must be of type text, 'to_cost' must be of type float8"); - return -1; - } - - return 0; -} - - -/* - * To fetch a edge from Tuple. - * - */ - -static void -fetch_restrict(HeapTuple *tuple, TupleDesc *tupdesc, - restrict_columns_t *restrict_columns, restrict_t *rest) { - Datum binval; - bool isnull; - int t; - - for (t = 0; t < MAX_RULE_LENGTH; ++t) - rest->via[t] = -1; - - binval = SPI_getbinval(*tuple, *tupdesc, restrict_columns->target_id, - &isnull); - if (isnull) - elog(ERROR, "target_id contains a null value"); - rest->target_id = DatumGetInt32(binval); - - binval = SPI_getbinval(*tuple, *tupdesc, restrict_columns->to_cost, &isnull); - if (isnull) - elog(ERROR, "to_cost contains a null value"); - rest->to_cost = DatumGetFloat8(binval); - char *str = SPI_getvalue(*tuple, *tupdesc, restrict_columns->via_path); - - // PGR_DBG("restriction: %f, %i, %s", rest->to_cost, rest->target_id, str); - - if (str != NULL) { - int ci = 0; - char* pch = (char *)strtok(str, " ,"); - - while (pch != NULL && ci < MAX_RULE_LENGTH) { - rest->via[ci] = atoi(pch); - // PGR_DBG(" rest->via[%i]=%i", ci, rest->via[ci]); - ci++; - pch = (char *)strtok(NULL, " ,"); - } - } -} - - - -static int compute_trsp( - char* edges_sql, - int dovertex, - int64_t start_id, - double start_pos, - int64_t end_id, - double end_pos, - bool directed, - bool has_reverse_cost, - char* restrict_sql, - path_element_tt **path, - size_t *path_count) { - pgr_SPI_connect(); - char* err_msg = NULL; - - SPIPlanPtr SPIplan; - Portal SPIportal; - - Edge_t *edges = NULL; - size_t total_tuples = 0; - pgr_get_edges(edges_sql, &edges, &total_tuples, true, false, &err_msg); - pgr_throw_error(err_msg, edges_sql); - - // defining min and max vertex id - int64_t v_max_id = 0; - int64_t v_min_id = INT_MAX; - - size_t z; - for (z = 0; z < total_tuples; z++) { - PGR_DBG("id %ld source %ld target %ld cost %f rev %f", - edges[z].id, edges[z].source, edges[z].target, edges[z].cost, edges[z].reverse_cost); - if (edges[z].source < v_min_id) - v_min_id = edges[z].source; - - if (edges[z].source > v_max_id) - v_max_id = edges[z].source; - - if (edges[z].target < v_min_id) - v_min_id = edges[z].target; - - if (edges[z].target > v_max_id) - v_max_id = edges[z].target; - } - - // :::::::::::::::::::::::::::::::::::: - // :: reducing vertex id (renumbering) - // :::::::::::::::::::::::::::::::::::: - /* track if start and end are both in edge tuples */ - int s_count = 0; - int t_count = 0; - for (z = 0; z < total_tuples; z++) { - // check if edges[] contains source and target - if (dovertex) { - if (edges[z].source == start_id || edges[z].target == start_id) - ++s_count; - if (edges[z].source == end_id || edges[z].target == end_id) - ++t_count; - } else { - if (edges[z].id == start_id) - ++s_count; - if (edges[z].id == end_id) - ++t_count; - } - - edges[z].source -= v_min_id; - edges[z].target -= v_min_id; - } - - PGR_DBG("Min vertex id: %ld , Max vid: %ld", v_min_id, v_max_id); - PGR_DBG("Total %ld edge tuples", total_tuples); - - if (s_count == 0) { - elog(ERROR, "Start id was not found."); - return -1; - } - - if (t_count == 0) { - elog(ERROR, "Target id was not found."); - return -1; - } - - if (dovertex) { - start_id -= v_min_id; - end_id -= v_min_id; - } - - PGR_DBG("Fetching restriction tuples\n"); - restrict_t *restricts = NULL; - uint64_t total_restrict_tuples = 0; - restrict_columns_t restrict_columns = {.target_id = -1, .via_path = -1, - .to_cost = -1}; - - int ret = -1; - - if (restrict_sql == NULL) { - PGR_DBG("Sql for restrictions is null."); - } else { - int64 TUPLIMIT = 1000; - - SPIplan = SPI_prepare(restrict_sql, 0, NULL); - if (SPIplan == NULL) { - elog(ERROR, "turn_restrict_shortest_path: " - "couldn't create query plan via SPI"); - return -1; - } - - if ((SPIportal = SPI_cursor_open(NULL, SPIplan, NULL, NULL, true)) \ - == NULL) { - elog(ERROR, "turn_restrict_shortest_path:" - " SPI_cursor_open('%s') returns NULL", restrict_sql); - return -1; - } - - bool moredata = true; - while (moredata == true) { - SPI_cursor_fetch(SPIportal, true, TUPLIMIT); - - if (restrict_columns.target_id == -1) { - if (fetch_restrict_columns(SPI_tuptable, &restrict_columns) \ - == -1) { - PGR_DBG("fetch_restrict_columns failed!"); - pgr_SPI_finish(); - return -1; - } - } - - /* Suppress the -Wconversion warning temporarily */ - uint64_t ntuples = SPI_processed; - - total_restrict_tuples += ntuples; - - if (ntuples > 0) { - if (!restricts) - restricts = palloc(total_restrict_tuples * sizeof(restrict_t)); - else - restricts = repalloc(restricts, - total_restrict_tuples * sizeof(restrict_t)); - - if (restricts == NULL) { - pgr_SPI_finish(); - elog(ERROR, "Out of memory"); - return -1; - } - - uint32_t t; - SPITupleTable *tuptable = SPI_tuptable; - TupleDesc tupdesc = SPI_tuptable->tupdesc; - - for (t = 0; t < ntuples; t++) { - HeapTuple tuple = tuptable->vals[t]; - fetch_restrict(&tuple, &tupdesc, &restrict_columns, - &restricts[total_restrict_tuples - ntuples + t]); - } - SPI_freetuptable(tuptable); - } else { - moredata = false; - } - } - SPI_cursor_close(SPIportal); - } - - PGR_DBG("Total %ld restriction tuples", total_restrict_tuples); - - PGR_DBG("Calling trsp_edge_wrapper\n"); - ret = trsp_edge_wrapper(edges, total_tuples, - restricts, total_restrict_tuples, - start_id, start_pos, end_id, end_pos, - directed, has_reverse_cost, - path, path_count, &err_msg); - - PGR_DBG("Message received from inside:"); - PGR_DBG("%s", err_msg); - - - // :::::::::::::::::::::::::::::::: - // :: restoring original vertex id - // :::::::::::::::::::::::::::::::: - for (z = 0; z < *path_count; z++) { - if (z || (*path)[z].vertex_id != -1) - (*path)[z].vertex_id += v_min_id; - } - - PGR_DBG("ret = %i\n", ret); - - PGR_DBG("*path_count = %ld\n", *path_count); - - if (ret < 0) { - ereport(ERROR, (errcode(ERRCODE_E_R_E_CONTAINING_SQL_NOT_PERMITTED), - errmsg("Error computing path: %s", err_msg))); - } - - pgr_SPI_finish(); - return 0; -} - - -PG_FUNCTION_INFO_V1(_pgr_trsp); -PGDLLEXPORT Datum -_pgr_trsp(PG_FUNCTION_ARGS) { - FuncCallContext *funcctx; - TupleDesc tuple_desc; - path_element_tt *path; - - // stuff done only on the first call of the function - if (SRF_IS_FIRSTCALL()) { - MemoryContext oldcontext; - size_t path_count = 0; - int i; - double s_pos; - double e_pos; - char * sql; - - // create a function context for cross-call persistence - funcctx = SRF_FIRSTCALL_INIT(); - - // switch to memory context appropriate for multiple function calls - oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx); - - // verify that the first 5 args are not NULL - for (i = 0; i < 7; i++) { - if (i == 2 || i == 4) continue; - if (PG_ARGISNULL(i)) { - elog(ERROR, "turn_restrict_shortest_path(): " - "Argument %i may not be NULL", i+1); - } - } - - if (PG_ARGISNULL(2)) { - s_pos = 0.5; - } else { - s_pos = PG_GETARG_FLOAT8(2); - if (s_pos < 0.0) s_pos = 0.5; - if (s_pos > 1.0) s_pos = 0.5; - } - - if (PG_ARGISNULL(4)) { - e_pos = 0.5; - } else { - e_pos = PG_GETARG_FLOAT8(4); - if (e_pos < 0.0) e_pos = 0.5; - if (e_pos > 1.0) e_pos = 0.5; - } - - if (PG_ARGISNULL(7)) { - sql = NULL; - } else { - sql = text_to_cstring(PG_GETARG_TEXT_P(7)); - } - - PGR_DBG("Calling compute_trsp"); - - compute_trsp(text_to_cstring(PG_GETARG_TEXT_P(0)), - 0, // sdo edge - PG_GETARG_INT32(1), - s_pos, - PG_GETARG_INT32(3), - e_pos, - PG_GETARG_BOOL(5), - PG_GETARG_BOOL(6), - sql, - &path, &path_count); - - // total number of tuples to be returned - funcctx->max_calls = path_count; - - funcctx->user_fctx = path; - if (get_call_result_type(fcinfo, NULL, &tuple_desc) - != TYPEFUNC_COMPOSITE) { - ereport(ERROR, - (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("function returning record called in context " - "that cannot accept type record"))); - } - - funcctx->tuple_desc = tuple_desc; - - MemoryContextSwitchTo(oldcontext); - } - - // stuff done on every call of the function - funcctx = SRF_PERCALL_SETUP(); - - tuple_desc = funcctx->tuple_desc; - path = (path_element_tt*) funcctx->user_fctx; - - if (funcctx->call_cntr < funcctx->max_calls) { - // do when there is more left to send - HeapTuple tuple; - Datum result; - Datum *values; - bool* nulls; - - values = palloc(4 * sizeof(Datum)); - nulls = palloc(4 * sizeof(char)); - - values[0] = Int64GetDatum((int64_t)funcctx->call_cntr); - nulls[0] = false; - values[1] = Int32GetDatum((int32_t)path[funcctx->call_cntr].vertex_id); - nulls[1] = false; - values[2] = Int32GetDatum((int32_t)path[funcctx->call_cntr].edge_id); - nulls[2] = false; - values[3] = Float8GetDatum(path[funcctx->call_cntr].cost); - nulls[3] = false; - - tuple = heap_form_tuple(tuple_desc, values, nulls); - - // make the tuple into a datum - result = HeapTupleGetDatum(tuple); - - // clean up (this is not really necessary) - pfree(values); - pfree(nulls); - - SRF_RETURN_NEXT(funcctx, result); - } else { // do when there is no more left - PGR_DBG("Going to free path"); - if (path) free(path); - SRF_RETURN_DONE(funcctx); - } -} diff --git a/src/trsp/trsp_deprecated_driver.cpp b/src/trsp/trsp_deprecated_driver.cpp deleted file mode 100644 index 342a5cf2f0..0000000000 --- a/src/trsp/trsp_deprecated_driver.cpp +++ /dev/null @@ -1,87 +0,0 @@ -/*PGR-GNU***************************************************************** -File: trsp_deprecated_driver.cpp - -Generated with Template by: -Copyright (c) 2015 pgRouting developers -Mail: project@pgrouting.org - ------- - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - ********************************************************************PGR-GNU*/ - -#include "drivers/trsp/trsp_deprecated_driver.h" - -#ifdef __MINGW32__ -#include -#include -#endif - -#include -#include -#include "trsp/GraphDefinition.hpp" - - -int trsp_edge_wrapper( - Edge_t *edges, - size_t edge_count, - restrict_t *restricts, - size_t restrict_count, - int64_t start_edge, - double start_pos, - int64_t end_edge, - double end_pos, - bool directed, - bool has_reverse_cost, - path_element_tt **path, - size_t *path_count, - char **err_msg - ) { - try { - std::vector ruleTable; - - size_t i, j; - ruleTable.clear(); - for (i = 0; i < restrict_count; i++) { - std::vector seq; - seq.clear(); - seq.push_back(restricts[i].target_id); - for (j = 0; j < MAX_RULE_LENGTH && restricts[i].via[j] >- 1; j++) { - seq.push_back(restricts[i].via[j]); - } - ruleTable.push_back(make_pair(restricts[i].to_cost, seq)); - } - - GraphDefinition gdef; - auto res = gdef.my_dijkstra1(edges, edge_count, start_edge, start_pos, - end_edge, end_pos, directed, has_reverse_cost, path, path_count, - err_msg, ruleTable); - - - if (res < 0) - return res; - else - return EXIT_SUCCESS; - } - catch(std::exception& e) { - *err_msg = const_cast(e.what()); - return -1; - } - catch(...) { - *err_msg = const_cast("Caught unknown exception!"); - return -1; - } -} diff --git a/src/trsp/trsp_driver.cpp b/src/trsp/trsp_driver.cpp index c9b289565c..0ab7c8a108 100644 --- a/src/trsp/trsp_driver.cpp +++ b/src/trsp/trsp_driver.cpp @@ -111,7 +111,7 @@ pgr_do_trsp( char** err_msg) { using pgrouting::Path; using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; using pgrouting::utilities::get_combinations; @@ -132,8 +132,8 @@ pgr_do_trsp( hint = nullptr; if (combinations.empty() && combinations_sql) { - *notice_msg = pgr_msg("No (source, target) pairs found"); - *log_msg = pgr_msg(combinations_sql); + *notice_msg = to_pg_msg("No (source, target) pairs found"); + *log_msg = to_pg_msg(combinations_sql); return; } @@ -142,8 +142,8 @@ pgr_do_trsp( hint = nullptr; if (edges.empty()) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = pgr_msg(edges_sql); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = to_pg_msg(edges_sql); return; } @@ -172,7 +172,7 @@ pgr_do_trsp( if (count == 0) { notice << "No paths found"; - *log_msg = pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(notice); return; } @@ -202,7 +202,7 @@ pgr_do_trsp( auto new_combinations = pgrouting::utilities::get_combinations(paths, ruleList); if (!new_combinations.empty()) { - pgrouting::trsp::Pgr_trspHandler gdef( + pgrouting::trsp::TrspHandler gdef( edges, directed, ruleList); @@ -222,32 +222,28 @@ pgr_do_trsp( (*return_tuples) = pgr_alloc(count, (*return_tuples)); (*return_count) = collapse_paths(return_tuples, paths); - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/trsp/trsp_withPoints_driver.cpp b/src/trsp/trsp_withPoints_driver.cpp index 0bcc7453b5..310a943414 100644 --- a/src/trsp/trsp_withPoints_driver.cpp +++ b/src/trsp/trsp_withPoints_driver.cpp @@ -96,7 +96,7 @@ pgr_do_trsp_withPoints( char** err_msg) { using pgrouting::Path; using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; using pgrouting::utilities::get_combinations; @@ -117,8 +117,8 @@ pgr_do_trsp_withPoints( hint = nullptr; if (combinations.empty() && combinations_sql) { - *notice_msg = pgr_msg("No (source, target) pairs found"); - *log_msg = pgr_msg(combinations_sql); + *notice_msg = to_pg_msg("No (source, target) pairs found"); + *log_msg = to_pg_msg(combinations_sql); return; } @@ -132,8 +132,8 @@ pgr_do_trsp_withPoints( auto edges = pgrouting::pgget::get_edges(std::string(edges_sql), true, false); if (edges.size() + edges_of_points.size() == 0) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } @@ -155,8 +155,8 @@ pgr_do_trsp_withPoints( if (pg_graph.has_error()) { log << pg_graph.get_log(); err << pg_graph.get_error(); - *log_msg = pgr_msg(log.str().c_str()); - *err_msg = pgr_msg(err.str().c_str()); + *log_msg = to_pg_msg(log); + *err_msg = to_pg_msg(err); return; } @@ -194,7 +194,7 @@ pgr_do_trsp_withPoints( if (count == 0) { notice << "No paths found"; - *log_msg = pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(notice); return; } @@ -230,7 +230,7 @@ pgr_do_trsp_withPoints( auto new_combinations = pgrouting::utilities::get_combinations(paths, ruleList); if (!new_combinations.empty()) { - pgrouting::trsp::Pgr_trspHandler gdef( + pgrouting::trsp::TrspHandler gdef( edges, pg_graph.new_edges(), directed, @@ -255,32 +255,28 @@ pgr_do_trsp_withPoints( (*return_tuples) = pgr_alloc(count, (*return_tuples)); (*return_count) = collapse_paths(return_tuples, paths); - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/tsp/TSP_driver.cpp b/src/tsp/TSP_driver.cpp index 8c5c19d70a..128cf1de65 100644 --- a/src/tsp/TSP_driver.cpp +++ b/src/tsp/TSP_driver.cpp @@ -58,7 +58,7 @@ pgr_do_tsp( char **notice_msg, char **err_msg) { using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; std::ostringstream log; @@ -71,8 +71,8 @@ pgr_do_tsp( auto distances = pgrouting::pgget::get_matrixRows(std::string(matrix_sql)); if (distances.size() == 0) { - *notice_msg = pgr_msg("Insufficient data found on inner query"); - *log_msg = hint? pgr_msg(hint) : nullptr; + *notice_msg = to_pg_msg("Insufficient data found on inner query"); + *log_msg = hint? to_pg_msg(hint) : nullptr; return; } hint = nullptr; @@ -81,13 +81,13 @@ pgr_do_tsp( if (start_vid != 0 && !fn_tsp.has_vertex(start_vid)) { err << "Parameter 'start_id' do not exist on the data"; - *err_msg = pgr_msg(err.str().c_str()); + *err_msg = to_pg_msg(err); return; } if (end_vid != 0 && !fn_tsp.has_vertex(end_vid)) { err << "Parameter 'end_id' do not exist on the data"; - *err_msg = pgr_msg(err.str().c_str()); + *err_msg = to_pg_msg(err); return; } @@ -107,36 +107,32 @@ pgr_do_tsp( } } - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::pair& ex) { (*return_count) = 0; - *err_msg = pgr_msg(ex.first.c_str()); - *log_msg = pgr_msg(ex.second.c_str()); + *err_msg = to_pg_msg(ex.first.c_str()); + *log_msg = to_pg_msg(ex.second.c_str()); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/tsp/euclideanTSP_driver.cpp b/src/tsp/euclideanTSP_driver.cpp index 5d03b48257..48cbe6fc00 100644 --- a/src/tsp/euclideanTSP_driver.cpp +++ b/src/tsp/euclideanTSP_driver.cpp @@ -55,7 +55,7 @@ pgr_do_euclideanTSP( char **notice_msg, char **err_msg) { using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; std::ostringstream log; @@ -68,8 +68,8 @@ pgr_do_euclideanTSP( auto coordinates = pgrouting::pgget::get_coordinates(std::string(coordinates_sql)); if (coordinates.size() == 0) { - *notice_msg = pgr_msg("No coordinates found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No coordinates found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } hint = nullptr; @@ -78,13 +78,13 @@ pgr_do_euclideanTSP( if (start_vid != 0 && !fn_tsp.has_vertex(start_vid)) { err << "Parameter 'start_id' do not exist on the data"; - *err_msg = pgr_msg(err.str().c_str()); + *err_msg = to_pg_msg(err); return; } if (end_vid != 0 && !fn_tsp.has_vertex(end_vid)) { err << "Parameter 'end_id' do not exist on the data"; - *err_msg = pgr_msg(err.str().c_str()); + *err_msg = to_pg_msg(err); return; } @@ -104,36 +104,32 @@ pgr_do_euclideanTSP( } } - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::pair& ex) { (*return_count) = 0; - *err_msg = pgr_msg(ex.first.c_str()); - *log_msg = pgr_msg(ex.second.c_str()); + *err_msg = to_pg_msg(ex.first.c_str()); + *log_msg = to_pg_msg(ex.second.c_str()); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/withPoints/get_new_queries.cpp b/src/withPoints/get_new_queries.cpp index 0aa4b4cd71..2d80291946 100644 --- a/src/withPoints/get_new_queries.cpp +++ b/src/withPoints/get_new_queries.cpp @@ -47,7 +47,7 @@ get_new_queries( char *points_sql, char **edges_of_points_query, char **edges_no_points_query) { - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; std::ostringstream edges_of_points_sql; std::ostringstream edges_no_points_sql; @@ -55,7 +55,7 @@ get_new_queries( << " edges AS (" << edges_sql << "), " << " points AS (" << points_sql << ")" << " SELECT DISTINCT edges.* FROM edges JOIN points ON (id = edge_id)"; - *edges_of_points_query = pgr_msg(edges_of_points_sql.str().c_str()); + *edges_of_points_query = to_pg_msg(edges_of_points_sql.str()); edges_no_points_sql << "WITH " << " edges AS (" << edges_sql << "), " @@ -63,6 +63,6 @@ get_new_queries( << " SELECT edges.*" << " FROM edges" << " WHERE NOT EXISTS (SELECT edge_id FROM points WHERE id = edge_id)"; - *edges_no_points_query = pgr_msg(edges_no_points_sql.str().c_str()); + *edges_no_points_query = to_pg_msg(edges_no_points_sql.str()); } diff --git a/src/withPoints/withPoints.cpp b/src/withPoints/withPoints.cpp index 9123fed8de..98a619caeb 100644 --- a/src/withPoints/withPoints.cpp +++ b/src/withPoints/withPoints.cpp @@ -390,11 +390,15 @@ Pg_points_graph::create_new_edges() { } if (point.fraction == 0) { log << "Point's vertex_id = source" << edge.source << "\n"; - point.vertex_id = edge.source; + point.vertex_id = -point.pid; + Edge_t new_edge = {edge.id, edge.source, -point.pid, 0, 0}; + m_new_edges.push_back(new_edge); } if (point.fraction == 1) { log << "point's vertex_id = target" << edge.target << "\n"; - point.vertex_id = edge.target; + point.vertex_id = -point.pid; + Edge_t new_edge = {edge.id, edge.target, -point.pid, 0, 0}; + m_new_edges.push_back(new_edge); } if (point.fraction > 0 && point.fraction < 1) { log << "vertex_id of the point is " << -point.pid << "\n"; diff --git a/src/withPoints/withPointsVia_driver.cpp b/src/withPoints/withPointsVia_driver.cpp index 9551c5a9bd..aecb576890 100644 --- a/src/withPoints/withPointsVia_driver.cpp +++ b/src/withPoints/withPointsVia_driver.cpp @@ -111,7 +111,7 @@ pgr_do_withPointsVia( char** err_msg) { using pgrouting::Path; using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; using pgrouting::pgget::get_intArray; @@ -141,8 +141,8 @@ pgr_do_withPointsVia( auto edges = pgrouting::pgget::get_edges(std::string(edges_sql), true, false); if (edges.size() + edges_of_points.size() == 0) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } hint = nullptr; @@ -159,8 +159,8 @@ pgr_do_withPointsVia( if (pg_graph.has_error()) { log << pg_graph.get_log(); err << pg_graph.get_error(); - *log_msg = pgr_msg(log.str().c_str()); - *err_msg = pgr_msg(err.str().c_str()); + *log_msg = to_pg_msg(log); + *err_msg = to_pg_msg(err); return; } @@ -172,7 +172,7 @@ pgr_do_withPointsVia( pgrouting::DirectedGraph digraph(vertices); digraph.insert_edges(edges); digraph.insert_edges(pg_graph.new_edges()); - pgrouting::pgr_dijkstraVia( + pgrouting::dijkstraVia( digraph, via_vertices, paths, @@ -183,7 +183,7 @@ pgr_do_withPointsVia( pgrouting::UndirectedGraph undigraph(vertices); undigraph.insert_edges(edges); undigraph.insert_edges(pg_graph.new_edges()); - pgrouting::pgr_dijkstraVia( + pgrouting::dijkstraVia( undigraph, via_vertices, paths, @@ -203,7 +203,7 @@ pgr_do_withPointsVia( (*return_tuples) = NULL; (*return_count) = 0; notice << "No paths found"; - *log_msg = pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(notice); return; } @@ -211,32 +211,28 @@ pgr_do_withPointsVia( (*return_count) = (get_route(return_tuples, paths)); (*return_tuples)[count - 1].edge = -2; - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/src/withPoints/withPoints_driver.cpp b/src/withPoints/withPoints_driver.cpp index 914a258474..fa3530bce1 100644 --- a/src/withPoints/withPoints_driver.cpp +++ b/src/withPoints/withPoints_driver.cpp @@ -98,7 +98,7 @@ pgr_do_withPoints( char** err_msg) { using pgrouting::Path; using pgrouting::pgr_alloc; - using pgrouting::pgr_msg; + using pgrouting::to_pg_msg; using pgrouting::pgr_free; using pgrouting::utilities::get_combinations; @@ -121,8 +121,8 @@ pgr_do_withPoints( hint = nullptr; if (combinations.empty() && combinations_sql) { - *notice_msg = pgr_msg("No (source, target) pairs found"); - *log_msg = pgr_msg(combinations_sql); + *notice_msg = to_pg_msg("No (source, target) pairs found"); + *log_msg = to_pg_msg(combinations_sql); return; } @@ -137,8 +137,8 @@ pgr_do_withPoints( auto edges = pgrouting::pgget::get_edges(std::string(edges_sql), normal, false); if (edges.size() + edges_of_points.size() == 0) { - *notice_msg = pgr_msg("No edges found"); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *notice_msg = to_pg_msg("No edges found"); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); return; } hint = nullptr; @@ -154,8 +154,8 @@ pgr_do_withPoints( if (pg_graph.has_error()) { log << pg_graph.get_log(); err << pg_graph.get_error(); - *log_msg = pgr_msg(log.str().c_str()); - *err_msg = pgr_msg(err.str().c_str()); + *log_msg = to_pg_msg(log); + *err_msg = to_pg_msg(err); return; } @@ -205,39 +205,35 @@ pgr_do_withPoints( (*return_tuples) = NULL; (*return_count) = 0; notice << "No paths found"; - *log_msg = pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(notice); return; } (*return_tuples) = pgr_alloc(count, (*return_tuples)); (*return_count) = (collapse_paths(return_tuples, paths)); - *log_msg = log.str().empty()? - *log_msg : - pgr_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - pgr_msg(notice.str().c_str()); + *log_msg = to_pg_msg(log); + *notice_msg = to_pg_msg(notice); } catch (AssertFailedException &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch (const std::string &ex) { - *err_msg = pgr_msg(ex.c_str()); - *log_msg = hint? pgr_msg(hint) : pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(ex); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log); } catch (std::exception &except) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << except.what(); - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } catch(...) { (*return_tuples) = pgr_free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = pgr_msg(err.str().c_str()); - *log_msg = pgr_msg(log.str().c_str()); + *err_msg = to_pg_msg(err); + *log_msg = to_pg_msg(log); } } diff --git a/tools/developer/pumpup_version.sh b/tools/developer/pumpup_version.sh index 92bb3abd2c..d6dacf8976 100755 --- a/tools/developer/pumpup_version.sh +++ b/tools/developer/pumpup_version.sh @@ -151,8 +151,8 @@ fi # ------ # Documentation related # ------ -perl -pi -e 's/# Copyright(.*) v(.*)$/# Copyright$1 v'"${NEW_VERSION}${NEW_KIND}"'/' locale/pot/*.pot -perl -pi -e 's/# Copyright(.*) v(.*)$/# Copyright$1 v'"${NEW_VERSION}${NEW_KIND}"'/' locale/*/*/*.po -perl -pi -e 's/('"${MAYOR}.${MINOR}"')/'"${NEW_MAYOR}.${NEW_MINOR}\', \'${MAYOR}.${MINOR}"'/g' doc/_static/page_history.js bash tools/transifex/update_locale.sh +perl -pi -e 's/# Copyright(.*) v(.*)$/# Copyright$1 v'"${NEW_MAYOR}.${NEW_MINOR}"'/' locale/pot/*.pot locale/*/*/*.po +perl -pi -e 's/Id-Version: pgRouting v'"${MAYOR}.${MINOR}"'/Id-Version: pgRouting v'"${NEW_MAYOR}.${NEW_MINOR}"'/' locale/*/*/*.po locale/pot/*.pot +perl -pi -e "s/versionsArr = \[/versionsArr = \['${NEW_MAYOR}.${NEW_MINOR}',/" doc/_static/page_history.js diff --git a/tools/developer/run.sh b/tools/developer/run.sh index 1a6480008e..e863501185 100755 --- a/tools/developer/run.sh +++ b/tools/developer/run.sh @@ -59,16 +59,18 @@ function set_cmake { #cmake -DWITH_DOC=ON -DBUILD_DOXY=ON .. # Building using clang - #CXX=clang++ CC=clang cmake -DPOSTGRESQL_BIN=${PGBIN} -DCMAKE_BUILD_TYPE=Debug .. + #CXX=clang++ CC=clang cmake -DPOSTGRESQL_BIN=${PGBIN} -DCMAKE_BUILD_TYPE=Debug -DDOC_USE_BOOTSTRAP=ON -DWITH_DOC=ON -DBUILD_DOXY=OFF .. + # Building with debug on #cmake -DPOSTGRESQL_BIN=${PGBIN} -DDOC_USE_BOOTSTRAP=ON -DWITH_DOC=ON -DBUILD_DOXY=ON -DBUILD_LATEX=ON -DCMAKE_BUILD_TYPE=Debug -DES=ON -DPROJECT_DEBUG=ON .. - # building languages -DES=ON -DJA=ON -DZH_HANS=ON -DDE=ON -DKO=ON - #cmake -DPOSTGRESQL_BIN=${PGBIN} -DDOC_USE_BOOTSTRAP=ON -DWITH_DOC=ON -DBUILD_DOXY=ON -DBUILD_LATEX=ON -DES=ON -DCMAKE_BUILD_TYPE=Debug .. + # building languages -DES=ON -DJA=ON -DZH_HANS=ON -DDE=ON -DKO=ON and CMAKE_EXPORT_COMPILE_COMMANDS for static analysis tools. + #cmake -DPOSTGRESQL_BIN=${PGBIN} -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DDOC_USE_BOOTSTRAP=ON -DWITH_DOC=ON -DBUILD_DOXY=ON -DBUILD_LATEX=ON -DES=ON -DCMAKE_BUILD_TYPE=Debug .. # check link in documentation #cmake -DPOSTGRESQL_BIN=${PGBIN} -DDOC_USE_BOOTSTRAP=ON -DWITH_DOC=ON -DES=ON -DLINKCHECK=ON -DCMAKE_BUILD_TYPE=Release .. + # build only english cmake -DPOSTGRESQL_BIN=${PGBIN} -DDOC_USE_BOOTSTRAP=ON -DWITH_DOC=ON -DBUILD_DOXY=ON -DBUILD_LATEX=ON -DCMAKE_BUILD_TYPE=Debug .. } @@ -105,14 +107,16 @@ function set_compiler { echo ------------------------------------ if [ -n "$1" ]; then - update-alternatives --set gcc "/usr/bin/gcc-$1" + export CC="/usr/bin/gcc-$1" + export CXX="/usr/bin/g++-$1" fi } function build_doc { pushd build > /dev/null || exit 1 #rm -rf doc/* ; rm -rf locale/*/*/*.mo - rm -rf doc/* + # Clean only generated files while preserving custom content + find doc -type f \( -name "*.html" -o -name "*.pdf" \) -delete make doc #example on how to only build spanish html #make html-es @@ -123,6 +127,30 @@ function build_doc { popd > /dev/null || exit 1 } +function check { + pushd build > /dev/null || exit 1 + cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .. + + # Run with error handling and report generation + cppcheck --project=compile_commands.json \ + --enable=all \ + --suppress=missingIncludeSystem \ + --error-exitcode=1 \ + --output-file=cppcheck-report.txt 2>&1 || { + echo "Static analysis failed. See build/cppcheck-report.txt for details" + return 1 + } + popd > /dev/null || exit 1 +} + +function tidy_with_clang { + local base_branch=${1:-"upstream/develop"} + .github/scripts/tidy-vs-commit.sh "$base_branch" || { + echo "clang-tidy checks failed" + return 1 + } +} + function build { pushd build > /dev/null || exit 1 set_cmake @@ -141,25 +169,30 @@ function test_compile { build echo -------------------------------------------- - echo Execute tap_directories + echo Execute documentation queries echo -------------------------------------------- - for d in ${TAP_DIRS} + for d in ${QUERIES_DIRS} do - time bash taptest.sh "${d}" "-p ${PGPORT}" + # generate the documentation queries + #tools/testers/doc_queries_generator.pl -alg "docqueries/${d}" -documentation -pgport "${PGPORT}" + # Show warnings + #tools/testers/doc_queries_generator.pl -alg "docqueries/${d}" -level WARNING -pgport "${PGPORT}" + # Compare differences on results + tools/testers/doc_queries_generator.pl -alg "docqueries/${d}" -pgport "${PGPORT}" done echo -------------------------------------------- - echo Execute documentation queries + echo Execute tap_directories echo -------------------------------------------- - for d in ${QUERIES_DIRS} + for d in ${TAP_DIRS} do - #tools/testers/doc_queries_generator.pl -alg "docqueries/${d}" -documentation -pgport "${PGPORT}" - #tools/testers/doc_queries_generator.pl -alg "docqueries/${d}" -debug1 -pgport "${PGPORT}" - tools/testers/doc_queries_generator.pl -alg "docqueries/${d}" -pgport "${PGPORT}" + time bash taptest.sh "${d}" "-p ${PGPORT}" done + tap_test + tools/testers/doc_queries_generator.pl -pgport $PGPORT + build_doc - #exit 0 tap_test action_tests } diff --git a/tools/developer/taptest.sh b/tools/developer/taptest.sh index 25777967ec..aecf520ea9 100755 --- a/tools/developer/taptest.sh +++ b/tools/developer/taptest.sh @@ -26,19 +26,38 @@ if [[ -z $1 ]]; then exit 1; fi +# run from root of repository +if ! DIR=$(git rev-parse --show-toplevel 2>/dev/null); then + echo "Error: Must be run from within the git repository" >&2 + exit 1 +fi +pushd "${DIR}" > /dev/null || exit 1 DIR="$1" shift PGFLAGS=$* +if ! VERSION=$(grep -E '^[[:space:]]*project\(PGROUTING[[:space:]]+VERSION[[:space:]]+([^[:space:];]+)' CMakeLists.txt | sed -E 's/.*VERSION[[:space:]]+([^[:space:];]+).*/\1/'); then + echo "Error: Failed to extract version from CMakeLists.txt" >&2 + exit 1 +fi + +if [[ -z "${VERSION}" ]]; then + echo "Error: Version not found in CMakeLists.txt" >&2 + exit 1 +fi echo "dir ${DIR}" echo "pgflags ${PGFLAGS}" +echo "VERSION ${VERSION}" QUIET="-v" QUIET="-q" +PGPORT="${PGPORT:-5432}" +PGUSER="${PGUSER:-$USER}" + PGDATABASE="___pgr___test___" PGRVERSION="3.6.1 3.6.0 3.5.1 3.5.0 3.2.0 3.1.3 3.0.6" -PGRVERSION="3.7.0" +PGRVERSION="4.0.0" for v in ${PGRVERSION} @@ -46,49 +65,51 @@ do pushd tools/testers/ echo "--------------------------" echo " Running with version ${v}" + echo " test ${DIR}" echo "--------------------------" + # give time to developer to read message + sleep 3 dropdb --if-exists "${PGFLAGS}" "${PGDATABASE}" createdb "${PGFLAGS}" "${PGDATABASE}" - psql "$PGFLAGS" -d "$PGDATABASE" -X -q --set client_min_messages=WARNING --set ON_ERROR_STOP=1 --pset pager=off \ - -c "CREATE EXTENSION IF NOT EXISTS pgtap; CREATE EXTENSION IF NOT EXISTS pgrouting WITH VERSION '${v}' CASCADE;" - + if ! bash setup_db.sh "${PGPORT}" "${PGDATABASE}" "${PGUSER}" "${v}"; then + echo "Error: Database setup failed" >&2 + exit 1 + fi echo "--------------------------" echo " Installed version" echo "--------------------------" psql "${PGFLAGS}" -d "$PGDATABASE" -c "SELECT * FROM pgr_full_version();" - #psql "${PGFLAGS}" -d "$PGDATABASE" -c "SET client_min_messages TO DEBUG3; ALTER EXTENSION pgrouting UPDATE TO '3.7.0';" - echo "--------------------------" - echo " update version" - echo "--------------------------" - psql "${PGFLAGS}" -d "$PGDATABASE" -c "SELECT * FROM pgr_full_version();" + popd - psql "${PGFLAGS}" -d "$PGDATABASE" -X -q --set client_min_messages=WARNING --set ON_ERROR_STOP=1 --pset pager=off \ - -f sampledata.sql \ - -f solomon_100_rc101.data.sql \ - -f innerQuery.sql \ - -f innerQuery_old.sql \ - -f inner_styles.sql \ - -f old_inner_styles.sql \ - -f no_crash_test.sql \ - -f alphaShapeTester.sql \ - -f general_pgtap_tests.sql \ - -f no_crash_general.sql \ - -f dijkstra_pgtap_tests.sql \ - -f flow_pgtap_tests.sql \ - -f trsp_tests.sql \ - -f spanningtree.sql \ - -f types_check.sql \ - -f via_compare.sql \ - -f astar_pgtap_tests.sql \ - -f compare_dijkstra.sql \ - -f allpairs_tests.sql \ - -f contraction_tapfuncs.sql\ - -f tsp_pgtap_tests.sql + if [[ "${v}" != "${VERSION}" ]] + then + # run tests on old version + pg_prove "$QUIET" --normalize --directives --recurse "${PGFLAGS}" -d "${PGDATABASE}" "pgtap/${DIR}" + + # update to this version + echo "--------------------------" + echo " update version" + echo "--------------------------" + if ! psql "${PGFLAGS}" -d "$PGDATABASE" -c "SET client_min_messages TO DEBUG3; ALTER EXTENSION pgrouting UPDATE TO '${VERSION}';"; then + echo "Error: Failed to update pgrouting extension to version ${VERSION}" >&2 + exit 1 + fi + + psql "${PGFLAGS}" -q -t -d "$PGDATABASE" -c "SELECT extversion FROM pg_extension WHERE extname = 'pgrouting';" + + # Verify update success + if ! psql "${PGFLAGS}" -q -t -d "$PGDATABASE" -c "SELECT extversion FROM pg_extension WHERE extname = 'pgrouting';" | grep -q "${VERSION}"; then + echo "Error: Extension version mismatch after update" >&2 + exit 1 + fi + fi + + # run this version's test + psql "${PGFLAGS}" -d "$PGDATABASE" -c "SELECT * FROM pgr_full_version();" - popd pg_prove "$QUIET" --normalize --directives --recurse "${PGFLAGS}" -d "${PGDATABASE}" "pgtap/${DIR}" #dropdb --if-exists "${PGFLAGS}" "${PGDATABASE}" done diff --git a/tools/scripts/test_shell.sh b/tools/scripts/test_shell.sh index e25fb3f7db..d63fa74b8f 100755 --- a/tools/scripts/test_shell.sh +++ b/tools/scripts/test_shell.sh @@ -29,7 +29,7 @@ do if [ "${f}" = "tools/developer/addNewVersionLink.sh" ] ; then result=$(shellcheck --exclude=SC2046,SC2016 "${f}") elif [ "${f}" = "ci/winnie/build_pgrouting.sh" ] ; then - result=$(shellcheck --exclude=SC2046,SC2016,SC2141,SC2086 "${f}") + result=$(shellcheck --exclude=SC2116,SC2046,SC2016,SC2141,SC2086 "${f}") else result=$(shellcheck --exclude=SC2141 "${f}") fi diff --git a/tools/testers/contraction_tapfuncs.sql b/tools/testers/contraction_tapfuncs.sql index d66c6e490b..d322ee52c0 100644 --- a/tools/testers/contraction_tapfuncs.sql +++ b/tools/testers/contraction_tapfuncs.sql @@ -16,6 +16,814 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ********************************************************************PGR-GNU*/ + +CREATE OR REPLACE PROCEDURE create_contracted_graph(directed BOOLEAN, fn TEXT, methods INTEGER[] DEFAULT NULL::INTEGER[]) AS +$BODY$ + +BEGIN + + IF NOT min_version('3.8.0') THEN RETURN; END IF; + + DELETE FROM edges WHERE id >= 19; + ALTER SEQUENCE edges_id_seq RESTART WITH 19; + UPDATE edges SET (is_new, contracted_vertices)=(false,NULL); + UPDATE vertices SET (is_contracted, contracted_vertices)=(false,NULL); + + -- add extra columns to the edges and vertices table + + DROP TABLE IF EXISTS contraction_info; + IF fn = 'pgr_contraction' THEN + EXECUTE format($q$ + CREATE TABLE contraction_info AS + SELECT * FROM %s( + 'SELECT id, source, target, cost, reverse_cost FROM edges ORDER BY id', + %s, '%s'::INTEGER[]); + $q$, fn, directed::TEXT, methods); + ELSE + EXECUTE format($q$ + CREATE TABLE contraction_info AS + SELECT * FROM %s( + 'SELECT id, source, target, cost, reverse_cost FROM edges ORDER BY id', + '%s'); + $q$, fn, directed::TEXT); + END IF; + + -- add the new edges + INSERT INTO edges(source, target, cost, reverse_cost, contracted_vertices, is_new) + SELECT source, target, cost, -1, contracted_vertices, true + FROM contraction_info + WHERE type = 'e'; + + -- Indicate vertices that were contracted + UPDATE vertices + SET is_contracted = true + WHERE id IN (SELECT unnest(contracted_vertices) FROM contraction_info); + + -- add the contracted vertices on the vertices table + UPDATE vertices + SET contracted_vertices = contraction_info.contracted_vertices + FROM contraction_info + WHERE type = 'v' AND vertices.id = contraction_info.id; + + DROP VIEW IF EXISTS contracted_graph; + CREATE VIEW contracted_graph AS + SELECT id,source, target, cost, reverse_cost, contracted_vertices FROM edges + WHERE + EXISTS (SELECT id FROM vertices AS v WHERE NOT is_contracted AND v.id = edges.source) + AND + EXISTS (SELECT id FROM vertices AS v WHERE NOT is_contracted AND v.id = edges.target); + +END +$BODY$ +LANGUAGE plpgsql; + +CREATE OR REPLACE FUNCTION path_cost_contraction(BIGINT, BIGINT, BOOLEAN) +RETURNS SETOF TEXT AS +$BODY$ +DECLARE q TEXT; +BEGIN + + RETURN QUERY + SELECT round(agg_cost::numeric, 3)::TEXT FROM pgr_dijkstra( + 'WITH cul_de_sac AS ( + SELECT contracted_vertices || id as v + FROM vertices WHERE ' || $1 ||' = ANY(contracted_vertices) OR ' || $2 ||' = ANY(contracted_vertices)), + linears_to_expand AS ( + SELECT id, contracted_vertices + FROM edges WHERE is_new AND (' || $1 ||' = ANY(contracted_vertices) OR '|| $2 ||' = ANY(contracted_vertices)) + ), + verts AS (SELECT * FROM cul_de_sac UNION SELECT contracted_vertices FROM linears_to_expand) + SELECT id, source, target, cost, reverse_cost FROM edges, verts WHERE source = ANY(v) OR target = ANY(v) + + UNION + + SELECT id, source, target, cost, reverse_cost FROM contracted_graph LEFT JOIN linears_to_expand c USING (id) WHERE c.id IS NULL', + $1, $2, $3) WHERE edge = -1; + +END; +$BODY$ +LANGUAGE plpgsql; + +CREATE OR REPLACE FUNCTION compare_dijkstra_contraction( + BIGINT, BIGINT, BOOLEAN) +RETURNS SETOF TEXT AS +$BODY$ +DECLARE + q TEXT; +BEGIN + + RETURN QUERY + SELECT set_eq( + $$SELECT * FROM path_cost_contraction($$|| $1 || $$,$$ || $2 || $$,$$ || $3::BOOLEAN || $$)$$, + $$SELECT round(agg_cost::numeric, 3)::TEXT + FROM pgr_dijkstra( + 'SELECT id, source, target, cost, reverse_cost FROM edges WHERE id < 19', + $$|| $1 || $$,$$ || $2 || $$,$$ || $3::BOOLEAN || $$) WHERE edge = -1 + $$, + 'From ' || $1 || ' to ' || $2 || 'Directed = ' || $3::BOOLEAN); + +END +$BODY$ +LANGUAGE plpgsql; + +CREATE OR REPLACE FUNCTION compare_dijkstra_contraction(BOOLEAN) +RETURNS SETOF TEXT AS +$BODY$ +DECLARE + i INTEGER; + j INTEGER; + +BEGIN + + IF NOT min_version('3.8.0') THEN + RETURN QUERY + SELECT skip(1, 'contraction function/signature is new on 3.8.0'); + RETURN; + END IF; + + FOR i IN 1..18 LOOP + FOR j IN 1..18 LOOP + RETURN QUERY + SELECT compare_dijkstra_contraction(i, j, $1); + END LOOP; + END LOOP; + +END +$BODY$ +LANGUAGE plpgsql; + +CREATE OR REPLACE FUNCTION check_contracted_graph_deadend(BOOLEAN) +RETURNS SETOF TEXT AS +$BODY$ +BEGIN + + IF NOT min_version('3.8.0') THEN + RETURN QUERY SELECT skip(1, 'contraction function/signature is new on 3.8.0'); + RETURN; + END IF; + + IF $1 THEN + RETURN QUERY + SELECT set_eq($$SELECT type, id, contracted_vertices, source, target FROM contraction_info$$, + $$ VALUES ('v',7,ARRAY[1,3],-1,-1), ('v',4,ARRAY[2],-1,-1), ('v',8,ARRAY[9],-1,-1), + ('v',6,ARRAY[5],-1,-1), ('v',14,ARRAY[13],-1,-1) $$); + + RETURN QUERY SELECT is_empty($$SELECT id FROM edges WHERE is_new$$); + + ELSE + RETURN QUERY + SELECT set_eq($$SELECT type, id, contracted_vertices, source, target FROM contraction_info$$, + $$ VALUES ('v',7,ARRAY[1,3],-1,-1), ('v',4,ARRAY[2],-1,-1), ('v',8,ARRAY[9],-1,-1), + ('v',6,ARRAY[5],-1,-1), ('v',14,ARRAY[13],-1,-1) $$); + + RETURN QUERY SELECT is_empty($$SELECT id FROM edges WHERE is_new$$); + + END IF; + + PREPARE c_expected_graph AS + SELECT source, target, cost, reverse_cost + FROM (VALUES + (6, 10, '-0.996', '1.004'), + (6, 7, '1.016', '1.016'), + (7, 11, '1.064', '1.064'), + (7, 8, '1.100', '1.100'), + (8, 12, '1.144', '-0.856'), + (10, 11, '1.025', '-0.975'), + (10, 15, '-0.991', '1.009'), + (11, 16, '1.081', '1.081'), + (11, 12, '1.121', '-0.879'), + (12, 17, '1.169', '-0.831'), + (15, 16, '1.256', '1.256'), + (15, 16, '1.256', '1.256'), + (16, 17, '1.225', '1.225')) + AS t(source, target, cost, reverse_cost); + + RETURN QUERY + SELECT set_eq('SELECT source, target, round(cost::numeric, 3)::TEXT AS cost, round(reverse_cost::numeric, 3)::TEXT FROM contracted_graph', + 'c_expected_graph', 'The contracted graph'); + + DEALLOCATE PREPARE c_expected_graph; + +END +$BODY$ +LANGUAGE plpgsql; + +CREATE OR REPLACE PROCEDURE create_linear_edge_cases() AS +$BODY$ + +BEGIN + + CREATE TABLE graphs ( + id BIGINT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY, + source BIGINT, + target BIGINT, + cost BIGINT default 1, + reverse_cost BIGINT default 1, + dead_case INTEGER +); + +/* 11 -> {12 -> {13, 14} [dir=both]} [dir=both]; 13 ->14 [dir=both] */ +INSERT INTO graphs(source, target, dead_case) +VALUES +(11, 12, 0), +(11, 13, 0), +(11, 14, 0), +(12, 13, 0), +(12, 14, 0), +(13, 14, 0); + +INSERT INTO graphs(source, target, cost, reverse_cost, dead_case) +VALUES +/* 1->11 */ +(1, 11, 1, -1, 1), + +/* 11->1 */ +(11, 1, 1, -1, 2), + +/* 1 -> 2 -> 11 */ +(1, 2, 1, -1, 3), +(2, 11, 1, -1, 3), + +/* 11 -> 2 -> 1 */ +(11, 2, 1, -1, 4), +(2, 1, 1, -1, 4), + +/* 11 -> 2 [dir=both]; 2 -> 1 [dir=both] */ +(11, 2, 1, 1, 5), +(2, 1, 1, 1, 5), + +/* 11 -> {1,3} [dir=both]; 1->3 [dir=both]*/ +(11, 1, 1, 1, 6), +(1, 3, 1, 1, 6), +(3, 11, 1, 1, 6), + +/* 11 -> {1,3} [dir=both]; 2 -> {1,3} [dir=both]; 2->3 [dir=both]*/ +(11, 1, 1, 1, 7), +(1, 2, 1, 1, 7), +(2, 3, 1, 1, 7), +(3, 11, 1, -1, 7); + +CREATE TABLE results ( + type text, + contracted_vertices BIGINT[], + source BIGINT, + target BIGINT, + cost FLOAT, + result_case INTEGER +); + +INSERT INTO results(type, contracted_vertices, source, target, cost, result_case) +VALUES +('e',ARRAY[3]::BIGINT[],1,7,2, 1), +('e',ARRAY[3],7,1,2, 1), +('e',ARRAY[3],1,7,2, 2), +('e',ARRAY[3],7,1,2, 2), +('e',ARRAY[3,7],1,11,3, 3), +('e',ARRAY[3,7],11,1,3, 3), +('e',ARRAY[7],3,11,2, 4), +('e',ARRAY[7],11,3,2, 4), +('e',ARRAY[16],15,11,2, 5), +('e',ARRAY[16],11,15,2, 5), +('e',ARRAY[10],15,11,2, 5), +('e',ARRAY[16],15,11,2, 6), +('e',ARRAY[16],11,15,2, 6), +('e',ARRAY[10],15,11,2, 7), +('e',ARRAY[7],6,11,2, 8), +('e',ARRAY[7],11,6,2, 8), +('e',ARRAY[3],1,7,2, 9), +('e',ARRAY[3],7,1,2, 9), +('e',ARRAY[3],1,7,2, 11), +('e',ARRAY[3],7,1,2, 12), +('e',ARRAY[3,7],1,11,3, 13), +('e',ARRAY[7],3,11,2, 14), +('e',ARRAY[10,15],11,16,3, 15), +('e',ARRAY[10,11],15,16,3, 25), +('e',ARRAY[15,16],10,11,3, 16), +('e',ARRAY[10,15],11,16,3, 17), +('e',ARRAY[6,10],7,11,3, 18), +('e',ARRAY[10,11],6,7,3, 28), +('e',ARRAY[6,7],10,11,3, 38), +('e',ARRAY[3],7,1,2, 19), +('e',ARRAY[15],10,16,2, 19), +('e',ARRAY[17],16,12,2, 19), +('e',ARRAY[15],10,16,2, 20), +('e',ARRAY[17],16,12,2, 20) +; + +prepare get_solution(integer, integer, text) AS +WITH a AS (SELECT CASE WHEN $3::BOOLEAN THEN $1 ELSE $2 END r) +SELECT type,contracted_vertices,source,target,cost FROM results, a WHERE result_case = r; + +END +$BODY$ +LANGUAGE plpgsql; + +CREATE OR REPLACE PROCEDURE create_deadend_edge_cases() AS +$BODY$ + +BEGIN + + CREATE TABLE graphs ( + id BIGINT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY, + source BIGINT, + target BIGINT, + cost BIGINT default 1, + reverse_cost BIGINT default 1, + dead_case INTEGER + ); + + /* 2 -- {3 -- 4} ; 3 -- 4 */ + INSERT INTO graphs(source, target, dead_case) + VALUES + (2, 3, 0), + (2, 4, 0), + (3, 4, 0); + + INSERT INTO graphs(source, target, cost, reverse_cost, dead_case) + VALUES + /* 2->{3->4 [dir=both]} [dir=both]; 1->2 */ + (1, 2, 1, -1, 1), + + /* 2->{3->4 [dir=both]} [dir=both]; 2->1 */ + (2, 1, 1, -1, 2), + + /* 2->{3->4 [dir=both]} [dir=both]; 2->1 [dir=both] */ + (1, 2, 1, 1, 3), + + /* 2->{3->4 [dir=both]} [dir=both]; 2->1,2->1 */ + (2, 1, 1, -1, 4), + (2, 1, 1, -1, 4), + + /* 2->{3->4 [dir=both]} [dir=both]; {2,3}->1 */ + (2, 1, 1, -1, 5), + (3, 1, 1, -1, 5), + + /* 2->{3->4 [dir=both]} [dir=both]; 2->1;2->1;3->1 */ + (2, 1, 1, -1, 6), + (2, 1, 1, -1, 6), + (3, 1, 1, -1, 6); + + CREATE TABLE results ( + type text, + id INTEGER, + contracted_vertices BIGINT[], + result_case INTEGER + ); + + INSERT INTO results(type, id, contracted_vertices, result_case) + VALUES + ('v',6,ARRAY[5]::BIGINT[], 1), + ('v',5,ARRAY[6], 2), + ('v',15,ARRAY[10], 3), + ('v',10,ARRAY[15], 4), + ('v',12,ARRAY[8], 5), + ('v',8,ARRAY[12], 6), + ('v',15,ARRAY[6,10], 7), + ('v',6,ARRAY[10,15], 8), + ('v',10,ARRAY[6,15], 9), + ('v',10,ARRAY[15], 10), + ('v',10,ARRAY[6], 11), + ('v',8,ARRAY[11,12], 12), + ('v',8,ARRAY[12], 13), + ('v',11,ARRAY[12], 13), + ('v',11,ARRAY[8,12], 113), + ('v',12,ARRAY[8,11], 14), + ('v',12,ARRAY[11], 15), + + ('v',10,ARRAY[6], 16), + ('v',12,ARRAY[8], 16), + ('v',6,ARRAY[10], 17), + ('v',12,ARRAY[8], 17), + ('v',10,ARRAY[6], 18), + ('v',8,ARRAY[12], 18), + ('v',6,ARRAY[10], 19), + ('v',8,ARRAY[12], 19), + ('v',6,ARRAY[10], 20), + + ('v',17,ARRAY[10,11,12], 21), + ('v',10,ARRAY[11,12,17], 22), + ('v',11,ARRAY[10,12,17], 23), + ('v',12,ARRAY[10,11,17], 24), + + ('v',8,ARRAY[9], 25), + ('v',7,ARRAY[1,3], 25), + ('v',6,ARRAY[5], 25), + + ('v',8,ARRAY[9], 26), + ('v',3,ARRAY[1], 26), + ('v',6,ARRAY[5], 26) + ; + + PREPARE get_solution(integer, integer, text) AS + WITH a AS (SELECT CASE WHEN $3::BOOLEAN THEN $1 ELSE $2 END r) + SELECT type,id,contracted_vertices FROM results, a WHERE result_case = r; + +END +$BODY$ +LANGUAGE plpgsql; + +CREATE OR REPLACE FUNCTION deadend_edge_cases(directed text) +RETURNS SETOF TEXT AS +$BODY$ +BEGIN + +RETURN QUERY SELECT is_empty(format($$"graph" ('0',%1$s)$$,directed),'empty graph: 0,'||directed); + +RETURN QUERY SELECT isnt_empty(format($$"graph" ('1',%1$s)$$,directed), 'not empty graph: 1,'||directed); +RETURN QUERY SELECT set_eq(format($$"graph" ('1',%1$s)$$,directed), $$ VALUES ('v',2,ARRAY[1]::BIGINT[],-1,-1,-1) $$, 'expected graph: 1,'||directed) ; + +RETURN QUERY SELECT isnt_empty(format($$"graph" ('0,1',%1$s)$$,directed), 'not empty graph: 0,1,'||directed); +RETURN QUERY SELECT set_eq(format($$"graph" ('0,1',%1$s)$$,directed), $$ VALUES ('v',2,ARRAY[1]::BIGINT[],-1,-1,-1) $$, 'expected graph: 0,1,'||directed) ; + +RETURN QUERY SELECT isnt_empty(format($$"graph" ('0,2',%1$s)$$,directed), 'not empty graph: 0,2,'||directed); +RETURN QUERY SELECT set_eq(format($$"graph" ('0,2',%1$s)$$,directed), $$ VALUES ('v',2,ARRAY[1]::BIGINT[],-1,-1,-1) $$, 'expected graph: 0,2,'||directed) ; + +RETURN QUERY SELECT isnt_empty(format($$"graph" ('0,3',%1$s)$$,directed), 'not empty graph: 0,3,'||directed); +RETURN QUERY SELECT set_eq(format($$"graph" ('0,3',%1$s)$$,directed), $$ VALUES ('v',2,ARRAY[1]::BIGINT[],-1,-1,-1) $$, 'expected graph: 0,3,'||directed) ; + +RETURN QUERY SELECT isnt_empty(format($$"graph" ('0,4',%1$s)$$,directed), 'not empty graph: 0,4,'||directed); +RETURN QUERY SELECT set_eq(format($$"graph" ('0,4',%1$s)$$,directed), $$ VALUES ('v',2,ARRAY[1]::BIGINT[],-1,-1,-1) $$, 'expected graph: 0,4,'||directed) ; + +RETURN QUERY +SELECT CASE WHEN directed::BOOLEAN THEN + collect_tap( + isnt_empty(format($$"graph" ('0,5',%1$s)$$,directed), 'empty graph: 0,5,'||directed), + set_eq(format($$"graph" ('0,5',%1$s)$$,directed), $$ VALUES ('v',2,ARRAY[1]::BIGINT[],-1,-1,-1), ('v',3,ARRAY[1]::BIGINT[],-1,-1,-1) $$, 'expected graph: 0,4,'||directed), + isnt_empty(format($$"graph" ('0,6',%1$s)$$,directed), 'empty graph: 0,6,'||directed), + set_eq(format($$"graph" ('0,6',%1$s)$$,directed), $$ VALUES ('v',2,ARRAY[1]::BIGINT[],-1,-1,-1), ('v',3,ARRAY[1]::BIGINT[],-1,-1,-1) $$, 'expected graph: 0,6,'||directed)) +ELSE + collect_tap( + is_empty(format($$"graph" ('0,5',%1$s)$$,directed), 'empty graph: 0,5,'||directed), + is_empty(format($$"graph" ('0,6',%1$s)$$,directed), 'empty graph: 0,6,'||directed)) +END; + +END; +$BODY$ +LANGUAGE plpgsql; + +CREATE OR REPLACE FUNCTION deadend_edge_cases_sampledata(directed text) +RETURNS SETOF TEXT AS +$BODY$ +BEGIN + + -- SINGLE edge + + RETURN QUERY + SELECT set_eq($$"graph1" ('1','{}',$$||directed||$$)$$, $$"get_solution" (1,1,$$||directed||$$)$$, '5 <=> 6: Directed=' || directed ||', no forbidden vertices'); + RETURN QUERY + SELECT set_eq($$"graph1" ('1','{6}',$$||directed||$$)$$, $$"get_solution" (1,1,$$||directed||$$) $$, '5 <=> 6: Directed=' || directed ||', forbid 5'); + RETURN QUERY + SELECT set_eq($$"graph1" ('1','{5}',$$||directed||$$)$$, $$"get_solution" (2,2,$$||directed||$$)$$, '5 <=> 6: Directed=' || directed ||', forbid 6'); + RETURN QUERY + SELECT is_empty($$"graph1" ('1','{5,6}',$$||directed||$$)$$, '5 <=> 6: Directed=' || directed ||', forbid 5,6'); + + RETURN QUERY + SELECT set_eq($$"graph1" ('3','{}',$$||directed||$$)$$, $$"get_solution" (3,3,$$||directed||$$) $$, '10 -> 15: Directed=' || directed ||', no forbidden vertices'); + RETURN QUERY + SELECT set_eq($$"graph1" ('3','{10}',$$||directed||$$)$$, $$"get_solution" (4,4,$$||directed||$$) $$, '10 -> 15: Directed=' || directed ||', forbid 10'); + RETURN QUERY + SELECT set_eq($$"graph1" ('3','{15}',$$||directed||$$)$$, $$"get_solution" (3,3,$$||directed||$$) $$, '10 -> 15: Directed=' || directed ||', forbid 15'); + RETURN QUERY + SELECT is_empty($$"graph1" ('3','{10,15}',$$||directed||$$) $$, '5 <=> 6: Directed=' || directed ||', forbid 10,15'); + + RETURN QUERY + SELECT set_eq($$"graph1" ('12','{}',$$||directed||$$)$$, $$"get_solution" (5,5,$$||directed||$$) $$, '8 -> 12: Directed=' || directed ||', no forbidden vertices'); + RETURN QUERY + SELECT set_eq($$"graph1" ('12','{8}',$$||directed||$$)$$, $$"get_solution" (6,6,$$||directed||$$) $$, '8 -> 12: Directed=' || directed ||', forbid 8'); + RETURN QUERY + SELECT set_eq($$"graph1" ('12','{12}',$$||directed||$$)$$, $$"get_solution" (5,5,$$||directed||$$) $$, '8 -> 12: Directed=' || directed ||', forbid 12'); + + -- TWO edges + + RETURN QUERY + SELECT set_eq($$"graph1" ('2,3','{}',$$||directed||$$)$$, $$"get_solution" (7,7,$$||directed||$$) $$, '15 -> 10 -> 6: Directed=' || directed ||', no forbidden vertices'); + RETURN QUERY + SELECT set_eq($$"graph1" ('2,3','{6}',$$||directed||$$)$$, $$"get_solution" (8,8,$$||directed||$$) $$, '15 -> 10 -> 6: Directed=' || directed ||', forbid 6'); + RETURN QUERY + SELECT set_eq($$"graph1" ('2,3','{10}',$$||directed||$$)$$, $$"get_solution" (9,9,$$||directed||$$) $$, '15 -> 10 -> 6: Directed=' || directed ||', forbid 10'); + RETURN QUERY + SELECT set_eq($$"graph1" ('2,3','{15}',$$||directed||$$)$$, $$"get_solution" (7,7,$$||directed||$$) $$, '15 -> 10 -> 6: Directed=' || directed ||', forbid 15'); + RETURN QUERY + SELECT set_eq($$"graph1" ('2,3','{6,10}',$$||directed||$$)$$, $$"get_solution" (10,10,$$||directed||$$) $$, '15 -> 10 -> 6: Directed=' || directed ||', forbid 6,10'); + RETURN QUERY + SELECT is_empty($$"graph1" ('2,3','{6,15}',$$||directed||$$)$$, '15 -> 10 -> 6: Directed=' || directed ||', forbid 6,15'); + RETURN QUERY + SELECT set_eq($$"graph1" ('2,3','{10,15}',$$||directed||$$)$$, $$"get_solution" (11,11,$$||directed||$$) $$, '15 -> 10 -> 6: Directed=' || directed ||', forbid 10,15'); + RETURN QUERY + SELECT is_empty($$"graph1" ('2,3','{6,10,15}',$$||directed||$$)$$, '15 -> 10 -> 6: Directed=' || directed ||', forbid 6,10,15'); + + + RETURN QUERY + SELECT set_eq($$"graph1" ('11,12','{}',$$||directed||$$)$$, $$"get_solution" (12,12,$$||directed||$$) $$, '11 -> 12 <- 8: Directed=' || directed ||', no forbidden vertices'); + RETURN QUERY + SELECT set_eq($$"graph1" ('11,12','{8}',$$||directed||$$)$$, $$"get_solution" (12,12,$$||directed||$$) $$, '11 -> 12 <- 8: Directed=' || directed ||', forbid 8'); + RETURN QUERY + SELECT set_eq($$"graph1" ('11,12','{11}',$$||directed||$$)$$, $$"get_solution" (13,113,$$||directed||$$) $$, '11 -> 12 <- 8: Directed=' || directed ||', forbid 11'); + RETURN QUERY + SELECT set_eq($$"graph1" ('11,12','{12}',$$||directed||$$)$$, $$"get_solution" (14,14,$$||directed||$$) $$, '11 -> 12 <- 8: Directed=' || directed ||', forbid 12'); + RETURN QUERY + SELECT set_eq($$"graph1" ('11,12','{8,11}',$$||directed||$$)$$, $$"get_solution" (13,213,$$||directed||$$) $$, '11 -> 12 <- 8: Directed=' || directed ||', forbid 8,11'); + RETURN QUERY + SELECT set_eq($$"graph1" ('11,12','{8,12}',$$||directed||$$)$$, $$"get_solution" (15,15,$$||directed||$$) $$, '11 -> 12 <- 8: Directed=' || directed ||', forbid 8,12'); + RETURN QUERY + SELECT set_eq($$"graph1" ('11,12','{11,12}',$$||directed||$$)$$, $$"get_solution" (5,5,$$||directed||$$) $$, '11 -> 12 <- 8: Directed=' || directed ||', forbid 11,12'); + RETURN QUERY + SELECT is_empty($$"graph1" ('11,12','{8,11,12}',$$||directed||$$)$$, '11 -> 12 <- 8: Directed=' || directed ||', forbid 8,11,12'); + + + RETURN QUERY + SELECT set_eq($$"graph1" ('2,12','{}',$$||directed||$$)$$, $$"get_solution" (16,16,$$||directed||$$) $$, '10 -> 6, 8 -> 12: Directed=' || directed ||', no forbidden vertices'); + RETURN QUERY + SELECT set_eq($$"graph1" ('2,12','{6}',$$||directed||$$)$$, $$"get_solution" (17,17,$$||directed||$$) $$, '10 -> 6, 8 -> 12: Directed=' || directed ||', forbid 6'); + RETURN QUERY + SELECT set_eq($$"graph1" ('2,12','{8}',$$||directed||$$)$$, $$"get_solution" (18,18,$$||directed||$$) $$, '10 -> 6, 8 -> 12: Directed=' || directed ||', forbid 8'); + RETURN QUERY + SELECT set_eq($$"graph1" ('2,12','{10}',$$||directed||$$)$$, $$"get_solution" (16,16,$$||directed||$$) $$, '10 -> 6, 8 -> 12: Directed=' || directed ||', forbid 10'); + RETURN QUERY + SELECT set_eq($$"graph1" ('2,12','{12}',$$||directed||$$)$$, $$"get_solution" (16,16,$$||directed||$$) $$, '10 -> 6, 8 -> 12: Directed=' || directed ||', forbid 12'); + RETURN QUERY + SELECT set_eq($$"graph1" ('2,12','{6,8}',$$||directed||$$)$$, $$"get_solution" (19,19,$$||directed||$$) $$, '10 -> 6, 8 -> 12: Directed=' || directed ||', forbid 6,8'); + RETURN QUERY + SELECT set_eq($$"graph1" ('2,12','{6,10}',$$||directed||$$)$$, $$"get_solution" (5,5,$$||directed||$$) $$, '10 -> 6, 8 -> 12: Directed=' || directed ||', forbid 6,10'); + RETURN QUERY + SELECT set_eq($$"graph1" ('2,12','{6,12}',$$||directed||$$)$$, $$"get_solution" (17,17,$$||directed||$$) $$, '10 -> 6, 8 -> 12: Directed=' || directed ||', forbid 6,12'); + RETURN QUERY + SELECT set_eq($$"graph1" ('2,12','{8,10}',$$||directed||$$)$$, $$"get_solution" (18,18,$$||directed||$$) $$, '10 -> 6, 8 -> 12: Directed=' || directed ||', forbid 8,10'); + RETURN QUERY + SELECT set_eq($$"graph1" ('2,12','{8,12}',$$||directed||$$)$$, $$"get_solution" (11,11,$$||directed||$$) $$, '10 -> 6, 8 -> 12: Directed=' || directed ||', forbid 8,12'); + RETURN QUERY + SELECT set_eq($$"graph1" ('2,12','{6,8,10}',$$||directed||$$)$$, $$"get_solution" (6,6,$$||directed||$$) $$, '10 -> 6, 8 -> 12: Directed=' || directed ||', forbid 6,8,10'); + RETURN QUERY + SELECT set_eq($$"graph1" ('2,12','{6,8,12}',$$||directed||$$)$$, $$"get_solution" (20,20,$$||directed||$$) $$, '10 -> 6, 8 -> 12: Directed=' || directed ||', forbid 6,8,12'); + RETURN QUERY + SELECT set_eq($$"graph1" ('2,12','{6,10,12}',$$||directed||$$)$$, $$"get_solution" (5,5,$$||directed||$$) $$, '10 -> 6, 8 -> 12: Directed=' || directed ||', forbid 6,10,12'); + RETURN QUERY + SELECT set_eq($$"graph1" ('2,12','{8,10,12}',$$||directed||$$)$$, $$"get_solution" (11,11,$$||directed||$$) $$, '10 -> 6, 8 -> 12: Directed=' || directed ||', forbid 8,10,12'); + RETURN QUERY + SELECT is_empty($$"graph1" ('2,12','{6,8,10,12}',$$||directed||$$)$$, '10 -> 6, 8 -> 12: Directed=' || directed ||', forbid 6,8,10,12'); + + + -- THREE edges + RETURN QUERY + SELECT set_eq($$"graph1" ('5,11,13','{}',$$||directed||$$)$$, $$"get_solution" (21,21,$$||directed||$$) $$, '10 -> 11 -> 12 -> 17: Directed=' || directed ||', no forbidden vertices'); + RETURN QUERY + SELECT set_eq($$"graph1" ('5,11,13','{10}',$$||directed||$$)$$, $$"get_solution" (22,22,$$||directed||$$) $$, '10 -> 11 -> 12 -> 17: Directed=' || directed ||', forbid 10'); + RETURN QUERY + SELECT set_eq($$"graph1" ('5,11,13','{11}',$$||directed||$$)$$, $$"get_solution" (23,23,$$||directed||$$) $$, '10 -> 11 -> 12 -> 17: Directed=' || directed ||', forbid 11'); + RETURN QUERY + SELECT set_eq($$"graph1" ('5,11,13','{12}',$$||directed||$$)$$, $$"get_solution" (24,24,$$||directed||$$) $$, '10 -> 11 -> 12 -> 17: Directed=' || directed ||', forbid 12'); + RETURN QUERY + SELECT set_eq($$"graph1" ('5,11,13','{17}',$$||directed||$$)$$, $$"get_solution" (21,21,$$||directed||$$) $$, '10 -> 11 -> 12 -> 17: Directed=' || directed ||', forbid 17'); + RETURN QUERY + SELECT is_empty($$"graph1" ('5,11,13','{10,17}',$$||directed||$$)$$, '10 -> 11 -> 12 -> 17: Directed=' || directed ||', forbid 10,17'); + + -- The graph1 + RETURN QUERY + SELECT set_eq($$"graph1" ('1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16','{}',$$||directed||$$)$$, $$"get_solution" (25,25,$$||directed||$$) $$, 'the graph1: Directed=' || directed ||', no forbidden vertices'); + RETURN QUERY + SELECT set_eq($$"graph1" ('1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16','{3}',$$||directed||$$)$$, $$"get_solution" (26,26,$$||directed||$$) $$, 'the graph1: Directed=' || directed ||', forbid 3'); + +END; +$BODY$ +LANGUAGE plpgsql; + +CREATE OR REPLACE FUNCTION check_contracted_graph_linear(BOOLEAN) +RETURNS SETOF TEXT AS +$BODY$ +BEGIN + + IF NOT min_version('3.8.0') THEN + RETURN QUERY SELECT skip(1, 'contraction function/signature is new on 3.8.0'); + RETURN; + END IF; + + IF $1 THEN + RETURN QUERY + SELECT set_eq($$SELECT type, id, contracted_vertices, source, target FROM contraction_info$$, + $$ VALUES ('e',-1,ARRAY[3],7,1), ('e',-2,ARRAY[3],1,7)$$, 'The edges') ; + + RETURN QUERY + SELECT set_eq( + $$SELECT id FROM edges WHERE is_new$$, + $$SELECT unnest(ARRAY[19, 20])$$, 'The vertices' + ); + + PREPARE c_expected_graph AS + SELECT source, target, cost, reverse_cost + FROM (VALUES + (1, 7, '2.085', '-1.000'), + (2, 4, '1.289', '1.289'), + (5, 6, '1.001', '1.001'), + (6, 7, '1.016', '1.016'), + (6, 10, '-0.996', '1.004'), + (7, 1, '2.085', '-1.000'), + (7, 8, '1.100', '1.100'), + (7, 11, '1.064', '1.064'), + (8, 9, '1.196', '1.196'), + (8, 12, '1.144', '-0.856'), + (10, 11, '1.025', '-0.975'), + (10, 15, '-0.991', '1.009'), + (11, 12, '1.121', '-0.879'), + (11, 16, '1.081', '1.081'), + (12, 17, '1.169', '-0.831'), + (13, 14, '1.324', '1.324'), + (15, 16, '1.256', '1.256'), + (16, 17, '1.225', '1.225')) + AS t(source, target, cost, reverse_cost); + + RETURN QUERY + SELECT set_eq('SELECT source, target, round(cost::numeric, 3)::TEXT AS cost, round(reverse_cost::numeric, 3)::TEXT FROM contracted_graph', + 'c_expected_graph', 'The contracted graph'); + ELSE + RETURN QUERY + SELECT set_eq($$SELECT type, id, contracted_vertices, source, target FROM contraction_info$$, + $$ VALUES ('e',-3,ARRAY[17],16,12), ('e',-2,ARRAY[3],7,1), ('e', -1, ARRAY[15], 10, 16)$$) ; + + RETURN QUERY + SELECT set_eq( + $$SELECT id FROM edges WHERE is_new$$, + $$SELECT unnest(ARRAY[19, 20, 21])$$ + ); + + PREPARE c_expected_graph AS + SELECT source, target, cost, reverse_cost + FROM (VALUES + (2, 4, '1.289', '1.289'), + (5, 6, '1.001', '1.001'), + (6, 10, '-0.996', '1.004'), + (6, 7, '1.016', '1.016'), + (7, 1, '2.085', '-1.000'), + (7, 8, '1.100', '1.100'), + (7, 11, '1.064', '1.064'), + (8, 9, '1.196', '1.196'), + (8, 12, '1.144', '-0.856'), + (10, 11, '1.025', '-0.975'), + (10, 16, '2.265', '-1.000'), + (11, 12, '1.121', '-0.879'), + (11, 16, '1.081', '1.081'), + (13, 14, '1.324', '1.324'), + (16, 12, '2.394', '-1.000')) + AS t(source, target, cost, reverse_cost); + + RETURN QUERY + SELECT set_eq('SELECT source, target, round(cost::numeric, 3)::TEXT AS cost, round(reverse_cost::numeric, 3)::TEXT FROM contracted_graph', + 'c_expected_graph', 'The contracted graph'); + + END IF; + DEALLOCATE PREPARE c_expected_graph; +END +$BODY$ +LANGUAGE plpgsql; + +CREATE OR REPLACE FUNCTION linear_edge_cases_sampledata(directed text) +RETURNS SETOF TEXT AS +$BODY$ +BEGIN + + -- SINGLE edge + + RETURN QUERY SELECT is_empty($$"graph1" ('6','{}',$$||directed||$$)$$, '1<=>3: Directed=' || directed ||' no forbidden vertices'); + + -- TWO edges + + RETURN QUERY SELECT isnt_empty($$"graph1" ('6,7','{}',$$||directed||$$)$$, '1<=>3<=>7: Directed=' || directed ||' no forbidden vertices'); + RETURN QUERY + SELECT set_eq($$"graph1" ('6,7','{}',$$||directed||$$)$$, $$"get_solution" (1,11,$$||directed||$$)$$ , '1<=>3<=>7: Directed=' || directed ||' no forbidden'); + RETURN QUERY + SELECT set_eq($$"graph1" ('6,7','{1}',$$||directed||$$)$$, $$"get_solution" (1,11,$$||directed||$$)$$, '1<=>3<=>7: Directed=' || directed ||' , forbid 1'); + RETURN QUERY SELECT is_empty($$"graph1" ('6,7','{3}',$$||directed||$$)$$, '1<=>3<=>7: Directed=' || directed ||' , forbid 3'); + RETURN QUERY + SELECT set_eq($$"graph1" ('6,7','{7}',$$||directed||$$)$$, $$"get_solution" (1,11,$$||directed||$$)$$, '1<=>3<=>7: Directed=' || directed ||' , forbid 7'); + + -- T shape + + RETURN QUERY SELECT isnt_empty($$"graph1" ('6,7,4,10','{}',$$||directed||$$)$$, '1<=>3<=>7<->6,8: Directed=' || directed ||' no forbidden vertices'); + RETURN QUERY + SELECT set_eq($$"graph1" ('6,7,4,10','{}',$$||directed||$$)$$, $$"get_solution" (2,12,$$||directed||$$)$$, '1<=>3<=>7<->6,8 : Directed=' || directed ||' no forbidden'); + RETURN QUERY + SELECT set_eq($$"graph1" ('6,7,4,10','{1}',$$||directed||$$)$$, $$"get_solution" (2,12,$$||directed||$$)$$, '1<=>3<=>7<->6,8 : Directed=' || directed ||', forbid 1'); + RETURN QUERY + SELECT is_empty($$"graph1" ('6,7,4,10','{3}',$$||directed||$$)$$, '1<=>3<=>7<->6,8 : Directed=' || directed ||', forbid 3'); + RETURN QUERY + SELECT set_eq($$"graph1" ('6,7,4,10','{7}',$$||directed||$$)$$, $$"get_solution" (2,12,$$||directed||$$)$$, '1<=>3<=>7<->6,8 : Directed=' || directed ||', forbid 7'); + + + -- THREE edges + + RETURN QUERY SELECT isnt_empty($$"graph1" ('6,7,8','{}',$$||directed||$$)$$, '1<=>3<=>7<=>11: Directed=' || directed ||' no forbidden'); + RETURN QUERY + SELECT set_eq($$"graph1" ('6,7,8','{}',$$||directed||$$)$$, $$"get_solution" (3,13,$$||directed||$$)$$, '1<=>3<=>7<=>11: Directed=' || directed ||' no forbidden'); + RETURN QUERY + SELECT set_eq($$"graph1" ('6,7,8','{1}',$$||directed||$$)$$, $$"get_solution" (3,13,$$||directed||$$)$$, '1<=>3<=>7<=>11: Directed=' || directed ||', forbid 1'); + RETURN QUERY + SELECT set_eq($$"graph1" ('6,7,8','{11}',$$||directed||$$)$$, $$"get_solution" (3,13,$$||directed||$$)$$, '1<=>3<=>7<=>11: Directed=' || directed ||', forbid 11'); + RETURN QUERY + SELECT set_eq($$"graph1" ('6,7,8','{3}',$$||directed||$$)$$, $$"get_solution" (4,14,$$||directed||$$)$$, '1<=>3<=>7<=>11: Directed=' || directed ||', forbid 3'); + + RETURN QUERY + SELECT set_eq($$"graph1" ('6,7,8','{7}',$$||directed||$$)$$, $$"get_solution" (1,11,$$||directed||$$)$$, '1<=>3<=>7<=>11: Directed=' || directed ||', forbid 7'); + + -- FOUR edges + -- circling square + RETURN QUERY SELECT isnt_empty($$"graph1" ('3,5,9,16','{}',$$||directed||$$)$$, '10->11<=>16<=>15->10: Directed=' || directed ||' no forbidden'); + RETURN QUERY + SELECT set_eq($$"graph1" ('3,5,9,16','{}',$$||directed||$$)$$, $$"get_solution" (5,15,$$||directed||$$)$$, '10->11<=>16<=>15->10: Directed=' || directed ||' no forbidden'); + RETURN QUERY + SELECT set_eq($$"graph1" ('3,5,9,16','{11}',$$||directed||$$)$$, $$"get_solution" (5,15,$$||directed||$$)$$, '10->11<=>16<=>15->10: Directed=' || directed ||', forbid 11'); + RETURN QUERY + SELECT set_eq($$"graph1" ('3,5,9,16','{15}',$$||directed||$$)$$, $$"get_solution" (5,25,$$||directed||$$)$$, '10->11<=>16<=>15->10: Directed=' || directed ||', forbid 15'); + RETURN QUERY + SELECT set_eq($$"graph1" ('3,5,9,16','{10}',$$||directed||$$)$$, $$"get_solution" (6,16,$$||directed||$$)$$, '10->11<=>16<=>15->10: Directed=' || directed ||', forbid 10'); + RETURN QUERY + SELECT set_eq($$"graph1" ('3,5,9,16','{16}',$$||directed||$$)$$, $$"get_solution" (7,17,$$||directed||$$)$$, '10->11<=>16<=>15->10: Directed=' || directed ||', forbid 16'); + + -- non circling square + RETURN QUERY SELECT isnt_empty($$"graph1" ('2,4,5,8','{}',$$||directed||$$)$$, '11<-10->6<=>7<=>11->10: Directed=' || directed ||' no forbidden'); + + RETURN QUERY + SELECT set_eq($$"graph1" ('2,4,5,8','{}',$$||directed||$$)$$, $$"get_solution" (8,18,$$||directed||$$)$$, '11<-10->6<=>7<=>11->10: Directed=' || directed ||' no forbidden'); + + if directed THEN + RETURN QUERY + SELECT is_empty($$"graph1" ('2,4,5,8','{7}',$$||directed||$$)$$, '11<-10->6<=>7<=>11->10: Directed=' || directed ||' forbid 7'); + ELSE + RETURN QUERY + SELECT set_eq($$"graph1" ('2,4,5,8','{7}',$$||directed||$$)$$, $$"get_solution" (8,18,$$||directed||$$)$$, '11<-10->6<=>7<=>11->10: Directed=' || directed ||' forbid 7'); + END IF; + RETURN QUERY + SELECT set_eq($$"graph1" ('2,4,5,8','{11}',$$||directed||$$)$$, $$"get_solution" (8,18,$$||directed||$$)$$, '11<-10->6<=>7<=>11->10: Directed=' || directed ||' forbid 11'); + RETURN QUERY + SELECT set_eq($$"graph1" ('2,4,5,8','{6}',$$||directed||$$)$$, $$"get_solution" (8,28,$$||directed||$$)$$, '11<-10->6<=>7<=>11->10: Directed=' || directed ||' forbid 6'); + RETURN QUERY + SELECT set_eq($$"graph1" ('2,4,5,8','{10}',$$||directed||$$)$$, $$"get_solution" (8,38,$$||directed||$$)$$, '11<-10->6<=>7<=>11->10: Directed=' || directed ||' forbid 10'); + + -- The graph1 + RETURN QUERY + SELECT set_eq($$"graph1" ('1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18','{}',$$||directed||$$)$$, $$"get_solution" (9,19,$$||directed||$$)$$, 'the graph: Directed=' || directed ||' no forbidden'); + IF directed THEN + RETURN QUERY + SELECT is_empty($$"graph1" ('1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18','{3}',$$||directed||$$)$$, 'the graph1: Directed=' || directed ||', forbid 3'); + ELSE + RETURN QUERY + SELECT set_eq($$"graph1" ('1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18','{3}',$$||directed||$$)$$, $$"get_solution" (1,20,$$||directed||$$)$$, 'the graph1: Directed=' || directed ||', forbid 3'); + END IF; + + +END; +$BODY$ +LANGUAGE plpgsql; + + +CREATE OR REPLACE FUNCTION linear_edge_cases(directed text) +RETURNS SETOF TEXT AS +$BODY$ +BEGIN + + RETURN QUERY SELECT is_empty(format($$"graph" ('0',%1$s)$$,directed),'empty graph: 0,'||directed); + RETURN QUERY SELECT is_empty(format($$"graph" ('1',%1$s)$$,directed),'empty graph: 1,'||directed); + RETURN QUERY SELECT is_empty(format($$"graph" ('2',%1$s)$$,directed),'empty graph: 2,'||directed); + RETURN QUERY SELECT isnt_empty(format($$"graph" ('3',%1$s)$$,directed),'not empty graph: 3,'||directed); + RETURN QUERY SELECT isnt_empty(format($$"graph" ('4',%1$s)$$,directed),'not empty graph: 4,'||directed); + RETURN QUERY SELECT isnt_empty(format($$"graph" ('5',%1$s)$$,directed),'not empty graph: 5,'||directed); + RETURN QUERY SELECT isnt_empty(format($$"graph" ('6',%1$s)$$,directed),'not empty graph: 6,'||directed); + RETURN QUERY SELECT isnt_empty(format($$"graph" ('7',%1$s)$$,directed),'not empty graph: 7,'||directed); + + RETURN QUERY SELECT is_empty(format($$"graph" ('0,1',%1$s)$$,directed), 'empty graph: 0,1,'||directed); + RETURN QUERY SELECT is_empty(format($$"graph" ('0,2',%1$s)$$,directed), 'empty graph: 0,2,'||directed); + RETURN QUERY SELECT isnt_empty(format($$"graph" ('0,3',%1$s)$$,directed), 'not empty graph: 0,3,'||directed); + RETURN QUERY SELECT isnt_empty(format($$"graph" ('0,4',%1$s)$$,directed), 'not empty graph: 0,4,'||directed); + RETURN QUERY SELECT isnt_empty(format($$"graph" ('0,5',%1$s)$$,directed), 'not empty graph: 0,5,'||directed); + RETURN QUERY SELECT isnt_empty(format($$"graph" ('0,6',%1$s)$$,directed), 'not empty graph: 0,6,'||directed); + RETURN QUERY SELECT isnt_empty(format($$"graph" ('0,7',%1$s)$$,directed), 'not empty graph: 0,7,'||directed); + + RETURN QUERY SELECT set_eq(format($$"graph" ('3',%1$s)$$,directed), $$ VALUES ('e',-1,ARRAY[2]::BIGINT[],1,11,2) $$, 'expected graph: 3,'||directed) ; + RETURN QUERY SELECT set_eq(format($$"graph" ('4',%1$s)$$,directed), $$ VALUES ('e',-1,ARRAY[2]::BIGINT[],11,1,2) $$, 'expected graph: 4,'||directed) ; + + if directed THEN + RETURN QUERY SELECT set_eq(format($$"graph" ('5',%1$s)$$,directed), $$ VALUES ('e',-1,ARRAY[2]::BIGINT[],11,1,2),('e',-2,ARRAY[2]::BIGINT[],1,11,2) $$, 'expected graph: 5,'||directed) ; + RETURN QUERY SELECT set_eq(format($$"graph" ('6',%1$s)$$,directed), $$ VALUES ('e',-1,ARRAY[11]::BIGINT[],1,3,2), ('e',-2,ARRAY[11]::BIGINT[],3,1,2) $$, 'expected graph: 6,'||directed) ; + RETURN QUERY SELECT set_eq(format($$"graph" ('7',%1$s)$$,directed), $$ VALUES ('e',-1,ARRAY[1,2]::BIGINT[],11,3,3), ('e',-2,ARRAY[1,2]::BIGINT[],3,11,3) $$, 'expected graph: 7,'||directed) ; + RETURN QUERY SELECT set_eq(format($$"graph" ('0,3',%1$s)$$,directed), $$ VALUES ('e',-1,ARRAY[2]::BIGINT[],1,11,2) $$, 'expected graph: 0,3,'||directed) ; + RETURN QUERY SELECT set_eq(format($$"graph" ('0,4',%1$s)$$,directed), $$ VALUES ('e',-1,ARRAY[2]::BIGINT[],11,1,2) $$, 'expected graph: 0,4,'||directed) ; + RETURN QUERY SELECT set_eq(format($$"graph" ('0,5',%1$s)$$,directed), $$ VALUES ('e',-1,ARRAY[2]::BIGINT[],11,1,2),('e',-2,ARRAY[2]::BIGINT[],1,11,2) $$, 'expected graph: 0,5,'||directed) ; + RETURN QUERY SELECT set_eq(format($$"graph" ('0,6',%1$s)$$,directed), $$ VALUES ('e',-1,ARRAY[1]::BIGINT[],11,3,2),('e',-2,ARRAY[1]::BIGINT[],3,11,2) $$, 'expected graph: 0,6,'||directed) ; + RETURN QUERY SELECT set_eq(format($$"graph" ('0,7',%1$s)$$,directed), $$ VALUES ('e',-1,ARRAY[1,2]::BIGINT[],11,3,3),('e',-2,ARRAY[1,2]::BIGINT[],3,11,3) $$, 'expected graph: 0,7,'||directed) ; + ELSE + RETURN QUERY SELECT set_eq(format($$"graph" ('5',%1$s)$$,directed), $$ VALUES ('e',-1,ARRAY[2]::BIGINT[],11,1,2) $$, 'expected graph: 5,'||directed) ; + RETURN QUERY SELECT set_eq(format($$"graph" ('6',%1$s)$$,directed), $$ VALUES ('e',-1,ARRAY[11]::BIGINT[],1,3,2) $$, 'expected graph: 6,'||directed) ; + RETURN QUERY SELECT set_eq(format($$"graph" ('7',%1$s)$$,directed), $$ VALUES ('e',-1,ARRAY[1,11]::BIGINT[],2,3,3) $$, 'expected graph: 7,'||directed) ; + RETURN QUERY SELECT set_eq(format($$"graph" ('0,3',%1$s)$$,directed), $$ VALUES ('e',-1,ARRAY[2]::BIGINT[],11,1,2) $$, 'expected graph: 0,3,'||directed) ; + RETURN QUERY SELECT set_eq(format($$"graph" ('0,4',%1$s)$$,directed), $$ VALUES ('e',-1,ARRAY[2]::BIGINT[],11,1,2) $$, 'expected graph: 0,4,'||directed) ; + RETURN QUERY SELECT set_eq(format($$"graph" ('0,5',%1$s)$$,directed), $$ VALUES ('e',-1,ARRAY[2]::BIGINT[],11,1,2) $$, 'expected graph: 0,5,'||directed) ; + RETURN QUERY SELECT set_eq(format($$"graph" ('0,6',%1$s)$$,directed), $$ VALUES ('e',-1,ARRAY[1]::BIGINT[],11,3,2) $$, 'expected graph: 0,6,'||directed) ; + RETURN QUERY SELECT set_eq(format($$"graph" ('0,7',%1$s)$$,directed), $$ VALUES ('e',-1,ARRAY[1,2]::BIGINT[],11,3,3) $$, 'expected graph: 0,7,'||directed) ; + END IF; + +END; +$BODY$ +LANGUAGE plpgsql; + + CREATE OR REPLACE FUNCTION test_ids_size(pow INTEGER, directed BOOLEAN) RETURNS SETOF TEXT AS $BODY$ @@ -24,6 +832,7 @@ vids BIGINT[] = ARRAY[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]; x BIGINT; q TEXT; mainq TEXT; +otherq TEXT; expected TEXT; BEGIN UPDATE edges @@ -66,48 +875,26 @@ BEGIN -1::BIGINT AS target, -1::FLOAT AS cost$$); - q = format(mainq, ARRAY[vids[1], vids[2]], directed); - - RETURN QUERY - SELECT set_eq(q, - $$SELECT - 'v'::CHAR AS type, - $$ || vids[10] || $$::BIGINT AS id, - ARRAY[ $$ || vids[5] || $$,$$ || vids[6] || $$]::BIGINT[] AS contracted_vertices, - -1::BIGINT AS source, - -1::BIGINT AS target, - -1::FLOAT AS cost$$); - - q = format(mainq, ARRAY[vids[1], vids[2], vids[3]], directed); - - expected = format($d$ - SELECT type, id, contracted_vertices, source, target, cost - FROM (VALUES - ('v'::CHAR, %1$s::BIGINT, '%2$s'::BIGINT[], -1::BIGINT, -1::BIGINT, -1::FLOAT) - ) AS t(type, id, contracted_vertices, source, target, cost )$d$, - vids[6], ARRAY[vids[5], vids[10], vids[15]]) ; - - RETURN QUERY - SELECT set_eq(q, expected); - q = format($d$ SELECT * FROM pgr_contraction( + q = format($d$ SELECT type, id, unnest(contracted_vertices) FROM pgr_contraction( $$SELECT id, source, target, cost, reverse_cost FROM edges$$, ARRAY[1]::integer[], 1, ARRAY[]::BIGINT[], '%1$s'::BOOLEAN)$d$, directed); expected = format($d$ - SELECT type, id, contracted_vertices, source, target, cost + SELECT type, id, unnest FROM (VALUES - ('v'::CHAR, %1$s::BIGINT, '%2$s'::BIGINT[], -1::BIGINT, -1::BIGINT, -1::FLOAT), - ('v', %3$s, '%4$s'::BIGINT[], -1, -1, -1), - ('v', %5$s, '%6$s'::BIGINT[], -1, -1, -1), - ('v', %7$s, '%8$s'::BIGINT[], -1, -1, -1), - ('v', %9$s, '%10$s'::BIGINT[], -1, -1, -1) - ) AS t(type, id, contracted_vertices, source, target, cost )$d$, - vids[4], ARRAY[vids[2]], - vids[6], ARRAY[vids[5]], - vids[7], ARRAY[vids[1], vids[3]], - vids[8], ARRAY[vids[9]], - vids[14], ARRAY[vids[13]]); + ('v'::CHAR, %1$s::BIGINT, %2$s), + ('v', %3$s, %4$s), + ('v', %5$s, %6$s), + ('v', %5$s, %7$s), + ('v', %8$s, %9$s), + ('v', %10$s, %11$s) + ) AS t(type, id, unnest)$d$, + vids[4], vids[2], + vids[6], vids[5], + vids[7], vids[1], vids[3], + vids[8], vids[9], + vids[14], vids[13]); RETURN QUERY SELECT set_eq(q, expected); diff --git a/tools/testers/doc_queries_generator.pl b/tools/testers/doc_queries_generator.pl index 34cb9b5628..edcdf5f16f 100755 --- a/tools/testers/doc_queries_generator.pl +++ b/tools/testers/doc_queries_generator.pl @@ -124,8 +124,9 @@ sub Usage { elsif ($a =~ /^-c/i) { $clean = 1; } - elsif ($a =~ /^-l$/i) { - $LEVEL = $psql = shift @ARGV || Usage(); + elsif ($a =~ /^-l(evel)?/i) { + $LEVEL = shift @ARGV || Usage(); + print "The level $LEVEL\n"; } elsif ($a =~ /^-v/i) { $VERBOSE = 1; diff --git a/tools/testers/general_pgtap_tests.sql b/tools/testers/general_pgtap_tests.sql index 4a066f5b51..fa9c9f82cb 100644 --- a/tools/testers/general_pgtap_tests.sql +++ b/tools/testers/general_pgtap_tests.sql @@ -29,3 +29,39 @@ END; $BODY$ LANGUAGE plpgsql; + +CREATE OR REPLACE FUNCTION column_missing(TEXT, TEXT) +RETURNS TEXT AS +$BODY$ + SELECT CASE WHEN min_version('3.8.0') THEN + collect_tap(throws_ok($1, '42703','column "' || $2 || '" does not exist')) + ELSE + collect_tap(throws_ok($1, 'P0001', 'Missing column')) + END; +$BODY$ LANGUAGE SQL; + +CREATE OR REPLACE FUNCTION wrong_relation(TEXT, TEXT) +RETURNS TEXT AS +$BODY$ + SELECT CASE WHEN min_version('3.8.0') THEN + collect_tap(throws_ok($1, '42P01', 'relation "' || $2 || '" does not exist')) + ELSE + collect_tap(throws_ok($1, 'P0001', 'relation "' || $2 || '" does not exist')) + END; +$BODY$ LANGUAGE SQL; + +CREATE OR REPLACE FUNCTION function_types(TEXT, TEXT) +RETURNS TEXT AS +$BODY$ + SELECT set_eq(format($$ + WITH + a AS ( + SELECT oid, u.name, u.idx + FROM pg_proc p CROSS JOIN unnest(p.proallargtypes) + WITH ordinality as u(name, idx) + WHERE p.proname = '%1$s'), + b AS ( + SELECT a.*, t.typname FROM a JOIN pg_type As t on (t.oid = a.name)) + SELECT array_agg(typname ORDER BY idx) FROM b GROUP BY oid + $$, $1), $2, $1 || ': Function types'); +$BODY$ LANGUAGE SQL; diff --git a/tools/testers/pg_prove_tests.sh b/tools/testers/pg_prove_tests.sh index 672489585e..0547ec9b2e 100755 --- a/tools/testers/pg_prove_tests.sh +++ b/tools/testers/pg_prove_tests.sh @@ -37,7 +37,7 @@ echo "$PGPORT" pushd ./tools/testers/ || exit 1 -bash setup_db.sh "${PGPORT}" "${PGDATABASE}" "${PGUSER}" "3.7.0" +bash setup_db.sh "${PGPORT}" "${PGDATABASE}" "${PGUSER}" "4.0.0" PGOPTIONS="-c client_min_messages=WARNING" pg_prove --failures --Q --recurse \ -S on_error_rollback=off \ diff --git a/tools/testers/sampledata.sql b/tools/testers/sampledata.sql index 231ae32e72..47004e3c7e 100644 --- a/tools/testers/sampledata.sql +++ b/tools/testers/sampledata.sql @@ -87,14 +87,46 @@ FROM edges ORDER BY id; /* --POINTS CREATE start */ +DO LANGUAGE plpgsql $BODY$ +DECLARE v FLOAT; +BEGIN +SELECT (parts[1]||'.'||parts[2])::FLOAT FROM STRING_TO_ARRAY(pgr_version(), '.') AS parts INTO v; /* -- p1 */ CREATE TABLE pointsOfInterest( pid BIGSERIAL PRIMARY KEY, edge_id BIGINT, side CHAR, fraction FLOAT, + distance FLOAT, + edge geometry, + newPoint geometry, geom geometry); +IF v > 3.4 THEN /* -- p2 */ +INSERT INTO pointsOfInterest (geom) VALUES +(ST_Point(1.8, 0.4)), +(ST_Point(4.2, 2.4)), +(ST_Point(2.6, 3.2)), +(ST_Point(0.3, 1.8)), +(ST_Point(2.9, 1.8)), +(ST_Point(2.2, 1.7)); +/* -- p3 */ +UPDATE pointsofinterest SET + edge_id = poi.edge_id, + side = poi.side, + fraction = round(poi.fraction::numeric, 2), + distance = round(poi.distance::numeric, 2), + edge = poi.edge, + newPoint = ST_EndPoint(poi.edge) +FROM ( + SELECT * + FROM pgr_findCloseEdges( + $$SELECT id, geom FROM edges$$,(SELECT array_agg(geom) FROM pointsOfInterest), 0.5) ) AS poi +WHERE pointsOfInterest.geom = poi.geom; +/* -- p4 */ +UPDATE pointsOfInterest SET side = 'b' WHERE pid = 6; +/* -- p5 */ +ELSE INSERT INTO pointsOfInterest (edge_id, side, fraction, geom) VALUES (1, 'l' , 0.4, ST_POINT(1.8, 0.4)), (15, 'r' , 0.4, ST_POINT(4.2, 2.4)), @@ -102,7 +134,16 @@ INSERT INTO pointsOfInterest (edge_id, side, fraction, geom) VALUES (6, 'r' , 0.3, ST_POINT(0.3, 1.8)), (5, 'l' , 0.8, ST_POINT(2.9, 1.8)), (4, 'b' , 0.7, ST_POINT(2.2, 1.7)); -/* -- p3 */ +END IF; +END; +$BODY$; +/* -- p6 */ +SELECT + pid, ST_AsText(geom) geom, + edge_id, fraction AS frac, side, distance AS dist, + ST_AsText(edge) edge, ST_AsText(newPoint) newPoint +FROM pointsOfInterest; +/* -- p7 */ /* --POINTS CREATE end */ /* --COMBINATIONS CREATE start */ diff --git a/tools/testers/trsp_tests.sql b/tools/testers/trsp_tests.sql index 0110f0dedc..d747fb698e 100644 --- a/tools/testers/trsp_tests.sql +++ b/tools/testers/trsp_tests.sql @@ -1,4 +1,3 @@ - CREATE OR REPLACE FUNCTION compare_trsp_dijkstra_new(cant INTEGER, flag boolean, restrictions_sql TEXT) RETURNS SETOF TEXT AS $BODY$ @@ -7,184 +6,69 @@ DECLARE dijkstra_sql TEXT; trsp_sql TEXT; directed TEXT; + params TEXT; msg TEXT; BEGIN + IF NOT min_version('3.4.0') THEN - RETURN QUERY SELECT skip(1, 'pgr_signature added on 3.4.0'); + RETURN QUERY SELECT skip(1, 'New signatures on 3.4'); RETURN; END IF; - directed = 'Undirected'; - IF flag THEN directed = 'Directed'; END IF; - - FOR i IN 1.. cant BY 2 LOOP - FOR j IN 1..cant LOOP - -- For related restrictions only when source and target are equal it is garanteed that the results are the same as - -- dijkstra - IF (restrictions_sql = 'related') THEN CONTINUE WHEN i != j; END IF; - - dijkstra_sql := 'SELECT seq, node, edge, cost::text FROM pgr_dijkstra($$with_reverse_cost$$, ' - || i || ', ' || j || ', ' || flag || ')'; - trsp_sql := 'SELECT seq, node, edge, cost::text from pgr_trsp($$with_reverse_cost$$, $$' || restrictions_sql ||'$$, ' - || i || ', ' || j || ', ' || flag || ')'; - msg := restrictions_sql || '-' || k || '-1 ' || directed || ', with reverse_cost from ' || i || ' to ' || j; - RETURN QUERY SELECT set_eq(trsp_sql, dijkstra_sql, msg); - - dijkstra_sql := 'SELECT seq, node, edge, cost::text FROM pgr_dijkstra($$no_reverse_cost$$, ' - || i || ', ' || j || ', ' || flag || ')'; - trsp_sql := 'SELECT seq, node, edge, cost::text from pgr_trsp($$no_reverse_cost$$, $$' || restrictions_sql ||'$$, ' - || i || ', ' || j || ', ' || flag || ')'; - msg := restrictions_sql || '-' || k || '-2 ' || directed || ', NO reverse_cost from ' || i || ' to ' || j; - RETURN QUERY SELECT set_eq(trsp_sql, dijkstra_sql, msg); - - k := k + 1; - - END LOOP; - END LOOP; -END -$BODY$ -language plpgsql; - + IF min_lib_version('4.0.0') and NOT min_version('3.6.0') THEN + RETURN QUERY SELECT skip(1, 'Internal function __v4trsp deprecated on 3.5.0'); + RETURN; + END IF; -CREATE OR REPLACE FUNCTION compare_trsp_dijkstra(cant INTEGER default 18, flag boolean default true ) -RETURNS SETOF TEXT AS -$BODY$ -DECLARE -dijkstra_sql TEXT; -trsp_sql TEXT; -with_reverse_cost TEXT; -no_reverse_cost TEXT; -k integer; -directed TEXT; -msg TEXT; -BEGIN - -- TEST of deprecated signature directed = 'Undirected'; IF flag THEN directed = 'Directed'; END IF; - k := 1; - with_reverse_cost = quote_literal('SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost from edges ORDER BY id'); - no_reverse_cost = quote_literal('SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost from edges ORDER BY id'); - FOR i IN 1.. cant BY 2 LOOP + FOR i IN 1..cant BY 2 LOOP FOR j IN 1..cant LOOP - -- this special case is tested on the other test - CONTINUE WHEN i = j; - - -- test when there is reverse cost and its marked as being used - -- VS dijkstra autodetected has reverse cost - dijkstra_sql := 'SELECT seq-1, node::integer, edge::integer, cost::text - FROM pgr_dijkstra( ' || with_reverse_cost || ', ' || i || ', ' || j || ', ' || flag || ')'; - trsp_sql := 'SELECT seq, id1, id2, cost::text from pgr_trsp( ' || with_reverse_cost || ', ' || i || ', ' || j || ', ' || flag || ', TRUE)'; - msg := k || '-1 ' || directed || ', with reverse_cost, marked as being used: from ' || i || ' to ' || j; - - RETURN QUERY SELECT set_eq(trsp_sql, dijkstra_sql, msg); + params = ' ' || i || ', ' || j || ', ' || flag; - -- test when there is reverse cost and its marked NOT being used - -- autodetected is found - -- VS dijkstra autodetected - -- Flag is ignored - dijkstra_sql := 'SELECT seq-1, node::integer, edge::integer, cost::text - FROM pgr_dijkstra( ' || with_reverse_cost || ', ' || i || ', ' || j || ', ' || flag || ')'; - trsp_sql := 'SELECT seq, id1, id2, cost::text from pgr_trsp( ' || with_reverse_cost || ', ' || i || ', ' || j || ', ' || flag || ', FALSE)'; - msg := k || '-2 ' || directed || ', with reverse_cost, marked as NOT being used: from ' || i || ' to ' || j; - IF NOT min_version('4.0.0') THEN PERFORM todo(1, 'has_rcost flag should be ignored'); END IF; - RETURN QUERY SELECT set_eq(trsp_sql, dijkstra_sql, msg); + -- skipping results comparable with pgr_dijkstraVia + IF (restrictions_sql = 'related' AND flag = true) THEN CONTINUE WHEN + i IN (1,3,5,6,7) AND j IN (12,17); + END IF; + IF (restrictions_sql = 'related' AND flag = false) THEN CONTINUE WHEN + (i=1 AND j IN (8,9,12,17)) OR + (i=3 AND j IN (8,9,12,17)) OR + (i IN (5,6) AND j IN (1,3)) OR + (i=7 AND j IN (12,17)); + END IF; - -- test when there is NO reverse cost and its marked NOT being used - -- VS dijkstra autodetected DOES NOT have reverse cost - dijkstra_sql := 'SELECT seq-1, node::integer, edge::integer, cost::text - FROM pgr_dijkstra( ' || no_reverse_cost || ', ' || i || ', ' || j || ', ' || flag || ')'; - trsp_sql := 'SELECT seq, id1, id2, cost::text from pgr_trsp( ' || no_reverse_cost || ', ' || i || ', ' || j || ', ' || flag || ', FALSE)'; - msg := k || '-3 ' || directed || ', NO reverse_cost, marked as NOT being used: from ' || i || ' to ' || j; - RETURN QUERY SELECT set_eq(trsp_sql, dijkstra_sql, msg); - -- test when there is NO reverse cost and its marked AS being used - -- Uncomparable with dijkstra because dijstra uses what is given as input - trsp_sql := 'SELECT seq, id1, id2, cost::text from pgr_trsp( ' || no_reverse_cost || ', ' || i || ', ' || j || ', ' || flag || ', TRUE)'; - dijkstra_sql := 'SELECT seq-1, node::integer, edge::integer, cost::text - FROM pgr_dijkstra( ' || no_reverse_cost || ', ' || i || ', ' || j || ', ' || flag || ')'; - msg := k || '-4 ' || directed || ', NO reverse_cost, marked as NOT being used: from ' || i || ' to ' || j; - IF NOT min_version('4.0.0') THEN - RETURN QUERY SELECT skip(1, 'has_rcost flag should be ignored, Currently No compare can be done'); + IF (restrictions_sql = 'related' AND ( + (flag = false AND (i IN (10,15) AND J IN (1,3))) OR + (flag = true AND ( + (i IN (5,6,10,15) AND J IN (1,3)) OR + (i IN (5,6,7,8,9,11) AND J IN (10,15)) OR + (i IN (10) AND J IN (15)) + )) + )) + THEN + k := k + 1; ELSE + dijkstra_sql := 'SELECT seq, node, edge FROM pgr_dijkstra($$with_reverse_cost$$, ' || params || ')'; + trsp_sql := 'SELECT seq, node, edge FROM pgr_trsp($$with_reverse_cost$$, $$' || restrictions_sql ||'$$, ' || params || ')'; + msg := restrictions_sql || '-' || params || '-reverse_cost ' || dijkstra_sql || '; ' || trsp_sql; RETURN QUERY SELECT set_eq(trsp_sql, dijkstra_sql, msg); END IF; - k := k + 1; - - END LOOP; - END LOOP; -END -$BODY$ -language plpgsql; - - -CREATE OR REPLACE FUNCTION compare_trspViaV_dijstraVia(cant INTEGER default 18, flag boolean default true ) -RETURNS SETOF TEXT AS -$BODY$ -DECLARE -dijkstraVia_sql TEXT; -trsp_sql TEXT; -with_reverse_cost TEXT; -no_reverse_cost TEXT; -k INTEGER; -directed TEXT; -msg TEXT; -BEGIN - -- test for deprecated signature - directed = 'Undirected'; - IF flag THEN directed = 'Directed'; END IF; - - k := 1; - with_reverse_cost = quote_literal('SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost from edges ORDER BY id'); - no_reverse_cost = quote_literal('SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost from edges ORDER BY id'); - FOR i IN 1.. cant LOOP - FOR j IN 1..cant LOOP - - -- test when there is reverse cost and its marked as being used - -- VS dijkstraVia autodetected has reverse cost - dijkstraVia_sql := 'SELECT (row_number() over())::INTEGER, path_id::INTEGER, node::INTEGER, - (CASE WHEN edge = -2 THEN -1 ELSE edge END)::INTEGER, cost::text - FROM pgr_dijkstraVia( ' || with_reverse_cost || ', ARRAY[1, ' || i || ', ' || j || '], ' || flag || ', TRUE) WHERE edge != -1'; - trsp_sql := 'SELECT seq, id1, id2, id3, cost::text from pgr_trspViaVertices( ' || with_reverse_cost || ', ARRAY[1, ' || i || ', ' || j || '], ' || flag || ', TRUE)'; - - msg := k || '-1 ' || directed || ', with reverse_cost, marked as being used: from 1 to ' || i || ' to ' || j; - RETURN query SELECT set_eq(trsp_sql, dijkstraVia_sql, msg); - - -- test when there is reverse cost and its marked NOT being used - -- VS dijkstraVia autodetected DOES NOT have reverse cost - dijkstraVia_sql := 'SELECT (row_number() over())::INTEGER, path_id::INTEGER, node::INTEGER, - (CASE WHEN edge = -2 THEN -1 ELSE edge END)::INTEGER, cost::text - FROM pgr_dijkstraVia( ' || with_reverse_cost || ', ARRAY[1, ' || i || ', ' || j || '], ' || flag || ', TRUE) WHERE edge != -1'; - trsp_sql := 'SELECT seq, id1, id2, id3, cost::text from pgr_trspViaVertices( ' || with_reverse_cost || ', ARRAY[1, ' || i || ', ' || j || '], ' || flag || ', FALSE)'; - msg := k || '-2 ' || directed || ', with reverse_cost, marked as NOT being used: from 1 to ' || i || ' to ' || j; - IF NOT min_version('4.0.0') THEN PERFORM todo(1, 'has_rcost flag should be ignored'); END IF; - RETURN query SELECT set_eq(trsp_sql, dijkstraVia_sql, msg); - - -- test when there is NO reverse cost and its marked NOT being used - -- VS dijkstraVia autodetected DOES NOT have reverse cost (same as previous) - dijkstraVia_sql := 'SELECT (row_number() over())::INTEGER, path_id::INTEGER, node::INTEGER, - (CASE WHEN edge = -2 THEN -1 ELSE edge END)::INTEGER, cost::text - FROM pgr_dijkstraVia( ' || no_reverse_cost || ', ARRAY[1, ' || i || ', ' || j || '], ' || flag || ', TRUE) WHERE edge != -1'; - trsp_sql := 'SELECT seq, id1, id2, id3, cost::text from pgr_trspViaVertices( ' || no_reverse_cost || ', ARRAY[1, ' || i || ', ' || j || '], ' || flag || ', FALSE)'; - msg := k || '-3 ' || directed || ', NO reverse_cost, marked as NOT being used: from 1 to ' || i || ' to ' || j; - RETURN query SELECT set_eq(trsp_sql, dijkstraVia_sql, msg); - - -- test when there is NO reverse cost and its marked AS being used - -- Uncomparable with dijkstraViaViaVertex because dijstra uses what is given as input - dijkstraVia_sql := 'SELECT (row_number() over())::INTEGER, path_id::INTEGER, node::INTEGER, - (CASE WHEN edge = -2 THEN -1 ELSE edge END)::INTEGER, cost::text - FROM pgr_dijkstraVia( ' || no_reverse_cost || ', ARRAY[1, ' || i || ', ' || j || '], ' || flag || ', TRUE) WHERE edge != -1'; - trsp_sql := 'SELECT seq, id1, id2, id3, cost::text from pgr_trspViaVertices( ' || no_reverse_cost || ', ARRAY[1, ' || i || ', ' || j || '], ' || flag || ', TRUE)'; - msg := k || '-4 ' || directed || ', NO reverse_cost, marked as NOT being used: from 1 to ' || i || ' to ' || j; - IF NOT min_version('4.0.0') THEN - RETURN QUERY SELECT skip(1, 'has_rcost flag should be ignored, Currently No compare can be done'); + IF (restrictions_sql = 'related' AND flag = false AND + ((i IN (1,3,5,6,7,8,9,10,11,12) AND J = 15) OR (i IN (5,6) AND J IN (12,17))) + ) + THEN + k := k + 1; ELSE - RETURN QUERY SELECT set_eq(trsp_sql, dijkstraVia_sql, msg); + dijkstra_sql := 'SELECT seq, node, edge FROM pgr_dijkstra($$no_reverse_cost$$, ' || params || ')'; + trsp_sql := 'SELECT seq, node, edge from pgr_trsp($$no_reverse_cost$$, $$' || restrictions_sql ||'$$, ' || params || ')'; + msg := restrictions_sql || '-' || params || '-no_reverse_cost ' || dijkstra_sql || '; ' || trsp_sql; + RETURN QUERY SELECT set_eq(trsp_sql, dijkstra_sql, msg); END IF; - k := k + 1; END LOOP; END LOOP; diff --git a/tools/testers/tsp_pgtap_tests.sql b/tools/testers/tsp_pgtap_tests.sql index 8038aed76b..8db9591a15 100644 --- a/tools/testers/tsp_pgtap_tests.sql +++ b/tools/testers/tsp_pgtap_tests.sql @@ -42,7 +42,7 @@ p TEXT; randomize TEXT := ', randomize := false)'; BEGIN - IF min_version('4.0.0') THEN randomize :=')'; END IF; + IF min_version('4.0.1') THEN randomize :=')'; END IF; start_sql = 'SELECT * from ' || fn || '($$ SELECT '; FOREACH p IN ARRAY params @@ -84,7 +84,7 @@ p TEXT; randomize TEXT := ', randomize := false)'; BEGIN - IF min_version('4.0.0') THEN randomize :=')'; END IF; + IF min_version('4.0.1') THEN randomize :=')'; END IF; start_sql = 'select * from ' || fn || '($$ SELECT '; FOREACH p IN ARRAY params @@ -249,7 +249,7 @@ BEGIN RETURN QUERY SELECT has_function(fn); - IF min_version('4.0.0') THEN + IF min_version('4.0.1') THEN RETURN QUERY SELECT tsp_types_check_4(fn); ELSE @@ -266,7 +266,7 @@ RETURNS SETOF TEXT AS $BODY$ BEGIN - IF min_version('4.0.0') THEN + IF min_version('4.0.1') THEN RETURN QUERY SELECT skip(1, fn || ' should not have annaeling parameters');