diff --git a/NEWS.md b/NEWS.md index 22601b1bbc9..1c3d327eed2 100644 --- a/NEWS.md +++ b/NEWS.md @@ -74,6 +74,8 @@ milestone for 4.0.0 pgr_analyzeOneWay * [#2827](https://github.com/pgRouting/pgrouting/issues/2827): pgr_createVerticesTable +* [#2886](https://github.com/pgRouting/pgrouting/issues/2886): + pgr_nodeNetwork **Removal of SQL deprecated internal functions** diff --git a/configuration.conf b/configuration.conf index fa37eee3c76..cc6da5e29cf 100644 --- a/configuration.conf +++ b/configuration.conf @@ -52,5 +52,4 @@ categories | N | N | Y #---------------------- # SQL only directories #---------------------- -topology | N | Y | Y utilities | N | Y | Y diff --git a/doc/_static/page_history.js b/doc/_static/page_history.js index cd0a29e8623..c2932c721e9 100644 --- a/doc/_static/page_history.js +++ b/doc/_static/page_history.js @@ -207,29 +207,10 @@ var filesArr = [ { 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.1', n: 'src/common/doc/functions/node_network'}, - { v: '2.3', n: 'src/topology/doc/pgr_nodeNetwork'}, - ]), - new createInfo('topology-functions', '2.0', [ + new createInfo('utilities-family', '2.0', [ { 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.1', n: 'src/common/doc/functions/create_vert_table'}, - { v: '2.3', n: 'src/topology/doc/pgr_createVerticesTable'}, 3.8 - ]), - new createInfo('pgr_createTopology', '2.0', [ - { v: '2.1', n: 'src/common/doc/functions/create_topology'}, - { v: '2.3', n: 'src/topology/doc/pgr_createTopology'}, 3.8 - ]), - new createInfo('pgr_analyzeOneWay', '2.0', [ - { v: '2.1', n: 'src/common/doc/functions/analyze_oneway'}, - { v: '2.3', n: 'src/topology/doc/pgr_analyzeOneWay'}, 3.8 - ]), - new createInfo('pgr_analyzeGraph', '2.0', [ - { v: '2.1', n: 'src/common/doc/functions/analyze_graph'}, - { v: '2.3', n: 'src/topology/doc/pgr_analyzeGraph'}, + { v: '3.8', n: 'topology-functions'}, ]), new createInfo('pgRouting-concepts', '2.0', [ { v: '2.3', n: 'doc/src/tutorial/tutorial'}, @@ -260,6 +241,27 @@ var filesArr = [ { 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_nodeNetwork', '2.0', [ + { v: '2.1', n: 'src/common/doc/functions/node_network'}, + { v: '2.3', n: 'src/topology/doc/pgr_nodeNetwork'}, 3.8 + ]), + new createInfo('pgr_createVerticesTable', '2.0', [ + { v: '2.1', n: 'src/common/doc/functions/create_vert_table'}, + { v: '2.3', n: 'src/topology/doc/pgr_createVerticesTable'}, 3.8 + ]), + new createInfo('pgr_createTopology', '2.0', [ + { v: '2.1', n: 'src/common/doc/functions/create_topology'}, + { v: '2.3', n: 'src/topology/doc/pgr_createTopology'}, 3.8 + ]), + new createInfo('pgr_analyzeOneWay', '2.0', [ + { v: '2.1', n: 'src/common/doc/functions/analyze_oneway'}, + { v: '2.3', n: 'src/topology/doc/pgr_analyzeOneWay'}, 3.8 + ]), + new createInfo('pgr_analyzeGraph', '2.0', [ + { v: '2.1', n: 'src/common/doc/functions/analyze_graph'}, + { v: '2.3', n: 'src/topology/doc/pgr_analyzeGraph'}, 3.8 + ]), new createInfo('pgr_alphaShape', '2.0', [ { v: '2.1', n: 'src/driving_distance/doc/dd_alphashape'}, { v: '2.3', n: 'src/alpha_shape/doc/pgr_alphaShape'}, 3.8 diff --git a/doc/metrics/pgr_degree.rst b/doc/metrics/pgr_degree.rst index 8025f85d62b..434d2933a39 100644 --- a/doc/metrics/pgr_degree.rst +++ b/doc/metrics/pgr_degree.rst @@ -378,7 +378,7 @@ If there is a vertices table already built using the ``pgr_extractVertices`` See Also ------------------------------------------------------------------------------- -* :doc:`topology-functions` +* :doc:`utilities-family` * :doc:`pgr_extractVertices` .. rubric:: Indices and tables diff --git a/doc/src/migration.rst b/doc/src/migration.rst index 82b0b3cc1f6..2b7a01dfda3 100644 --- a/doc/src/migration.rst +++ b/doc/src/migration.rst @@ -27,8 +27,8 @@ Results can be different because of the changes. Migration of ``pgr_alphaShape`` ------------------------------------------------------------------------------- -Deprecated in `v3.8.0 `__ -Removed from the repostory in `v3.8.0 `__ +:Deprecated: `v3.8.0 `__ +:Removed: `v4.0.0 `__ **Before Deprecation:** The following was calculated: @@ -51,10 +51,24 @@ Other PostGIS options are * `ST_ConvexHull `__ * `ST_ConcaveHull `__ +Migration of ``pgr_nodeNetwork`` +------------------------------------------------------------------------------- + +:Deprecated: `v3.8.0 `__ +:Removed: `v4.0.0 `__ + +**Before Deprecation:** A table with `_nodded` was created. with split +edges. + +**Migration** + +Use :doc:`pgr_separateTouching` and/or use :doc:`pgr_separateCrossing` + Migration of ``pgr_createTopology`` ------------------------------------------------------------------------------- -Starting from `v3.8.0 `__ +:Deprecated: `v3.8.0 `__ +:Removed: `v4.0.0 `__ **Before Deprecation:** The following was calculated: @@ -66,12 +80,11 @@ Starting from `v3.8.0 `__ :start-after: createTopology_start :end-before: createTopology_end -.. migrate_pgr_createVerticesTable_start - Migration of ``pgr_createVerticesTable`` ------------------------------------------------------------------------------- -Starting from `v3.8.0 `__ +:Deprecated: `v3.8.0 `__ +:Removed: `v4.0.0 `__ **Before Deprecation:** The following was calculated: @@ -84,14 +97,11 @@ indexes, etc. They may use :doc:`pgr_extractVertices` for that purpose. :start-after: -- q1 :end-before: -- q1-1 -.. migrate_pgr_createVerticesTable_end - -.. migrate_pgr_analyzeOneWay_start - Migration of ``pgr_analyzeOneWay`` ------------------------------------------------------------------------------- -Starting from `v3.8.0 `__ +:Deprecated: `v3.8.0 `__ +:Removed: `v4.0.0 `__ **Before Deprecation:** The following was calculated: @@ -127,14 +137,11 @@ To determine if the bridges are or not one way. :start-after: --OneWay2 :end-before: --OneWay3 -.. migrate_pgr_analyzeOneWay_end - -.. migrate_pgr_analyzeGraph_start - Migration of ``pgr_analyzeGraph`` ------------------------------------------------------------------------------- -Starting from `v3.8.0 `__ +:Deprecated: `v3.8.0 `__ +:Removed: `v4.0.0 `__ **Before Deprecation:** The following was calculated: @@ -209,8 +216,6 @@ For example: :start-after: --analysis4 :end-before: --analysis5 -.. migrate_pgr_analyzeGraph_end - Migration of ``pgr_aStar`` ------------------------------------------------------------------------------- diff --git a/doc/src/proposed.rst b/doc/src/proposed.rst index f790b882839..65198aa74a3 100644 --- a/doc/src/proposed.rst +++ b/doc/src/proposed.rst @@ -45,17 +45,6 @@ Proposed Functions :start-after: proposed-start :end-before: proposed-end -:doc:`TRSP-family` - -.. include:: TRSP-family.rst - :start-after: proposed-start - :end-before: proposed-end - -.. toctree:: - :hidden: - - TRSP-family - :doc:`transformation-family` .. include:: transformation-family.rst diff --git a/doc/src/release_notes.rst b/doc/src/release_notes.rst index 1ec63b14354..b805d35af67 100644 --- a/doc/src/release_notes.rst +++ b/doc/src/release_notes.rst @@ -104,6 +104,8 @@ milestone for 4.0.0 pgr_analyzeOneWay * `#2827 `__: pgr_createVerticesTable +* `#2886 `__: + pgr_nodeNetwork .. rubric:: Removal of SQL deprecated internal functions @@ -176,8 +178,6 @@ pgRouting 3.8 :local: :depth: 1 -.. current - pgRouting 3.8.0 Release Notes ------------------------------------------------------------------------------- diff --git a/doc/src/routingFunctions.rst b/doc/src/routingFunctions.rst index b9cd551e075..3f187c89f5e 100644 --- a/doc/src/routingFunctions.rst +++ b/doc/src/routingFunctions.rst @@ -89,9 +89,9 @@ Function Families :start-after: official-start :end-before: official-end -:doc:`topology-functions` +:doc:`TRSP-family` -.. include:: topology-functions.rst +.. include:: TRSP-family.rst :start-after: official-start :end-before: official-end @@ -101,11 +101,9 @@ Function Families :start-after: official-start :end-before: official-end -:doc:`pgr_trsp` - Turn Restriction Shortest Path (TRSP) +:doc:`utilities-family` -.. rubric:: Utilities - -.. include:: topology-functions.rst +.. include:: utilities-family.rst :start-after: utility_official-start :end-before: utility_official-end @@ -172,8 +170,9 @@ Functions by categories metrics-family prim-family reference - topology-functions + TRSP-family TSP-family + utilities-family .. toctree:: :hidden: diff --git a/doc/topology/CMakeLists.txt b/doc/topology/CMakeLists.txt deleted file mode 100644 index 0448e300b2f..00000000000 --- a/doc/topology/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ - -SET(LOCAL_FILES - pgr_nodeNetwork.rst - pgr_extractVertices.rst - topology-functions.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/pgr_nodeNetwork.rst b/doc/topology/pgr_nodeNetwork.rst deleted file mode 100644 index 89f0b3b8579..00000000000 --- a/doc/topology/pgr_nodeNetwork.rst +++ /dev/null @@ -1,245 +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/ - **************************************************************************** - -.. index:: - single: Topology Family ; pgr_nodeNetwork - single: nodeNetwork - -| - -``pgr_nodeNetwork`` -=============================================================================== - -``pgr_nodeNetwork`` - Nodes an network edge table. - -:Author: Nicolas Ribot -:Copyright: Nicolas Ribot, The source code is released under the MIT-X license. - -The function reads edges from a not "noded" network table and writes the "noded" -edges into a new table. - -.. index:: - single: pgr_nodeNetwork - -.. parsed-literal:: - - | pgr_nodenetwork(edge_table, tolerance, [**options**]) - | **options:** ``[id, text the_geom, table_ending, rows_where, outall]`` - - | RETURNS ``TEXT`` - -.. rubric:: Availability - -* Version 3.8.0 - - * Not checking and not creating indexes. - * Using ``pgr_separateTouching`` and ``pgr_separateCrossing``. - * Created table with ``BIGINT``. - -* Version 2.0.0 - - * Official function. - - -Description -------------------------------------------------------------------------------- - -**The main characteristics are:** - -A common problem associated with bringing GIS data into pgRouting is the fact -that the data is often not "noded" correctly. This will create invalid -topologies, which will result in routes that are incorrect. - -What we mean by "noded" is that at every intersection in the road network all -the edges will be broken into separate road segments. There are cases like an -over-pass and under-pass intersection where you can not traverse from the -over-pass to the under-pass, but this function does not have the ability to -detect and accommodate those situations. - -This function reads the ``edge_table`` table, that has a primary key column -``id`` and geometry column named ``the_geom`` and intersect all the segments in -it against all the other segments and then creates a table ``edge_table_noded``. -It uses the ``tolerance`` for deciding that multiple nodes within the tolerance -are considered the same node. - -Parameters -------------------------------------------------------------------------------- - -:edge_table: ``text`` Network table name. (may contain the schema name as well) -:tolerance: ``float8`` tolerance for coincident points (in projection unit)dd -:id: ``text`` Primary key column name of the network table. Default value is - ``id``. -:the_geom: ``text`` Geometry column name of the network table. Default value is - ``the_geom``. -:table_ending: ``text`` Suffix for the new table's. Default value is ``noded``. - -The output table will have for ``edge_table_noded`` - -:id: ``bigint`` Unique identifier for the table -:old_id: ``bigint`` Identifier of the edge in original table -:sub_id: ``integer`` Segment number of the original edge -:source: ``bigint`` Empty source column -:target: ``bigint`` Empty target column -:the geom: ``geometry`` Geometry column of the noded network - -Examples -------------------------------------------------------------------------------- - -Create the topology for the data in :doc:`sampledata` - -.. literalinclude:: sampledata.queries - :start-after: -- q1 - :end-before: -- q1-1 - -.. literalinclude:: sampledata.queries - :start-after: -- q3 - :end-before: -- q4 - -Analyze the network for intersections. - -.. literalinclude:: nodeNetwork.queries - :start-after: --q1 - :end-before: --q2 - -Analyze the network for gaps. - -.. literalinclude:: nodeNetwork.queries - :start-after: --q2 - :end-before: --q3 - -The analysis tell us that the network has a gap and an intersection. - -Fixing an intersection -............................................................................... - -Storing the intersections. - -.. literalinclude:: nodeNetwork.queries - :start-after: --q3 - :end-before: --q4 - -Calling ``pgr_nodeNetwork``. - -.. literalinclude:: nodeNetwork.queries - :start-after: --q4 - :end-before: --q5 - -Inspecting the generated table, we can see that edges 13 and 18 have been -segmented. - -.. literalinclude:: nodeNetwork.queries - :start-after: --q5 - :end-before: --q6 - -.. rubric:: Update the topology - -Add new segments to the edges table. - -.. literalinclude:: nodeNetwork.queries - :start-after: --q6 - :end-before: --q7 - -Insert the intersection as new vertices. - -.. literalinclude:: nodeNetwork.queries - :start-after: --q7 - :end-before: --q8 - -Update source and target information on the edges table. - -.. literalinclude:: nodeNetwork.queries - :start-after: --q8 - :end-before: --q9 - -Delete original edge. - -.. literalinclude:: nodeNetwork.queries - :start-after: --q9 - :end-before: --q10 - -Update the vertex topology - -.. literalinclude:: nodeNetwork.queries - :start-after: --q10 - :end-before: --q11 - -Analyze the network for intersections. - -.. literalinclude:: nodeNetwork.queries - :start-after: --q11 - :end-before: --q12 - -Fixing a gap -............................................................................... - -Store the deadends - -.. literalinclude:: nodeNetwork.queries - :start-after: --q12 - :end-before: --q13 - -Calling ``pgr_nodeNetwork``. - -.. literalinclude:: nodeNetwork.queries - :start-after: --q13 - :end-before: --q14 - -Inspecting the generated table, we can see that edge 14 has been segmented. - -.. literalinclude:: nodeNetwork.queries - :start-after: --q14 - :end-before: --q15 - -.. rubric:: Update the topology - -Add new segments to the edges table. - -.. literalinclude:: nodeNetwork.queries - :start-after: --q15 - :end-before: --q16 - -Insert the intersection as new vertices. - -.. literalinclude:: nodeNetwork.queries - :start-after: --q16 - :end-before: --q17 - -Update source and target information on the edges table. - -.. literalinclude:: nodeNetwork.queries - :start-after: --q17 - :end-before: --q18 - -Delete original edge. - -.. literalinclude:: nodeNetwork.queries - :start-after: --q18 - :end-before: --q19 - -Update the vertex topology - -.. literalinclude:: nodeNetwork.queries - :start-after: --q19 - :end-before: --q20 - -Analyze the network for gaps. - -.. literalinclude:: nodeNetwork.queries - :start-after: --q20 - :end-before: --q21 - -See Also -------------------------------------------------------------------------------- - -:doc:`topology-functions` for an overview of a topology for routing algorithms. - -.. rubric:: Indices and tables - -* :ref:`genindex` -* :ref:`search` diff --git a/doc/trsp/TRSP-family.rst b/doc/trsp/TRSP-family.rst index f0e2c17044a..99d8facf281 100644 --- a/doc/trsp/TRSP-family.rst +++ b/doc/trsp/TRSP-family.rst @@ -16,21 +16,14 @@ TRSP - Family of functions When points are also given as input: -.. include:: proposed.rst - :start-after: warning-begin - :end-before: end-warning +.. official-start -.. proposed-start - -- :doc:`pgr_trsp` - Vertex - Vertex routing with restrictions. +- :doc:`pgr_trsp` - 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. -.. proposed-end - -.. Warning:: Read the :doc:`migration` about how to migrate from the - deprecated TRSP functionality to the new signatures or replacement functions. +.. official-end .. include:: experimental.rst :start-after: warning-begin diff --git a/doc/utilities/CMakeLists.txt b/doc/utilities/CMakeLists.txt index a8de3c5fc3b..b254fbe7a02 100644 --- a/doc/utilities/CMakeLists.txt +++ b/doc/utilities/CMakeLists.txt @@ -1,7 +1,9 @@ SET(LOCAL_FILES + pgr_extractVertices.rst pgr_findCloseEdges.rst pgr_separateCrossing.rst pgr_separateTouching.rst + utilities-family.rst ) foreach (f ${LOCAL_FILES}) diff --git a/doc/topology/pgr_extractVertices.rst b/doc/utilities/pgr_extractVertices.rst similarity index 99% rename from doc/topology/pgr_extractVertices.rst rename to doc/utilities/pgr_extractVertices.rst index 5238c556b8e..ac98ddb6a42 100644 --- a/doc/topology/pgr_extractVertices.rst +++ b/doc/utilities/pgr_extractVertices.rst @@ -284,7 +284,7 @@ Inspect the routing topology See Also ------------------------------------------------------------------------------- -* :doc:`topology-functions` +* :doc:`utilities-family` .. rubric:: Indices and tables diff --git a/doc/utilities/pgr_separateCrossing.rst b/doc/utilities/pgr_separateCrossing.rst index b7ab1ad596a..f20033585b9 100644 --- a/doc/utilities/pgr_separateCrossing.rst +++ b/doc/utilities/pgr_separateCrossing.rst @@ -175,7 +175,7 @@ Routing from :math:`1` to :math:`18` gives a solution. See Also ------------------------------------------------------------------------------- -:doc:`topology-functions` for an overview of a topology for routing algorithms. +:doc:`utilities-family` .. rubric:: Indices and tables diff --git a/doc/utilities/pgr_separateTouching.rst b/doc/utilities/pgr_separateTouching.rst index ca2e6f318a0..e28627f30f4 100644 --- a/doc/utilities/pgr_separateTouching.rst +++ b/doc/utilities/pgr_separateTouching.rst @@ -176,7 +176,7 @@ Routing from :math:`1` to :math:`2` gives a solution. See Also ------------------------------------------------------------------------------- -:doc:`topology-functions` for an overview of a topology for routing algorithms. +:doc:`utilities-family` .. rubric:: Indices and tables diff --git a/doc/topology/topology-functions.rst b/doc/utilities/utilities-family.rst similarity index 57% rename from doc/topology/topology-functions.rst rename to doc/utilities/utilities-family.rst index 325822b2bb8..ad7e01da699 100644 --- a/doc/topology/topology-functions.rst +++ b/doc/utilities/utilities-family.rst @@ -7,30 +7,6 @@ Alike 3.0 License: https://creativecommons.org/licenses/by-sa/3.0/ **************************************************************************** -.. index:: Topology Family - -| - -Topology - Family of Functions -=============================================================================== - -The pgRouting's topology of a network represented with a graph in form of two -tables: and edge table and a vertex table. - -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. - -.. official-start - -The following functions modify the database directly therefore the user must -have special permissions given by the administrators to use them. - -- :doc:`pgr_nodeNetwork` - to create nodes to a not noded edge table. - -.. official-end - .. index:: Utilities | @@ -48,14 +24,9 @@ Utility functions .. utility_official-end -.. include:: proposed.rst - :start-after: warning-begin - :end-before: end-warning - .. toctree:: :hidden: - pgr_nodeNetwork pgr_extractVertices pgr_findCloseEdges pgr_separateCrossing diff --git a/docqueries/topology/CMakeLists.txt b/docqueries/topology/CMakeLists.txt deleted file mode 100644 index e104f6b92d4..00000000000 --- a/docqueries/topology/CMakeLists.txt +++ /dev/null @@ -1,12 +0,0 @@ -# Do not use extensions -SET(LOCAL_FILES - extractVertices - nodeNetwork - ) - -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/topology/nodeNetwork.pg b/docqueries/topology/nodeNetwork.pg deleted file mode 100644 index 7b0cc7d8425..00000000000 --- a/docqueries/topology/nodeNetwork.pg +++ /dev/null @@ -1,144 +0,0 @@ --- CopyRight(c) pgRouting developers --- Creative Commons Attribution-Share Alike 3.0 License : https://creativecommons.org/licenses/by-sa/3.0/ --- pgr_nodeNetwork --------------------------------------------------------------------------------- ---SET client_min_messages TO DEBUG; -/* --q1 */ -SELECT e1.id id1, e2.id id2, ST_ASTEXT(ST_Intersection(e1.geom, e2.geom)) AS point -FROM edges e1, edges e2 -WHERE e1.id < e2.id AND ST_Crosses(e1.geom, e2.geom); -/* --q2 */ -WITH -data AS ( - SELECT id, geom, (in_edges || out_edges)[1] as inhere - FROM vertices where array_length(in_edges || out_edges, 1) = 1 -), -results AS ( - SELECT d.id, d.inhere, - (pgr_findCloseEdges('SELECT id, geom FROM edges WHERE id != ' || inhere , geom, 0.001)).* - FROM data d -) -SELECT - id, inhere, edge_id, fraction, - ST_AsText(geom) AS geom, ST_AsText(edge) AS edge -FROM results; -/* --q3 */ -SELECT e1.id id1, e2.id id2, st_intersection(e1.geom, e2.geom) AS point -INTO intersections -FROM edges e1, edges e2 -WHERE e1.id < e2.id AND st_crosses(e1.geom, e2.geom); -/* --q4 */ -SELECT pgr_nodeNetwork('edges', 0.001, the_geom => 'geom', rows_where=>'id in ('||id1||','||id2||')') -FROM intersections; -/* --q5 */ -SELECT old_id, ST_AsText(geom) FROM edges_noded ORDER BY old_id, sub_id; -/* --q6 */ -INSERT INTO edges (cost, reverse_cost, geom) -WITH -the_fractions AS ( - SELECT e1.id id, st_lineLocatePoint(e1.geom, point) AS fraction - FROM intersections, edges e1, edges e2 WHERE e1.id = id1 AND e2.id = id2 - UNION - SELECT e2.id, st_lineLocatePoint(e2.geom, point) - FROM intersections, edges e1, edges e2 WHERE e1.id = id1 AND e2.id = id2 -) -SELECT - CASE WHEN sub_id = 1 - THEN cost*fraction ELSE cost*(1-fraction) END as cost, - CASE WHEN sub_id = 1 - THEN reverse_cost*(1-fraction) ELSE reverse_cost*(fraction) END AS reverse_cost, - segments.geom -FROM edges as edges -JOIN edges_noded as segments ON (edges.id = segments.old_id) -JOIN the_fractions f ON (segments.old_id = f.id); -/* --q7 */ -INSERT INTO vertices (id, geom) -SELECT row_number() over() + 100, point -FROM intersections; -/* --q8 */ -UPDATE edges e SET source = v.id FROM -vertices v where source IS NULL AND (st_startPoint(e.geom) = v.geom); - -UPDATE edges e SET target = v.id FROM -vertices v where target IS NULL AND (st_endPoint(e.geom) = v.geom); -/* --q9 */ -DELETE FROM edges -WHERE id IN ( - SELECT id1 FROM intersections - UNION - SELECT id2 FROM intersections); -/* --q10 */ - -WITH data AS ( - select p.id, p.in_edges, p.out_edges - FROM pgr_extractVertices('select id, source, target from edges') p) -UPDATE vertices v -SET (in_edges,out_edges) = (d.in_edges,d.out_edges) -FROM data d where d.id = v.id; -/* --q11 */ -SELECT e1.id, e2.id -FROM edges_noded e1, edges e2 -WHERE e1.id < e2.id AND st_crosses(e1.geom, e2.geom); - -/* --q12 */ -WITH -data AS ( - SELECT id, geom, (in_edges || out_edges)[1] as inhere - FROM vertices where array_length(in_edges || out_edges, 1) = 1) -SELECT - d.id, d.inhere, - (pgr_findCloseEdges('SELECT id, geom FROM edges WHERE id != ' || inhere , geom, 0.001)).* -INTO deadends -FROM data d; -/* --q13 */ -SELECT pgr_nodeNetwork('edges', 0.001, the_geom => 'geom', rows_where=>'id in ('||inhere||','||edge_id||')') -FROM deadends; - -/* --q14 */ -SELECT old_id, ST_AsText(geom) FROM edges_noded ORDER BY old_id, sub_id; - -/* --q15 */ -INSERT INTO edges (cost, reverse_cost, geom) -SELECT - CASE WHEN sub_id = 1 THEN cost*fraction ELSE cost*(1-fraction) END as cost, - CASE WHEN sub_id = 1 THEN reverse_cost*(1-fraction) ELSE reverse_cost*(fraction) END as reverse_cost, en.geom -FROM deadends r JOIN edges_noded en ON (old_id = edge_id) JOIN edges e ON (old_id = e.id) -UNION -SELECT 0,0,edge FROM deadends; - - -/* --q16 */ -/* Update the vertices table */ -INSERT INTO vertices (id, geom) -select row_number() over() + 200, st_endpoint(edge) FROM deadends; - -/* --q17 */ -UPDATE edges e SET source = v.id FROM -vertices v where source IS NULL AND (st_startPoint(e.geom) = v.geom); - -UPDATE edges e SET target = v.id FROM -vertices v where target IS NULL AND (st_endPoint(e.geom) = v.geom); - -/* --q18 */ -DELETE FROM edges WHERE id IN (SELECT edge_id FROM deadends); - -/* --q19 */ -WITH data AS ( - select p.id, p.in_edges, p.out_edges - FROM pgr_extractVertices('select id, source, target from edges') p) -UPDATE vertices v -SET (in_edges,out_edges) = (d.in_edges,d.out_edges) -FROM data d where d.id = v.id; -/* --q20 */ -WITH -data AS ( - SELECT id, geom, (in_edges || out_edges)[1] as inhere - FROM vertices where array_length(in_edges || out_edges, 1) = 1), -results AS ( - SELECT (pgr_findCloseEdges( - 'SELECT id, geom FROM edges WHERE id != ' || inhere , geom, 0.001)).*, - d.id, d.inhere - FROM data d -) -SELECT * FROM results; -/* --q21 */ diff --git a/docqueries/topology/nodeNetwork.result b/docqueries/topology/nodeNetwork.result deleted file mode 100644 index 94934eb6cae..00000000000 --- a/docqueries/topology/nodeNetwork.result +++ /dev/null @@ -1,226 +0,0 @@ -BEGIN; -BEGIN -SET client_min_messages TO NOTICE; -SET -/* --q1 */ -SELECT e1.id id1, e2.id id2, ST_ASTEXT(ST_Intersection(e1.geom, e2.geom)) AS point -FROM edges e1, edges e2 -WHERE e1.id < e2.id AND ST_Crosses(e1.geom, e2.geom); - id1 | id2 | point ------+-----+-------------- - 13 | 18 | POINT(3.5 3) -(1 row) - -/* --q2 */ -WITH -data AS ( - SELECT id, geom, (in_edges || out_edges)[1] as inhere - FROM vertices where array_length(in_edges || out_edges, 1) = 1 -), -results AS ( - SELECT d.id, d.inhere, - (pgr_findCloseEdges('SELECT id, geom FROM edges WHERE id != ' || inhere , geom, 0.001)).* - FROM data d -) -SELECT - id, inhere, edge_id, fraction, - ST_AsText(geom) AS geom, ST_AsText(edge) AS edge -FROM results; - id | inhere | edge_id | fraction | geom | edge -----+--------+---------+----------+---------------------------+-------------------------------------- - 4 | 17 | 14 | 0.5 | POINT(1.999999999999 3.5) | LINESTRING(1.999999999999 3.5,2 3.5) -(1 row) - -/* --q3 */ -SELECT e1.id id1, e2.id id2, st_intersection(e1.geom, e2.geom) AS point -INTO intersections -FROM edges e1, edges e2 -WHERE e1.id < e2.id AND st_crosses(e1.geom, e2.geom); -SELECT 1 -/* --q4 */ -SELECT pgr_nodeNetwork('edges', 0.001, the_geom => 'geom', rows_where=>'id in ('||id1||','||id2||')') -FROM intersections; -NOTICE: PROCESSING: -NOTICE: id: id -NOTICE: the_geom: geom -NOTICE: table_ending: noded -NOTICE: rows_where: id in (13,18) -NOTICE: outall: f -NOTICE: pgr_nodeNetwork('edges', 0.001, 'id', 'geom', 'noded', 'id in (13,18)', f) -NOTICE: Performing checks, please wait ..... -NOTICE: Processing, please wait ..... -NOTICE: Split Edges: 2 -NOTICE: Untouched Edges: 0 -NOTICE: Total original Edges: 2 -NOTICE: Edges generated: 4 -NOTICE: Untouched Edges: 0 -NOTICE: Total New segments: 4 -NOTICE: New Table: public.edges_noded -NOTICE: ---------------------------------- - pgr_nodenetwork ------------------ - OK -(1 row) - -/* --q5 */ -SELECT old_id, ST_AsText(geom) FROM edges_noded ORDER BY old_id, sub_id; - old_id | st_astext ---------+--------------------------- - 13 | LINESTRING(3 3,3.5 3) - 13 | LINESTRING(3.5 3,4 3) - 18 | LINESTRING(3.5 2.3,3.5 3) - 18 | LINESTRING(3.5 3,3.5 4) -(4 rows) - -/* --q6 */ -INSERT INTO edges (cost, reverse_cost, geom) -WITH -the_fractions AS ( - SELECT e1.id id, st_lineLocatePoint(e1.geom, point) AS fraction - FROM intersections, edges e1, edges e2 WHERE e1.id = id1 AND e2.id = id2 - UNION - SELECT e2.id, st_lineLocatePoint(e2.geom, point) - FROM intersections, edges e1, edges e2 WHERE e1.id = id1 AND e2.id = id2 -) -SELECT - CASE WHEN sub_id = 1 - THEN cost*fraction ELSE cost*(1-fraction) END as cost, - CASE WHEN sub_id = 1 - THEN reverse_cost*(1-fraction) ELSE reverse_cost*(fraction) END AS reverse_cost, - segments.geom -FROM edges as edges -JOIN edges_noded as segments ON (edges.id = segments.old_id) -JOIN the_fractions f ON (segments.old_id = f.id); -INSERT 0 4 -/* --q7 */ -INSERT INTO vertices (id, geom) -SELECT row_number() over() + 100, point -FROM intersections; -INSERT 0 1 -/* --q8 */ -UPDATE edges e SET source = v.id FROM -vertices v where source IS NULL AND (st_startPoint(e.geom) = v.geom); -UPDATE 4 -UPDATE edges e SET target = v.id FROM -vertices v where target IS NULL AND (st_endPoint(e.geom) = v.geom); -UPDATE 4 -/* --q9 */ -DELETE FROM edges -WHERE id IN ( - SELECT id1 FROM intersections - UNION - SELECT id2 FROM intersections); -DELETE 2 -/* --q10 */ -WITH data AS ( - select p.id, p.in_edges, p.out_edges - FROM pgr_extractVertices('select id, source, target from edges') p) -UPDATE vertices v -SET (in_edges,out_edges) = (d.in_edges,d.out_edges) -FROM data d where d.id = v.id; -UPDATE 18 -/* --q11 */ -SELECT e1.id, e2.id -FROM edges_noded e1, edges e2 -WHERE e1.id < e2.id AND st_crosses(e1.geom, e2.geom); - id | id -----+---- -(0 rows) - -/* --q12 */ -WITH -data AS ( - SELECT id, geom, (in_edges || out_edges)[1] as inhere - FROM vertices where array_length(in_edges || out_edges, 1) = 1) -SELECT - d.id, d.inhere, - (pgr_findCloseEdges('SELECT id, geom FROM edges WHERE id != ' || inhere , geom, 0.001)).* -INTO deadends -FROM data d; -SELECT 1 -/* --q13 */ -SELECT pgr_nodeNetwork('edges', 0.001, the_geom => 'geom', rows_where=>'id in ('||inhere||','||edge_id||')') -FROM deadends; -NOTICE: PROCESSING: -NOTICE: id: id -NOTICE: the_geom: geom -NOTICE: table_ending: noded -NOTICE: rows_where: id in (17,14) -NOTICE: outall: f -NOTICE: pgr_nodeNetwork('edges', 0.001, 'id', 'geom', 'noded', 'id in (17,14)', f) -NOTICE: Performing checks, please wait ..... -NOTICE: Processing, please wait ..... -NOTICE: Split Edges: 1 -NOTICE: Untouched Edges: 1 -NOTICE: Total original Edges: 2 -NOTICE: Edges generated: 2 -NOTICE: Untouched Edges: 1 -NOTICE: Total New segments: 3 -NOTICE: New Table: public.edges_noded -NOTICE: ---------------------------------- - pgr_nodenetwork ------------------ - OK -(1 row) - -/* --q14 */ -SELECT old_id, ST_AsText(geom) FROM edges_noded ORDER BY old_id, sub_id; - old_id | st_astext ---------+---------------------------------------- - 14 | LINESTRING(2 3,1.999999999999 3.5) - 14 | LINESTRING(1.999999999999 3.5,2 4) - 17 | LINESTRING(0.5 3.5,1.999999999999 3.5) -(3 rows) - -/* --q15 */ -INSERT INTO edges (cost, reverse_cost, geom) -SELECT - CASE WHEN sub_id = 1 THEN cost*fraction ELSE cost*(1-fraction) END as cost, - CASE WHEN sub_id = 1 THEN reverse_cost*(1-fraction) ELSE reverse_cost*(fraction) END as reverse_cost, en.geom -FROM deadends r JOIN edges_noded en ON (old_id = edge_id) JOIN edges e ON (old_id = e.id) -UNION -SELECT 0,0,edge FROM deadends; -INSERT 0 3 -/* --q16 */ -/* Update the vertices table */ -INSERT INTO vertices (id, geom) -select row_number() over() + 200, st_endpoint(edge) FROM deadends; -INSERT 0 1 -/* --q17 */ -UPDATE edges e SET source = v.id FROM -vertices v where source IS NULL AND (st_startPoint(e.geom) = v.geom); -UPDATE 3 -UPDATE edges e SET target = v.id FROM -vertices v where target IS NULL AND (st_endPoint(e.geom) = v.geom); -UPDATE 3 -/* --q18 */ -DELETE FROM edges WHERE id IN (SELECT edge_id FROM deadends); -DELETE 1 -/* --q19 */ -WITH data AS ( - select p.id, p.in_edges, p.out_edges - FROM pgr_extractVertices('select id, source, target from edges') p) -UPDATE vertices v -SET (in_edges,out_edges) = (d.in_edges,d.out_edges) -FROM data d where d.id = v.id; -UPDATE 19 -/* --q20 */ -WITH -data AS ( - SELECT id, geom, (in_edges || out_edges)[1] as inhere - FROM vertices where array_length(in_edges || out_edges, 1) = 1), -results AS ( - SELECT (pgr_findCloseEdges( - 'SELECT id, geom FROM edges WHERE id != ' || inhere , geom, 0.001)).*, - d.id, d.inhere - FROM data d -) -SELECT * FROM results; - edge_id | fraction | side | distance | geom | edge | id | inhere ----------+----------+------+-----------------------+--------------------------------------------+------------------------------------------------------------------------------------+-----+-------- - 17 | 1 | l | 1.000088900582341e-12 | 010100000000000000000000400000000000000C40 | 01020000000200000000000000000000400000000000000C4068EEFFFFFFFFFF3F0000000000000C40 | 201 | 25 -(1 row) - -/* --q21 */ -ROLLBACK; -ROLLBACK diff --git a/docqueries/topology/test.conf b/docqueries/topology/test.conf deleted file mode 100644 index 66a080c46fa..00000000000 --- a/docqueries/topology/test.conf +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/perl -w - -%main::tests = ( - 'any' => { - 'files' => [qw( - nodeNetwork.pg - extractVertices.pg - )], - }, -); - -1; diff --git a/docqueries/utilities/CMakeLists.txt b/docqueries/utilities/CMakeLists.txt index 09d6b4fa934..1ce72ac6827 100644 --- a/docqueries/utilities/CMakeLists.txt +++ b/docqueries/utilities/CMakeLists.txt @@ -1,5 +1,6 @@ # Do not use extensions SET(LOCAL_FILES + extractVertices findCloseEdges separateCrossing separateTouching diff --git a/docqueries/topology/extractVertices.pg b/docqueries/utilities/extractVertices.pg similarity index 100% rename from docqueries/topology/extractVertices.pg rename to docqueries/utilities/extractVertices.pg diff --git a/docqueries/topology/extractVertices.result b/docqueries/utilities/extractVertices.result similarity index 100% rename from docqueries/topology/extractVertices.result rename to docqueries/utilities/extractVertices.result diff --git a/docqueries/utilities/test.conf b/docqueries/utilities/test.conf index f94779a1a5a..0a8e0e4c0b5 100644 --- a/docqueries/utilities/test.conf +++ b/docqueries/utilities/test.conf @@ -3,6 +3,7 @@ %main::tests = ( 'any' => { 'files' => [qw( + extractVertices.pg findCloseEdges.pg separateCrossing.pg separateTouching.pg diff --git a/locale/en/LC_MESSAGES/pgrouting_doc_strings.po b/locale/en/LC_MESSAGES/pgrouting_doc_strings.po index 05167950247..066592851e9 100644 --- a/locale/en/LC_MESSAGES/pgrouting_doc_strings.po +++ b/locale/en/LC_MESSAGES/pgrouting_doc_strings.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: pgRouting v3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-29 15:26+0000\n" +"POT-Creation-Date: 2025-05-19 19:25+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -342,7 +342,7 @@ msgstr "" msgid "When points are also given as input:" msgstr "" -msgid ":doc:`pgr_trsp` - Vertex - Vertex routing with restrictions." +msgid ":doc:`pgr_trsp` - Routing with restrictions." msgstr "" msgid ":doc:`pgr_trspVia` - Via Vertices routing with restrictions." @@ -356,11 +356,6 @@ msgid "" "restrictions." msgstr "" -msgid "" -"Read the :doc:`migration` about how to migrate from the deprecated TRSP " -"functionality to the new signatures or replacement functions." -msgstr "" - msgid "Possible server crash" msgstr "" @@ -3846,21 +3841,7 @@ 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_nodeNetwork` - to create nodes to a not noded edge table." -msgstr "" - -msgid ":doc:`pgr_trsp` - Turn Restriction Shortest Path (TRSP)" -msgstr "" - -msgid "Utilities" +msgid ":doc:`utilities-family`" msgstr "" msgid "" @@ -4066,6 +4047,11 @@ msgid "" "pgr_createVerticesTable" msgstr "" +msgid "" +"`#2886 `__: " +"pgr_nodeNetwork" +msgstr "" + msgid "Removal of SQL deprecated internal functions" msgstr "" @@ -4231,11 +4217,16 @@ msgstr "" msgid "Migration of ``pgr_alphaShape``" msgstr "" -msgid "" -"Deprecated in `v3.8.0 " -"`__ Removed from the " -"repostory in `v3.8.0 " -"`__" +msgid "Deprecated" +msgstr "" + +msgid "`v3.8.0 `__" +msgstr "" + +msgid "Removed" +msgstr "" + +msgid "`v4.0.0 `__" msgstr "" msgid "**Before Deprecation:** The following was calculated:" @@ -4267,12 +4258,21 @@ msgid "" "`__" msgstr "" -msgid "Migration of ``pgr_createTopology``" +msgid "Migration of ``pgr_nodeNetwork``" msgstr "" msgid "" -"Starting from `v3.8.0 " -"`__" +"**Before Deprecation:** A table with `_nodded` was created. with " +"split edges." +msgstr "" + +msgid "**Migration**" +msgstr "" + +msgid "Use :doc:`pgr_separateTouching` and/or use :doc:`pgr_separateCrossing`" +msgstr "" + +msgid "Migration of ``pgr_createTopology``" msgstr "" msgid "A table with `_vertices_pgr` was created." @@ -5098,18 +5098,9 @@ msgstr "" msgid "Signature:" msgstr "" -msgid "Deprecated" -msgstr "" - msgid "`v3.4.0 `__" msgstr "" -msgid "Removed" -msgstr "" - -msgid "`v4.0.0 `__" -msgstr "" - msgid ":doc:`pgr_dijkstra`" msgstr "" @@ -13103,172 +13094,6 @@ msgstr "" msgid "Minimum Cost Maximum Flow possible from the source(s) to the target(s)" msgstr "" -msgid "``pgr_nodeNetwork``" -msgstr "" - -msgid "``pgr_nodeNetwork`` - Nodes an network edge table." -msgstr "" - -msgid "Author" -msgstr "" - -msgid "Nicolas Ribot" -msgstr "" - -msgid "Copyright" -msgstr "" - -msgid "Nicolas Ribot, The source code is released under the MIT-X license." -msgstr "" - -msgid "" -"The function reads edges from a not \"noded\" network table and writes " -"the \"noded\" edges into a new table." -msgstr "" - -msgid "Not checking and not creating indexes." -msgstr "" - -msgid "Using ``pgr_separateTouching`` and ``pgr_separateCrossing``." -msgstr "" - -msgid "Created table with ``BIGINT``." -msgstr "" - -msgid "" -"A common problem associated with bringing GIS data into pgRouting is the " -"fact that the data is often not \"noded\" correctly. This will create " -"invalid topologies, which will result in routes that are incorrect." -msgstr "" - -msgid "" -"What we mean by \"noded\" is that at every intersection in the road " -"network all the edges will be broken into separate road segments. There " -"are cases like an over-pass and under-pass intersection where you can not" -" traverse from the over-pass to the under-pass, but this function does " -"not have the ability to detect and accommodate those situations." -msgstr "" - -msgid "" -"This function reads the ``edge_table`` table, that has a primary key " -"column ``id`` and geometry column named ``the_geom`` and intersect all " -"the segments in it against all the other segments and then creates a " -"table ``edge_table_noded``. It uses the ``tolerance`` for deciding that " -"multiple nodes within the tolerance are considered the same node." -msgstr "" - -msgid "edge_table" -msgstr "" - -msgid "``text`` Network table name. (may contain the schema name as well)" -msgstr "" - -msgid "tolerance" -msgstr "" - -msgid "``float8`` tolerance for coincident points (in projection unit)dd" -msgstr "" - -msgid "id" -msgstr "" - -msgid "" -"``text`` Primary key column name of the network table. Default value is " -"``id``." -msgstr "" - -msgid "the_geom" -msgstr "" - -msgid "" -"``text`` Geometry column name of the network table. Default value is " -"``the_geom``." -msgstr "" - -msgid "table_ending" -msgstr "" - -msgid "``text`` Suffix for the new table's. Default value is ``noded``." -msgstr "" - -msgid "The output table will have for ``edge_table_noded``" -msgstr "" - -msgid "``bigint`` Unique identifier for the table" -msgstr "" - -msgid "old_id" -msgstr "" - -msgid "``bigint`` Identifier of the edge in original table" -msgstr "" - -msgid "sub_id" -msgstr "" - -msgid "``integer`` Segment number of the original edge" -msgstr "" - -msgid "source" -msgstr "" - -msgid "``bigint`` Empty source column" -msgstr "" - -msgid "target" -msgstr "" - -msgid "``bigint`` Empty target column" -msgstr "" - -msgid "the geom" -msgstr "" - -msgid "``geometry`` Geometry column of the noded network" -msgstr "" - -msgid "Create the topology for the data in :doc:`sampledata`" -msgstr "" - -msgid "The analysis tell us that the network has a gap and an intersection." -msgstr "" - -msgid "Storing the intersections." -msgstr "" - -msgid "Calling ``pgr_nodeNetwork``." -msgstr "" - -msgid "" -"Inspecting the generated table, we can see that edges 13 and 18 have been" -" segmented." -msgstr "" - -msgid "Add new segments to the edges table." -msgstr "" - -msgid "Insert the intersection as new vertices." -msgstr "" - -msgid "Delete original edge." -msgstr "" - -msgid "Update the vertex topology" -msgstr "" - -msgid "Store the deadends" -msgstr "" - -msgid "" -"Inspecting the generated table, we can see that edge 14 has been " -"segmented." -msgstr "" - -msgid "" -":doc:`topology-functions` for an overview of a topology for routing " -"algorithms." -msgstr "" - msgid "``pgr_pickDeliver`` - Experimental" msgstr "" @@ -15302,6 +15127,9 @@ msgid "" "to official pgr_degree in version 3.8" msgstr "" +msgid "Utilities" +msgstr "" + msgid "" "`#2772 `__: Promoted " "to official pgr_extractVertices in version 3.8" @@ -18226,24 +18054,6 @@ msgstr "" msgid "https://www.osgeo.org/service-providers/netlab/" msgstr "" -msgid "Topology - Family of Functions" -msgstr "" - -msgid "" -"The pgRouting's topology of a network represented with a graph in form of" -" two tables: and edge table and a vertex table." -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 "Utility functions" -msgstr "" - msgid "Transformation - Family of functions" msgstr "" @@ -18258,6 +18068,9 @@ msgstr "" msgid "Additionally there are 2 categories under this family" msgstr "" +msgid "Utility functions" +msgstr "" + msgid "Via - Category" msgstr "" diff --git a/locale/es/LC_MESSAGES/pgrouting_doc_strings.po b/locale/es/LC_MESSAGES/pgrouting_doc_strings.po index c10653995da..14b221925af 100644 --- a/locale/es/LC_MESSAGES/pgrouting_doc_strings.po +++ b/locale/es/LC_MESSAGES/pgrouting_doc_strings.po @@ -21410,1089 +21410,3 @@ msgstr "pgr_withPointsDD es pgr_drivingDistance **con puntos**" msgid "pgr_withPointsvia is pgr_dijkstraVia **with points**" msgstr "pgr_withPoints es pgr_dijkstraVia **con puntos**" -#~ msgid "Allowing the user to:" -#~ msgstr "Permitiendo que el usuario:" - -#~ msgid "" -#~ "Decide the order of the contraction algorithms and set the maximum number " -#~ "of times they are to be executed." -#~ 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 "(Alphabetical order)" -#~ msgstr "(Orden alfabético)" - -#~ msgid "Post processing" -#~ msgstr "Post procesamiento" - -#~ msgid ":doc:`pgr_alphaShape` - Alpha shape computation" -#~ msgstr ":doc:`pgr_alphaShape` - Cálcular la forma Alpha" - -#~ 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_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 "" -#~ ":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 ":doc:`pgr_analyzeOneWay` - to analyze directionality of the edges." -#~ msgstr "" -#~ ":doc:`pgr_analyzeOneWay` - para analizar la direccionalidad de las " -#~ "aristas." - -#~ msgid "Utilities family" -#~ msgstr "Utilidades - familia" - -#~ msgid "pgr_trspviavertices(text,anyarray,boolean,boolean,text)" -#~ msgstr "pgr_trspviavertices(text,anyarray,boolean,boolean,text)" - -#~ msgid "Adding split edges" -#~ msgstr "Añadir aristas divididas" - -#~ msgid "" -#~ "For each pair of crossing edges a process similar to this one must be " -#~ "performed." -#~ msgstr "" -#~ "Para cada par de aristas de cruce debe realizarse un proceso similar a " -#~ "éste." - -#~ 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 "" -#~ "Las columnas insertadas y la forma en que se calculan se basan en la " -#~ "aplicación. Por ejemplo, si las aristas tienen un rasgo **nombre**, se " -#~ "copiará esa columna." - -#~ msgid "For pgRouting calculations" -#~ msgstr "Para llos cálculos de pgRouting" - -#~ msgid "" -#~ "**factor** based on the position of the intersection of the edges can be " -#~ "used to adjust the ``cost`` and ``reverse_cost`` columns." -#~ msgstr "" -#~ "Se puede utilizar un **factor** basado en la posición de la intersección " -#~ "de las aristas para ajustar las columnas ``cost`` y ``reverse_cost``." - -#~ msgid "" -#~ "Capacity information, used in the :doc:`flow-family` functions does not " -#~ "need to change when splitting edges." -#~ msgstr "" -#~ "La información de capacidad, utilizada en las funciones :doc:`flow-" -#~ "family` no necesita cambiar al dividir aristas." - -#~ msgid "Adding new vertices" -#~ msgstr "Añadiendo nuevos vértices" - -#~ msgid "" -#~ "After adding all the split edges required by the application, the newly " -#~ "created vertices need to be added to the vertices table." -#~ msgstr "" -#~ "Después de añadir todas las aristas de división requeridas por la " -#~ "aplicación, es necesario añadir los vértices recién creados a la tabla de " -#~ "vértices." - -#~ msgid "Updating edges topology" -#~ msgstr "Actualizar la topología de aristas" - -#~ msgid "Removing the surplus edges" -#~ msgstr "Eliminar las aristas sobrantes" - -#~ msgid "" -#~ "Once all significant information needed by the application has been " -#~ "transported to the new edges, then the crossing edges can be deleted." -#~ msgstr "" -#~ "Una vez que toda la información significativa que necesita la aplicación " -#~ "se ha transportado a las nuevas aristas, se pueden eliminar las aristas " -#~ "de cruce." - -#~ msgid "" -#~ "There are other options to do this task, like creating a view, or a " -#~ "materialized view." -#~ msgstr "" -#~ "Existen otras opciones para realizar esta tarea, como crear una vista, o " -#~ "una vista materializada." - -#~ msgid "Updating vertices topology" -#~ msgstr "Actializar la topología de vértices" - -#~ msgid "" -#~ "To keep the graph consistent, the vertices topology needs to be updated" -#~ msgstr "" -#~ "Para mantener la coherencia del grafo, es necesario actualizar la " -#~ "topología de los vértices" - -#~ msgid "Checking for crossing edges" -#~ msgstr "Comprobación del cruce de aristas" - -#~ msgid "There are no crossing edges on the graph." -#~ msgstr "No hay aristas que se crucen en el grafo." - -#~ msgid "Disconnected graphs" -#~ msgstr "Grafos desconectados" - -#~ 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 "" -#~ "En este ejemplo, el componente :math:`2` está formado por vértices :math:" -#~ "`\\{2, 4\\}` y ambos vértices también forman parte del conjunto de " -#~ "resultados sin salida." - -#~ msgid "This graph needs to be connected." -#~ msgstr "Este grafo debe estar conectado." - -#~ 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 "" -#~ "Con el grafo original de esta documentación, habría 3 componentes, ya que " -#~ "la arista de cruce en este grafo es un componente diferente." - -#~ msgid "Prepare storage for connection information" -#~ msgstr "Preparar el almacenamiento de la información de conexión" - -#~ msgid "Save the vertices connection information" -#~ msgstr "Guardar la información de conexión de los vértices" - -#~ msgid "Save the edges connection information" -#~ msgstr "Guardar la información de conexión de las aristas" - -#~ msgid "Get the closest vertex" -#~ msgstr "Obtener el vértice más cercano" - -#~ 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 "" -#~ "Usando :doc:`pgr_findCloseEdges` el vértice más cercano al componente :" -#~ "math:`1` es el vértice :math:`4`. Y la arista más cercana al vértice :" -#~ "math:`4` es la arista :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." -#~ msgstr "" -#~ "La arista ``edge`` se puede utilizar para conectar los componentes, " -#~ "utilizando la información ``fraction`` sobre la arista :math:`14` para " -#~ "dividir la arista de conexión." - -#~ msgid "There are three basic ways to connect the components" -#~ msgstr "Existen tres formas básicas de conectar los componentes" - -#~ msgid "The following query shows the three ways to connect the components:" -#~ msgstr "" -#~ "La siguiente consulta muestra las tres formas de conectar los componentes:" - -#~ msgid "Checking components" -#~ msgstr "Revisando componentes" - -#~ msgid "" -#~ "Ignoring the edge that requires further work. The graph is now fully " -#~ "connected as there is only one component." -#~ msgstr "" -#~ "Ignorando la arista que requiere más trabajo. El grafo está ahora " -#~ "totalmente conectado, ya que sólo hay un componente." - -#~ msgid "OR EMTPY SET" -#~ msgstr "O CONJUNTO VACÍO" - -#~ msgid "is arbitrarly." -#~ msgstr "es arbitrario." - -#~ msgid "``pgr_alphaShape``" -#~ msgstr "``pgr_alphaShape``" - -#~ msgid "``pgr_alphaShape`` — Polygon part of an alpha shape." -#~ msgstr "``pgr_alphaShape`` —Parte poligonal de una forma alfa." - -#~ msgid "Breaking change on signature" -#~ msgstr "Cambio de ruptura en la firma" - -#~ msgid "**Boost 1.54** & **Boost 1.55** are supported" -#~ msgstr "**Boost 1.54** y **Boost 1.55** son soportados" - -#~ msgid "**Boost 1.56+** is preferable" -#~ msgstr "**Boost 1.56+** es preferible" - -#~ msgid "Boost Geometry is stable on Boost 1.56" -#~ msgstr "Boost Geometry es estable en Boost 1.56" - -#~ msgid "Added alpha argument with default 0 (use optimal value)" -#~ msgstr "" -#~ "Añadido argumento alfa con valor predeterminado 0 (usar el valor óptimo)" - -#~ msgid "Support to return multiple outer/inner ring" -#~ msgstr "Soporte para devolver múltiples anillos exteriores/interiores" - -#~ msgid "Renamed from version 1.x" -#~ msgstr "Renombrado desde la versión 1.x" - -#~ msgid "Returns the polygon part of an alpha shape." -#~ msgstr "Devuelve la parte poligonal de una forma alfa." - -#~ msgid "Input is a *geometry* and returns a *geometry*" -#~ msgstr "La entrada es una *geometría* y devuelve una *geometría*" - -#~ msgid "Uses PostGis ST_DelaunyTriangles" -#~ msgstr "Usa PostGis ST_DelaunyTriangles" - -#~ msgid "" -#~ "Instead of using CGAL's definition of `alpha` it use the ``spoon_radius``" -#~ msgstr "" -#~ "En lugar de utilizar la definición de CGAL de `alpha` utiliza " -#~ "``spoon_radius`` el ''spoon_radius''" - -#~ msgid ":math:`spoon\\_radius = \\sqrt alpha`" -#~ msgstr ":math:`spoon\\_radius = \\sqrt alpha`" - -#~ msgid "" -#~ "A Triangle area is considered part of the alpha shape when :math:" -#~ "`circumcenter\\ radius < spoon\\_radius`" -#~ msgstr "" -#~ "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 "" -#~ "When the total number of points is less than 3, returns an EMPTY geometry" -#~ msgstr "" -#~ "Cuando el número total de puntos es menor que 3, devuelve una geometría " -#~ "EMPTY" - -#~ msgid "pgr_alphaShape(**geometry**, [alpha])" -#~ msgstr "pgr_alphaShape(**geometría**, [alpha])" - -#~ msgid "RETURNS ``geometry``" -#~ msgstr "REGRESA ``geometry``" - -#~ msgid "" -#~ "passing a geometry collection with spoon radius :math:`1.5` using the " -#~ "return variable ``geom``" -#~ msgstr "" -#~ "pasar una colección de geometrías con radio de cuchara :math:`1.5` usando " -#~ "la variable de retorno ``geom``" - -#~ msgid "**geometry**" -#~ msgstr "**geometría**" - -#~ msgid "Geometry with at least :math:`3` points" -#~ msgstr "Geometría con al menos :math:`3` puntos" - -#~ msgid "``alpha``" -#~ msgstr "``alpha``" - -#~ msgid "The radius of the spoon." -#~ msgstr "El radio de la cuchara." - -#~ msgid "Return Value" -#~ msgstr "Valor de Devolución" - -#~ msgid "Kind of geometry" -#~ msgstr "Tipo de geometría" - -#~ msgid "GEOMETRY COLLECTION" -#~ msgstr "GEOMETRY COLLECTION" - -#~ msgid "A Geometry collection of Polygons" -#~ msgstr "Una colección de Geometría de Polígonos" - -#~ msgid "`ST_ConcaveHull `__" -#~ msgstr "`ST_ConcaveHull `__" - -#~ msgid "``pgr_analyzeGraph`` -- Deprecated since 3.8.0" -#~ msgstr "``pgr_analyzeGraph`` -- Obsoleto desde 3.8.0" - -#~ 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 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 "" -#~ "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 "The analyze graph function accepts the following parameters:" -#~ msgstr "La función de análisis gráfico acepta los siguientes parámetros:" - -#~ msgid "" -#~ "``float8`` Snapping tolerance of disconnected edges. (in projection unit)" -#~ msgstr "" -#~ "``float8`` ajuste tolerancia de bordes desconectados. (en la unidad de " -#~ "proyección)" - -#~ 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 "" -#~ "``text`` Target column name of the network table. Default value is " -#~ "``target``." -#~ msgstr "" -#~ "``text`` El nombre de la columna del destino del segmento. El valor por " -#~ "defecto es ``target``." - -#~ msgid "rows_where" -#~ msgstr "rows_where" - -#~ msgid "" -#~ "``text`` Condition to select a subset or rows. Default value is ``true`` " -#~ "to indicate all rows." -#~ 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." - -#~ 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 "" -#~ "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 "The vertices table is not found." -#~ msgstr "No se encuentra en la tabla de los vértices." - -#~ msgid "" -#~ "A required column of the Network table is not found or is not of the " -#~ "appropriate type." -#~ 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" - -#~ msgid "The structure of the vertices table is:" -#~ msgstr "La estructura de la tabla de los vértices es:" - -#~ msgid "``bigint`` Identifier of the vertex." -#~ msgstr "``bigint`` identificador del vértice." - -#~ msgid "cnt" -#~ msgstr "cnt" - -#~ 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 "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." - -#~ msgid "ein" -#~ msgstr "ein" - -#~ 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 "eout" -#~ msgstr "eout" - -#~ 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`` Point geometry of the vertex." -#~ msgstr "``geometry`` Valor de la geometría POINT del vértice." - -#~ 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 "The simplest way to use pgr_analyzeGraph is:" -#~ msgstr "La forma más sencilla de usar pgr_analyzeGraph es:" - -#~ 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 "We get the same result as the simplest way to use the function." -#~ msgstr "" -#~ "Obtenemos el mismo resultado que la forma más sencilla de utilizar la " -#~ "función." - -#~ msgid "An error would occur when" -#~ msgstr "Un error puede ocurrir cuando" - -#~ msgid "the arguments are not given in the appropriate order:" -#~ msgstr "los argumentos se no se escriben en el orden apropiado:" - -#~ 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 "" -#~ "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 "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 "" -#~ "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 "Selecting rows using rows_where parameter" -#~ msgstr "Seleccionar filas utilizando el parámetro rows_where" - -#~ msgid "" -#~ "Selecting rows based on the id. Displays the analysis a the section of " -#~ "the network." -#~ msgstr "" -#~ "La selección de filas basadas en el id. El análisis muestra una parte de " -#~ "la red." - -#~ msgid "" -#~ "Selecting the rows where the geometry is near the geometry of row with " -#~ "``id`` = 5" -#~ msgstr "" -#~ "Seleccionar las filas donde la geometría está cerca de la geometría de la " -#~ "fila con ``id`` = 5" - -#~ msgid "" -#~ "Selecting the rows where the geometry is near the geometry of the row " -#~ "with ``gid`` =100 of the table ``othertable``." -#~ msgstr "" -#~ "Seleccionar las filas donde la geometría está cerca de la geometría de la " -#~ "fila con``gid`` =100 de la tabla ``othertable``." - -#~ 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 "For the following table" -#~ msgstr "Para la siguiente tabla" - -#~ msgid "Using positional notation:" -#~ msgstr "Usando notación posicional:" - -#~ 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:" - -#~ 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 "" -#~ "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 "" -#~ "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 "" -#~ "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." - -#~ msgid "" -#~ "Selecting the rows WHERE the geometry is near the geometry of row with " -#~ "``id`` =5 ." -#~ msgstr "" -#~ "Seleccionar las filas donde la geometría está cerca de la geometría de la " -#~ "fila con ``id`` =5 ." - -#~ msgid "" -#~ "Selecting the rows WHERE the geometry is near the place='myhouse' of the " -#~ "table ``othertable``. (note the use of quote_literal)" -#~ 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 ":doc:`pgr_analyzeOneWay`" -#~ msgstr ":doc:`pgr_analyzeOneWay`" - -#~ 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_analyzeOneWay`` - Deprecated since 3.8.0" -#~ msgstr "``pgr_analyzeOneWay`` - Obsoleto desde 3.8.0" - -#~ 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 "" -#~ "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 "" -#~ "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 "" -#~ "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 "" -#~ "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 "" -#~ "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**, [**opciones**])" - -#~ msgid "**options:** ``[oneway, source, target, two_way_if_null]``" -#~ msgstr "**opcionales:** ``[oneway, source, target, two_way_if_null]``" - -#~ 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" - -#~ msgid "t_in_rules" -#~ msgstr "t_in_rules" - -#~ msgid "``text[]`` target node **in** rules" -#~ msgstr "``text[]`` reglas de **entrada** del nodo final" - -#~ msgid "t_out_rules" -#~ msgstr "t_out_rules" - -#~ msgid "``text[]`` target node **out** rules" -#~ msgstr "``text[]`` reglas de **salida** del nodo final" - -#~ msgid "oneway" -#~ msgstr "oneway" - -#~ 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 "two_way_if_null" -#~ msgstr "two_way_if_null" - -#~ msgid "" -#~ "``boolean`` flag to treat oneway NULL values as bi-directional. Default " -#~ "value is ``true``." -#~ msgstr "" -#~ "``boolean`` bandera para tratar los valores NULL de oneway como " -#~ "bidireccional. Valor predeterminado es``true``." - -#~ msgid "" -#~ "Fills completely the ``ein`` and ``eout`` columns of the vertices table." -#~ msgstr "" -#~ "Se llena completamente las columnas de la tabla de vértices ``ein`` y " -#~ "``eout``." - -#~ msgid "The names of source , target or oneway are the same." -#~ msgstr "Los nombres de origen, destino o oneway son las mismos." - -#~ 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 "" -#~ "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_createTopology`` - Deprecated since v3.8.0" -#~ msgstr "``pgr_createTopology`` - Obsoleto desde 3.8.0" - -#~ msgid "" -#~ "``pgr_createTopology`` — Builds a network topology based on the geometry " -#~ "information." -#~ msgstr "" -#~ "``pgr_createTopology`` — Construye una topología de red basada en la " -#~ "información de geometría." - -#~ msgid "" -#~ "``OK`` after the network topology has been built and the vertices table " -#~ "created." -#~ msgstr "" -#~ "``OK`` después de que se ha construido la topología de red y la tabla de " -#~ "vértices." - -#~ msgid "``FAIL`` when the network topology was not built due to an error." -#~ msgstr "" -#~ "``FAIL`` cuando el la red topológica no se no se completó debido a un " -#~ "error." - -#~ msgid "pgr_createTopology(edge_table, tolerance, [**options**])" -#~ msgstr "pgr_createTopology(tabla_borde, tolerancia, [**opciones**])" - -#~ msgid "**options:** ``[the_geom, id, source, target, rows_where, clean]``" -#~ msgstr "" -#~ "**opcionales:** ``[the_geom, id, source, target, rows_where, clean]``" - -#~ msgid "The topology creation function accepts the following parameters:" -#~ msgstr "" -#~ "La función de creación de topología requiere los siguientes parámetros:" - -#~ msgid "" -#~ "``text`` Condition to SELECT a subset or rows. Default value is ``true`` " -#~ "to indicate all rows that where ``source`` or ``target`` have a null " -#~ "value, otherwise the condition is used." -#~ msgstr "" -#~ "``text`` Condición para SELECCIONAR un subconjunto de filas. El valor " -#~ "predeterminado es ``true`` para indicar todas las filas donde ``source`` " -#~ "o ``target`` tienen un valor nulo, de lo contrario se utiliza la " -#~ "condición." - -#~ msgid "clean" -#~ msgstr "limpio" - -#~ msgid "``boolean`` Clean any previous topology. Default value is ``false``." -#~ msgstr "" -#~ "``boolean`` Limpia cualquier topología anterior. El valor por defecto es " -#~ "``false``." - -#~ msgid "The ``edge_table`` will be affected" -#~ msgstr "La ``edge_table`` se verán afectados" - -#~ msgid "The ``source`` column values will change." -#~ msgstr "Los valores de la columna``source`` va a cambiar." - -#~ msgid "The ``target`` column values will change." -#~ msgstr "Cambian los valores de la columna``target``." - -#~ msgid "" -#~ "An index will be created, if it doesn't exists, to speed up the process " -#~ "to the following columns:" -#~ msgstr "" -#~ "Un índice será creado, si no existe, para acelerar el proceso para las " -#~ "columnas siguientes:" - -#~ msgid "``the_geom``" -#~ msgstr "``the_geom``" - -#~ msgid "``OK`` after the network topology has been built." -#~ msgstr "'' OK'' después de que se ha construido la topología de red." - -#~ msgid "Creates a vertices table: _vertices_pgr." -#~ msgstr "Crea una tabla de vértices: _vertices_pgr." - -#~ msgid "Fills ``id`` and ``the_geom`` columns of the vertices table." -#~ msgstr "Llena las columnas ``id`` y ``the_geom`` de la tabla de vértices." - -#~ msgid "" -#~ "Fills the source and target columns of the edge table referencing the " -#~ "``id`` of the vertices table." -#~ msgstr "" -#~ "Llena las columnas los origen y destino de la tabla de borde haciendo " -#~ "referencia al ``id`` de la tabla de los vértices." - -#~ msgid "``FAIL`` when the network topology was not built due to an error:" -#~ msgstr "" -#~ "``FAIL`` cuando la topología de red no se construyó debido a un error:" - -#~ msgid "" -#~ "``integer`` Number of vertices in the edge_table that reference this " -#~ "vertex AS incoming." -#~ msgstr "" -#~ "``integer`` número de vértices en la tabla de aristas que hacen " -#~ "referencia a este vértice como entrante." - -#~ msgid "" -#~ "``integer`` Number of vertices in the edge_table that reference this " -#~ "vertex AS outgoing." -#~ msgstr "" -#~ "``integer`` número de vértices en la tabla de aristas que hacen " -#~ "referencia a este vértice como saliente." - -#~ msgid "The simplest way to use pgr_createTopology is:" -#~ msgstr "La forma más sencilla de utilizar pgr_createTopology es:" - -#~ msgid "" -#~ "When the arguments are given in the order described in the parameters:" -#~ msgstr "" -#~ "Cuando los argumentos se escriben en el orden descrito en los parámetros:" - -#~ msgid "We get the sameresult as the simplest way to use the function." -#~ msgstr "" -#~ "Se obtiene el mismo resultado que la forma más sencilla de utilizar la " -#~ "función." - -#~ msgid "" -#~ "An error would occur when the arguments are not given in the appropriate " -#~ "order: In this example, the column ``id`` of the table ``ege_table`` 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 "" -#~ "Un error puede ocurrir cuando los argumentos no se dan en el orden " -#~ "adecuado: en este ejemplo, la columna ``id`` de la tabla ``egde_table`` " -#~ "se pasa a la función como columna de geometría, y la columna de " -#~ "geometría``the_geom`` se pasa a la función como columna ``id``." - -#~ msgid "" -#~ "Parameters defined with a default value can be omitted, as long as the " -#~ "value matches the default And The order of the parameters would not " -#~ "matter." -#~ msgstr "" -#~ "Los parámetros definidos con un valor predeterminado se pueden omitir, " -#~ "siempre que el valor coincida con el valor predeterminado y el orden de " -#~ "los parámetros no importaría." - -#~ msgid "" -#~ "Selecting the rows where the geometry is near the geometry of row with " -#~ "``id = 5``." -#~ msgstr "" -#~ "Selección de las filas en las que la geometría está cerca de la geometría " -#~ "de la fila con ``id = 5``." - -#~ msgid "" -#~ "The arguments need to be given in the order described in the parameters." -#~ msgstr "Los argumentos deben darse en el orden descrito en los parámetros." - -#~ msgid "" -#~ "Note that this example uses clean flag. So it recreates the whole " -#~ "vertices table." -#~ msgstr "" -#~ "Tenga en cuenta que en este ejemplo se utiliza la bandera clean. Así que " -#~ "recrea toda la tabla de vértices." - -#~ msgid "" -#~ "An error would occur when the arguments are not given in the appropiriate " -#~ "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 "" -#~ "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 la columna de geometría, y la columna de " -#~ "geometría``mygeom`` se pasa a la función como columna ``id``." - -#~ 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. The order of the parameters do not matter:" -#~ msgstr "" -#~ "En este escenario omitir un parámetro crearía un error porque los valores " -#~ "predeterminados para los nombres de columna no coinciden con los nombres " -#~ "de columna de la tabla. El orden de los parámetros no importa:" - -#~ msgid "Based on id:" -#~ msgstr "Basado en id:" - -#~ msgid "" -#~ "An alternate method to create a routing topology use :doc:" -#~ "`pgr_extractVertices`" -#~ msgstr "" -#~ "Un método alternativo para crear una topología de ruteo es utilizar :doc:" -#~ "`pgr_extractVertices`" - -#~ msgid "With full output" -#~ msgstr "Con salida completa" - -#~ msgid "" -#~ "This example start a clean topology, with 5 edges, and then its " -#~ "incremented to the rest of the edges." -#~ 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 "``pgr_createVerticesTable`` - Deprecated since 3.8.0" -#~ msgstr "``pgr_createVerticesTable`` - Obsoleto desde 3.8.0" - -#~ msgid "" -#~ "``pgr_createVerticesTable`` — Reconstructs the vertices table based on " -#~ "the source and target information." -#~ msgstr "" -#~ "``pgr_createVerticesTable`` — para reconstruir la tabla de vértices " -#~ "basándose en la información de origen y de destino." - -#~ msgid "``OK`` after the vertices table has been reconstructed." -#~ msgstr "``OK`` después de que se ha construido la tabla de vértices." - -#~ msgid "" -#~ "``FAIL`` when the vertices table was not reconstructed due to an error." -#~ msgstr "" -#~ "``FAIL`` cuando la tabla de vértices no se construyó debido a un error." - -#~ msgid "" -#~ "pgr_createVerticesTable(edge_table, [``the_geom, source, target, " -#~ "rows_where``])" -#~ msgstr "" -#~ "pgr_createVerticesTable(edge_table, [``the_geom, source, target, " -#~ "rows_where``])" - -#~ msgid "" -#~ "The reconstruction of the vertices table function accepts the following " -#~ "parameters:" -#~ msgstr "" -#~ "La función de reconstrucción de la tabla de vértices acepta los " -#~ "siguientes parámetros:" - -#~ msgid "" -#~ "``text`` Condition to SELECT a subset or rows. Default value is ``true`` " -#~ "to indicate all rows." -#~ msgstr "" -#~ "``text`` condición para seleccionar un subconjunto o filas. Valor " -#~ "predeterminado es ``true`` para indicar todas las filas." - -#~ msgid "" -#~ "Fills ``id`` and ``the_geom`` columns of the vertices table based on the " -#~ "source and target columns of the edge table." -#~ msgstr "" -#~ "Llena las columnas ``id`` y ``the_geom`` de la tabla de vértices basado " -#~ "en la información de la fuente y el destino." - -#~ msgid "The names of source, target are the same." -#~ msgstr "Los nombres de los campos de origen y destino son las mismos." - -#~ msgid "The simplest way to use pgr_createVerticesTable" -#~ msgstr "La forma más sencilla de utilizar pgr_createVerticesTable" - -#~ msgid "" -#~ "An error would occur when the arguments are not given in the appropriate " -#~ "order: In this example, the column source column ``source`` 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 source " -#~ "column." -#~ msgstr "" -#~ "Se producirá un error cuando los argumentos no se proporcionan en el " -#~ "orden adecuado: en este ejemplo, la columna de origen de columna ' " -#~ "``source`` de la tabla ``mytable`` se pasa a la función como la columna " -#~ "de geometría, y la columna de geometría ``the_geom`` se pasa a la función " -#~ "como la columna de origen." - -#~ msgid "Example 4" -#~ msgstr "Ejemplo 4" - -#~ msgid "Using a different ordering" -#~ msgstr "Usando un orden diferente" - -#~ msgid "Example 5" -#~ msgstr "Ejemplo 5" - -#~ msgid "Example 6" -#~ msgstr "Ejemplo 6" - -#~ msgid "Example 7" -#~ msgstr "Ejemplo 7" - -#~ msgid "" -#~ "Selecting the rows where the geometry is near the geometry of row with " -#~ "``id`` =5 ." -#~ msgstr "" -#~ "Seleccionar las filas donde la geometría está cerca de la geometría de la " -#~ "fila con ``id`` =5." - -#~ msgid "Using the following table" -#~ msgstr "Usando la siguiente tabla" - -#~ msgid "Example 9" -#~ msgstr "Ejemplo 9" - -#~ msgid "" -#~ "An error would occur when the arguments are not given in the appropriate " -#~ "order: In this example, the column ``src`` 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 source column." -#~ msgstr "" -#~ "Se producirá un error cuando los argumentos no se dan en el orden " -#~ "adecuado: en este ejemplo, la columna ``src`` de la tabla ``mytable`` se " -#~ "pasa a la función como la columna de geometría, y la columna de geometría " -#~ "``mygeom`` se pasa a la función como columna de origen." - -#~ msgid "Example 10" -#~ msgstr "Ejemplo 10" - -#~ msgid "Example 11" -#~ msgstr "Ejemplo 11" - -#~ msgid "Example 12" -#~ msgstr "Ejemplo 12" - -#~ msgid "Selecting rows based on the gid. (positional notation)" -#~ msgstr "Selección de filas en función del gid. (notación posicional)" - -#~ msgid "Example 13" -#~ msgstr "Ejemplo 13" - -#~ msgid "Selecting rows based on the gid. (named notation)" -#~ msgstr "Selección de filas en función del gid. (notación con nombre)" - -#~ msgid "Example 14" -#~ msgstr "Ejemplo 14" - -#~ msgid "" -#~ "Selecting the rows where the geometry is near the geometry of row with " -#~ "``gid`` = 5." -#~ msgstr "" -#~ "Selección de las filas en las que la geometría está cerca de la geometría " -#~ "de la fila con ``gid`` = 5." - -#~ msgid "Example 15" -#~ msgstr "Ejemplo 15" - -#~ msgid "Example 16" -#~ msgstr "Ejemplo 16" - -#~ msgid "Example 17" -#~ msgstr "Ejemplo 17" - -#~ msgid "" -#~ "lines `3~4` sets the start vertices to be from the fisrt subway line and " -#~ "the ending vertices to be from the second subway line" -#~ msgstr "" -#~ "líneas `3~4` establecen los vértices de inicio de la primera línea de " -#~ "metro y los vértices finales de la segunda línea de metro" - -#~ msgid "New proposed functions" -#~ msgstr "Nuevas funciones propuestas" - -#~ msgid "Result columns standarized to: |nksp-result|" -#~ msgstr "Columnas de resultados estandarizadas a: |nksp-result|" - -#~ msgid ":math:`|c|` is the number of circuts in the graph." -#~ msgstr ":math:`|c|` es la cantidad de vertices del grafo." - -#, fuzzy -#~ msgid "Update the cost and reverse_cost values." -#~ msgstr "No dirigido, con costo y costo inverso" - -#, fuzzy -#~ msgid "Insert the intersections as new vertices." -#~ msgstr "Insertar las intersecciones como nuevos vértices." - -#~ msgid ":doc:`pgr_findCloseEdges`" -#~ msgstr ":doc:`pgr_findCloseEdges`" diff --git a/locale/ja/LC_MESSAGES/pgrouting_doc_strings.po b/locale/ja/LC_MESSAGES/pgrouting_doc_strings.po index 9af5291acc7..24b264d5dc4 100644 --- a/locale/ja/LC_MESSAGES/pgrouting_doc_strings.po +++ b/locale/ja/LC_MESSAGES/pgrouting_doc_strings.po @@ -18637,8 +18637,3 @@ msgid "pgr_withPointsvia is pgr_dijkstraVia **with points**" msgstr "" #, fuzzy -#~ msgid "(Alphabetical order)" -#~ msgstr "個人(アルファベット順)" - -#~ msgid "Prerequisites" -#~ msgstr "前提条件" diff --git a/locale/ko/LC_MESSAGES/pgrouting_doc_strings.po b/locale/ko/LC_MESSAGES/pgrouting_doc_strings.po index 42d316c19fb..f31fa6000c9 100644 --- a/locale/ko/LC_MESSAGES/pgrouting_doc_strings.po +++ b/locale/ko/LC_MESSAGES/pgrouting_doc_strings.po @@ -18606,30 +18606,3 @@ msgid "pgr_withPointsvia is pgr_dijkstraVia **with points**" msgstr "" #, fuzzy -#~ msgid "Post processing" -#~ msgstr "포스트 프로세싱" - -#~ msgid ":doc:`pgr_alphaShape` - Alpha shape computation" -#~ msgstr ":doc:`pgr_alphaShape` - 알파 셰이프 계산" - -#~ msgid ":doc:`pgr_findCloseEdges`" -#~ msgstr ":doc:`pgr_findCloseEdges`" - -#, fuzzy -#~ msgid "``pgr_createTopology`` - Deprecated since v3.8.0" -#~ msgstr ":doc:`pgr_analyzeGraph`" - -#, fuzzy -#~ msgid "``pgr_createVerticesTable`` - Deprecated since 3.8.0" -#~ msgstr ":doc:`pgr_analyzeGraph`" - -#, fuzzy -#~ msgid "``pgr_analyzeGraph`` -- Deprecated since 3.8.0" -#~ msgstr ":doc:`pgr_analyzeGraph`" - -#~ msgid ":doc:`pgr_analyzeOneWay`" -#~ msgstr ":doc:`pgr_analyzeOneWay`" - -#, fuzzy -#~ msgid "``pgr_analyzeOneWay`` - Deprecated since 3.8.0" -#~ msgstr ":doc:`pgr_analyzeGraph`" diff --git a/locale/pot/pgrouting_doc_strings.pot b/locale/pot/pgrouting_doc_strings.pot index 3c8b1ee0b67..6b63fd46973 100644 --- a/locale/pot/pgrouting_doc_strings.pot +++ b/locale/pot/pgrouting_doc_strings.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: pgRouting v4.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-29 15:26+0000\n" +"POT-Creation-Date: 2025-05-19 19:25+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -328,7 +328,7 @@ msgstr "" msgid "When points are also given as input:" msgstr "" -msgid ":doc:`pgr_trsp` - Vertex - Vertex routing with restrictions." +msgid ":doc:`pgr_trsp` - Routing with restrictions." msgstr "" msgid ":doc:`pgr_trspVia` - Via Vertices routing with restrictions." @@ -340,9 +340,6 @@ msgstr "" msgid ":doc:`pgr_trspVia_withPoints` - Via Vertex/point routing with restrictions." msgstr "" -msgid "Read the :doc:`migration` about how to migrate from the deprecated TRSP functionality to the new signatures or replacement functions." -msgstr "" - msgid "Possible server crash" msgstr "" @@ -3451,19 +3448,7 @@ 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_nodeNetwork` - to create nodes to a not noded edge table." -msgstr "" - -msgid ":doc:`pgr_trsp` - Turn Restriction Shortest Path (TRSP)" -msgstr "" - -msgid "Utilities" +msgid ":doc:`utilities-family`" msgstr "" msgid ":doc:`pgr_extractVertices` - Extracts vertex information based on the edge table information." @@ -3643,6 +3628,9 @@ msgstr "" msgid "`#2827 `__: pgr_createVerticesTable" msgstr "" +msgid "`#2886 `__: pgr_nodeNetwork" +msgstr "" + msgid "Removal of SQL deprecated internal functions" msgstr "" @@ -3799,7 +3787,16 @@ msgstr "" msgid "Migration of ``pgr_alphaShape``" msgstr "" -msgid "Deprecated in `v3.8.0 `__ Removed from the repostory in `v3.8.0 `__" +msgid "Deprecated" +msgstr "" + +msgid "`v3.8.0 `__" +msgstr "" + +msgid "Removed" +msgstr "" + +msgid "`v4.0.0 `__" msgstr "" msgid "**Before Deprecation:** The following was calculated:" @@ -3826,10 +3823,19 @@ msgstr "" msgid "Other PostGIS options are * `ST_ConvexHull `__ * `ST_ConcaveHull `__" msgstr "" -msgid "Migration of ``pgr_createTopology``" +msgid "Migration of ``pgr_nodeNetwork``" +msgstr "" + +msgid "**Before Deprecation:** A table with `_nodded` was created. with split edges." +msgstr "" + +msgid "**Migration**" +msgstr "" + +msgid "Use :doc:`pgr_separateTouching` and/or use :doc:`pgr_separateCrossing`" msgstr "" -msgid "Starting from `v3.8.0 `__" +msgid "Migration of ``pgr_createTopology``" msgstr "" msgid "A table with `_vertices_pgr` was created." @@ -4507,18 +4513,9 @@ msgstr "" msgid "Signature:" msgstr "" -msgid "Deprecated" -msgstr "" - msgid "`v3.4.0 `__" msgstr "" -msgid "Removed" -msgstr "" - -msgid "`v4.0.0 `__" -msgstr "" - msgid ":doc:`pgr_dijkstra`" msgstr "" @@ -11146,147 +11143,6 @@ msgstr "" msgid "Minimum Cost Maximum Flow possible from the source(s) to the target(s)" msgstr "" -msgid "``pgr_nodeNetwork``" -msgstr "" - -msgid "``pgr_nodeNetwork`` - Nodes an network edge table." -msgstr "" - -msgid "Author" -msgstr "" - -msgid "Nicolas Ribot" -msgstr "" - -msgid "Copyright" -msgstr "" - -msgid "Nicolas Ribot, The source code is released under the MIT-X license." -msgstr "" - -msgid "The function reads edges from a not \"noded\" network table and writes the \"noded\" edges into a new table." -msgstr "" - -msgid "Not checking and not creating indexes." -msgstr "" - -msgid "Using ``pgr_separateTouching`` and ``pgr_separateCrossing``." -msgstr "" - -msgid "Created table with ``BIGINT``." -msgstr "" - -msgid "A common problem associated with bringing GIS data into pgRouting is the fact that the data is often not \"noded\" correctly. This will create invalid topologies, which will result in routes that are incorrect." -msgstr "" - -msgid "What we mean by \"noded\" is that at every intersection in the road network all the edges will be broken into separate road segments. There are cases like an over-pass and under-pass intersection where you can not traverse from the over-pass to the under-pass, but this function does not have the ability to detect and accommodate those situations." -msgstr "" - -msgid "This function reads the ``edge_table`` table, that has a primary key column ``id`` and geometry column named ``the_geom`` and intersect all the segments in it against all the other segments and then creates a table ``edge_table_noded``. It uses the ``tolerance`` for deciding that multiple nodes within the tolerance are considered the same node." -msgstr "" - -msgid "edge_table" -msgstr "" - -msgid "``text`` Network table name. (may contain the schema name as well)" -msgstr "" - -msgid "tolerance" -msgstr "" - -msgid "``float8`` tolerance for coincident points (in projection unit)dd" -msgstr "" - -msgid "id" -msgstr "" - -msgid "``text`` Primary key column name of the network table. Default value is ``id``." -msgstr "" - -msgid "the_geom" -msgstr "" - -msgid "``text`` Geometry column name of the network table. Default value is ``the_geom``." -msgstr "" - -msgid "table_ending" -msgstr "" - -msgid "``text`` Suffix for the new table's. Default value is ``noded``." -msgstr "" - -msgid "The output table will have for ``edge_table_noded``" -msgstr "" - -msgid "``bigint`` Unique identifier for the table" -msgstr "" - -msgid "old_id" -msgstr "" - -msgid "``bigint`` Identifier of the edge in original table" -msgstr "" - -msgid "sub_id" -msgstr "" - -msgid "``integer`` Segment number of the original edge" -msgstr "" - -msgid "source" -msgstr "" - -msgid "``bigint`` Empty source column" -msgstr "" - -msgid "target" -msgstr "" - -msgid "``bigint`` Empty target column" -msgstr "" - -msgid "the geom" -msgstr "" - -msgid "``geometry`` Geometry column of the noded network" -msgstr "" - -msgid "Create the topology for the data in :doc:`sampledata`" -msgstr "" - -msgid "The analysis tell us that the network has a gap and an intersection." -msgstr "" - -msgid "Storing the intersections." -msgstr "" - -msgid "Calling ``pgr_nodeNetwork``." -msgstr "" - -msgid "Inspecting the generated table, we can see that edges 13 and 18 have been segmented." -msgstr "" - -msgid "Add new segments to the edges table." -msgstr "" - -msgid "Insert the intersection as new vertices." -msgstr "" - -msgid "Delete original edge." -msgstr "" - -msgid "Update the vertex topology" -msgstr "" - -msgid "Store the deadends" -msgstr "" - -msgid "Inspecting the generated table, we can see that edge 14 has been segmented." -msgstr "" - -msgid ":doc:`topology-functions` for an overview of a topology for routing algorithms." -msgstr "" - msgid "``pgr_pickDeliver`` - Experimental" msgstr "" @@ -12898,6 +12754,9 @@ msgstr "" msgid "`#2760 `__: Promoted to official pgr_degree in version 3.8" msgstr "" +msgid "Utilities" +msgstr "" + msgid "`#2772 `__: Promoted to official pgr_extractVertices in version 3.8" msgstr "" @@ -15250,18 +15109,6 @@ msgstr "" msgid "https://www.osgeo.org/service-providers/netlab/" msgstr "" -msgid "Topology - Family of Functions" -msgstr "" - -msgid "The pgRouting's topology of a network represented with a graph in form of two tables: and edge table and a vertex table." -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 "Utility functions" -msgstr "" - msgid "Transformation - Family of functions" msgstr "" @@ -15274,6 +15121,9 @@ msgstr "" msgid "Additionally there are 2 categories under this family" msgstr "" +msgid "Utility functions" +msgstr "" + msgid "Via - Category" msgstr "" diff --git a/locale/zh_Hans/LC_MESSAGES/pgrouting_doc_strings.po b/locale/zh_Hans/LC_MESSAGES/pgrouting_doc_strings.po index 105b2abdd86..d6580567d8e 100644 --- a/locale/zh_Hans/LC_MESSAGES/pgrouting_doc_strings.po +++ b/locale/zh_Hans/LC_MESSAGES/pgrouting_doc_strings.po @@ -19920,948 +19920,3 @@ msgstr "pgr_withPointsDD 是 **带有点** 的 pgr_drivenDistance" msgid "pgr_withPointsvia is pgr_dijkstraVia **with points**" msgstr "pgr_withPointsvia 是 pgr_dijkstraVia **with points** 的版本" -#~ msgid "Allowing the user to:" -#~ msgstr "允许用户:" - -#~ msgid "" -#~ "Decide the order of the contraction algorithms and set the maximum number " -#~ "of times they are to be executed." -#~ msgstr "决定收缩算法的顺序并设置它们要执行的最大次数。" - -#~ msgid "(Alphabetical order)" -#~ msgstr "(按字母顺序排列)" - -#~ msgid "Result columns standarized to: |nksp-result|" -#~ msgstr "结果列标准化为 |nksp-result|" - -#~ msgid "OR EMTPY SET" -#~ msgstr "OR EMTPY SET" - -#~ msgid "is arbitrarly." -#~ msgstr "是任意的。" - -#~ msgid "" -#~ "lines `3~4` sets the start vertices to be from the fisrt subway line and " -#~ "the ending vertices to be from the second subway line" -#~ msgstr "行 `3~4` 设置地铁三号线的起始顶点和地铁二号线的终点顶点" - -#~ msgid "New proposed functions" -#~ msgstr "新的拟议函数" - -#, fuzzy -#~ msgid "Post processing" -#~ msgstr "后期处理" - -#~ msgid ":doc:`pgr_alphaShape` - Alpha shape computation" -#~ msgstr ":doc:`pgr_alphaShape` - Alpha 形状计算" - -#~ msgid "``pgr_alphaShape``" -#~ msgstr "``pgr_alphaShape``" - -#~ msgid "``pgr_alphaShape`` — Polygon part of an alpha shape." -#~ msgstr "``pgr_alphaShape`` — Alpha 形状的多边形部分。" - -#~ msgid "Breaking change on signature" -#~ msgstr "签名的重大更改" - -#~ msgid "**Boost 1.54** & **Boost 1.55** are supported" -#~ msgstr "**Boost 1.54** & **Boost 1.55** 被支持" - -#~ msgid "**Boost 1.56+** is preferable" -#~ msgstr "**Boost 1.56+** 更好" - -#~ msgid "Boost Geometry is stable on Boost 1.56" -#~ msgstr "Boost Geometry 在 Boost 1.56 上保持稳定" - -#~ msgid "Added alpha argument with default 0 (use optimal value)" -#~ msgstr "添加了默认值为 0 的 alpha 参数(使用最佳值)" - -#~ msgid "Support to return multiple outer/inner ring" -#~ msgstr "支持返回多个外/内圈" - -#~ msgid "Renamed from version 1.x" -#~ msgstr "从版本1.X重命名" - -#~ msgid "Returns the polygon part of an alpha shape." -#~ msgstr "返回 alpha 形状的多边形部分。" - -#~ msgid "Input is a *geometry* and returns a *geometry*" -#~ msgstr "输入是*几何图形*并返回*几何图形*" - -#~ msgid "Uses PostGis ST_DelaunyTriangles" -#~ msgstr "使用 PostGis ST_DelaunyTriangles" - -#~ msgid "" -#~ "Instead of using CGAL's definition of `alpha` it use the ``spoon_radius``" -#~ msgstr "它没有使用 CGAL 的`alpha`定义,而是使用 ``spoon_radius``" - -#~ msgid ":math:`spoon\\_radius = \\sqrt alpha`" -#~ msgstr ":math:`spoon\\_radius = \\sqrt alpha`" - -#~ msgid "" -#~ "A Triangle area is considered part of the alpha shape when :math:" -#~ "`circumcenter\\ radius < spoon\\_radius`" -#~ msgstr "" -#~ "三角形的面积被认为是 alpha shape 的一部分,当且仅当 :math:`circumcenter\\ " -#~ "radius < spoon\\_radius`" - -#~ msgid "The ``alpha`` parameter is the **spoon radius**" -#~ msgstr "``alpha`` 参数是 **spoon radius**" - -#~ msgid "" -#~ "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 "" -#~ "passing a geometry collection with spoon radius :math:`1.5` using the " -#~ "return variable ``geom``" -#~ msgstr "" -#~ "传递一个带有 spoon 半径 :math:`1.5` 的几何集合,使用返回变量 \"geom\"" - -#~ msgid "**geometry**" -#~ msgstr "**geometry**" - -#~ msgid "Geometry with at least :math:`3` points" -#~ msgstr "至少包含 :math:`3` 个点的几何形状" - -#~ msgid "``alpha``" -#~ msgstr "``alpha``" - -#~ msgid "The radius of the spoon." -#~ msgstr "spoon的半径。" - -#~ msgid "Return Value" -#~ msgstr "返回值" - -#~ msgid "Kind of geometry" -#~ msgstr "几何类型" - -#~ msgid "GEOMETRY COLLECTION" -#~ msgstr "GEOMETRY COLLECTION" - -#~ msgid "A Geometry collection of Polygons" -#~ msgstr "多边形的几何集合" - -#~ msgid "`ST_ConcaveHull `__" -#~ msgstr "`ST_ConcaveHull `__" - -#, fuzzy -#~ msgid "Update the cost and reverse_cost values." -#~ msgstr "带有cost和 reverse cost的无向图" - -#, fuzzy -#~ msgid "Insert the intersections as new vertices." -#~ msgstr "兴趣点" - -#~ msgid "Disconnected graphs" -#~ 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." -#~ msgstr "" -#~ "在此示例中,组件 :math:`2`由顶点 :math:`\\{2, 4\\}` 组成,并且两个顶点也是" -#~ "死端结果集的一部分。" - -#~ msgid "This graph needs to be connected." -#~ 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." -#~ 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 "获取最近的顶点" - -#~ 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 "" -#~ "使用 :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." -#~ msgstr "" -#~ "``edge``可用于连接组件,利用边 :math:`14` 的``fraction`` 信息来分割连接" -#~ "边。" - -#~ msgid "The following query shows the three ways to connect the components:" -#~ msgstr "以下查询显示了连接组件的三种方式:" - -#~ msgid "Checking components" -#~ msgstr "检查组件" - -#~ msgid "" -#~ "Ignoring the edge that requires further work. The graph is now fully " -#~ "connected as there is only one component." -#~ msgstr "忽略需要进一步工作的边缘。 该图现在已完全连接,因为只有一个组件。" - -#~ msgid "Utilities family" -#~ msgstr "实用工具函数集" - -#~ msgid ":doc:`pgr_findCloseEdges`" -#~ msgstr ":doc:`pgr_findCloseEdges`" - -#~ msgid "Adding split edges" -#~ msgstr "添加分割边" - -#~ msgid "" -#~ "For each pair of crossing edges a process similar to this one must be " -#~ "performed." -#~ 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." -#~ msgstr "" -#~ "插入的列和计算方式取决于应用程序。 例如,如果边具有特征 **名称** ,则将复" -#~ "制该列。" - -#~ msgid "For pgRouting calculations" -#~ msgstr "用于 pgRouting 计算" - -#~ 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 "" -#~ "Capacity information, used in the :doc:`flow-family` functions does not " -#~ "need to change when splitting edges." -#~ msgstr "分割边时,在 :doc:`flow-family` 函数中使用的容量信息不需要改变。" - -#~ 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 "Updating edges topology" -#~ msgstr "更新边拓扑" - -#~ msgid "Removing the surplus edges" -#~ msgstr "去除多余的边" - -#~ 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 "" -#~ "There are other options to do this task, like creating a view, or a " -#~ "materialized view." -#~ msgstr "还有其他选项可以完成此任务,例如创建视图或物化视图。" - -#~ msgid "Updating vertices topology" -#~ msgstr "更新顶点拓扑" - -#~ msgid "" -#~ "To keep the graph consistent, the vertices topology needs to be updated" -#~ msgstr "为了保持图的一致性,需要更新顶点拓扑" - -#~ msgid "Checking for crossing edges" -#~ msgstr "检查交叉边" - -#~ msgid "There are no crossing edges on the graph." -#~ msgstr "图上没有交叉边。" - -#, fuzzy -#~ msgid "" -#~ "pgRouting supplies some functions to create a routing topology and to " -#~ "analyze the topology." -#~ msgstr "pgRouting 提供一些函数来创建路由拓扑并分析拓扑。" - -#~ msgid "Additional functions to create a graph:" -#~ msgstr "创建图表的附加函数:" - -#~ msgid "Additional functions to analyze a graph:" -#~ msgstr "用于分析图表的附加函数:" - -#~ msgid ":doc:`pgr_createTopology` - create a topology based on the geometry." -#~ msgstr ":doc:`pgr_createTopology` - 根据几何形状创建拓扑。" - -#, fuzzy -#~ msgid "``pgr_createTopology`` - Deprecated since v3.8.0" -#~ msgstr "``pgr_analyzeGraph``" - -#~ msgid "" -#~ "``pgr_createTopology`` — Builds a network topology based on the geometry " -#~ "information." -#~ msgstr "``pgr_createTopology`` — 根据几何信息构建网络拓扑。" - -#~ msgid "The function returns:" -#~ msgstr "函数返回:" - -#~ msgid "" -#~ "``OK`` after the network topology has been built and the vertices table " -#~ "created." -#~ msgstr "``OK`` 在网络拓扑建立完成并且顶点表创建后。" - -#~ msgid "``FAIL`` when the network topology was not built due to an error." -#~ msgstr "``FAIL`` 当由于错误原因未能构建网络拓扑时。" - -#~ msgid "pgr_createTopology(edge_table, tolerance, [**options**])" -#~ msgstr "pgr_createTopology(edge_table, tolerance, [**options**])" - -#~ msgid "**options:** ``[the_geom, id, source, target, rows_where, clean]``" -#~ msgstr "**options:** ``[the_geom, id, source, target, rows_where, clean]``" - -#~ msgid "RETURNS ``VARCHAR``" -#~ msgstr "RETURNS ``VARCHAR``" - -#~ msgid "The topology creation function accepts the following parameters:" -#~ msgstr "拓扑创建函数接受以下参数:" - -#~ msgid "" -#~ "``float8`` Snapping tolerance of disconnected edges. (in projection unit)" -#~ msgstr "``float8`` 断开边的捕捉容差。 (以投影单位表示)" - -#~ msgid "" -#~ "``text`` Source column name of the network table. Default value is " -#~ "``source``." -#~ msgstr "``text``网络表的Source列名称。 默认值为``source``。" - -#~ msgid "" -#~ "``text`` Target column name of the network table. Default value is " -#~ "``target``." -#~ msgstr "``text``网络表的Target列名称。 默认值为 ``target``。" - -#~ msgid "rows_where" -#~ msgstr "rows_where" - -#~ msgid "" -#~ "``text`` Condition to SELECT a subset or rows. Default value is ``true`` " -#~ "to indicate all rows that where ``source`` or ``target`` have a null " -#~ "value, otherwise the condition is used." -#~ msgstr "" -#~ "``text`` 用于选择行的条件。默认值为``true`` ,表示选择所有具有空值的 " -#~ "``source``或``target`` 的行,否则将使用指定的条件。" - -#~ msgid "clean" -#~ msgstr "clean" - -#~ msgid "``boolean`` Clean any previous topology. Default value is ``false``." -#~ msgstr "``boolean`` 清除先前的拓扑。默认值为 ``false``。" - -#~ msgid "The ``edge_table`` will be affected" -#~ msgstr "``edge_table`` 将受到影响" - -#~ msgid "The ``source`` column values will change." -#~ msgstr "``source`` 列的值将发生改变。" - -#~ msgid "The ``target`` column values will change." -#~ msgstr "``target`` 列的值将发生改变。" - -#~ msgid "" -#~ "An index will be created, if it doesn't exists, to speed up the process " -#~ "to the following columns:" -#~ msgstr "如果索引不存在,则会创建一个索引,以加快以下列的处理速度:" - -#~ msgid "``the_geom``" -#~ msgstr "``the_geom``" - -#~ msgid "``OK`` after the network topology has been built." -#~ msgstr "``OK`` 在网络拓扑建立完成后。" - -#~ msgid "Creates a vertices table: _vertices_pgr." -#~ msgstr "创建一个顶点表:_vertices_pgr。" - -#~ msgid "Fills ``id`` and ``the_geom`` columns of the vertices table." -#~ msgstr "填充顶点表的 ``id`` 和 ``the_geom`` 列。" - -#~ msgid "" -#~ "Fills the source and target columns of the edge table referencing the " -#~ "``id`` of the vertices table." -#~ msgstr "引用顶点表的 ``id`` 填充边表的 source列和target列。" - -#~ msgid "``FAIL`` when the network topology was not built due to an error:" -#~ msgstr "``FAIL`` 当由于错误原因未能构建网络拓扑时:" - -#~ msgid "" -#~ "A required column of the Network table is not found or is not of the " -#~ "appropriate type." -#~ msgstr "未找到网络表所需的列或该列的类型不正确。" - -#~ msgid "The condition is not well formed." -#~ msgstr "条件尚未形成。" - -#~ msgid "The names of source , target or id are the same." -#~ msgstr "source 、 target 或 id 的名称相同。" - -#~ msgid "The SRID of the geometry could not be determined." -#~ msgstr "无法确定几何图形的 SRID。" - -#~ msgid "The Vertices Table" -#~ msgstr "顶点表" - -#~ msgid "The structure of the vertices table is:" -#~ msgstr "顶点表的结构为:" - -#~ msgid "``bigint`` Identifier of the vertex." -#~ msgstr "``bigint`` 顶点的标识符。" - -#~ msgid "cnt" -#~ msgstr "cnt" - -#~ 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`` 指示顶点可能有问题。" - -#~ msgid "ein" -#~ msgstr "ein" - -#, fuzzy -#~ msgid "" -#~ "``integer`` Number of vertices in the edge_table that reference this " -#~ "vertex AS incoming." -#~ msgstr "``integer`` edge_table 中引用该顶点作为传入的顶点数。" - -#~ msgid "eout" -#~ msgstr "eout" - -#, fuzzy -#~ msgid "" -#~ "``integer`` Number of vertices in the edge_table that reference this " -#~ "vertex AS outgoing." -#~ msgstr "``integer`` Edge_table 中引用该顶点作为传出的顶点数。" - -#~ msgid "``geometry`` Point geometry of the vertex." -#~ msgstr "``geometry`` 顶点的点几何。" - -#~ msgid "Usage when the edge table's columns MATCH the default values:" -#~ msgstr "当边表的列与默认值匹配时的用法:" - -#~ msgid "The simplest way to use pgr_createTopology is:" -#~ msgstr "使用 pgr_createTopology 最简单的方法是:" - -#~ msgid "" -#~ "When the arguments are given in the order described in the parameters:" -#~ msgstr "当参数按照参数中描述的顺序给出时:" - -#~ msgid "We get the sameresult as the simplest way to use the function." -#~ msgstr "我们得到的结果与使用该函数的最简单方法相同。" - -#~ msgid "" -#~ "An error would occur when the arguments are not given in the appropriate " -#~ "order: In this example, the column ``id`` of the table ``ege_table`` 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 "" -#~ "当参数未按适当顺序给出时会导致错误:在此示例中,表 ``ege_table`` 的列" -#~ "``id``被错误地传递给函数作为几何列,而几何列 ``the_geom`` 被错误地传递给函" -#~ "数作为 id 列。" - -#~ msgid "When using the named notation" -#~ msgstr "当使用命名符号时" - -#~ msgid "" -#~ "Parameters defined with a default value can be omitted, as long as the " -#~ "value matches the default And The order of the parameters would not " -#~ "matter." -#~ msgstr "带有默认值的参数可以省略,只要其值与默认值一致即可。" - -#~ msgid "Selecting rows using rows_where parameter" -#~ msgstr "使用 rows_where 参数选择行" - -#~ msgid "Selecting rows based on the id." -#~ msgstr "根据 id 选择行。" - -#~ msgid "" -#~ "Selecting the rows where the geometry is near the geometry of row with " -#~ "``id = 5``." -#~ msgstr "选择与具有 ``id = 5`` 的行的几何图形接近的行。" - -#~ 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 "Usage when the edge table's columns DO NOT MATCH the default values:" -#~ msgstr "当边表的列与默认值不匹配时的用法:" - -#~ msgid "For the following table" -#~ msgstr "对于下表" - -#~ msgid "Using positional notation:" -#~ msgstr "使用位置符号:" - -#~ msgid "" -#~ "The arguments need to be given in the order described in the parameters." -#~ msgstr "参数需要按照参数中描述的顺序给出。" - -#~ msgid "" -#~ "Note that this example uses clean flag. So it recreates the whole " -#~ "vertices table." -#~ msgstr "请注意,此示例使用 clean 标志。 所以它重新创建了整个顶点表。" - -#~ msgid "" -#~ "An error would occur when the arguments are not given in the appropiriate " -#~ "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 "" -#~ "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. The order of the parameters do not matter:" -#~ msgstr "" -#~ "在这种情况下,省略参数会产生错误,因为列名的默认值与表中的列名不一致。参数" -#~ "的顺序并不重要:" - -#~ msgid "Based on id:" -#~ msgstr "根据 id:" - -#~ msgid "" -#~ "An alternate method to create a routing topology use :doc:" -#~ "`pgr_extractVertices`" -#~ msgstr "使用 :doc:`pgr_extractVertices` 创建路由拓扑的替代方法" - -#~ msgid "With full output" -#~ msgstr "带有完整输出" - -#~ msgid "" -#~ "This example start a clean topology, with 5 edges, and then its " -#~ "incremented to the rest of the edges." -#~ msgstr "该示例以 5 条边的简洁拓扑结构为起点,然后递增到其余的边。" - -#~ msgid "" -#~ ":doc:`pgr_createVerticesTable` - reconstruct the vertices table based on " -#~ "the source and target information." -#~ msgstr ":doc:`pgr_createVerticesTable` - 根据源和目标信息重建顶点表。" - -#, fuzzy -#~ msgid "``pgr_createVerticesTable`` - Deprecated since 3.8.0" -#~ msgstr "``pgr_analyzeGraph``" - -#~ msgid "" -#~ "``pgr_createVerticesTable`` — Reconstructs the vertices table based on " -#~ "the source and target information." -#~ msgstr "``pgr_createVerticesTable`` — 根据 source和target信息重建顶点表。" - -#~ msgid "``OK`` after the vertices table has been reconstructed." -#~ msgstr "``OK`` 重建顶点表后。" - -#~ msgid "" -#~ "``FAIL`` when the vertices table was not reconstructed due to an error." -#~ msgstr "``FAIL`` 当由于错误而未重建顶点表时。" - -#~ msgid "" -#~ "pgr_createVerticesTable(edge_table, [``the_geom, source, target, " -#~ "rows_where``])" -#~ msgstr "" -#~ "pgr_createVerticesTable(edge_table, [``the_geom, source, target, " -#~ "rows_where``])" - -#~ msgid "" -#~ "The reconstruction of the vertices table function accepts the following " -#~ "parameters:" -#~ msgstr "顶点表重建函数接受以下参数:" - -#~ msgid "" -#~ "``text`` Condition to SELECT a subset or rows. Default value is ``true`` " -#~ "to indicate all rows." -#~ msgstr "``text`` 用于选择行的条件。默认值为 ``true`` 表示选择所有行。" - -#~ msgid "" -#~ "Fills ``id`` and ``the_geom`` columns of the vertices table based on the " -#~ "source and target columns of the edge table." -#~ msgstr "" -#~ "根据边表的源点(source)和目标点(target)列,填充顶点表的 ``id`` 和" -#~ "``the_geom`` 列。" - -#~ msgid "The names of source, target are the same." -#~ msgstr "source, target的名称相同。" - -#~ msgid "" -#~ "``integer`` Number of vertices in the edge_table that reference this " -#~ "vertex as incoming." -#~ msgstr "``integer`` edge_table 中引用该顶点作为传入的顶点数。" - -#~ msgid "" -#~ "``integer`` Number of vertices in the edge_table that reference this " -#~ "vertex as outgoing." -#~ msgstr "``integer`` Edge_table 中引用该顶点作为传出的顶点数。" - -#~ msgid "The simplest way to use pgr_createVerticesTable" -#~ msgstr "使用 pgr_createVerticesTable 最简单的方法" - -#~ msgid "We get the same result as the simplest way to use the function." -#~ msgstr "我们得到与使用该函数的最简单方法相同的结果。" - -#~ msgid "" -#~ "An error would occur when the arguments are not given in the appropriate " -#~ "order: In this example, the column source column ``source`` 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 source " -#~ "column." -#~ msgstr "" -#~ "当参数没有按照适当的顺序提供时,将会发生错误:在这个例子中,表 " -#~ "``mytable`` 的源列 ``source`` 被错误地传递给函数作为几何列,而几何列" -#~ "``the_geom`` 被错误地传递给函数作为源列。" - -#~ msgid "The order of the parameters do not matter:" -#~ msgstr "参数的顺序并不重要:" - -#~ msgid "Example 4" -#~ msgstr "示例 4" - -#~ msgid "Using a different ordering" -#~ msgstr "使用不同的排序" - -#~ msgid "Example 5" -#~ msgstr "示例 5" - -#~ msgid "" -#~ "Parameters defined with a default value can be omitted, as long as the " -#~ "value matches the default:" -#~ msgstr "定义有默认值的参数可以省略,只要该值与默认值匹配即可:" - -#~ msgid "Example 6" -#~ msgstr "例 6" - -#~ msgid "Example 7" -#~ msgstr "示例 7" - -#~ msgid "" -#~ "Selecting the rows where the geometry is near the geometry of row with " -#~ "``id`` =5 ." -#~ msgstr "选择几何与具有 ``id`` =5的行的几何接近的行。" - -#~ msgid "Using the following table" -#~ msgstr "使用下表" - -#~ msgid "Example 9" -#~ msgstr "示例 9" - -#~ msgid "" -#~ "The arguments need to be given in the order described in the parameters:" -#~ msgstr "参数需要按照参数中描述的顺序给出:" - -#~ msgid "" -#~ "An error would occur when the arguments are not given in the appropriate " -#~ "order: In this example, the column ``src`` 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 source column." -#~ msgstr "" -#~ "当参数没有按照适当的顺序提供时,会发生错误。在这个例子中,表 ``mytable`` " -#~ "的``src`` 列被错误地传递给函数作为几何列,而几何列 ``mygeom`` 被错误地传递" -#~ "给函数作为源列。" - -#~ msgid "Example 10" -#~ msgstr "示例 10" - -#~ msgid "Example 11" -#~ msgstr "示例 11" - -#~ 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 12" -#~ msgstr "示例 12" - -#~ msgid "Selecting rows based on the gid. (positional notation)" -#~ msgstr "根据 gid 选择行(使用位置表示法)" - -#~ msgid "Example 13" -#~ msgstr "示例 13" - -#~ msgid "Selecting rows based on the gid. (named notation)" -#~ msgstr "根据 gid 选择行。(使用命名表示法)" - -#~ msgid "Example 14" -#~ msgstr "示例 14" - -#~ msgid "" -#~ "Selecting the rows where the geometry is near the geometry of row with " -#~ "``gid`` = 5." -#~ msgstr "选择几何与具有 ``gid`` =5的行的几何接近的行。" - -#~ msgid "Example 15" -#~ msgstr "示例 15" - -#~ msgid "Example 16" -#~ msgstr "示例 16" - -#~ msgid "Example 17" -#~ msgstr "示例 17" - -#~ msgid "" -#~ ":doc:`pgr_analyzeGraph` - to analyze the edges and vertices of the edge " -#~ "table." -#~ msgstr ":doc:`pgr_analyzeGraph` - 分析边表的边和顶点。" - -#~ msgid ":doc:`pgr_analyzeOneWay` - to analyze directionality of the edges." -#~ msgstr ":doc:`pgr_analyzeOneWay` - 分析边的方向性。" - -#~ msgid "pgr_trspviavertices(text,anyarray,boolean,boolean,text)" -#~ msgstr "pgr_trspviavertices(text,anyarray,boolean,boolean,text)" - -#, fuzzy -#~ msgid "``pgr_analyzeGraph`` -- Deprecated since 3.8.0" -#~ msgstr "``pgr_analyzeGraph``" - -#~ msgid "``pgr_analyzeGraph`` — Analyzes the network topology." -#~ msgstr "``pgr_analyzeGraph`` —分析网络拓扑。" - -#~ msgid "``OK`` after the analysis has finished." -#~ msgstr "``OK`` 分析完成后。" - -#~ msgid "``FAIL`` when the analysis was not completed due to an error." -#~ msgstr "``FAIL`` 当分析因错误而未完成时。" - -#~ msgid "pgr_analyzeGraph(**edge_table**, **tolerance**, [**options**])" -#~ msgstr "pgr_analyzeGraph(**edge_table**, **tolerance**, [**options**])" - -#~ msgid "**options:** ``[the_geom, id, source, target, rows_where]``" -#~ msgstr "**options:** ``[the_geom, id, source, target, rows_where]``" - -#~ 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 "" -#~ "待分析的边表必须包含源列和目标列,其中填充了线段顶点的id以及对应的存储顶点" -#~ "信息的顶点表_vertices_pgr。" - -#~ msgid "The analyze graph function accepts the following parameters:" -#~ msgstr "分析图函数接受以下参数:" - -#~ msgid "" -#~ "``text`` Condition to select a subset or rows. Default value is ``true`` " -#~ "to indicate all rows." -#~ msgstr "" -#~ "``text`` 用于选择子集或行的条件。默认值为``true`` ,表示选择所有行。" - -#~ msgid "Uses the vertices table: _vertices_pgr." -#~ msgstr "使用这个顶点表:_vertices_pgr。" - -#~ msgid "" -#~ "Fills completely the ``cnt`` and ``chk`` columns of the vertices table." -#~ msgstr "完全填充顶点表的 ``cnt`` 和``chk`` 列。" - -#~ msgid "" -#~ "Returns the analysis of the section of the network defined by " -#~ "``rows_where``" -#~ msgstr "返回由 ``rows_where`` 定义的网络部分的分析结果" - -#~ msgid "The vertices table is not found." -#~ msgstr "未找到顶点表。" - -#~ msgid "The simplest way to use pgr_analyzeGraph is:" -#~ msgstr "使用 pgr_analyzeGraph 最简单的方法是:" - -#~ msgid "Arguments are given in the order described in the parameters:" -#~ msgstr "参数按照参数中描述的顺序给出:" - -#~ msgid "An error would occur when" -#~ msgstr "错误将会发生,当" - -#~ msgid "the arguments are not given in the appropriate order:" -#~ 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." -#~ msgstr "" -#~ "在此示例中,表 ``mytable`` 的列 ``id`` 作为几何列传递给函数,几何列 " -#~ "``the_geom`` 作为 id 列传递给函数。" - -#~ msgid "" -#~ "Selecting rows based on the id. Displays the analysis a the section of " -#~ "the network." -#~ msgstr "根据 id 选择行。 显示网络部分的分析。" - -#~ msgid "" -#~ "Selecting the rows where the geometry is near the geometry of row with " -#~ "``id`` = 5" -#~ msgstr "选择几何形状接近 ``id`` = 5 的几何形状的行" - -#~ 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 "" -#~ "如果未按适当的顺序给出参数,则会发生错误:在此示例中,表 ``mytable`` 的列 " -#~ "``gid``作为几何列传递给函数,几何列 ``mygeom`` 作为 id 列传递给函数 。" - -#~ msgid "" -#~ "Selecting the rows WHERE the geometry is near the geometry of row with " -#~ "``id`` =5 ." -#~ msgstr "选择那些几何与具有 ``id`` = 5的行的几何接近的行。" - -#~ msgid "" -#~ "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 ":doc:`pgr_analyzeOneWay`" -#~ msgstr ":doc:`pgr_analyzeOneWay`" - -#~ msgid ":doc:`pgr_nodeNetwork` to create nodes to a not noded edge table." -#~ msgstr ":doc:`pgr_nodeNetwork` 创建节点到非节点边表。" - -#, fuzzy -#~ msgid "``pgr_analyzeOneWay`` - Deprecated since 3.8.0" -#~ msgstr "``pgr_analyzeGraph``" - -#~ msgid "" -#~ "``pgr_analyzeOneWay`` — Analyzes oneway Sstreets and identifies flipped " -#~ "segments." -#~ msgstr "``pgr_analyzeOneWay`` — 分析单向街道并识别翻转路段。" - -#~ 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 "" -#~ "单向路段的分析非常简单,但可以成为一种强大的工具,可以识别由于错误地设置路" -#~ "段方向而产生的一些潜在问题。 如果一个节点有从该节点出口的边并且没有边进入" -#~ "该节点,则该节点是`source` 。 相反,如果所有边都进入该节点但没有一条边退出" -#~ "该节点,则该节点是`sink`。 对于`source` 类型节点来说,逻辑上不可能存在,因" -#~ "为如果没有车辆进入该节点,则任何车辆都无法离开该节点。 同样,如果您有一个" -#~ "`sink`节点,那么您将在该节点上堆积无限数量的车辆,因为您可以进入它但不能离" -#~ "开它。" - -#~ 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`节点。" - -#~ 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 "" -#~ "因此,通过计算进入和退出每个节点的边数,我们可以识别 `source` 节点和 " -#~ "`sink` 节点,以便您可以查看网络的这些区域以进行修复和/或将问题报告给数据供" -#~ "应商。" - -#~ 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 "**options:** ``[oneway, source, target, two_way_if_null]``" -#~ msgstr "**options:** ``[oneway, source, target, two_way_if_null]``" - -#~ msgid "s_in_rules" -#~ msgstr "s_in_rules" - -#~ msgid "``text[]`` source node **in** rules" -#~ msgstr "``text[]`` source节点 **输入** 规则" - -#~ msgid "s_out_rules" -#~ msgstr "s_out_rules" - -#~ msgid "``text[]`` source node **out** rules" -#~ msgstr "``text[]`` source节点 **输出** 规则" - -#~ msgid "t_in_rules" -#~ msgstr "t_in_rules" - -#~ msgid "``text[]`` target node **in** rules" -#~ msgstr "``text[]`` target节点 **输入** 规则" - -#~ msgid "t_out_rules" -#~ msgstr "t_out_rules" - -#~ msgid "``text[]`` target node **out** rules" -#~ msgstr "``text[]`` target节点 **输出** 规则" - -#~ msgid "oneway" -#~ msgstr "oneway" - -#~ 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" - -#~ msgid "" -#~ "``boolean`` flag to treat oneway NULL values as bi-directional. Default " -#~ "value is ``true``." -#~ msgstr "``boolean`` 将单向 NULL 值视为双向的标志。 默认值为 ``true``。" - -#~ msgid "" -#~ "Fills completely the ``ein`` and ``eout`` columns of the vertices table." -#~ msgstr "完全填充顶点表的 ``ein`` 和 ``eout`` 列。" - -#~ msgid "The names of source , target or oneway are the same." -#~ msgstr "source 、 target 或 oneway 的名称相同。" - -#~ 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``。" diff --git a/pgtap/topology/nodeNetwork/edge_cases.pg b/pgtap/topology/nodeNetwork/edge_cases.pg deleted file mode 100644 index 90c0139fed0..00000000000 --- a/pgtap/topology/nodeNetwork/edge_cases.pg +++ /dev/null @@ -1,148 +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; - --- node the network --- create 4x4 grid of overlapping lines horizontal and vertical --- set the even numbered ones with dir='FT' and the odd ones 'TF' - -UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost); -SELECT plan(28); - -SET client_min_messages = WARNING; -CREATE TABLE original ( - id serial NOT NULL primary key, - dir text -); - -SELECT addgeometrycolumn('original', 'the_geom', ST_SRID('POINT(0 0)'::geometry) , 'LINESTRING', 2); - --- creating the grid geometry -INSERT INTO original (dir, the_geom) - SELECT case when s1%2=0 THEN 'FT' ELSE 'TF' END, st_astext(st_makeline(st_makepoint(1,s1), st_makepoint(6,s1))) FROM (SELECT generate_series(2,5) AS s1) AS foo - UNION ALL - SELECT case when s1%2=0 THEN 'FT' ELSE 'TF' END, st_astext(st_makeline(st_makepoint(s1,1), st_makepoint(s1,6))) FROM (select generate_series(2,5) AS s1) AS foo; - - -SELECT is((SELECT count(*)::INTEGER FROM original), 8, 'we have 8 original edges'); -SELECT pgr_nodenetwork('original', 0.000001); -SELECT is((SELECT count(*)::INTEGER FROM original_noded), 40, 'Now we have 40 edges'); -PREPARE q1 AS -SELECT old_id, count(*) FROM original_noded GROUP BY old_id ORDER BY old_id; -prepare vals1 AS -VALUES (1,5),(2,5),(3,5),(4,5),(5,5),(6,5),(7,5),(8,5); -SELECT set_eq('q1', 'vals1', - 'For each original edge we have now 5 subedges'); - - -SELECT is((SELECT count(*)::INTEGER FROM original_noded WHERE source is NULL), 40, '40 edges are missing source'); -SELECT is((SELECT count(*)::INTEGER FROM original_noded WHERE target is NULL), 40, '40 edges are missing target'); -SELECT hasnt_table('original_noded_vertices_pgr', 'original_noded_vertices_pgr table does not exist'); - -SELECT *, - NULL::INTEGER AS cnt, NULL::INTEGER AS chk, - NULL::INTEGER AS ein, NULL::INTEGER AS eout -INTO original_noded_vertices_pgr -FROM pgr_extractVertices('SELECT id, the_geom AS geom FROM original_noded ORDER BY id'); - --- set the source information -UPDATE original_noded AS e -SET source = v.id -FROM original_noded_vertices_pgr AS v -WHERE ST_StartPoint(e.the_geom) = v.geom; - --- set the target information -UPDATE original_noded AS e -SET target = v.id -FROM original_noded_vertices_pgr AS v -WHERE ST_EndPoint(e.the_geom) = v.geom; - -SELECT has_table('original_noded_vertices_pgr', 'original_noded_vertices_pgr table now exist'); -SELECT is((SELECT count(*)::INTEGER FROM original_noded WHERE source is NULL), 0, '0 edges are missing source'); -SELECT is((SELECT count(*)::INTEGER FROM original_noded WHERE target is NULL), 0, '0 edges are missing target'); -SELECT is((SELECT count(*)::INTEGER FROM original_noded_vertices_pgr), 32, 'Now we have 32 vertices'); -SELECT is((SELECT count(*)::INTEGER FROM original_noded_vertices_pgr WHERE cnt is NULL), 32, '32 vertices are missing cnt'); -SELECT is((SELECT count(*)::INTEGER FROM original_noded_vertices_pgr WHERE chk is NULL), 32, '32 vertices are missing chk'); -SELECT is((SELECT count(*)::INTEGER FROM original_noded_vertices_pgr WHERE ein is NULL), 32, '32 vertices are missing ein'); -SELECT is((SELECT count(*)::INTEGER FROM original_noded_vertices_pgr WHERE eout is NULL), 32, '32 vertices are missing eout'); - - --- create a new TABLE and merge attribute FROM original and noded --- INTO TABLE noded - -create TABLE noded ( - gid serial NOT NULL primary key, - id INTEGER, - dir text, - source INTEGER, - target INTEGER, - cost FLOAT, - reverse_cost FLOAT - ); - -SELECT addgeometrycolumn('noded', 'the_geom', ST_SRID('POINT(0 0)'::geometry) , 'LINESTRING', 2); - -INSERT INTO noded(id, dir, the_geom) - SELECT a.old_id, b.dir, a.the_geom - FROM original_noded a, original b - WHERE a.old_id=b.id; - -SELECT is((SELECT count(*)::INTEGER FROM noded), 40, 'Now we have 40 edges'); -SELECT is( -(SELECT DISTINCT count(*)::INTEGER FROM original GROUP BY dir), - 4, '4 is the count of different TF and FT in original') ; -SELECT is( -(SELECT DISTINCT count(*)::INTEGER FROM noded GROUP BY dir), - 20, '20 is the count of different TF and FT in noded (4*5)') ; - - -SELECT is((SELECT count(*)::INTEGER FROM noded WHERE source is NULL), 40, '40 edges are missing source'); -SELECT is((SELECT count(*)::INTEGER FROM noded WHERE target is NULL), 40, '40 edges are missing target'); -SELECT hasnt_table('noded_vertices_pgr', 'noded_vertices_pgr table does not exist'); - -SELECT *, - NULL::INTEGER AS cnt, NULL::INTEGER AS chk, - NULL::INTEGER AS ein, NULL::INTEGER AS eout -INTO noded_vertices_pgr -FROM pgr_extractVertices('SELECT id, the_geom AS geom FROM noded ORDER BY id'); - --- set the source information -UPDATE noded AS e -SET source = v.id -FROM noded_vertices_pgr AS v -WHERE ST_StartPoint(e.the_geom) = v.geom; - --- set the target information -UPDATE noded AS e -SET target = v.id -FROM noded_vertices_pgr AS v -WHERE ST_EndPoint(e.the_geom) = v.geom; - -SELECT has_table('noded_vertices_pgr', 'noded_vertices_pgr table now exist'); -SELECT is((SELECT count(*)::INTEGER FROM noded WHERE source is NULL), 0, '0 edges are missing source'); -SELECT is((SELECT count(*)::INTEGER FROM noded WHERE target is NULL), 0, '0 edges are missing target'); -SELECT is((SELECT count(*)::INTEGER FROM noded_vertices_pgr), 32, 'Now we have 32 vertices'); -SELECT is((SELECT count(*)::INTEGER FROM noded_vertices_pgr WHERE cnt is NULL), 32, '32 vertices are missing cnt'); -SELECT is((SELECT count(*)::INTEGER FROM noded_vertices_pgr WHERE chk is NULL), 32, '32 vertices are missing chk'); -SELECT is((SELECT count(*)::INTEGER FROM noded_vertices_pgr WHERE ein is NULL), 32, '32 vertices are missing ein'); -SELECT is((SELECT count(*)::INTEGER FROM noded_vertices_pgr WHERE eout is NULL), 32, '32 vertices are missing eout'); - -SELECT finish(); -ROLLBACK; diff --git a/pgtap/topology/nodeNetwork/issue_1009.pg b/pgtap/topology/nodeNetwork/issue_1009.pg deleted file mode 100644 index 6662e615889..00000000000 --- a/pgtap/topology/nodeNetwork/issue_1009.pg +++ /dev/null @@ -1,83 +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; - --- node the network - -UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost); -SELECT plan(14); - -SET client_min_messages = WARNING; -CREATE TABLE "test_graph" (gid serial, - "id" numeric(10,0), - "nom" varchar(80) -); -ALTER TABLE "test_graph" ADD PRIMARY KEY (gid); -SELECT AddGeometryColumn('','test_graph','geom','25831','LINESTRING',2); - - -INSERT INTO "test_graph" ("id","nom",geom) VALUES ('3',NULL,'0102000020E764000008000000F281433F6B731A41C84583B869855141592275DD14731A41C89C7A7D73855141B3E5D70CD3721A4164B5681680855141BFC2A67BBE721A419A3856BE8585514137F861B0A1721A41D72C1EC58F855141D87C445995721A413DC21EB6968551416D2458939D721A41DFF4EFE89D85514137F861B0A1721A411578DD90A3855141'); -INSERT INTO "test_graph" ("id","nom",geom) VALUES ('5',NULL,'0102000020E76400000900000065D6DA5A51701A410D5914A88B855141DA9E3C70E5701A4106E8394987855141ADE2BBDC85711A415E9B857C85855141C32F009B0D721A416B2643758485514150B2FF8D78721A41A8C313B784855141BFC2A67BBE721A419A3856BE85855141930626E85E731A4135FA4C92888551414E90077728741A418D04908A90855141A5E6108797741A41F399907B97855141'); - - -SELECT is((SELECT count(*)::INTEGER FROM test_graph), 2, 'we have 2 test_graph edges'); -select pgr_nodenetwork ('test_Graph', 0.01, 'gid', 'geom'); -SELECT is((SELECT count(*)::INTEGER FROM test_graph_noded), 4, 'Now we have 4 edges'); - - -PREPARE q1 AS -SELECT old_id, count(*) FROM test_graph_noded GROUP BY old_id ORDER BY old_id; -prepare vals1 AS -VALUES (1,2),(2,2); -SELECT set_eq('q1', 'vals1', - 'For each test_graph edge we have now 2 subedges'); - - -SELECT is((SELECT count(*)::INTEGER FROM test_graph_noded WHERE source is NULL), (SELECT count(*)::INTEGER FROM test_graph_noded), 'all edges are missing source'); -SELECT is((SELECT count(*)::INTEGER FROM test_graph_noded WHERE target is NULL), (SELECT count(*)::INTEGER FROM test_graph_noded), 'all edges are missing target'); -SELECT hasnt_table('test_graph_noded_vertices_pgr', 'test_graph_noded_vertices_pgr table does not exist'); - -SELECT *, - NULL::INTEGER AS cnt, NULL::INTEGER AS chk, - NULL::INTEGER AS ein, NULL::INTEGER AS eout -INTO test_graph_noded_vertices_pgr -FROM pgr_extractVertices('SELECT id, geom FROM test_graph_noded ORDER BY id'); -/* -- set the source information */ -UPDATE test_graph_noded AS e -SET source = v.id -FROM test_graph_noded_vertices_pgr AS v -WHERE ST_StartPoint(e.geom) = v.geom; -/* -- set the target information */ -UPDATE test_graph_noded AS e -SET target = v.id -FROM test_graph_noded_vertices_pgr AS v -WHERE ST_EndPoint(e.geom) = v.geom; - -SELECT has_table('test_graph_noded_vertices_pgr', 'test_graph_noded_vertices_pgr table now exist'); -SELECT is((SELECT count(*)::INTEGER FROM test_graph_noded WHERE source is NULL), 0, '0 edges are missing source'); -SELECT is((SELECT count(*)::INTEGER FROM test_graph_noded WHERE target is NULL), 0, '0 edges are missing target'); -SELECT is((SELECT count(*)::INTEGER FROM test_graph_noded_vertices_pgr), 5, 'Now we have 5 vertices'); -SELECT is((SELECT count(*)::INTEGER FROM test_graph_noded_vertices_pgr WHERE cnt is NULL), 5, '5 vertices are missing cnt'); -SELECT is((SELECT count(*)::INTEGER FROM test_graph_noded_vertices_pgr WHERE chk is NULL), 5, '5 vertices are missing chk'); -SELECT is((SELECT count(*)::INTEGER FROM test_graph_noded_vertices_pgr WHERE ein is NULL), 5, '5 vertices are missing ein'); -SELECT is((SELECT count(*)::INTEGER FROM test_graph_noded_vertices_pgr WHERE eout is NULL), 5, '5 vertices are missing eout'); - -SELECT finish(); -ROLLBACK; diff --git a/pgtap/topology/nodeNetwork/issue_1074.pg b/pgtap/topology/nodeNetwork/issue_1074.pg deleted file mode 100644 index 1fc8939e8c8..00000000000 --- a/pgtap/topology/nodeNetwork/issue_1074.pg +++ /dev/null @@ -1,105 +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; - --- node the network --- create 2 test cases with overlapping lines, one with crossing lines and one with touching (but no crossing) lines - -SELECT plan(16); - -SET client_min_messages = WARNING; -CREATE TABLE original ( - id serial NOT NULL PRIMARY KEY -); -SELECT addgeometrycolumn('original', 'the_geom', 4326, 'LINESTRING', 2); - - -INSERT INTO original (id, the_geom) VALUES (1, 'SRID=4326;LineString (0 0, 2 1)'); -INSERT INTO original (id, the_geom) VALUES (2, 'SRID=4326;LineString (0 2, 2 1)'); -INSERT INTO original (id, the_geom) VALUES (3, 'SRID=4326;LineString (2 1, 5 1)'); -INSERT INTO original (id, the_geom) VALUES (4, 'SRID=4326;LineString (1 2, 1 0)'); -INSERT INTO original (id, the_geom) VALUES (5, 'SRID=4326;LineString (3 2, 3 0)'); -INSERT INTO original (id, the_geom) VALUES (6, 'SRID=4326;LineString (4 2, 4 0)'); -INSERT INTO original (id, the_geom) VALUES (7, 'SRID=4326;LineString (5 2, 5 0)'); - - -SELECT is((SELECT count(*)::INTEGER FROM original), 7, 'we have 7 original edges'); -SELECT pgr_nodeNetwork('original', 0.1, 'id', 'the_geom', 'roads', 'id IN (1, 2, 4, 6, 7)'); -SELECT pgr_nodeNetwork('original', 0.1, 'id', 'the_geom', 'bridges', 'id IN (3, 5)'); -SELECT is((SELECT count(*)::INTEGER FROM original_roads), 9, 'Now we have 9 edges'); -SELECT is((SELECT count(*)::INTEGER FROM original_bridges), 4, 'Now we have 4 edges'); - - - -CREATE TABLE original_noded ( - id bigserial PRIMARY KEY, - old_id INTEGER, - sub_id INTEGER, - source BIGINT, - target BIGINT, - the_geom GEOMETRY(LINESTRING, 4326) -); -INSERT INTO original_noded (old_id, sub_id, source, target, the_geom) -SELECT old_id, sub_id, source, target, the_geom FROM original_roads -UNION -SELECT old_id, sub_id, source, target, the_geom FROM original_bridges; - -SELECT is((SELECT count(*)::INTEGER FROM original_noded), 9 + 4, '13 total edges'); - -PREPARE q1 AS -SELECT old_id, count(*) FROM original_noded GROUP BY old_id ORDER BY old_id; -prepare vals1 AS -VALUES (1,2),(2,2),(3,2),(4,3),(5,2),(6,1),(7,1); -SELECT set_eq('q1', 'vals1', - 'For each original edge we have now the correct number of subedges'); - - -SELECT is((SELECT count(*)::INTEGER FROM original_noded WHERE source is NULL), (SELECT count(*)::INTEGER FROM original_noded), 'all edges are missing source'); -SELECT is((SELECT count(*)::INTEGER FROM original_noded WHERE target is NULL), (SELECT count(*)::INTEGER FROM original_noded), 'all edges are missing target'); -SELECT hasnt_table('original_noded_vertices_pgr', 'original_noded_vertices_pgr table does not exist'); - -SELECT *, - NULL::INTEGER AS cnt, NULL::INTEGER AS chk, - NULL::INTEGER AS ein, NULL::INTEGER AS eout -INTO original_noded_vertices_pgr -FROM pgr_extractVertices('SELECT id, the_geom AS geom FROM original_noded ORDER BY id'); -/* -- set the source information */ -UPDATE original_noded AS e -SET source = v.id -FROM original_noded_vertices_pgr AS v -WHERE ST_StartPoint(e.the_geom) = v.geom; -/* -- set the target information */ -UPDATE original_noded AS e -SET target = v.id -FROM original_noded_vertices_pgr AS v -WHERE ST_EndPoint(e.the_geom) = v.geom; - -SELECT has_table('original_noded_vertices_pgr', 'original_noded_vertices_pgr table now exist'); -SELECT is((SELECT count(*)::INTEGER FROM original_noded WHERE source is NULL), 0, '0 edges are missing source'); -SELECT is((SELECT count(*)::INTEGER FROM original_noded WHERE target is NULL), 0, '0 edges are missing target'); -SELECT is((SELECT count(*)::INTEGER FROM original_noded_vertices_pgr), 15, 'Now we have 15 vertices'); -SELECT is((SELECT count(*)::INTEGER FROM original_noded_vertices_pgr WHERE cnt is NULL), 15, '15 vertices are missing cnt'); -SELECT is((SELECT count(*)::INTEGER FROM original_noded_vertices_pgr WHERE chk is NULL), 15, '15 vertices are missing chk'); -SELECT is((SELECT count(*)::INTEGER FROM original_noded_vertices_pgr WHERE ein is NULL), 15, '15 vertices are missing ein'); -SELECT is((SELECT count(*)::INTEGER FROM original_noded_vertices_pgr WHERE eout is NULL), 15, '15 vertices are missing eout'); - - -SELECT finish(); -ROLLBACK; diff --git a/pgtap/topology/nodeNetwork/issue_1336.pg b/pgtap/topology/nodeNetwork/issue_1336.pg deleted file mode 100644 index f7fa8d9abf7..00000000000 --- a/pgtap/topology/nodeNetwork/issue_1336.pg +++ /dev/null @@ -1,89 +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; - --- node the network --- create 2 test cases with overlapping lines, one with crossing lines and one with touching (but no crossing) lines - -UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost); -SELECT plan(14); - -SET client_min_messages = WARNING; -CREATE TABLE original_hard ( - id serial NOT NULL PRIMARY KEY -); -SELECT addgeometrycolumn('original_hard', 'the_geom', 2154, 'LINESTRING', 2); - - -INSERT INTO original_hard (the_geom) -VALUES ('SRID=2154;LineString (843731.96837530436459929 6520224.37815147917717695, 843720.94724064960610121 6520301.25479774083942175, 843720.39054300379939377 6520305.10738470777869225, 843720.05595255247317255 6520307.44336138013750315)'); -INSERT INTO original_hard (the_geom) -VALUES ('SRID=2154;LineString (843681.62641362368594855 6520255.06193162966519594, 843726.45216981507837772 6520262.85580295417457819)'); -INSERT INTO original_hard (the_geom) -VALUES ('SRID=2154;LineString (840244.02465303440112621 6519477.50229732040315866, 840223.44937284057959914 6519479.99790611304342747, 840211.45880026079248637 6519479.72390817571431398, 840199.53777986904606223 6519474.36406740732491016, 840190.58289291337132454 6519464.75101129896938801, 840181.41248250298667699 6519451.97837869636714458, 840170.42565293482039124 6519434.3100799722597003, 840168.55425586295314133 6519430.80164159927517176, 840151.01772376440931112 6519396.24404330458492041, 840139.96531795407645404 6519372.58710443042218685, 840138.63576878234744072 6519367.48039372358471155, 840146.19430478441063315 6519303.77102805394679308, 840150.080136300297454 6519274.91238123551011086, 840119.29845047416165471 6519150.59983278997242451, 840117.11253627086989582 6519135.32088061515241861, 840114.83395825664047152 6519129.54824385419487953, 840108.43866820889525115 6519120.18260038271546364, 840107.31546254467684776 6519117.61322824936360121, 840099.29079487535636872 6519102.64529608283191919)'); -INSERT INTO original_hard (the_geom) -VALUES ('SRID=2154;LineString (840225.44422620115801692 6519369.90784595627337694, 840164.1949518381152302 6519407.88627272564917803, 840153.53890225966461003 6519408.40932532399892807, 840127.25395868462510407 6519400.12230102065950632, 840102.82493207952938974 6519361.2863945122808218, 840094.13878045929595828 6519332.39617275167256594)'); - - -SELECT is((SELECT count(*)::INTEGER FROM original_hard), 4, 'we have 4 original_hard edges'); -SELECT pgr_nodeNetwork('original_hard', 0.1, 'id', 'the_geom'); -SELECT is((SELECT count(*)::INTEGER FROM original_hard_noded), 7, 'Now we have 7 edges'); - - -PREPARE q1_hard AS -SELECT old_id, count(*) FROM original_hard_noded GROUP BY old_id ORDER BY old_id; -prepare vals1_hard AS -VALUES (1,2),(2,1),(3,2),(4,2); -SELECT set_eq('q1_hard', 'vals1_hard', - 'For each original_hard edge we have now 2 subedges except for the second one'); - - -SELECT is((SELECT count(*)::INTEGER FROM original_hard_noded WHERE source is NULL), (SELECT count(*)::INTEGER FROM original_hard_noded), 'all edges are missing source'); -SELECT is((SELECT count(*)::INTEGER FROM original_hard_noded WHERE target is NULL), (SELECT count(*)::INTEGER FROM original_hard_noded), 'all edges are missing target'); -SELECT hasnt_table('original_hard_noded_vertices_pgr', 'original_hard_noded_vertices_pgr table does not exist'); - -SELECT *, - NULL::INTEGER AS cnt, NULL::INTEGER AS chk, - NULL::INTEGER AS ein, NULL::INTEGER AS eout -INTO original_hard_noded_vertices_pgr -FROM pgr_extractVertices('SELECT id, the_geom AS geom FROM original_hard_noded ORDER BY id'); -/* -- set the source information */ -UPDATE original_hard_noded AS e -SET source = v.id -FROM original_hard_noded_vertices_pgr AS v -WHERE ST_StartPoint(e.the_geom) = v.geom; -/* -- set the target information */ -UPDATE original_hard_noded AS e -SET target = v.id -FROM original_hard_noded_vertices_pgr AS v -WHERE ST_EndPoint(e.the_geom) = v.geom; - -SELECT has_table('original_hard_noded_vertices_pgr', 'original_hard_noded_vertices_pgr table now exist'); -SELECT is((SELECT count(*)::INTEGER FROM original_hard_noded WHERE source is NULL), 0, '0 edges are missing source'); -SELECT is((SELECT count(*)::INTEGER FROM original_hard_noded WHERE target is NULL), 0, '0 edges are missing target'); -SELECT is((SELECT count(*)::INTEGER FROM original_hard_noded_vertices_pgr), 9, 'Now we have 9 vertices'); -SELECT is((SELECT count(*)::INTEGER FROM original_hard_noded_vertices_pgr WHERE cnt is NULL), 9, '9 vertices are missing cnt'); -SELECT is((SELECT count(*)::INTEGER FROM original_hard_noded_vertices_pgr WHERE chk is NULL), 9, '9 vertices are missing chk'); -SELECT is((SELECT count(*)::INTEGER FROM original_hard_noded_vertices_pgr WHERE ein is NULL), 9, '9 vertices are missing ein'); -SELECT is((SELECT count(*)::INTEGER FROM original_hard_noded_vertices_pgr WHERE eout is NULL), 9, '9 vertices are missing eout'); - - -SELECT finish(); -ROLLBACK; diff --git a/pgtap/topology/nodeNetwork/issue_1882.pg b/pgtap/topology/nodeNetwork/issue_1882.pg deleted file mode 100644 index 3179202e91d..00000000000 --- a/pgtap/topology/nodeNetwork/issue_1882.pg +++ /dev/null @@ -1,81 +0,0 @@ -/*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; - -SET client_min_messages = WARNING; - -SELECT CASE WHEN min_version('3.8.0') THEN plan(13) ELSE plan(10) END; - -CREATE schema ferry; -CREATE TABLE ferry.lines -( - way_id bigint not null, - geom geometry(LineString, 3857) -); - -CREATE INDEX lines_geom_idx ON ferry.lines using gist (geom); -CREATE INDEX lines_way_id_idx ON ferry.lines (way_id); - -INSERT INTO ferry.lines (way_id, geom) VALUES -(232581694, '0102000020110F0000220000009433D64721A31D41B71925D407E05941CA5C010F95A71D41E806C9FE93DF594144DFFA7E37A81D4116054AFE15DF59412FC795CFE9931D41FA51F971E1DE5941112565E3717D1D41E120556047DE594145740FF7706E1D41248032921DDE594109DD8A0660591D4188ADA23B21DE5941743A3AEFCF2A1D4125F22DA4B7DE5941F8B01B00231B1D41528D50CC14DF5941ECB65A01F2E91C4197E88847FDE059418E37E68E57D01C41E67EA13ADAE15941710BF1A26DC31C412C33780485E25941F7F28B0830BC1C41BC156B6B2DE3594120B360A5C4B51C4130634511F6E3594167337B1314A91C4101B27B13C7E45941EC1B629A606F1C41FE1EB436F7E65941B7125E1903531C4185DA09BC58E85941414F3531060C1C41E383E15CDCEB5941AABED32B9BED1B41D4CBC45F43EC59418D4AC7D72BC01B41D55C090688ED5941448C33AB37941B4196CA561EA2EE594109E0467ABF5D1B41294ED4590AF05941BC4397399DA115412BD8175E7D365A4190A7AA298E0E084174E0C098549B5A417795433D9E44E340400372503DFE5A41AD0742F3E7D6D840F12ECE3D1A075B41883E6A7B29FAD1401C27686851065B4177B8CF3B9971AD4060069FD1020E5B4168F25B08BACE94C05B3E576CB00E5B412244441B6985CBC07886598F2C155B41C4D5FBAB28FCD2C09D89F57E12175B4104B09A0ED961D4C0E94C181D27165B413E1C299817FCD4C0D6596A705C155B412A71001290F1D5C05E83CC1105165B41'), -(32340204, '0102000020110F00001D0000005266A5CE8561DEC08801A9D64F2A5B411DFAF6129967DEC0A6F1E0D31A2A5B41432D06F12149DEC020B0BEA4E9295B41A52550F2785EDCC013F8002646285B41DFDCE355A4DFDAC056B5158E70265B41214ACF4BEEB0D9C023ED392418245B41BC4EE68326F0D6C0A49C91CBD81C5B41A55CE1165295D5C0E4B51FDEB1195B41A2F4005882A2D3C0C8689A0335175B413785A1458497CBC09B8E43D50D155B41118AE4431EE795C0CF22EB4A700E5B415BFBB1923CB0AC40371606DFD30D5B41274251C536F8D140746B5B5E23065B41C11B581767BAD840A00531E8E7065B414AAF77DE331AE3407DD49539D9FD5A411EEE0D27F0BD07419E0114DF4B995A4125703ACEDA8115419B17AAED8F345A41B1DD9832E45A1B41740471F8E9EF59415A4801D5DC931B41E8FD638879EE5941D32AE153C0BD1B41159B8836FCEC59415904666AC2F01B410C8D3E9E8BEB5941805E426577061C41549EE739B3EA5941022067606F0B1C41ED54E76F39EA59416242BB9CF70D1C4101DA8D65DAE95941A42209C23E0F1C41423E138B5EE959412AB9EF37E30D1C41A193C58E77E8594118B33C0F470D1C41407A33ED7EE759413B399393960E1C41BCFDDAA914E759410821003052121C4144407AF507E75941'), -(96109913, '0102000020110F000016000000EEBCF0195538FFC04781F75FB0C95B41B592B413563DFFC0576352A6C2C95B41B8519910CA7EFFC070460384D1CA5B41BA2363B20988FFC0F399036F50CB5B4173D98997E869FFC098647FED39CC5B41449136033266FFC043AB6DFC4BCD5B41EF3C6D000079FFC0215C277AAECE5B41ABE26251547BFFC049C2BC1FC9CF5B410F22D9BE03C1FEC0B81BAF51A5D45B41BB767E123CC0FDC0B800FE3D88D55B4132E6E38CF021EBC0BAF4B35EF1C15B41C7435AB05FC1154125BF22CF6A385A41EEB58EB69A601B41F95331BA2AF05941B9A3FF7592941B413F1AA7B5CAEE59413D652473C0B51B41C36F710868ED594187A32BA032F11B41ACA50A0A99EB5941B01A7BD0BC061C410D4D2DC8B8EA59415C65DC64EF0B1C411A182F473CEA5941C826FCC96D0E1C4155D621A8DBE95941FB018622A90F1C417BC9E5305EE959412546E99D6B0D1C414F0032F704E7594147DB1BB1C40B1C41B3B451B9BDE65941'), -(96053700, '0102000020110F0000180000007C369C66FFAB1541BB413AAD397D59412E41BF8912AD15417BF5CECD497D594135D0591C48B115415E816474667D59413F16AA26A8C415418C509310247E59419ADE2459ECC61541398A43DE517E59415BAB10E3B3C615412305F87DA17E59419E9EB23CE4A21541EF1FC8179581594160020966AE591541F31C9741098859418F931C496E1815419BA31942B287594126DB1669D2701441CE8E90D7438B594105FBB8E7C92912419A6E3CD654BC59411DCFD46255111241DAD7D86A6AD65941B9E72CD1C0451241EC610135FDB55A41964DE61FFF1BEBC0BFDD4ADB03C25B4135630C5843BAFDC07F4C3A04B8D55B412030F64EE8CAFEC090D49588B7D45B41C18E18E6727CFFC0BAAC6468CCCF5B4119F31B635C7AFFC08AFE6BFBACCE5B419A0BF7C50368FFC073BE3E664CCD5B4175E38DEE256CFFC0E406357C3ACC5B41D2CF18472889FFC06FE8A4E250CB5B411823F594087FFFC06595BFBCD0CA5B41003FA6D6DB3DFFC0A2BEA361C1C95B41EEBCF0195538FFC04781F75FB0C95B41'); - -SELECT is((SELECT count(*)::INTEGER FROM ferry.lines), 4, 'before: Have 4 edges'); - -SELECT * -INTO ferry.vertices -FROM pgr_extractVertices('SELECT way_id, geom FROM ferry.lines'); - -SELECT is((SELECT count(*)::INTEGER FROM ferry.vertices), 7, 'before: Have 7 vertices'); - -select pgr_nodenetwork('ferry.lines', 0.0001, id := 'way_id', the_geom := 'geom'); - -SELECT has_table('ferry','lines_noded','Has ferry.lines_noded'); -SELECT has_column('ferry','lines_noded','id', 'ferry.lines_noded has id'); -SELECT has_column('ferry','lines_noded','old_id', 'ferry.lines_noded has old_id'); -SELECT has_column('ferry','lines_noded','sub_id', 'ferry.lines_noded has sub_id'); -SELECT has_column('ferry','lines_noded','source', 'ferry.lines_noded has source'); -SELECT has_column('ferry','lines_noded','target', 'ferry.lines_noded has target'); -SELECT has_column('ferry','lines_noded','geom', 'ferry.lines_noded has geom'); - -PREPARE q1 AS -SELECT old_id, count(*) FROM ferry.lines_noded GROUP BY old_id ORDER BY old_id; -prepare vals1 AS -VALUES (32340204, 4), (96053700, 4), (96109913, 4), (232581694, 4); - -SELECT * -INTO ferry.lines_noded_vertices -FROM pgr_extractVertices('SELECT id, geom FROM ferry.lines_noded ORDER BY id'); - -SELECT CASE WHEN min_version('3.8.0') -THEN - collect_tap( - set_eq('q1', 'vals1', 'For each edge we have now 4 subedges'), - is((SELECT count(*)::INTEGER FROM ferry.lines_noded), 16, 'after Have 16 edges'), - is((SELECT count(*)::INTEGER FROM ferry.vertices), 7, 'Initially there are 7 vertices'), - is((SELECT count(*)::INTEGER FROM ferry.lines_noded_vertices), 13, 'Now there are 13 vertices') - ) -ELSE - skip(1, 'nodeNetwork Bug fix in 3.8') -END; - -SELECT finish(); -ROLLBACK; diff --git a/pgtap/topology/nodeNetwork/issue_2628.pg b/pgtap/topology/nodeNetwork/issue_2628.pg deleted file mode 100644 index 8d48943b0ba..00000000000 --- a/pgtap/topology/nodeNetwork/issue_2628.pg +++ /dev/null @@ -1,96 +0,0 @@ -/*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; - -SET client_min_messages = WARNING; -SELECT CASE WHEN min_version('3.8.0') THEN plan(18) ELSE plan(15) END; - -CREATE schema ferry; -CREATE TABLE ferry.lines -( - way_id bigint not null, - geom geometry(LineString, 3857) -); - -CREATE INDEX lines_geom_idx ON ferry.lines using gist (geom); -CREATE INDEX lines_way_id_idx ON ferry.lines (way_id); - -INSERT INTO ferry.lines (way_id, geom) VALUES -(232581694, '0102000020110F0000220000009433D64721A31D41B71925D407E05941CA5C010F95A71D41E806C9FE93DF594144DFFA7E37A81D4116054AFE15DF59412FC795CFE9931D41FA51F971E1DE5941112565E3717D1D41E120556047DE594145740FF7706E1D41248032921DDE594109DD8A0660591D4188ADA23B21DE5941743A3AEFCF2A1D4125F22DA4B7DE5941F8B01B00231B1D41528D50CC14DF5941ECB65A01F2E91C4197E88847FDE059418E37E68E57D01C41E67EA13ADAE15941710BF1A26DC31C412C33780485E25941F7F28B0830BC1C41BC156B6B2DE3594120B360A5C4B51C4130634511F6E3594167337B1314A91C4101B27B13C7E45941EC1B629A606F1C41FE1EB436F7E65941B7125E1903531C4185DA09BC58E85941414F3531060C1C41E383E15CDCEB5941AABED32B9BED1B41D4CBC45F43EC59418D4AC7D72BC01B41D55C090688ED5941448C33AB37941B4196CA561EA2EE594109E0467ABF5D1B41294ED4590AF05941BC4397399DA115412BD8175E7D365A4190A7AA298E0E084174E0C098549B5A417795433D9E44E340400372503DFE5A41AD0742F3E7D6D840F12ECE3D1A075B41883E6A7B29FAD1401C27686851065B4177B8CF3B9971AD4060069FD1020E5B4168F25B08BACE94C05B3E576CB00E5B412244441B6985CBC07886598F2C155B41C4D5FBAB28FCD2C09D89F57E12175B4104B09A0ED961D4C0E94C181D27165B413E1C299817FCD4C0D6596A705C155B412A71001290F1D5C05E83CC1105165B41'), -(32340204, '0102000020110F00001D0000005266A5CE8561DEC08801A9D64F2A5B411DFAF6129967DEC0A6F1E0D31A2A5B41432D06F12149DEC020B0BEA4E9295B41A52550F2785EDCC013F8002646285B41DFDCE355A4DFDAC056B5158E70265B41214ACF4BEEB0D9C023ED392418245B41BC4EE68326F0D6C0A49C91CBD81C5B41A55CE1165295D5C0E4B51FDEB1195B41A2F4005882A2D3C0C8689A0335175B413785A1458497CBC09B8E43D50D155B41118AE4431EE795C0CF22EB4A700E5B415BFBB1923CB0AC40371606DFD30D5B41274251C536F8D140746B5B5E23065B41C11B581767BAD840A00531E8E7065B414AAF77DE331AE3407DD49539D9FD5A411EEE0D27F0BD07419E0114DF4B995A4125703ACEDA8115419B17AAED8F345A41B1DD9832E45A1B41740471F8E9EF59415A4801D5DC931B41E8FD638879EE5941D32AE153C0BD1B41159B8836FCEC59415904666AC2F01B410C8D3E9E8BEB5941805E426577061C41549EE739B3EA5941022067606F0B1C41ED54E76F39EA59416242BB9CF70D1C4101DA8D65DAE95941A42209C23E0F1C41423E138B5EE959412AB9EF37E30D1C41A193C58E77E8594118B33C0F470D1C41407A33ED7EE759413B399393960E1C41BCFDDAA914E759410821003052121C4144407AF507E75941'), -(96109913, '0102000020110F000016000000EEBCF0195538FFC04781F75FB0C95B41B592B413563DFFC0576352A6C2C95B41B8519910CA7EFFC070460384D1CA5B41BA2363B20988FFC0F399036F50CB5B4173D98997E869FFC098647FED39CC5B41449136033266FFC043AB6DFC4BCD5B41EF3C6D000079FFC0215C277AAECE5B41ABE26251547BFFC049C2BC1FC9CF5B410F22D9BE03C1FEC0B81BAF51A5D45B41BB767E123CC0FDC0B800FE3D88D55B4132E6E38CF021EBC0BAF4B35EF1C15B41C7435AB05FC1154125BF22CF6A385A41EEB58EB69A601B41F95331BA2AF05941B9A3FF7592941B413F1AA7B5CAEE59413D652473C0B51B41C36F710868ED594187A32BA032F11B41ACA50A0A99EB5941B01A7BD0BC061C410D4D2DC8B8EA59415C65DC64EF0B1C411A182F473CEA5941C826FCC96D0E1C4155D621A8DBE95941FB018622A90F1C417BC9E5305EE959412546E99D6B0D1C414F0032F704E7594147DB1BB1C40B1C41B3B451B9BDE65941'), -(96053700, '0102000020110F0000180000007C369C66FFAB1541BB413AAD397D59412E41BF8912AD15417BF5CECD497D594135D0591C48B115415E816474667D59413F16AA26A8C415418C509310247E59419ADE2459ECC61541398A43DE517E59415BAB10E3B3C615412305F87DA17E59419E9EB23CE4A21541EF1FC8179581594160020966AE591541F31C9741098859418F931C496E1815419BA31942B287594126DB1669D2701441CE8E90D7438B594105FBB8E7C92912419A6E3CD654BC59411DCFD46255111241DAD7D86A6AD65941B9E72CD1C0451241EC610135FDB55A41964DE61FFF1BEBC0BFDD4ADB03C25B4135630C5843BAFDC07F4C3A04B8D55B412030F64EE8CAFEC090D49588B7D45B41C18E18E6727CFFC0BAAC6468CCCF5B4119F31B635C7AFFC08AFE6BFBACCE5B419A0BF7C50368FFC073BE3E664CCD5B4175E38DEE256CFFC0E406357C3ACC5B41D2CF18472889FFC06FE8A4E250CB5B411823F594087FFFC06595BFBCD0CA5B41003FA6D6DB3DFFC0A2BEA361C1C95B41EEBCF0195538FFC04781F75FB0C95B41'); - -SELECT is((SELECT count(*)::INTEGER FROM ferry.lines), 4, 'before: Have 4 edges'); - -SELECT * -INTO ferry.vertices -FROM pgr_extractVertices('SELECT way_id, geom FROM ferry.lines'); - -select pgr_nodenetwork('ferry.lines', 0.0001, id := 'way_id', the_geom := 'geom'); - -SELECT has_table('ferry','lines_noded','Has ferry.lines_noded'); - -SELECT has_column('ferry','lines_noded','id', 'ferry.lines_noded has id'); -SELECT col_type_is('ferry','lines_noded','id', 'bigint', 'ferry.lines_noded.id is bigint'); - -SELECT has_column('ferry','lines_noded','old_id', 'ferry.lines_noded has old_id'); -SELECT CASE WHEN min_version('3.8.0') THEN - col_type_is('ferry','lines_noded','old_id', 'bigint', 'ferry.lines_noded.old_id is bigint') -ELSE - skip(1,'issue fixed in 3.8.0') -END; - -SELECT has_column('ferry','lines_noded','sub_id', 'ferry.lines_noded has sub_id'); -SELECT col_type_is('ferry','lines_noded','sub_id', 'integer', 'ferry.lines_noded.sub_id is integer'); - -SELECT has_column('ferry','lines_noded','source', 'ferry.lines_noded has source'); -SELECT col_type_is('ferry','lines_noded','source', 'bigint', 'ferry.lines_noded.source is bigint'); - -SELECT has_column('ferry','lines_noded','target', 'ferry.lines_noded has target'); -SELECT col_type_is('ferry','lines_noded','target', 'bigint', 'ferry.lines_noded.target is bigint'); - -SELECT has_column('ferry','lines_noded','geom', 'ferry.lines_noded has geom'); -SELECT col_type_is('ferry','lines_noded','geom', 'geometry(LineString,3857)', 'ferry.lines_noded.geom is geometry(LineString,3857)'); - - - -PREPARE q1 AS -SELECT old_id, count(*) FROM ferry.lines_noded GROUP BY old_id ORDER BY old_id; -prepare vals1 AS -VALUES (32340204, 4), (96053700, 4), (96109913, 4), (232581694, 4); - -SELECT * -INTO ferry.lines_noded_vertices -FROM pgr_extractVertices('SELECT id, geom FROM ferry.lines_noded ORDER BY id'); - -SELECT CASE WHEN min_version('3.8.0') -THEN - collect_tap( - set_eq('q1', 'vals1', 'For each edge we have now 4 subedges'), - is((SELECT count(*)::INTEGER FROM ferry.lines_noded), 16, 'after Have 16 edges'), - is((SELECT count(*)::INTEGER FROM ferry.vertices), 7, 'Initially there are 7 vertices'), - is((SELECT count(*)::INTEGER FROM ferry.lines_noded_vertices), 13, 'Now there are 13 vertices') - ) -ELSE - skip(1, 'nodeNetwork Bug fix in 3.8') -END; - -SELECT finish(); -ROLLBACK; diff --git a/pgtap/topology/nodeNetwork/issue_280.pg b/pgtap/topology/nodeNetwork/issue_280.pg deleted file mode 100644 index 1f061ad77f5..00000000000 --- a/pgtap/topology/nodeNetwork/issue_280.pg +++ /dev/null @@ -1,41 +0,0 @@ -/*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; - -SET client_min_messages = WARNING; -SELECT plan(3); - -CREATE TABLE network (id INTEGER, the_geom geometry(linestring) ); -INSERT INTO network VALUES (1, 'linestring(0 0, 10 10)'::geometry); -INSERT INTO network VALUES (2, 'linestring(2 0, 8 10)'::geometry); - -SELECT pgr_nodeNetwork('network', 0.001); - -SELECT is((SELECT count(*)::INTEGER FROM network_noded), 4, 'Have 4 edges'); - -SELECT * INTO network_vertices -FROM pgr_extractVertices('SELECT id, the_geom AS geom FROM network_noded'); - -SELECT is((SELECT count(*)::INTEGER FROM network_vertices), 5, 'Have 5 vertices'); -SELECT set_has( - $$SELECT ST_AsText(geom) FROM network_vertices$$, - $$VALUES ('POINT(5 5)')$$, 'Have (5,5) vertex'); - -SELECT finish(); -ROLLBACK; diff --git a/pgtap/topology/nodeNetwork/issue_623.pg b/pgtap/topology/nodeNetwork/issue_623.pg deleted file mode 100644 index 33aed2823c5..00000000000 --- a/pgtap/topology/nodeNetwork/issue_623.pg +++ /dev/null @@ -1,164 +0,0 @@ -/*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; - -SET client_min_messages = WARNING; -SELECT plan(6); - -CREATE SCHEMA houses; - -CREATE TABLE houses.simplenet ( - id serial PRIMARY KEY, - house_id integer, - road_id integer NOT NULL, - component BIGINT, - geom public.geometry(LineString,2180) NOT NULL, - CONSTRAINT enforce_dims_geom CHECK ((public.st_ndims(geom) = 2)), - CONSTRAINT enforce_srid_geom CHECK ((public.st_srid(geom) = 2180)) -); -CREATE INDEX simplenet_geom_gidx ON houses.simplenet USING gist (geom); - -INSERT INTO houses.simplenet (road_id, geom) VALUES -(3123, '010200002084080000090000009E4FAC37BE15104170D5C1E469331B41EE4EF9273B1610412093A8BE55331B41EE322587E016104130995D1265331B41D035DAFB2B17104100AA967956341B418C12FF7E5017104130AE5E5FE3341B41629D49D99A171041C0A4D90228361B41E220A6D2AE171041A000B7C03F361B4156E20D22D117104100DCF57D3E361B411032CCC42D1B10416091A6F3EE341B41'), -(3124, '0102000020840800000B0000007E1B3C4FC40A1041707FFFC64A371B4181B74F32000C104150F83D3AA8361B416CC34CF55D0D1041C0771EB209361B417E25DCBDFC0D10419090F914D6351B41650C1EAE9A0E104130CFA8B7B7351B4155F75A1C641010417059BF592C351B41FA1DEB7187111041E0C064BBD8341B41944CE7957A12104120A70CE7A1341B41A220271D8914104110356671CF331B4199D042E63D151041205987AD8A331B419E4FAC37BE15104170D5C1E469331B41'), -(3155, '010200002084080000030000006A367411BC1910419047A0C595321B41F8CE972A8E17104190B22AB959331B41EE322587E016104130995D1265331B41'), -(3156, '010200002084080000090000002205178EBB1B104100FEDA5827331B412E210491431B104150D3DD3025321B416A367411BC1910419047A0C595321B412205178EBB1B104100FEDA5827331B416440E156701C1041D09F808D2F341B4180601352DE1B1041F0772E345A341B41DEA8489B991B1041E0851EE191341B41DE8BB9D46B1B1041004C3B14CA341B411032CCC42D1B10416091A6F3EE341B41'), -(3157, '0102000020840800001700000008B69F8512351041B07566350D3F1B4190A0C357ED33104150DE1A65563D1B418506C174A8331041808307ED2A3D1B41BA80AD9D8E32104140F4B5ED083C1B416035D5E4843110415027964B793B1B41E3DC72CAFA2F1041C06F793FA43A1B41FAF8ACF6192D1041A01A55A192381B4190472FCCF5291041906C843846361B411461FB89D0231041E0DD41BDD6301B41DCD49BE216231041607D264549301B414CE523867F221041509D860F43301B418F09CAE514221041807991AB62301B414067E2B4AE211041709E641282301B41E26D4201C42010416069679510311B41CB1643997F20104160FE72F129311B41E0A667F442201041906707532B311B41728E5CCEAC1F1041D0DEA72E1F311B41103001C72E1F104170DF4A3E1C311B412F762ABE921E1041202930DC30311B41CA768984091E104150B2F5C75A311B4189EC377E931D104170BBAFCC83311B41623D4BEE601C1041A02E3DF8C2311B412E210491431B104150D3DD3025321B41'), -(11629, '01020000208408000010000000E4559FCFC30A104160A6C9C3D0361B41C85D3E9C340A104100594D90E1361B41E03537D06C09104130DD0337FC361B416A55E1C3B9081041D01D1D5F26371B41D0969F7964061041B0CD8F05BE371B41C16FEDE4E004104160FF9F7409381B412A0C8EF67B03104100BABB9747381B416C8F42F4F402104190BD67344A381B41DEBD390FEE0010416068FFB82E381B41D1D66FF12D001041E0CD3A5825381B4115579F3493FF0F41A06CA0312A381B417A0A35F6F4FE0F41F001B9853E381B41AAAAC4B7A7FD0F4130E231608A381B4117FC17DCBAFC0F41F0BA5AE3B4381B4117A3750153FB0F4150400C65E5381B419E0D9D39F5F90F41E0573C430C391B41'), -(27140, '0102000020840800000B0000006440E156701C1041D09F808D2F341B41962C2D8FCF1C104150431B6DCD341B413C21BC3B301D1041306941E187351B41043C43DA721D10414016C6153C361B41AC55646C891D104170F19E2F59361B41EB9D4768B01D10416089EEA05B361B412FC6993F6D1F104170A5E43EA9351B412071A6FF9A1F1041E060AB0C8C351B418B2FE98AB81F1041C00B1C4164351B41E6F49314CD1F1041E06552AF34351B41C60EE257CC1F104140957050EA341B41'), -(27144, '01020000208408000002000000B009023DB90A104170DD29D5EB371B419CA8C04DA60C10418060A9C78F381B41'), -(27148, '0102000020840800000600000001867F68CCF50F41903B02EF572E1B4102DE048279F70F41F002EF7431311B4130CA8702EBF80F41E01862A335331B41602026E4F5FA0F4110101BF91A361B41CEB0CD845EFB0F41F053807269361B417A0A35F6F4FE0F41F001B9853E381B41'), -(39074, '0102000020840800001300000030CA8702EBF80F41E01862A335331B412273D1D7E7F70F4110B3E39EE5321B4119AD3C8671F60F415039E5C49B321B41780B4850E1F40F41D03CF2F078321B41971B2558EBF10F4150ADD61C00321B41CC8BB9C909F00F4140C32FF3AF311B41F411E74CF4EC0F41307ECE3A61311B413D3AF6B941EC0F41C027DDD032311B4114D34A31EDEB0F415073BAD98C301B4197BBD4F6DBEA0F4100A1B87708301B41641FD7ABB5E80F411095039CD12F1B412AE9CD4340E60F41F0C8101101301B4171D7C741D6E20F41C060D7CD5C301B41305E5A54A3E00F41906F917B99301B414A58854463DD0F413013401EFA301B41EE415C7BF1DB0F41E032DCB475311B413B0CF20F0EDB0F4120020EA79B311B4153C10E7EB7D90F41006246C2A6311B418E21E616B6D70F4100B2B1DDBB311B41'), -(53368, '01020000208408000008000000E4453D7293031041E00E8BDB963B1B41D3148F6811041041908F08AE87391B4178950459AB041041A0DC3F9077391B41AE9F9C457C051041C095E8CD78391B411EF543057C061041A035FEE60E391B417E4D7AC816081041D0F557C28D381B41945FEE7D520A1041D0B261B472381B41CAA99E938F0A10417018DDB981381B41'), -(53372, '01020000208408000009000000D3148F6811041041908F08AE87391B41245A112986021041C07C149A8C391B418EE494D45CFE0F4140BD0B97673A1B41F7937D9594FD0F41E05DA26EB43A1B413B8DCE5EABFC0F41F095BE2CCF3A1B419CE05DD625FC0F4190EA86EDCB3A1B419DFB0F5F67FB0F41E04835428D3A1B41B82B1B46D4FA0F41A0E44050673A1B419E0D9D39F5F90F41E0573C430C391B41'), -(53617, '0102000020840800000E0000009E0D9D39F5F90F41E0573C430C391B41490F4BA9DEF50F41B025D25A8E391B416BEBD9795BF30F41505252E7D3391B410A3CFDF781E90F41309B13370B3C1B41EFD18A0E4EE50F41D092264AF13C1B41AE5FA42B0BE30F4180BFC24C623D1B41A701E42A2AE20F41707B84745D3D1B41830290E13CE10F41B06F96E4423D1B41B697C4F243E00F4120CA4692603D1B41E9C16A1F46DE0F4190592ED6D03D1B416E443DD827DD0F41A0D45A68EF3D1B41136EA5BD30DC0F4100DDA4DCF83D1B4120574A6F7CDA0F4150A19C173B3E1B41D83CB7FE21D30F41809557F8283F1B41'), -(59137, '0102000020840800001C0000003343C1036D0B104180664E4E85471B41707EB0604D0B1041F095F09245471B4174994D7AC5091041E05585984C451B41A4BFB7246C09104170F80C6A5B441B412575C0F2FB081041E01B9A7F34421B4119F87927B008104170F6787884401B41C877EC3ED7081041D070E71A2D3F1B41D2B5DC063509104110111819C33C1B41C73677C0CA0910418050F29AE73A1B41CAA99E938F0A10417018DDB981381B419969B3F5A60A1041D0DF17CC38381B41B009023DB90A104170DD29D5EB371B4152244E84C30A1041D0E6557986371B417E1B3C4FC40A1041707FFFC64A371B41E4559FCFC30A104160A6C9C3D0361B4129F6CBD7CD0A10417064357B22361B41E2C120F6D70A104130BFC8E5C1351B41FE1E00EDEB0A1041A0D0A3814B351B4185A43F1E150B1041A0B8D0FCD7341B415AB19FC7350B1041403112B877341B41747D5B214A0B104160AD70FA13341B41AE1E93FA4D0B104180D4C67BC2331B41AA7D9335470B104100B9B2A377331B41D228C7A3DA0A104110992EF693311B41DAD535E0750A104190865C07A82F1B41AC629EB25C0A1041106A101E8E2E1B4186FB0FC3170A1041D079ADA41D2C1B417585AF49C8091041E07729C1DE281B41'); - -SELECT is((SELECT count(*)::INTEGER FROM houses.simplenet), 14, '14 original edges'); - -CREATE TABLE houses.input_points( - id SERIAL NOT NULL PRIMARY KEY, - geom geometry(Point,2180) NOT NULL, - CONSTRAINT enforce_dims_geom CHECK ((public.st_ndims(geom) = 2)), - CONSTRAINT enforce_srid_geom CHECK ((public.st_srid(geom) = 2180)) -); -CREATE INDEX input_points_geom_gidx ON houses.input_points USING gist (geom); - -INSERT INTO houses.input_points (geom) VALUES -('010100002084080000544435CF4F091041501BB34633371B41'), ('010100002084080000E2E942DAC3111041709C079D53351B41'), -('0101000020840800005083B0CECB15104150462BE427331B41'), ('0101000020840800009CBA36C51F051041E0172FFCAB371B41'), -('01010000208408000089AB6AB9B31110413055649F8B351B41'), ('010100002084080000D4774B88AF191041B0B5B14BF7351B41'), -('01010000208408000037AD0ADAC7171041F0512CFDF3351B41'), ('010100002084080000C4757BBEA7081041202A8FEEBB391B41'), -('010100002084080000B09DF8F8C30C10417018C2DC9F361B41'), ('010100002084080000622FFAC1D30E1041A08CFFD8E3351B41'), -('0101000020840800009CFBE9DD53131041E0E179536F341B41'), ('01010000208408000040150288AB171041C06D6641FB311B41'), -('010100002084080000A4D095E81B16104130F491EA3B341B41'), ('010100002084080000C622A5CA4F05104130974E9E43391B41'), -('010100002084080000088EE7BF33141041F061046D63341B41'), ('010100002084080000F185E18E9F191041D04E043F1B361B41'), -('0101000020840800002827AEE02B0A104170781832BB381B41'), ('01010000208408000054B934847F0C1041002CFA3E2B361B41'), -('0101000020840800001E0C78B587031041A0F6E23DCF3B1B41'), ('0101000020840800003DB1EDAF73151041E0DEAEA6F3331B41'), -('010100002084080000EDB37C0307FD0F412060C52ACF391B41'), ('0101000020840800006A1E4BE1AB1C104180107DDB4B351B41'), -('010100002084080000747528E5331B104170F1113473341B41'), ('0101000020840800002390AEB2470A104180476C5A3F381B41'), -('010100002084080000E8D677BC63121041F089818A2B351B41'), ('01010000208408000039A9CF986B0A1041600CCE88B3371B41'), -('010100002084080000302B68D36B1110410065A6D16B351B41'), ('010100002084080000E3DA2CC6A7051041B01C50CAAF371B41'), -('0101000020840800005ADD30738B0F104180FAC29D8F361B41'), ('0101000020840800008A8D60838F121041B082E576CB341B41'), -('01010000208408000094A0E2F61B0810416013FFE903371B41'), ('010100002084080000F4F174B77307104150DFE907FC371B41'), -('010100002084080000360F77EBE3061041501CDB2077381B41'), ('0101000020840800003190C1DE6B051041B0171D617B371B41'), -('01010000208408000026BCAD7C370C104130D975E1B7361B41'), ('010100002084080000FFA8EC75EFFD0F4140BC7AA103381B41'), -('01010000208408000090DB9AE5B70A1041402EA6C2D3381B41'), ('0101000020840800005D63A5911F0A104100E49FC4B7381B41'), -('010100002084080000AC24BD889708104110E40F05C43A1B41'), ('0101000020840800001C6C11B5130B1041903F099443361B41'), -('010100002084080000C63BD9D7130E104130F3699133351B41'), ('010100002084080000B64CF8EB330F1041B0D145F02B361B41'), -('010100002084080000073164CE2F111041C0643E3C3F341B41'), ('0101000020840800009A2D8FB1E7151041000D8526A7321B41'), -('01010000208408000046E421DBAB171041702DFD285F351B41'), ('010100002084080000C0608271B7171041A0FCAA6A6B321B41'), -('0101000020840800000ECEE2DC77181041F06171819F351B41'), ('010100002084080000946302F7D31E1041B022FBD87F351B41'), -('0101000020840800006AFCC4C7FB19104190210FA01F351B41'), ('010100002084080000D0A88DD3870A1041B0B82D5663371B41'), -('01010000208408000082480BF00F20104130D19F731F351B41'), ('01010000208408000037877FBFC717104160995657CF321B41'), -('010100002084080000AFFCA0EB030E10415055DF1F1F361B41'), ('0101000020840800002A489E970F131041C07D7803A8341B41'), -('0101000020840800008EB812C7C7091041C04FACB7CF391B41'), ('0101000020840800002E8F5CCA8B1010410013A83557351B41'), -('010100002084080000BA9401D93B071041006195EB27371B41'), ('010100002084080000E8D9E7F78B1A1041F038B651CF341B41'), -('0101000020840800000B7941E06B0A1041402641F143361B41'), ('010100002084080000B8311E8FD70B1041203B89A17F351B41'), -('0101000020840800009C02F17A070B104190E590B847361B41'), ('010100002084080000036C2CC587FC0F4150AF81D0E3381B41'), -('01010000208408000068D729B2CB0C104190C8EB803B351B41'), ('010100002084080000B1D9318C1B101041007EB5366B351B41'), -('010100002084080000F49FCEB4D3071041E0485C4F63381B41'), ('0101000020840800000ACE01D57F101041A014F03777341B41'), -('01010000208408000082F7D6E61F0F1041A0DE15CB27351B41'), ('01010000208408000027DE51F646FE0F416054E1DDD7381B41'), -('010100002084080000EA5039D2D3061041706A649E57371B41'), ('010100002084080000933FCAA21F16104180DC129563351B41'), -('0101000020840800003C97A6F9C3141041D0A448C56B341B41'), ('0101000020840800005E8AD2D9C30B1041B01D5BA5DB361B41'), -('010100002084080000E35D7FD207061041D060A9AAA3371B41'), ('010100002084080000FD63A9FC83071041A03CFB9B87381B41'), -('0101000020840800003E3BD3C0230F10419028123233351B41'), ('0101000020840800000A0CC2D0BB08104170048F70A7371B41'), -('01010000208408000093D09BF8DF051041A0E1C2A727381B41'), ('0101000020840800002651BCB3B30F104190F8D179D3351B41'), -('010100002084080000920E7D78CF05104130923227EF381B41'), ('01010000208408000053B3E4173FFC0F4190BDE8C6EB381B41'), -('010100002084080000F4BF0CD8DF1E104180348FC38B351B41'), ('010100002084080000AA5D01E9E7151041002E74B43F341B41'); - -SELECT is((SELECT count(*)::INTEGER FROM houses.input_points), 82, '82 houses'); - -INSERT INTO houses.simplenet (house_id, road_id, geom) -SELECT id, road_id, ST_ShortestLine(ip.geom, r.geom) -FROM - (SELECT road_id, st_transform(geom, 2180) geom FROM houses.simplenet) r, - (SELECT id, geom FROM houses.input_points) ip -WHERE road_id = ( - SELECT rt.gid - FROM - (SELECT road_id gid, st_transform(geom, 2180) geom FROM houses.simplenet) rt, - (SELECT id, geom FROM houses.input_points) ipt - WHERE ipt.id = ip.id - ORDER BY ST_Distance(ipt.geom, rt.geom) - limit 1); - -SELECT is((SELECT count(*)::INTEGER FROM houses.simplenet), 14+82, '82 more edges'); - -SELECT pgr_nodenetwork('houses.simplenet', 0.001, 'id', 'geom'); - -DROP TABLE IF EXISTS houses.vertices; -SELECT *, NULL::BIGINT AS component -INTO houses.vertices -FROM pgr_extractVertices('SELECT id, geom AS geom FROM houses.simplenet_noded ORDER BY id'); - -SELECT is((SELECT count(*)::INTEGER FROM houses.vertices), 188, '188 vertices'); - -/* -- set the source information */ -UPDATE houses.simplenet_noded AS e -SET source = v.id -FROM houses.vertices AS v -WHERE ST_StartPoint(e.geom) = v.geom; -/* -- set the target information */ -UPDATE houses.simplenet_noded AS e -SET target = v.id -FROM houses.vertices AS v -WHERE ST_EndPoint(e.geom) = v.geom; - -SELECT CASE -WHEN min_version('3.8.0') THEN - is((SELECT count(*)::INTEGER FROM houses.simplenet_noded), 190, '190 edges') -ELSE - is((SELECT count(*)::INTEGER FROM houses.simplenet_noded), 189, '189 edges') -END; - - -UPDATE houses.vertices SET component = c.component FROM (SELECT * FROM pgr_connectedComponents( - 'SELECT id, source, target, 1 AS cost FROM houses.simplenet_noded' -)) AS c WHERE id = node; - -ALTER TABLE houses.simplenet_noded ADD component BIGINT; -UPDATE houses.simplenet_noded SET component = v.component -FROM (SELECT id, component FROM houses.vertices) AS v -WHERE source = v.id; - -SELECT is((SELECT count(DISTINCT component)::INTEGER FROM houses.simplenet_noded), 1, '1 component'); - -SELECT finish(); -ROLLBACK; diff --git a/pgtap/topology/nodeNetwork/types_check.pg b/pgtap/topology/nodeNetwork/types_check.pg deleted file mode 100644 index 424fefec744..00000000000 --- a/pgtap/topology/nodeNetwork/types_check.pg +++ /dev/null @@ -1,37 +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_nodenetwork'); -SELECT has_function('pgr_nodenetwork',ARRAY['text','double precision','text','text','text','text','boolean']); -SELECT function_returns('pgr_nodenetwork',ARRAY['text','double precision','text','text','text','text','boolean'],'text'); - -SELECT function_args_eq('pgr_nodenetwork', - $$SELECT '{"","","id","the_geom","table_ending","rows_where","outall"}'::TEXT[]$$ -); - -SELECT function_types_eq('pgr_nodenetwork', - $$VALUES ('{text,float8,text,text,text,text,bool}'::TEXT[])$$ -); - -SELECT finish(); -ROLLBACK; diff --git a/pgtap/topology/extractVertices/edge_cases.pg b/pgtap/utilities/extractVertices/edge_cases.pg similarity index 100% rename from pgtap/topology/extractVertices/edge_cases.pg rename to pgtap/utilities/extractVertices/edge_cases.pg diff --git a/pgtap/topology/extractVertices/inner_query.pg b/pgtap/utilities/extractVertices/inner_query.pg similarity index 100% rename from pgtap/topology/extractVertices/inner_query.pg rename to pgtap/utilities/extractVertices/inner_query.pg diff --git a/pgtap/topology/extractVertices/no_crash_test.pg b/pgtap/utilities/extractVertices/no_crash_test.pg similarity index 100% rename from pgtap/topology/extractVertices/no_crash_test.pg rename to pgtap/utilities/extractVertices/no_crash_test.pg diff --git a/pgtap/topology/extractVertices/types_check.pg b/pgtap/utilities/extractVertices/types_check.pg similarity index 100% rename from pgtap/topology/extractVertices/types_check.pg rename to pgtap/utilities/extractVertices/types_check.pg diff --git a/sql/sigs/pgrouting--4.0.sig b/sql/sigs/pgrouting--4.0.sig index 394ef8937d8..f6db45f4f1b 100644 --- a/sql/sigs/pgrouting--4.0.sig +++ b/sql/sigs/pgrouting--4.0.sig @@ -213,7 +213,6 @@ pgr_maxflow(text,bigint,anyarray) pgr_maxflow(text,bigint,bigint) pgr_maxflow(text,text) _pgr_maxflow(text,text,integer,boolean) -pgr_nodenetwork(text,double precision,text,text,text,text,boolean) _pgr_operating_system() _pgr_parameter_check(text,text,boolean) _pgr_pgsql_version() diff --git a/sql/topology/CMakeLists.txt b/sql/topology/CMakeLists.txt deleted file mode 100644 index 8dd2d2a34d9..00000000000 --- a/sql/topology/CMakeLists.txt +++ /dev/null @@ -1,12 +0,0 @@ - -SET(LOCAL_FILES - nodeNetwork.sql - extractVertices.sql - ) - -foreach (f ${LOCAL_FILES}) - configure_file(${f} ${f}) - list(APPEND PACKAGE_SQL_FILES ${CMAKE_CURRENT_BINARY_DIR}/${f}) -endforeach() - -set(PROJECT_SQL_FILES ${PROJECT_SQL_FILES} ${PACKAGE_SQL_FILES} PARENT_SCOPE) diff --git a/sql/topology/nodeNetwork.sql b/sql/topology/nodeNetwork.sql deleted file mode 100644 index 9da4973abdd..00000000000 --- a/sql/topology/nodeNetwork.sql +++ /dev/null @@ -1,232 +0,0 @@ -/*PGR-GNU***************************************************************** - -Copyright (c) 2015 pgRouting developers -Mail: project@pgrouting.org - -Author: Nicolas Ribot, 2013 -EDITED by Adrien Berchet, 2020 - ------- - -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_nodeNetwork ---------------------------- - - ---v2.6 -CREATE FUNCTION pgr_nodeNetwork( - TEXT, -- edge table (required) - DOUBLE PRECISION, -- tolerance (required) - id TEXT DEFAULT 'id', - the_geom TEXT DEFAULT 'the_geom', - table_ending TEXT DEFAULT 'noded', - rows_where TEXT DEFAULT ''::TEXT, - outall BOOLEAN DEFAULT FALSE) -RETURNS TEXT AS $BODY$ -DECLARE - /* - * Author: Nicolas Ribot, 2013 ; Adrien Berchet, 2020 - */ - sname TEXT; -- schema of tables - tname TEXT; -- in table name - oname TEXT; -- out table name - - sridinfo record; - splits BIGINT := 0; - touched BIGINT := 0; - untouched BIGINT := 0; - geomtype TEXT; - debuglevel TEXT; - rows_where_out TEXT; - - the_query TEXT; - the_out_query TEXT; - the_table TEXT[]; - sqlhint TEXT; - out_table_exists BOOLEAN; - -BEGIN - RAISE NOTICE 'PROCESSING:'; - RAISE NOTICE 'id: %', id; - RAISE NOTICE 'the_geom: %', the_geom; - RAISE NOTICE 'table_ending: %', table_ending; - RAISE NOTICE 'rows_where: %', rows_where; - RAISE NOTICE 'outall: %', outall; - RAISE NOTICE 'pgr_nodeNetwork(''%'', %, ''%'', ''%'', ''%'', ''%'', %)', - $1, $2, id, the_geom, table_ending, rows_where, outall; - RAISE NOTICE 'Performing checks, please wait .....'; - EXECUTE 'SHOW client_min_messages' INTO debuglevel; - - the_table := parse_ident($1); - - IF array_length(the_table,1) = 1 THEN - the_table[2] := the_table[1]; - the_table[1] := (SELECT current_schema); - END IF; - - sname := the_table[1]; - tname := the_table[2]; - oname := the_table[2] || '_' || table_ending; - - rows_where_out = CASE WHEN length(rows_where) > 2 AND NOT outall THEN ' AND (' || rows_where || ')' ELSE '' END; - rows_where = CASE WHEN length(rows_where) > 2 THEN rows_where ELSE 'true' END; - - -- building query - BEGIN - the_query := format( - $$ - SELECT %s AS id, %s AS the_geom, ST_SRID(%s) AS srid FROM %I.%I WHERE (%s) - $$, - id, the_geom, the_geom, sname, tname, rows_where); - RAISE DEBUG 'Checking: %',the_query; - the_query := _pgr_checkQuery(the_query); - - EXECUTE format($$SELECT geometrytype(%s) FROM %I.%I limit 1$$, the_geom, sname, tname) INTO geomtype; - IF geomtype IS NULL THEN - RAISE WARNING '-------> Table %.% must contain invalid geometries',sname, tname; - RETURN 'FAIL'; - END IF; - - EXCEPTION WHEN OTHERS THEN - GET STACKED DIAGNOSTICS sqlhint = PG_EXCEPTION_HINT; - RAISE EXCEPTION '%', SQLERRM USING HINT = sqlhint, ERRCODE = SQLSTATE; - END; - - -- checking query columns - BEGIN - RAISE DEBUG 'Checking %', $1; - - IF NOT _pgr_checkColumn(the_query, 'id', 'ANY-INTEGER', true) THEN - RAISE NOTICE 'ERROR: id column "%" NOT found IN %.%', id, sname, tname; - RETURN 'FAIL'; - END IF; - - IF NOT _pgr_checkColumn(the_query, 'the_geom', 'geometry', true) THEN - RAISE NOTICE 'ERROR: the_geom column "%" NOT found IN %.%', the_geom, sname, tname; - RETURN 'FAIL'; - END IF; - - EXECUTE the_query || ' LIMIT 1' INTO sridinfo; - - IF sridinfo IS NULL OR sridinfo.srid IS NULL THEN - RAISE NOTICE 'ERROR: Can NOT determine the srid of the geometry "%" IN table %.%', the_geom, sname, tname; - RETURN 'FAIL'; - END IF; - RAISE DEBUG ' -----> SRID found %', sridinfo.srid; - EXCEPTION WHEN OTHERS THEN - RAISE NOTICE 'ERROR: Can NOT determine the srid of the geometry "%" IN table %.%', the_geom, sname, tname; - RETURN 'FAIL'; - END; - ---------------- - -- building query to check if table_noded exists - BEGIN - the_out_query := format( - $$ - SELECT id, old_id, sub_id, source, target, %s FROM %I.%I LIMIT 1 - $$, - the_geom, sname, oname); - - the_out_query := _pgr_checkQuery(the_out_query); - out_table_exists := true; - - EXCEPTION WHEN OTHERS THEN - out_table_exists := false; - END; - ---------------- - BEGIN - RAISE DEBUG 'initializing %.%', sname, oname; - IF out_table_exists THEN - EXECUTE format( - $$TRUNCATE TABLE %I.%I RESTART IDENTITY$$, - sname, oname); - ELSE - SET client_min_messages TO warning; - EXECUTE format('CREATE TABLE %I.%I ( - id bigserial PRIMARY KEY, - old_id BIGINT, - sub_id INTEGER, - source BIGINT, - target BIGINT)', - sname, oname); - RAISE DEBUG ' ------> Create geometry column of type %', geomtype; - EXECUTE format($$ - SELECT addGeometryColumn('%I', '%I', '%I', %s, %L, 2)$$, - sname, oname, the_geom, sridinfo.srid, geomtype); - EXECUTE 'SET client_min_messages TO '|| debuglevel; - RAISE DEBUG ' ------>OK'; - END IF; - END; ----------------- - - RAISE NOTICE 'Processing, please wait .....'; - - - EXECUTE format( - $$ - INSERT INTO %2$I.%3$I (old_id, sub_id, %4$I) - SELECT id, sub_id, geom FROM pgr_separateCrossing(replace('%1$s', 'AS the_geom', 'AS geom'), %5$s) - UNION - SELECT id, sub_id, geom FROM pgr_separateTouching(replace('%1$s', 'AS the_geom', 'AS geom'), %5$s) - $$, - the_query, sname, oname, the_geom, $2); - - GET DIAGNOSTICS splits = ROW_COUNT; - - EXECUTE format( - $$ - WITH diff AS (SELECT DISTINCT old_id FROM %I.%I) - SELECT count(*) FROM diff - $$, - sname, oname) INTO touched; - - -- here, it misses all original line that did not need to be cut by intersection points: these lines - -- are already clean - -- inserts them in the final result: all lines which gid is not in the res table. - EXECUTE format( - $$ - INSERT INTO %2$I.%3$I (old_id , sub_id, %5$I) ( - WITH - original AS (%1$s), - used AS (SELECT DISTINCT old_id FROM %2$I.%3$I) - SELECT id, 1 AS sub_id, the_geom - FROM original - WHERE id NOT IN (SELECT old_id FROM used) %4$s) - $$, - the_query, sname, oname, rows_where_out, the_geom); - GET DIAGNOSTICS untouched = ROW_COUNT; - - RAISE NOTICE ' Split Edges: %', touched; - RAISE NOTICE ' Untouched Edges: %', untouched; - RAISE NOTICE ' Total original Edges: %', touched+untouched; - RAISE NOTICE ' Edges generated: %', splits; - RAISE NOTICE ' Untouched Edges: %',untouched; - RAISE NOTICE ' Total New segments: %', splits+untouched; - RAISE NOTICE ' New Table: %.%', sname, oname; - RAISE NOTICE '----------------------------------'; - - RETURN 'OK'; -END; -$BODY$ LANGUAGE 'plpgsql' VOLATILE STRICT COST 100; - --- COMMENTS -COMMENT ON FUNCTION pgr_nodeNetwork(TEXT, DOUBLE PRECISION, TEXT, TEXT, TEXT, TEXT, BOOLEAN) -IS 'pgr_nodeNetwork deprecated function on v3.8.0'; diff --git a/sql/utilities/CMakeLists.txt b/sql/utilities/CMakeLists.txt index 50f200f7e4d..803ab01a7c2 100644 --- a/sql/utilities/CMakeLists.txt +++ b/sql/utilities/CMakeLists.txt @@ -1,5 +1,6 @@ SET(LOCAL_FILES + extractVertices.sql findCloseEdges.sql separateCrossing.sql separateTouching.sql diff --git a/sql/topology/extractVertices.sql b/sql/utilities/extractVertices.sql similarity index 100% rename from sql/topology/extractVertices.sql rename to sql/utilities/extractVertices.sql